ScanLoop() 공개 메소드

public ScanLoop ( ) : IEnumerable
리턴 IEnumerable
예제 #1
0
        public override void Generate(Dungeon dungeon)
        {
            progress.Percentage = 0.0f;

            // Cleanup from last time
            foreach (var door in previousDungeonDoors)
            {
                door.OnDoorStateChanged -= OnDoorStateChanged;
            }

            previousDungeonDoors.Clear();

            // Try to find a pathfinder in the scene if one wasn't supplied
            if (PathFinder == null)
            {
                PathFinder = Component.FindObjectOfType <AstarPath>();

                if (PathFinder == null)
                {
                    Debug.LogError("DunGen can't find an A* Pathfinder script in the scene. Aborting NavMesh generation");
                    return;
                }
            }

            // Snap the bounds of any useable graph to the full bounds of the dungeon
            foreach (var graph in PathFinder.graphs)
            {
                var recast = graph as RecastGraph;

                if (recast != null)
                {
                    recast.forcedBoundsCenter = dungeon.Bounds.center;
                    recast.forcedBoundsSize   = dungeon.Bounds.size;
                }
            }

            // Rescan all graphs
#if ASTAR_PATHFINDING_VERSION_3
            PathFinder.ScanLoop(ProgressCallback);
#else
            foreach (var graph in PathFinder.graphs)
            {
                foreach (var progress in PathFinder.ScanAsync(graph))
                {
                    ProgressCallback(progress);
                }
            }
#endif

            AddDoorOpenListeners();
        }