diff --git a/Source/Engine/Scripting/Scripting.cpp b/Source/Engine/Scripting/Scripting.cpp index cc128c548..5af41502a 100644 --- a/Source/Engine/Scripting/Scripting.cpp +++ b/Source/Engine/Scripting/Scripting.cpp @@ -868,6 +868,23 @@ ScriptingObject* Scripting::TryFindObject(Guid id, MClass* type) return result; } +ScriptingObject* Scripting::TryFindObject(MClass* mclass) +{ + if (mclass == nullptr) + return nullptr; + + ScopeLock lock(_objectsLocker); + + for (auto i = _objectsDictionary.Begin(); i.IsNotEnd(); ++i) + { + const auto obj = i->Value; + if(obj->GetClass() == mclass) + return obj; + } + return nullptr; + +} + ScriptingObject* Scripting::FindObject(const MObject* managedInstance) { if (managedInstance == nullptr) diff --git a/Source/Engine/Scripting/Scripting.h b/Source/Engine/Scripting/Scripting.h index 81739e1c8..41e5d7119 100644 --- a/Source/Engine/Scripting/Scripting.h +++ b/Source/Engine/Scripting/Scripting.h @@ -144,6 +144,14 @@ public: /// The found object or null if missing. static ScriptingObject* FindObject(Guid id, MClass* type = nullptr); + + /// + /// Tries to find the object by the given class. + /// + /// The found object or null if missing. + static ScriptingObject* TryFindObject(MClass* type = nullptr); + + /// /// Tries to find the object by the given identifier. ///