Skip to content

Commit b5bff02

Browse files
update
Funneling all find object related calls into a single static method in order to simplify the current, and any future, updates/changes to FindObjectsByType.
1 parent 6c127cf commit b5bff02

25 files changed

+90
-184
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ private static void ScenesInBuildActiveSceneCheck()
9292
var activeScene = SceneManager.GetActiveScene();
9393
var isSceneInBuildSettings = scenesList.Count((c) => c.path == activeScene.path) == 1;
9494
#if UNITY_2023_1_OR_NEWER
95-
var networkManager = Object.FindFirstObjectByType<NetworkManager>();
95+
var networkManager = Object.FindAnyObjectByType<NetworkManager>();
9696
#else
9797
var networkManager = Object.FindObjectOfType<NetworkManager>();
9898
#endif
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using UnityEngine;
2+
3+
namespace Unity.Netcode
4+
{
5+
public static class FindObjects
6+
{
7+
public static T[] FindObjectsByType<T>() where T : Object
8+
{
9+
#if NGO_FINDOBJECTS_NOSORTING
10+
var results = Object.FindObjectsByType<T>();
11+
#else
12+
#if UNITY_2023_1_OR_NEWER
13+
var results = Object.FindObjectsByType<T>(FindObjectsSortMode.None);
14+
#else
15+
var results = Object.FindObjectsOfType<T>();
16+
#endif
17+
#endif
18+
return results;
19+
}
20+
21+
}
22+
}

com.unity.netcode.gameobjects/Runtime/Core/FindObjects.cs.meta

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2729,12 +2729,7 @@ internal void PopulateScenePlacedObjects(Scene sceneToFilterBy, bool clearSceneP
27292729
{
27302730
ScenePlacedObjects.Clear();
27312731
}
2732-
2733-
#if UNITY_2023_1_OR_NEWER
2734-
var networkObjects = UnityEngine.Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID);
2735-
#else
2736-
var networkObjects = UnityEngine.Object.FindObjectsOfType<NetworkObject>();
2737-
#endif
2732+
var networkObjects = FindObjects.FindObjectsByType<NetworkObject>();
27382733

