Skip to content

Commit 2b63003

Browse files
chore: migrating PR-2320 (FindObjectsByType) into v1.2.0 release branch (#2325)
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 4e88875 commit 2b63003

19 files changed

+166
-9
lines changed

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
@@ -442,8 +442,13 @@ private void ClientNetworkManagerPostStart(NetworkManager networkManager)
442442
m_PlayerNetworkObjects.Add(networkManager.LocalClientId, new Dictionary<ulong, NetworkObject>());
443443
}
444444

445+
#if UNITY_2023_1_OR_NEWER
446+
// Get all player instances for the current client NetworkManager instance
447+
var clientPlayerClones = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.None).Where((c) => c.IsPlayerObject && c.OwnerClientId == networkManager.LocalClientId).ToList();
448+
#else
445449
// Get all player instances for the current client NetworkManager instance
446450
var clientPlayerClones = Object.FindObjectsOfType<NetworkObject>().Where((c) => c.IsPlayerObject && c.OwnerClientId == networkManager.LocalClientId).ToList();
451+
#endif
447452
// Add this player instance to each client player entry
448453
foreach (var playerNetworkObject in clientPlayerClones)
449454
{
@@ -457,9 +462,13 @@ private void ClientNetworkManagerPostStart(NetworkManager networkManager)
457462
m_PlayerNetworkObjects[playerNetworkObject.NetworkManager.LocalClientId].Add(networkManager.LocalClientId, playerNetworkObject);
458463
}
459464
}
460-
465+
#if UNITY_2023_1_OR_NEWER
466+
// For late joining clients, add the remaining (if any) cloned versions of each client's player
467+
clientPlayerClones = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.None).Where((c) => c.IsPlayerObject && c.NetworkManager == networkManager).ToList();
468+
#else
461469
// For late joining clients, add the remaining (if any) cloned versions of each client's player
462470
clientPlayerClones = Object.FindObjectsOfType<NetworkObject>().Where((c) => c.IsPlayerObject && c.NetworkManager == networkManager).ToList();
471+
#endif
463472
foreach (var playerNetworkObject in clientPlayerClones)
464473
{
465474
if (!m_PlayerNetworkObjects[networkManager.LocalClientId].ContainsKey(playerNetworkObject.OwnerClientId))
@@ -479,7 +488,11 @@ protected void ClientNetworkManagerPostStartInit()
479488
}
480489
if (m_UseHost)
481490
{
491+
#if UNITY_2023_1_OR_NEWER
492+
var clientSideServerPlayerClones = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.None).Where((c) => c.IsPlayerObject && c.OwnerClientId == m_ServerNetworkManager.LocalClientId);
493+
#else
482494
var clientSideServerPlayerClones = Object.FindObjectsOfType<NetworkObject>().Where((c) => c.IsPlayerObject && c.OwnerClientId == m_ServerNetworkManager.LocalClientId);
495+
#endif
483496
foreach (var playerNetworkObject in clientSideServerPlayerClones)
484497
{
485498
// When the server is not the host this needs to be done
@@ -535,8 +548,13 @@ protected IEnumerator StartServerAndClients()
535548

536549
if (m_UseHost || m_ServerNetworkManager.IsHost)
537550
{
551+
#if UNITY_2023_1_OR_NEWER
552+
// Add the server player instance to all m_ClientSidePlayerNetworkObjects entries
553+
var serverPlayerClones = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.None).Where((c) => c.IsPlayerObject && c.OwnerClientId == m_ServerNetworkManager.LocalClientId);
554+
#else
538555
// Add the server player instance to all m_ClientSidePlayerNetworkObjects entries
539556
var serverPlayerClones = Object.FindObjectsOfType<NetworkObject>().Where((c) => c.IsPlayerObject && c.OwnerClientId == m_ServerNetworkManager.LocalClientId);
557+
#endif
540558
foreach (var playerNetworkObject in serverPlayerClones)
541559
{
542560
if (!m_PlayerNetworkObjects.ContainsKey(playerNetworkObject.NetworkManager.LocalClientId))
@@ -726,7 +744,11 @@ protected virtual bool CanDestroyNetworkObject(NetworkObject networkObject)
726744
/// </summary>
727745
protected void DestroySceneNetworkObjects()
728746
{
747+
#if UNITY_2023_1_OR_NEWER
748+
var networkObjects = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID);
749+
#else
729750
var networkObjects = Object.FindObjectsOfType<NetworkObject>();
751+
#endif
730752
foreach (var networkObject in networkObjects)
731753
{
732754
// 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

@@ -753,7 +758,13 @@ bool HaveAllClientsSpawned()
753758
{
754759
var found1 = false;
755760
var found2 = false;
756-
foreach (var component in Object.FindObjectsOfType<DeferredMessageTestRpcComponent>())
761+
#if UNITY_2023_1_OR_NEWER
762+
var deferredMessageTestRpcComponents = Object.FindObjectsByType<DeferredMessageTestRpcComponent>(FindObjectsSortMode.None);
763+
#else
764+
var deferredMessageTestRpcComponents = Object.FindObjectsOfType<DeferredMessageTestRpcComponent>();
765+
#endif
766+
767+
foreach (var component in deferredMessageTestRpcComponents)
757768
{
758769
if (component.IsSpawned && component.NetworkManager.LocalClientId == client.LocalClientId)
759770
{

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)