{
manualCameraRef.current = true;
manualDistanceRef.current = orbitControlsRef.current?.getDistance() ?? null;
}}
onChange={() => {
if (!manualCameraRef.current || manualDistanceRef.current === null || !orbitControlsRef.current) return;
const distance = orbitControlsRef.current.getDistance();
if (distance <= 0) return;
const nextScale = Math.round(clamp(viewScaleRef.current * manualDistanceRef.current / distance, 50, 250) / 5) * 5;
manualDistanceRef.current = distance;
if (nextScale !== viewScaleRef.current) {
viewScaleRef.current = nextScale;
onViewScaleChange(nextScale);
}
}}
/>
0.02}>
{cameraMode === 'follow' ? (
<>
>
) : (
)}
>
);
}
export function RocketFlightScene({ rocket, state, cameraMode, viewScale, viewScaleResetTrigger, onViewScaleChange }: RocketFlightSceneProps) {
const initialSky = useMemo(() => skyColor(0), []);
return (
);
}