From f87544bbafd11e249e25f920a95b59bd402afd5b Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Sat, 23 Oct 2021 16:42:41 +0200 Subject: [PATCH] Add `ScriptingTypeHandle::IsSubclassOf` --- Source/Engine/Scripting/BinaryModule.cpp | 13 +++++++++++++ Source/Engine/Scripting/ScriptingType.h | 1 + 2 files changed, 14 insertions(+) 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