Skip to content

Commit 60ca952

Browse files
committed
ensure active scene hash is always synchroniszed to the service
1 parent 8d07f34 commit 60ca952

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

com.unity.netcode.gameobjects/Runtime/SceneManagement/NetworkSceneManager.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2042,6 +2042,7 @@ internal void SynchronizeNetworkObjects(ulong clientId, bool synchronizingServic
20422042
}
20432043

20442044
// Organize how (and when) we serialize our NetworkObjects
2045+
var hasSynchronizedActive = false;
20452046
for (int i = 0; i < SceneManager.sceneCount; i++)
20462047
{
20472048
var scene = SceneManager.GetSceneAt(i);
@@ -2067,6 +2068,10 @@ internal void SynchronizeNetworkObjects(ulong clientId, bool synchronizingServic
20672068
continue;
20682069
}
20692070
sceneEventData.SceneHash = SceneHashFromNameOrPath(scene.path);
2071+
if (sceneEventData.SceneHash == sceneEventData.ActiveSceneHash)
2072+
{
2073+
hasSynchronizedActive = true;
2074+
}
20702075

20712076
// If we are just a normal client, then always use the server scene handle
20722077
if (NetworkManager.DistributedAuthorityMode)
@@ -2085,7 +2090,7 @@ internal void SynchronizeNetworkObjects(ulong clientId, bool synchronizingServic
20852090
}
20862091

20872092
// If we are just a normal client and in distributed authority mode, then always use the known server scene handle
2088-
if (NetworkManager.DistributedAuthorityMode && !NetworkManager.DAHost)
2093+
if (NetworkManager.DistributedAuthorityMode && NetworkManager.CMBServiceConnection)
20892094
{
20902095
sceneEventData.AddSceneToSynchronize(SceneHashFromNameOrPath(scene.path), ClientSceneHandleToServerSceneHandle[scene.handle]);
20912096
}
@@ -2095,6 +2100,11 @@ internal void SynchronizeNetworkObjects(ulong clientId, bool synchronizingServic
20952100
}
20962101
}
20972102

2103+
if (!hasSynchronizedActive && NetworkManager.CMBServiceConnection && synchronizingService)
2104+
{
2105+
sceneEventData.AddSceneToSynchronize(BuildIndexToHash[activeScene.buildIndex], ClientSceneHandleToServerSceneHandle[activeScene.handle]);
2106+
}
2107+
20982108
sceneEventData.AddSpawnedNetworkObjects();
20992109
sceneEventData.AddDespawnedInSceneNetworkObjects();
21002110
var message = new SceneEventMessage

0 commit comments

Comments
 (0)