示例#1
0
        public static IPathfinder <IDefinitionNodeNetwork, IPathfindNodeNetwork <AstarNode>, WaypointPath> CreateAstarPathfinder(this IPathfindaxManager pathfindaxManager, IDefinitionNodeNetwork nodeNetwork, IDistanceHeuristic _heuristic, int maxClearance = -1, int amountOfThreads = 1)
        {
            var pathfinder = pathfindaxManager.CreatePathfinder(nodeNetwork, new AStarAlgorithm(nodeNetwork.NodeCount, _heuristic), (definitionNodeNetwork, algorithm, cache) =>
            {
                var nodeGenerators = new List <IPathfindNodeGenerator <AstarNode> >();
                if (definitionNodeNetwork is IDefinitionNodeGrid sourceNodeGrid)
                {
                    nodeGenerators.Add(new BrushfireClearanceGenerator(sourceNodeGrid, maxClearance));
                }
                var astarNodeNetwork = new AstarNodeNetwork(definitionNodeNetwork, nodeGenerators.ToArray());
                return(CreateRequestProcesser(astarNodeNetwork, algorithm, cache));
            }, null, amountOfThreads);

            pathfinder.Start();
            return(pathfinder);
        }
示例#2
0
 public AStarAlgorithm(int amountOfNodes, IDistanceHeuristic heuristic)
 {
     _openSet   = new IndexMinHeap <AstarNode>(amountOfNodes);
     _closedSet = new LookupArray(amountOfNodes);
     _heuristic = heuristic;
 }