Clamps any requested playback speed (days/second) into the range this
engine can actually render with real detail — [REAL_TIME_DAYS_PER_SECOND,
MAX_DAYS_PER_SECOND]. Anything that sets a playback speed (the speed
slider, a fixture, a saved/shared session) should route through this
rather than trusting its own input directly, so MAX_HOURS_PER_SECOND
stays the actual, enforced ceiling rather than just documentation.
NaN becomes DEFAULT_DAYS_PER_SECOND; ±Infinity clamps to the range ends.
Clamps any requested playback speed (days/second) into the range this engine can actually render with real detail — [REAL_TIME_DAYS_PER_SECOND, MAX_DAYS_PER_SECOND]. Anything that sets a playback speed (the speed slider, a fixture, a saved/shared session) should route through this rather than trusting its own input directly, so MAX_HOURS_PER_SECOND stays the actual, enforced ceiling rather than just documentation. NaN becomes DEFAULT_DAYS_PER_SECOND; ±Infinity clamps to the range ends.