UNPKG

@polygonjs/polygonjs

Version:

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

51 lines (50 loc) 1.38 kB
"use strict"; export class ScenesRegister { constructor() { this._scenes = /* @__PURE__ */ new Set(); this._registerTimeByScene = /* @__PURE__ */ new Map(); } registerScene(scene) { if (this._scenes.has(scene)) { console.warn("scene was already registered"); return; } this._scenes.add(scene); this._registerTimeByScene.set(scene, performance.now()); this._updateCache(); } deregisterScene(scene) { this._scenes.delete(scene); this._registerTimeByScene.delete(scene); this._updateCache(); } dispose() { const scenes = this.scenes(); for (const scene of scenes) { scene.dispose(); } } lastRegisteredScene() { return this._lastRegisteredScene; } scenes() { const scenes = []; this._scenes.forEach((scene) => scenes.push(scene)); return scenes; } _updateCache() { this._lastRegisteredScene = void 0; this._registerTimeByScene.forEach((registerTime, scene) => { if (this._lastRegisteredScene == void 0) { this._lastRegisteredScene = scene; } else { const lastRegisterTime = this._registerTimeByScene.get(this._lastRegisteredScene); if (registerTime != null && lastRegisterTime != null) { if (registerTime > lastRegisterTime) { this._lastRegisteredScene = scene; } } } }); } }