530 Commits over 120 Days - 0.18cph!
Fix video recorder crash when vulkan video fails to initialize on AMD cards
Properly cleanup resources if video or audio context creation fails at any point.
Add MovedObject patch operation, this operation tracks objects that have been reordered or moved to a different container.
Basic tests are passing now
Add complex generated GameObject diff/patch roundtrip tests
Most of them are passing, ordering seems to break sometimes
Add JsonPointer (RFC 6901) implementation and tests
Add RFC 6902 compliant JSON diffing / patch generation
Use JsonNode instad of JsonDocument in pointer
Add ApplyPatch functionality
Generate roundtrip tests
Add Test Generator for GameObject hierarchies
Remove Copy & Move operations
I can't make it work there are extremely rare edge cases for enormous diffs (thousands of objects and operations).
The code to support these edge cases was becoming more and more unhinged and illegible.
Can still tackle it later if we really need it.
Add tests for LCS
Work around .net runtime bug in Json.DeepEquals
dotnet/runtime/issues/112769
Clone/Move attempt 2
Move optimization still fails for very large diffs -> disable for now
Cleanup some debug code
Simplify Json Pointer
Object/Pattern detection in json
Smarter pattern matching; Added Patch Generation & Application
Improve handling of nested objects
Prefab Instance Overrides PoC
Remove old version of Json patch (RFC 6902)
Simplify ObjectContext collection
Revert "Mark as Dirty if physics body transform did change"
This reverts commit e493682a3343f8eed75fd50e7b437505915e64fd.
Account for more floating point imprecissions
Further, reduce goal overshooting for nav agents
Optimize crowd simulation, should be twice as fast
This mitigates the performance loss caused by enabling Collision Avoidance & Separation
Reformat Detour/Recast C# files
Mark as Dirty if physics body transform did change
Early return in PhysicsBody.Move if transform didn't change
Fix agent acceleration oscillating when reaching goal
Add Rotation.AlmostEqual
Add Transform.AlmostEqual
Only mark physics body as dirty if it actually moves
Fixes issue where navmesh areas would be rebuild unnecessarily
Accept Context Menu Event for feature tabs. Add some more validation to clipboard JSON
Fixes sbox-issues/issues/7867
Enable nav agent avoidance and separation
No idea if they have always been off or if i disabled them by accident at some point.
Get rid of float/double.Epsilon usage use more sane defaults
10^-4 for singles
10^-6 for doubles
Refactor some navmesh code, allows for less agressive locking
Spaces -> Tabs
Add some locks since this can be accessed by multiple threads
Get rid of unused ChunkyTrimesh recast code
Update recast from Facepunch/recastnavigation
Deploying to gh-pages from @ Facepunch/recastnavigation@ac22a5ce7d4c405d49604e27e4ff6d748b0d21f4 🚀
Add exit condition to raycast() if DT_BUFFER_TOO_SMALL
See recastnavigation/recastnavigation/pull/753
Deploying to gh-pages from @ Facepunch/recastnavigation@21c4a8a2bc61d89ca5f96f4a790c30e2d02f44fe 🚀
Revert "Removed unused dividePoly function see a4e1e2b"
This reverts commit ac488df6fe9a3c2575e36c4eddc5b03815891b5f.
Revert "Fix bug leading to stack smashing"
This reverts commit a4e1e2bbfc518e12fd3b582e4d4aeae9b5d81cb2.
Fix tests for triangles that only touch a cell
I am, pretty sure they started failing because of floating point precision (triangle touching cell)
Fix tests for triangles that only touch a cell
I am, pretty sure they started failing because of floating point precision (triangle touching cell)
Untangle navmesh threading, significantly reduces initial navmesh generation time.
Fix floating point precision issues in findStraigtPath
see recastnavigation/recastnavigation#515 & recastnavigation/recastnavigation#735
Fix floating point precission issues in recast pathing code
see recastnavigation/recastnavigation#515 & recastnavigation/recastnavigation#735
Fix rasterization rounding
see recastnavigation/recastnavigation#765 recastnavigation/recastnavigation#766
NavMesh only allocate debug draw buffers if we actually want to draw
Disable Navmesh generation on prefab scenes
Don't collect stats for bots
Don't recreate Inspector widget if the object is already inspected
Fixes sbox-issues/issues/7882
https://files.facepunch.com/lolleko/2025/March/17_09-35-SvelteMeerkat.mp4
Add 99.9 percentile to benchmark data collection to diagnose largest lag spikes
Also P5 and P95 while we are at it.
Rat death texture is missing, set to color for now.
Change benchmark lobbies to private
Further reduce load during navmesh benchmark
Half the amount of tiles generated per frame so the benchmark doesn't skew our graph as much.
Spaces -> Tabs
Fix Navmesh.DrawInEditor spawning 500 generation threads at the same time
Use Environment.ProcessorCount instead of ThreadPool.GetMaxThreads
Capture time needed to spawn all players as StartDuration
We are tracking frame time not FPS so we want to use P99 not P1
Hookup GCPause performance stat for benchmarks
Calculate P95, P1 and Stuttering metrics for our benchmark samples
Run deathmatch benchmark after regular benchmark (#1850)
https://files.facepunch.com/lolleko/2025/March/13_20-16-AdvancedOrangutan.mp4
Fix Curve ImmutableArrayList -> ImmutableArray change
Fix Curve ImmutableArrayList -> ImmutableArray change
Run deathmatch benchmark after regular benchmark
https://files.facepunch.com/lolleko/2025/March/13_20-16-AdvancedOrangutan.mp4