import { type PerspectiveCamera } from 'three'; import type { PlayerState } from '../core/player-state.js'; interface CameraConfig { startLat: number; startLon: number; focalLength: number; minFocalLength: number; maxFocalLength: number; isPanoramic: boolean; fovH?: number; } /** * Unified camera controller for the VR player. * * Handles: * - Mouse drag (desktop) * - Touch drag (mobile) * - Device orientation / gyroscope (mobile magic window) * - Keyboard arrow keys * - FOV zoom (scroll wheel / pinch) * * WebXR head tracking is handled by Three.js WebXRManager directly. */ export declare class CameraController { private camera; private state; private domElement; private lat; private lon; private targetLat; private targetLon; private fov; private isPanoramic; private minFov; private maxFov; private fovH; private enabled; private isDragging; private lastPointer; private deviceOrientationEnabled; private deviceAlpha; private deviceBeta; private deviceGamma; private boundHandlers; constructor(camera: PerspectiveCamera, domElement: HTMLElement, state: PlayerState, config: CameraConfig); /** Enable or disable input processing (disabled during WebXR) */ setEnabled(enabled: boolean): void; /** Switch panoramic mode at runtime (e.g. cinema overrides flat → panoramic) */ setPanoramic(panoramic: boolean): void; /** Call per frame in animation loop */ update(): void; /** Get current orientation */ getOrientation(): { lat: number; lon: number; fov: number; }; /** Set orientation programmatically */ setOrientation(lat: number, lon: number, snap?: boolean): void; /** Enable device orientation (gyroscope) */ enableDeviceOrientation(): void; /** Dispose all event listeners */ dispose(): void; private attachListeners; private addHandler; private onPointerDown; private onPointerMove; private onPointerUp; private onWheel; private onKeyDown; private applyDeviceOrientation; private updateCamera; } export {}; //# sourceMappingURL=camera-controller.d.ts.map