Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
        }