diff --git a/Source/Engine/Networking/NetworkReplicator.cpp b/Source/Engine/Networking/NetworkReplicator.cpp
index 3142e54b3..165d20659 100644
--- a/Source/Engine/Networking/NetworkReplicator.cpp
+++ b/Source/Engine/Networking/NetworkReplicator.cpp
@@ -874,6 +874,23 @@ void NetworkReplicator::DespawnObject(ScriptingObject* obj)
DeleteNetworkObject(obj);
}
+bool NetworkReplicator::HasObject(const ScriptingObject* obj)
+{
+ if (obj)
+ {
+ ScopeLock lock(ObjectsLock);
+ const auto it = Objects.Find(obj->GetID());
+ if (it != Objects.End())
+ return true;
+ for (const SpawnItem& item : SpawnQueue)
+ {
+ if (item.Object == obj)
+ return true;
+ }
+ }
+ return false;
+}
+
uint32 NetworkReplicator::GetObjectOwnerClientId(const ScriptingObject* obj)
{
uint32 id = NetworkManager::ServerClientId;
diff --git a/Source/Engine/Networking/NetworkReplicator.h b/Source/Engine/Networking/NetworkReplicator.h
index 84db2797b..0e9a2d0d8 100644
--- a/Source/Engine/Networking/NetworkReplicator.h
+++ b/Source/Engine/Networking/NetworkReplicator.h
@@ -99,6 +99,13 @@ public:
/// The object to despawn on other clients.
API_FUNCTION() static void DespawnObject(ScriptingObject* obj);
+ ///
+ /// Checks if the network object is spawned or added to the network replication system.
+ ///
+ /// The network object.
+ /// True if object exists in networking, otherwise false.
+ API_FUNCTION() static bool HasObject(const ScriptingObject* obj);
+
///
/// Gets the Client Id of the network object owner.
///