gpu-curtains
Version:
gpu-curtains is a 3D WebGPU rendering engine. It can be used as a standalone 3D engine, but also includes extra classes focused on mapping 3d objects to DOM elements; It allows users to synchronize values such as position, sizing, or scale between them.
116 lines (115 loc) • 4.83 kB
TypeScript
import { Camera } from '../../core/cameras/Camera';
import { Vec3 } from '../../math/Vec3';
/** Defines the base parameters used to set / reset an {@link OrbitControls}. */
export interface OrbitControlsBaseParams {
/** The {@link Vec3 | focus point} or the {@link OrbitControls}. */
target?: Vec3;
/** Whether to allow zooming or not. */
enableZoom?: boolean;
/** Minimum zoom value to use. */
minZoom?: number;
/** Maximum zoom value to use. */
maxZoom?: number;
/** Zoom speed value to use. */
zoomSpeed?: number;
/** Whether to allow rotating or not. */
enableRotate?: boolean;
/** Minimum angle to use for vertical rotation. */
minPolarAngle?: number;
/** Maximum angle to use for vertical rotation. */
maxPolarAngle?: number;
/** Minimum angle to use for horizontal rotation. */
minAzimuthAngle?: number;
/** Maximum angle to use for horizontal rotation. */
maxAzimuthAngle?: number;
/** Rotate speed value to use. */
rotateSpeed?: number;
/** Whether to allow paning or not. */
enablePan?: boolean;
/** Pan speed value to use. */
panSpeed?: number;
}
/** Defines base parameters used to create an {@link OrbitControls}. */
export interface OrbitControlsParams extends OrbitControlsBaseParams {
/** Optional {@link Camera} to use. */
camera?: Camera;
/** Optional {@link HTMLElement} (or {@link Window} element) to use for event listeners. */
element?: HTMLElement | Window;
}
/**
* Helper to create orbit camera controls (sometimes called arc ball camera).
*
* @example
* ```javascript
* // assuming renderer is a valid CameraRenderer
* const { camera } = renderer
* const orbitControls = new OrbitControls({ camera })
* ```
*/
export declare class OrbitControls {
#private;
/** {@link Camera} to use with this {@link OrbitControls}. */
camera: Camera;
/** The {@link Vec3 | focus point} or the {@link OrbitControls}. Default to `Vec3(0)`. */
target: Vec3;
/** Whether to allow zooming or not. Default to `true`. */
enableZoom: boolean;
/** Minimum zoom value to use. Default to `0`. */
minZoom: number;
/** Maximum zoom value to use. Default to `Infinity`. */
maxZoom: number;
/** Zoom speed value to use. Default to `1`. */
zoomSpeed: number;
/** Whether to allow rotating or not. Default to `true`. */
enableRotate: boolean;
/** Minimum angle to use for vertical rotation. Default to `0`. */
minPolarAngle: number;
/** Maximum angle to use for vertical rotation. Default to `Math.PI`. */
maxPolarAngle: number;
/** Minimum angle to use for horizontal rotation. Default to `-Infinity`. */
minAzimuthAngle: number;
/** Maximum angle to use for horizontal rotation. Default to `Infinity`. */
maxAzimuthAngle: number;
/** Rotate speed value to use. Default to `1`. */
rotateSpeed: number;
/** Whether to allow paning or not. Default to `true`. */
enablePan: boolean;
/** Pan speed value to use. Default to `1`. */
panSpeed: number;
/**
* OrbitControls constructor
* @param parameters - parameters to use.
*/
constructor({ camera, element, target, enableZoom, minZoom, maxZoom, zoomSpeed, enableRotate, minPolarAngle, maxPolarAngle, minAzimuthAngle, maxAzimuthAngle, rotateSpeed, enablePan, panSpeed, }: OrbitControlsParams);
/**
* Allow to set or reset this {@link OrbitControls.camera | OrbitControls camera}.
* @param camera - New {@link OrbitControls.camera | camera} to use.
*/
useCamera(camera: Camera): void;
/**
* Reset the {@link OrbitControls} values.
* @param parameters - Parameters used to reset the values. Those are the same as {@link OrbitControlsBaseParams} with an additional position parameter to allow to override the {@link OrbitControls} position.
*/
reset({ position, target, enableZoom, minZoom, maxZoom, zoomSpeed, enableRotate, minPolarAngle, maxPolarAngle, minAzimuthAngle, maxAzimuthAngle, rotateSpeed, enablePan, panSpeed, }?: {
position?: Vec3;
} & OrbitControlsBaseParams): void;
/**
* Allow to override the {@link camera} position.
* @param position - new {@link camera} position to set.
*/
updatePosition(position?: Vec3): void;
/**
* Set the element to use for event listeners. Can remove previous event listeners first if needed.
* @param value - {@link HTMLElement} (or {@link Window} element) to use.
*/
set element(value: HTMLElement | Window | null);
/**
* Get our element to use for event listeners.
* @returns - {@link HTMLElement} (or {@link Window} element) used.
*/
get element(): HTMLElement | Window | null;
/**
* Destroy the {@link OrbitControls}.
*/
destroy(): void;
}