27392734
// Just add every NetworkObject found that isn't already in the list
27402735
// 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: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -368,12 +368,7 @@ internal void AddDespawnedInSceneNetworkObjects()
368368
{
369369
m_DespawnedInSceneObjectsSync.Clear();
370370
// Find all active and non-active in-scene placed NetworkObjects
371-
#if UNITY_2023_1_OR_NEWER
372-
var inSceneNetworkObjects = UnityEngine.Object.FindObjectsByType<NetworkObject>(UnityEngine.FindObjectsInactive.Include, UnityEngine.FindObjectsSortMode.InstanceID).Where((c) => c.NetworkManager == m_NetworkManager);
373-
#else
374-
var inSceneNetworkObjects = UnityEngine.Object.FindObjectsOfType<NetworkObject>(includeInactive: true).Where((c) => c.NetworkManager == m_NetworkManager);
375-
376-
#endif
371+
var inSceneNetworkObjects = FindObjects.FindObjectsByType<NetworkObject>().Where((c) => c.NetworkManager == m_NetworkManager);
377372
foreach (var sobj in inSceneNetworkObjects)
378373
{
379374
if (sobj.IsSceneObject.HasValue && sobj.IsSceneObject.Value && !sobj.IsSpawned)
@@ -917,11 +912,7 @@ internal void ReadClientReSynchronizationData(FastBufferReader reader)
917912

918913
if (networkObjectsToRemove.Length > 0)
919914
{
920-
#if UNITY_2023_1_OR_NEWER
921-
var networkObjects = UnityEngine.Object.FindObjectsByType<NetworkObject>(UnityEngine.FindObjectsSortMode.InstanceID);
922-
#else
923-
var networkObjects = UnityEngine.Object.FindObjectsOfType<NetworkObject>();
924-
#endif
915+
var networkObjects = FindObjects.FindObjectsByType<NetworkObject>();
925916
var networkObjectIdToNetworkObject = new Dictionary<ulong, NetworkObject>();
926917
foreach (var networkObject in networkObjects)
927918
{
@@ -1049,14 +1040,8 @@ private void DeserializeDespawnedInScenePlacedNetworkObjects()
10491040
var objectRelativeScene = m_NetworkManager.SceneManager.ScenesLoaded[localSceneHandle];
10501041

10511042
// Find all active and non-active in-scene placed NetworkObjects
1052-
#if UNITY_2023_1_OR_NEWER
1053-
var inSceneNetworkObjects = UnityEngine.Object.FindObjectsByType<NetworkObject>(UnityEngine.FindObjectsInactive.Include, UnityEngine.FindObjectsSortMode.InstanceID).Where((c) =>
1054-
c.GetSceneOriginHandle() == localSceneHandle && (c.IsSceneObject != false)).ToList();
1055-
#else
1056-
var inSceneNetworkObjects = UnityEngine.Object.FindObjectsOfType<NetworkObject>(includeInactive: true).Where((c) =>
1043+
var inSceneNetworkObjects = FindObjects.FindObjectsByType<NetworkObject>().Where((c) =>
10571044
c.GetSceneOriginHandle() == localSceneHandle && (c.IsSceneObject != false)).ToList();
1058-
#endif
1059-
10601045

10611046
foreach (var inSceneObject in inSceneNetworkObjects)
10621047
{

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

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1369,11 +1369,7 @@ internal void DespawnObject(NetworkObject networkObject, bool destroyObject = fa
13691369
// Makes scene objects ready to be reused
13701370
internal void ServerResetShudownStateForSceneObjects()
13711371
{
1372-
#if UNITY_2023_1_OR_NEWER
1373-
var networkObjects = UnityEngine.Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID).Where((c) => c.IsSceneObject != null && c.IsSceneObject == true);
1374-
#else
1375-
var networkObjects = UnityEngine.Object.FindObjectsOfType<NetworkObject>().Where((c) => c.IsSceneObject != null && c.IsSceneObject == true);
1376-
#endif
1372+
var networkObjects = FindObjects.FindObjectsByType<NetworkObject>().Where((c) => c.IsSceneObject != null && c.IsSceneObject == true);
13771373
foreach (var sobj in networkObjects)
13781374
{
13791375
sobj.IsSpawned = false;
@@ -1404,11 +1400,7 @@ internal void ServerDestroySpawnedSceneObjects()
14041400

14051401
internal void DespawnAndDestroyNetworkObjects()
14061402
{
1407-
#if UNITY_2023_1_OR_NEWER
1408-
var networkObjects = UnityEngine.Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID);
1409-
#else
1410-
var networkObjects = UnityEngine.Object.FindObjectsOfType<NetworkObject>();
1411-
#endif
1403+
var networkObjects = FindObjects.FindObjectsByType<NetworkObject>();
14121404

14131405
for (int i = 0; i < networkObjects.Length; i++)
14141406
{
@@ -1456,11 +1448,7 @@ internal void DespawnAndDestroyNetworkObjects()
14561448

14571449
internal void DestroySceneObjects()
14581450
{
1459-
#if UNITY_2023_1_OR_NEWER
1460-
var networkObjects = UnityEngine.Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID);
1461-
#else
1462-
var networkObjects = UnityEngine.Object.FindObjectsOfType<NetworkObject>();
1463-
#endif
1451+
var networkObjects = FindObjects.FindObjectsByType<NetworkObject>();
14641452

14651453
for (int i = 0; i < networkObjects.Length; i++)
14661454
{
@@ -1491,11 +1479,7 @@ internal void DestroySceneObjects()
14911479

14921480
internal void ServerSpawnSceneObjectsOnStartSweep()
14931481
{
1494-
#if UNITY_2023_1_OR_NEWER
1495-
var networkObjects = UnityEngine.Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID);
1496-
#else
1497-
var networkObjects = UnityEngine.Object.FindObjectsOfType<NetworkObject>();
1498-
#endif
1482+
var networkObjects = FindObjects.FindObjectsByType<NetworkObject>();
14991483
var networkObjectsToSpawn = new List<NetworkObject>();
15001484
for (int i = 0; i < networkObjects.Length; i++)
15011485
{

com.unity.netcode.gameobjects/Runtime/Unity.Netcode.Runtime.asmdef

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@
8787
"name": "Unity",
8888
"expression": "6000.5.0a1",
8989
"define": "SCENE_MANAGEMENT_SCENE_HANDLE_MUST_USE_ULONG"
90+
},
91+
{
92+
"name": "Unity",
93+
"expression": "6000.4.0b5",
94+
"define": "NGO_FINDOBJECTS_NOSORTING"
9095
}
9196
],
9297
"noEngineReferences": false

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

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -278,12 +278,7 @@ private void SpawnClients(bool clearTestDeferredMessageManagerCallFlags = true)
278278

279279
private T GetComponentForClient<T>(ulong clientId) where T : NetworkBehaviour
280280
{
281-
#if UNITY_2023_1_OR_NEWER
282-
var componentsToFind = Object.FindObjectsByType<T>(FindObjectsSortMode.InstanceID);
283-
#else
284-
var componentsToFind = Object.FindObjectsOfType<T>();
285-
#endif
286-
281+
var componentsToFind = FindObjects.FindObjectsByType<T>();
287282
foreach (var component in componentsToFind)
288283
{
289284
if (component.IsSpawned && component.NetworkManager.LocalClientId == clientId)
@@ -761,11 +756,7 @@ bool HaveAllClientsSpawned()
761756
{
762757
var found1 = false;
763758
var found2 = false;
764-
#if UNITY_2023_1_OR_NEWER
765-
var deferredMessageTestRpcComponents = Object.FindObjectsByType<DeferredMessageTestRpcComponent>(FindObjectsSortMode.None);
766-
#else
767-
var deferredMessageTestRpcComponents = Object.FindObjectsOfType<DeferredMessageTestRpcComponent>();
768-
#endif
759+
var deferredMessageTestRpcComponents = FindObjects.FindObjectsByType<DeferredMessageTestRpcComponent>();
769760

770761
foreach (var component in deferredMessageTestRpcComponents)
771762
{

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

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,7 @@ 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
37-
yield return WaitForConditionOrTimeOut(() =>
38-
Object.FindObjectsOfType<NetworkVisibilityComponent>().Where(
39-
(c) => c.IsSpawned).Count() == 2);
40-
#endif
32+
yield return WaitForConditionOrTimeOut(() => FindObjects.FindObjectsByType<NetworkVisibilityComponent>().Where((c) => c.IsSpawned).Count() == 2);
4133
Assert.False(s_GlobalTimeoutHelper.TimedOut, "Timed out waiting for instances " +
4234
"to be detected!");
4335
}
@@ -69,16 +61,7 @@ public IEnumerator MyFirstIntegationTest()
6961
{
7062
// Check the condition for this test and automatically handle varying processing
7163
// 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
77-
yield return WaitForConditionOrTimeOut(() =>
78-
Object.FindObjectsOfType<NetworkVisibilityComponent>().Where(
79-
(c) => c.IsSpawned).Count() == 2);
80-
#endif
81-
64+
yield return WaitForConditionOrTimeOut(() => FindObjects.FindObjectsByType<NetworkVisibilityComponent>().Where((c) => c.IsSpawned).Count() == 2);
8265
Assert.False(s_GlobalTimeoutHelper.TimedOut, "Timed out waiting for instances " +
8366
"to be detected!");
8467
}

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

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,7 @@ public IEnumerator WhenOwnershipIsChanged_OwnershipValuesUpdateCorrectly()
7575
Assert.IsFalse(serverBehaviour.IsOwnedByServer);
7676
Assert.AreEqual(m_ClientNetworkManagers[0].LocalClientId, serverBehaviour.OwnerClientId);
7777

78-
#if UNITY_2023_1_OR_NEWER
79-
var clientObject = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID).Where((obj) => obj.NetworkManagerOwner == m_ClientNetworkManagers[0]).FirstOrDefault();
80-
#else
81-
var clientObject = Object.FindObjectsOfType<NetworkObject>().Where((obj) => obj.NetworkManagerOwner == m_ClientNetworkManagers[0]).FirstOrDefault();
82-
#endif
83-
78+
var clientObject = FindObjects.FindObjectsByType<NetworkObject>().Where((obj) => obj.NetworkManagerOwner == m_ClientNetworkManagers[0]).FirstOrDefault();
8479

8580
Assert.IsNotNull(clientObject);
8681
Assert.IsTrue(clientObject.IsOwner);

0 commit comments

Comments
 (0)