|
8 | 8 | // using Unity.Netcode.Samples;
|
9 | 9 | using UnityEngine;
|
10 | 10 | using UnityEngine.TestTools;
|
11 |
| -using Object = UnityEngine.Object; |
12 | 11 |
|
13 | 12 | namespace Unity.Netcode.RuntimeTests
|
14 | 13 | {
|
@@ -189,171 +188,14 @@ public IEnumerator TestCantChangeTransformFromOtherSideAuthority([Values] bool t
|
189 | 188 | * ownership change
|
190 | 189 | * test teleport with interpolation
|
191 | 190 | * test teleport without interpolation
|
192 |
| - * test dynamic spawning -- done with NetworkTransformRespawnTests |
| 191 | + * test dynamic spawning |
193 | 192 | */
|
194 | 193 |
|
195 | 194 | [UnityTearDown]
|
196 | 195 | public override IEnumerator Teardown()
|
197 | 196 | {
|
198 | 197 | yield return base.Teardown();
|
199 |
| - Object.DestroyImmediate(m_PlayerPrefab); |
200 |
| - } |
201 |
| - } |
202 |
| - |
203 |
| - /// <summary> |
204 |
| - /// This test simulates a pooled NetworkObject being re-used over time with a NetworkTransform |
205 |
| - /// This test validates that pooled NetworkObjects' NetworkTransforms are completely reset in |
206 |
| - /// order to properly start interpolating from the new spawn position and not the previous position |
207 |
| - /// when the registered Network Prefab was despawned. This specifically tests the client side. |
208 |
| - /// </summary> |
209 |
| - public class NetworkTransformRespawnTests : BaseMultiInstanceTest, INetworkPrefabInstanceHandler |
210 |
| - { |
211 |
| - /// <summary> |
212 |
| - /// Our test object mover NetworkBehaviour |
213 |
| - /// </summary> |
214 |
| - public class DynamicObjectMover : NetworkBehaviour |
215 |
| - { |
216 |
| - public Vector3 SpawnedPosition; |
217 |
| - private Rigidbody m_Rigidbody; |
218 |
| - private Vector3 m_MoveTowardsPosition = new Vector3(20, 0, 20); |
219 |
| - |
220 |
| - private void OnEnable() |
221 |
| - { |
222 |
| - SpawnedPosition = transform.position; |
223 |
| - } |
224 |
| - |
225 |
| - private void Update() |
226 |
| - { |
227 |
| - if (!IsSpawned || !IsServer) |
228 |
| - { |
229 |
| - return; |
230 |
| - } |
231 |
| - |
232 |
| - if (m_Rigidbody == null) |
233 |
| - { |
234 |
| - m_Rigidbody = GetComponent<Rigidbody>(); |
235 |
| - } |
236 |
| - if (m_Rigidbody != null) |
237 |
| - { |
238 |
| - m_Rigidbody.MovePosition(transform.position + (m_MoveTowardsPosition * Time.fixedDeltaTime)); |
239 |
| - } |
240 |
| - } |
241 |
| - } |
242 |
| - |
243 |
| - protected override int NbClients => 1; |
244 |
| - private GameObject m_ObjectToSpawn; |
245 |
| - private GameObject m_ClientSideObject; |
246 |
| - private NetworkObject m_DefaultNetworkObject; |
247 |
| - private Vector3 m_LastClientSidePosition; |
248 |
| - private bool m_ClientSideSpawned; |
249 |
| - |
250 |
| - public NetworkObject Instantiate(ulong ownerClientId, Vector3 position, Quaternion rotation) |
251 |
| - { |
252 |
| - m_ClientSideSpawned = true; |
253 |
| - m_ClientSideObject.SetActive(true); |
254 |
| - return m_ClientSideObject.GetComponent<NetworkObject>(); |
255 |
| - } |
256 |
| - |
257 |
| - public void Destroy(NetworkObject networkObject) |
258 |
| - { |
259 |
| - m_ClientSideSpawned = false; |
260 |
| - networkObject.gameObject.SetActive(false); |
261 |
| - m_LastClientSidePosition = networkObject.transform.position; |
262 |
| - } |
263 |
| - |
264 |
| - public override IEnumerator Setup() |
265 |
| - { |
266 |
| - m_BypassStartAndWaitForClients = true; |
267 |
| - yield return StartSomeClientsAndServerWithPlayers(true, NbClients); |
268 |
| - |
269 |
| - m_ObjectToSpawn = new GameObject("NetworkTransformDynamicObject"); |
270 |
| - m_DefaultNetworkObject = m_ObjectToSpawn.AddComponent<NetworkObject>(); |
271 |
| - m_ObjectToSpawn.AddComponent<NetworkTransform>(); |
272 |
| - var rigidBody = m_ObjectToSpawn.AddComponent<Rigidbody>(); |
273 |
| - rigidBody.useGravity = false; |
274 |
| - m_ObjectToSpawn.AddComponent<NetworkRigidbody>(); |
275 |
| - m_ObjectToSpawn.AddComponent<DynamicObjectMover>(); |
276 |
| - MultiInstanceHelpers.MakeNetworkObjectTestPrefab(m_DefaultNetworkObject); |
277 |
| - |
278 |
| - var networkPrefab = new NetworkPrefab(); |
279 |
| - networkPrefab.Prefab = m_ObjectToSpawn; |
280 |
| - m_ServerNetworkManager.NetworkConfig.NetworkPrefabs.Add(networkPrefab); |
281 |
| - m_ServerNetworkManager.NetworkConfig.EnableSceneManagement = false; |
282 |
| - |
283 |
| - foreach (var client in m_ClientNetworkManagers) |
284 |
| - { |
285 |
| - client.NetworkConfig.NetworkPrefabs.Add(networkPrefab); |
286 |
| - client.NetworkConfig.EnableSceneManagement = false; |
287 |
| - // Add a client side prefab handler for this NetworkObject |
288 |
| - client.PrefabHandler.AddHandler(m_ObjectToSpawn, this); |
289 |
| - } |
290 |
| - m_DefaultNetworkObject.NetworkManagerOwner = m_ServerNetworkManager; |
291 |
| - m_ClientSideObject = Object.Instantiate(m_ObjectToSpawn); |
292 |
| - m_ClientSideObject.SetActive(false); |
293 |
| - } |
294 |
| - |
295 |
| - [UnityTest] |
296 |
| - public IEnumerator RespawnedPositionTest() |
297 |
| - { |
298 |
| - if (!MultiInstanceHelpers.Start(true, m_ServerNetworkManager, m_ClientNetworkManagers)) |
299 |
| - { |
300 |
| - Debug.LogError("Failed to start instances"); |
301 |
| - Assert.Fail("Failed to start instances"); |
302 |
| - } |
303 |
| - |
304 |
| - // Wait for connection on client side |
305 |
| - yield return MultiInstanceHelpers.Run(MultiInstanceHelpers.WaitForClientsConnected(m_ClientNetworkManagers)); |
306 |
| - |
307 |
| - // Wait for connection on server side |
308 |
| - yield return MultiInstanceHelpers.Run(MultiInstanceHelpers.WaitForClientsConnectedToServer(m_ServerNetworkManager, NbClients + 1)); |
309 |
| - |
310 |
| - Assert.True(m_ObjectToSpawn != null); |
311 |
| - Assert.True(m_DefaultNetworkObject != null); |
312 |
| - m_DefaultNetworkObject.Spawn(); |
313 |
| - yield return new WaitUntil(() => m_ClientSideSpawned); |
314 |
| - |
315 |
| - // Let the object move a bit |
316 |
| - yield return new WaitForSeconds(0.5f); |
317 |
| - |
318 |
| - // Make sure it moved on the client side |
319 |
| - Assert.IsTrue(m_ClientSideObject.transform.position != Vector3.zero); |
320 |
| - |
321 |
| - m_ServerNetworkManager.SpawnManager.DespawnObject(m_DefaultNetworkObject); |
322 |
| - yield return new WaitUntil(() => !m_ClientSideSpawned); |
323 |
| - |
324 |
| - // Re-spawn the same NetworkObject |
325 |
| - m_DefaultNetworkObject.Spawn(); |
326 |
| - yield return new WaitUntil(() => m_ClientSideSpawned); |
327 |
| - |
328 |
| - // !!! This is the primary element for this particular test !!! |
329 |
| - // If NetworkTransform.OnNetworkDespawn did not have m_LocalAuthoritativeNetworkState.Reset(); |
330 |
| - // then this will always fail. To verify this will fail you can comment out that line of code |
331 |
| - // in NetworkTransform.OnNetworkDespawn and run this test again. |
332 |
| - Assert.IsTrue(m_ClientSideObject.transform.position == Vector3.zero); |
333 |
| - |
334 |
| - // Next we make sure the last spawn instance position was anything but zero |
335 |
| - // (i.e. it moved prior to despawning and respawning the object) |
336 |
| - Assert.IsTrue(m_LastClientSidePosition != Vector3.zero); |
337 |
| - |
338 |
| - // Done |
339 |
| - m_DefaultNetworkObject.Despawn(); |
340 |
| - } |
341 |
| - |
342 |
| - public override IEnumerator Teardown() |
343 |
| - { |
344 |
| - if (m_ClientSideObject != null) |
345 |
| - { |
346 |
| - Object.Destroy(m_ClientSideObject); |
347 |
| - m_ClientSideObject = null; |
348 |
| - } |
349 |
| - |
350 |
| - if (m_ObjectToSpawn != null) |
351 |
| - { |
352 |
| - Object.Destroy(m_ObjectToSpawn); |
353 |
| - m_ObjectToSpawn = null; |
354 |
| - } |
355 |
| - |
356 |
| - return base.Teardown(); |
| 198 | + UnityEngine.Object.DestroyImmediate(m_PlayerPrefab); |
357 | 199 | }
|
358 | 200 | }
|
359 | 201 | }
|
0 commit comments