From c063afc5bc876f5740cb5cc00754787825b1ceae Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 30 Sep 2024 14:52:05 +0200 Subject: [PATCH] Fix GetObject/SetObject usage in network replication hierarchy --- .../Networking/NetworkReplicationHierarchy.cpp | 12 +++++++++--- .../Engine/Networking/NetworkReplicationHierarchy.h | 3 ++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Source/Engine/Networking/NetworkReplicationHierarchy.cpp b/Source/Engine/Networking/NetworkReplicationHierarchy.cpp index b41923442..765bb57b9 100644 --- a/Source/Engine/Networking/NetworkReplicationHierarchy.cpp +++ b/Source/Engine/Networking/NetworkReplicationHierarchy.cpp @@ -223,11 +223,17 @@ bool NetworkReplicationGridNode::GetObject(ScriptingObject* obj, NetworkReplicat { return false; } - if (_children[coord].Node->GetObject(obj, result)) + return _children[coord].Node->GetObject(obj, result); +} + +bool NetworkReplicationGridNode::SetObject(const NetworkReplicationHierarchyObject& value) +{ + Int3 coord; + if (!_objectToCell.TryGet(value.Object.Get(), coord)) { - return true; + return false; } - return false; + return _children[coord].Node->SetObject(value); } bool NetworkReplicationGridNode::DirtyObject(ScriptingObject* obj) diff --git a/Source/Engine/Networking/NetworkReplicationHierarchy.h b/Source/Engine/Networking/NetworkReplicationHierarchy.h index a3196d67f..b58602254 100644 --- a/Source/Engine/Networking/NetworkReplicationHierarchy.h +++ b/Source/Engine/Networking/NetworkReplicationHierarchy.h @@ -206,7 +206,7 @@ API_CLASS(Abstract, Namespace = "FlaxEngine.Networking") class FLAXENGINE_API Ne /// The object to get. /// The hierarchy object to retrieve. /// True on successful retrieval, otherwise false. - API_FUNCTION() virtual bool GetObject(ScriptingObject* obj, NetworkReplicationHierarchyObject& result); + API_FUNCTION() virtual bool GetObject(ScriptingObject* obj, API_PARAM(Out) NetworkReplicationHierarchyObject& result); /// /// Sets object properties in the hierarchy. Can be used to modify replication settings at runtime. @@ -264,6 +264,7 @@ public: void AddObject(NetworkReplicationHierarchyObject obj) override; bool RemoveObject(ScriptingObject* obj) override; bool GetObject(ScriptingObject* obj, NetworkReplicationHierarchyObject& result) override; + bool SetObject(const NetworkReplicationHierarchyObject& value) override; bool DirtyObject(ScriptingObject* obj) override; void Update(NetworkReplicationHierarchyUpdateResult* result) override; };