export default class ModuleManager { private static __instance : ModuleManager ; private __modules : Map < string , any > = new Map ( ) ; private constructor ( ) { } async loadModule ( moduleName , options ? ) { let module ; if ( moduleName . toLowerCase ( ) === 'webgl' ) { module = await import ( '../../webgl/main' ) ; } else if ( moduleName . toLowerCase ( ) === 'effekseer' ) { module = await import ( '../../effekseer/main' ) ; module . default . EffekseerComponent . wasmModuleUri = options ?. wasm ; } else if ( moduleName . toLowerCase ( ) === 'sparkgear' ) { module = await import ( '../../sparkgear/main' ) ; } else if ( moduleName . toLowerCase ( ) === 'pbr' ) { module = await import ( '../../pbr/main' ) ; } else if ( moduleName . toLowerCase ( ) === 'xr' ) { module = await import ( '../../xr/main' ) ; } this . __modules . set ( moduleName , module ) ; return module ?. default ; } getModule ( moduleName ) { return this . __modules . get ( moduleName ) ?. default ; } static getInstance ( ) { if ( ! this . __instance ) { this . __instance = new ModuleManager ( ) ; } return this . __instance ; } }