From 46c406cc9e97e5e8e7bcdcb3897a825d97934c0f Mon Sep 17 00:00:00 2001 From: Wiktor Kocielski Date: Mon, 19 Jun 2023 15:54:03 +0300 Subject: [PATCH] Implement optional object replication --- Source/Engine/Networking/NetworkReplicationHierarchy.cpp | 6 +++++- Source/Engine/Networking/NetworkReplicationHierarchy.h | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Source/Engine/Networking/NetworkReplicationHierarchy.cpp b/Source/Engine/Networking/NetworkReplicationHierarchy.cpp index d86acfc7f..3935229a9 100644 --- a/Source/Engine/Networking/NetworkReplicationHierarchy.cpp +++ b/Source/Engine/Networking/NetworkReplicationHierarchy.cpp @@ -80,7 +80,11 @@ void NetworkReplicationNode::Update(NetworkReplicationHierarchyUpdateResult* res const float networkFPS = NetworkManager::NetworkFPS / result->ReplicationScale; for (NetworkReplicationHierarchyObject& obj : Objects) { - if (obj.ReplicationFPS <= 0.0f) + if (obj.ReplicationFPS < 0.0f) + { + continue; + } + else if (obj.ReplicationFPS == 0.0f) { // Always relevant result->AddObject(obj.Object); diff --git a/Source/Engine/Networking/NetworkReplicationHierarchy.h b/Source/Engine/Networking/NetworkReplicationHierarchy.h index 55cd6b7b1..f052a3b93 100644 --- a/Source/Engine/Networking/NetworkReplicationHierarchy.h +++ b/Source/Engine/Networking/NetworkReplicationHierarchy.h @@ -20,7 +20,7 @@ API_STRUCT(NoDefault, Namespace = "FlaxEngine.Networking") struct FLAXENGINE_API // The object to replicate. API_FIELD() ScriptingObjectReference Object; - // The target amount of the replication updates per second (frequency of the replication). Constrained by NetworkManager::NetworkFPS. Use 0 for 'always relevant' object. + // The target amount of the replication updates per second (frequency of the replication). Constrained by NetworkManager::NetworkFPS. Use 0 for 'always relevant' object and < 0 for 'never relevant' objects that would only get synched on client join once. API_FIELD() float ReplicationFPS = 60; // The minimum distance from the player to the object at which it can process replication. For example, players further away won't receive object data. Use 0 if unused. API_FIELD() float CullDistance = 15000;