UNPKG

@polygonjs/polygonjs

Version:

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

76 lines (75 loc) 2.12 kB
"use strict"; import { Poly } from "../../Poly"; import { CoreGraphNode } from "../../../core/graph/CoreGraphNode"; export class ViewersRegister { constructor(_scene) { this._scene = _scene; this._viewersById = /* @__PURE__ */ new Map(); } registerViewer(viewer) { this._viewersById.set(viewer.id(), viewer); this._updateCache(); } unregisterViewer(viewer) { this._viewersById.delete(viewer.id()); this._updateCache(); } traverseViewers(callback) { this._viewersById.forEach(callback); } viewer(options) { const createViewerOptions = { camera: options.camera, canvas: options.canvas, scene: this._scene }; return Poly.camerasRegister.createViewer(createViewerOptions); } firstViewer() { return this._firstViewer; } markViewerAsRendered(viewer) { this._lastRenderedViewer = viewer; } lastRenderedViewer() { return this._lastRenderedViewer; } _updateCache() { this._firstViewer = void 0; this._viewersById.forEach((viewer) => { this._firstViewer = this._firstViewer || viewer; }); } graphNode() { return this._graphNode = this._graphNode || this._createGraphNode(); } _createGraphNode() { const coreGraphNode = new CoreGraphNode(this._scene, "SceneViewersRegister"); return coreGraphNode; } // private _viewerWithResizeRequired: Set<string> = new Set(); markViewerAsSizeUpdated(viewer) { var _a; if (!this._viewersById.has(viewer.id())) { return; } (_a = this._graphNode) == null ? void 0 : _a.setDirty(); } // markViewerAsResizeCompleted(viewer: BaseViewerType) { // if (!this._viewersById.has(viewer.id())) { // return; // } // this._viewerWithResizeRequired.delete(viewer.id()); // } // isViewerResizeRequired(viewer: BaseViewerType) { // return this._viewerWithResizeRequired.has(viewer.id()); // } // updateViewersSize() { // this._viewerWithResizeRequired.forEach((viewerId) => { // const viewer = this._viewersById.get(viewerId); // if (viewer) { // viewer.updateSize(); // } // }); // } }