Public roads: Dynamically set A* max search nodes

This commit is contained in:
Jonathan G Rennison
2023-02-26 01:51:52 +00:00
parent ff189e44e4
commit acd67a0d0b

View File

@@ -941,7 +941,6 @@ static AyStar PublicRoadAyStar()
finder.GetNeighbours = PublicRoad_GetNeighbours;
finder.EndNodeCheck = PublicRoad_EndNodeCheck;
finder.FoundEndNode = PublicRoad_FoundEndNode;
finder.max_search_nodes = 1 << 20;
return finder;
}
@@ -949,6 +948,9 @@ static bool PublicRoadFindPath(AyStar& finder, const TileIndex from, TileIndex t
{
finder.user_target = reinterpret_cast<void *>(static_cast<uintptr_t>(to));
uint distance = DistanceManhattan(from, to);
finder.max_search_nodes = Clamp<uint32>(distance * distance * 64, 1 << 10, 1 << 20);
finder.Init(1 << _public_road_hash_size);
AyStarNode start {};