UNPKG

polygonjs-engine

Version:

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

41 lines (37 loc) 1.1 kB
export enum ModuleName { BasisTextureLoader = 'BasisTextureLoader', DRACOLoader = 'DRACOLoader', EXRLoader = 'EXRLoader', FBXLoader = 'FBXLoader', GLTFLoader = 'GLTFLoader', OBJLoader2 = 'OBJLoader2', PDBLoader = 'PDBLoader', PLYLoader = 'PLYLoader', RGBELoader = 'RGBELoader', TTFLoader = 'TTFLoader', SVGLoader = 'SVGLoader', } export class BaseModulesRegister { private _loaded_module_by_name: Map<ModuleName, any> = new Map(); private _promise_by_name: Map<ModuleName, Promise<object>> = new Map(); register(name: ModuleName, promise: Promise<object>) { this._promise_by_name.set(name, promise); } async module(name: ModuleName) { const loaded_module = this._loaded_module_by_name.get(name); if (loaded_module) { return loaded_module; } else { const promise = this._promise_by_name.get(name); if (promise) { const new_loaded_module = await promise; if (new_loaded_module) { this._loaded_module_by_name.set(name, new_loaded_module); return new_loaded_module; } } else { console.warn(`module ${name} not registered`); } } } }