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.
///