@@ -113,9 +113,27 @@ public void SomeRandomClientRPC()
113113 ClientIdsRpcCalledOn ? . Add ( NetworkManager . LocalClientId ) ;
114114 }
115115
116+ [ Rpc ( SendTo . Everyone ) ]
117+ public void DistributedAuthorityRPC ( )
118+ {
119+ if ( ! Silent )
120+ {
121+ Debug . Log ( $ "RPC called { NetworkManager . LocalClientId } ") ;
122+ }
123+ ClientIdsRpcCalledOn ? . Add ( NetworkManager . LocalClientId ) ;
124+ }
125+
116126 public void TriggerRpc ( )
117127 {
118- SomeRandomClientRPC ( ) ;
128+ Debug . Log ( "triggering RPC" ) ;
129+ if ( NetworkManager . CMBServiceConnection )
130+ {
131+ DistributedAuthorityRPC ( ) ;
132+ }
133+ else
134+ {
135+ SomeRandomClientRPC ( ) ;
136+ }
119137 }
120138 }
121139
@@ -125,12 +143,6 @@ internal class NetworkShowHideTests : NetcodeIntegrationTest
125143 {
126144 protected override int NumberOfClients => 4 ;
127145
128- // TODO: [CmbServiceTests] https://jira.unity3d.com/browse/MTTB-1392
129- protected override bool UseCMBService ( )
130- {
131- return false ;
132- }
133-
134146 private ulong m_ClientId0 ;
135147 private GameObject m_PrefabToSpawn ;
136148 private GameObject m_PrefabSpawnWithoutObservers ;
@@ -580,11 +592,15 @@ public IEnumerator NetworkHideChangeOwnershipNotHidden()
580592 var firstClient = GetNonAuthorityNetworkManager ( 0 ) ;
581593 var secondClient = GetNonAuthorityNetworkManager ( 1 ) ;
582594
595+ ShowHideObject . ValueAfterOwnershipChange = - 1 ;
583596 ShowHideObject . ClientTargetedNetworkObjects . Clear ( ) ;
584597 ShowHideObject . ObjectsPerClientId . Clear ( ) ;
585598 ShowHideObject . ClientIdToTarget = secondClient . LocalClientId ;
586599 ShowHideObject . Silent = true ;
587600
601+ // only check for value change on one specific client
602+ ShowHideObject . NetworkManagerOfInterest = firstClient ;
603+
588604 var spawnedObject1 = SpawnObject ( m_PrefabToSpawn , authority ) ;
589605 m_NetSpawnedObject1 = spawnedObject1 . GetComponent < NetworkObject > ( ) ;
590606
@@ -597,11 +613,20 @@ public IEnumerator NetworkHideChangeOwnershipNotHidden()
597613 // wait for three ticks
598614 yield return WaitForTicks ( authority , 3 ) ;
599615
616+ if ( ! m_DistributedAuthority )
617+ {
618+ // Client/Server ClientIdToTarget should not see any value change
619+ Assert . That ( ShowHideObject . ValueAfterOwnershipChange , Is . EqualTo ( - 1 ) ) ;
620+ }
621+ else
622+ {
623+ // Distributed Authority mode everyone can always read so the value change should already have happened
624+ Assert . That ( ShowHideObject . ValueAfterOwnershipChange , Is . EqualTo ( 1 ) ) ;
625+ }
626+
600627 // check we'll actually be changing owners
601628 Assert . False ( ShowHideObject . ClientTargetedNetworkObjects [ 0 ] . OwnerClientId == firstClient . LocalClientId ) ;
602629
603- // only check for value change on one specific client
604- ShowHideObject . NetworkManagerOfInterest = firstClient ;
605630
606631 // change ownership
607632 m_NetSpawnedObject1 . ChangeOwnership ( firstClient . LocalClientId ) ;
@@ -731,10 +756,8 @@ public IEnumerator NetworkShowHideAroundListModify()
731756 m_NetSpawnedObject1 = spawnedObject1 . GetComponent < NetworkObject > ( ) ;
732757
733758 // wait for host to have spawned and gained ownership
734- while ( ShowHideObject . GainOwnershipCount == 0 )
735- {
736- yield return new WaitForSeconds ( 0.0f ) ;
737- }
759+ yield return WaitForConditionOrTimeOut ( ( ) => m_NetSpawnedObject1 . IsSpawned && m_NetSpawnedObject1 . OwnerClientId == authority . LocalClientId ) ;
760+ AssertOnTimeout ( $ "Timed out waiting for { m_NetSpawnedObject1 . name } to spawn") ;
738761
739762 for ( int i = 0 ; i < 4 ; i ++ )
740763 {
@@ -767,8 +790,8 @@ public IEnumerator NetworkShowHideAroundListModify()
767790
768791 }
769792
770- Compare ( ShowHideObject . ObjectsPerClientId [ 0 ] . MyList , ShowHideObject . ObjectsPerClientId [ 1 ] . MyList ) ;
771- Compare ( ShowHideObject . ObjectsPerClientId [ 0 ] . MyList , ShowHideObject . ObjectsPerClientId [ 2 ] . MyList ) ;
793+ Compare ( ShowHideObject . ObjectsPerClientId [ authority . LocalClientId ] . MyList , ShowHideObject . ObjectsPerClientId [ firstClient . LocalClientId ] . MyList ) ;
794+ Compare ( ShowHideObject . ObjectsPerClientId [ authority . LocalClientId ] . MyList , ShowHideObject . ObjectsPerClientId [ secondClient . LocalClientId ] . MyList ) ;
772795 }
773796 }
774797
0 commit comments