UNPKG

@polygonjs/polygonjs

Version:

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

37 lines (36 loc) 758 B
"use strict"; export class PolyOnSceneUpdatedHooksController { constructor() { this._map = /* @__PURE__ */ new Map(); } registerHook(node, hook) { this._map.set(node, hook); this._updateCache(); } unregisterHook(node) { this._map.delete(node); this._updateCache(); } runHooks() { const hooks = this._hooks; if (!hooks) { return; } for (let hook of hooks) { hook(); } } hookedNodes() { return Array.from(this._map.keys()); } _updateCache() { if (this._map.size == 0) { this._hooks = void 0; } else { this._hooks = this._hooks || []; this._hooks.length = 0; const hooks = this._hooks; this._map.forEach((hook) => hooks.push(hook)); } } }