528 Commits over 123 Days - 0.18cph!
Modify AI debug code to not require the removal IClientComponent or IServerComponent
Add a custom version of the require component attribute that works with our IClient and IServerComponents
Add initshared and destroyshared to entityComponent
Use prefab attribute to avoid duplicating the anim list for every wolf
Allow wolves to reprioritize their target when fighting a group
Fix compile errors in server/client modes
Allow visualization of AI senses on the client via RPCs, fix wolves attacking dead players
Start setting up wolf senses
Stagger wolf when damaged a lot, instead of on every head shot
Add wolf bark before coordinated attack, add proper death state
Make fsms easier to edit by exposing them on the prefab
Reparent root motion SOs to baseScriptableObject to avoid duplicating them in bundles, remove unused animatorStateName
Allow fsm transitions to pass parameters to the destination state, use it to select different animations to play on wolf when hurt
Wrap animator into a playable, to allow playing one-shot animations without having to edit the animator every time
Allow lightweights entity components to handle RPCs
Create lightweight components that don't have the overhead of unity components
Submit navmesh display line material
Use submeshes instead of 2 separate meshes for nav triangles and nav lines
Replace calls to DDraw.Line with Graphicss.RenderMesh of a MeshTopology.Lines mesh, greatly reducing GC pressure
Reduce navmesh draw allocs again
Further optimize navmesh drawing
Optimize navmesh debug view
Complete client navmesh drawing
Make it possible for admins to see the navmesh
Add command to draw navmesh in game
Generate tiles in chunks to avoid potentialyl running out of memory on massive maps
Fix navmesh not generating properly with mesh colliders
Use more appropriate collision masks for navmesh geo gathering
Cache mesh colliders, replace lists with fpnativelists to avoid an additional copy when marshalling
Multithread filtering triangles out of tile bounds, and transforming the triangles from mesh space to world space
Fix fuel tank mesh collider not being readable
Remove some more allocations and add more profiling
Multi-thread navmesh building, making the recast side computations almost negligible
Separate navigation building steps so it's easier to multi-thread
Add option to build navmesh asynchronously, add more profile markers
Speed up navmesh generation by using arraypool instead of a massive buffer
Fix memory leak and add more profiler coverage
Add option to disable verbose log and add profiler markers, reduce gc allocs
Save and load navmesh as part of boostrap and saverestore flow, lower voxel size for tiles that only contain terrain
Display the navmesh as a mesh instead of a gizmo, remove runtime allocations
Add recast DLL with custom bindings
Make wolves more agile by making their turn radius speed independent, make the approach more interesting by adding speed and angle variations
Replace coroutine by invokes, pool the lists, also allow new montages to cancel currently playing one
Allow new wolf to deal damage and drop a corpse