Repository navigation
v0.2.0
0.2.0 (2026-10-28)
Tile bytes, fingerprints, paths and velocities do not change, and no
tile format rises: tiles baked by 0.1.0 load as they are. Flow fields
change for one call sequence (see Fixed).
Added
- A misuse count on every object, read with
mnavGetNavmeshMisuse,
mnavGetQueryMisuse,mnavGetBakerMisuse,mnavGetTileCacheMisuse,
mnavGetTileIndexMisuse,mnavGetHierarchyMisuse,
mnavGetFlowFieldMisuse,mnavGetNavFlowMisuse,
mnavGetAvoidanceMisuse,mnavGetFlightBakerMisuseand
mnavGetFlightVolumeMisuse. A count rises for each call refused with
mnav_errorInvalidormnav_errorBusy, so a release build can catch
a host's bugs.
(#141,
#145,
#148)
Changed
-
Breaking: the results take the Maul family's numbering:
mnav_errorInvalid-1,mnav_errorCapacity-2,mnav_errorStale-3,
mnav_errorUnsupported-4,mnav_errorState-6,mnav_errorVersion
-7,mnav_errorFormat-8,mnav_errorLimit-9,mnav_errorBusy-10,
and maul-nav's ownmnav_errorNotLoaded-32 andmnav_errorOutside
-33. A host that stored or compared the numbers compares the names.
Some calls refuse with a different result:- A limit the caller sets (a def's limits and memory, a query's
nodes),mnavBakeLimitsandmnavFlightLimitsincluded, is
mnav_errorCapacity; it wasmnav_errorLimit. mnav_errorRangeis removed. A coordinate past the extent is
mnav_errorLimit, as is any value past a publishedMNAV_MAX_*or
MNAV_MIN_*bound.MNAV_MAX_PIECE_CORNERS,
MNAV_MAX_CLIP_CORNERS,MNAV_MAX_INDEX_ENTRIESand
MNAV_MAX_FLIGHT_VOXELSare new public bounds.- Every check on tile and flight tile bytes is
mnav_errorFormat. - A search or field not begun, not ended or out of date after a
commit, and a link read before its commit, ismnav_errorState. - A NaN is
mnav_errorInvalid. An infinity ismnav_errorLimitpast
a published bound, andmnav_errorInvalidelsewhere. mnavIsFlightOpenrefuses a point more than 2^28 voxels from the
origin, as the other flight calls do; it took up to 2^30.
(#135)
- A limit the caller sets (a def's limits and memory, a query's
-
Breaking:
mnav_errorTieris removed. A staged tile, area change
or link toggle that the navmesh's tier does not allow is refused with
mnav_errorUnsupported.
(#138) -
Breaking: host code may not call into the objects of a running
call. That is an allocator, a baker's clock or a link generation's
clearance test. Such a call is refused withmnav_errorBusywhen it
returns a status, does nothing when it returns nothing, and counts one
misuse. This holds for the object the host code serves and for the
other objects the running call uses: the baker, tile index and tile
cache of a bake or rebuild, and the context and navmesh of a
hierarchy's build or update. It also holds for the release of an
object's own memory. A clearance test or a hierarchy's allocator may
still callmnavStageTileandmnavStageTileRemoval. Before, such a
call could read freed memory.
(#141,
#145,
#147) -
Breaking: a call refused with
mnav_errorInvalidcounts one
misuse on the first object it is given. Input geometry a bake refuses
and its report names counts none.
(#148) -
Breaking: a place outside what an object covers is
mnav_errorOutside, notmnav_errorInvalid, and counts no misuse.
This covers:mnavGetHeightfor a point off the polygonmnavFlowAtandmnavNavFlowAtfor a cell or polygon outside the
field's regionmnavIsFlightOpen,mnavFindFlightPathandmnavBeginFlightPath
for a point below or above the flight volume
A host that handled these as
mnav_errorInvalidhandles
mnav_errorOutside. The outputs stay as they were, but
mnavIsFlightOpensetsopenOutto false.
(#148,
#150) -
The troubleshooting table lists the new numbering and results. The
getting-started and baking pages say what host code may call.
Fixed
- Breaking: a flow field repaired after
mnavBeginFlowFieldcut an
earlier repair short now matches a fresh build, as
mnavUpdateFlowFieldpromises. Before, cells the earlier repair had
marked could keep their old costs and next cells. Flow fields change
for that sequence only.
(#130) mnavStageLinkrefuses a link withmnav_errorLimitwhen a crossing
would take a link slot its attachment key cannot hold. This can happen
atMNAV_MAX_LINKSlinks once a slot has worn out. Before, the link
took a slot that wrapped to slot 0, and a search crossed the wrong
link or read out of bounds.
(#122)