Merge physics branch -> Vehicles. Splits Vehicle Movement layer into two layers: Vehicle World, which handles world collisions, and Vehicle Detailed, which handles bullet hits and player movement. Vehicle Movement became Vehicle Detailed, and the unused (TBC) Reflections layer became Vehicle World.
Move back from Continuous Speculative to Discrete collision detection. Way too many phantom bumps with Rust's rough terrain combined with speculative's expanded bounding box. Let's go back to getting stuck in poles for a little bit until I fix this properly with layers and a new collider set.
Increasing ConfigureVehicleSubsteps values, attempting to fix physics glitches on the server due to low timestep frequency. This does affect driving physics (hence the grip changes), and sadly also means suspension values don't always return correctly, causing wheel visuals to be slightly off. This is unavoidable barring a complete wheelcollider replacement with something custom, or keeping ConfigureVehicleSubsteps on one.
Removed old commented code re recycling chassis in ModularCarGarage. Since recycler code no longer needs to be used in multiple places, reverted it to the version from main plus my note about the "entitySource == this" client bug
TriggerParent now has two intersection mode options:
- AnyIntersect, the existing default, parents the object if any part of the object intersects any part of the trigger
- OriginIntersect parents the object if the origin of the object intersects any part of the trigger
OriginIntersect has the effect of letting us only parent players if their feet touch the trigger. Now using this on vehicle module flatbeds, so we no longer scoop up players and parent them when the vehicle runs over them.
If vehicle is destroyed while waiting for the Invoke to add a module, bail out and destroy the module. Fixes "Setting parent to entity that hasn't spawned yet! (net is null)" error (it was actually spawned, but then also destroyed)