From 853e7cb6f7c04251c2617f4a08c37eae921a0e8b Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Tue, 5 Nov 2024 16:37:23 +0100 Subject: [PATCH] Add `NetworkReplicator.AddObjectIdMapping` for global/custom network objects sync #3042 --- Source/Engine/Networking/NetworkReplicator.cpp | 8 ++++++++ Source/Engine/Networking/NetworkReplicator.h | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/Source/Engine/Networking/NetworkReplicator.cpp b/Source/Engine/Networking/NetworkReplicator.cpp index 232980f9f..804101eb0 100644 --- a/Source/Engine/Networking/NetworkReplicator.cpp +++ b/Source/Engine/Networking/NetworkReplicator.cpp @@ -1311,6 +1311,14 @@ void NetworkReplicator::MapObjectId(Guid& objectId) } } +void NetworkReplicator::AddObjectIdMapping(const ScriptingObject* obj, const Guid& objectId) +{ + CHECK(obj); + const Guid id = obj->GetID(); + NETWORK_REPLICATOR_LOG(Info, "[NetworkReplicator] Remap object ID={} into object {}:{}", objectId, id.ToString(), obj->GetType().ToString()); + IdsRemappingTable[objectId] = id; +} + ScriptingObject* NetworkReplicator::ResolveForeignObject(Guid objectId) { if (const auto& object = ResolveObject(objectId)) diff --git a/Source/Engine/Networking/NetworkReplicator.h b/Source/Engine/Networking/NetworkReplicator.h index 0b9da2c28..9934425e0 100644 --- a/Source/Engine/Networking/NetworkReplicator.h +++ b/Source/Engine/Networking/NetworkReplicator.h @@ -122,6 +122,13 @@ public: /// /// The network object identifier to map. Contains result ID once the method completes. API_FUNCTION() static void MapObjectId(API_PARAM(Ref) Guid& objectId); + + /// + /// Adds a new mapping for object identifier. Can be used to link locally-spawned object with across different clients. + /// + /// The network object. + /// The network object identifier to use (eg. defined by server or global/static). + API_FUNCTION() static void AddObjectIdMapping(const ScriptingObject* obj, API_PARAM(Ref) const Guid& objectId); /// /// Resolves foreign Guid into a local ScriptingObject