1,331 Commits over 427 Days - 0.13cph!
Tune generation param so that hires navmesh tiles have the same size as lowres ones, for easier stitching
- Speed up geometry collection (lots of culling was actually losing perf when done at scale and relying on recast chunkyMesh)
- Fix terrain gen being very low res and not respecting alpha (go back to using existing baked terrain code we were using before)
- Speed up tile rebuild
- Fix tile rebuild giving very different results from initial build
- Fix detail mesh being built but not assigned
- Add option to specify whether or not we want to build the detail mesh
- Remove sample detail mesh height param from SamplePosition (recast will always use the detail mesh if it exists anyway when sampling)
- Fix chunk bounds being incorrect
- Add option to debug sample the detail mesh height (it seems to not be working)
- Multithread in C++ instead of C# as it's simpler to avoid allocs
- Make navmesh build not generate any garbage
- Add option to sample detail navmesh height
- Tick navmesh from ServerMgr instead of letting unity decide
Replace parallel for with normal for loops as it doesn't seem possible to completely get rid of their allocation (tried caching actions, extracting state, reimplementing with tasks, unitask, threadpool... those allocate less but still do)
Remove alloc in ExtractMesh
Fix IsNavmeshBuilt returning true while navmesh is still async building
Do not reset "stopAtDestination" when end of path reached, that defeats the purpose, as we want to keep moving even after reaching the end
- Rewrite path following logic to not rely on unity's navmesh agent
- Add convar to toggle between using unity navmesh, and recast navmesh to calculate paths (only wolf, tiger, croc for now)
Add method to calculate remaining path length
- Move recast code to the rust native project
- Rust native local DLL build to test
Remove non threadsafe timeWarning from multithreaded part
- Import UniTask
- Run navmesh generation on a background thread
- Handle AiManager.nav_wait and AI.move the same way as the current DynamicNavmesh
- Fix rcExpandTileBounds not matching c++ code exactly, causing tile seams to be discontinuous
- Fix query extents being doubled when sampling
- Expose min region size to c#
- Start making editor tool to find and replace all navmesh obstacle components
Implement pathfinding iteration limit, so that paths to unreachable polys waste less budget
- Fix chunks not being correctly processed
- Add budget queue when rebuilding tiles at runtime
- Add command to test rebuild of tiles
- Fix bools not being passed from c# to c++ correctly
- Add [Out] and [In] annotations where relevant
- Expose maxNodes to c#
Add info to partial paths
Add method to find next waypoint on path in c#, will not use detour crowd for now
- Debug convar for nav trace
- tweak navgen params
- fix nav trace hit y being incorrect
- allow recast.draw to function as a toggle when used without params
- Speed up nav gen by 30% by using rust baked terrain and NavMeshBuilder.CollectSources
- Fix navmesh not taking into account terrain alpha properly
- Add nav raycast
- Update tile extractor profile markers
- Fix memory leaks with pooled list not being disposed
- Restore multithreaded navmesh building
- Increase tile poly buffer size for debug vis
- Handle mesh colliders submeshes (uncommon but possible)
Replace unity profile markers with timewarnings, add stopwatch to log build times
Add debug commands to test pathing and sampling
- Make layers and build params match what's done in game
- Add navmesh builder to ai singleton
- Make static methods that use a lot of state instance method
- Increase buffer size for nav tile rendering
- Add command to rebuild whole navmesh
- Display nav tile coords when using debug display in editor
Update pooled list renting to new API
Update protobuf deserialization of navdata
Fix scientists shooting before fully aligned to aim
Add custom voicelines to heavy when surprised, and when player shoots their armor a lot, to hint at weakspot in the back and armored front
Only delay heavy turning if surprised from behind, it looks odd pausing when the player is right in front
Fix formatting in RebindSkinnedMeshRenderer
Fix heavy scientist sometimes still turning too fast to face player or noise
Reduce heavy's magazine size and increase his reload time to create clearer opportunities for players
Make heavy scientist turn slower when surprised, to give a longer window of time to shoot his backpack and make it explode. Without this flanking is quite unrewarding.
- Fix npc looking straight at player instead of using overrideDirection when it's supplied (only an issue on client), required refactor of NPCs networking
- Fix compile errors
Sort categories and entities alphabetically in ai demos viewer
Fix heavy not repositionning when the minigun muzzle is blocked but his eyes are not
Add todo to remember accounting for ducking when estimating muzzle pos server side
Add random pitch to backpack hit sound