/** * Abstract base class for controls. * * @abstract * @augments EventDispatcher */ export class Controls extends EventDispatcher { /** * Constructs a new controls instance. * * @param {Object3D} object - The object that is managed by the controls. * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners. */ constructor(object: Object3D, domElement?: HTMLDOMElement | null); /** * The object that is managed by the controls. * * @type {Object3D} */ object: Object3D; /** * The HTML element used for event listeners. * * @type {?HTMLDOMElement} * @default null */ domElement: HTMLDOMElement | null; /** * Whether the controls responds to user input or not. * * @type {boolean} * @default true */ enabled: boolean; /** * The internal state of the controls. * * @type {number} * @default -1 */ state: number; /** * This object defines the keyboard input of the controls. * * @type {Object} */ keys: Object; /** * This object defines what type of actions are assigned to the available mouse buttons. * It depends on the control implementation what kind of mouse buttons and actions are supported. * * @type {{LEFT: ?number, MIDDLE: ?number, RIGHT: ?number}} */ mouseButtons: { LEFT: number | null; MIDDLE: number | null; RIGHT: number | null; }; /** * This object defines what type of actions are assigned to what kind of touch interaction. * It depends on the control implementation what kind of touch interaction and actions are supported. * * @type {{ONE: ?number, TWO: ?number}} */ touches: { ONE: number | null; TWO: number | null; }; /** * Connects the controls to the DOM. This method has so called "side effects" since * it adds the module's event listeners to the DOM. */ connect(): void; /** * Disconnects the controls from the DOM. */ disconnect(): void; /** * Call this method if you no longer want use to the controls. It frees all internal * resources and removes all event listeners. */ dispose(): void; /** * Controls should implement this method if they have to update their internal state * per simulation step. * * @param {number} [delta] - The time delta in seconds. */ update(): void; } import { EventDispatcher } from 'three';