Skip to content

Commit ea80eb0

Browse files
update
preserve hybrid objects pending spawn.
1 parent 526f30b commit ea80eb0

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

com.unity.netcode.gameobjects/Runtime/Spawning/NetworkSpawnManager.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,13 @@ public void RegisterGhostPendingSpawn(NetworkObject networkObject, ulong network
4040
{
4141
Debug.Log($"[{nameof(RegisterGhostPendingSpawn)}] Registering {networkObject.name} with a {nameof(NetworkObject.NetworkObjectId)} of {networkObjectId}.");
4242
}
43-
GhostsPendingSpawn.TryAdd(networkObjectId, networkObject);
43+
if(GhostsPendingSpawn.TryAdd(networkObjectId, networkObject))
44+
{
45+
// TODO-UNIFIED: We need a better way to preserve any hybrid instances pending NGO spawn.
46+
// For now, move any pending object into the DDOL.
47+
UnityEngine.Object.DontDestroyOnLoad(networkObject.gameObject);
48+
}
49+
4450
NetworkManager.DeferredMessageManager.ProcessTriggers(IDeferredNetworkMessageManager.TriggerType.OnGhostSpawned, networkObjectId);
4551
if (GhostsArePendingSynchronization && GhostsPendingSynchronization.ContainsKey(networkObjectId))
4652
{
@@ -95,6 +101,9 @@ internal void ProcessGhostPendingSynchronization(ulong networkObjectId, bool rem
95101
// networkObject.InternalInSceneNetworkObjectsSpawned();
96102
//}
97103

104+
// TODO-UNIFIED: We need a better way to preserve any hybrid instances pending NGO spawn.
105+
// NOTE: We might be able to use the NetworkSceneHandle to get the associated local scene handle to which we can use to get the targeted scene.
106+
UnityEngine.SceneManagement.SceneManager.MoveGameObjectToScene(networkObject.gameObject, UnityEngine.SceneManagement.SceneManager.GetActiveScene());
98107
if (removeUponSpawn)
99108
{
100109
GhostsArePendingSynchronization = GhostsPendingSynchronization.Count > 0;

0 commit comments

Comments
 (0)