@@ -57,12 +57,15 @@ public class TransformInterpolationTests : NetcodeIntegrationTest
5757 {
5858 protected override int NumberOfClients => 1 ;
5959
60- private ulong m_ClientId0 ;
6160 private GameObject m_PrefabToSpawn ;
6261
63- private NetworkObject m_AsNetworkObject ;
62+ private NetworkObject m_SpawnedAsNetworkObject ;
6463 private NetworkObject m_SpawnedObjectOnClient ;
6564
65+ private NetworkObject m_BaseAsNetworkObject ;
66+ private NetworkObject m_BaseOnClient ;
67+
68+
6669 protected override void OnServerAndClientsCreated ( )
6770 {
6871 m_PrefabToSpawn = CreateNetworkObjectPrefab ( "InterpTestObject" ) ;
@@ -74,41 +77,59 @@ private IEnumerator RefreshNetworkObjects()
7477 {
7578 var clientId = m_ClientNetworkManagers [ 0 ] . LocalClientId ;
7679 yield return WaitForConditionOrTimeOut ( ( ) => s_GlobalNetworkObjects . ContainsKey ( clientId ) &&
77- s_GlobalNetworkObjects [ clientId ] . ContainsKey ( m_AsNetworkObject . NetworkObjectId ) ) ;
80+ s_GlobalNetworkObjects [ clientId ] . ContainsKey ( m_BaseAsNetworkObject . NetworkObjectId ) &&
81+ s_GlobalNetworkObjects [ clientId ] . ContainsKey ( m_SpawnedAsNetworkObject . NetworkObjectId ) ) ;
7882
79- Assert . False ( s_GlobalTimeoutHelper . TimedOut , $ "Timed out waiting for client side { nameof ( NetworkObject ) } ID of { m_AsNetworkObject . NetworkObjectId } ") ;
80- m_SpawnedObjectOnClient = s_GlobalNetworkObjects [ clientId ] [ m_AsNetworkObject . NetworkObjectId ] ;
83+ Assert . False ( s_GlobalTimeoutHelper . TimedOut , $ "Timed out waiting for client side { nameof ( NetworkObject ) } ID of { m_SpawnedAsNetworkObject . NetworkObjectId } ") ;
84+
85+ m_BaseOnClient = s_GlobalNetworkObjects [ clientId ] [ m_BaseAsNetworkObject . NetworkObjectId ] ;
86+ // make sure the objects are set with the right network manager
87+ m_BaseOnClient . NetworkManagerOwner = m_ClientNetworkManagers [ 0 ] ;
88+
89+ m_SpawnedObjectOnClient = s_GlobalNetworkObjects [ clientId ] [ m_SpawnedAsNetworkObject . NetworkObjectId ] ;
8190 // make sure the objects are set with the right network manager
8291 m_SpawnedObjectOnClient . NetworkManagerOwner = m_ClientNetworkManagers [ 0 ] ;
92+
93+
8394 }
8495
8596 [ UnityTest ]
8697 public IEnumerator TransformInterpolationTest ( )
8798 {
88- m_ClientId0 = m_ClientNetworkManagers [ 0 ] . LocalClientId ;
89-
9099 // create an object
91100 var spawnedObject = Object . Instantiate ( m_PrefabToSpawn ) ;
92101 var baseObject = Object . Instantiate ( m_PrefabToSpawn ) ;
93102 baseObject . GetComponent < NetworkObject > ( ) . NetworkManagerOwner = m_ServerNetworkManager ;
94103 baseObject . GetComponent < NetworkObject > ( ) . Spawn ( ) ;
95104
96- m_AsNetworkObject = spawnedObject . GetComponent < NetworkObject > ( ) ;
97- m_AsNetworkObject . NetworkManagerOwner = m_ServerNetworkManager ;
105+ m_SpawnedAsNetworkObject = spawnedObject . GetComponent < NetworkObject > ( ) ;
106+ m_SpawnedAsNetworkObject . NetworkManagerOwner = m_ServerNetworkManager ;
107+
108+ m_BaseAsNetworkObject = baseObject . GetComponent < NetworkObject > ( ) ;
109+ m_BaseAsNetworkObject . NetworkManagerOwner = m_ServerNetworkManager ;
110+
98111
99- m_AsNetworkObject . TrySetParent ( baseObject ) ;
112+ m_SpawnedAsNetworkObject . TrySetParent ( baseObject ) ;
100113
101- m_AsNetworkObject . Spawn ( ) ;
114+ m_SpawnedAsNetworkObject . Spawn ( ) ;
102115
103116 yield return RefreshNetworkObjects ( ) ;
104117
105- m_AsNetworkObject . TrySetParent ( baseObject ) ;
118+ m_SpawnedAsNetworkObject . TrySetParent ( baseObject ) ;
106119
107120 baseObject . GetComponent < TransformInterpolationObject > ( ) . IsFixed = true ;
108121 spawnedObject . GetComponent < TransformInterpolationObject > ( ) . IsMoving = true ;
109122
110- // Give two seconds for the object to settle
111- yield return new WaitForSeconds ( 2.0f ) ;
123+ const float maxPlacementError = 0.01f ;
124+
125+ // Wait for the base object to place itself on both instances
126+ while ( m_BaseOnClient . transform . position . y < 1000 - maxPlacementError ||
127+ m_BaseOnClient . transform . position . y > 1000 + maxPlacementError ||
128+ baseObject . transform . position . y < 1000 - maxPlacementError ||
129+ baseObject . transform . position . y > 1000 + maxPlacementError )
130+ {
131+ yield return new WaitForSeconds ( 0.01f ) ;
132+ }
112133
113134 m_SpawnedObjectOnClient . GetComponent < TransformInterpolationObject > ( ) . CheckPosition = true ;
114135
0 commit comments