@@ -2336,15 +2336,22 @@ private void HandleClientSceneEvent(uint sceneEventId)
23362336 sceneEventData . SceneEventType = SceneEventType . SynchronizeComplete ;
23372337 if ( NetworkManager . DistributedAuthorityMode )
23382338 {
2339- sceneEventData . TargetClientId = NetworkManager . CurrentSessionOwner ;
2340- sceneEventData . SenderClientId = NetworkManager . LocalClientId ;
2341- var message = new SceneEventMessage
2339+ foreach ( var clientId in NetworkManager . ConnectedClientsIds )
23422340 {
2343- EventData = sceneEventData ,
2344- } ;
2345- var target = NetworkManager . DAHost ? NetworkManager . CurrentSessionOwner : NetworkManager . ServerClientId ;
2346- var size = NetworkManager . ConnectionManager . SendMessage ( ref message , k_DeliveryType , target ) ;
2347- NetworkManager . NetworkMetrics . TrackSceneEventSent ( target , ( uint ) sceneEventData . SceneEventType , SceneNameFromHash ( sceneEventData . SceneHash ) , size ) ;
2341+ if ( clientId == NetworkManager . LocalClientId )
2342+ {
2343+ continue ;
2344+ }
2345+ sceneEventData . TargetClientId = clientId ;
2346+ sceneEventData . SenderClientId = NetworkManager . LocalClientId ;
2347+ var message = new SceneEventMessage
2348+ {
2349+ EventData = sceneEventData ,
2350+ } ;
2351+ var target = NetworkManager . DAHost ? NetworkManager . CurrentSessionOwner : NetworkManager . ServerClientId ;
2352+ var size = NetworkManager . ConnectionManager . SendMessage ( ref message , k_DeliveryType , target ) ;
2353+ NetworkManager . NetworkMetrics . TrackSceneEventSent ( target , ( uint ) sceneEventData . SceneEventType , SceneNameFromHash ( sceneEventData . SceneHash ) , size ) ;
2354+ }
23482355 }
23492356 else
23502357 {
@@ -2493,13 +2500,17 @@ private void HandleSessionOwnerEvent(uint sceneEventId, ulong clientId)
24932500 }
24942501 case SceneEventType . SynchronizeComplete :
24952502 {
2496-
2497-
24982503 // At this point the client is considered fully "connected"
24992504 if ( ( NetworkManager . DistributedAuthorityMode && NetworkManager . LocalClient . IsSessionOwner ) || ! NetworkManager . DistributedAuthorityMode )
25002505 {
25012506 if ( NetworkManager . DistributedAuthorityMode && ! NetworkManager . DAHost )
25022507 {
2508+ // DANGO-EXP TODO: Remove this once service is sending the synchronization message to all clients
2509+ if ( NetworkManager . ConnectedClients . ContainsKey ( clientId ) && NetworkManager . ConnectionManager . ConnectedClientIds . Contains ( clientId ) && NetworkManager . ConnectedClientsList . Contains ( NetworkManager . ConnectedClients [ clientId ] ) )
2510+ {
2511+ EndSceneEvent ( sceneEventId ) ;
2512+ return ;
2513+ }
25032514 NetworkManager . ConnectionManager . AddClient ( clientId ) ;
25042515 }
25052516
@@ -2517,6 +2528,10 @@ private void HandleSessionOwnerEvent(uint sceneEventId, ulong clientId)
25172528 }
25182529 else
25192530 {
2531+ // DANGO-EXP TODO: Remove this once service distributes objects
2532+ // Non-session owners receive this notification from newly connected clients and upon receiving
2533+ // the event they will redistribute their NetworkObjects
2534+ NetworkManager . SpawnManager . DistributeNetworkObjects ( clientId ) ;
25202535 EndSceneEvent ( sceneEventId ) ;
25212536 return ;
25222537 }
0 commit comments