diff --git a/Source/Engine/Scripting/BinaryModule.cpp b/Source/Engine/Scripting/BinaryModule.cpp index 56f944f69..d4fcdf249 100644 --- a/Source/Engine/Scripting/BinaryModule.cpp +++ b/Source/Engine/Scripting/BinaryModule.cpp @@ -49,6 +49,17 @@ const ScriptingType& ScriptingTypeHandle::GetType() const return Module->Types[TypeIndex]; } +bool ScriptingTypeHandle::IsAssignableFrom(ScriptingTypeHandle c) const +{ + while (c) + { + if (c == *this) + return true; + c = c.GetType().GetBaseType(); + } + return false; +} + bool ScriptingTypeHandle::operator==(const ScriptingTypeInitializer& other) const { return Module == other.Module && TypeIndex == other.TypeIndex; diff --git a/Source/Engine/Scripting/ScriptingType.h b/Source/Engine/Scripting/ScriptingType.h index b27d92f2f..1658d2231 100644 --- a/Source/Engine/Scripting/ScriptingType.h +++ b/Source/Engine/Scripting/ScriptingType.h @@ -68,6 +68,7 @@ struct FLAXENGINE_API ScriptingTypeHandle String ToString(bool withAssembly = false) const; const ScriptingType& GetType() const; + bool IsAssignableFrom(ScriptingTypeHandle c) const; bool operator==(const ScriptingTypeHandle& other) const {