@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
32 lines (27 loc) • 1 kB
text/typescript
import {Object3D} from 'three';
import {ConvertToStrings} from '../../../../../types/GlobalTypes';
import {BaseUserInputController} from './_BaseUserInputController';
interface PointerdownOptions {
callback: () => void;
}
export interface ObjectToPointerdownOptions {
pointerdown: PointerdownOptions;
}
export interface ObjectToPointerdownOptionsAsString {
pointerdown: ConvertToStrings<PointerdownOptions>;
}
export class PointerdownController extends BaseUserInputController {
protected override _propertiesListByObject: Map<Object3D, ObjectToPointerdownOptions[]> = new Map();
protected _intersectedStateByObject: Map<Object3D, boolean> = new Map();
onPointerdown(event: Readonly<PointerEvent | MouseEvent | TouchEvent>) {
const objects = this._objects;
for (const object of objects) {
const propertiesList = this._propertiesListByObject.get(object);
if (propertiesList) {
for (const properties of propertiesList) {
properties.pointerdown.callback();
}
}
}
}
}