1,784 Commits over 761 Days - 0.10cph!
Potential fix for oil rig scientists hitbox issues, seemed to happen mostly on stairs with arrows because of too strict anti hack padding
- Fix crocodile dying by themselves on some seeds, was caused by them by spawn more than 20m from rivers
- Crocs spawning will now be constrained to river, but if they can't find one they won't break
- Better logging when animals despawn because they can't find a valid move destination
9x improvement on the triangle culling for heightfield bounds by making it native
Various small fixes and cleanup:
- Root the native log callback delegate in a static field (GC could collect it and crash the next DLL log)
- RebuildTilesInBounds no longer skips the default navmesh when independent navmeshes overlap the bounds (stale tiles at island/monument seams)
- IsNavMeshBuilt answers from the agent's bound navmesh with a lazy rebind instead of a fresh resolve that could disagree with every query
- Restore rustnav.debugpath / debugraycast / debugsample, ported to the NavVector3 API with proper independent navmesh space transforms and a not-built guard
- Delete dead code: GeometryUtils, NavmeshHelpers, TileExtractor (CreateBoxMesh moved into BackgroundTileBuilder), unused RecastWrapper P/Invokes pointing at removed exports, disabled MAX_BUILD_QUEUE throttle, GetOrigin, IsSprintingOnClient
- Skip MeshColliders with no sharedMesh during tile collection, bounds-check FailTile/AddTile coords
- TryOpenDoors reports whether a door actually opened (TryOpenDoorFor void -> bool)
- Null-guard RustNavigation.Instance on scene teardown, clear the stale Instance in OnDestroy
Limit nav drawing network use with kb instead of per tile, show grid again in editor, move label for tile coords to tile height
Fix scientist path success check being wrong (or instead of and)
Fix using nav samples radius always being halved because detour uses half extent
When sampling multiple potential destination around an agent, instead of snapping random points to the navmesh, floodfill around the agent and only sample on the reachable polygons
- fix 7x spike of 2.64ms on oilrig, when all points land in unreachable navmesh islands, and we waste time trying to path to them and hitting our node exploration cap every time
Fix:
- old scientists not moving at multiple locations
- animal stuck in charge stack around jungle trees
- ais getting stuck
- move without polyref log spam
- scientist crouchwalk weird angle on stairs
- slower old ais
Fix non-deterministic tests that only failed sometimes, remove extra long tests
Faster navmesh save and load, smaller save file sizes
Fix rustnav.setnumthreads bugs
Fix IsPaused collection-modified exception in RustNavMeshAgent
Fix agents getting stuck when walking exactly along a navmesh edge, dedpulicate state between currentpPolyRef and dtCorridor own polyref
Build libs for all platforms
Fix compile errors from the merge
Fix tiger charging forever at the bottom of vine trees
Use dtCorridor for path following, fix some cases where agents get wedged in a navmesh corner while steering
Fix TryBindNavmesh not updating the cached navmesh
Cache agent navmesh instead of re-resolving it each call (eg independant navmesh vs default navmesh)
Fix find closest edge not working (never worked), making scientists not actually favour covers close to walls, fix AIs getting stuck when navmesh tile is rebuilt under their feet / on their path, prevent findPath from the agent position reprojecting when we already have a valid polyref, expose polyrefs in path
Fix npcs getting stuck when navmesh tile rebuilds while they are in it or crossing it
Fix independant navmesh bounds not using the monument bounds, and always being fixed with the default values from AddComponent, fix AIs spawned before an independant navmesh is built being unable to find it
Fix cargo scientists not moving
Fix old scientists trying to steer instead of turning instantly
Fix Scientist2 on Oilrig crouchwalks upstairs at a weird angle
Fix scientists not spawning on cargo, underwater lab and military base
Fix scientists not spawning in underwater labs and cargo ships
More automated tests for croc/wolf/tiger foundation jump/destroy behaviors, fix bug where cancelled/stale tile request would delete the tile after failing
Cleanup wolf foundation jump test
Add test for wolf leap on foundation, not cleaned up yet
Rename navpos to navVector3, as it can also be a direction / delta, delete old navVector3, fix compile errors
Fix world space leak in wolf and tiger leaps, fix eqs donut potentially using uninitialized garbage nav nextPosition
Initial work to create dedicated navmesh position
Do not calculate remaining distance twice
Optimize fsm wait for navmesh
Improve npcs path following performance, fix npcs sometimes not moving
Disambiguate rust nav mesh helpers
Fix sample radius being insufficient to check if player is on navmesh
Fix leftover comment and stale dll
Also fix allocs and stack overflow in navmesh load, fix potential leak, remove debug.break