@@ -178,7 +178,7 @@ public IEnumerator OrderOfOperations()
178178 var parent1 = m_AuthorityParentInstances [ 0 ] ;
179179 var parent2 = m_AuthorityParentInstances [ 1 ] ;
180180
181- ConfigureSequencesTest1 ( parent1 ) ;
181+ ConfigureSequencesTest1_ClientServerOnly ( parent1 ) ;
182182 yield return RunTestSequences ( ) ;
183183
184184 ConfigureSequencesTest2 ( parent1 ) ;
@@ -293,12 +293,19 @@ private IEnumerator __RunTestSequences(bool spawnWithObservers = true, bool spaw
293293
294294 #region Test Sequence Configurations
295295 /// <summary>
296+ /// Client server only - under da mode only the authority can parent
296297 /// Test-1:
297298 /// Authority-> Spawn, change ownership, (wait), parent
298299 /// </summary>
299- private void ConfigureSequencesTest1 ( NetworkObject parent )
300+ private void ConfigureSequencesTest1_ClientServerOnly ( NetworkObject parent )
300301 {
301- SpawnSequenceController . CurrentTest = "Test1" ;
302+ SpawnSequenceController . CurrentTest = "Test1 (Client-Server Only)" ;
303+ if ( m_AuthorityNetworkManager . DistributedAuthorityMode )
304+ {
305+ SpawnSequenceController . ClientServerOnly = true ;
306+ return ;
307+ }
308+
302309 var changeOwnershipSequence = new ChangeOwnershipSequence ( )
303310 {
304311 Stage = SpawnSequence . SpawnStage . AfterSpawn ,
@@ -310,6 +317,7 @@ private void ConfigureSequencesTest1(NetworkObject parent)
310317 TimeDelayInMS = 200 ,
311318 Stage = SpawnSequence . SpawnStage . AfterSpawn ,
312319 TargetParent = parent ,
320+ InvokeOnlyOnClientId = GetAuthorityNetworkManager ( ) . LocalClientId ,
313321 } ;
314322
315323 SpawnSequenceController . AddAction ( changeOwnershipSequence ) ;
@@ -860,6 +868,10 @@ protected override bool OnShouldInvoke(SpawnStage stage)
860868 protected override void OnAction ( )
861869 {
862870 m_NetworkObject . ChangeOwnership ( TargetOwnerClientId ) ;
871+ if ( TargetOwnerClientId != m_NetworkObject . OwnerClientId )
872+ {
873+ Debug . LogError ( $ "[{ m_NetworkObject . name } ] Failed to change ownership!") ;
874+ }
863875 base . OnAction ( ) ;
864876 }
865877 }
@@ -871,7 +883,20 @@ internal class ParentSequence : SpawnSequence
871883
872884 protected override bool OnShouldInvoke ( SpawnStage stage )
873885 {
874- return base . OnShouldInvoke ( stage ) && ( m_NetworkObject . HasAuthority || ( m_NetworkObject . IsOwner && m_NetworkObject . AllowOwnerToParent ) ) ;
886+ // Don't invoke if the base says no
887+ if ( ! base . OnShouldInvoke ( stage ) )
888+ {
889+ return false ;
890+ }
891+
892+ // If sequence is configured to specifically invoke on this client
893+ if ( InvokeOnlyOnClientId . HasValue && m_NetworkObject . NetworkManager . LocalClientId == InvokeOnlyOnClientId . Value )
894+ {
895+ return true ;
896+ }
897+
898+ // Otherwise we should invoke if we have the authority to invoke
899+ return m_NetworkObject . HasAuthority || ( m_NetworkObject . IsOwner && m_NetworkObject . AllowOwnerToParent ) ;
875900 }
876901
877902 protected override void OnAction ( )
0 commit comments