Pathing considers reachability of source cells consistently.

Using the local pathfinder, you could not find a path to an unreachable destination cell, but it was possible to find a path from an unreachable source cell if there was a reachable cells adjacent to it.

The hierarchical pathfinder did not have this behaviour and considering an unreachable source cell to block attempts to find a path.

Now, we unify the pathfinders to use a consistent behaviour, allowing paths from unreachable source cells to be found.
This commit is contained in:
RoosterDragon
2022-10-25 20:23:53 +01:00
committed by abcdefg30
parent bedfa622d7
commit a85ac26367
6 changed files with 145 additions and 60 deletions

View File

@@ -211,10 +211,8 @@ namespace OpenRA.Mods.Common.Traits
bool CanEnterCell(Actor self, CPos cell)
{
if (mobile.locomotor.MovementCostForCell(cell) == PathGraph.MovementCostForUnreachableCell)
return false;
return mobile.locomotor.CanMoveFreelyInto(self, cell, BlockedByActor.All, null);
return mobile.locomotor.MovementCostToEnterCell(
self, cell, BlockedByActor.All, null) != PathGraph.MovementCostForUnreachableCell;
}
}
}