Whether animation is currently playing
Target FPS for animation
Loop behavior (once, loop, bounce)
Current animation direction
When the next playback tick is due (a performance.now() timestamp).
Advanced by one period per tick, so the cadence holds the target rate
instead of drifting by a vsync per tick; resynced after a stall.
Frame counter for FPS measurement
Time of last FPS measurement
Measured actual FPS (may differ from target)
Playback "detail": how deep every frame's additive ladder is loaded while
this dimension plays (and scrubs). A number pins that many rungs
(Infinity = the whole ladder); 'auto' pins each ladder at the first rung
whose cumulative energy reaches config.dimensionAnimation.playback.autoEnergyThreshold
(an unstamped ladder stays time-budgeted); null streams whatever is
resident within the tick ("Fast"). Threaded to the progressive loaders as
ViewState.ladderDepth.
Explicit per-tick step size in dimension units; null = Auto (continuous dims derive the increment from fps + the range-traversal time, discrete dims use their authored step). Also consumed by the [ / ] keyboard navigation. Deliberately NOT consumed by the slider wheel/drag — hand stepping stays on the dimension's own base step.
Animation state for a single dimension