import { Extension } from './Extension.js'; import { Box3, Camera, OrthographicCamera, PerspectiveCamera, Vector2, Vector3 } from 'three'; import { type CameraEventPayload } from '../objects/SpeckleCamera.js'; import { CameraEvent, type SpeckleCamera } from '../objects/SpeckleCamera.js'; import { FlyControls, FlyControlsOptions } from './controls/FlyControls.js'; import { SpeckleControls } from './controls/SpeckleControls.js'; import { IViewer, SpeckleView } from '../../IViewer.js'; import { SmoothOrbitControlsOptions, SmoothOrbitControls } from './controls/SmoothOrbitControls.js'; export declare enum NearPlaneCalculation { EMPIRIC = 0, ACCURATE = 1 } export type CanonicalView = 'front' | 'back' | 'up' | 'top' | 'down' | 'bottom' | 'right' | 'left' | '3d' | '3D'; export type InlineView = { position: Vector3; target: Vector3; }; export type PolarView = { azimuth: number; polar: number; radius?: number; origin?: Vector3; }; export type CameraControllerOptions = SmoothOrbitControlsOptions & FlyControlsOptions & { nearPlaneCalculation?: NearPlaneCalculation; }; export declare function isPerspectiveCamera(camera: Camera): camera is PerspectiveCamera; export declare function isOrthographicCamera(camera: Camera): camera is OrthographicCamera; export declare function computeOrthographicSize(distance: number, fov: number, aspect: number): Vector2; export declare const DefaultOrbitControlsOptions: Required; export declare class CameraController extends Extension implements SpeckleCamera { protected _renderingCamera: PerspectiveCamera | OrthographicCamera; protected perspectiveCamera: PerspectiveCamera; protected orthographicCamera: OrthographicCamera; protected _lastCameraChanged: boolean; protected _options: Required; protected _activeControls: SpeckleControls; protected _orbitControls: SmoothOrbitControls; protected _flyControls: FlyControls; get renderingCamera(): PerspectiveCamera | OrthographicCamera; set renderingCamera(value: PerspectiveCamera | OrthographicCamera); get enabled(): boolean; set enabled(val: boolean); get fieldOfView(): number; set fieldOfView(value: number); get aspect(): number; get controls(): SpeckleControls; get options(): Required; set options(value: CameraControllerOptions); constructor(viewer: IViewer); default(): void; on(eventType: T, listener: (arg: CameraEventPayload[T]) => void): void; getTarget(): Vector3; getPosition(): Vector3; toggleControls(): void; setCameraView(objectIds: string[] | undefined, transition: boolean | undefined, fit?: number): void; setCameraView(view: CanonicalView | SpeckleView | InlineView | PolarView, transition: boolean | undefined, fit?: number): void; setCameraView(bounds: Box3, transition: boolean | undefined, fit?: number): void; onEarlyUpdate(_delta?: number): void; onLateUpdate(): void; onResize(): void; setPerspectiveCameraOn(): void; setOrthoCameraOn(): void; toggleCameras(): void; protected setupOrthoCamera(): void; protected setupPerspectiveCamera(): void; disableRotations(): void; enableRotations(): void; updateCameraPlanes(targetVolume?: Box3, offsetScale?: number): void; protected computeNearCameraPlaneEmpiric(targetVolume?: Box3, offsetScale?: number): number | undefined; protected computeNearCameraPlaneAccurate(targetVolume?: Box3, offsetScale?: number, fallback?: number): number | undefined; protected updateFarCameraPlane(): void; protected getClosestGeometryDistance(fallback?: number): number; protected zoom(objectIds?: string[], fit?: number, transition?: boolean): void; protected zoomExtents(fit?: number, transition?: boolean): void; protected zoomToBox(box: Box3, fit?: number, transition?: boolean): void; protected fitToRadius(radius: number): number; protected isSpeckleView(view: CanonicalView | SpeckleView | InlineView | PolarView): view is SpeckleView; protected isCanonicalView(view: CanonicalView | SpeckleView | InlineView | PolarView): view is CanonicalView; protected isInlineView(view: CanonicalView | SpeckleView | InlineView | PolarView): view is InlineView; protected isPolarView(view: CanonicalView | SpeckleView | InlineView | PolarView): view is PolarView; protected isBox3(view: CanonicalView | SpeckleView | InlineView | PolarView | Box3): view is Box3; protected setView(view: CanonicalView | SpeckleView | InlineView | PolarView, transition?: boolean): void; protected setViewSpeckle(view: SpeckleView, transition?: boolean): void; /** * Rotates camera to some canonical views * @param {string} side Can be any of front, back, up (top), down (bottom), right, left. * @param {Number} fit [description] * @param {Boolean} transition [description] * @return {[type]} [description] */ protected setViewCanonical(side: string, transition?: boolean): void; protected setViewInline(view: InlineView, transition?: boolean): void; private setViewPolar; }