Repository navigation
v0.4.0-preview.2
Pre-release
Pre-release
·
32 commits
to main
since this release
Added
- Grids for deterministic hosts:
Grid.CreateSearchreturns a non-generic resumableGridSearch(TryBegin,Step,CopyPath, byte-exactSaveState/RestoreState, allocation-free on the specialised engine) that returns the pathFindPathreturns;GridReplanner.TryReplan/CopyPath(no allocation);AStar.TryBegin,Topology,Start,Goal;Grid.ContentHash;Grid.TryFindNearestWalkable,CanFit,MaxAgentSizeAt;Grid.TryGetFixedCost(Q31.32) andGridPath.TryGetStepCounts; optionsSpecializedEngines(force the generic engine so tier-1 and tier-2 A* break ties alike) andNearestRadius. Documented indocs/grids.mdanddocs/grids-state.md(state kind 12). - Crowd state without allocation:
Crowd.StateHash()(FNV-1a 64 of the snapshot bytes),Crowd.GetStateSize()andCrowd.TrySaveState(Span<byte>, out int)write the same OPCS v1 bytes asSaveState()into caller memory;RestoreStaterestores the same agents without allocating (followers and corridors are read in place, so a heldAgent.Pathstays valid). Documented indocs/crowds.md.
Changed
- The run-time tile cache is no longer experimental: the
[Experimental]marker is removed fromTileCache,TileObstacle,ObstacleShape,Mesh3DPipeline.Build*CachedandMesh3DPipeline.Obstacles. An obstacle add-and-remove cycle now measures 0.78-0.93 (x64) and 0.68-0.91 (arm64) of DetourTileCache's time on the city and terraces levels. Rebuilds repair the contours of the changed layer instead of redoing them, and the result is byte-identical to a fresh build of the same state.
Fixed
- A crowd whose settings (speed, horizon, wall clearance) were huge but valid, for example restored from a saved state, could ask the wall query for a radius beyond its limit; the radius is now bounded.
- Restoring a sliced search whose open list named a node the search never reached is now a
GridStateException(it would have popped the node with stale parent links, andPathLengthcould loop). A state saved beforeBeginrestores asNotStarted; checkStatusbeforeStep. - Restoring a sliced search (
AStar, jump point, Theta*, graph A*) from a state that claimed found with a goal the search never closed could be accepted and then hang inPathLength/CopyPathby following leftover parent links in a loop; it is now aGridStateException.