@@ -57,12 +57,15 @@ public class TransformInterpolationTests : NetcodeIntegrationTest
57
57
{
58
58
protected override int NumberOfClients => 1 ;
59
59
60
- private ulong m_ClientId0 ;
61
60
private GameObject m_PrefabToSpawn ;
62
61
63
- private NetworkObject m_AsNetworkObject ;
62
+ private NetworkObject m_SpawnedAsNetworkObject ;
64
63
private NetworkObject m_SpawnedObjectOnClient ;
65
64
65
+ private NetworkObject m_BaseAsNetworkObject ;
66
+ private NetworkObject m_BaseOnClient ;
67
+
68
+
66
69
protected override void OnServerAndClientsCreated ( )
67
70
{
68
71
m_PrefabToSpawn = CreateNetworkObjectPrefab ( "InterpTestObject" ) ;
@@ -74,41 +77,59 @@ private IEnumerator RefreshNetworkObjects()
74
77
{
75
78
var clientId = m_ClientNetworkManagers [ 0 ] . LocalClientId ;
76
79
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 ) ) ;
78
82
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 ] ;
81
90
// make sure the objects are set with the right network manager
82
91
m_SpawnedObjectOnClient . NetworkManagerOwner = m_ClientNetworkManagers [ 0 ] ;
92
+
93
+
83
94
}
84
95
85
96
[ UnityTest ]
86
97
public IEnumerator TransformInterpolationTest ( )
87
98
{
88
- m_ClientId0 = m_ClientNetworkManagers [ 0 ] . LocalClientId ;
89
-
90
99
// create an object
91
100
var spawnedObject = Object . Instantiate ( m_PrefabToSpawn ) ;
92
101
var baseObject = Object . Instantiate ( m_PrefabToSpawn ) ;
93
102
baseObject . GetComponent < NetworkObject > ( ) . NetworkManagerOwner = m_ServerNetworkManager ;
94
103
baseObject . GetComponent < NetworkObject > ( ) . Spawn ( ) ;
95
104
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
+
98
111
99
- m_AsNetworkObject . TrySetParent ( baseObject ) ;
112
+ m_SpawnedAsNetworkObject . TrySetParent ( baseObject ) ;
100
113
101
- m_AsNetworkObject . Spawn ( ) ;
114
+ m_SpawnedAsNetworkObject . Spawn ( ) ;
102
115
103
116
yield return RefreshNetworkObjects ( ) ;
104
117
105
- m_AsNetworkObject . TrySetParent ( baseObject ) ;
118
+ m_SpawnedAsNetworkObject . TrySetParent ( baseObject ) ;
106
119
107
120
baseObject . GetComponent < TransformInterpolationObject > ( ) . IsFixed = true ;
108
121
spawnedObject . GetComponent < TransformInterpolationObject > ( ) . IsMoving = true ;
109
122
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
+ }
112
133
113
134
m_SpawnedObjectOnClient . GetComponent < TransformInterpolationObject > ( ) . CheckPosition = true ;
114
135
0 commit comments