public static bool TraverseSceneGameObjects(Scene scene, bool skipCleanPrefabInstances, bool forceAllPrefabsTraverse, GameObjectTraverseCallback callback, SceneRootTraverseCallback rootTraverseCallback = null) { var rootObjects = scene.GetRootGameObjects(); return(TraverseRootGameObjects(rootObjects, skipCleanPrefabInstances, forceAllPrefabsTraverse, callback, rootTraverseCallback)); }
public static bool TraverseRootGameObjects(GameObject[] rootObjects, bool skipCleanPrefabInstances, bool forceAllPrefabsTraverse, GameObjectTraverseCallback callback, SceneRootTraverseCallback rootTraverseCallback = null) { var rootObjectsCount = rootObjects.Length; var objectTraverseInfo = new ObjectTraverseInfo(skipCleanPrefabInstances, forceAllPrefabsTraverse, rootObjectsCount); for (var i = 0; i < rootObjectsCount; i++) { var rootObject = rootObjects[i]; if (rootTraverseCallback != null) { bool canceled; rootTraverseCallback.Invoke(i, rootObjectsCount, out canceled); if (canceled) { return(false); } } objectTraverseInfo.current = rootObject; objectTraverseInfo.rootIndex = i; if (!TraverseGameObjectTree(objectTraverseInfo, callback)) { return(false); } } return(true); }