@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
51 lines (50 loc) • 1.38 kB
JavaScript
"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;
}
}
}
});
}
}