diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs b/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs index 95bf441e4d..a6f0f3a4cb 100644 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs +++ b/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs @@ -466,14 +466,24 @@ private void AddRemoveNetworkManager(NetworkManager networkManager, bool addNetw /// CreateAndStartNewClient Only /// Invoked when the newly created client has been created /// + /// The NetworkManager instance of the client. protected virtual void OnNewClientCreated(NetworkManager networkManager) { + // Ensure any late joining client has all NetworkPrefabs required to connect. + foreach (var networkPrefab in m_ServerNetworkManager.NetworkConfig.Prefabs.Prefabs) + { + if (!networkManager.NetworkConfig.Prefabs.Contains(networkPrefab.Prefab)) + { + networkManager.NetworkConfig.Prefabs.Add(networkPrefab); + } + } } /// /// CreateAndStartNewClient Only /// Invoked when the newly created client has been created and started /// + /// The NetworkManager instance of the client. protected virtual void OnNewClientStarted(NetworkManager networkManager) { } @@ -483,6 +493,7 @@ protected virtual void OnNewClientStarted(NetworkManager networkManager) /// Invoked when the newly created client has been created, started, and connected /// to the server-host. /// + /// The NetworkManager instance of the client. protected virtual void OnNewClientStartedAndConnected(NetworkManager networkManager) { } @@ -494,6 +505,8 @@ protected virtual void OnNewClientStartedAndConnected(NetworkManager networkMana /// /// Use this for testing connection and disconnection scenarios /// + /// The NetworkManager instance of the client. + /// True if the test should wait for the client to connect; otherwise, false. protected virtual bool ShouldWaitForNewClientToConnect(NetworkManager networkManager) { return true; @@ -503,6 +516,7 @@ protected virtual bool ShouldWaitForNewClientToConnect(NetworkManager networkMan /// This will create, start, and connect a new client while in the middle of an /// integration test. /// + /// An IEnumerator to be used in a coroutine for asynchronous execution. protected IEnumerator CreateAndStartNewClient() { var networkManager = NetcodeIntegrationTestHelpers.CreateNewClient(m_ClientNetworkManagers.Length, m_EnableTimeTravel); diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/DeferredMessagingTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/DeferredMessagingTests.cs index 02cab89b5e..5c2b0ca1d4 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/DeferredMessagingTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/DeferredMessagingTests.cs @@ -259,8 +259,7 @@ protected override void OnNewClientCreated(NetworkManager networkManager) { AddPrefabsToClient(networkManager); } - - base.OnNewClientCreated(networkManager); + // Don't call base to avoid synchronizing the prefabs } private void SpawnClients(bool clearTestDeferredMessageManagerCallFlags = true) diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/DistributeObjectsTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/DistributeObjectsTests.cs index 7957e6cf0c..69680d96f2 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/DistributeObjectsTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/DistributeObjectsTests.cs @@ -235,12 +235,6 @@ private bool ValidateTransformsMatch() return true; } - protected override void OnNewClientCreated(NetworkManager networkManager) - { - networkManager.NetworkConfig.Prefabs = m_ServerNetworkManager.NetworkConfig.Prefabs; - base.OnNewClientCreated(networkManager); - } - private bool SpawnCountsMatch() { var passed = true; diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/ExtendedNetworkShowAndHideTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/ExtendedNetworkShowAndHideTests.cs index 1ebb0f0411..94cdd8b02b 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/ExtendedNetworkShowAndHideTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/ExtendedNetworkShowAndHideTests.cs @@ -97,7 +97,6 @@ protected override void OnNewClientCreated(NetworkManager networkManager) { m_LateJoinClient = networkManager; networkManager.NetworkConfig.EnableSceneManagement = m_EnableSceneManagement; - networkManager.NetworkConfig.Prefabs = m_SpawnOwner.NetworkConfig.Prefabs; base.OnNewClientCreated(networkManager); } diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/NetworkClientAndPlayerObjectTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/NetworkClientAndPlayerObjectTests.cs index 699b82d636..d768f60939 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/NetworkClientAndPlayerObjectTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/NetworkClientAndPlayerObjectTests.cs @@ -45,7 +45,6 @@ protected override void OnServerAndClientsCreated() protected override void OnNewClientCreated(NetworkManager networkManager) { - networkManager.NetworkConfig.Prefabs = m_ServerNetworkManager.NetworkConfig.Prefabs; if (m_DistributedAuthority) { networkManager.OnFetchLocalPlayerPrefabToSpawn = FetchPlayerPrefabToSpawn; diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkBehaviourPrePostSpawnTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkBehaviourPrePostSpawnTests.cs index 00d3c08613..fc233a8653 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkBehaviourPrePostSpawnTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkBehaviourPrePostSpawnTests.cs @@ -93,12 +93,6 @@ protected override IEnumerator OnSetup() return base.OnSetup(); } - protected override void OnNewClientCreated(NetworkManager networkManager) - { - networkManager.NetworkConfig.Prefabs = m_ServerNetworkManager.NetworkConfig.Prefabs; - base.OnNewClientCreated(networkManager); - } - /// /// This validates that pre spawn can be used to instantiate and assign a NetworkVariable (or other prespawn tasks) /// which can be useful for assigning a NetworkVariable value on the server side when the NetworkVariable has owner write permissions. diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs index 841bad4dc7..8d8f02311f 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs @@ -86,13 +86,6 @@ private bool CheckClientsSideObserverTestObj() /// protected override void OnNewClientCreated(NetworkManager networkManager) { - foreach (var networkPrefab in m_ServerNetworkManager.NetworkConfig.Prefabs.Prefabs) - { - if (!networkManager.NetworkConfig.Prefabs.Contains(networkPrefab.Prefab)) - { - networkManager.NetworkConfig.Prefabs.Add(networkPrefab); - } - } networkManager.NetworkConfig.EnableSceneManagement = m_ServerNetworkManager.NetworkConfig.EnableSceneManagement; base.OnNewClientCreated(networkManager); } diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkObject/NetworkObjectSynchronizationTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkObject/NetworkObjectSynchronizationTests.cs index c4714d7fe3..fc59ad09dc 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkObject/NetworkObjectSynchronizationTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkObject/NetworkObjectSynchronizationTests.cs @@ -81,21 +81,16 @@ protected override void OnServerAndClientsCreated() protected override void OnNewClientCreated(NetworkManager networkManager) { + // Setup late joining client prefabs first + base.OnNewClientCreated(networkManager); + networkManager.NetworkConfig.PlayerPrefab = m_PlayerPrefab; networkManager.NetworkConfig.EnsureNetworkVariableLengthSafety = m_VariableLengthSafety == VariableLengthSafety.EnabledNetVarSafety; - foreach (var networkPrefab in m_ServerNetworkManager.NetworkConfig.Prefabs.Prefabs) - { - // To simulate a failure, we exclude the m_InValidNetworkPrefab from the connecting - // client's side. - if (networkPrefab.Prefab.name != m_InValidNetworkPrefab.name) - { - networkManager.NetworkConfig.Prefabs.Add(networkPrefab); - } - } // Disable forcing the same prefabs to avoid failed connections networkManager.NetworkConfig.ForceSamePrefabs = false; networkManager.LogLevel = m_CurrentLogLevel; - base.OnNewClientCreated(networkManager); + // To simulate a failure, exclude the m_InValidNetworkPrefab from the connecting client's side. + networkManager.NetworkConfig.Prefabs.Remove(m_InValidNetworkPrefab); } [UnityTest] diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformBase.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformBase.cs index 4413b73fee..703ed7433e 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformBase.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformBase.cs @@ -338,7 +338,6 @@ protected override IEnumerator OnServerAndClientsConnected() /// protected override void OnNewClientCreated(NetworkManager networkManager) { - networkManager.NetworkConfig.Prefabs = m_ServerNetworkManager.NetworkConfig.Prefabs; networkManager.NetworkConfig.TickRate = GetTickRate(); if (m_EnableVerboseDebug) { diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformOwnershipTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformOwnershipTests.cs index 229a067758..64f6646005 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformOwnershipTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformOwnershipTests.cs @@ -91,20 +91,6 @@ protected override void OnServerAndClientsCreated() base.OnServerAndClientsCreated(); } - /// - /// Clients created during a test need to have their prefabs list updated to - /// match the server's prefab list. - /// - protected override void OnNewClientCreated(NetworkManager networkManager) - { - foreach (var networkPrefab in m_ServerNetworkManager.NetworkConfig.Prefabs.Prefabs) - { - networkManager.NetworkConfig.Prefabs.Add(networkPrefab); - } - - base.OnNewClientCreated(networkManager); - } - private bool ClientIsOwner() { var clientId = m_ClientNetworkManagers[0].LocalClientId; diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformParentingTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformParentingTests.cs new file mode 100644 index 0000000000..896e7ddda2 --- /dev/null +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformParentingTests.cs @@ -0,0 +1,183 @@ +using System.Collections; +using Unity.Netcode.Components; +using Unity.Netcode.TestHelpers.Runtime; +using UnityEngine; +using UnityEngine.TestTools; + +namespace Unity.Netcode.RuntimeTests +{ + internal class NetworkTransformParentingTests : IntegrationTestWithApproximation + { + /// + /// A NetworkBehaviour that moves in space. + /// When spawned on the client, an RPC is sent to the server to spawn a player object for that client. + /// The server parents the player object to the spawner object. This gives a moving parent object and a non-moving child object. + /// The child object should always be at {0,0,0} local space, while the parent object moves around. + /// This NetworkBehaviour tests that parenting to a moving object works as expected. + /// + internal class PlayerSpawner : NetworkBehaviour + { + /// + /// Prefab for the player + /// + public NetworkObject PlayerPrefab; + + /// + /// The server side NetworkObject that was spawned when the client connected. + /// + public NetworkObject SpawnedPlayer; + + /// + /// Represents the different movement states of the PlayerSpawner during the test lifecycle. + /// + public enum MoveState + { + // Initial state, PlayerSpawner will move without counting frames + NotStarted, + // The player object has been spawned, start counting frames + PlayerSpawned, + // We have moved far enough to test location + ReachedPeak, + } + public MoveState State = MoveState.NotStarted; + + // A count of the number of updates since the player object was spawned. + private int m_Count; + + // Movement offsets and targets. + private const float k_PositionOffset = 5.0f; + private const float k_RotationOffset = 25.0f; + private readonly Vector3 m_PositionTarget = Vector3.one * k_PositionOffset * 10; + private readonly Vector3 m_RotationTarget = Vector3.one * k_RotationOffset * 10; + + private void Update() + { + if (!IsServer) + { + return; + } + + transform.position = Vector3.Lerp(transform.position, m_PositionTarget, Time.deltaTime * 2); + var rotation = transform.rotation; + rotation.eulerAngles = Vector3.Slerp(rotation.eulerAngles, m_RotationTarget, Time.deltaTime * 2); + transform.rotation = rotation; + + if (State != MoveState.PlayerSpawned) + { + return; + } + + // Move self for some time after player object is spawned + // This ensures the parent object is moving throughout the spawn process. + m_Count++; + if (m_Count > 10) + { + // Mark PlayerSpawner as having moved far enough to test. + State = MoveState.ReachedPeak; + } + } + + public override void OnNetworkSpawn() + { + if (IsOwner) + { + // Owner initialises PlayerSpawner movement on spawn + transform.position = Vector3.one * k_PositionOffset; + var rotation = transform.rotation; + rotation.eulerAngles = Vector3.one * k_RotationOffset; + transform.rotation = rotation; + } + else + { + // When spawned on a client, send the RPC to spawn the player object + // Using an RPC ensures the PlayerSpawner is moving for the entire spawning of the player object. + RequestPlayerObjectSpawnServerRpc(); + } + } + + /// + /// A ServerRpc that requests the server to spawn a player object for the client that invoked this RPC. + /// + /// Parameters for the ServerRpc, including the sender's client ID. + [ServerRpc(RequireOwnership = false)] + private void RequestPlayerObjectSpawnServerRpc(ServerRpcParams rpcParams = default) + { + SpawnedPlayer = Instantiate(PlayerPrefab); + SpawnedPlayer.SpawnAsPlayerObject(rpcParams.Receive.SenderClientId); + SpawnedPlayer.TrySetParent(NetworkObject, false); + State = MoveState.PlayerSpawned; + } + } + + // Don't start with any clients, we will manually spawn a client inside the test + protected override int NumberOfClients => 0; + + // Parent prefab with moving PlayerSpawner which will spawn the childPrefab + private GameObject m_PlayerSpawnerPrefab; + + // Client and server instances + private PlayerSpawner m_ServerPlayerSpawner; + private NetworkObject m_NewClientPlayer; + + protected override void OnServerAndClientsCreated() + { + m_PlayerSpawnerPrefab = CreateNetworkObjectPrefab("Parent"); + var parentPlayerSpawner = m_PlayerSpawnerPrefab.AddComponent(); + m_PlayerSpawnerPrefab.AddComponent(); + + var playerPrefab = CreateNetworkObjectPrefab("Child"); + var childNetworkTransform = playerPrefab.AddComponent(); + childNetworkTransform.AuthorityMode = NetworkTransform.AuthorityModes.Owner; + childNetworkTransform.InLocalSpace = true; + + parentPlayerSpawner.PlayerPrefab = playerPrefab.GetComponent(); + + base.OnServerAndClientsCreated(); + } + + private bool NewPlayerObjectSpawned() + { + return m_ServerPlayerSpawner.SpawnedPlayer && + m_ClientNetworkManagers[0].SpawnManager.SpawnedObjects.ContainsKey(m_ServerPlayerSpawner.SpawnedPlayer.NetworkObjectId); + } + + private bool HasServerInstanceReachedPeakPoint() + { + VerboseDebug($"Client Local: {m_NewClientPlayer.transform.localPosition} Server Local: {m_ServerPlayerSpawner.SpawnedPlayer.transform.localPosition}"); + return m_ServerPlayerSpawner.State == PlayerSpawner.MoveState.ReachedPeak; + } + + private bool ServerClientPositionMatches() + { + return Approximately(m_NewClientPlayer.transform.localPosition, m_ServerPlayerSpawner.SpawnedPlayer.transform.localPosition) && + Approximately(m_NewClientPlayer.transform.position, m_ServerPlayerSpawner.SpawnedPlayer.transform.position); + } + + [UnityTest] + public IEnumerator TestParentedPlayerUsingLocalSpace() + { + // Spawn the PlayerSpawner object and save the instantiated component + // The PlayerSpawner object will start moving. + m_ServerPlayerSpawner = SpawnObject(m_PlayerSpawnerPrefab, m_ServerNetworkManager).GetComponent(); + + // Create a new client and connect to the server + // The client will prompt the server to spawn a player object and parent it to the PlayerSpawner object. + yield return CreateAndStartNewClient(); + + yield return WaitForConditionOrTimeOut(NewPlayerObjectSpawned); + AssertOnTimeout($"Client did not spawn new player object!"); + + // Save the spawned player object + m_NewClientPlayer = m_ClientNetworkManagers[0].SpawnManager.SpawnedObjects[m_ServerPlayerSpawner.SpawnedPlayer.NetworkObjectId]; + + // Let the parent PlayerSpawner move for several ticks to get an offset + yield return WaitForConditionOrTimeOut(HasServerInstanceReachedPeakPoint); + AssertOnTimeout($"Server instance never reached peak point!"); + + // Check that the client and server local positions match (they should both be at {0,0,0} local space) + yield return WaitForConditionOrTimeOut(ServerClientPositionMatches); + AssertOnTimeout($"Client local position {m_NewClientPlayer.transform.localPosition} does not match" + + $" server local position {m_ServerPlayerSpawner.SpawnedPlayer.transform.localPosition}"); + } + } +} diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformParentingTests.cs.meta b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformParentingTests.cs.meta new file mode 100644 index 0000000000..d3c09da900 --- /dev/null +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformParentingTests.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 26e2041cdadd44419941135a150b75bd +timeCreated: 1743196812 \ No newline at end of file diff --git a/pvpExceptions.json b/pvpExceptions.json index e717d6626f..23263680db 100644 --- a/pvpExceptions.json +++ b/pvpExceptions.json @@ -238,12 +238,6 @@ "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTest: void OneTimeSetup(): undocumented", "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTest: IEnumerator OnSetup(): missing ", "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTest: IEnumerator SetUp(): undocumented", - "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTest: void OnNewClientCreated(NetworkManager): missing ", - "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTest: void OnNewClientStarted(NetworkManager): missing ", - "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTest: void OnNewClientStartedAndConnected(NetworkManager): missing ", - "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTest: bool ShouldWaitForNewClientToConnect(NetworkManager): missing ", - "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTest: bool ShouldWaitForNewClientToConnect(NetworkManager): missing ", - "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTest: IEnumerator CreateAndStartNewClient(): missing ", "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTest: IEnumerator StopOneClient(NetworkManager, bool): missing ", "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTest: IEnumerator StopOneClient(NetworkManager, bool): missing ", "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTest: IEnumerator StopOneClient(NetworkManager, bool): missing ", diff --git a/testproject/Assets/Tests/Runtime/Animation/NetworkAnimatorTests.cs b/testproject/Assets/Tests/Runtime/Animation/NetworkAnimatorTests.cs index fe64a56431..7befcfab22 100644 --- a/testproject/Assets/Tests/Runtime/Animation/NetworkAnimatorTests.cs +++ b/testproject/Assets/Tests/Runtime/Animation/NetworkAnimatorTests.cs @@ -624,18 +624,6 @@ public IEnumerator TriggerUpdateTests() VerboseDebug($" ------------------ Trigger Test [{TriggerTest.Iteration}][{m_OwnerShipMode}] Stopping ------------------ "); } - protected override void OnNewClientCreated(NetworkManager networkManager) - { - var networkPrefab = new NetworkPrefab() { Prefab = m_AnimationTestPrefab }; - networkManager.NetworkConfig.Prefabs.Add(networkPrefab); - networkPrefab = new NetworkPrefab() { Prefab = m_AnimationOwnerTestPrefab }; - networkManager.NetworkConfig.Prefabs.Add(networkPrefab); - networkPrefab = new NetworkPrefab() { Prefab = m_AnimationCheerTestPrefab }; - networkManager.NetworkConfig.Prefabs.Add(networkPrefab); - networkPrefab = new NetworkPrefab() { Prefab = m_AnimationCheerOwnerTestPrefab }; - networkManager.NetworkConfig.Prefabs.Add(networkPrefab); - } - /// /// Verifies that triggers are synchronized with currently connected clients /// diff --git a/testproject/Assets/Tests/Runtime/DontDestroyOnLoadTests.cs b/testproject/Assets/Tests/Runtime/DontDestroyOnLoadTests.cs index f3794d46b5..dcea70efdd 100644 --- a/testproject/Assets/Tests/Runtime/DontDestroyOnLoadTests.cs +++ b/testproject/Assets/Tests/Runtime/DontDestroyOnLoadTests.cs @@ -22,12 +22,6 @@ protected override void OnServerAndClientsCreated() base.OnServerAndClientsCreated(); } - protected override void OnNewClientCreated(NetworkManager networkManager) - { - networkManager.NetworkConfig.Prefabs = m_ServerNetworkManager.NetworkConfig.Prefabs; - base.OnNewClientCreated(networkManager); - } - private ulong m_SpawnedNetworkObjectId; private StringBuilder m_ErrorLog = new StringBuilder(); diff --git a/testproject/Assets/Tests/Runtime/NetworkManagerTests.cs b/testproject/Assets/Tests/Runtime/NetworkManagerTests.cs index b09dd5e291..5756f81b85 100644 --- a/testproject/Assets/Tests/Runtime/NetworkManagerTests.cs +++ b/testproject/Assets/Tests/Runtime/NetworkManagerTests.cs @@ -108,16 +108,12 @@ public enum ShutdownChecks protected override void OnNewClientCreated(NetworkManager networkManager) { networkManager.NetworkConfig.EnableSceneManagement = m_UseSceneManagement; - foreach (var prefab in m_ServerNetworkManager.NetworkConfig.Prefabs.Prefabs) - { - networkManager.NetworkConfig.Prefabs.Add(prefab); - } base.OnNewClientCreated(networkManager); } /// /// Validate shutting down a second time does not cause an exception. - /// + /// [UnityTest] public IEnumerator ValidateShutdown([Values] ShutdownChecks shutdownCheck) { @@ -132,7 +128,7 @@ public IEnumerator ValidateShutdown([Values] ShutdownChecks shutdownCheck) } else { - // For this test (simplify the complexity) with a late joining client, just remove the + // For this test (simplify the complexity) with a late joining client, just remove the // in-scene placed NetworkObject prior to the client connecting // (We are testing the shutdown sequence) var spawnedObjects = m_ServerNetworkManager.SpawnManager.SpawnedObjectsList.ToList(); diff --git a/testproject/Assets/Tests/Runtime/NetworkSceneManager/NetworkObjectSceneMigrationTests.cs b/testproject/Assets/Tests/Runtime/NetworkSceneManager/NetworkObjectSceneMigrationTests.cs index ccfbf25b05..d5eb5f427c 100644 --- a/testproject/Assets/Tests/Runtime/NetworkSceneManager/NetworkObjectSceneMigrationTests.cs +++ b/testproject/Assets/Tests/Runtime/NetworkSceneManager/NetworkObjectSceneMigrationTests.cs @@ -59,19 +59,6 @@ protected override void OnServerAndClientsCreated() base.OnServerAndClientsCreated(); } - protected override void OnNewClientCreated(NetworkManager networkManager) - { - foreach (var networkPrfab in m_ServerNetworkManager.NetworkConfig.Prefabs.Prefabs) - { - if (networkPrfab.Prefab == null) - { - continue; - } - networkManager.NetworkConfig.Prefabs.Add(networkPrfab); - } - base.OnNewClientCreated(networkManager); - } - private bool DidClientsSpawnInstance(NetworkObject serverObject, bool checkDestroyWithScene = false) { foreach (var networkManager in m_ClientNetworkManagers) diff --git a/testproject/Assets/Tests/Runtime/ObjectParenting/ParentDynamicUnderInScenePlaced.cs b/testproject/Assets/Tests/Runtime/ObjectParenting/ParentDynamicUnderInScenePlaced.cs index 20087214c0..5acf256de1 100644 --- a/testproject/Assets/Tests/Runtime/ObjectParenting/ParentDynamicUnderInScenePlaced.cs +++ b/testproject/Assets/Tests/Runtime/ObjectParenting/ParentDynamicUnderInScenePlaced.cs @@ -57,15 +57,6 @@ protected override IEnumerator OnStartedServerAndClients() return base.OnStartedServerAndClients(); } - protected override void OnNewClientCreated(NetworkManager networkManager) - { - foreach (var networkPrefab in m_ServerNetworkManager.NetworkConfig.Prefabs.Prefabs) - { - networkManager.NetworkConfig.Prefabs.Add(networkPrefab); - } - base.OnNewClientCreated(networkManager); - } - protected override void OnNewClientStarted(NetworkManager networkManager) { m_ServerNetworkManager.SceneManager.SetClientSynchronizationMode(LoadSceneMode.Additive); diff --git a/testproject/Assets/Tests/Runtime/ObjectParenting/ParentingWorldPositionStaysTests.cs b/testproject/Assets/Tests/Runtime/ObjectParenting/ParentingWorldPositionStaysTests.cs index cd8f6a1bc7..84829a6c8e 100644 --- a/testproject/Assets/Tests/Runtime/ObjectParenting/ParentingWorldPositionStaysTests.cs +++ b/testproject/Assets/Tests/Runtime/ObjectParenting/ParentingWorldPositionStaysTests.cs @@ -218,14 +218,6 @@ protected override void OnServerAndClientsCreated() base.OnServerAndClientsCreated(); } - protected override void OnNewClientCreated(NetworkManager networkManager) - { - foreach (var networkPrefab in m_ServerNetworkManager.NetworkConfig.Prefabs.Prefabs) - { - networkManager.NetworkConfig.Prefabs.Add(networkPrefab); - } - } - private bool HaveAllClientsSpawnedObjects() { foreach (var client in m_ClientNetworkManagers) diff --git a/testproject/Assets/Tests/Runtime/PrefabExtendedTests.cs b/testproject/Assets/Tests/Runtime/PrefabExtendedTests.cs index 16bc79e900..7bfe12083f 100644 --- a/testproject/Assets/Tests/Runtime/PrefabExtendedTests.cs +++ b/testproject/Assets/Tests/Runtime/PrefabExtendedTests.cs @@ -129,11 +129,10 @@ protected override void OnNewClientCreated(NetworkManager networkManager) { networkManager.NetworkConfig.EnableSceneManagement = m_SceneManagementEnabled; networkManager.NetworkConfig.Prefabs.NetworkPrefabsLists.Add(PrefabTestConfig.Instance.TestPrefabs); - base.OnNewClientCreated(networkManager); } /// - /// Validates that all spawned NetworkObjects are present and their corresponding + /// Validates that all spawned NetworkObjects are present and their corresponding /// GlobalObjectIdHash values match /// private bool ValidateAllClientsSpawnedObjects() @@ -220,7 +219,7 @@ public IEnumerator TestPrefabsSpawning([Values] InstantiateAndSpawnMethods insta yield return CreateAndStartNewClient(); var spawnManager = m_ServerNetworkManager.SpawnManager; - // If scene management is enabled, then we want to verify against the editor + // If scene management is enabled, then we want to verify against the editor // assigned in-scene placed NetworkObjects if (m_SceneManagementEnabled) { @@ -287,7 +286,7 @@ public IEnumerator TestPrefabsSpawning([Values] InstantiateAndSpawnMethods insta [UnityTest] public IEnumerator TestsInstantiateAndSpawnErrors([Values] InstantiateAndSpawnMethods instantiateAndSpawnType) { - // If scene management is enabled, then we want to verify against the editor + // If scene management is enabled, then we want to verify against the editor // assigned in-scene placed NetworkObjects if (m_SceneManagementEnabled) { @@ -328,7 +327,7 @@ public IEnumerator TestsInstantiateAndSpawnErrors([Values] InstantiateAndSpawnMe m_ServerNetworkManager.Shutdown(); LogAssert.Expect(LogType.Warning, NetworkSpawnManager.InstantiateAndSpawnErrors[NetworkSpawnManager.InstantiateAndSpawnErrorTypes.InvokedWhenShuttingDown]); InstantiateAndSpawn(m_ObjectsToSpawn[0], instantiateAndSpawnType); - // The not listening error can only happen when trying to instantiate and spawn on a Network Prefab + // The not listening error can only happen when trying to instantiate and spawn on a Network Prefab if (instantiateAndSpawnType == InstantiateAndSpawnMethods.NetworkObject) { LogAssert.Expect(LogType.Error, NetworkSpawnManager.InstantiateAndSpawnErrors[NetworkSpawnManager.InstantiateAndSpawnErrorTypes.NoActiveSession]);