Updates to vehicle lift repair UI, as well as UI setup for creating car locks and keys, or removing a lock. Reverted RepairBenchPanel to the version from earlier Main, and it no longer needs the Vehicle-branch changes. Protocol++.
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.
Updated all other uses of the old Vehicle Movement layer in Rust to the new dual-layer system, with separate detailed (weapons, raycasts, player movement), and world (driving, collisions - server only) layers, now called Vehicle Detailed and Vehicle World respectively:
-piano.deployed: Changed piano_collision layer from Vehicle Movement to Deployed.
-piano.deployed.static: As above.
-Compound: Changed collider layers on the piano as above.
-ball.entity: Duplicated collider into detail and world versions.
-RHIB: Duplicated collider into detail and world versions.
-Rowboat: Added WorldCollision, using Rowboat_LOD2 as a simpler and more correct mesh collider instead of Old_Boat_GM.
-minicopter.entity: Changed wheels to Vehicle World layer. Added a slightly simplified WorldCollision set.
-ScrapTransportHelicopter: Changed wheels to Vehicle World layer. Enabled the unused ConvexCollisionBody and changed it to the Vehicle World layer.
-sedan.entity: Scanned via WhatUsesThis with no results, and existing colliders are misaligned. No changes.
-sedantest.entity: Changed wheels to worldlayer. Added simplified sedan_world_collision, keeping the "boat"-style base mesh.
-foundation.steps: Changed vehicle layer to Vehicle World layer on all step types.
-CodelockedHackableCrate: Duplicated collider into detail and world versions.
-HotAirBalloon: Added simplified Vehicle World colliders for the cage. Duplicated inflated_balloon_collider to a world version.
-ChippyArcadeMachine: Added simple box collider for world collision.
-ch47.entity: Added simplified mesh collider set for world collision.
-ch47scientists.entity: As above.
-BradleyAPC.prefab: Changed wheels to Vehicle World layer. Duplicated collider_turret and collider_mainbody to world versions.
-PatrolHelicopter: Duplicated collider into detail and world versions.
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.
Switch collision detection mode to Continuous Speculative for cars. Let's eventually look at using Discrete with big blocky world-only colliders, as speculative is far from perfect. But until then this should fix both the slow-motion stops of Continuous and the getting stuck in signposts of Discrete.
Fix vehicles spinning out and sliding strangely:
- Reduced the potential deviation of the centre of mass
- Gave wheels additional sideways friction
- Added AdjustHitForces method to handle any further errant values from PhysX WheelHit results
- Increased minimum vehicle mass, increasing engine power to compensate