public CellPassabilityRule_PathGrid(PathfindData pathfindData) : base(pathfindData) { edificeGrid = pathfindData.map.edificeGrid; pathGrid = pathfindData.map.pathGrid; pawn = pathfindData.traverseParms.pawn; TraverseMode mode = pathfindData.traverseParms.mode; canDestroy = mode == TraverseMode.PassAllDestroyableThings || mode == TraverseMode.PassAllDestroyableThingsNotWater; }
public static void GetMoveTicks(PathfindData pathfindData, out int moveTicksCardinal, out int moveTicksDiagonal) { if (pathfindData.traverseParms.pawn != null) { moveTicksCardinal = pathfindData.traverseParms.pawn.TicksPerMoveCardinal; moveTicksDiagonal = pathfindData.traverseParms.pawn.TicksPerMoveDiagonal; } else { moveTicksCardinal = DefaultMoveTicksCardinal; moveTicksDiagonal = DefaultMoveTicksDiagonal; } }
private static void FlashRulePassability(DebugCellPassRule rule, Pawn pawn, TraverseMode traverseMode, bool canBash) { Map map = pawn.Map; CellRef pawnPosition = map.GetCellRef(pawn.Position); TraverseParms traverseParms = TraverseParms.For(pawn, mode: traverseMode, canBash: canBash); LocalTargetInfo targetInfo = new LocalTargetInfo(pawnPosition); PathfindData pathfindData = new PathfindData(map, pawnPosition, targetInfo, traverseParms, PathEndMode.OnCell); CellPassabilityRule passRule = rule.ruleFactory.Invoke(pathfindData); if (passRule.Applies()) { foreach (IntVec3 c in map.AllCells) { float color = passRule.IsPassable(map.GetCellRef(c)) ? 0.5f : 0f; map.debugDrawer.FlashCell(c, color); } } DebugActionsUtility.DustPuffFrom(pawn); }
private static void FlashRuleCost(DebugCellCostRule rule, Pawn pawn, TraverseMode traverseMode, bool canBash) { Map map = pawn.Map; CellRef pawnPosition = map.GetCellRef(pawn.Position); TraverseParms traverseParms = TraverseParms.For(pawn, mode: traverseMode, canBash: canBash); LocalTargetInfo targetInfo = new LocalTargetInfo(pawnPosition); PathfindData pathfindData = new PathfindData(map, pawnPosition, targetInfo, traverseParms, PathEndMode.OnCell); CellCostRule costRule = rule.ruleFactory.Invoke(pathfindData); if (costRule.Applies()) { foreach (IntVec3 c in map.AllCells) { int cost = costRule.GetCost(map.GetCellRef(c)); map.debugDrawer.FlashCell(c, cost / 100f, cost.ToString()); } } DebugActionsUtility.DustPuffFrom(pawn); }
protected CostRule(PathfindData pathfindData) : base(pathfindData) { }
public CellCostRule_Doors(PathfindData pathfindData) : base(pathfindData) { edificeGrid = pathfindData.map.edificeGrid; pawn = pathfindData.traverseParms.pawn; mode = pathfindData.traverseParms.mode; }
public CellCostRule_AvoidGrid(PathfindData pathfindData) : base(pathfindData) { avoidGrid = pathfindData.traverseParms.pawn?.GetAvoidGrid(true); }
public CellCostRule_Pawns(PathfindData pathfindData) : base(pathfindData) { pawn = pathfindData.traverseParms.pawn; }
public CellPassabilityRule_NoPassDoors(PathfindData pathfindData) : base(pathfindData) { edificeGrid = pathfindData.map.edificeGrid; }
public PassabilityRule_Diagonals(PathfindData pathfindData) : base(pathfindData) { }
public CostRule_MoveTicks(PathfindData pathfindData) : base(pathfindData) { GetMoveTicks(pathfindData, out moveTicksCardinal, out moveTicksDiagonal); }
/// <summary> /// Trailblazer constructs a new version of all rules for each given pathfinding request, then queries that rule /// object for the duration of the pathfinding job. The constructor should initialize and cache as much info as /// possible to minimize the work done during pathfinding. (Only if such caching would be less work than /// calculating the data on the fly, of course) /// </summary> /// <param name="pathfindData">Path data.</param> protected Rule(PathfindData pathfindData) { this.pathfindData = pathfindData; }
public CellCostRule_AllowedArea(PathfindData pathfindData) : base(pathfindData) { allowedArea = GetAllowedArea(pathfindData.traverseParms.pawn); }
public CellPassabilityRule_DoorByPawn(PathfindData pathfindData) : base(pathfindData) { edificeGrid = pathfindData.map.edificeGrid; pawn = pathfindData.traverseParms.pawn; canBash = pathfindData.traverseParms.canBash; }
public CellCostRule_PathGrid(PathfindData pathfindData) : base(pathfindData) { pathGrid = pathfindData.map.pathGrid; terrainGrid = pathfindData.map.terrainGrid; pawnDrafted = pathfindData.traverseParms.pawn?.Drafted ?? false; }
public CellCostRule_Buildings(PathfindData pathfindData) : base(pathfindData) { edificeGrid = pathfindData.map.edificeGrid; pawn = pathfindData.traverseParms.pawn; }
/// <summary> /// Trailblazer constructs a new version of all rules for each given pathfinding request, then queries that rule /// object for the duration of the pathfinding job. The constructor should be used to perform all initialization /// that only needs to happen once per path to minimize the work done in GetConstantCost and GetCostMultiplier. /// </summary> /// <param name="pathfindData">Path data.</param> protected CellPassabilityRule(PathfindData pathfindData) : base(pathfindData) { }
public CellPassabilityRule_Water(PathfindData pathfindData) : base(pathfindData) { }
public PathfindToLocationTask(PathfindData pathfindData) { _pathfindData = pathfindData; _movementAI = new MovementAI(pathfindData.Character, new AStarPathfinding()); }
public CellCostRule_Blueprints(PathfindData pathfindData) : base(pathfindData) { blueprintGrid = pathfindData.map.blueprintGrid; pawn = pathfindData.traverseParms.pawn; }