Add support for manually dirtying objects that use ReplicationFPS < 0 for manual-only replication

This commit is contained in:
Wojtek Figat
2024-03-29 13:03:38 +01:00
parent 069445b94e
commit 6929a91312

View File

@@ -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