Rename needsVehicleTick back to isMobile, and make it always true for BaseVehicle and its subclasses (this makes it true on CardTable and Sofa unnecessarily, but better that than have it unticked by mistake elsewhere)
I investigated why snowmobiles constantly jitter but modular cars don't. Swapped parts around until I eventually determined that tall vehicles don't jitter, but short ones do. For instance, a modular car with only a flatbed would jitter, but a car with only a cockpit wouldn't, even if it used the flatbed entity script. Swapping the world colliders around made the difference. There are no bounds-based checks for vehicle physics in our code, so I looked at what Unity might set internally based on the collider setup. Rigidbody centre of mass was being set correctly, but we didn't set inertiaTensor. I've set an inertiaTensor here manually based on the one Unity calculated from a taller snowmobile, and it successfully removes the jitter. Ideally, we should do a similar solution for modular cars in case we ever add something like a low open cockpit, but I'll need to come up with a way of getting good inertia tensor values manually.
- Changed some more GetWorldVelocity calls into GetLoalVelocity, so they'll work if parented.
- Moved GetLocalVelocityServer and GetAngularVelocityServer rigidbody-based overrides into BaseVehicle, so we don't have to override with the same method for every new vehicle.