based on https://github.com/TorqueGameEngines/Torque3D/pull/1165 and after further talks with @AtomicWalrus:
use the massbox or bounds box based mRigid.setObjectInertia method
to reduce recirulating, combine resolvecollision and resolvecontacts
clamp seperation force for contact resolution
gravity normalized to earth standard (9.8,not 20)
take delta-time into account *once* for kinetic energy vs gravity rest checks
and for debug purposes, expose mRigid.atRest to the inspector to see if it's truly at reast or grinding calcs to minimal effect
downshift the exposure of the entry to rigidshape so it and vehicles all have the button.
fix moving them after they've become atrest failing to apply gravity untill collided with or applyimpulse is called on them
de-duplicate vehicle networking in reguards to rigid body instance variable transmission
clustering work for datablocks for both consistent scanning for object parameters, as well as an eye towards orgainizing things to make reviewing what variations of components we'll be needing down the line clearer
utilize specialty case soundarray macros.
slim duplicate entries in vehicle already hand;ed by rigidshape.
create a gamebasedata::onnewdatablock which calls onremove and onadd for the db for those classes like wheeledvehicle that expect mounting logic to occur
Processed core, tools and default modules to utilize assets
Converted all console types that were string based, such as TypeImageFilename to utilize const char*/the string table, which avoids a lot of type swapping shenanigans and avoids string corruption
Removed unneeded MainEditor mockup module
Removed some unused/duplicate image assets from the tools
1) got rid of evey class having it's own gravity
2) rigidshape inheritance simplifications
3) gravitymod from physicszones taking buoyancy into account natively (we still track raw bouyancy to cancel it out for player)
4) disableMove used throughout
5) items can now also be influenced by the appliedforce from physicszones
Makes vehicles create a basic physics body when using one of the physics plugins so that they can collide with other physics-enabled objects.
Based on @rextimmy 's work.
cleaned a few, but by no means all redundancies.
DO NOTE THE FOLLOWING:
ShapeBase::processTick(move);
ShapeBase::interpolateTick(dt);
to avoid side effects for now. properly those would be retooled down the line to be more inheritance-friendly.
steeringReturn is the main control for the amount of return in
the steering. Setting it to 0 (the default) disables steering return
completely.
steeringReturnSpeedScale is a multiplier on the amount of effect that
the vehicle's velocity has on its steering return.
powerSteering can be set to eliminate the effect of steering return on
user input. Without this flag set, the user will have a harder time
steering, because the wheels try to return as they steer. If this flag
is set, steering return will not be applied while the user is actually
steering, only when they release.