import { Control } from "./Control"; import type { IControlParams } from "./Control"; import type { IMouseState } from "../renderer/RendererEvents"; import { Quat } from "../math/Quat"; import { Sphere } from "../bv/Sphere"; import { Vec2 } from "../math/Vec2"; import { Vec3 } from "../math/Vec3"; import { type EventsHandler } from "../Events"; export type NavigationMode = "lockNorth" | "adaptive" | "free"; export interface INavigationParams extends IControlParams { inertia?: number; dragInertia?: number; minSlope?: number; mass?: number; zoomSpeed?: number; mode?: NavigationMode; poleThreshold?: number; disableRotation?: boolean; disableTilt?: boolean; } export type NavigationEventsList = [ "drag", "zoom", "rotate" ]; /** * Navigation. * @class * @extends {Control} * @param {INavigationParams} [options] - Navigation options: * @param {NavigationMode} [options.mode] - Navigation mode: "lockNorth" (keeps north fixed), "adaptive" (default, auto-detects arc mode), "free" (arc rotation mode) * @param {number} [options.inertia] - inertia factor * @param {number} [options.dragInertia] - drag inertia * @param {number} [options.mass] - camera mass, affects velocity. Default is 1 * @param {number} [options.minSlope] - minimal slope for vertical camera movement. Default is 0.35 * @param {number} [options.poleThreshold] - Vertical rotation is reduced when camera is close to poles * @param {boolean} [options.disableRotation] - Disables horizontal rotation controls (right mouse button and touchpad). Default is false * @param {boolean} [options.disableTilt] - Disables vertical tilt controls (right mouse button and touchpad). Default is false * @fires og.Navigation#drag * @fires og.Navigation#zoom * @fires og.Navigation#rotate */ export declare class Navigation extends Control { force: Vec3; force_h: number; force_v: number; vel: Vec3; vel_h: number; vel_v: number; mass: number; minSlope: number; inertia: number; dragInertia: number; zoomSpeed: number; poleThreshold: number; mode: number; disableRotation: boolean; disableTilt: boolean; vel_roll: number; force_roll: number; protected _freeMode: boolean; events: EventsHandler; protected _lookPos: Vec3 | undefined; protected _grabbedPoint: Vec3 | null; protected _grabbedDist: number; protected _targetZoomPoint: Vec3 | null; protected _targetDragPoint: Vec3 | null; protected _targetRotationPoint: Vec3 | null; protected _grabbedSphere: Sphere; protected _wheelDirection: number; protected _currScreenPos: Vec2; protected _tUp: Vec3; protected _tRad: number; protected _shiftBusy: boolean; protected _curPitch: number; protected _curYaw: number; protected _curRoll: number; protected _rot: Quat; protected _eye0: Vec3; protected _grabbedCameraHeight: number; protected _newEye: Vec3; protected _isTouchPad: boolean; protected _velInertia: number; protected _hold: boolean; protected _rotHDir: number; protected _rotVDir: number; constructor(options?: INavigationParams); oninit(): void; onadd(): void; onremove(): void; onactivate(): void; ondeactivate(): void; protected onDraw(): void; _onShiftFree: () => void; private _onCameraFly; protected _onMouseMove: (e: IMouseState) => void; protected _onMouseEnter: (e: IMouseState) => void; protected _onMouseLeave: () => void; protected _onRHold: (e: IMouseState) => void; protected _handleRotation(): void; protected _onRDown: (e: IMouseState) => void; protected _getTargetPoint(p: Vec2): Vec3 | null; protected _onMouseWheel: (e: IMouseState) => void; protected _onLDown: (e: IMouseState) => void; protected _onLHold: (e: IMouseState) => void; protected _onLUp: (e: IMouseState) => void; get freeMode(): boolean; setMode(mode: NavigationMode): void; protected _modeToNumber(mode: NavigationMode): number; protected _handleDrag(): void; protected _corrRoll(): void; protected _handleZoom(): void; protected _updateVel(): void; protected _updateVel_h(): void; protected _updateVel_v(): void; protected _updateVel_roll(): void; protected get dt(): number; protected get velocityInertia(): number; stop(): void; }