Skip to content

Commit 8ee79ab

Browse files
fix: This fixes the issue with recent 2023 update where FindObjectsOfType was renamed to FindObjectsByType (#2320)
* update Adding the 2023.1.a21 FindObjectsByType fix for NGO using the UNITY_2023_1_OR_NEWER define. Modified a few of the FindObjectsSortMode for areas that looked like they might require their results ordered by InstanceID.
1 parent d48c373 commit 8ee79ab

19 files changed

Lines changed: 166 additions & 9 deletions

com.unity.netcode.gameobjects/Editor/NetworkManagerHelper.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,11 @@ private static void ScenesInBuildActiveSceneCheck()
6565
var scenesList = EditorBuildSettings.scenes.ToList();
6666
var activeScene = SceneManager.GetActiveScene();
6767
var isSceneInBuildSettings = scenesList.Count((c) => c.path == activeScene.path) == 1;
68+
#if UNITY_2023_1_OR_NEWER
69+
var networkManager = Object.FindFirstObjectByType<NetworkManager>();
70+
#else
6871
var networkManager = Object.FindObjectOfType<NetworkManager>();
72+
#endif
6973
if (!isSceneInBuildSettings && networkManager != null)
7074
{
7175
if (networkManager.NetworkConfig != null && networkManager.NetworkConfig.EnableSceneManagement)

com.unity.netcode.gameobjects/Runtime/SceneManagement/NetworkSceneManager.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2018,7 +2018,11 @@ internal void PopulateScenePlacedObjects(Scene sceneToFilterBy, bool clearSceneP
20182018
ScenePlacedObjects.Clear();
20192019
}
20202020

2021+
#if UNITY_2023_1_OR_NEWER
2022+
var networkObjects = UnityEngine.Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID);
2023+
#else
20212024
var networkObjects = UnityEngine.Object.FindObjectsOfType<NetworkObject>();
2025+
#endif
20222026

20232027
// Just add every NetworkObject found that isn't already in the list
20242028
// With additive scenes, we can have multiple in-scene placed NetworkObjects with the same GlobalObjectIdHash value

com.unity.netcode.gameobjects/Runtime/SceneManagement/SceneEventData.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,12 @@ internal void AddDespawnedInSceneNetworkObjects()
269269
{
270270
m_DespawnedInSceneObjectsSync.Clear();
271271
// Find all active and non-active in-scene placed NetworkObjects
272+
#if UNITY_2023_1_OR_NEWER
273+
var inSceneNetworkObjects = UnityEngine.Object.FindObjectsByType<NetworkObject>(UnityEngine.FindObjectsInactive.Include, UnityEngine.FindObjectsSortMode.InstanceID).Where((c) => c.NetworkManager == m_NetworkManager);
274+
#else
272275
var inSceneNetworkObjects = UnityEngine.Object.FindObjectsOfType<NetworkObject>(includeInactive: true).Where((c) => c.NetworkManager == m_NetworkManager);
276+
277+
#endif
273278
foreach (var sobj in inSceneNetworkObjects)
274279
{
275280
if (sobj.IsSceneObject.HasValue && sobj.IsSceneObject.Value && !sobj.IsSpawned)
@@ -657,7 +662,11 @@ internal void ReadClientReSynchronizationData(FastBufferReader reader)
657662

658663
if (networkObjectsToRemove.Length > 0)
659664
{
665+
#if UNITY_2023_1_OR_NEWER
666+
var networkObjects = UnityEngine.Object.FindObjectsByType<NetworkObject>(UnityEngine.FindObjectsSortMode.InstanceID);
667+
#else
660668
var networkObjects = UnityEngine.Object.FindObjectsOfType<NetworkObject>();
669+
#endif
661670
var networkObjectIdToNetworkObject = new Dictionary<ulong, NetworkObject>();
662671
foreach (var networkObject in networkObjects)
663672
{
@@ -785,8 +794,14 @@ private void DeserializeDespawnedInScenePlacedNetworkObjects()
785794
var objectRelativeScene = m_NetworkManager.SceneManager.ScenesLoaded[localSceneHandle];
786795

787796
// Find all active and non-active in-scene placed NetworkObjects
797+
#if UNITY_2023_1_OR_NEWER
798+
var inSceneNetworkObjects = UnityEngine.Object.FindObjectsByType<NetworkObject>(UnityEngine.FindObjectsInactive.Include, UnityEngine.FindObjectsSortMode.InstanceID).Where((c) =>
799+
c.GetSceneOriginHandle() == localSceneHandle && (c.IsSceneObject != false)).ToList();
800+
#else
788801
var inSceneNetworkObjects = UnityEngine.Object.FindObjectsOfType<NetworkObject>(includeInactive: true).Where((c) =>
789802
c.GetSceneOriginHandle() == localSceneHandle && (c.IsSceneObject != false)).ToList();
803+
#endif
804+
790805

791806
foreach (var inSceneObject in inSceneNetworkObjects)
792807
{

com.unity.netcode.gameobjects/Runtime/Spawning/NetworkSpawnManager.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -658,7 +658,11 @@ internal void DespawnObject(NetworkObject networkObject, bool destroyObject = fa
658658
// Makes scene objects ready to be reused
659659
internal void ServerResetShudownStateForSceneObjects()
660660
{
661+
#if UNITY_2023_1_OR_NEWER
662+
var networkObjects = UnityEngine.Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID).Where((c) => c.IsSceneObject != null && c.IsSceneObject == true);
663+
#else
661664
var networkObjects = UnityEngine.Object.FindObjectsOfType<NetworkObject>().Where((c) => c.IsSceneObject != null && c.IsSceneObject == true);
665+
#endif
662666
foreach (var sobj in networkObjects)
663667
{
664668
sobj.IsSpawned = false;
@@ -689,7 +693,11 @@ internal void ServerDestroySpawnedSceneObjects()
689693

690694
internal void DespawnAndDestroyNetworkObjects()
691695
{
696+
#if UNITY_2023_1_OR_NEWER
697+
var networkObjects = UnityEngine.Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID);
698+
#else
692699
var networkObjects = UnityEngine.Object.FindObjectsOfType<NetworkObject>();
700+
#endif
693701

694702
for (int i = 0; i < networkObjects.Length; i++)
695703
{
@@ -719,7 +727,11 @@ internal void DespawnAndDestroyNetworkObjects()
719727

720728
internal void DestroySceneObjects()
721729
{
730+
#if UNITY_2023_1_OR_NEWER
731+
var networkObjects = UnityEngine.Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID);
732+
#else
722733
var networkObjects = UnityEngine.Object.FindObjectsOfType<NetworkObject>();
734+
#endif
723735

724736
for (int i = 0; i < networkObjects.Length; i++)
725737
{
@@ -746,7 +758,11 @@ internal void DestroySceneObjects()
746758

747759
internal void ServerSpawnSceneObjectsOnStartSweep()
748760
{
761+
#if UNITY_2023_1_OR_NEWER
762+
var networkObjects = UnityEngine.Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID);
763+
#else
749764
var networkObjects = UnityEngine.Object.FindObjectsOfType<NetworkObject>();
765+
#endif
750766
var networkObjectsToSpawn = new List<NetworkObject>();
751767

752768
for (int i = 0; i < networkObjects.Length; i++)

com.unity.netcode.gameobjects/TestHelpers/Runtime/IntegrationTestSceneHandler.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,12 @@ private static void SceneManager_sceneLoaded(Scene scene, LoadSceneMode loadScen
147147
private static void ProcessInSceneObjects(Scene scene, NetworkManager networkManager)
148148
{
149149
// Get all in-scene placed NeworkObjects that were instantiated when this scene loaded
150+
#if UNITY_2023_1_OR_NEWER
151+
var inSceneNetworkObjects = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID).Where((c) => c.IsSceneObject != false && c.GetSceneOriginHandle() == scene.handle);
152+
#else
150153
var inSceneNetworkObjects = Object.FindObjectsOfType<NetworkObject>().Where((c) => c.IsSceneObject != false && c.GetSceneOriginHandle() == scene.handle);
154+
#endif
155+
151156
foreach (var sobj in inSceneNetworkObjects)
152157
{
153158
if (sobj.NetworkManagerOwner != networkManager)

com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,8 +437,13 @@ private void ClientNetworkManagerPostStart(NetworkManager networkManager)
437437
m_PlayerNetworkObjects.Add(networkManager.LocalClientId, new Dictionary<ulong, NetworkObject>());
438438
}
439439

440+
#if UNITY_2023_1_OR_NEWER
441+
// Get all player instances for the current client NetworkManager instance
442+
var clientPlayerClones = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.None).Where((c) => c.IsPlayerObject && c.OwnerClientId == networkManager.LocalClientId).ToList();
443+
#else
440444
// Get all player instances for the current client NetworkManager instance
441445
var clientPlayerClones = Object.FindObjectsOfType<NetworkObject>().Where((c) => c.IsPlayerObject && c.OwnerClientId == networkManager.LocalClientId).ToList();
446+
#endif
442447
// Add this player instance to each client player entry
443448
foreach (var playerNetworkObject in clientPlayerClones)
444449
{
@@ -452,9 +457,13 @@ private void ClientNetworkManagerPostStart(NetworkManager networkManager)
452457
m_PlayerNetworkObjects[playerNetworkObject.NetworkManager.LocalClientId].Add(networkManager.LocalClientId, playerNetworkObject);
453458
}
454459
}
455-
460+
#if UNITY_2023_1_OR_NEWER
461+
// For late joining clients, add the remaining (if any) cloned versions of each client's player
462+
clientPlayerClones = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.None).Where((c) => c.IsPlayerObject && c.NetworkManager == networkManager).ToList();
463+
#else
456464
// For late joining clients, add the remaining (if any) cloned versions of each client's player
457465
clientPlayerClones = Object.FindObjectsOfType<NetworkObject>().Where((c) => c.IsPlayerObject && c.NetworkManager == networkManager).ToList();
466+
#endif
458467
foreach (var playerNetworkObject in clientPlayerClones)
459468
{
460469
if (!m_PlayerNetworkObjects[networkManager.LocalClientId].ContainsKey(playerNetworkObject.OwnerClientId))
@@ -474,7 +483,11 @@ protected void ClientNetworkManagerPostStartInit()
474483
}
475484
if (m_UseHost)
476485
{
486+
#if UNITY_2023_1_OR_NEWER
487+
var clientSideServerPlayerClones = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.None).Where((c) => c.IsPlayerObject && c.OwnerClientId == m_ServerNetworkManager.LocalClientId);
488+
#else
477489
var clientSideServerPlayerClones = Object.FindObjectsOfType<NetworkObject>().Where((c) => c.IsPlayerObject && c.OwnerClientId == m_ServerNetworkManager.LocalClientId);
490+
#endif
478491
foreach (var playerNetworkObject in clientSideServerPlayerClones)
479492
{
480493
// When the server is not the host this needs to be done
@@ -530,8 +543,13 @@ protected IEnumerator StartServerAndClients()
530543

531544
if (m_UseHost || m_ServerNetworkManager.IsHost)
532545
{
546+
#if UNITY_2023_1_OR_NEWER
547+
// Add the server player instance to all m_ClientSidePlayerNetworkObjects entries
548+
var serverPlayerClones = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.None).Where((c) => c.IsPlayerObject && c.OwnerClientId == m_ServerNetworkManager.LocalClientId);
549+
#else
533550
// Add the server player instance to all m_ClientSidePlayerNetworkObjects entries
534551
var serverPlayerClones = Object.FindObjectsOfType<NetworkObject>().Where((c) => c.IsPlayerObject && c.OwnerClientId == m_ServerNetworkManager.LocalClientId);
552+
#endif
535553
foreach (var playerNetworkObject in serverPlayerClones)
536554
{
537555
if (!m_PlayerNetworkObjects.ContainsKey(playerNetworkObject.NetworkManager.LocalClientId))
@@ -721,7 +739,11 @@ protected virtual bool CanDestroyNetworkObject(NetworkObject networkObject)
721739
/// </summary>
722740
protected void DestroySceneNetworkObjects()
723741
{
742+
#if UNITY_2023_1_OR_NEWER
743+
var networkObjects = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID);
744+
#else
724745
var networkObjects = Object.FindObjectsOfType<NetworkObject>();
746+
#endif
725747
foreach (var networkObject in networkObjects)
726748
{
727749
// This can sometimes be null depending upon order of operations

com.unity.netcode.gameobjects/Tests/Runtime/AddNetworkPrefabTests.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,18 @@ protected override void OnServerAndClientsCreated()
4545

4646
private EmptyComponent GetObjectForClient(ulong clientId)
4747
{
48-
foreach (var component in Object.FindObjectsOfType<EmptyComponent>())
48+
#if UNITY_2023_1_OR_NEWER
49+
var emptyComponents = Object.FindObjectsByType<EmptyComponent>(FindObjectsSortMode.InstanceID);
50+
#else
51+
var emptyComponents = Object.FindObjectsOfType<EmptyComponent>();
52+
#endif
53+
foreach (var component in emptyComponents)
4954
{
5055
if (component.IsSpawned && component.NetworkManager.LocalClientId == clientId)
5156
{
5257
return component;
5358
}
5459
}
55-
5660
return null;
5761
}
5862

com.unity.netcode.gameobjects/Tests/Runtime/DeferredMessagingTests.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -271,14 +271,19 @@ private IEnumerator SpawnClients(bool clearTestDeferredMessageManagerCallFlags =
271271

272272
private T GetComponentForClient<T>(ulong clientId) where T : NetworkBehaviour
273273
{
274-
foreach (var component in Object.FindObjectsOfType<T>())
274+
#if UNITY_2023_1_OR_NEWER
275+
var componentsToFind = Object.FindObjectsByType<T>(FindObjectsSortMode.InstanceID);
276+
#else
277+
var componentsToFind = Object.FindObjectsOfType<T>();
278+
#endif
279+
280+
foreach (var component in componentsToFind)
275281
{
276282
if (component.IsSpawned && component.NetworkManager.LocalClientId == clientId)
277283
{
278284
return component;
279285
}
280286
}
281-
282287
return null;
283288
}
284289

@@ -751,7 +756,13 @@ bool HaveAllClientsSpawned()
751756
{
752757
var found1 = false;
753758
var found2 = false;
754-
foreach (var component in Object.FindObjectsOfType<DeferredMessageTestRpcComponent>())
759+
#if UNITY_2023_1_OR_NEWER
760+
var deferredMessageTestRpcComponents = Object.FindObjectsByType<DeferredMessageTestRpcComponent>(FindObjectsSortMode.None);
761+
#else
762+
var deferredMessageTestRpcComponents = Object.FindObjectsOfType<DeferredMessageTestRpcComponent>();
763+
#endif
764+
765+
foreach (var component in deferredMessageTestRpcComponents)
755766
{
756767
if (component.IsSpawned && component.NetworkManager.LocalClientId == client.LocalClientId)
757768
{

com.unity.netcode.gameobjects/Tests/Runtime/IntegrationTestExamples.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,15 @@ public IEnumerator MyFirstIntegationTest()
2929
{
3030
// Check the condition for this test and automatically handle varying processing
3131
// environments and conditions
32+
#if UNITY_2023_1_OR_NEWER
33+
yield return WaitForConditionOrTimeOut(() =>
34+
Object.FindObjectsByType<NetworkVisibilityComponent>(FindObjectsSortMode.None).Where(
35+
(c) => c.IsSpawned).Count() == 2);
36+
#else
3237
yield return WaitForConditionOrTimeOut(() =>
3338
Object.FindObjectsOfType<NetworkVisibilityComponent>().Where(
3439
(c) => c.IsSpawned).Count() == 2);
35-
40+
#endif
3641
Assert.False(s_GlobalTimeoutHelper.TimedOut, "Timed out waiting for instances " +
3742
"to be detected!");
3843
}
@@ -64,9 +69,15 @@ public IEnumerator MyFirstIntegationTest()
6469
{
6570
// Check the condition for this test and automatically handle varying processing
6671
// environments and conditions
72+
#if UNITY_2023_1_OR_NEWER
73+
yield return WaitForConditionOrTimeOut(() =>
74+
Object.FindObjectsByType<NetworkVisibilityComponent>(FindObjectsSortMode.None).Where(
75+
(c) => c.IsSpawned).Count() == 2);
76+
#else
6777
yield return WaitForConditionOrTimeOut(() =>
6878
Object.FindObjectsOfType<NetworkVisibilityComponent>().Where(
6979
(c) => c.IsSpawned).Count() == 2);
80+
#endif
7081

7182
Assert.False(s_GlobalTimeoutHelper.TimedOut, "Timed out waiting for instances " +
7283
"to be detected!");

com.unity.netcode.gameobjects/Tests/Runtime/NetworkObject/NetworkObjectNetworkClientOwnedObjectsTests.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,12 @@ public IEnumerator WhenOwnershipIsChanged_OwnershipValuesUpdateCorrectly()
8989
Assert.IsFalse(serverBehaviour.IsOwnedByServer);
9090
Assert.AreEqual(m_ClientNetworkManagers[0].LocalClientId, serverBehaviour.OwnerClientId);
9191

92+
#if UNITY_2023_1_OR_NEWER
93+
var clientObject = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID).Where((obj) => obj.NetworkManagerOwner == m_ClientNetworkManagers[0]).FirstOrDefault();
94+
#else
9295
var clientObject = Object.FindObjectsOfType<NetworkObject>().Where((obj) => obj.NetworkManagerOwner == m_ClientNetworkManagers[0]).FirstOrDefault();
96+
#endif
97+
9398

9499
Assert.IsNotNull(clientObject);
95100
Assert.IsTrue(clientObject.IsOwner);

0 commit comments

Comments
 (0)