402 Commits over 92 Days - 0.18cph!
Rewrite undo in position tool
Rewrite undo for all scene tree actions
Fix gameobjects not resolving correctly for undo actions
Move undo logic to editor only code
Rewrite undo for all drop objects
Remove some unused imports
Start moving away from snapshots and edit log by adding action based undos/redos
For cuts we have to use snapshots
Remove attempt at reference collector
Format
Aggregate actions now complete on mouse release
Update Test Scene
https://files.facepunch.com/lolleko/2025/January/10_18-17-TornAllosaurus.mp4
Cleanup spline component & tool naming
Base SplineModelRenderer of ModelRenderer
Allows Tint, MaterialOverrides and other options to be used on spline models
Enable Global Scale for spline models
https://files.facepunch.com/lolleko/2025/January/10_11-16-TintedAfricanparadiseflycatcher.png
Some Model Deformation optimization
Still only on the CPU but it's surprisingly fast
https://files.facepunch.com/lolleko/2025/January/09_21-39-VacantIridescentshark.mp4
Add spacing parameter
https://files.facepunch.com/lolleko/2025/January/09_23-00-AngelicVipersquid.mp4 🚂
Update Spline Collider to match new SplineModel Deformation
https://files.facepunch.com/lolleko/2025/January/09_23-59-LinearAlligator.png
Delete legacy/unused deformation code
Expose Parallel.For by wrapping it in Sandbox.Utility
More customization for tangent frames/up vectors
This is useful for stuff like loops.
1. Default Up Vector (0,0,1) -> twisting artifacts:
https://files.facepunch.com/lolleko/2025/January/09_17-52-OrangeredCowrie.png
2. Automatic up vectors using rotation minimizing frames (RMF)
https://files.facepunch.com/lolleko/2025/January/09_17-53-DesertedClam.png
3. Manual up vectors/frames:
https://files.facepunch.com/lolleko/2025/January/09_17-52-MisguidedWryneck.png
Fix damage indicator showing for local player when shooting bots
Merge branch 'main' of sbox-deathmatch
Make bots shoot at players and other bots
Add basic bots can be spawned via `bot_add <count>`
Move spline deformation away from vertex shader to allow deformation of arbitrary models
Deform spline models on the CPU like a cavemen.
Use RMF to avoid twisting artifacts.
Will move this to a compute shader eventually.
https://files.facepunch.com/lolleko/2025/January/08_10-35-AgileHectorsdolphin.png
Play around with tangent frame calculation using Parallel Transport / RMF
https://files.facepunch.com/lolleko/2025/January/07_20-51-CriminalBlackfish.mp4
Fix some NREs in spline model renderer
Binary search for accessing splines at a distance
Remove GetNormal function from spline component for now
There are so many different ways to calculate normals for splines (Frenet-Serret-Frame, Fixed Up Vector, RMF/Parallel Transport...)
Not sure yet, which one we want to offer.
Explicitly serialize & deserialize null values (#1759)
Fix missing standalone files
sbox-issues/issues/7241
Hook up IPressable.Release
Fix CI menu build for PRs
Analogue to 80a508a419578851e644fce2fa43da3debd48d9c
Merge branch 'master' into serialize-null-fields-and-props
Fix CI menu build for PRs
Analogue to 80a508a419578851e644fce2fa43da3debd48d9c
Explicitly serialize & deserialize null values
Fix spline loop (de)serialization
Add some really simple jumping animations to nav test scene
https://files.facepunch.com/lolleko/2025/January/06_17-14-NotableChanticleer.mp4
Port c++ navlink implementation to c#
Make agents aware of when they are traversing a link
Allows users to handle link traversal (e.g. by playing an animation)
Cleanup spline components and test scene
Rename some vars in spline math
Add undo for changing parent or siblings via scene tree
Fixes sbox-issues/issues/7320
Bump hitbox of spline line
Align tangent mode names with exiting curve class
Fix roll and scale changes not invoking spline changed
More spline undo improvements
Improve spline editor undo
Add missing conversion formy-up to z-up for navmesh
Added to GetClosestPoint & GetRandomPoint
Forgot to make some enums internal whoops
Move navigation from C++ to C# (#1752)
Replace C++ version of detour & detour crowd with a C# version.
Managed version should behave exactly the same as the native version.
If not, please yell at me.
Achieved by using dotrecast as base
- Refactored the shit out of it
- Optimised it, so the managed performance comes close to the native version.
Navmesh generation (recast) is still in C++.
Add Facepunch Copyright to comply with zlib license
Improve cycle detection
Format
Fix out of bounds in overlappoly
Hacky path cycle detection
Bounding box calcualtion for spline components
Add missing vectorization for some functions in Vector3 and Vector2
It was missing for Clamp, Min/Max, Lerp & Abs
Mark Rotation operator + and - as obsolete, they cause confusion and lead to invalid rotations
Closes sbox-issues/issues/7262
Make all the fun stuff internal
Prevent NavAgent/MoveTo from triggering replan if target pos is the same
Vectorize all the things.
Now comes close to native performance.
Nav Agents/Crowds & pathing are now entirely handled in c#
Get rid of some of our C# detour abstractions (agent, query), since we now have direct access in managed.
Copy over dotrecast detour and detourcrowd
Yeet IO stuff
Remove csprojs
Use our own numerics instead of recast/detour stuff
Hope I didn't make any typos while refactoring because I will regret them for all eternity.
Remove C++ version of detour and detourcrowd
Defocus input when switching spline point