diff --git a/Source/Engine/Networking/NetworkReplicationHierarchy.cpp b/Source/Engine/Networking/NetworkReplicationHierarchy.cpp index e3ee09829..224ee9f31 100644 --- a/Source/Engine/Networking/NetworkReplicationHierarchy.cpp +++ b/Source/Engine/Networking/NetworkReplicationHierarchy.cpp @@ -80,7 +80,16 @@ bool NetworkReplicationNode::DirtyObject(ScriptingObject* obj) if (index != -1) { NetworkReplicationHierarchyObject& e = Objects[index]; - e.ReplicationUpdatesLeft = 0; + if (e.ReplicationFPS < -ZeroTolerance) // < 0 + { + // Indicate for manual sync (see logic in Update) + e.ReplicationUpdatesLeft = 1; + } + else + { + // Replicate it next frame + e.ReplicationUpdatesLeft = 0; + } } return index != -1; } @@ -93,6 +102,12 @@ void NetworkReplicationNode::Update(NetworkReplicationHierarchyUpdateResult* res { if (obj.ReplicationFPS < -ZeroTolerance) // < 0 { + if (obj.ReplicationUpdatesLeft) + { + // Marked as dirty to sync manually + obj.ReplicationUpdatesLeft = 0; + result->AddObject(obj.Object); + } continue; } else if (obj.ReplicationFPS < ZeroTolerance) // == 0