import * as THREE from 'three'; import type {Controller} from '../../input/Controller'; import {KeyEvent, Script, SelectEvent} from '../Script'; type MaybeScript = THREE.Object3D & {isXRScript?: boolean}; export enum ScriptsManagerEventType { EXCEPTION = 'exception', } export type ScriptsManagerEventMap = THREE.Object3DEventMap & { [ScriptsManagerEventType.EXCEPTION]: { scriptName: string; context: string; error: Error; timestamp: number; }; }; export class ScriptsManager extends THREE.EventDispatcher { /** The set of all currently initialized scripts. */ scripts = new Set