public TrailblazerPather_TwinAStar(PathfindData pathfindData) : base(pathfindData) { rraOpenSet = new Priority_Queue.FastPriorityQueue <CellRefNode>(map.Area); rraClosedSet = new Dictionary <CellRef, int>(); cellRefNodeCache = new Dictionary <CellRef, CellRefNode>(); var cellPassRules = ThatApply <CellPassabilityRule>( new CellPassabilityRule_PathGrid(pathfindData), new CellPassabilityRule_DoorByPawn(pathfindData), new CellPassabilityRule_NoPassDoors(pathfindData) ); var passRules = Enumerable.Empty <PassabilityRule>(); var cellCostRules = ThatApply <CellCostRule>( new CellCostRule_PathGrid(pathfindData), new CellCostRule_Walls(pathfindData) ); var costRules = ThatApply <CostRule>(new CostRule_MoveTicks(pathfindData)); rraPathfinderGrid = new PathfinderGrid(cellCostRules, costRules, cellPassRules, passRules); // Initialize the RRA* algorithm foreach (IntVec3 cell in pathfindData.DestRect) { CellRef cellRef = pathfindData.map.GetCellRef(cell); rraClosedSet[cellRef] = 0; rraOpenSet.Enqueue(GetNode(cellRef), 0); } }
protected TrailblazerPather(PathfindData pathfindData) { this.pathfindData = pathfindData; var cellPassRules = ThatApply(CellPassabilityRules(pathfindData)); var passRules = ThatApply(PassabilityRules(pathfindData)); var cellCostRules = ThatApply(CellCostRules(pathfindData)); var costRules = ThatApply(CostRules(pathfindData)); pathfinderGrid = new PathfinderGrid(cellCostRules, costRules, cellPassRules, passRules); }