Whether adapter implements SolverBodyTuningAccess — the
structural detection a world runs once, at construction, before it
promises anyone that a property write reaches the solver (PH-1 stage 2).
Structural for the three reasons supportsSolverJointAccess gives, and
all-or-nothing for a fourth: the alternative — six independent capability
bits — would let an adapter honour setBodyDamping and drop
setBodyMassProperties, so the engine would have to keep a per-property warn
table and RigidBody would have to consult it from six setters. Six methods
are a small enough surface that "implement the seam or do not" costs an
adapter author nothing and costs the engine one boolean.
PhysicsCapabilities.tuning (PhysicsTuningCapabilities) stays the
declaration of which §25/§32 coefficients an adapter applies at all; this
predicate answers the prior question of whether a value can be changed after
createBody.
Whether
adapterimplements SolverBodyTuningAccess — the structural detection a world runs once, at construction, before it promises anyone that a property write reaches the solver (PH-1 stage 2).Structural for the three reasons supportsSolverJointAccess gives, and all-or-nothing for a fourth: the alternative — six independent capability bits — would let an adapter honour
setBodyDampingand dropsetBodyMassProperties, so the engine would have to keep a per-property warn table andRigidBodywould have to consult it from six setters. Six methods are a small enough surface that "implement the seam or do not" costs an adapter author nothing and costs the engine one boolean.PhysicsCapabilities.tuning(PhysicsTuningCapabilities) stays the declaration of which §25/§32 coefficients an adapter applies at all; this predicate answers the prior question of whether a value can be changed aftercreateBody.