UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

50 lines (49 loc) 1.37 kB
"use strict"; import { addToSetAtEntry } from "../../../../core/MapUtils"; import { PolyEventName } from "../../../poly/utils/PolyEventName"; export class PolySceneEvent extends Event { constructor(type) { super(type); } get type() { return super.type; } } export const SCENE_EVENT_CREATED_EVENT_CONTEXT = { event: new PolySceneEvent(PolyEventName.SCENE_CREATED) }; export const SCENE_EVENT_READY_EVENT_CONTEXT = { event: new PolySceneEvent(PolyEventName.SCENE_READY) }; export const SCENE_EVENT_PLAY_EVENT_CONTEXT = { event: new PolySceneEvent(PolyEventName.SCENE_PLAY) }; export const SCENE_EVENT_PAUSE_EVENT_CONTEXT = { event: new PolySceneEvent(PolyEventName.SCENE_PAUSE) }; export class SceneEventsController { constructor() { this._observersByEventType = /* @__PURE__ */ new Map(); } dispatch(eventContext) { const event = eventContext.event; if (!event) { return; } const set = this._observersByEventType.get(event.type); if (!set) { return; } set.forEach((node) => { node.processEvent(eventContext); }); } removeObserverFromAllEventTypes(eventNode) { this._observersByEventType.forEach((nodes, eventType) => { nodes.delete(eventNode); }); } addObserver(eventNode, eventType) { addToSetAtEntry(this._observersByEventType, eventType, eventNode); } }