Run body with the active orbit controls' distance clamp temporarily widened,
restoring the previous limits afterwards (including on throw).
The clamp is re-applied on EVERY frame (runUpdateStep step 6), so the widened
window must cover the whole span in which the test looks at the result — the
placement, any waitForRenderStable, and the pixel/state sampling. Restoring
too early lets the next frame fling the camera back to the framing distance.
Pass UNCLAMPED_ORBIT_DISTANCE_LIMITS for "wherever I put it, leave it".
DEFENSIVE: the real window is [D/1000, D×10000] around the framing distance,
so most placements are decades inside it — see
UNCLAMPED_ORBIT_DISTANCE_LIMITS for the measured numbers.
THROWS when the widening could not be applied (the active controls are not
orbit-like, or their limits are not numeric). Swallowing that would run body
under the ORIGINAL clamp while the caller believed it was widened — the same
class of silent inertness as #1930.
Run
bodywith the active orbit controls' distance clamp temporarily widened, restoring the previous limits afterwards (including on throw).The clamp is re-applied on EVERY frame (
runUpdateStepstep 6), so the widened window must cover the whole span in which the test looks at the result — the placement, anywaitForRenderStable, and the pixel/state sampling. Restoring too early lets the next frame fling the camera back to the framing distance.Pass UNCLAMPED_ORBIT_DISTANCE_LIMITS for "wherever I put it, leave it". DEFENSIVE: the real window is
[D/1000, D×10000]around the framing distance, so most placements are decades inside it — see UNCLAMPED_ORBIT_DISTANCE_LIMITS for the measured numbers.THROWS when the widening could not be applied (the active controls are not orbit-like, or their limits are not numeric). Swallowing that would run
bodyunder the ORIGINAL clamp while the caller believed it was widened — the same class of silent inertness as #1930.