UNPKG

@polygonjs/polygonjs

Version:

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

21 lines (16 loc) 704 B
import {Camera} from 'three'; import {TypedViewer} from '../../engine/viewers/_Base'; type ViewerCreateCallback<C extends Camera> = (camera: C) => TypedViewer<C>; export class CoreViewerController { private _registeredViewerCreateCallbackByCamera: Map<Camera, ViewerCreateCallback<Camera>> = new Map(); constructor() {} register<C extends Camera>(cameraClass: any, viewerCreateCallback: ViewerCreateCallback<any>) { this._registeredViewerCreateCallbackByCamera.set(cameraClass, viewerCreateCallback); } createViewer<C extends Camera>(camera: any) { const callback = this._registeredViewerCreateCallbackByCamera.get(camera.constructor); if (callback) { return callback(camera); } } }