From 8d512eb1d3d6872ca0d88e5ac54112c9b7d210c2 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Thu, 23 Sep 2021 13:46:47 +0200 Subject: [PATCH] Add `ScriptingTypeHandle::IsAssignableFrom` --- Source/Engine/Scripting/BinaryModule.cpp | 11 +++++++++++ Source/Engine/Scripting/ScriptingType.h | 1 + 2 files changed, 12 insertions(+) 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 {