@babylonjs/viewer 7.41.0-alpha → 7.41.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/configuration/configuration.d.ts +107 -0
- package/configuration/configuration.js +16 -0
- package/configuration/configuration.js.map +1 -0
- package/configuration/configurationCompatibility.d.ts +8 -0
- package/configuration/configurationCompatibility.js +66 -0
- package/configuration/configurationCompatibility.js.map +1 -0
- package/configuration/configurationContainer.d.ts +10 -0
- package/configuration/configurationContainer.js +10 -0
- package/configuration/configurationContainer.js.map +1 -0
- package/configuration/globals.d.ts +6 -0
- package/configuration/globals.js +18 -0
- package/configuration/globals.js.map +1 -0
- package/configuration/index.d.ts +2 -0
- package/configuration/index.js +4 -0
- package/configuration/index.js.map +1 -0
- package/configuration/interfaces/cameraConfiguration.d.ts +31 -0
- package/configuration/interfaces/cameraConfiguration.js +2 -0
- package/configuration/interfaces/cameraConfiguration.js.map +1 -0
- package/configuration/interfaces/colorGradingConfiguration.d.ts +81 -0
- package/configuration/interfaces/colorGradingConfiguration.js +2 -0
- package/configuration/interfaces/colorGradingConfiguration.js.map +1 -0
- package/configuration/interfaces/defaultRenderingPipelineConfiguration.d.ts +20 -0
- package/configuration/interfaces/defaultRenderingPipelineConfiguration.js +2 -0
- package/configuration/interfaces/defaultRenderingPipelineConfiguration.js.map +1 -0
- package/configuration/interfaces/environmentMapConfiguration.d.ts +22 -0
- package/configuration/interfaces/environmentMapConfiguration.js +2 -0
- package/configuration/interfaces/environmentMapConfiguration.js.map +1 -0
- package/configuration/interfaces/groundConfiguration.d.ts +24 -0
- package/configuration/interfaces/groundConfiguration.js +2 -0
- package/configuration/interfaces/groundConfiguration.js.map +1 -0
- package/configuration/interfaces/imageProcessingConfiguration.d.ts +45 -0
- package/configuration/interfaces/imageProcessingConfiguration.js +2 -0
- package/configuration/interfaces/imageProcessingConfiguration.js.map +1 -0
- package/configuration/interfaces/index.d.ts +15 -0
- package/configuration/interfaces/index.js +16 -0
- package/configuration/interfaces/index.js.map +1 -0
- package/configuration/interfaces/lightConfiguration.d.ts +60 -0
- package/configuration/interfaces/lightConfiguration.js +2 -0
- package/configuration/interfaces/lightConfiguration.js.map +1 -0
- package/configuration/interfaces/modelAnimationConfiguration.d.ts +26 -0
- package/configuration/interfaces/modelAnimationConfiguration.js +2 -0
- package/configuration/interfaces/modelAnimationConfiguration.js.map +1 -0
- package/configuration/interfaces/modelConfiguration.d.ts +65 -0
- package/configuration/interfaces/modelConfiguration.js +2 -0
- package/configuration/interfaces/modelConfiguration.js.map +1 -0
- package/configuration/interfaces/observersConfiguration.d.ts +5 -0
- package/configuration/interfaces/observersConfiguration.js +2 -0
- package/configuration/interfaces/observersConfiguration.js.map +1 -0
- package/configuration/interfaces/sceneConfiguration.d.ts +48 -0
- package/configuration/interfaces/sceneConfiguration.js +2 -0
- package/configuration/interfaces/sceneConfiguration.js.map +1 -0
- package/configuration/interfaces/sceneOptimizerConfiguration.d.ts +23 -0
- package/configuration/interfaces/sceneOptimizerConfiguration.js +2 -0
- package/configuration/interfaces/sceneOptimizerConfiguration.js.map +1 -0
- package/configuration/interfaces/skyboxConfiguration.d.ts +21 -0
- package/configuration/interfaces/skyboxConfiguration.js +2 -0
- package/configuration/interfaces/skyboxConfiguration.js.map +1 -0
- package/configuration/interfaces/templateConfiguration.d.ts +67 -0
- package/configuration/interfaces/templateConfiguration.js +2 -0
- package/configuration/interfaces/templateConfiguration.js.map +1 -0
- package/configuration/interfaces/vrConfiguration.d.ts +16 -0
- package/configuration/interfaces/vrConfiguration.js +2 -0
- package/configuration/interfaces/vrConfiguration.js.map +1 -0
- package/configuration/loader.d.ts +4 -0
- package/configuration/loader.js +17 -0
- package/configuration/loader.js.map +1 -0
- package/configuration/mappers.d.ts +43 -0
- package/configuration/mappers.js +193 -0
- package/configuration/mappers.js.map +1 -0
- package/configuration/renderOnlyLoader.d.ts +33 -0
- package/configuration/renderOnlyLoader.js +162 -0
- package/configuration/renderOnlyLoader.js.map +1 -0
- package/configuration/types/default.d.ts +6 -0
- package/configuration/types/default.js +121 -0
- package/configuration/types/default.js.map +1 -0
- package/configuration/types/environmentMap.d.ts +5 -0
- package/configuration/types/environmentMap.js +14 -0
- package/configuration/types/environmentMap.js.map +1 -0
- package/configuration/types/extended.d.ts +6 -0
- package/configuration/types/extended.js +317 -0
- package/configuration/types/extended.js.map +1 -0
- package/configuration/types/index.d.ts +14 -0
- package/configuration/types/index.js +51 -0
- package/configuration/types/index.js.map +1 -0
- package/configuration/types/minimal.d.ts +6 -0
- package/configuration/types/minimal.js +43 -0
- package/configuration/types/minimal.js.map +1 -0
- package/configuration/types/renderOnlyDefault.d.ts +30 -0
- package/configuration/types/renderOnlyDefault.js +31 -0
- package/configuration/types/renderOnlyDefault.js.map +1 -0
- package/configuration/types/shadowLight.d.ts +9 -0
- package/configuration/types/shadowLight.js +64 -0
- package/configuration/types/shadowLight.js.map +1 -0
- package/helper/index.d.ts +29 -0
- package/helper/index.js +66 -0
- package/helper/index.js.map +1 -0
- package/index.d.ts +30 -0
- package/index.js +46 -0
- package/index.js.map +1 -0
- package/initializer.d.ts +11 -0
- package/initializer.js +35 -0
- package/initializer.js.map +1 -0
- package/interfaces.d.ts +5 -0
- package/interfaces.js +7 -0
- package/interfaces.js.map +1 -0
- package/labs/environmentSerializer.d.ts +126 -0
- package/labs/environmentSerializer.js +191 -0
- package/labs/environmentSerializer.js.map +1 -0
- package/labs/texture.d.ts +183 -0
- package/labs/texture.js +351 -0
- package/labs/texture.js.map +1 -0
- package/labs/viewerLabs.d.ts +51 -0
- package/labs/viewerLabs.js +134 -0
- package/labs/viewerLabs.js.map +1 -0
- package/loader/modelLoader.d.ts +56 -0
- package/loader/modelLoader.js +202 -0
- package/loader/modelLoader.js.map +1 -0
- package/loader/plugins/applyMaterialConfig.d.ts +12 -0
- package/loader/plugins/applyMaterialConfig.js +16 -0
- package/loader/plugins/applyMaterialConfig.js.map +1 -0
- package/loader/plugins/extendedMaterialLoaderPlugin.d.ts +9 -0
- package/loader/plugins/extendedMaterialLoaderPlugin.js +16 -0
- package/loader/plugins/extendedMaterialLoaderPlugin.js.map +1 -0
- package/loader/plugins/index.d.ts +19 -0
- package/loader/plugins/index.js +44 -0
- package/loader/plugins/index.js.map +1 -0
- package/loader/plugins/loaderPlugin.d.ts +24 -0
- package/loader/plugins/loaderPlugin.js +2 -0
- package/loader/plugins/loaderPlugin.js.map +1 -0
- package/loader/plugins/msftLodLoaderPlugin.d.ts +12 -0
- package/loader/plugins/msftLodLoaderPlugin.js +21 -0
- package/loader/plugins/msftLodLoaderPlugin.js.map +1 -0
- package/loader/plugins/telemetryLoaderPlugin.d.ts +12 -0
- package/loader/plugins/telemetryLoaderPlugin.js +36 -0
- package/loader/plugins/telemetryLoaderPlugin.js.map +1 -0
- package/managers/observablesManager.d.ts +66 -0
- package/managers/observablesManager.js +35 -0
- package/managers/observablesManager.js.map +1 -0
- package/managers/sceneManager.d.ts +245 -0
- package/managers/sceneManager.js +1375 -0
- package/managers/sceneManager.js.map +1 -0
- package/managers/telemetryManager.d.ts +78 -0
- package/managers/telemetryManager.js +117 -0
- package/managers/telemetryManager.js.map +1 -0
- package/model/modelAnimation.d.ts +215 -0
- package/model/modelAnimation.js +237 -0
- package/model/modelAnimation.js.map +1 -0
- package/model/viewerModel.d.ts +233 -0
- package/model/viewerModel.js +673 -0
- package/model/viewerModel.js.map +1 -0
- package/optimizer/custom/extended.d.ts +13 -0
- package/optimizer/custom/extended.js +101 -0
- package/optimizer/custom/extended.js.map +1 -0
- package/optimizer/custom/index.d.ts +9 -0
- package/optimizer/custom/index.js +26 -0
- package/optimizer/custom/index.js.map +1 -0
- package/package.json +28 -19
- package/readme.md +28 -28
- package/renderOnlyIndex.d.ts +11 -0
- package/renderOnlyIndex.js +18 -0
- package/renderOnlyIndex.js.map +1 -0
- package/templating/eventManager.d.ts +35 -0
- package/templating/eventManager.js +66 -0
- package/templating/eventManager.js.map +1 -0
- package/templating/plugins/hdButtonPlugin.d.ts +9 -0
- package/templating/plugins/hdButtonPlugin.js +22 -0
- package/templating/plugins/hdButtonPlugin.js.map +1 -0
- package/templating/plugins/printButton.d.ts +9 -0
- package/templating/plugins/printButton.js +41 -0
- package/templating/plugins/printButton.js.map +1 -0
- package/templating/templateManager.d.ts +197 -0
- package/templating/templateManager.js +561 -0
- package/templating/templateManager.js.map +1 -0
- package/templating/viewerTemplatePlugin.d.ts +21 -0
- package/templating/viewerTemplatePlugin.js +69 -0
- package/templating/viewerTemplatePlugin.js.map +1 -0
- package/viewer/defaultViewer.d.ts +130 -0
- package/viewer/defaultViewer.js +672 -0
- package/viewer/defaultViewer.js.map +1 -0
- package/viewer/renderOnlyViewer.d.ts +9 -0
- package/viewer/renderOnlyViewer.js +46 -0
- package/viewer/renderOnlyViewer.js.map +1 -0
- package/viewer/viewer.d.ts +258 -0
- package/viewer/viewer.js +783 -0
- package/viewer/viewer.js.map +1 -0
- package/viewer/viewerManager.d.ts +58 -0
- package/viewer/viewerManager.js +91 -0
- package/viewer/viewerManager.js.map +1 -0
- package/viewer/viewerWithTemplate.d.ts +9 -0
- package/viewer/viewerWithTemplate.js +20 -0
- package/viewer/viewerWithTemplate.js.map +1 -0
- package/assets/photoStudio.env +0 -0
- package/dist/babylon-viewer.esm.js +0 -2
- package/dist/babylon-viewer.esm.js.map +0 -1
- package/dist/babylon-viewer.esm.min.js +0 -2
- package/dist/babylon-viewer.esm.min.js.map +0 -1
- package/dist/chunks/EXT_lights_ies-CFzvmxxg.esm.min.js +0 -2
- package/dist/chunks/EXT_lights_ies-CFzvmxxg.esm.min.js.map +0 -1
- package/dist/chunks/EXT_lights_ies-cyFdY7yl.esm.js +0 -84
- package/dist/chunks/EXT_lights_ies-cyFdY7yl.esm.js.map +0 -1
- package/dist/chunks/EXT_lights_image_based-BNmSqx40.esm.min.js +0 -2
- package/dist/chunks/EXT_lights_image_based-BNmSqx40.esm.min.js.map +0 -1
- package/dist/chunks/EXT_lights_image_based-CC48JVU0.esm.js +0 -171
- package/dist/chunks/EXT_lights_image_based-CC48JVU0.esm.js.map +0 -1
- package/dist/chunks/EXT_mesh_gpu_instancing-B2qj3kQu.esm.js +0 -86
- package/dist/chunks/EXT_mesh_gpu_instancing-B2qj3kQu.esm.js.map +0 -1
- package/dist/chunks/EXT_mesh_gpu_instancing-lanrAAoi.esm.min.js +0 -2
- package/dist/chunks/EXT_mesh_gpu_instancing-lanrAAoi.esm.min.js.map +0 -1
- package/dist/chunks/EXT_meshopt_compression-DjvHx7gJ.esm.js +0 -134
- package/dist/chunks/EXT_meshopt_compression-DjvHx7gJ.esm.js.map +0 -1
- package/dist/chunks/EXT_meshopt_compression-oH6HzGir.esm.min.js +0 -2
- package/dist/chunks/EXT_meshopt_compression-oH6HzGir.esm.min.js.map +0 -1
- package/dist/chunks/EXT_texture_avif-BYWETW7-.esm.min.js +0 -2
- package/dist/chunks/EXT_texture_avif-BYWETW7-.esm.min.js.map +0 -1
- package/dist/chunks/EXT_texture_avif-CKXEq29h.esm.js +0 -44
- package/dist/chunks/EXT_texture_avif-CKXEq29h.esm.js.map +0 -1
- package/dist/chunks/EXT_texture_webp-Dl4GPoEU.esm.min.js +0 -2
- package/dist/chunks/EXT_texture_webp-Dl4GPoEU.esm.min.js.map +0 -1
- package/dist/chunks/EXT_texture_webp-fAiSgaNl.esm.js +0 -43
- package/dist/chunks/EXT_texture_webp-fAiSgaNl.esm.js.map +0 -1
- package/dist/chunks/ExtrasAsMetadata-BUQ3X3M6.esm.js +0 -64
- package/dist/chunks/ExtrasAsMetadata-BUQ3X3M6.esm.js.map +0 -1
- package/dist/chunks/ExtrasAsMetadata-C_M9nxb4.esm.min.js +0 -2
- package/dist/chunks/ExtrasAsMetadata-C_M9nxb4.esm.min.js.map +0 -1
- package/dist/chunks/KHR_animation_pointer-BdFZyLUq.esm.js +0 -352
- package/dist/chunks/KHR_animation_pointer-BdFZyLUq.esm.js.map +0 -1
- package/dist/chunks/KHR_animation_pointer-CBqZcURZ.esm.min.js +0 -2
- package/dist/chunks/KHR_animation_pointer-CBqZcURZ.esm.min.js.map +0 -1
- package/dist/chunks/KHR_draco_mesh_compression-DU2Rk2nj.esm.min.js +0 -2
- package/dist/chunks/KHR_draco_mesh_compression-DU2Rk2nj.esm.min.js.map +0 -1
- package/dist/chunks/KHR_draco_mesh_compression-hVF9XuFz.esm.js +0 -610
- package/dist/chunks/KHR_draco_mesh_compression-hVF9XuFz.esm.js.map +0 -1
- package/dist/chunks/KHR_interactivity-COE1p684.esm.min.js +0 -2
- package/dist/chunks/KHR_interactivity-COE1p684.esm.min.js.map +0 -1
- package/dist/chunks/KHR_interactivity-Cv1s_pea.esm.js +0 -4033
- package/dist/chunks/KHR_interactivity-Cv1s_pea.esm.js.map +0 -1
- package/dist/chunks/KHR_lights_punctual-CHf5kbKi.esm.js +0 -581
- package/dist/chunks/KHR_lights_punctual-CHf5kbKi.esm.js.map +0 -1
- package/dist/chunks/KHR_lights_punctual-DIEAP5SG.esm.min.js +0 -2
- package/dist/chunks/KHR_lights_punctual-DIEAP5SG.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_anisotropy-CU-xxV6y.esm.js +0 -65
- package/dist/chunks/KHR_materials_anisotropy-CU-xxV6y.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_anisotropy-Cq6CU4qW.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_anisotropy-Cq6CU4qW.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_clearcoat-BSjcmIju.esm.js +0 -96
- package/dist/chunks/KHR_materials_clearcoat-BSjcmIju.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_clearcoat-CVNNhJRE.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_clearcoat-CVNNhJRE.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_diffuse_transmission-BDuGIkOh.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_diffuse_transmission-BDuGIkOh.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_diffuse_transmission-BZ-9rJUf.esm.js +0 -97
- package/dist/chunks/KHR_materials_diffuse_transmission-BZ-9rJUf.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_dispersion-BxiGElVU.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_dispersion-BxiGElVU.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_dispersion-UI4zH1V_.esm.js +0 -62
- package/dist/chunks/KHR_materials_dispersion-UI4zH1V_.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_emissive_strength-BT-Nu60T.esm.js +0 -55
- package/dist/chunks/KHR_materials_emissive_strength-BT-Nu60T.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_emissive_strength-CwkVNmN7.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_emissive_strength-CwkVNmN7.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_ior-BGUUe5AW.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_ior-BGUUe5AW.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_ior-BbBQF-yw.esm.js +0 -64
- package/dist/chunks/KHR_materials_ior-BbBQF-yw.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_iridescence-IFN2ewvr.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_iridescence-IFN2ewvr.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_iridescence-nLZDN7sc.esm.js +0 -72
- package/dist/chunks/KHR_materials_iridescence-nLZDN7sc.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-CyNVQC-W.esm.js +0 -81
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-CyNVQC-W.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-zxcydJdp.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-zxcydJdp.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_sheen-BWL9yo8Z.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_sheen-BWL9yo8Z.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_sheen-DSThWwq2.esm.js +0 -85
- package/dist/chunks/KHR_materials_sheen-DSThWwq2.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_specular-B96NRFEV.esm.js +0 -75
- package/dist/chunks/KHR_materials_specular-B96NRFEV.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_specular-D2JwOdxw.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_specular-D2JwOdxw.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_transmission-BvqtJXfD.esm.js +0 -307
- package/dist/chunks/KHR_materials_transmission-BvqtJXfD.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_transmission-ljXN4y_0.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_transmission-ljXN4y_0.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_unlit-CjGTXU3z.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_unlit-CjGTXU3z.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_unlit-ww00IloC.esm.js +0 -74
- package/dist/chunks/KHR_materials_unlit-ww00IloC.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_variants-D0pVU1lm.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_variants-D0pVU1lm.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_variants-D3IDOJfB.esm.js +0 -262
- package/dist/chunks/KHR_materials_variants-D3IDOJfB.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_volume-BfZR8rbr.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_volume-BfZR8rbr.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_volume-CLkC_Bvi.esm.js +0 -87
- package/dist/chunks/KHR_materials_volume-CLkC_Bvi.esm.js.map +0 -1
- package/dist/chunks/KHR_mesh_quantization-BJv1P2Wt.esm.js +0 -26
- package/dist/chunks/KHR_mesh_quantization-BJv1P2Wt.esm.js.map +0 -1
- package/dist/chunks/KHR_mesh_quantization-D69X_5bR.esm.min.js +0 -2
- package/dist/chunks/KHR_mesh_quantization-D69X_5bR.esm.min.js.map +0 -1
- package/dist/chunks/KHR_node_hoverability-CG6s7hhs.esm.min.js +0 -2
- package/dist/chunks/KHR_node_hoverability-CG6s7hhs.esm.min.js.map +0 -1
- package/dist/chunks/KHR_node_hoverability-xgvyZ_r-.esm.js +0 -39
- package/dist/chunks/KHR_node_hoverability-xgvyZ_r-.esm.js.map +0 -1
- package/dist/chunks/KHR_node_visibility-DUozjXRR.esm.min.js +0 -2
- package/dist/chunks/KHR_node_visibility-DUozjXRR.esm.min.js.map +0 -1
- package/dist/chunks/KHR_node_visibility-aAs5Kkey.esm.js +0 -46
- package/dist/chunks/KHR_node_visibility-aAs5Kkey.esm.js.map +0 -1
- package/dist/chunks/KHR_texture_basisu-Bjw0jG1d.esm.js +0 -43
- package/dist/chunks/KHR_texture_basisu-Bjw0jG1d.esm.js.map +0 -1
- package/dist/chunks/KHR_texture_basisu-FWm46QOj.esm.min.js +0 -2
- package/dist/chunks/KHR_texture_basisu-FWm46QOj.esm.min.js.map +0 -1
- package/dist/chunks/KHR_texture_transform-BZYr2brj.esm.min.js +0 -2
- package/dist/chunks/KHR_texture_transform-BZYr2brj.esm.min.js.map +0 -1
- package/dist/chunks/KHR_texture_transform-DdsN6SA_.esm.js +0 -63
- package/dist/chunks/KHR_texture_transform-DdsN6SA_.esm.js.map +0 -1
- package/dist/chunks/KHR_xmp_json_ld-DhFD64vh.esm.min.js +0 -2
- package/dist/chunks/KHR_xmp_json_ld-DhFD64vh.esm.min.js.map +0 -1
- package/dist/chunks/KHR_xmp_json_ld-sTn6N13E.esm.js +0 -51
- package/dist/chunks/KHR_xmp_json_ld-sTn6N13E.esm.js.map +0 -1
- package/dist/chunks/MSFT_audio_emitter-5lrNj8-c.esm.min.js +0 -2
- package/dist/chunks/MSFT_audio_emitter-5lrNj8-c.esm.min.js.map +0 -1
- package/dist/chunks/MSFT_audio_emitter-B7RJSCaF.esm.js +0 -2201
- package/dist/chunks/MSFT_audio_emitter-B7RJSCaF.esm.js.map +0 -1
- package/dist/chunks/MSFT_lod-BJBjM7Gp.esm.js +0 -337
- package/dist/chunks/MSFT_lod-BJBjM7Gp.esm.js.map +0 -1
- package/dist/chunks/MSFT_lod-DpEZMnoU.esm.min.js +0 -2
- package/dist/chunks/MSFT_lod-DpEZMnoU.esm.min.js.map +0 -1
- package/dist/chunks/MSFT_minecraftMesh-CXHPdyar.esm.min.js +0 -2
- package/dist/chunks/MSFT_minecraftMesh-CXHPdyar.esm.min.js.map +0 -1
- package/dist/chunks/MSFT_minecraftMesh-DRC2tMvY.esm.js +0 -46
- package/dist/chunks/MSFT_minecraftMesh-DRC2tMvY.esm.js.map +0 -1
- package/dist/chunks/MSFT_sRGBFactors-Db1asZRk.esm.js +0 -47
- package/dist/chunks/MSFT_sRGBFactors-Db1asZRk.esm.js.map +0 -1
- package/dist/chunks/MSFT_sRGBFactors-RhAtY3q7.esm.min.js +0 -2
- package/dist/chunks/MSFT_sRGBFactors-RhAtY3q7.esm.min.js.map +0 -1
- package/dist/chunks/animationGroup-CjaFhT87.esm.min.js +0 -2
- package/dist/chunks/animationGroup-CjaFhT87.esm.min.js.map +0 -1
- package/dist/chunks/animationGroup-Ctc6BUYh.esm.js +0 -2482
- package/dist/chunks/animationGroup-Ctc6BUYh.esm.js.map +0 -1
- package/dist/chunks/assetContainer-DDEska5G.esm.min.js +0 -2
- package/dist/chunks/assetContainer-DDEska5G.esm.min.js.map +0 -1
- package/dist/chunks/assetContainer-QD3gUzyx.esm.js +0 -1720
- package/dist/chunks/assetContainer-QD3gUzyx.esm.js.map +0 -1
- package/dist/chunks/audioEngine-C6R2Ow6e.esm.js +0 -305
- package/dist/chunks/audioEngine-C6R2Ow6e.esm.js.map +0 -1
- package/dist/chunks/audioEngine-FKYFzzDb.esm.min.js +0 -2
- package/dist/chunks/audioEngine-FKYFzzDb.esm.min.js.map +0 -1
- package/dist/chunks/bakedVertexAnimation-DKR6lpIg.esm.min.js +0 -2
- package/dist/chunks/bakedVertexAnimation-DKR6lpIg.esm.min.js.map +0 -1
- package/dist/chunks/bakedVertexAnimation-Hxn22qoJ.esm.js +0 -114
- package/dist/chunks/bakedVertexAnimation-Hxn22qoJ.esm.js.map +0 -1
- package/dist/chunks/basisTextureLoader-BcNAHqjw.esm.min.js +0 -2
- package/dist/chunks/basisTextureLoader-BcNAHqjw.esm.min.js.map +0 -1
- package/dist/chunks/basisTextureLoader-Dr2d0ez5.esm.js +0 -600
- package/dist/chunks/basisTextureLoader-Dr2d0ez5.esm.js.map +0 -1
- package/dist/chunks/dds-CFrq_XFM.esm.js +0 -540
- package/dist/chunks/dds-CFrq_XFM.esm.js.map +0 -1
- package/dist/chunks/dds-D1NTXLIL.esm.min.js +0 -2
- package/dist/chunks/dds-D1NTXLIL.esm.min.js.map +0 -1
- package/dist/chunks/ddsTextureLoader-DbvffCUa.esm.min.js +0 -2
- package/dist/chunks/ddsTextureLoader-DbvffCUa.esm.min.js.map +0 -1
- package/dist/chunks/ddsTextureLoader-wyjUdBoO.esm.js +0 -88
- package/dist/chunks/ddsTextureLoader-wyjUdBoO.esm.js.map +0 -1
- package/dist/chunks/decalFragment-CGto5zyq.esm.js +0 -18
- package/dist/chunks/decalFragment-CGto5zyq.esm.js.map +0 -1
- package/dist/chunks/decalFragment-CU64C8uG.esm.min.js +0 -2
- package/dist/chunks/decalFragment-CU64C8uG.esm.min.js.map +0 -1
- package/dist/chunks/default.fragment-B2bhCC4E.esm.js +0 -446
- package/dist/chunks/default.fragment-B2bhCC4E.esm.js.map +0 -1
- package/dist/chunks/default.fragment-Boq79lom.esm.min.js +0 -2
- package/dist/chunks/default.fragment-Boq79lom.esm.min.js.map +0 -1
- package/dist/chunks/default.fragment-CluFtXFp.esm.min.js +0 -2
- package/dist/chunks/default.fragment-CluFtXFp.esm.min.js.map +0 -1
- package/dist/chunks/default.fragment-Dshl5Uqc.esm.js +0 -515
- package/dist/chunks/default.fragment-Dshl5Uqc.esm.js.map +0 -1
- package/dist/chunks/default.vertex-BAAgCiYo.esm.min.js +0 -2
- package/dist/chunks/default.vertex-BAAgCiYo.esm.min.js.map +0 -1
- package/dist/chunks/default.vertex-BhOIicZW.esm.min.js +0 -2
- package/dist/chunks/default.vertex-BhOIicZW.esm.min.js.map +0 -1
- package/dist/chunks/default.vertex-DL7IogGB.esm.js +0 -211
- package/dist/chunks/default.vertex-DL7IogGB.esm.js.map +0 -1
- package/dist/chunks/default.vertex-DOXcZEQ0.esm.js +0 -190
- package/dist/chunks/default.vertex-DOXcZEQ0.esm.js.map +0 -1
- package/dist/chunks/defaultUboDeclaration-1qBz6EuF.esm.js +0 -15
- package/dist/chunks/defaultUboDeclaration-1qBz6EuF.esm.js.map +0 -1
- package/dist/chunks/defaultUboDeclaration-B9LzMzlw.esm.min.js +0 -2
- package/dist/chunks/defaultUboDeclaration-B9LzMzlw.esm.min.js.map +0 -1
- package/dist/chunks/defaultUboDeclaration-CXdodf7i.esm.js +0 -13
- package/dist/chunks/defaultUboDeclaration-CXdodf7i.esm.js.map +0 -1
- package/dist/chunks/defaultUboDeclaration-CZlCaxgu.esm.min.js +0 -2
- package/dist/chunks/defaultUboDeclaration-CZlCaxgu.esm.min.js.map +0 -1
- package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js +0 -11
- package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js.map +0 -1
- package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js +0 -2
- package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js.map +0 -1
- package/dist/chunks/dumpTools-C3vcqEdz.esm.js +0 -200
- package/dist/chunks/dumpTools-C3vcqEdz.esm.js.map +0 -1
- package/dist/chunks/dumpTools-C8ZzlWEh.esm.min.js +0 -2
- package/dist/chunks/dumpTools-C8ZzlWEh.esm.min.js.map +0 -1
- package/dist/chunks/engine-_wVL12I1.esm.js +0 -2213
- package/dist/chunks/engine-_wVL12I1.esm.js.map +0 -1
- package/dist/chunks/engine-nCWszV_w.esm.min.js +0 -2
- package/dist/chunks/engine-nCWszV_w.esm.min.js.map +0 -1
- package/dist/chunks/engine.common-BuPfo1Wj.esm.min.js +0 -2
- package/dist/chunks/engine.common-BuPfo1Wj.esm.min.js.map +0 -1
- package/dist/chunks/engine.common-CT5iq3ZT.esm.js +0 -1162
- package/dist/chunks/engine.common-CT5iq3ZT.esm.js.map +0 -1
- package/dist/chunks/envTextureLoader-D7L0fVXR.esm.min.js +0 -2
- package/dist/chunks/envTextureLoader-D7L0fVXR.esm.min.js.map +0 -1
- package/dist/chunks/envTextureLoader-PtuRNDrr.esm.js +0 -64
- package/dist/chunks/envTextureLoader-PtuRNDrr.esm.js.map +0 -1
- package/dist/chunks/environmentTextureTools-BjmCbfSf.esm.min.js +0 -2
- package/dist/chunks/environmentTextureTools-BjmCbfSf.esm.min.js.map +0 -1
- package/dist/chunks/environmentTextureTools-DYbFmR95.esm.js +0 -382
- package/dist/chunks/environmentTextureTools-DYbFmR95.esm.js.map +0 -1
- package/dist/chunks/exrTextureLoader-BIPK0bPG.esm.min.js +0 -2
- package/dist/chunks/exrTextureLoader-BIPK0bPG.esm.min.js.map +0 -1
- package/dist/chunks/exrTextureLoader-CEhv_7O9.esm.js +0 -1683
- package/dist/chunks/exrTextureLoader-CEhv_7O9.esm.js.map +0 -1
- package/dist/chunks/fogFragment-B7_evZbY.esm.js +0 -102
- package/dist/chunks/fogFragment-B7_evZbY.esm.js.map +0 -1
- package/dist/chunks/fogFragment-CoZPb7oI.esm.min.js +0 -2
- package/dist/chunks/fogFragment-CoZPb7oI.esm.min.js.map +0 -1
- package/dist/chunks/fogFragment-DSO97-dc.esm.min.js +0 -2
- package/dist/chunks/fogFragment-DSO97-dc.esm.min.js.map +0 -1
- package/dist/chunks/fogFragment-wY2jQ7fb.esm.js +0 -101
- package/dist/chunks/fogFragment-wY2jQ7fb.esm.js.map +0 -1
- package/dist/chunks/fresnelFunction-BSEp5SCT.esm.js +0 -12
- package/dist/chunks/fresnelFunction-BSEp5SCT.esm.js.map +0 -1
- package/dist/chunks/fresnelFunction-Cg-NNSrz.esm.min.js +0 -2
- package/dist/chunks/fresnelFunction-Cg-NNSrz.esm.min.js.map +0 -1
- package/dist/chunks/glTFLoader-3ZUBWawQ.esm.min.js +0 -2
- package/dist/chunks/glTFLoader-3ZUBWawQ.esm.min.js.map +0 -1
- package/dist/chunks/glTFLoader-DVoAJl_A.esm.js +0 -7658
- package/dist/chunks/glTFLoader-DVoAJl_A.esm.js.map +0 -1
- package/dist/chunks/glTFLoaderAnimation-By7yP8sQ.esm.js +0 -77
- package/dist/chunks/glTFLoaderAnimation-By7yP8sQ.esm.js.map +0 -1
- package/dist/chunks/glTFLoaderAnimation-C9g-SHaJ.esm.min.js +0 -2
- package/dist/chunks/glTFLoaderAnimation-C9g-SHaJ.esm.min.js.map +0 -1
- package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js +0 -2
- package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js.map +0 -1
- package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js +0 -67
- package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js.map +0 -1
- package/dist/chunks/harmonicsFunctions-B8pgRSdd.esm.min.js +0 -2
- package/dist/chunks/harmonicsFunctions-B8pgRSdd.esm.min.js.map +0 -1
- package/dist/chunks/harmonicsFunctions-BcfkM4gb.esm.js +0 -35
- package/dist/chunks/harmonicsFunctions-BcfkM4gb.esm.js.map +0 -1
- package/dist/chunks/harmonicsFunctions-DF1x585z.esm.min.js +0 -2
- package/dist/chunks/harmonicsFunctions-DF1x585z.esm.min.js.map +0 -1
- package/dist/chunks/harmonicsFunctions-a48Ki58F.esm.js +0 -34
- package/dist/chunks/harmonicsFunctions-a48Ki58F.esm.js.map +0 -1
- package/dist/chunks/hdrTextureLoader-BWnO8u1r.esm.js +0 -253
- package/dist/chunks/hdrTextureLoader-BWnO8u1r.esm.js.map +0 -1
- package/dist/chunks/hdrTextureLoader-Bii9QpYI.esm.min.js +0 -2
- package/dist/chunks/hdrTextureLoader-Bii9QpYI.esm.min.js.map +0 -1
- package/dist/chunks/helperFunctions-BinFB44e.esm.js +0 -110
- package/dist/chunks/helperFunctions-BinFB44e.esm.js.map +0 -1
- package/dist/chunks/helperFunctions-CZAyJNTJ.esm.min.js +0 -2
- package/dist/chunks/helperFunctions-CZAyJNTJ.esm.min.js.map +0 -1
- package/dist/chunks/helperFunctions-DjoUVhI2.esm.min.js +0 -2
- package/dist/chunks/helperFunctions-DjoUVhI2.esm.min.js.map +0 -1
- package/dist/chunks/helperFunctions-Ds3-3-tu.esm.js +0 -83
- package/dist/chunks/helperFunctions-Ds3-3-tu.esm.js.map +0 -1
- package/dist/chunks/iesTextureLoader-CsnjIN7M.esm.js +0 -189
- package/dist/chunks/iesTextureLoader-CsnjIN7M.esm.js.map +0 -1
- package/dist/chunks/iesTextureLoader-DkmTomCD.esm.min.js +0 -2
- package/dist/chunks/iesTextureLoader-DkmTomCD.esm.min.js.map +0 -1
- package/dist/chunks/index-Cw2FZpYY.esm.js +0 -74870
- package/dist/chunks/index-Cw2FZpYY.esm.js.map +0 -1
- package/dist/chunks/index-DRbhrB0j.esm.min.js +0 -57
- package/dist/chunks/index-DRbhrB0j.esm.min.js.map +0 -1
- package/dist/chunks/ktxTextureLoader-B4pmAFQl.esm.js +0 -814
- package/dist/chunks/ktxTextureLoader-B4pmAFQl.esm.js.map +0 -1
- package/dist/chunks/ktxTextureLoader-B8Rlj2T0.esm.min.js +0 -2
- package/dist/chunks/ktxTextureLoader-B8Rlj2T0.esm.min.js.map +0 -1
- package/dist/chunks/logDepthDeclaration-CGz2sG_K.esm.js +0 -11
- package/dist/chunks/logDepthDeclaration-CGz2sG_K.esm.js.map +0 -1
- package/dist/chunks/logDepthDeclaration-CfVFs2QC.esm.min.js +0 -2
- package/dist/chunks/logDepthDeclaration-CfVFs2QC.esm.min.js.map +0 -1
- package/dist/chunks/logDepthDeclaration-CzVshpad.esm.min.js +0 -2
- package/dist/chunks/logDepthDeclaration-CzVshpad.esm.min.js.map +0 -1
- package/dist/chunks/logDepthDeclaration-xOwnAKtd.esm.js +0 -35
- package/dist/chunks/logDepthDeclaration-xOwnAKtd.esm.js.map +0 -1
- package/dist/chunks/logDepthVertex-BRgUZAsw.esm.js +0 -81
- package/dist/chunks/logDepthVertex-BRgUZAsw.esm.js.map +0 -1
- package/dist/chunks/logDepthVertex-CWfPfN9-.esm.min.js +0 -2
- package/dist/chunks/logDepthVertex-CWfPfN9-.esm.min.js.map +0 -1
- package/dist/chunks/logDepthVertex-HDlt7vTP.esm.min.js +0 -2
- package/dist/chunks/logDepthVertex-HDlt7vTP.esm.min.js.map +0 -1
- package/dist/chunks/logDepthVertex-l0uEG89p.esm.js +0 -77
- package/dist/chunks/logDepthVertex-l0uEG89p.esm.js.map +0 -1
- package/dist/chunks/mainUVVaryingDeclaration-B72zV2P9.esm.min.js +0 -2
- package/dist/chunks/mainUVVaryingDeclaration-B72zV2P9.esm.min.js.map +0 -1
- package/dist/chunks/mainUVVaryingDeclaration-BDogjZrz.esm.js +0 -11
- package/dist/chunks/mainUVVaryingDeclaration-BDogjZrz.esm.js.map +0 -1
- package/dist/chunks/mainUVVaryingDeclaration-DO5HJKyl.esm.min.js +0 -2
- package/dist/chunks/mainUVVaryingDeclaration-DO5HJKyl.esm.min.js.map +0 -1
- package/dist/chunks/mainUVVaryingDeclaration-DqzNajlu.esm.js +0 -11
- package/dist/chunks/mainUVVaryingDeclaration-DqzNajlu.esm.js.map +0 -1
- package/dist/chunks/mesh.vertexData.functions-B_pMCAzZ.esm.js +0 -119
- package/dist/chunks/mesh.vertexData.functions-B_pMCAzZ.esm.js.map +0 -1
- package/dist/chunks/mesh.vertexData.functions-Bo7e6Of9.esm.min.js +0 -2
- package/dist/chunks/mesh.vertexData.functions-Bo7e6Of9.esm.min.js.map +0 -1
- package/dist/chunks/meshUboDeclaration-BCO87lfZ.esm.js +0 -26
- package/dist/chunks/meshUboDeclaration-BCO87lfZ.esm.js.map +0 -1
- package/dist/chunks/meshUboDeclaration-o4Xf2fwW.esm.min.js +0 -2
- package/dist/chunks/meshUboDeclaration-o4Xf2fwW.esm.min.js.map +0 -1
- package/dist/chunks/objFileLoader-BfPYM2Sh.esm.min.js +0 -2
- package/dist/chunks/objFileLoader-BfPYM2Sh.esm.min.js.map +0 -1
- package/dist/chunks/objFileLoader-D1emf4Qh.esm.js +0 -1338
- package/dist/chunks/objFileLoader-D1emf4Qh.esm.js.map +0 -1
- package/dist/chunks/oitFragment-B92YpEfj.esm.min.js +0 -2
- package/dist/chunks/oitFragment-B92YpEfj.esm.min.js.map +0 -1
- package/dist/chunks/oitFragment-BoFKkDNv.esm.js +0 -1078
- package/dist/chunks/oitFragment-BoFKkDNv.esm.js.map +0 -1
- package/dist/chunks/oitFragment-Cfx3g0iX.esm.js +0 -1240
- package/dist/chunks/oitFragment-Cfx3g0iX.esm.js.map +0 -1
- package/dist/chunks/oitFragment-CiA7gld-.esm.min.js +0 -2
- package/dist/chunks/oitFragment-CiA7gld-.esm.min.js.map +0 -1
- package/dist/chunks/pass.fragment-BLbIViJ7.esm.js +0 -15
- package/dist/chunks/pass.fragment-BLbIViJ7.esm.js.map +0 -1
- package/dist/chunks/pass.fragment-BqMk9ouF.esm.min.js +0 -2
- package/dist/chunks/pass.fragment-BqMk9ouF.esm.min.js.map +0 -1
- package/dist/chunks/pass.fragment-BuVDFNSR.esm.js +0 -15
- package/dist/chunks/pass.fragment-BuVDFNSR.esm.js.map +0 -1
- package/dist/chunks/pass.fragment-cM5FBHLm.esm.min.js +0 -2
- package/dist/chunks/pass.fragment-cM5FBHLm.esm.min.js.map +0 -1
- package/dist/chunks/pbr.fragment-5L_F7nGn.esm.js +0 -3222
- package/dist/chunks/pbr.fragment-5L_F7nGn.esm.js.map +0 -1
- package/dist/chunks/pbr.fragment-BJNPHSa-.esm.min.js +0 -2
- package/dist/chunks/pbr.fragment-BJNPHSa-.esm.min.js.map +0 -1
- package/dist/chunks/pbr.fragment-CTLrOzV2.esm.js +0 -3269
- package/dist/chunks/pbr.fragment-CTLrOzV2.esm.js.map +0 -1
- package/dist/chunks/pbr.fragment-D9MJFOr2.esm.min.js +0 -2
- package/dist/chunks/pbr.fragment-D9MJFOr2.esm.min.js.map +0 -1
- package/dist/chunks/pbr.vertex-BJyjq_fb.esm.js +0 -223
- package/dist/chunks/pbr.vertex-BJyjq_fb.esm.js.map +0 -1
- package/dist/chunks/pbr.vertex-Bm8Ng4Sx.esm.min.js +0 -2
- package/dist/chunks/pbr.vertex-Bm8Ng4Sx.esm.min.js.map +0 -1
- package/dist/chunks/pbr.vertex-CAKPUhfb.esm.min.js +0 -2
- package/dist/chunks/pbr.vertex-CAKPUhfb.esm.min.js.map +0 -1
- package/dist/chunks/pbr.vertex-DJd_-MvE.esm.js +0 -348
- package/dist/chunks/pbr.vertex-DJd_-MvE.esm.js.map +0 -1
- package/dist/chunks/postprocess.vertex-BjRX5eGi.esm.min.js +0 -2
- package/dist/chunks/postprocess.vertex-BjRX5eGi.esm.min.js.map +0 -1
- package/dist/chunks/postprocess.vertex-CFaKNIU-.esm.js +0 -20
- package/dist/chunks/postprocess.vertex-CFaKNIU-.esm.js.map +0 -1
- package/dist/chunks/rawTexture-ByD8l28R.esm.min.js +0 -2
- package/dist/chunks/rawTexture-ByD8l28R.esm.min.js.map +0 -1
- package/dist/chunks/rawTexture-DGz22uaX.esm.js +0 -191
- package/dist/chunks/rawTexture-DGz22uaX.esm.js.map +0 -1
- package/dist/chunks/ray-ByafiITx.esm.js +0 -946
- package/dist/chunks/ray-ByafiITx.esm.js.map +0 -1
- package/dist/chunks/ray-ChSTYrPm.esm.min.js +0 -2
- package/dist/chunks/ray-ChSTYrPm.esm.min.js.map +0 -1
- package/dist/chunks/rgbdDecode.fragment-CJ7PpH1N.esm.js +0 -13
- package/dist/chunks/rgbdDecode.fragment-CJ7PpH1N.esm.js.map +0 -1
- package/dist/chunks/rgbdDecode.fragment-DJ9crbPP.esm.js +0 -13
- package/dist/chunks/rgbdDecode.fragment-DJ9crbPP.esm.js.map +0 -1
- package/dist/chunks/rgbdDecode.fragment-DLpb3z18.esm.min.js +0 -2
- package/dist/chunks/rgbdDecode.fragment-DLpb3z18.esm.min.js.map +0 -1
- package/dist/chunks/rgbdDecode.fragment-ygeOUzIi.esm.min.js +0 -2
- package/dist/chunks/rgbdDecode.fragment-ygeOUzIi.esm.min.js.map +0 -1
- package/dist/chunks/rgbdEncode.fragment-BTG_wbck.esm.min.js +0 -2
- package/dist/chunks/rgbdEncode.fragment-BTG_wbck.esm.min.js.map +0 -1
- package/dist/chunks/rgbdEncode.fragment-C2s4AQaM.esm.js +0 -13
- package/dist/chunks/rgbdEncode.fragment-C2s4AQaM.esm.js.map +0 -1
- package/dist/chunks/rgbdEncode.fragment-C6LKySQH.esm.js +0 -13
- package/dist/chunks/rgbdEncode.fragment-C6LKySQH.esm.js.map +0 -1
- package/dist/chunks/rgbdEncode.fragment-CKB2lpgL.esm.min.js +0 -2
- package/dist/chunks/rgbdEncode.fragment-CKB2lpgL.esm.min.js.map +0 -1
- package/dist/chunks/splatFileLoader-BtSUlfZs.esm.min.js +0 -2
- package/dist/chunks/splatFileLoader-BtSUlfZs.esm.min.js.map +0 -1
- package/dist/chunks/splatFileLoader-Wn5sDtLq.esm.js +0 -3379
- package/dist/chunks/splatFileLoader-Wn5sDtLq.esm.js.map +0 -1
- package/dist/chunks/spotLight-CmDQEB8V.esm.js +0 -701
- package/dist/chunks/spotLight-CmDQEB8V.esm.js.map +0 -1
- package/dist/chunks/spotLight-hg94aMJD.esm.min.js +0 -2
- package/dist/chunks/spotLight-hg94aMJD.esm.min.js.map +0 -1
- package/dist/chunks/standardMaterial-BhIiLn1_.esm.js +0 -1806
- package/dist/chunks/standardMaterial-BhIiLn1_.esm.js.map +0 -1
- package/dist/chunks/standardMaterial-DQii8fRL.esm.min.js +0 -2
- package/dist/chunks/standardMaterial-DQii8fRL.esm.min.js.map +0 -1
- package/dist/chunks/stlFileLoader-D83u9BOr.esm.js +0 -238
- package/dist/chunks/stlFileLoader-D83u9BOr.esm.js.map +0 -1
- package/dist/chunks/stlFileLoader-DkXWqjZo.esm.min.js +0 -2
- package/dist/chunks/stlFileLoader-DkXWqjZo.esm.min.js.map +0 -1
- package/dist/chunks/tgaTextureLoader-C9xl6cvE.esm.js +0 -349
- package/dist/chunks/tgaTextureLoader-C9xl6cvE.esm.js.map +0 -1
- package/dist/chunks/tgaTextureLoader-DfzjGulW.esm.min.js +0 -2
- package/dist/chunks/tgaTextureLoader-DfzjGulW.esm.min.js.map +0 -1
- package/dist/chunks/thinEngine-Cu21aOSC.esm.min.js +0 -2
- package/dist/chunks/thinEngine-Cu21aOSC.esm.min.js.map +0 -1
- package/dist/chunks/thinEngine-IzS60pqU.esm.js +0 -3853
- package/dist/chunks/thinEngine-IzS60pqU.esm.js.map +0 -1
- package/dist/chunks/thinInstanceMesh-BN8Ev-h8.esm.js +0 -314
- package/dist/chunks/thinInstanceMesh-BN8Ev-h8.esm.js.map +0 -1
- package/dist/chunks/thinInstanceMesh-Bm9vmKU4.esm.min.js +0 -2
- package/dist/chunks/thinInstanceMesh-Bm9vmKU4.esm.min.js.map +0 -1
- package/dist/chunks/vertexColorMixing-Cazf4vEl.esm.min.js +0 -2
- package/dist/chunks/vertexColorMixing-Cazf4vEl.esm.min.js.map +0 -1
- package/dist/chunks/vertexColorMixing-DGvq3Fju.esm.js +0 -421
- package/dist/chunks/vertexColorMixing-DGvq3Fju.esm.js.map +0 -1
- package/dist/chunks/vertexColorMixing-D_6ZvivZ.esm.min.js +0 -2
- package/dist/chunks/vertexColorMixing-D_6ZvivZ.esm.min.js.map +0 -1
- package/dist/chunks/vertexColorMixing-DuYHnuUm.esm.js +0 -531
- package/dist/chunks/vertexColorMixing-DuYHnuUm.esm.js.map +0 -1
- package/dist/chunks/webgpuEngine-DHaXinU4.esm.min.js +0 -2
- package/dist/chunks/webgpuEngine-DHaXinU4.esm.min.js.map +0 -1
- package/dist/chunks/webgpuEngine-Dxev7pbz.esm.js +0 -11538
- package/dist/chunks/webgpuEngine-Dxev7pbz.esm.js.map +0 -1
- package/dist/chunks/workerPool-BUOov2K1.esm.js +0 -122
- package/dist/chunks/workerPool-BUOov2K1.esm.js.map +0 -1
- package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js +0 -2
- package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js.map +0 -1
- package/lib/index.d.ts +0 -591
- package/lib/index.js +0 -2165
- package/lib/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sceneManager.js","sourceRoot":"","sources":["../../../../tools/viewer/src/managers/sceneManager.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-internal-modules */\r\nimport type {\r\n ILightConfiguration,\r\n ISceneConfiguration,\r\n ISceneOptimizerConfiguration,\r\n ICameraConfiguration,\r\n ISkyboxConfiguration,\r\n IGroundConfiguration,\r\n IModelConfiguration,\r\n IDefaultRenderingPipelineConfiguration,\r\n IVRConfiguration,\r\n} from \"../configuration/interfaces/index\";\r\nimport type { ViewerConfiguration } from \"../configuration/configuration\";\r\nimport { getConfigurationKey } from \"../configuration/configuration\";\r\nimport type { ViewerModel } from \"../model/viewerModel\";\r\nimport { ModelState } from \"../model/viewerModel\";\r\nimport { extendClassWithConfig, deepmerge } from \"../helper/index\";\r\nimport { CameraBehavior } from \"../interfaces\";\r\nimport { ViewerLabs } from \"../labs/viewerLabs\";\r\nimport { getCustomOptimizerByName } from \"../optimizer/custom/index\";\r\nimport type { ObservablesManager } from \"../managers/observablesManager\";\r\nimport type { ConfigurationContainer } from \"../configuration/configurationContainer\";\r\nimport type { IEnvironmentMapConfiguration } from \"../configuration/interfaces/environmentMapConfiguration\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport { SceneOptimizer, SceneOptimizerOptions } from \"core/Misc/sceneOptimizer\";\r\nimport { ArcRotateCamera } from \"core/Cameras/arcRotateCamera\";\r\nimport { Light } from \"core/Lights/light\";\r\nimport type { IEnvironmentHelperOptions } from \"core/Helpers/environmentHelper\";\r\nimport { EnvironmentHelper } from \"core/Helpers/environmentHelper\";\r\nimport type { VRExperienceHelper, VRExperienceHelperOptions } from \"core/Cameras/VR/vrExperienceHelper\";\r\nimport { Color3, Quaternion, Vector3, Axis, Matrix } from \"core/Maths/math\";\r\nimport type { Nullable } from \"core/types\";\r\nimport { DefaultRenderingPipeline } from \"core/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline\";\r\nimport type { Engine } from \"core/Engines/engine\";\r\nimport { Animation } from \"core/Animations/index\";\r\nimport { AnimationPropertiesOverride } from \"core/Animations/animationPropertiesOverride\";\r\nimport { RenderTargetTexture } from \"core/Materials/Textures/renderTargetTexture\";\r\nimport { PBRMaterial } from \"core/Materials/PBR/pbrMaterial\";\r\nimport type { IShadowLight } from \"core/Lights/shadowLight\";\r\nimport { ShadowLight } from \"core/Lights/shadowLight\";\r\nimport { CubeTexture } from \"core/Materials/Textures/cubeTexture\";\r\nimport type { DirectionalLight } from \"core/Lights/directionalLight\";\r\nimport { HemisphericLight } from \"core/Lights/hemisphericLight\";\r\nimport { Scalar } from \"core/Maths/math.scalar\";\r\nimport type { SpotLight } from \"core/Lights/spotLight\";\r\nimport type { PointLight } from \"core/Lights/pointLight\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { CreatePlane } from \"core/Meshes/Builders/planeBuilder\";\r\nimport { Tags } from \"core/Misc/tags\";\r\nimport type { Behavior } from \"core/Behaviors/behavior\";\r\nimport type { FramingBehavior } from \"core/Behaviors/Cameras/framingBehavior\";\r\nimport { Scene } from \"core/scene\";\r\nimport { ShadowGenerator } from \"core/Lights/Shadows/shadowGenerator\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport \"core/Audio/audioSceneComponent\";\r\nimport \"core/Helpers/sceneHelpers\";\r\nimport \"core/Misc/observable.extensions\";\r\n\r\n/**\r\n * This interface describes the structure of the variable sent with the configuration observables of the scene manager.\r\n * O - the type of object we are dealing with (Light, ArcRotateCamera, Scene, etc')\r\n * T - the configuration type\r\n */\r\nexport interface IPostConfigurationCallback<OBJ, CONF> {\r\n newConfiguration: CONF;\r\n sceneManager: SceneManager;\r\n object: OBJ;\r\n model?: ViewerModel;\r\n}\r\n\r\nexport class SceneManager {\r\n //Observers\r\n /**\r\n * Will notify when the scene was initialized\r\n */\r\n onSceneInitObservable: Observable<Scene>;\r\n /**\r\n * Will notify after the scene was configured. Can be used to further configure the scene\r\n */\r\n onSceneConfiguredObservable: Observable<IPostConfigurationCallback<Scene, ISceneConfiguration>>;\r\n /**\r\n * Will notify after the scene optimized was configured. Can be used to further configure the scene optimizer\r\n */\r\n onSceneOptimizerConfiguredObservable: Observable<IPostConfigurationCallback<SceneOptimizer, ISceneOptimizerConfiguration | boolean>>;\r\n /**\r\n * Will notify after the camera was configured. Can be used to further configure the camera\r\n */\r\n onCameraConfiguredObservable: Observable<IPostConfigurationCallback<ArcRotateCamera, ICameraConfiguration>>;\r\n /**\r\n * Will notify after the lights were configured. Can be used to further configure lights\r\n */\r\n onLightsConfiguredObservable: Observable<IPostConfigurationCallback<Array<Light>, { [name: string]: ILightConfiguration | boolean | number }>>;\r\n /**\r\n * Will notify after the model(s) were configured. Can be used to further configure models\r\n */\r\n onModelsConfiguredObservable: Observable<IPostConfigurationCallback<Array<ViewerModel>, IModelConfiguration>>;\r\n /**\r\n * Will notify after the environment was configured. Can be used to further configure the environment\r\n */\r\n onEnvironmentConfiguredObservable: Observable<\r\n IPostConfigurationCallback<EnvironmentHelper, { skybox?: ISkyboxConfiguration | boolean; ground?: IGroundConfiguration | boolean }>\r\n >;\r\n\r\n /**\r\n * Will notify after the model(s) were configured. Can be used to further configure models\r\n */\r\n onVRConfiguredObservable: Observable<IPostConfigurationCallback<VRExperienceHelper, IVRConfiguration>>;\r\n\r\n /**\r\n * The Babylon Scene of this viewer\r\n */\r\n public scene: Scene;\r\n /**\r\n * The camera used in this viewer\r\n */\r\n public camera: ArcRotateCamera;\r\n /**\r\n * Babylon's scene optimizer\r\n */\r\n public sceneOptimizer?: SceneOptimizer;\r\n /**\r\n * Models displayed in this viewer.\r\n */\r\n public models: Array<ViewerModel>;\r\n /**\r\n * Babylon's environment helper of this viewer\r\n */\r\n public environmentHelper?: EnvironmentHelper;\r\n\r\n //The following are configuration objects, default values.\r\n protected _defaultHighpTextureType: number;\r\n protected _shadowGeneratorBias: number;\r\n protected _defaultPipelineTextureType: number;\r\n\r\n /**\r\n * The maximum number of shadows supported by the current viewer\r\n */\r\n protected _maxShadows: number;\r\n /**\r\n * is HDR supported?\r\n */\r\n private _hdrSupport: boolean;\r\n\r\n private readonly _white = Color3.White();\r\n\r\n private _forceShadowUpdate: boolean = false;\r\n\r\n /**\r\n * The labs variable consists of objects that will have their API change.\r\n * Please be careful when using labs in production.\r\n */\r\n public labs: ViewerLabs;\r\n\r\n private _defaultRenderingPipeline: Nullable<DefaultRenderingPipeline>;\r\n\r\n private _assetsRootURL: string;\r\n\r\n public get defaultRenderingPipeline() {\r\n return this._defaultRenderingPipeline;\r\n }\r\n\r\n protected _vrHelper?: VRExperienceHelper;\r\n\r\n public get vrHelper() {\r\n return this._vrHelper;\r\n }\r\n\r\n constructor(\r\n private _engine: Engine,\r\n private _configurationContainer: ConfigurationContainer,\r\n private _observablesManager?: ObservablesManager\r\n ) {\r\n this.models = [];\r\n\r\n this.onCameraConfiguredObservable = new Observable();\r\n this.onLightsConfiguredObservable = new Observable();\r\n this.onModelsConfiguredObservable = new Observable();\r\n this.onSceneConfiguredObservable = new Observable();\r\n this.onSceneInitObservable = new Observable(undefined, true);\r\n this.onSceneOptimizerConfiguredObservable = new Observable();\r\n this.onEnvironmentConfiguredObservable = new Observable();\r\n this.onVRConfiguredObservable = new Observable();\r\n\r\n //this._viewer.onEngineInitObservable.add(() => {\r\n this._handleHardwareLimitations();\r\n //});\r\n\r\n this.onSceneInitObservable.add((scene) => {\r\n this.scene.animationPropertiesOverride = this.scene.animationPropertiesOverride || new AnimationPropertiesOverride();\r\n\r\n this.labs = new ViewerLabs(scene);\r\n\r\n const updateShadows = () => {\r\n for (const light of this.scene.lights) {\r\n const generators = light.getShadowGenerators();\r\n if (generators) {\r\n // Processing shadows if animates\r\n const iterator = generators.values();\r\n for (let key = iterator.next(); key.done !== true; key = iterator.next()) {\r\n const generator = key.value;\r\n const shadowMap = generator.getShadowMap();\r\n if (shadowMap) {\r\n shadowMap.refreshRate = RenderTargetTexture.REFRESHRATE_RENDER_ONCE;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n scene.registerBeforeRender(() => {\r\n if (this._forceShadowUpdate || (scene.animatables && scene.animatables.length > 0)) {\r\n // make sure all models are loaded\r\n updateShadows();\r\n this._forceShadowUpdate = false;\r\n } else if (\r\n !this.models.every((model) => {\r\n if (!model.shadowsRenderedAfterLoad) {\r\n model.shadowsRenderedAfterLoad = true;\r\n return false;\r\n }\r\n return model.state === ModelState.COMPLETE && !model.currentAnimation;\r\n })\r\n ) {\r\n updateShadows();\r\n }\r\n });\r\n return this._observablesManager && this._observablesManager.onSceneInitObservable.notifyObserversWithPromise(this.scene);\r\n });\r\n if (this._observablesManager) {\r\n this._observablesManager.onModelLoadedObservable.add((model) => {\r\n for (const light of this.scene.lights) {\r\n const generators = light.getShadowGenerators();\r\n if (generators) {\r\n // Processing shadows if animates\r\n const iterator = generators.values();\r\n for (let key = iterator.next(); key.done !== true; key = iterator.next()) {\r\n const generator = key.value;\r\n const shadowMap = generator.getShadowMap();\r\n if (shadowMap) {\r\n shadowMap.refreshRate = RenderTargetTexture.REFRESHRATE_RENDER_ONCE;\r\n }\r\n }\r\n }\r\n }\r\n this._focusOnModel(model);\r\n });\r\n\r\n this._observablesManager.onModelAddedObservable.add((model) => {\r\n this.models.push(model);\r\n });\r\n this._observablesManager.onModelRemovedObservable.add((model) => {\r\n this.models.splice(this.models.indexOf(model), 1);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Returns a boolean representing HDR support\r\n */\r\n public get isHdrSupported() {\r\n return this._hdrSupport;\r\n }\r\n\r\n /**\r\n * Return the main color defined in the configuration.\r\n */\r\n public get mainColor(): Color3 {\r\n return this._configurationContainer.mainColor;\r\n }\r\n\r\n public get reflectionColor(): Color3 {\r\n return this._configurationContainer.reflectionColor;\r\n }\r\n\r\n public get animationBlendingEnabled() {\r\n return this.scene && this.scene.animationPropertiesOverride!.enableBlending;\r\n }\r\n\r\n public set animationBlendingEnabled(value: boolean) {\r\n this.scene.animationPropertiesOverride!.enableBlending = value;\r\n }\r\n\r\n public get observablesManager() {\r\n return this._observablesManager;\r\n }\r\n\r\n private _processShadows: boolean = true;\r\n\r\n /**\r\n * The flag defining whether shadows are rendered constantly or once.\r\n */\r\n public get processShadows() {\r\n return this._processShadows;\r\n }\r\n\r\n /**\r\n * Should shadows be rendered every frame, or only once and stop.\r\n * This can be used to optimize a scene.\r\n *\r\n * Not that the shadows will NOT disapear but will remain in place.\r\n * @param process if true shadows will be updated once every frame. if false they will stop being updated.\r\n */\r\n public set processShadows(process: boolean) {\r\n const refreshType = process ? RenderTargetTexture.REFRESHRATE_RENDER_ONEVERYFRAME : RenderTargetTexture.REFRESHRATE_RENDER_ONCE;\r\n\r\n for (const light of this.scene.lights) {\r\n const generators = light.getShadowGenerators();\r\n\r\n if (generators) {\r\n const iterator = generators.values();\r\n for (let key = iterator.next(); key.done !== true; key = iterator.next()) {\r\n const generator = key.value;\r\n const shadowMap = generator.getShadowMap();\r\n if (shadowMap) {\r\n shadowMap.refreshRate = refreshType;\r\n }\r\n }\r\n }\r\n }\r\n\r\n this._processShadows = process;\r\n }\r\n\r\n private _groundEnabled: boolean = true;\r\n\r\n public get groundEnabled() {\r\n return this._groundEnabled;\r\n }\r\n\r\n public set groundEnabled(newValue: boolean) {\r\n if (newValue === this._groundEnabled) {\r\n return;\r\n }\r\n\r\n this._groundEnabled = newValue;\r\n\r\n if (this.environmentHelper && this.environmentHelper.ground) {\r\n this.environmentHelper.ground.setEnabled(this._groundEnabled);\r\n }\r\n }\r\n\r\n private _groundMirrorEnabled = true;\r\n /**\r\n * gets whether the reflection is disabled.\r\n */\r\n public get groundMirrorEnabled(): boolean {\r\n return this._groundMirrorEnabled;\r\n }\r\n /**\r\n * sets whether the reflection is disabled.\r\n */\r\n public set groundMirrorEnabled(value: boolean) {\r\n if (this._groundMirrorEnabled === value) {\r\n return;\r\n }\r\n\r\n this._groundMirrorEnabled = value;\r\n if (this.environmentHelper && this.environmentHelper.groundMaterial && this.environmentHelper.groundMirror) {\r\n if (!value) {\r\n this.environmentHelper.groundMaterial.reflectionTexture = null;\r\n } else {\r\n this.environmentHelper.groundMaterial.reflectionTexture = this.environmentHelper.groundMirror;\r\n }\r\n }\r\n }\r\n\r\n private _defaultRenderingPipelineEnabled: boolean = false;\r\n\r\n public get defaultRenderingPipelineEnabled() {\r\n return this._defaultRenderingPipelineEnabled;\r\n }\r\n\r\n public set defaultRenderingPipelineEnabled(value: boolean) {\r\n if (value === this._defaultRenderingPipelineEnabled) {\r\n return;\r\n }\r\n\r\n this._defaultRenderingPipelineEnabled = value;\r\n this._rebuildPostprocesses();\r\n if (this._defaultRenderingPipeline) {\r\n this._defaultRenderingPipelineShouldBuild = false;\r\n this._defaultRenderingPipeline.prepare();\r\n this.scene.imageProcessingConfiguration.applyByPostProcess = true;\r\n }\r\n }\r\n\r\n /**\r\n * Sets the engine flags to unlock all babylon features.\r\n * Can also be configured using the scene.flags configuration object\r\n */\r\n public unlockBabylonFeatures() {\r\n this.scene.shadowsEnabled = true;\r\n this.scene.particlesEnabled = true;\r\n this.scene.postProcessesEnabled = true;\r\n this.scene.collisionsEnabled = true;\r\n this.scene.lightsEnabled = true;\r\n this.scene.texturesEnabled = true;\r\n this.scene.lensFlaresEnabled = true;\r\n this.scene.proceduralTexturesEnabled = true;\r\n this.scene.renderTargetsEnabled = true;\r\n this.scene.spritesEnabled = true;\r\n this.scene.skeletonsEnabled = true;\r\n this.scene.audioEnabled = true;\r\n }\r\n\r\n /**\r\n * initialize the scene. Calling this function again will dispose the old scene, if exists.\r\n * @param sceneConfiguration the configuration of the scene\r\n * @returns a promise that resolves when the scene is ready\r\n */\r\n public initScene(sceneConfiguration: ISceneConfiguration = {}): Promise<Scene> {\r\n // if the scene exists, dispose it.\r\n if (this.scene) {\r\n this.scene.dispose();\r\n }\r\n\r\n // create a new scene\r\n this.scene = new Scene(this._engine);\r\n\r\n this._configurationContainer.scene = this.scene;\r\n\r\n // set a default PBR material\r\n if (!sceneConfiguration.defaultMaterial) {\r\n const defaultMaterial = new PBRMaterial(\"defaultMaterial\", this.scene);\r\n defaultMaterial.reflectivityColor = new Color3(0.1, 0.1, 0.1);\r\n defaultMaterial.microSurface = 0.6;\r\n\r\n if (this.scene.defaultMaterial) {\r\n this.scene.defaultMaterial.dispose();\r\n }\r\n\r\n this.scene.defaultMaterial = defaultMaterial;\r\n }\r\n\r\n this.scene.animationPropertiesOverride = new AnimationPropertiesOverride();\r\n\r\n Animation.AllowMatricesInterpolation = true;\r\n\r\n /*if (sceneConfiguration.glow) {\r\n let options: Partial<IGlowLayerOptions> = {\r\n mainTextureFixedSize: 512\r\n };\r\n if (typeof sceneConfiguration.glow === 'object') {\r\n options = sceneConfiguration.glow\r\n }\r\n var gl = new GlowLayer(\"glow\", this.scene, options);\r\n }*/\r\n\r\n return this.onSceneInitObservable.notifyObserversWithPromise(this.scene);\r\n }\r\n\r\n public clearScene(clearModels: boolean = true, clearLights: boolean = false) {\r\n if (clearModels) {\r\n this.models.forEach((m) => m.dispose());\r\n this.models.length = 0;\r\n }\r\n if (clearLights) {\r\n this.scene.lights.forEach((l) => l.dispose());\r\n }\r\n }\r\n\r\n private _globalConfiguration: ViewerConfiguration = {};\r\n\r\n /**\r\n * This will update the scene's configuration, including camera, lights, environment.\r\n * @param newConfiguration the delta that should be configured. This includes only the changes\r\n */\r\n public updateConfiguration(newConfiguration: Partial<ViewerConfiguration>) {\r\n if (this._configurationContainer) {\r\n this._globalConfiguration = this._configurationContainer.configuration;\r\n } else {\r\n this._globalConfiguration = newConfiguration;\r\n }\r\n\r\n // update scene configuration\r\n if (newConfiguration.scene) {\r\n this._configureScene(newConfiguration.scene);\r\n }\r\n\r\n // optimizer\r\n if (newConfiguration.optimizer !== undefined) {\r\n this._configureOptimizer(newConfiguration.optimizer);\r\n }\r\n\r\n // configure model\r\n /*if (newConfiguration.model && typeof newConfiguration.model === 'object') {\r\n this._configureModel(newConfiguration.model);\r\n }*/\r\n\r\n // lights\r\n this._configureLights(newConfiguration.lights);\r\n\r\n // environment\r\n if (newConfiguration.skybox !== undefined || newConfiguration.ground !== undefined) {\r\n this._configureEnvironment(newConfiguration.skybox, newConfiguration.ground);\r\n }\r\n\r\n // camera\r\n this._configureCamera(newConfiguration.camera);\r\n\r\n if (newConfiguration.environmentMap !== undefined) {\r\n this._configureEnvironmentMap(newConfiguration.environmentMap);\r\n }\r\n\r\n if (newConfiguration.vr !== undefined) {\r\n this._configureVR(newConfiguration.vr);\r\n }\r\n\r\n if (newConfiguration.lab) {\r\n // rendering pipelines\r\n if (newConfiguration.lab.defaultRenderingPipelines) {\r\n const pipelineConfig = newConfiguration.lab.defaultRenderingPipelines;\r\n if (typeof pipelineConfig === \"boolean\") {\r\n this.defaultRenderingPipelineEnabled = pipelineConfig;\r\n } else {\r\n this.defaultRenderingPipelineEnabled = true;\r\n }\r\n }\r\n\r\n if (this.environmentHelper && newConfiguration.lab.environmentMainColor) {\r\n const mainColor = new Color3(newConfiguration.lab.environmentMainColor.r, newConfiguration.lab.environmentMainColor.g, newConfiguration.lab.environmentMainColor.b);\r\n this.environmentHelper.setMainColor(mainColor);\r\n }\r\n\r\n if (newConfiguration.lab.globalLightRotation !== undefined) {\r\n // rotate all lights that are shadow lights\r\n this.scene.lights\r\n .filter((light) => light instanceof ShadowLight)\r\n .forEach((light) => {\r\n // casting and '!' are safe, due to the constraints tested before\r\n this.labs.rotateShadowLight(<ShadowLight>light, newConfiguration.lab!.globalLightRotation!);\r\n });\r\n this._forceShadowUpdate = true;\r\n }\r\n }\r\n\r\n if (this._defaultRenderingPipeline && this._defaultRenderingPipeline.imageProcessing) {\r\n this._defaultRenderingPipeline.imageProcessing.fromLinearSpace = true;\r\n }\r\n\r\n if (this._defaultRenderingPipelineShouldBuild && this._defaultRenderingPipeline) {\r\n this._defaultRenderingPipelineShouldBuild = false;\r\n this._defaultRenderingPipeline.prepare();\r\n }\r\n }\r\n\r\n private _defaultRenderingPipelineShouldBuild: boolean = true;\r\n\r\n private _rebuildPostprocesses(configuration?: IDefaultRenderingPipelineConfiguration): void {\r\n if (!this._defaultRenderingPipelineEnabled || !getConfigurationKey(\"scene.imageProcessingConfiguration.isEnabled\", this._globalConfiguration)) {\r\n if (this._defaultRenderingPipeline) {\r\n this._defaultRenderingPipeline.dispose();\r\n this._defaultRenderingPipeline = null;\r\n this.scene.autoClearDepthAndStencil = true;\r\n this.scene.autoClear = true;\r\n this.scene.imageProcessingConfiguration.applyByPostProcess = false;\r\n }\r\n\r\n return;\r\n }\r\n\r\n const pipelineConfig = configuration || (this._globalConfiguration.lab && this._globalConfiguration.lab.defaultRenderingPipelines);\r\n if (pipelineConfig) {\r\n if (!this._defaultRenderingPipeline) {\r\n // Create pipeline in manual mode to avoid triggering multiple shader compilations\r\n this._defaultRenderingPipeline = new DefaultRenderingPipeline(\"default rendering pipeline\", this._hdrSupport, this.scene, [this.camera], false);\r\n }\r\n this.scene.autoClear = false;\r\n this.scene.autoClearDepthAndStencil = false;\r\n this._defaultRenderingPipelineShouldBuild = true;\r\n\r\n let bloomEnabled = this._bloomEnabled;\r\n\r\n if (typeof pipelineConfig !== \"boolean\") {\r\n extendClassWithConfig(this._defaultRenderingPipeline, pipelineConfig);\r\n this._bloomEnabled = !!pipelineConfig.bloomEnabled;\r\n this._fxaaEnabled = !!pipelineConfig.fxaaEnabled;\r\n bloomEnabled = this._bloomEnabled && pipelineConfig.bloomWeight !== undefined && pipelineConfig.bloomWeight > 0;\r\n\r\n this._defaultRenderingPipeline.bloomWeight = (pipelineConfig.bloomWeight !== undefined && pipelineConfig.bloomWeight) || this._defaultRenderingPipeline.bloomWeight;\r\n }\r\n\r\n this._defaultRenderingPipeline.bloomEnabled = bloomEnabled;\r\n this._defaultRenderingPipeline.fxaaEnabled = this.fxaaEnabled;\r\n }\r\n }\r\n\r\n // default from rendering pipeline\r\n private _bloomEnabled: boolean = false;\r\n\r\n public get bloomEnabled() {\r\n return this._bloomEnabled;\r\n }\r\n\r\n public set bloomEnabled(value: boolean) {\r\n if (this._bloomEnabled === value) {\r\n return;\r\n }\r\n\r\n this._bloomEnabled = value;\r\n this._rebuildPostprocesses();\r\n if (this._defaultRenderingPipeline) {\r\n this._defaultRenderingPipelineShouldBuild = false;\r\n this._defaultRenderingPipeline.prepare();\r\n this.scene.imageProcessingConfiguration.applyByPostProcess = true;\r\n }\r\n }\r\n\r\n // default from rendering pipeline\r\n private _fxaaEnabled: boolean = false;\r\n\r\n public get fxaaEnabled() {\r\n return this._fxaaEnabled;\r\n }\r\n\r\n public set fxaaEnabled(value: boolean) {\r\n if (this._fxaaEnabled === value) {\r\n return;\r\n }\r\n\r\n this._fxaaEnabled = value;\r\n this._rebuildPostprocesses();\r\n if (this._defaultRenderingPipeline) {\r\n this._defaultRenderingPipelineShouldBuild = false;\r\n this._defaultRenderingPipeline.prepare();\r\n this.scene.imageProcessingConfiguration.applyByPostProcess = true;\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public setDefaultMaterial(sceneConfig: ISceneConfiguration) {}\r\n\r\n /**\r\n * internally configure the scene using the provided configuration.\r\n * The scene will not be recreated, but just updated.\r\n * @param sceneConfig the (new) scene configuration\r\n */\r\n protected _configureScene(sceneConfig: ISceneConfiguration) {\r\n // sanity check!\r\n if (!this.scene) {\r\n return;\r\n }\r\n\r\n const cc = sceneConfig.clearColor;\r\n const oldcc = this.scene.clearColor;\r\n if (cc) {\r\n if (cc.r !== undefined) {\r\n oldcc.r = cc.r;\r\n }\r\n if (cc.g !== undefined) {\r\n oldcc.g = cc.g;\r\n }\r\n if (cc.b !== undefined) {\r\n oldcc.b = cc.b;\r\n }\r\n if (cc.a !== undefined) {\r\n oldcc.a = cc.a;\r\n }\r\n }\r\n\r\n if (sceneConfig.assetsRootURL) {\r\n this._assetsRootURL = sceneConfig.assetsRootURL;\r\n }\r\n\r\n // image processing configuration - optional.\r\n if (sceneConfig.imageProcessingConfiguration) {\r\n extendClassWithConfig(this.scene.imageProcessingConfiguration, sceneConfig.imageProcessingConfiguration);\r\n }\r\n //animation properties override\r\n if (sceneConfig.animationPropertiesOverride) {\r\n extendClassWithConfig(this.scene.animationPropertiesOverride, sceneConfig.animationPropertiesOverride);\r\n }\r\n if (sceneConfig.environmentTexture) {\r\n if (!(this.scene.environmentTexture && (<CubeTexture>this.scene.environmentTexture).url === sceneConfig.environmentTexture)) {\r\n if (this.scene.environmentTexture && this.scene.environmentTexture.dispose) {\r\n this.scene.environmentTexture.dispose();\r\n }\r\n const environmentTexture = CubeTexture.CreateFromPrefilteredData(sceneConfig.environmentTexture, this.scene);\r\n this.scene.environmentTexture = environmentTexture;\r\n }\r\n }\r\n\r\n if (sceneConfig.debug === true) {\r\n this.scene.debugLayer.show();\r\n } else if (sceneConfig.debug === false) {\r\n if (this.scene.debugLayer.isVisible()) {\r\n this.scene.debugLayer.hide();\r\n }\r\n }\r\n\r\n if (sceneConfig.disableHdr) {\r\n this._handleHardwareLimitations(false);\r\n } else {\r\n this._handleHardwareLimitations(true);\r\n }\r\n\r\n if (sceneConfig.renderInBackground !== undefined) {\r\n this._engine.renderEvenInBackground = !!sceneConfig.renderInBackground;\r\n }\r\n\r\n const canvas = this._engine.getInputElement();\r\n\r\n if (canvas) {\r\n if (this.camera && sceneConfig.disableCameraControl) {\r\n this.camera.detachControl();\r\n } else if (this.camera && sceneConfig.disableCameraControl === false) {\r\n this.camera.attachControl();\r\n }\r\n }\r\n\r\n this.setDefaultMaterial(sceneConfig);\r\n\r\n if (sceneConfig.flags) {\r\n extendClassWithConfig(this.scene, sceneConfig.flags);\r\n }\r\n\r\n this.onSceneConfiguredObservable.notifyObservers({\r\n sceneManager: this,\r\n object: this.scene,\r\n newConfiguration: sceneConfig,\r\n });\r\n }\r\n\r\n /**\r\n * Configure the scene optimizer.\r\n * The existing scene optimizer will be disposed and a new one will be created.\r\n * @param optimizerConfig the (new) optimizer configuration\r\n */\r\n protected _configureOptimizer(optimizerConfig: ISceneOptimizerConfiguration | boolean) {\r\n if (typeof optimizerConfig === \"boolean\") {\r\n if (this.sceneOptimizer) {\r\n this.sceneOptimizer.stop();\r\n this.sceneOptimizer.dispose();\r\n delete this.sceneOptimizer;\r\n }\r\n if (optimizerConfig) {\r\n this.sceneOptimizer = new SceneOptimizer(this.scene);\r\n this.sceneOptimizer.start();\r\n }\r\n } else {\r\n let optimizerOptions: SceneOptimizerOptions = new SceneOptimizerOptions(optimizerConfig.targetFrameRate, optimizerConfig.trackerDuration);\r\n // check for degradation\r\n if (optimizerConfig.degradation) {\r\n switch (optimizerConfig.degradation) {\r\n case \"low\":\r\n optimizerOptions = SceneOptimizerOptions.LowDegradationAllowed(optimizerConfig.targetFrameRate);\r\n break;\r\n case \"moderate\":\r\n optimizerOptions = SceneOptimizerOptions.ModerateDegradationAllowed(optimizerConfig.targetFrameRate);\r\n break;\r\n case \"hight\":\r\n optimizerOptions = SceneOptimizerOptions.HighDegradationAllowed(optimizerConfig.targetFrameRate);\r\n break;\r\n }\r\n }\r\n if (this.sceneOptimizer) {\r\n this.sceneOptimizer.stop();\r\n this.sceneOptimizer.dispose();\r\n }\r\n if (optimizerConfig.custom) {\r\n const customOptimizer = getCustomOptimizerByName(optimizerConfig.custom, optimizerConfig.improvementMode);\r\n if (customOptimizer) {\r\n optimizerOptions.addCustomOptimization(\r\n () => {\r\n return customOptimizer(this);\r\n },\r\n () => {\r\n return `Babylon Viewer ${optimizerConfig.custom} custom optimization`;\r\n }\r\n );\r\n }\r\n }\r\n this.sceneOptimizer = new SceneOptimizer(this.scene, optimizerOptions, optimizerConfig.autoGeneratePriorities, optimizerConfig.improvementMode);\r\n this.sceneOptimizer.start();\r\n }\r\n\r\n this.onSceneOptimizerConfiguredObservable.notifyObservers({\r\n sceneManager: this,\r\n object: this.sceneOptimizer!,\r\n newConfiguration: optimizerConfig,\r\n });\r\n }\r\n\r\n /**\r\n * configure all models using the configuration.\r\n * @param modelConfiguration the configuration to use to reconfigure the models\r\n */\r\n /*protected _configureModel(modelConfiguration: Partial<IModelConfiguration>) {\r\n this.models.forEach(model => {\r\n model.updateConfiguration(modelConfiguration);\r\n });\r\n\r\n this.onModelsConfiguredObservable.notifyObservers({\r\n sceneManager: this,\r\n object: this.models,\r\n newConfiguration: modelConfiguration\r\n });\r\n }*/\r\n\r\n protected _configureVR(vrConfig: IVRConfiguration) {\r\n if (vrConfig.disabled) {\r\n if (this._vrHelper) {\r\n if (this._vrHelper.isInVRMode) {\r\n this._vrHelper.exitVR();\r\n }\r\n this._vrHelper.dispose();\r\n this._vrHelper = undefined;\r\n }\r\n return;\r\n }\r\n const vrOptions: VRExperienceHelperOptions = deepmerge(\r\n {\r\n useCustomVRButton: true,\r\n createDeviceOrientationCamera: false,\r\n trackPosition: true,\r\n },\r\n vrConfig.vrOptions || {}\r\n );\r\n\r\n this._vrHelper = this.scene.createDefaultVRExperience(vrOptions);\r\n if (!vrConfig.disableInteractions) {\r\n this._vrHelper.enableInteractions();\r\n }\r\n if (!vrConfig.disableTeleportation) {\r\n const floorMeshName = vrConfig.overrideFloorMeshName || \"BackgroundPlane\";\r\n this._vrHelper.enableTeleportation({\r\n floorMeshName,\r\n });\r\n }\r\n this._vrHelper.onEnteringVRObservable.add(() => {\r\n if (this._observablesManager) {\r\n this._observablesManager.onEnteringVRObservable.notifyObservers(this);\r\n }\r\n });\r\n this._vrHelper.onExitingVRObservable.add(() => {\r\n if (this._observablesManager) {\r\n this._observablesManager.onExitingVRObservable.notifyObservers(this);\r\n }\r\n });\r\n this.onVRConfiguredObservable.notifyObservers({\r\n sceneManager: this,\r\n object: this._vrHelper,\r\n newConfiguration: vrConfig,\r\n });\r\n }\r\n\r\n protected _configureEnvironmentMap(environmentMapConfiguration: IEnvironmentMapConfiguration): any {\r\n if (environmentMapConfiguration.texture) {\r\n this.scene.environmentTexture = new CubeTexture(this._getAssetUrl(environmentMapConfiguration.texture), this.scene);\r\n }\r\n\r\n //sanity check\r\n if (this.scene.environmentTexture) {\r\n const rotatquatRotationionY = Quaternion.RotationAxis(Axis.Y, environmentMapConfiguration.rotationY || 0);\r\n Matrix.FromQuaternionToRef(rotatquatRotationionY, this.scene.environmentTexture.getReflectionTextureMatrix());\r\n }\r\n\r\n // process mainColor changes:\r\n if (environmentMapConfiguration.mainColor) {\r\n this._configurationContainer.mainColor = this.mainColor || Color3.White();\r\n const mc = environmentMapConfiguration.mainColor;\r\n if (mc.r !== undefined) {\r\n this.mainColor.r = mc.r;\r\n }\r\n if (mc.g !== undefined) {\r\n this.mainColor.g = mc.g;\r\n }\r\n if (mc.b !== undefined) {\r\n this.mainColor.b = mc.b;\r\n }\r\n\r\n this.reflectionColor.copyFrom(this.mainColor);\r\n\r\n const environmentTint = getConfigurationKey(\"environmentMap.tintLevel\", this._globalConfiguration) || 0;\r\n\r\n // reflection color\r\n this.reflectionColor.toLinearSpaceToRef(this.reflectionColor);\r\n this.reflectionColor.scaleToRef(1 / this.scene.imageProcessingConfiguration.exposure, this.reflectionColor);\r\n const tmpColor3 = Color3.Lerp(this._white, this.reflectionColor, environmentTint);\r\n this.reflectionColor.copyFrom(tmpColor3);\r\n\r\n //update the environment, if exists\r\n if (this.environmentHelper) {\r\n if (this.environmentHelper.groundMaterial) {\r\n this.environmentHelper.groundMaterial._perceptualColor = this.mainColor;\r\n }\r\n\r\n if (this.environmentHelper.skyboxMaterial) {\r\n this.environmentHelper.skyboxMaterial._perceptualColor = this.mainColor;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * (Re) configure the camera. The camera will only be created once and from this point will only be reconfigured.\r\n * @param cameraConfig the new camera configuration\r\n */\r\n protected _configureCamera(cameraConfig: ICameraConfiguration = {}) {\r\n if (!this.scene.activeCamera) {\r\n // Inline scene.createDefaultCamera to reduce file size\r\n // Dispose existing camera in replace mode.\r\n if (this.scene.activeCamera) {\r\n (this.scene.activeCamera as ArcRotateCamera).dispose();\r\n this.scene.activeCamera = null;\r\n }\r\n // Camera\r\n if (!this.scene.activeCamera) {\r\n const worldExtends = this.scene.getWorldExtends();\r\n const worldSize = worldExtends.max.subtract(worldExtends.min);\r\n const worldCenter = worldExtends.min.add(worldSize.scale(0.5));\r\n\r\n let radius = worldSize.length() * 1.5;\r\n // empty scene scenario!\r\n if (!isFinite(radius)) {\r\n radius = 1;\r\n worldCenter.copyFromFloats(0, 0, 0);\r\n }\r\n\r\n const arcRotateCamera = new ArcRotateCamera(\"default camera\", -(Math.PI / 2), Math.PI / 2, radius, worldCenter, this.scene);\r\n arcRotateCamera.lowerRadiusLimit = radius * 0.01;\r\n arcRotateCamera.wheelPrecision = 100 / radius;\r\n const camera = arcRotateCamera;\r\n\r\n camera.minZ = radius * 0.01;\r\n camera.maxZ = radius * 1000;\r\n camera.speed = radius * 0.2;\r\n this.scene.activeCamera = camera;\r\n }\r\n const canvas = this.scene.getEngine().getInputElement();\r\n if (canvas) {\r\n this.scene.activeCamera.attachControl();\r\n }\r\n\r\n this.camera = <ArcRotateCamera>this.scene.activeCamera!;\r\n this.camera.setTarget(Vector3.Zero());\r\n }\r\n if (!this.camera) {\r\n this.camera = <ArcRotateCamera>this.scene.activeCamera!;\r\n }\r\n if (cameraConfig.position) {\r\n const newPosition = this.camera.position.clone();\r\n extendClassWithConfig(newPosition, cameraConfig.position);\r\n this.camera.setPosition(newPosition);\r\n }\r\n\r\n if (cameraConfig.target) {\r\n const newTarget = this.camera.target.clone();\r\n extendClassWithConfig(newTarget, cameraConfig.target);\r\n this.camera.setTarget(newTarget);\r\n } /*else if (this.models.length && !cameraConfig.disableAutoFocus) {\r\n this._focusOnModel(this.models[0]);\r\n }*/\r\n\r\n if (cameraConfig.rotation) {\r\n this.camera.rotationQuaternion = new Quaternion(cameraConfig.rotation.x || 0, cameraConfig.rotation.y || 0, cameraConfig.rotation.z || 0, cameraConfig.rotation.w || 0);\r\n }\r\n\r\n if (cameraConfig.behaviors) {\r\n for (const name in cameraConfig.behaviors) {\r\n if (cameraConfig.behaviors[name] !== undefined) {\r\n this._setCameraBehavior(name, cameraConfig.behaviors[name]);\r\n }\r\n }\r\n }\r\n\r\n const sceneExtends = this.scene.getWorldExtends((mesh) => {\r\n return !this.environmentHelper || (mesh !== this.environmentHelper.ground && mesh !== this.environmentHelper.rootMesh && mesh !== this.environmentHelper.skybox);\r\n });\r\n const sceneDiagonal = sceneExtends.max.subtract(sceneExtends.min);\r\n const sceneDiagonalLength = sceneDiagonal.length();\r\n if (isFinite(sceneDiagonalLength)) {\r\n this.camera.upperRadiusLimit = sceneDiagonalLength * 4;\r\n }\r\n\r\n // sanity check!\r\n if (this.scene.imageProcessingConfiguration) {\r\n this.scene.imageProcessingConfiguration.colorCurvesEnabled = true;\r\n this.scene.imageProcessingConfiguration.vignetteEnabled = true;\r\n this.scene.imageProcessingConfiguration.toneMappingEnabled = !!getConfigurationKey(\"camera.toneMappingEnabled\", this._globalConfiguration);\r\n }\r\n\r\n extendClassWithConfig(this.camera, cameraConfig);\r\n\r\n this.onCameraConfiguredObservable.notifyObservers({\r\n sceneManager: this,\r\n object: this.camera,\r\n newConfiguration: cameraConfig,\r\n });\r\n }\r\n\r\n private _focusOnModel = (model: ViewerModel) => {\r\n const boundingInfo = model.rootMesh.getHierarchyBoundingVectors(true);\r\n const sizeVec = boundingInfo.max.subtract(boundingInfo.min);\r\n const halfSizeVec = sizeVec.scale(0.5);\r\n const center = boundingInfo.min.add(halfSizeVec);\r\n this.camera.setTarget(center);\r\n this.camera.alpha = (this._globalConfiguration.camera && this._globalConfiguration.camera.alpha) || this.camera.alpha;\r\n this.camera.beta = (this._globalConfiguration.camera && this._globalConfiguration.camera.beta) || this.camera.beta;\r\n this.camera.radius = (this._globalConfiguration.camera && this._globalConfiguration.camera.radius) || this.camera.radius;\r\n\r\n const sceneDiagonalLenght = sizeVec.length();\r\n if (isFinite(sceneDiagonalLenght)) {\r\n this.camera.upperRadiusLimit = sceneDiagonalLenght * 4;\r\n }\r\n\r\n if (this._configurationContainer.configuration) {\r\n this._configureEnvironment(this._configurationContainer.configuration.skybox, this._configurationContainer.configuration.ground);\r\n }\r\n /*this.scene.lights.filter(light => light instanceof ShadowLight).forEach(light => {\r\n // casting ais safe, due to the constraints tested before\r\n (<ShadowLight>light).setDirectionToTarget(center);\r\n });*/\r\n };\r\n\r\n protected _configureEnvironment(skyboxConifguration?: ISkyboxConfiguration | boolean, groundConfiguration?: IGroundConfiguration | boolean) {\r\n if (!skyboxConifguration && !groundConfiguration) {\r\n if (this.environmentHelper) {\r\n this.environmentHelper.dispose();\r\n this.environmentHelper = undefined;\r\n }\r\n } else {\r\n const options: Partial<IEnvironmentHelperOptions> = {\r\n createGround: !!groundConfiguration && this._groundEnabled,\r\n createSkybox: !!skyboxConifguration,\r\n setupImageProcessing: false, // will be done at the scene level!,\r\n };\r\n\r\n // will that cause problems with model ground configuration?\r\n /*if (model) {\r\n const boundingInfo = model.rootMesh.getHierarchyBoundingVectors(true);\r\n const sizeVec = boundingInfo.max.subtract(boundingInfo.min);\r\n const halfSizeVec = sizeVec.scale(0.5);\r\n const center = boundingInfo.min.add(halfSizeVec);\r\n options.groundYBias = -center.y;\r\n }*/\r\n\r\n if (groundConfiguration) {\r\n const groundConfig = typeof groundConfiguration === \"boolean\" ? {} : groundConfiguration;\r\n\r\n const groundSize = groundConfig.size || (typeof skyboxConifguration === \"object\" && skyboxConifguration.scale);\r\n if (groundSize) {\r\n options.groundSize = groundSize;\r\n }\r\n\r\n options.enableGroundShadow = groundConfiguration === true || groundConfig.receiveShadows;\r\n if (groundConfig.shadowLevel !== undefined) {\r\n options.groundShadowLevel = groundConfig.shadowLevel;\r\n }\r\n options.enableGroundMirror = !!groundConfig.mirror && this.groundMirrorEnabled;\r\n if (groundConfig.texture) {\r\n options.groundTexture = this._getAssetUrl(groundConfig.texture);\r\n }\r\n if (groundConfig.color) {\r\n options.groundColor = new Color3(groundConfig.color.r, groundConfig.color.g, groundConfig.color.b);\r\n }\r\n\r\n if (groundConfig.opacity !== undefined) {\r\n options.groundOpacity = groundConfig.opacity;\r\n }\r\n\r\n if (groundConfig.mirror) {\r\n options.enableGroundMirror = true;\r\n // to prevent undefines\r\n if (typeof groundConfig.mirror === \"object\") {\r\n if (groundConfig.mirror.amount !== undefined) {\r\n options.groundMirrorAmount = groundConfig.mirror.amount;\r\n }\r\n if (groundConfig.mirror.sizeRatio !== undefined) {\r\n options.groundMirrorSizeRatio = groundConfig.mirror.sizeRatio;\r\n }\r\n if (groundConfig.mirror.blurKernel !== undefined) {\r\n options.groundMirrorBlurKernel = groundConfig.mirror.blurKernel;\r\n }\r\n if (groundConfig.mirror.fresnelWeight !== undefined) {\r\n options.groundMirrorFresnelWeight = groundConfig.mirror.fresnelWeight;\r\n }\r\n if (groundConfig.mirror.fallOffDistance !== undefined) {\r\n options.groundMirrorFallOffDistance = groundConfig.mirror.fallOffDistance;\r\n }\r\n if (this._defaultPipelineTextureType !== undefined) {\r\n options.groundMirrorTextureType = this._defaultPipelineTextureType;\r\n }\r\n }\r\n }\r\n }\r\n\r\n let postInitSkyboxMaterial = false;\r\n if (skyboxConifguration) {\r\n const conf = skyboxConifguration === true ? {} : skyboxConifguration;\r\n if (conf.material && conf.material.imageProcessingConfiguration) {\r\n options.setupImageProcessing = false; // will be configured later manually.\r\n }\r\n const skyboxSize = conf.scale;\r\n if (skyboxSize) {\r\n options.skyboxSize = skyboxSize;\r\n }\r\n options.sizeAuto = !options.skyboxSize;\r\n if (conf.color) {\r\n options.skyboxColor = new Color3(conf.color.r, conf.color.g, conf.color.b);\r\n }\r\n if (conf.cubeTexture && conf.cubeTexture.url) {\r\n if (typeof conf.cubeTexture.url === \"string\") {\r\n options.skyboxTexture = this._getAssetUrl(conf.cubeTexture.url);\r\n } else {\r\n // init later!\r\n postInitSkyboxMaterial = true;\r\n }\r\n }\r\n\r\n if (conf.material) {\r\n postInitSkyboxMaterial = true;\r\n }\r\n }\r\n\r\n options.setupImageProcessing = false; // TMP\r\n\r\n if (!this.environmentHelper) {\r\n this.environmentHelper = new EnvironmentHelper(options, this.scene);\r\n } else {\r\n // unlikely, but there might be a new scene! we need to dispose.\r\n\r\n // get the scene used by the envHelper\r\n const scene: Scene = this.environmentHelper.rootMesh.getScene();\r\n // is it a different scene? Oh no!\r\n if (scene !== this.scene) {\r\n this.environmentHelper.dispose();\r\n this.environmentHelper = new EnvironmentHelper(options, this.scene);\r\n } else {\r\n // recreate the ground\r\n if (this.environmentHelper.ground) {\r\n this.environmentHelper.ground.dispose();\r\n }\r\n // recreate the skybox\r\n if (this.environmentHelper.skybox) {\r\n this.environmentHelper.skybox.dispose();\r\n }\r\n\r\n this.environmentHelper.updateOptions(options)!;\r\n // update doesn't change the size of the skybox and ground, so we have to recreate!\r\n //this.environmentHelper.dispose();\r\n //this.environmentHelper = new EnvironmentHelper(options, this.scene);\r\n }\r\n }\r\n\r\n if (this.environmentHelper.rootMesh && this._globalConfiguration.scene && this._globalConfiguration.scene.environmentRotationY !== undefined) {\r\n this.environmentHelper.rootMesh.rotation.y = this._globalConfiguration.scene.environmentRotationY;\r\n }\r\n\r\n const groundConfig = typeof groundConfiguration === \"boolean\" ? {} : groundConfiguration;\r\n if (this.environmentHelper.groundMaterial && groundConfig) {\r\n this.environmentHelper.groundMaterial._perceptualColor = this.mainColor;\r\n if (groundConfig.material) {\r\n extendClassWithConfig(this.environmentHelper.groundMaterial, groundConfig.material);\r\n }\r\n\r\n if (this.environmentHelper.groundMirror) {\r\n const mirrorClearColor = this.environmentHelper.groundMaterial._perceptualColor.toLinearSpace();\r\n // TODO user camera exposure value to set the mirror clear color\r\n const exposure = Math.pow(2.0, -this.scene.imageProcessingConfiguration.exposure) * Math.PI;\r\n mirrorClearColor.scaleToRef(1 / exposure, mirrorClearColor);\r\n\r\n this.environmentHelper.groundMirror.clearColor.r = Scalar.Clamp(mirrorClearColor.r);\r\n this.environmentHelper.groundMirror.clearColor.g = Scalar.Clamp(mirrorClearColor.g);\r\n this.environmentHelper.groundMirror.clearColor.b = Scalar.Clamp(mirrorClearColor.b);\r\n this.environmentHelper.groundMirror.clearColor.a = 1;\r\n\r\n if (!this.groundMirrorEnabled) {\r\n this.environmentHelper.groundMaterial.reflectionTexture = null;\r\n }\r\n }\r\n }\r\n\r\n const skyboxMaterial = this.environmentHelper.skyboxMaterial;\r\n if (skyboxMaterial) {\r\n skyboxMaterial._perceptualColor = this.mainColor;\r\n\r\n if (postInitSkyboxMaterial) {\r\n if (typeof skyboxConifguration === \"object\" && skyboxConifguration.material) {\r\n extendClassWithConfig(skyboxMaterial, skyboxConifguration.material);\r\n }\r\n }\r\n }\r\n }\r\n\r\n this._observablesManager &&\r\n this._observablesManager.onModelLoadedObservable.add((model) => {\r\n this._updateGroundMirrorRenderList(model);\r\n });\r\n\r\n this.onEnvironmentConfiguredObservable.notifyObservers({\r\n sceneManager: this,\r\n object: this.environmentHelper!,\r\n newConfiguration: {\r\n skybox: skyboxConifguration,\r\n ground: groundConfiguration,\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * configure the lights.\r\n * @param lightsConfiguration the (new) light(s) configuration\r\n */\r\n protected _configureLights(lightsConfiguration: { [name: string]: ILightConfiguration | boolean | number } = {}) {\r\n // sanity check!\r\n const lightKeys = Object.keys(lightsConfiguration).filter((name) => name !== \"globalRotation\");\r\n\r\n if (!lightKeys.length) {\r\n if (!this.scene.lights.length) {\r\n new HemisphericLight(\"default light\", Vector3.Up(), this.scene);\r\n }\r\n } else {\r\n let lightsAvailable: Array<string> = this.scene.lights.map((light) => light.name);\r\n // compare to the global (!) configuration object and dispose unneeded:\r\n const lightsToConfigure = Object.keys(this._globalConfiguration.lights || []);\r\n if (Object.keys(lightsToConfigure).length !== lightsAvailable.length) {\r\n lightsAvailable.forEach((lName) => {\r\n if (lightsToConfigure.indexOf(lName) === -1) {\r\n this.scene.getLightByName(lName)!.dispose();\r\n }\r\n });\r\n }\r\n\r\n lightKeys.forEach((name) => {\r\n let lightConfig: ILightConfiguration = { type: 0 };\r\n if (typeof lightsConfiguration[name] === \"object\") {\r\n lightConfig = <ILightConfiguration>lightsConfiguration[name];\r\n }\r\n if (typeof lightsConfiguration[name] === \"number\") {\r\n lightConfig.type = <number>lightsConfiguration[name];\r\n }\r\n\r\n lightConfig.name = name;\r\n\r\n let light: Light;\r\n // light is not already available\r\n if (lightsAvailable.indexOf(name) === -1) {\r\n const constructor = Light.GetConstructorFromName(lightConfig.type, lightConfig.name, this.scene);\r\n if (!constructor) {\r\n return;\r\n }\r\n light = constructor();\r\n } else {\r\n // available? get it from the scene\r\n light = <Light>this.scene.getLightByName(name);\r\n if (typeof lightsConfiguration[name] === \"boolean\") {\r\n lightConfig.type = light.getTypeID();\r\n }\r\n lightsAvailable = lightsAvailable.filter((ln) => ln !== name);\r\n if (lightConfig.type !== undefined && light.getTypeID() !== lightConfig.type) {\r\n light.dispose();\r\n const constructor = Light.GetConstructorFromName(lightConfig.type, lightConfig.name, this.scene);\r\n if (!constructor) {\r\n return;\r\n }\r\n light = constructor();\r\n }\r\n }\r\n\r\n // if config set the light to false, dispose it.\r\n if (lightsConfiguration[name] === false) {\r\n light.dispose();\r\n return;\r\n }\r\n\r\n //enabled\r\n const enabled = lightConfig.enabled !== undefined ? lightConfig.enabled : !lightConfig.disabled;\r\n light.setEnabled(enabled);\r\n\r\n extendClassWithConfig(light, lightConfig);\r\n\r\n //position. Some lights don't support shadows\r\n if (light instanceof ShadowLight) {\r\n // set default values\r\n light.shadowMinZ = light.shadowMinZ || 0.2;\r\n light.shadowMaxZ = Math.min(10, light.shadowMaxZ || 10); //large far clips reduce shadow depth precision\r\n\r\n if (lightConfig.target) {\r\n if (light.setDirectionToTarget) {\r\n const target = Vector3.Zero().copyFromFloats(lightConfig.target.x, lightConfig.target.y, lightConfig.target.z);\r\n light.setDirectionToTarget(target);\r\n }\r\n } else if (lightConfig.direction) {\r\n const direction = Vector3.Zero().copyFromFloats(lightConfig.direction.x, lightConfig.direction.y, lightConfig.direction.z);\r\n light.direction = direction;\r\n }\r\n\r\n let isShadowEnabled = false;\r\n if (light.getTypeID() === Light.LIGHTTYPEID_DIRECTIONALLIGHT) {\r\n (<DirectionalLight>light).shadowFrustumSize = lightConfig.shadowFrustumSize || 2;\r\n isShadowEnabled = true;\r\n } else if (light.getTypeID() === Light.LIGHTTYPEID_SPOTLIGHT) {\r\n const spotLight: SpotLight = <SpotLight>light;\r\n if (lightConfig.spotAngle !== undefined) {\r\n spotLight.angle = (lightConfig.spotAngle * Math.PI) / 180;\r\n }\r\n if (spotLight.angle && lightConfig.shadowFieldOfView) {\r\n spotLight.shadowAngleScale = lightConfig.shadowFieldOfView / spotLight.angle;\r\n }\r\n isShadowEnabled = true;\r\n } else if (light.getTypeID() === Light.LIGHTTYPEID_POINTLIGHT) {\r\n if (lightConfig.shadowFieldOfView) {\r\n (<PointLight>light).shadowAngle = (lightConfig.shadowFieldOfView * Math.PI) / 180;\r\n }\r\n isShadowEnabled = true;\r\n }\r\n\r\n let shadowGenerator = <ShadowGenerator>light.getShadowGenerator();\r\n if (isShadowEnabled && lightConfig.shadowEnabled && this._maxShadows) {\r\n const bufferSize = lightConfig.shadowBufferSize || 256;\r\n\r\n if (!shadowGenerator) {\r\n shadowGenerator = new ShadowGenerator(bufferSize, light);\r\n }\r\n\r\n const blurKernel = this.getBlurKernel(light, bufferSize);\r\n shadowGenerator.bias = this._shadowGeneratorBias;\r\n shadowGenerator.blurKernel = blurKernel;\r\n //override defaults\r\n extendClassWithConfig(shadowGenerator, lightConfig.shadowConfig || {});\r\n\r\n // add the focus meshes to the shadow list\r\n this._observablesManager &&\r\n this._observablesManager.onModelLoadedObservable.add((model) => {\r\n this._updateShadowRenderList(shadowGenerator, model);\r\n });\r\n\r\n //if (model) {\r\n this._updateShadowRenderList(shadowGenerator);\r\n //}\r\n } else if (shadowGenerator) {\r\n shadowGenerator.dispose();\r\n }\r\n }\r\n });\r\n\r\n // render priority\r\n const globalLightsConfiguration = this._globalConfiguration.lights || {};\r\n Object.keys(globalLightsConfiguration)\r\n .sort()\r\n .forEach((name, idx) => {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n // const configuration = globalLightsConfiguration[name];\r\n const light = this.scene.getLightByName(name);\r\n // sanity check\r\n if (!light) {\r\n return;\r\n }\r\n light.renderPriority = -idx;\r\n });\r\n }\r\n\r\n this.onLightsConfiguredObservable.notifyObservers({\r\n sceneManager: this,\r\n object: this.scene.lights,\r\n newConfiguration: lightsConfiguration,\r\n });\r\n }\r\n\r\n private _shadowGroundPlane: Nullable<AbstractMesh>;\r\n\r\n private _updateShadowRenderList(shadowGenerator: ShadowGenerator, model?: ViewerModel, resetList?: boolean) {\r\n const focusMeshes = model ? model.meshes : this.scene.meshes;\r\n // add the focus meshes to the shadow list\r\n const shadownMap = shadowGenerator.getShadowMap();\r\n if (!shadownMap) {\r\n return;\r\n }\r\n if (resetList && shadownMap.renderList) {\r\n shadownMap.renderList.length = 0;\r\n } else {\r\n shadownMap.renderList = shadownMap.renderList || [];\r\n }\r\n for (let index = 0; index < focusMeshes.length; index++) {\r\n const mesh = focusMeshes[index];\r\n if (Tags.MatchesQuery(mesh, \"castShadow\") && shadownMap.renderList.indexOf(mesh) === -1) {\r\n shadownMap.renderList.push(mesh);\r\n }\r\n }\r\n\r\n if (!this._shadowGroundPlane) {\r\n if (shadowGenerator.useBlurCloseExponentialShadowMap) {\r\n const shadowGroundPlane = CreatePlane(\"shadowGroundPlane\", { size: 100 }, this.scene);\r\n shadowGroundPlane.useVertexColors = false;\r\n //material isn't ever used in rendering, just used to set back face culling\r\n shadowGroundPlane.material = new PBRMaterial(\"shadowGroundPlaneMaterial\", this.scene);\r\n shadowGroundPlane.material.backFaceCulling = false;\r\n shadowGroundPlane.rotation.x = Math.PI * 0.5;\r\n shadowGroundPlane.freezeWorldMatrix();\r\n this._shadowGroundPlane = shadowGroundPlane;\r\n this.scene.removeMesh(shadowGroundPlane);\r\n }\r\n } else {\r\n if (!shadowGenerator.useBlurCloseExponentialShadowMap) {\r\n this._shadowGroundPlane.dispose();\r\n this._shadowGroundPlane = null;\r\n }\r\n }\r\n\r\n if (this._shadowGroundPlane && shadownMap.renderList.indexOf(this._shadowGroundPlane) === -1) {\r\n shadownMap.renderList.push(this._shadowGroundPlane);\r\n }\r\n }\r\n\r\n private _updateGroundMirrorRenderList(model?: ViewerModel, resetList?: boolean) {\r\n if (this.environmentHelper && this.environmentHelper.groundMirror && this.environmentHelper.groundMirror.renderList) {\r\n const focusMeshes = model ? model.meshes : this.scene.meshes;\r\n const renderList = this.environmentHelper.groundMirror.renderList;\r\n if (resetList) {\r\n renderList.length = 0;\r\n }\r\n for (let index = 0; index < focusMeshes.length; index++) {\r\n const mesh = focusMeshes[index];\r\n if (renderList.indexOf(mesh) === -1) {\r\n renderList.push(mesh);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Gets the shadow map blur kernel according to the light configuration.\r\n * @param light The light used to generate the shadows\r\n * @param bufferSize The size of the shadow map\r\n * @returns the kernel blur size\r\n */\r\n public getBlurKernel(light: IShadowLight, bufferSize: number): number {\r\n let normalizedBlurKernel = 0.05; // TODO Should come from the config.\r\n if (light.getTypeID() === Light.LIGHTTYPEID_DIRECTIONALLIGHT) {\r\n normalizedBlurKernel = normalizedBlurKernel / (<DirectionalLight>light).shadowFrustumSize;\r\n } else if (light.getTypeID() === Light.LIGHTTYPEID_POINTLIGHT) {\r\n normalizedBlurKernel = normalizedBlurKernel / (<PointLight>light).shadowAngle;\r\n } else if (light.getTypeID() === Light.LIGHTTYPEID_SPOTLIGHT) {\r\n normalizedBlurKernel = normalizedBlurKernel / ((<SpotLight>light).angle * (<SpotLight>light).shadowAngleScale);\r\n }\r\n\r\n const minimumBlurKernel = 5 / (bufferSize / 256); //magic number that aims to keep away sawtooth shadows\r\n\r\n const blurKernel = Math.max(bufferSize * normalizedBlurKernel, minimumBlurKernel);\r\n return blurKernel;\r\n }\r\n\r\n /**\r\n * Alters render settings to reduce features based on hardware feature limitations\r\n * @param enableHDR Allows the viewer to run in HDR mode.\r\n */\r\n protected _handleHardwareLimitations(enableHDR = true) {\r\n //flip rendering settings switches based on hardware support\r\n const maxVaryingRows = this._engine.getCaps().maxVaryingVectors;\r\n const maxFragmentSamplers = this._engine.getCaps().maxTexturesImageUnits;\r\n\r\n //shadows are disabled if there's not enough varyings for a single shadow\r\n if (maxVaryingRows < 8 || maxFragmentSamplers < 8) {\r\n this._maxShadows = 0;\r\n } else {\r\n this._maxShadows = 3;\r\n }\r\n\r\n //can we render to any >= 16-bit targets (required for HDR)\r\n const caps = this._engine.getCaps();\r\n const linearHalfFloatTargets = caps.textureHalfFloatRender && caps.textureHalfFloatLinearFiltering;\r\n const linearFloatTargets = caps.textureFloatRender && caps.textureFloatLinearFiltering;\r\n\r\n this._hdrSupport = enableHDR && !!(linearFloatTargets || linearHalfFloatTargets);\r\n\r\n if (linearHalfFloatTargets) {\r\n this._defaultHighpTextureType = Constants.TEXTURETYPE_HALF_FLOAT;\r\n this._shadowGeneratorBias = 0.002;\r\n } else if (linearFloatTargets) {\r\n this._defaultHighpTextureType = Constants.TEXTURETYPE_FLOAT;\r\n this._shadowGeneratorBias = 0.001;\r\n } else {\r\n this._defaultHighpTextureType = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n this._shadowGeneratorBias = 0.001;\r\n }\r\n\r\n this._defaultPipelineTextureType = this._hdrSupport ? this._defaultHighpTextureType : Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n }\r\n\r\n /**\r\n * Dispose the entire viewer including the scene and the engine\r\n */\r\n public dispose() {\r\n // this.onCameraConfiguredObservable.clear();\r\n this.onEnvironmentConfiguredObservable.clear();\r\n this.onLightsConfiguredObservable.clear();\r\n this.onModelsConfiguredObservable.clear();\r\n this.onSceneConfiguredObservable.clear();\r\n this.onSceneInitObservable.clear();\r\n this.onSceneOptimizerConfiguredObservable.clear();\r\n this.onVRConfiguredObservable.clear();\r\n\r\n if (this.sceneOptimizer) {\r\n this.sceneOptimizer.stop();\r\n this.sceneOptimizer.dispose();\r\n }\r\n\r\n if (this.environmentHelper) {\r\n this.environmentHelper.dispose();\r\n }\r\n\r\n this.models.forEach((model) => {\r\n model.dispose();\r\n });\r\n\r\n if (this._defaultRenderingPipeline) {\r\n this._defaultRenderingPipeline.dispose();\r\n }\r\n\r\n this.models.length = 0;\r\n\r\n if (this.scene) {\r\n this.scene.dispose();\r\n }\r\n }\r\n\r\n /**\r\n * Get an environment asset url by using the configuration if the path is not absolute.\r\n * @param url Asset url\r\n * @returns The Asset url using the `environmentAssetsRootURL` if the url is not an absolute path.\r\n */\r\n private _getAssetUrl(url: string): string {\r\n let returnUrl = url;\r\n if (url && url.toLowerCase().indexOf(\"//\") === -1) {\r\n if (!this._assetsRootURL) {\r\n // Tools.Warn(\"Please, specify the root url of your assets before loading the configuration (labs.environmentAssetsRootURL) or disable the background through the viewer options.\");\r\n return url;\r\n }\r\n\r\n returnUrl = this._assetsRootURL + returnUrl;\r\n }\r\n\r\n return returnUrl;\r\n }\r\n\r\n private _cameraBehaviorMapping: { [name: string]: number } = {};\r\n\r\n private _setCameraBehavior(\r\n name: string,\r\n behaviorConfig:\r\n | boolean\r\n | number\r\n | {\r\n type: number;\r\n [propName: string]: any;\r\n }\r\n ) {\r\n let behavior: Behavior<ArcRotateCamera> | null;\r\n let type: number;\r\n if (typeof behaviorConfig === \"object\") {\r\n type = behaviorConfig.type;\r\n } else if (typeof behaviorConfig === \"number\") {\r\n type = behaviorConfig;\r\n } else {\r\n type = this._cameraBehaviorMapping[name];\r\n }\r\n\r\n if (type === undefined) {\r\n return;\r\n }\r\n\r\n const config: { [propName: string]: any } = typeof behaviorConfig === \"object\" ? behaviorConfig : {};\r\n\r\n let enabled = true;\r\n if (typeof behaviorConfig === \"boolean\") {\r\n enabled = behaviorConfig;\r\n }\r\n\r\n // constructing behavior\r\n switch (type) {\r\n case CameraBehavior.AUTOROTATION:\r\n this.camera.useAutoRotationBehavior = enabled;\r\n behavior = this.camera.autoRotationBehavior;\r\n break;\r\n case CameraBehavior.BOUNCING:\r\n this.camera.useBouncingBehavior = enabled;\r\n behavior = this.camera.bouncingBehavior;\r\n break;\r\n case CameraBehavior.FRAMING:\r\n this.camera.useFramingBehavior = enabled;\r\n behavior = this.camera.framingBehavior;\r\n break;\r\n default:\r\n behavior = null;\r\n break;\r\n }\r\n\r\n if (behavior) {\r\n this._cameraBehaviorMapping[name] = type;\r\n\r\n if (typeof behaviorConfig === \"object\") {\r\n extendClassWithConfig(behavior, behaviorConfig);\r\n }\r\n }\r\n\r\n // post attach configuration. Some functionalities require the attached camera.\r\n switch (type) {\r\n case CameraBehavior.AUTOROTATION:\r\n break;\r\n case CameraBehavior.BOUNCING:\r\n break;\r\n case CameraBehavior.FRAMING:\r\n this._observablesManager &&\r\n this._observablesManager.onModelLoadedObservable.add((model) => {\r\n if (config.zoomOnBoundingInfo) {\r\n (<FramingBehavior>behavior).zoomOnMeshHierarchy(model.rootMesh);\r\n }\r\n });\r\n break;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Observable } from "@babylonjs/core/Misc/observable.js";
|
|
2
|
+
import type { AbstractEngine } from "@babylonjs/core/Engines/abstractEngine.js";
|
|
3
|
+
/**
|
|
4
|
+
* The data structure of a telemetry event.
|
|
5
|
+
*/
|
|
6
|
+
export interface TelemetryData {
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
event: string;
|
|
11
|
+
/**
|
|
12
|
+
*
|
|
13
|
+
*/
|
|
14
|
+
session: string;
|
|
15
|
+
/**
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
date: Date;
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
now: number;
|
|
23
|
+
/**
|
|
24
|
+
*
|
|
25
|
+
*/
|
|
26
|
+
viewerId?: string;
|
|
27
|
+
/**
|
|
28
|
+
*
|
|
29
|
+
*/
|
|
30
|
+
detail: any;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Receives Telemetry events and raises events to the API
|
|
34
|
+
*/
|
|
35
|
+
export declare class TelemetryManager {
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
*/
|
|
39
|
+
onEventBroadcastedObservable: Observable<TelemetryData>;
|
|
40
|
+
private _currentSessionId;
|
|
41
|
+
private _event;
|
|
42
|
+
/**
|
|
43
|
+
* Receives a telemetry event
|
|
44
|
+
*/
|
|
45
|
+
get broadcast(): (event: string, viewerId?: string, details?: any) => void;
|
|
46
|
+
/**
|
|
47
|
+
* Log a Telemetry event for errors raised on the WebGL context.
|
|
48
|
+
* @param engine The Babylon engine with the WebGL context.
|
|
49
|
+
* @param viewerId
|
|
50
|
+
*/
|
|
51
|
+
flushWebGLErrors(engine: AbstractEngine, viewerId?: string): void;
|
|
52
|
+
/**
|
|
53
|
+
* Enable or disable telemetry events
|
|
54
|
+
* @param enabled Boolean, true if events are enabled
|
|
55
|
+
*/
|
|
56
|
+
set enable(enabled: boolean);
|
|
57
|
+
/**
|
|
58
|
+
* Called on event when disabled, typically do nothing here
|
|
59
|
+
*/
|
|
60
|
+
private _eventDisabled;
|
|
61
|
+
/**
|
|
62
|
+
* Called on event when enabled
|
|
63
|
+
* @param event - The name of the Telemetry event
|
|
64
|
+
* @param viewerId
|
|
65
|
+
* @param details An additional value, or an object containing a list of property/value pairs
|
|
66
|
+
*/
|
|
67
|
+
private _eventEnabled;
|
|
68
|
+
/**
|
|
69
|
+
* Returns the current session ID or creates one if it doesn't exist
|
|
70
|
+
* @returns The current session ID
|
|
71
|
+
*/
|
|
72
|
+
get session(): string;
|
|
73
|
+
/**
|
|
74
|
+
* Disposes the telemetry manager
|
|
75
|
+
*/
|
|
76
|
+
dispose(): void;
|
|
77
|
+
}
|
|
78
|
+
export declare const telemetryManager: TelemetryManager;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { Observable } from "@babylonjs/core/Misc/observable.js";
|
|
2
|
+
/**
|
|
3
|
+
* Receives Telemetry events and raises events to the API
|
|
4
|
+
*/
|
|
5
|
+
var TelemetryManager = /** @class */ (function () {
|
|
6
|
+
function TelemetryManager() {
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
this.onEventBroadcastedObservable = new Observable();
|
|
11
|
+
this._event = this._eventEnabled;
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(TelemetryManager.prototype, "broadcast", {
|
|
14
|
+
/**
|
|
15
|
+
* Receives a telemetry event
|
|
16
|
+
*/
|
|
17
|
+
get: function () {
|
|
18
|
+
return this._event;
|
|
19
|
+
},
|
|
20
|
+
enumerable: false,
|
|
21
|
+
configurable: true
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
24
|
+
* Log a Telemetry event for errors raised on the WebGL context.
|
|
25
|
+
* @param engine The Babylon engine with the WebGL context.
|
|
26
|
+
* @param viewerId
|
|
27
|
+
*/
|
|
28
|
+
TelemetryManager.prototype.flushWebGLErrors = function (engine, viewerId) {
|
|
29
|
+
if (!engine) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
var logErrors = true;
|
|
33
|
+
while (logErrors) {
|
|
34
|
+
var error = engine.getError();
|
|
35
|
+
if (error === 0) {
|
|
36
|
+
logErrors = false;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.broadcast("WebGL Error", viewerId, { error: error });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
Object.defineProperty(TelemetryManager.prototype, "enable", {
|
|
44
|
+
/**
|
|
45
|
+
* Enable or disable telemetry events
|
|
46
|
+
* @param enabled Boolean, true if events are enabled
|
|
47
|
+
*/
|
|
48
|
+
set: function (enabled) {
|
|
49
|
+
if (enabled) {
|
|
50
|
+
this._event = this._eventEnabled;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this._event = this._eventDisabled;
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
enumerable: false,
|
|
57
|
+
configurable: true
|
|
58
|
+
});
|
|
59
|
+
/**
|
|
60
|
+
* Called on event when disabled, typically do nothing here
|
|
61
|
+
*/
|
|
62
|
+
TelemetryManager.prototype._eventDisabled = function () {
|
|
63
|
+
// nothing to do
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Called on event when enabled
|
|
67
|
+
* @param event - The name of the Telemetry event
|
|
68
|
+
* @param viewerId
|
|
69
|
+
* @param details An additional value, or an object containing a list of property/value pairs
|
|
70
|
+
*/
|
|
71
|
+
TelemetryManager.prototype._eventEnabled = function (event, viewerId, details) {
|
|
72
|
+
var telemetryData = {
|
|
73
|
+
viewerId: viewerId,
|
|
74
|
+
event: event,
|
|
75
|
+
session: this.session,
|
|
76
|
+
date: new Date(),
|
|
77
|
+
now: window.performance ? window.performance.now() : Date.now(),
|
|
78
|
+
detail: null,
|
|
79
|
+
};
|
|
80
|
+
if (typeof details === "object") {
|
|
81
|
+
for (var attr in details) {
|
|
82
|
+
if (Object.prototype.hasOwnProperty.call(details, attr)) {
|
|
83
|
+
telemetryData[attr] = details[attr];
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else if (details) {
|
|
88
|
+
telemetryData.detail = details;
|
|
89
|
+
}
|
|
90
|
+
this.onEventBroadcastedObservable.notifyObservers(telemetryData);
|
|
91
|
+
};
|
|
92
|
+
Object.defineProperty(TelemetryManager.prototype, "session", {
|
|
93
|
+
/**
|
|
94
|
+
* Returns the current session ID or creates one if it doesn't exist
|
|
95
|
+
* @returns The current session ID
|
|
96
|
+
*/
|
|
97
|
+
get: function () {
|
|
98
|
+
if (!this._currentSessionId) {
|
|
99
|
+
//String + Timestamp + Random Integer
|
|
100
|
+
this._currentSessionId = "SESSION_" + Date.now() + Math.floor(Math.random() * 0x10000);
|
|
101
|
+
}
|
|
102
|
+
return this._currentSessionId;
|
|
103
|
+
},
|
|
104
|
+
enumerable: false,
|
|
105
|
+
configurable: true
|
|
106
|
+
});
|
|
107
|
+
/**
|
|
108
|
+
* Disposes the telemetry manager
|
|
109
|
+
*/
|
|
110
|
+
TelemetryManager.prototype.dispose = function () {
|
|
111
|
+
this.onEventBroadcastedObservable.clear();
|
|
112
|
+
};
|
|
113
|
+
return TelemetryManager;
|
|
114
|
+
}());
|
|
115
|
+
export { TelemetryManager };
|
|
116
|
+
export var telemetryManager = new TelemetryManager();
|
|
117
|
+
//# sourceMappingURL=telemetryManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetryManager.js","sourceRoot":"","sources":["../../../../tools/viewer/src/managers/telemetryManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable } from \"core/Misc/observable\";\r\nimport type { AbstractEngine } from \"core/Engines/abstractEngine\";\r\n\r\n/**\r\n * The data structure of a telemetry event.\r\n */\r\nexport interface TelemetryData {\r\n /**\r\n *\r\n */\r\n event: string;\r\n /**\r\n *\r\n */\r\n session: string;\r\n /**\r\n *\r\n */\r\n date: Date;\r\n /**\r\n *\r\n */\r\n now: number;\r\n /**\r\n *\r\n */\r\n viewerId?: string;\r\n /**\r\n *\r\n */\r\n detail: any;\r\n}\r\n\r\n/**\r\n * Receives Telemetry events and raises events to the API\r\n */\r\nexport class TelemetryManager {\r\n /**\r\n *\r\n */\r\n public onEventBroadcastedObservable: Observable<TelemetryData> = new Observable();\r\n\r\n private _currentSessionId: string;\r\n\r\n private _event: (event: string, viewerId?: string, details?: any) => void = this._eventEnabled;\r\n\r\n /**\r\n * Receives a telemetry event\r\n */\r\n public get broadcast() {\r\n return this._event;\r\n }\r\n\r\n /**\r\n * Log a Telemetry event for errors raised on the WebGL context.\r\n * @param engine The Babylon engine with the WebGL context.\r\n * @param viewerId\r\n */\r\n public flushWebGLErrors(engine: AbstractEngine, viewerId?: string) {\r\n if (!engine) {\r\n return;\r\n }\r\n let logErrors = true;\r\n\r\n while (logErrors) {\r\n const error = engine.getError();\r\n if (error === 0) {\r\n logErrors = false;\r\n } else {\r\n this.broadcast(\"WebGL Error\", viewerId, { error: error });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Enable or disable telemetry events\r\n * @param enabled Boolean, true if events are enabled\r\n */\r\n public set enable(enabled: boolean) {\r\n if (enabled) {\r\n this._event = this._eventEnabled;\r\n } else {\r\n this._event = this._eventDisabled;\r\n }\r\n }\r\n\r\n /**\r\n * Called on event when disabled, typically do nothing here\r\n */\r\n private _eventDisabled(): void {\r\n // nothing to do\r\n }\r\n\r\n /**\r\n * Called on event when enabled\r\n * @param event - The name of the Telemetry event\r\n * @param viewerId\r\n * @param details An additional value, or an object containing a list of property/value pairs\r\n */\r\n private _eventEnabled(event: string, viewerId?: string, details?: any): void {\r\n const telemetryData: TelemetryData = {\r\n viewerId,\r\n event: event,\r\n session: this.session,\r\n date: new Date(),\r\n now: window.performance ? window.performance.now() : Date.now(),\r\n detail: null,\r\n };\r\n\r\n if (typeof details === \"object\") {\r\n for (const attr in details) {\r\n if (Object.prototype.hasOwnProperty.call(details, attr)) {\r\n (telemetryData as any)[attr] = details[attr];\r\n }\r\n }\r\n } else if (details) {\r\n telemetryData.detail = details;\r\n }\r\n\r\n this.onEventBroadcastedObservable.notifyObservers(telemetryData);\r\n }\r\n\r\n /**\r\n * Returns the current session ID or creates one if it doesn't exist\r\n * @returns The current session ID\r\n */\r\n public get session(): string {\r\n if (!this._currentSessionId) {\r\n //String + Timestamp + Random Integer\r\n this._currentSessionId = \"SESSION_\" + Date.now() + Math.floor(Math.random() * 0x10000);\r\n }\r\n return this._currentSessionId;\r\n }\r\n\r\n /**\r\n * Disposes the telemetry manager\r\n */\r\n public dispose() {\r\n this.onEventBroadcastedObservable.clear();\r\n }\r\n}\r\n\r\nexport const telemetryManager = new TelemetryManager();\r\n"]}
|