@openglobus/og
Version:
[openglobus](https://www.openglobus.org/) is a javascript/typescript library designed to display interactive 3d maps and planets with map tiles, imagery and vector data, markers, and 3D objects. It uses the WebGL technology, open source, and completely fr
111 lines (110 loc) • 3.77 kB
TypeScript
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";
interface IMouseNavigationParams extends IControlParams {
fixedUp?: boolean;
inertia?: number;
dragInertia?: number;
minSlope?: number;
mass?: number;
zoomSpeed?: number;
}
export type MouseNavigationEventsList = [
"drag",
"zoom",
"rotate"
];
/**
* Mouse navigation.
* @class
* @extends {Control}
* @param {IMouseNavigationParams} [options] - Mouse navigation options:
* @param {boolean} [options.fixedUp] - fix up at north pole
* @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.zoomSpeed] - zoom speed factor. Default is 1
* @fires og.MouseNavigation#drag
* @fires og.MouseNavigation#zoom
* @fires og.MouseNavigation#rotate
*/
export declare class MouseNavigation 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;
vel_roll: number;
force_roll: number;
events: EventsHandler<MouseNavigationEventsList>;
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 fixedUp: 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 _prevVel: Vec3;
protected _screenPosIsChanged: boolean;
protected _rotHDir: number;
protected _rotVDir: number;
constructor(options?: IMouseNavigationParams);
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;
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;
}
export {};