@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
37 lines (36 loc) • 758 B
JavaScript
;
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));
}
}
}