@@ -133,10 +133,11 @@ protected override void OnCreatePlayerPrefab()
133133 /// </summary>
134134 protected override void OnServerAndClientsCreated ( )
135135 {
136+ var authorityNetworkManager = GetAuthorityNetworkManager ( ) ;
136137 // Create a NetworkPrefab with an override
137- var basePrefab = NetcodeIntegrationTestHelpers . CreateNetworkObject ( $ "{ k_PrefabRootName } -base", m_ServerNetworkManager , true ) ;
138+ var basePrefab = NetcodeIntegrationTestHelpers . CreateNetworkObject ( $ "{ k_PrefabRootName } -base", authorityNetworkManager , true ) ;
138139 basePrefab . AddComponent < SpawnDespawnDestroyNotifications > ( ) ;
139- var targetPrefab = NetcodeIntegrationTestHelpers . CreateNetworkObject ( $ "{ k_PrefabRootName } -over", m_ServerNetworkManager , true ) ;
140+ var targetPrefab = NetcodeIntegrationTestHelpers . CreateNetworkObject ( $ "{ k_PrefabRootName } -over", authorityNetworkManager , true ) ;
140141 targetPrefab . AddComponent < SpawnDespawnDestroyNotifications > ( ) ;
141142 m_PrefabOverride = new NetworkPrefab ( )
142143 {
@@ -147,17 +148,21 @@ protected override void OnServerAndClientsCreated()
147148 } ;
148149
149150 // Add the prefab override handler for instance specific player prefabs to the server side
150- var playerPrefabOverrideHandler = m_ServerNetworkManager . gameObject . AddComponent < TestPrefabOverrideHandler > ( ) ;
151+ var playerPrefabOverrideHandler = authorityNetworkManager . gameObject . AddComponent < TestPrefabOverrideHandler > ( ) ;
151152 playerPrefabOverrideHandler . ServerSideInstance = m_PlayerPrefab ;
152153 playerPrefabOverrideHandler . ClientSideInstance = m_ClientSidePlayerPrefab . Prefab ;
153154
154155 // Add the NetworkPrefab with override
155- m_ServerNetworkManager . NetworkConfig . Prefabs . Add ( m_PrefabOverride ) ;
156+ authorityNetworkManager . NetworkConfig . Prefabs . Add ( m_PrefabOverride ) ;
156157 // Add the client player prefab that will be used on clients (and the host)
157- m_ServerNetworkManager . NetworkConfig . Prefabs . Add ( m_ClientSidePlayerPrefab ) ;
158+ authorityNetworkManager . NetworkConfig . Prefabs . Add ( m_ClientSidePlayerPrefab ) ;
158159
159160 foreach ( var networkManager in m_ClientNetworkManagers )
160161 {
162+ if ( authorityNetworkManager == networkManager )
163+ {
164+ continue ;
165+ }
161166 // Add the prefab override handler for instance specific player prefabs to the client side
162167 playerPrefabOverrideHandler = networkManager . gameObject . AddComponent < TestPrefabOverrideHandler > ( ) ;
163168 playerPrefabOverrideHandler . ServerSideInstance = m_PlayerPrefab ;
@@ -208,7 +213,7 @@ protected override IEnumerator OnTearDown()
208213
209214 private GameObject GetPlayerNetworkPrefabObject ( NetworkManager networkManager )
210215 {
211- return networkManager . IsClient ? m_ClientSidePlayerPrefab . Prefab : m_PlayerPrefab ;
216+ return networkManager != GetAuthorityNetworkManager ( ) ? m_ClientSidePlayerPrefab . Prefab : m_PlayerPrefab ;
212217 }
213218
214219 [ UnityTest ]
@@ -217,11 +222,13 @@ public IEnumerator PrefabOverrideTests()
217222 var prefabNetworkObject = ( NetworkObject ) null ;
218223 var spawnedGlobalObjectId = ( uint ) 0 ;
219224
225+ var authorityNetworkManager = GetAuthorityNetworkManager ( ) ;
226+
220227 if ( ! m_UseHost )
221228 {
222229 // If running as just a server, validate that all player prefab clone instances are the server side version
223- prefabNetworkObject = GetPlayerNetworkPrefabObject ( m_ServerNetworkManager ) . GetComponent < NetworkObject > ( ) ;
224- foreach ( var playerEntry in m_PlayerNetworkObjects [ m_ServerNetworkManager . LocalClientId ] )
230+ prefabNetworkObject = GetPlayerNetworkPrefabObject ( authorityNetworkManager ) . GetComponent < NetworkObject > ( ) ;
231+ foreach ( var playerEntry in m_PlayerNetworkObjects [ authorityNetworkManager . LocalClientId ] )
225232 {
226233 spawnedGlobalObjectId = playerEntry . Value . GlobalObjectIdHash ;
227234 Assert . IsTrue ( prefabNetworkObject . GlobalObjectIdHash == spawnedGlobalObjectId , $ "Server-Side { playerEntry . Value . name } was spawned as prefab ({ spawnedGlobalObjectId } ) but we expected ({ prefabNetworkObject . GlobalObjectIdHash } )!") ;
@@ -254,7 +261,7 @@ public IEnumerator PrefabOverrideTests()
254261
255262 // Validates prefab overrides via NetworkPrefab configuration.
256263 var spawnedInstance = ( NetworkObject ) null ;
257- var networkManagerOwner = m_ServerNetworkManager ;
264+ var networkManagerOwner = authorityNetworkManager ;
258265
259266 if ( m_DistributedAuthority )
260267 {
@@ -291,15 +298,17 @@ bool ObjectSpawnedOnAllNetworkMangers()
291298 yield return WaitForConditionOrTimeOut ( ObjectSpawnedOnAllNetworkMangers ) ;
292299 AssertOnTimeout ( $ "The spawned prefab override validation failed!\n { builder } ") ;
293300
301+ var nonAuthorityInstance = GetNonAuthorityNetworkManager ( ) ;
302+
294303 // Verify that the despawn and destroy order of operations is correct for client owned NetworkObjects and the nunmber of times each is invoked is correct
295- spawnedInstance = NetworkObject . InstantiateAndSpawn ( m_PrefabOverride . SourcePrefabToOverride , networkManagerOwner , m_ClientNetworkManagers [ 0 ] . LocalClientId ) ;
304+ spawnedInstance = NetworkObject . InstantiateAndSpawn ( m_PrefabOverride . SourcePrefabToOverride , networkManagerOwner , nonAuthorityInstance . LocalClientId ) ;
296305
297306
298307 yield return WaitForConditionOrTimeOut ( ObjectSpawnedOnAllNetworkMangers ) ;
299308 AssertOnTimeout ( $ "The spawned prefab override validation failed!\n { builder } ") ;
300309
301- var clientId = m_ClientNetworkManagers [ 0 ] . LocalClientId ;
302- m_ClientNetworkManagers [ 0 ] . Shutdown ( ) ;
310+ var clientId = nonAuthorityInstance . LocalClientId ;
311+ nonAuthorityInstance . Shutdown ( ) ;
303312
304313 // Wait until all of the client's owned objects are destroyed
305314 // If no asserts occur, then the despawn & destroy order of operations and invocation count is correct
0 commit comments