Scaled frame delta in SECONDS: unscaledDeltaTime * timeScale, or 0 while paused.
Simulation time in SECONDS discarded by the substep clamp (§9, §10).
Constant simulation step size in SECONDS (Appendix A default 1/60).
Number of completed step calls (frames).
Leftover-accumulator fraction in [0, 1] used to interpolate the render pose (§10, §43).
Pause flag. Freezes the accumulator and zeroes deltaTime (§10).
Wall-clock time in SECONDS, accumulated from the injected elapsed values. Unscaled.
Presentation clock, in SECONDS: advances by deltaTime, so it slows under
timeScale and freezes while paused (§9, scaled-time domain).
Number of completed fixed simulation steps.
Deterministic physics clock, in SECONDS: advances by fixedDeltaTime per fixed step.
Simulation time scale. Preserved across pause and resume (§10).
Unscaled frame delta in SECONDS: exactly the elapsed value injected into step.
The §9 time record, verbatim in field set and order.
Every duration in this record is in SECONDS, never milliseconds. That is the one unit mistake worth guarding against:
performance.now()andrequestAnimationFrameboth hand you milliseconds, so feeding one straight intostepis the natural error, it type-checks, and it produces motion 1000x too fast rather than an exception. Each field repeats the unit because a reader meets the field, not this paragraph.The fields are writable because exactly one owner — the Scheduler — advances them. Everyone else receives the value as ReadonlyTimeState.