diff --git a/Source/Engine/Scripting/BinaryModule.cpp b/Source/Engine/Scripting/BinaryModule.cpp index 4a6eb2f5f..006bd3e3e 100644 --- a/Source/Engine/Scripting/BinaryModule.cpp +++ b/Source/Engine/Scripting/BinaryModule.cpp @@ -53,6 +53,19 @@ const ScriptingType& ScriptingTypeHandle::GetType() const return Module->Types[TypeIndex]; } +bool ScriptingTypeHandle::IsSubclassOf(ScriptingTypeHandle c) const +{ + auto type = *this; + if (type == c) + return false; + for (; type; type = type.GetType().GetBaseType()) + { + if (type == c) + return true; + } + return false; +} + bool ScriptingTypeHandle::IsAssignableFrom(ScriptingTypeHandle c) const { while (c) diff --git a/Source/Engine/Scripting/ScriptingType.h b/Source/Engine/Scripting/ScriptingType.h index 3a20377e4..45bd92bef 100644 --- a/Source/Engine/Scripting/ScriptingType.h +++ b/Source/Engine/Scripting/ScriptingType.h @@ -65,6 +65,7 @@ struct FLAXENGINE_API ScriptingTypeHandle String ToString(bool withAssembly = false) const; const ScriptingType& GetType() const; + bool IsSubclassOf(ScriptingTypeHandle c) const; bool IsAssignableFrom(ScriptingTypeHandle c) const; bool operator==(const ScriptingTypeHandle& other) const