Documentation
    Preparing search index...

    Interface PhysicsTuningCapabilities

    Which accepted tunables an adapter actually applies (§25, §32, §37).

    §37 fixes PhysicsCapabilities's six fields, so this is an additive seventh rather than a re-shaping of them: every field here answers for a value the stable API already accepts and validates, and whose only other possible fate is to be taken and dropped. Silent accept-and-ignore is the one outcome this repository does not allow — a coefficient a solver never reads is a simulation that differs from the one that was authored, with nothing on screen or in the log to say so — so an adapter answers here and PhysicsWorld warns once when an authored value meets an adapter that cannot honour it.

    false is not a defect: no Rapier 0.19.3 build exposes rolling or spinning friction, or any sleeping threshold (both verified against the typings and the wasm — see physics-rapier's adapter headers). It is a statement of where the value stops.

    interface PhysicsTuningCapabilities {
        jointMotorEffortCap: boolean;
        rollingFriction: boolean;
        sleepThresholds: boolean;
        spinningFriction: boolean;
    }
    Index
    jointMotorEffortCap: boolean

    Whether a §28 joint motor's maxTorque / maxForce is a hard ceiling on the effort the motor may apply (PH-22e, 2026-08-08).

    The odd one out of this record, and deliberately so: the other three answer "does this value reach the solver at all", and this one answers "does it mean what §28 says it means". Both Rapier adapters take the value — it is not dropped — and hand it to configureMotorVelocity as a ForceBased strength gain, so a motor authored with maxTorque: 50 is stronger than one authored with maxTorque: 5 but does not stall at 50 N·m. Rapier 0.19.3 exposes no motor-force ceiling in JS, so no declaration of true is available there.

    A solver whose motor limit is a genuine cap — Box2D's maxMotorTorque is the canonical one — declares true, and §90's compatibility tables then show the difference instead of burying it in an adapter's prose. This is the only member of PhysicsTuningCapabilities whose false means "applied, differently" rather than "not applied", which is why it carries its own paragraph rather than a one-line entry.

    rollingFriction: boolean

    Whether PhysicsMaterial.rollingFriction reaches the solver (§25).

    sleepThresholds: boolean

    Whether PhysicsWorldOptions.sleeping's three thresholds (linearThreshold, angularThreshold, timeThreshold) reach the solver (§32).

    SleepingConfig.enabled is deliberately not part of this: an adapter that cannot turn sleeping off can always refuse it outright, and both Rapier adapters do honour enabled (RigidBodyDesc.setCanSleep).

    spinningFriction: boolean

    Whether PhysicsMaterial.spinningFriction reaches the solver (§25).