@babylonjs/viewer 7.25.0-alpha → 7.25.0
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 +192 -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 +350 -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 +199 -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 +27 -17
- package/readme.md +21 -35
- 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 +21 -0
- package/templating/plugins/hdButtonPlugin.js.map +1 -0
- package/templating/plugins/printButton.d.ts +9 -0
- package/templating/plugins/printButton.js +40 -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 +675 -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/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_image_based-DC9fPJli.esm.min.js +0 -2
- package/dist/chunks/EXT_lights_image_based-DC9fPJli.esm.min.js.map +0 -1
- package/dist/chunks/EXT_lights_image_based-DfFQ31PL.esm.js +0 -170
- package/dist/chunks/EXT_lights_image_based-DfFQ31PL.esm.js.map +0 -1
- package/dist/chunks/EXT_mesh_gpu_instancing-DepTQjtD.esm.min.js +0 -2
- package/dist/chunks/EXT_mesh_gpu_instancing-DepTQjtD.esm.min.js.map +0 -1
- package/dist/chunks/EXT_mesh_gpu_instancing-cqFbSeIg.esm.js +0 -86
- package/dist/chunks/EXT_mesh_gpu_instancing-cqFbSeIg.esm.js.map +0 -1
- package/dist/chunks/EXT_meshopt_compression-BZz8a7N9.esm.js +0 -134
- package/dist/chunks/EXT_meshopt_compression-BZz8a7N9.esm.js.map +0 -1
- package/dist/chunks/EXT_meshopt_compression-CjMbh6eU.esm.min.js +0 -2
- package/dist/chunks/EXT_meshopt_compression-CjMbh6eU.esm.min.js.map +0 -1
- package/dist/chunks/EXT_texture_avif-DBTOdhvO.esm.js +0 -44
- package/dist/chunks/EXT_texture_avif-DBTOdhvO.esm.js.map +0 -1
- package/dist/chunks/EXT_texture_avif-DVAZSRkl.esm.min.js +0 -2
- package/dist/chunks/EXT_texture_avif-DVAZSRkl.esm.min.js.map +0 -1
- package/dist/chunks/EXT_texture_webp-BWiEqn-s.esm.min.js +0 -2
- package/dist/chunks/EXT_texture_webp-BWiEqn-s.esm.min.js.map +0 -1
- package/dist/chunks/EXT_texture_webp-Bgb7TgNp.esm.js +0 -43
- package/dist/chunks/EXT_texture_webp-Bgb7TgNp.esm.js.map +0 -1
- package/dist/chunks/ExtrasAsMetadata-Cr7Llzvd.esm.js +0 -64
- package/dist/chunks/ExtrasAsMetadata-Cr7Llzvd.esm.js.map +0 -1
- package/dist/chunks/ExtrasAsMetadata-DGIXOpGN.esm.min.js +0 -2
- package/dist/chunks/ExtrasAsMetadata-DGIXOpGN.esm.min.js.map +0 -1
- package/dist/chunks/KHR_animation_pointer-DrmQLtaw.esm.js +0 -343
- package/dist/chunks/KHR_animation_pointer-DrmQLtaw.esm.js.map +0 -1
- package/dist/chunks/KHR_animation_pointer-IVYLBxVU.esm.min.js +0 -2
- package/dist/chunks/KHR_animation_pointer-IVYLBxVU.esm.min.js.map +0 -1
- package/dist/chunks/KHR_draco_mesh_compression-CfqHokQU.esm.min.js +0 -2
- package/dist/chunks/KHR_draco_mesh_compression-CfqHokQU.esm.min.js.map +0 -1
- package/dist/chunks/KHR_draco_mesh_compression-DZR9h5nP.esm.js +0 -610
- package/dist/chunks/KHR_draco_mesh_compression-DZR9h5nP.esm.js.map +0 -1
- package/dist/chunks/KHR_interactivity-BQOxjpC1.esm.min.js +0 -2
- package/dist/chunks/KHR_interactivity-BQOxjpC1.esm.min.js.map +0 -1
- package/dist/chunks/KHR_interactivity-BbEGVmbr.esm.js +0 -4033
- package/dist/chunks/KHR_interactivity-BbEGVmbr.esm.js.map +0 -1
- package/dist/chunks/KHR_lights_punctual-5wF2wPZ4.esm.js +0 -1253
- package/dist/chunks/KHR_lights_punctual-5wF2wPZ4.esm.js.map +0 -1
- package/dist/chunks/KHR_lights_punctual-CxE0tWFW.esm.min.js +0 -2
- package/dist/chunks/KHR_lights_punctual-CxE0tWFW.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_anisotropy-D5wj2P4R.esm.js +0 -64
- package/dist/chunks/KHR_materials_anisotropy-D5wj2P4R.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_anisotropy-DzShF01_.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_anisotropy-DzShF01_.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_clearcoat-CVlq2-J0.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_clearcoat-CVlq2-J0.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_clearcoat-v7Cuht8B.esm.js +0 -96
- package/dist/chunks/KHR_materials_clearcoat-v7Cuht8B.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_diffuse_transmission-Btv08kRf.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_diffuse_transmission-Btv08kRf.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_diffuse_transmission-DxEe_ssV.esm.js +0 -95
- package/dist/chunks/KHR_materials_diffuse_transmission-DxEe_ssV.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_dispersion-BIMxA8Vq.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_dispersion-BIMxA8Vq.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_dispersion-D_4Rt_AT.esm.js +0 -62
- package/dist/chunks/KHR_materials_dispersion-D_4Rt_AT.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_emissive_strength-BImvoUuh.esm.js +0 -55
- package/dist/chunks/KHR_materials_emissive_strength-BImvoUuh.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_emissive_strength-BidGyKyI.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_emissive_strength-BidGyKyI.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_ior-DRDijE46.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_ior-DRDijE46.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_ior-Qsq8sSTQ.esm.js +0 -64
- package/dist/chunks/KHR_materials_ior-Qsq8sSTQ.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_iridescence-BO-OSEkK.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_iridescence-BO-OSEkK.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_iridescence-Cc8j46MB.esm.js +0 -72
- package/dist/chunks/KHR_materials_iridescence-Cc8j46MB.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-Cd2w1hlF.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-Cd2w1hlF.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-DEtDFZPX.esm.js +0 -81
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-DEtDFZPX.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_sheen-2GP5jiCT.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_sheen-2GP5jiCT.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_sheen-CQ3Q14sp.esm.js +0 -85
- package/dist/chunks/KHR_materials_sheen-CQ3Q14sp.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_specular-B8bgMjMv.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_specular-B8bgMjMv.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_specular-D7P48RHW.esm.js +0 -75
- package/dist/chunks/KHR_materials_specular-D7P48RHW.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_transmission-B6NtjEPp.esm.js +0 -306
- package/dist/chunks/KHR_materials_transmission-B6NtjEPp.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_transmission-DPUUVLV8.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_transmission-DPUUVLV8.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_unlit-BRJnLegu.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_unlit-BRJnLegu.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_unlit-jqO9HFUm.esm.js +0 -74
- package/dist/chunks/KHR_materials_unlit-jqO9HFUm.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_variants-D3zo3Fn8.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_variants-D3zo3Fn8.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_variants-DVhDwsbf.esm.js +0 -238
- package/dist/chunks/KHR_materials_variants-DVhDwsbf.esm.js.map +0 -1
- package/dist/chunks/KHR_materials_volume-BBlHI00R.esm.min.js +0 -2
- package/dist/chunks/KHR_materials_volume-BBlHI00R.esm.min.js.map +0 -1
- package/dist/chunks/KHR_materials_volume-pazjLjwn.esm.js +0 -87
- package/dist/chunks/KHR_materials_volume-pazjLjwn.esm.js.map +0 -1
- package/dist/chunks/KHR_mesh_quantization-BFCOpPq5.esm.min.js +0 -2
- package/dist/chunks/KHR_mesh_quantization-BFCOpPq5.esm.min.js.map +0 -1
- package/dist/chunks/KHR_mesh_quantization-DPAOJj_N.esm.js +0 -26
- package/dist/chunks/KHR_mesh_quantization-DPAOJj_N.esm.js.map +0 -1
- package/dist/chunks/KHR_texture_basisu-BGQg840h.esm.js +0 -43
- package/dist/chunks/KHR_texture_basisu-BGQg840h.esm.js.map +0 -1
- package/dist/chunks/KHR_texture_basisu-DjOd_UYI.esm.min.js +0 -2
- package/dist/chunks/KHR_texture_basisu-DjOd_UYI.esm.min.js.map +0 -1
- package/dist/chunks/KHR_texture_transform-CIEkHeKT.esm.js +0 -63
- package/dist/chunks/KHR_texture_transform-CIEkHeKT.esm.js.map +0 -1
- package/dist/chunks/KHR_texture_transform-LAK_4q2j.esm.min.js +0 -2
- package/dist/chunks/KHR_texture_transform-LAK_4q2j.esm.min.js.map +0 -1
- package/dist/chunks/KHR_xmp_json_ld-ByF20O9F.esm.min.js +0 -2
- package/dist/chunks/KHR_xmp_json_ld-ByF20O9F.esm.min.js.map +0 -1
- package/dist/chunks/KHR_xmp_json_ld-if0NXwJy.esm.js +0 -51
- package/dist/chunks/KHR_xmp_json_ld-if0NXwJy.esm.js.map +0 -1
- package/dist/chunks/MSFT_audio_emitter-D2B5Hzz0.esm.js +0 -1608
- package/dist/chunks/MSFT_audio_emitter-D2B5Hzz0.esm.js.map +0 -1
- package/dist/chunks/MSFT_audio_emitter-k-n62mVd.esm.min.js +0 -2
- package/dist/chunks/MSFT_audio_emitter-k-n62mVd.esm.min.js.map +0 -1
- package/dist/chunks/MSFT_lod-CpIv0Ill.esm.min.js +0 -2
- package/dist/chunks/MSFT_lod-CpIv0Ill.esm.min.js.map +0 -1
- package/dist/chunks/MSFT_lod-DZ3Pv8Ql.esm.js +0 -337
- package/dist/chunks/MSFT_lod-DZ3Pv8Ql.esm.js.map +0 -1
- package/dist/chunks/MSFT_minecraftMesh-GnUA-Z1C.esm.min.js +0 -2
- package/dist/chunks/MSFT_minecraftMesh-GnUA-Z1C.esm.min.js.map +0 -1
- package/dist/chunks/MSFT_minecraftMesh-KL-RFOpw.esm.js +0 -46
- package/dist/chunks/MSFT_minecraftMesh-KL-RFOpw.esm.js.map +0 -1
- package/dist/chunks/MSFT_sRGBFactors-BqvzNhFN.esm.js +0 -47
- package/dist/chunks/MSFT_sRGBFactors-BqvzNhFN.esm.js.map +0 -1
- package/dist/chunks/MSFT_sRGBFactors-BzPS1BeM.esm.min.js +0 -2
- package/dist/chunks/MSFT_sRGBFactors-BzPS1BeM.esm.min.js.map +0 -1
- package/dist/chunks/assetContainer-CaFtpYEC.esm.min.js +0 -2
- package/dist/chunks/assetContainer-CaFtpYEC.esm.min.js.map +0 -1
- package/dist/chunks/assetContainer-DEN9e8ap.esm.js +0 -1598
- package/dist/chunks/assetContainer-DEN9e8ap.esm.js.map +0 -1
- package/dist/chunks/basisTextureLoader-4lvRsW5R.esm.js +0 -600
- package/dist/chunks/basisTextureLoader-4lvRsW5R.esm.js.map +0 -1
- package/dist/chunks/basisTextureLoader-CSgqqtvQ.esm.min.js +0 -2
- package/dist/chunks/basisTextureLoader-CSgqqtvQ.esm.min.js.map +0 -1
- package/dist/chunks/ddsTextureLoader-BIGKoQfH.esm.min.js +0 -2
- package/dist/chunks/ddsTextureLoader-BIGKoQfH.esm.min.js.map +0 -1
- package/dist/chunks/ddsTextureLoader-WkW9Z98R.esm.js +0 -87
- package/dist/chunks/ddsTextureLoader-WkW9Z98R.esm.js.map +0 -1
- package/dist/chunks/default.fragment-C5qVdkwU.esm.min.js +0 -2
- package/dist/chunks/default.fragment-C5qVdkwU.esm.min.js.map +0 -1
- package/dist/chunks/default.fragment-KU3HcVdD.esm.js +0 -515
- package/dist/chunks/default.fragment-KU3HcVdD.esm.js.map +0 -1
- package/dist/chunks/default.fragment-YuNZ7QG_.esm.js +0 -456
- package/dist/chunks/default.fragment-YuNZ7QG_.esm.js.map +0 -1
- package/dist/chunks/default.fragment-tBVj8NVU.esm.min.js +0 -2
- package/dist/chunks/default.fragment-tBVj8NVU.esm.min.js.map +0 -1
- package/dist/chunks/default.vertex-BO-PPsjL.esm.min.js +0 -2
- package/dist/chunks/default.vertex-BO-PPsjL.esm.min.js.map +0 -1
- package/dist/chunks/default.vertex-BVid4c1x.esm.js +0 -199
- package/dist/chunks/default.vertex-BVid4c1x.esm.js.map +0 -1
- package/dist/chunks/default.vertex-DyVCLPqJ.esm.js +0 -178
- package/dist/chunks/default.vertex-DyVCLPqJ.esm.js.map +0 -1
- package/dist/chunks/default.vertex-Jx_lr96D.esm.min.js +0 -2
- package/dist/chunks/default.vertex-Jx_lr96D.esm.min.js.map +0 -1
- package/dist/chunks/defaultUboDeclaration-BCAmDlbI.esm.min.js +0 -2
- package/dist/chunks/defaultUboDeclaration-BCAmDlbI.esm.min.js.map +0 -1
- package/dist/chunks/defaultUboDeclaration-Bc5r1i_z.esm.js +0 -13
- package/dist/chunks/defaultUboDeclaration-Bc5r1i_z.esm.js.map +0 -1
- package/dist/chunks/defaultUboDeclaration-BuE-DHID.esm.js +0 -15
- package/dist/chunks/defaultUboDeclaration-BuE-DHID.esm.js.map +0 -1
- package/dist/chunks/defaultUboDeclaration-DSNWa2yC.esm.min.js +0 -2
- package/dist/chunks/defaultUboDeclaration-DSNWa2yC.esm.min.js.map +0 -1
- package/dist/chunks/envTextureLoader-DMQ4NJ4V.esm.js +0 -63
- package/dist/chunks/envTextureLoader-DMQ4NJ4V.esm.js.map +0 -1
- package/dist/chunks/envTextureLoader-a8A_Oy6u.esm.min.js +0 -2
- package/dist/chunks/envTextureLoader-a8A_Oy6u.esm.min.js.map +0 -1
- package/dist/chunks/environmentTextureTools-DUKiZwIi.esm.min.js +0 -2
- package/dist/chunks/environmentTextureTools-DUKiZwIi.esm.min.js.map +0 -1
- package/dist/chunks/environmentTextureTools-nMKhR78g.esm.js +0 -381
- package/dist/chunks/environmentTextureTools-nMKhR78g.esm.js.map +0 -1
- package/dist/chunks/exrTextureLoader-D5NU09ih.esm.js +0 -1682
- package/dist/chunks/exrTextureLoader-D5NU09ih.esm.js.map +0 -1
- package/dist/chunks/exrTextureLoader-N-X2bKA6.esm.min.js +0 -2
- package/dist/chunks/exrTextureLoader-N-X2bKA6.esm.min.js.map +0 -1
- package/dist/chunks/fogFragment-D6bC8Ff4.esm.min.js +0 -2
- package/dist/chunks/fogFragment-D6bC8Ff4.esm.min.js.map +0 -1
- package/dist/chunks/fogFragment-I5stYsjp.esm.js +0 -102
- package/dist/chunks/fogFragment-I5stYsjp.esm.js.map +0 -1
- package/dist/chunks/glTFLoader-Da2YOCGR.esm.js +0 -7552
- package/dist/chunks/glTFLoader-Da2YOCGR.esm.js.map +0 -1
- package/dist/chunks/glTFLoader-Is2_r9v2.esm.min.js +0 -2
- package/dist/chunks/glTFLoader-Is2_r9v2.esm.min.js.map +0 -1
- package/dist/chunks/glTFLoaderAnimation-Bglz6m7h.esm.min.js +0 -2
- package/dist/chunks/glTFLoaderAnimation-Bglz6m7h.esm.min.js.map +0 -1
- package/dist/chunks/glTFLoaderAnimation-CbznFn_D.esm.js +0 -77
- package/dist/chunks/glTFLoaderAnimation-CbznFn_D.esm.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-BetF_GFT.esm.js +0 -35
- package/dist/chunks/harmonicsFunctions-BetF_GFT.esm.js.map +0 -1
- package/dist/chunks/harmonicsFunctions-CilRmaCi.esm.js +0 -34
- package/dist/chunks/harmonicsFunctions-CilRmaCi.esm.js.map +0 -1
- package/dist/chunks/harmonicsFunctions-DeWuwYX2.esm.min.js +0 -2
- package/dist/chunks/harmonicsFunctions-DeWuwYX2.esm.min.js.map +0 -1
- package/dist/chunks/harmonicsFunctions-DvXfJIer.esm.min.js +0 -2
- package/dist/chunks/harmonicsFunctions-DvXfJIer.esm.min.js.map +0 -1
- package/dist/chunks/hdrTextureLoader-Dcqnpgjb.esm.min.js +0 -2
- package/dist/chunks/hdrTextureLoader-Dcqnpgjb.esm.min.js.map +0 -1
- package/dist/chunks/hdrTextureLoader-byrfFp-O.esm.js +0 -252
- package/dist/chunks/hdrTextureLoader-byrfFp-O.esm.js.map +0 -1
- package/dist/chunks/helperFunctions-B7m7R064.esm.js +0 -108
- package/dist/chunks/helperFunctions-B7m7R064.esm.js.map +0 -1
- package/dist/chunks/helperFunctions-BAP7B_1V.esm.min.js +0 -2
- package/dist/chunks/helperFunctions-BAP7B_1V.esm.min.js.map +0 -1
- package/dist/chunks/helperFunctions-CigixUGL.esm.min.js +0 -2
- package/dist/chunks/helperFunctions-CigixUGL.esm.min.js.map +0 -1
- package/dist/chunks/helperFunctions-D2JAu3Um.esm.js +0 -80
- package/dist/chunks/helperFunctions-D2JAu3Um.esm.js.map +0 -1
- package/dist/chunks/index-Ba-YQVRw.esm.min.js +0 -57
- package/dist/chunks/index-Ba-YQVRw.esm.min.js.map +0 -1
- package/dist/chunks/index-DCMXQRx5.esm.js +0 -81652
- package/dist/chunks/index-DCMXQRx5.esm.js.map +0 -1
- package/dist/chunks/ktxTextureLoader-B7JJ6I6Z.esm.js +0 -814
- package/dist/chunks/ktxTextureLoader-B7JJ6I6Z.esm.js.map +0 -1
- package/dist/chunks/ktxTextureLoader-BVcuaoad.esm.min.js +0 -2
- package/dist/chunks/ktxTextureLoader-BVcuaoad.esm.min.js.map +0 -1
- package/dist/chunks/logDepthDeclaration-BJgjCQaD.esm.js +0 -42
- package/dist/chunks/logDepthDeclaration-BJgjCQaD.esm.js.map +0 -1
- package/dist/chunks/logDepthDeclaration-Bsw_jD9J.esm.js +0 -35
- package/dist/chunks/logDepthDeclaration-Bsw_jD9J.esm.js.map +0 -1
- package/dist/chunks/logDepthDeclaration-C0bLjDGt.esm.min.js +0 -2
- package/dist/chunks/logDepthDeclaration-C0bLjDGt.esm.min.js.map +0 -1
- package/dist/chunks/logDepthDeclaration-CF5JhF4_.esm.min.js +0 -2
- package/dist/chunks/logDepthDeclaration-CF5JhF4_.esm.min.js.map +0 -1
- package/dist/chunks/logDepthVertex-Bu3IKzw6.esm.min.js +0 -2
- package/dist/chunks/logDepthVertex-Bu3IKzw6.esm.min.js.map +0 -1
- package/dist/chunks/logDepthVertex-D6ApgK5s.esm.js +0 -77
- package/dist/chunks/logDepthVertex-D6ApgK5s.esm.js.map +0 -1
- package/dist/chunks/logDepthVertex-RSueoP5o.esm.min.js +0 -2
- package/dist/chunks/logDepthVertex-RSueoP5o.esm.min.js.map +0 -1
- package/dist/chunks/logDepthVertex-jmh6sp9r.esm.js +0 -605
- package/dist/chunks/logDepthVertex-jmh6sp9r.esm.js.map +0 -1
- package/dist/chunks/mainUVVaryingDeclaration-BNr0GD05.esm.min.js +0 -2
- package/dist/chunks/mainUVVaryingDeclaration-BNr0GD05.esm.min.js.map +0 -1
- package/dist/chunks/mainUVVaryingDeclaration-ZPe9Pfpm.esm.js +0 -11
- package/dist/chunks/mainUVVaryingDeclaration-ZPe9Pfpm.esm.js.map +0 -1
- package/dist/chunks/objFileLoader-B1j9OyPi.esm.js +0 -1280
- package/dist/chunks/objFileLoader-B1j9OyPi.esm.js.map +0 -1
- package/dist/chunks/objFileLoader-B2Z0kBGZ.esm.min.js +0 -2
- package/dist/chunks/objFileLoader-B2Z0kBGZ.esm.min.js.map +0 -1
- package/dist/chunks/oitFragment-C7OX8yZO.esm.js +0 -1166
- package/dist/chunks/oitFragment-C7OX8yZO.esm.js.map +0 -1
- package/dist/chunks/oitFragment-CROGuom4.esm.min.js +0 -2
- package/dist/chunks/oitFragment-CROGuom4.esm.min.js.map +0 -1
- package/dist/chunks/oitFragment-Cx8fxkh0.esm.min.js +0 -2
- package/dist/chunks/oitFragment-Cx8fxkh0.esm.min.js.map +0 -1
- package/dist/chunks/oitFragment-QaeREI-l.esm.js +0 -1210
- package/dist/chunks/oitFragment-QaeREI-l.esm.js.map +0 -1
- package/dist/chunks/pass.fragment-Cp76VdVm.esm.min.js +0 -2
- package/dist/chunks/pass.fragment-Cp76VdVm.esm.min.js.map +0 -1
- package/dist/chunks/pass.fragment-DWGZaulM.esm.js +0 -15
- package/dist/chunks/pass.fragment-DWGZaulM.esm.js.map +0 -1
- package/dist/chunks/pbr.fragment-1MSLuKxt.esm.min.js +0 -2
- package/dist/chunks/pbr.fragment-1MSLuKxt.esm.min.js.map +0 -1
- package/dist/chunks/pbr.fragment-CVVaxHTM.esm.js +0 -3172
- package/dist/chunks/pbr.fragment-CVVaxHTM.esm.js.map +0 -1
- package/dist/chunks/pbr.fragment-DjDXkzPC.esm.js +0 -3228
- package/dist/chunks/pbr.fragment-DjDXkzPC.esm.js.map +0 -1
- package/dist/chunks/pbr.fragment-u-qCDBnn.esm.min.js +0 -2
- package/dist/chunks/pbr.fragment-u-qCDBnn.esm.min.js.map +0 -1
- package/dist/chunks/pbr.vertex-CY3atoVH.esm.min.js +0 -2
- package/dist/chunks/pbr.vertex-CY3atoVH.esm.min.js.map +0 -1
- package/dist/chunks/pbr.vertex-CvBNpmrL.esm.js +0 -335
- package/dist/chunks/pbr.vertex-CvBNpmrL.esm.js.map +0 -1
- package/dist/chunks/pbr.vertex-Cz1vuu4g.esm.min.js +0 -2
- package/dist/chunks/pbr.vertex-Cz1vuu4g.esm.min.js.map +0 -1
- package/dist/chunks/pbr.vertex-DmN6aBEn.esm.js +0 -208
- package/dist/chunks/pbr.vertex-DmN6aBEn.esm.js.map +0 -1
- package/dist/chunks/postprocess.vertex-C1KLVO46.esm.min.js +0 -2
- package/dist/chunks/postprocess.vertex-C1KLVO46.esm.min.js.map +0 -1
- package/dist/chunks/postprocess.vertex-bRjFMMTw.esm.js +0 -20
- package/dist/chunks/postprocess.vertex-bRjFMMTw.esm.js.map +0 -1
- package/dist/chunks/rawTexture-CnRJFGS0.esm.min.js +0 -2
- package/dist/chunks/rawTexture-CnRJFGS0.esm.min.js.map +0 -1
- package/dist/chunks/rawTexture-DqO-U47x.esm.js +0 -562
- package/dist/chunks/rawTexture-DqO-U47x.esm.js.map +0 -1
- package/dist/chunks/rgbdDecode.fragment-B3x1NGLA.esm.js +0 -17
- package/dist/chunks/rgbdDecode.fragment-B3x1NGLA.esm.js.map +0 -1
- package/dist/chunks/rgbdDecode.fragment-Ced65A9P.esm.js +0 -17
- package/dist/chunks/rgbdDecode.fragment-Ced65A9P.esm.js.map +0 -1
- package/dist/chunks/rgbdDecode.fragment-DeTDMkx-.esm.min.js +0 -2
- package/dist/chunks/rgbdDecode.fragment-DeTDMkx-.esm.min.js.map +0 -1
- package/dist/chunks/rgbdDecode.fragment-I4vSkcn6.esm.min.js +0 -2
- package/dist/chunks/rgbdDecode.fragment-I4vSkcn6.esm.min.js.map +0 -1
- package/dist/chunks/rgbdEncode.fragment-BI_5lpaM.esm.js +0 -17
- package/dist/chunks/rgbdEncode.fragment-BI_5lpaM.esm.js.map +0 -1
- package/dist/chunks/rgbdEncode.fragment-CvsdJfL-.esm.min.js +0 -2
- package/dist/chunks/rgbdEncode.fragment-CvsdJfL-.esm.min.js.map +0 -1
- package/dist/chunks/rgbdEncode.fragment-DBV9U7_S.esm.js +0 -17
- package/dist/chunks/rgbdEncode.fragment-DBV9U7_S.esm.js.map +0 -1
- package/dist/chunks/rgbdEncode.fragment-Ga_wck8r.esm.min.js +0 -2
- package/dist/chunks/rgbdEncode.fragment-Ga_wck8r.esm.min.js.map +0 -1
- package/dist/chunks/splatFileLoader-CqZQp8gT.esm.min.js +0 -2
- package/dist/chunks/splatFileLoader-CqZQp8gT.esm.min.js.map +0 -1
- package/dist/chunks/splatFileLoader-Ojz6wPQF.esm.js +0 -3154
- package/dist/chunks/splatFileLoader-Ojz6wPQF.esm.js.map +0 -1
- package/dist/chunks/standardMaterial-BRFkCYek.esm.min.js +0 -2
- package/dist/chunks/standardMaterial-BRFkCYek.esm.min.js.map +0 -1
- package/dist/chunks/standardMaterial-CrPdkeQ7.esm.js +0 -1809
- package/dist/chunks/standardMaterial-CrPdkeQ7.esm.js.map +0 -1
- package/dist/chunks/stlFileLoader-CZ4gnzj5.esm.js +0 -237
- package/dist/chunks/stlFileLoader-CZ4gnzj5.esm.js.map +0 -1
- package/dist/chunks/stlFileLoader-vUsEa3k7.esm.min.js +0 -2
- package/dist/chunks/stlFileLoader-vUsEa3k7.esm.min.js.map +0 -1
- package/dist/chunks/tgaTextureLoader-CWw7TE84.esm.js +0 -349
- package/dist/chunks/tgaTextureLoader-CWw7TE84.esm.js.map +0 -1
- package/dist/chunks/tgaTextureLoader-z-0S-ufz.esm.min.js +0 -2
- package/dist/chunks/tgaTextureLoader-z-0S-ufz.esm.min.js.map +0 -1
- package/dist/chunks/thinInstanceMesh-BPnShKmm.esm.min.js +0 -2
- package/dist/chunks/thinInstanceMesh-BPnShKmm.esm.min.js.map +0 -1
- package/dist/chunks/thinInstanceMesh-BvcXpcNe.esm.js +0 -314
- package/dist/chunks/thinInstanceMesh-BvcXpcNe.esm.js.map +0 -1
- package/dist/chunks/vertexColorMixing-BY_oWZih.esm.min.js +0 -2
- package/dist/chunks/vertexColorMixing-BY_oWZih.esm.min.js.map +0 -1
- package/dist/chunks/vertexColorMixing-Cq9NDkQU.esm.js +0 -528
- package/dist/chunks/vertexColorMixing-Cq9NDkQU.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 -237
- package/lib/index.js +0 -871
- package/lib/index.js.map +0 -1
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../../../tools/viewer-alpha/src/viewer.ts","../../../../../../../../tools/viewer-alpha/src/viewerFactory.ts","../../../../../../../../tools/viewer-alpha/src/viewerElement.ts"],"sourcesContent":["import type {\r\n AbstractEngine,\r\n AnimationGroup,\r\n AssetContainer,\r\n AutoRotationBehavior,\r\n Camera,\r\n FramingBehavior,\r\n IDisposable,\r\n LoadAssetContainerOptions,\r\n Mesh,\r\n Nullable,\r\n Observer,\r\n // eslint-disable-next-line import/no-internal-modules\r\n} from \"core/index\";\r\n\r\nimport { ArcRotateCamera } from \"core/Cameras/arcRotateCamera\";\r\nimport { HemisphericLight } from \"core/Lights/hemisphericLight\";\r\nimport { loadAssetContainerAsync } from \"core/Loading/sceneLoader\";\r\nimport { PBRMaterial } from \"core/Materials/PBR/pbrMaterial\";\r\nimport { CubeTexture } from \"core/Materials/Textures/cubeTexture\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { Scalar } from \"core/Maths/math.scalar\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\nimport { CreateBox } from \"core/Meshes/Builders/boxBuilder\";\r\nimport { AsyncLock } from \"core/Misc/asyncLock\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport { Scene } from \"core/scene\";\r\nimport { registerBuiltInLoaders } from \"loaders/dynamic\";\r\n\r\n// TODO: Dynamic imports?\r\nimport \"core/Animations/animatable\";\r\n\r\nfunction createSkybox(scene: Scene, camera: Camera, environmentTexture: CubeTexture, blur: number): Mesh {\r\n const hdrSkybox = CreateBox(\"hdrSkyBox\", undefined, scene);\r\n const hdrSkyboxMaterial = new PBRMaterial(\"skyBox\", scene);\r\n hdrSkyboxMaterial.backFaceCulling = false;\r\n hdrSkyboxMaterial.reflectionTexture = environmentTexture.clone();\r\n if (hdrSkyboxMaterial.reflectionTexture) {\r\n hdrSkyboxMaterial.reflectionTexture.coordinatesMode = Texture.SKYBOX_MODE;\r\n }\r\n hdrSkyboxMaterial.microSurface = 1.0 - blur;\r\n hdrSkyboxMaterial.disableLighting = true;\r\n hdrSkyboxMaterial.twoSidedLighting = true;\r\n hdrSkybox.material = hdrSkyboxMaterial;\r\n hdrSkybox.isPickable = false;\r\n hdrSkybox.infiniteDistance = true;\r\n hdrSkybox.ignoreCameraMaxZ = true;\r\n\r\n updateSkybox(hdrSkybox, camera);\r\n\r\n return hdrSkybox;\r\n}\r\n\r\nfunction updateSkybox(skybox: Nullable<Mesh>, camera: Camera): void {\r\n skybox?.scaling.setAll((camera.maxZ - camera.minZ) / 2);\r\n}\r\n\r\nconst defaultViewerOptions = {\r\n backgroundColor: new Color4(0.1, 0.1, 0.2, 1.0),\r\n} as const;\r\n\r\nexport type ViewerDetails = {\r\n /**\r\n * Provides access to the Scene managed by the Viewer.\r\n */\r\n scene: Scene;\r\n\r\n /**\r\n * Provides access to the currently loaded model.\r\n */\r\n model: Nullable<AssetContainer>;\r\n};\r\n\r\nexport type ViewerOptions = Partial<\r\n typeof defaultViewerOptions &\r\n Readonly<{\r\n /**\r\n * Called once when the viewer is initialized and provides viewer details that can be used for advanced customization.\r\n */\r\n onInitialized: (details: Readonly<ViewerDetails>) => void;\r\n }>\r\n>;\r\n\r\n/**\r\n * Provides an experience for viewing a single 3D model.\r\n * @remarks\r\n * The Viewer is not tied to a specific UI framework and can be used with Babylon.js in a browser or with Babylon Native.\r\n * Includes (or will include) support for common model viewing requirements such as:\r\n * - Loading different model formats.\r\n * - Setting up a camera and providing default behaviors like auto orbit and pose interpolation.\r\n * - Framing the loaded model in the camera's view.\r\n * - Setting up the environment, lighting, and tone mapping.\r\n * - Enumerating and playing (or auto playing) animations.\r\n * - Enumerating and switching between material variants.\r\n * - Full screen and XR modes.\r\n */\r\nexport class Viewer implements IDisposable {\r\n static {\r\n registerBuiltInLoaders();\r\n }\r\n\r\n /**\r\n * Fired when a model is loaded into the viewer.\r\n */\r\n public readonly onModelLoaded = new Observable<void>();\r\n\r\n /**\r\n * Fired when an error occurs while loading a model.\r\n */\r\n public readonly onModelError = new Observable<unknown>();\r\n\r\n /**\r\n * Fired when the selected animation changes.\r\n */\r\n public readonly onSelectedAnimationChanged = new Observable<void>();\r\n\r\n /**\r\n * Fired when the animation speed changes.\r\n */\r\n public readonly onAnimationSpeedChanged = new Observable<void>();\r\n\r\n /**\r\n * Fired when the selected animation is playing or paused.\r\n */\r\n public readonly onIsAnimationPlayingChanged = new Observable<void>();\r\n\r\n /**\r\n * Fired when the current point on the selected animation timeline changes.\r\n */\r\n public readonly onAnimationProgressChanged = new Observable<void>();\r\n\r\n private readonly _details: ViewerDetails;\r\n private readonly _camera: ArcRotateCamera;\r\n private readonly _autoRotationBehavior: AutoRotationBehavior;\r\n private readonly _renderLoopController: IDisposable;\r\n private _skybox: Nullable<Mesh> = null;\r\n\r\n private _isDisposed = false;\r\n\r\n private readonly _loadModelLock = new AsyncLock();\r\n private _loadModelAbortController: Nullable<AbortController> = null;\r\n\r\n private readonly _loadEnvironmentLock = new AsyncLock();\r\n private _environment: Nullable<IDisposable> = null;\r\n private _loadEnvironmentAbortController: Nullable<AbortController> = null;\r\n\r\n private _selectedAnimation = -1;\r\n private _activeAnimationObservers: Observer<AnimationGroup>[] = [];\r\n private _animationSpeed = 1;\r\n\r\n public constructor(\r\n private readonly _engine: AbstractEngine,\r\n options?: ViewerOptions\r\n ) {\r\n const finalOptions = { ...defaultViewerOptions, ...options };\r\n this._details = {\r\n scene: new Scene(this._engine),\r\n model: null,\r\n };\r\n this._details.scene.clearColor = finalOptions.backgroundColor;\r\n this._camera = new ArcRotateCamera(\"camera1\", 0, 0, 1, Vector3.Zero(), this._details.scene);\r\n this._camera.attachControl();\r\n this._updateCamera(); // set default camera values\r\n this._autoRotationBehavior = this._camera.getBehaviorByName(\"AutoRotation\") as AutoRotationBehavior;\r\n\r\n // Load a default light, but ignore errors as the user might be immediately loading their own environment.\r\n this.loadEnvironmentAsync(undefined).catch(() => {});\r\n\r\n // TODO: render at least back ground. Maybe we can only run renderloop when a mesh is loaded. What to render until then?\r\n const render = () => {\r\n this._details.scene.render();\r\n if (this.isAnimationPlaying) {\r\n this.onAnimationProgressChanged.notifyObservers();\r\n this._autoRotationBehavior.resetLastInteractionTime();\r\n }\r\n };\r\n\r\n this._engine.runRenderLoop(render);\r\n this._renderLoopController = {\r\n dispose: () => this._engine.stopRenderLoop(render),\r\n };\r\n\r\n options?.onInitialized?.(this._details);\r\n }\r\n\r\n /**\r\n * The list of animation names for the currently loaded model.\r\n */\r\n public get animations(): readonly string[] {\r\n return this._details.model?.animationGroups.map((group) => group.name) ?? [];\r\n }\r\n\r\n /**\r\n * The currently selected animation index.\r\n */\r\n public get selectedAnimation(): number {\r\n return this._selectedAnimation;\r\n }\r\n\r\n public set selectedAnimation(value: number) {\r\n value = Math.round(Scalar.Clamp(value, -1, this.animations.length - 1));\r\n if (value !== this._selectedAnimation) {\r\n const startAnimation = this.isAnimationPlaying;\r\n if (this._activeAnimation) {\r\n this._activeAnimation.goToFrame(0);\r\n this._activeAnimation.stop();\r\n this._activeAnimationObservers.forEach((observer) => observer.remove());\r\n this._activeAnimationObservers = [];\r\n }\r\n\r\n this._selectedAnimation = value;\r\n\r\n if (this._activeAnimation) {\r\n this._activeAnimationObservers = [\r\n this._activeAnimation.onAnimationGroupPlayObservable.add(() => {\r\n this.onIsAnimationPlayingChanged.notifyObservers();\r\n }),\r\n this._activeAnimation.onAnimationGroupPauseObservable.add(() => {\r\n this.onIsAnimationPlayingChanged.notifyObservers();\r\n }),\r\n this._activeAnimation.onAnimationGroupEndObservable.add(() => {\r\n this.onIsAnimationPlayingChanged.notifyObservers();\r\n this.onAnimationProgressChanged.notifyObservers();\r\n }),\r\n ];\r\n\r\n this._activeAnimation.start(true, this._animationSpeed);\r\n\r\n if (!startAnimation) {\r\n this.pauseAnimation();\r\n }\r\n }\r\n\r\n this.onSelectedAnimationChanged.notifyObservers();\r\n }\r\n }\r\n\r\n /**\r\n * True if an animation is currently playing.\r\n */\r\n public get isAnimationPlaying(): boolean {\r\n return this._activeAnimation?.isPlaying ?? false;\r\n }\r\n\r\n /**\r\n * The speed scale at which animations are played.\r\n */\r\n public get animationSpeed(): number {\r\n return this._animationSpeed;\r\n }\r\n\r\n public set animationSpeed(value: number) {\r\n this._animationSpeed = value;\r\n this._applyAnimationSpeed();\r\n this.onAnimationSpeedChanged.notifyObservers();\r\n }\r\n\r\n /**\r\n * The current point on the selected animation timeline, normalized between 0 and 1.\r\n */\r\n public get animationProgress(): number {\r\n if (this._activeAnimation) {\r\n return this._activeAnimation.getCurrentFrame() / (this._activeAnimation.to - this._activeAnimation.from);\r\n }\r\n return 0;\r\n }\r\n\r\n public set animationProgress(value: number) {\r\n if (this._activeAnimation) {\r\n this._activeAnimation.goToFrame(value * (this._activeAnimation.to - this._activeAnimation.from));\r\n this.onAnimationProgressChanged.notifyObservers();\r\n this._autoRotationBehavior.resetLastInteractionTime();\r\n }\r\n }\r\n\r\n private get _activeAnimation(): Nullable<AnimationGroup> {\r\n return this._details.model?.animationGroups[this._selectedAnimation] ?? null;\r\n }\r\n\r\n /**\r\n * Loads a 3D model from the specified URL.\r\n * @remarks\r\n * If a model is already loaded, it will be unloaded before loading the new model.\r\n * @param source A url or File or ArrayBufferView that points to the model to load.\r\n * @param options The options to use when loading the model.\r\n * @param abortSignal An optional signal that can be used to abort the loading process.\r\n */\r\n public async loadModelAsync(source: string | File | ArrayBufferView, options?: LoadAssetContainerOptions, abortSignal?: AbortSignal): Promise<void> {\r\n this._throwIfDisposedOrAborted(abortSignal);\r\n\r\n this._loadModelAbortController?.abort(\"New model is being loaded before previous model finished loading.\");\r\n const abortController = (this._loadModelAbortController = new AbortController());\r\n\r\n // TODO: Disable audio for now, later figure out how to re-introduce it through dynamic imports.\r\n options = {\r\n ...(options ?? {}),\r\n pluginOptions: {\r\n ...(options?.pluginOptions ?? {}),\r\n gltf: {\r\n ...(options?.pluginOptions?.gltf ?? {}),\r\n extensionOptions: {\r\n ...(options?.pluginOptions?.gltf?.extensionOptions ?? {}),\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n KHR_audio: {\r\n enabled: false,\r\n },\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n MSFT_audio_emitter: {\r\n enabled: false,\r\n },\r\n },\r\n },\r\n },\r\n };\r\n\r\n await this._loadModelLock.lockAsync(async () => {\r\n this._throwIfDisposedOrAborted(abortSignal, abortController.signal);\r\n this._details.model?.dispose();\r\n this.selectedAnimation = -1;\r\n\r\n try {\r\n this._details.model = await loadAssetContainerAsync(source, this._details.scene, options);\r\n this._details.model.animationGroups.forEach((group) => group.stop());\r\n this.selectedAnimation = 0;\r\n this._details.model.addAllToScene();\r\n\r\n this._updateCamera();\r\n this._applyAnimationSpeed();\r\n this.onModelLoaded.notifyObservers();\r\n } catch (e) {\r\n this.onModelError.notifyObservers(e);\r\n throw e;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Loads an environment texture from the specified url and sets up a corresponding skybox.\r\n * @remarks\r\n * If no url is provided, a default hemispheric light will be created.\r\n * If an environment is already loaded, it will be unloaded before loading the new environment.\r\n * @param url The url of the environment texture to load.\r\n * @param options The options to use when loading the environment.\r\n * @param abortSignal An optional signal that can be used to abort the loading process.\r\n */\r\n public async loadEnvironmentAsync(url: Nullable<string | undefined>, options?: {}, abortSignal?: AbortSignal): Promise<void> {\r\n this._throwIfDisposedOrAborted(abortSignal);\r\n\r\n this._loadEnvironmentAbortController?.abort(\"New environment is being loaded before previous environment finished loading.\");\r\n const abortController = (this._loadEnvironmentAbortController = new AbortController());\r\n\r\n await this._loadEnvironmentLock.lockAsync(async () => {\r\n this._throwIfDisposedOrAborted(abortSignal, abortController.signal);\r\n this._environment?.dispose();\r\n this._environment = await new Promise<IDisposable>((resolve, reject) => {\r\n if (!url) {\r\n const light = new HemisphericLight(\"hemilight\", Vector3.Up(), this._details.scene);\r\n this._details.scene.autoClear = true;\r\n resolve(light);\r\n } else {\r\n const cubeTexture = CubeTexture.CreateFromPrefilteredData(url, this._details.scene);\r\n this._details.scene.environmentTexture = cubeTexture;\r\n\r\n const skybox = createSkybox(this._details.scene, this._camera, cubeTexture, 0.3);\r\n this._skybox = skybox;\r\n\r\n this._details.scene.autoClear = false;\r\n\r\n const dispose = () => {\r\n cubeTexture.dispose();\r\n skybox.dispose();\r\n this._skybox = null;\r\n };\r\n\r\n const successObserver = cubeTexture.onLoadObservable.addOnce(() => {\r\n successObserver.remove();\r\n errorObserver.remove();\r\n resolve({\r\n dispose,\r\n });\r\n });\r\n\r\n const errorObserver = Texture.OnTextureLoadErrorObservable.add((texture) => {\r\n if (texture === cubeTexture) {\r\n successObserver.remove();\r\n errorObserver.remove();\r\n dispose();\r\n reject(new Error(\"Failed to load environment texture.\"));\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Toggles the play/pause animation state if there is a selected animation.\r\n */\r\n public toggleAnimation() {\r\n if (this.isAnimationPlaying) {\r\n this.pauseAnimation();\r\n } else {\r\n this.playAnimation();\r\n }\r\n }\r\n\r\n /**\r\n * Plays the selected animation if there is one.\r\n */\r\n public playAnimation() {\r\n this._activeAnimation?.play(true);\r\n }\r\n\r\n /**\r\n * Pauses the selected animation if there is one.\r\n */\r\n public async pauseAnimation() {\r\n this._activeAnimation?.pause();\r\n }\r\n\r\n /**\r\n * Disposes of the resources held by the Viewer.\r\n */\r\n public dispose(): void {\r\n this.selectedAnimation = -1;\r\n this.animationProgress = 0;\r\n\r\n this._renderLoopController.dispose();\r\n this._details.scene.dispose();\r\n\r\n this.onModelLoaded.clear();\r\n this.onModelError.clear();\r\n this.onSelectedAnimationChanged.clear();\r\n this.onAnimationSpeedChanged.clear();\r\n this.onIsAnimationPlayingChanged.clear();\r\n this.onAnimationProgressChanged.clear();\r\n\r\n this._isDisposed = true;\r\n }\r\n\r\n // copy/paste from sandbox and scene helpers\r\n private _updateCamera(): void {\r\n // Enable camera's behaviors\r\n this._camera.useFramingBehavior = true;\r\n const framingBehavior = this._camera.getBehaviorByName(\"Framing\") as FramingBehavior;\r\n framingBehavior.framingTime = 0;\r\n framingBehavior.elevationReturnTime = -1;\r\n\r\n let radius = 1;\r\n if (this._details.scene.meshes.length) {\r\n // get bounds and prepare framing/camera radius from its values\r\n this._camera.lowerRadiusLimit = null;\r\n\r\n const worldExtends = this._details.scene.getWorldExtends((mesh) => {\r\n return mesh.isVisible && mesh.isEnabled();\r\n });\r\n framingBehavior.zoomOnBoundingInfo(worldExtends.min, worldExtends.max);\r\n\r\n const worldSize = worldExtends.max.subtract(worldExtends.min);\r\n const worldCenter = worldExtends.min.add(worldSize.scale(0.5));\r\n\r\n radius = worldSize.length() * 1.2;\r\n\r\n if (!isFinite(radius)) {\r\n radius = 1;\r\n worldCenter.copyFromFloats(0, 0, 0);\r\n }\r\n\r\n this._camera.setTarget(worldCenter);\r\n }\r\n this._camera.lowerRadiusLimit = radius * 0.01;\r\n this._camera.wheelPrecision = 100 / radius;\r\n this._camera.alpha = Math.PI / 2;\r\n this._camera.beta = Math.PI / 2;\r\n this._camera.radius = radius;\r\n this._camera.minZ = radius * 0.01;\r\n this._camera.maxZ = radius * 1000;\r\n this._camera.speed = radius * 0.2;\r\n this._camera.useAutoRotationBehavior = true;\r\n this._camera.pinchPrecision = 200 / this._camera.radius;\r\n this._camera.upperRadiusLimit = 5 * this._camera.radius;\r\n this._camera.wheelDeltaPercentage = 0.01;\r\n this._camera.pinchDeltaPercentage = 0.01;\r\n this._camera.restoreStateInterpolationFactor = 0.1;\r\n\r\n updateSkybox(this._skybox, this._camera);\r\n }\r\n\r\n private _applyAnimationSpeed() {\r\n this._details.model?.animationGroups.forEach((group) => (group.speedRatio = this._animationSpeed));\r\n }\r\n\r\n /**\r\n * Check for disposed or aborted state (basically everything that can interrupt an async operation).\r\n * @param abortSignals A set of optional AbortSignals to also check.\r\n */\r\n private _throwIfDisposedOrAborted(...abortSignals: (Nullable<AbortSignal> | undefined)[]): void {\r\n if (this._isDisposed) {\r\n throw new Error(\"Viewer is disposed.\");\r\n }\r\n\r\n for (const signal of abortSignals) {\r\n signal?.throwIfAborted();\r\n }\r\n }\r\n}\r\n","import { Engine } from \"core/Engines/engine\";\r\nimport type { EngineOptions } from \"core/Engines\";\r\n\r\nimport type { ViewerOptions } from \"./viewer\";\r\nimport { Viewer } from \"./viewer\";\r\n\r\ntype CanvasViewerOptions = ViewerOptions & ({ engine: \"WebGL\" } & EngineOptions);\r\nconst defaultCanvasViewerOptions: CanvasViewerOptions = {\r\n engine: \"WebGL\",\r\n};\r\n\r\n/**\r\n * Creates a Viewer instance that is bound to an HTML canvas.\r\n * @remarks\r\n * This function can be shared across multiple UI integrations (e.g. Web Components, React, etc.).\r\n * @param canvas The canvas element to bind the Viewer to.\r\n * @param options The options to use when creating the Viewer and binding it to the specified canvas.\r\n * @returns A Viewer instance that is bound to the specified canvas.\r\n */\r\nexport function createViewerForCanvas(canvas: HTMLCanvasElement, options?: CanvasViewerOptions): Viewer {\r\n const finalOptions = { ...defaultCanvasViewerOptions, ...options };\r\n const disposeActions: (() => void)[] = [];\r\n\r\n // If the canvas is resized, note that the engine needs a resize, but don't resize it here as it will result in flickering.\r\n let needsResize = false;\r\n const resizeObserver = new ResizeObserver(() => (needsResize = true));\r\n resizeObserver.observe(canvas);\r\n disposeActions.push(() => resizeObserver.disconnect());\r\n\r\n // Create an engine instance.\r\n // TODO: Create a WebGL or WebGPUEngine based on the engine option.\r\n const engine = new Engine(canvas, undefined, options);\r\n\r\n // Override the onInitialized callback to add in some specific behavior.\r\n const onInitialized = finalOptions.onInitialized;\r\n finalOptions.onInitialized = (details) => {\r\n // Resize if needed right before rendering the Viewer scene to avoid any flickering.\r\n const beforeRenderObserver = details.scene.onBeforeRenderObservable.add(() => {\r\n if (needsResize) {\r\n engine.resize();\r\n needsResize = false;\r\n }\r\n });\r\n disposeActions.push(() => beforeRenderObserver.remove());\r\n\r\n // Call the original onInitialized callback, if one was provided.\r\n onInitialized?.(details);\r\n };\r\n\r\n // Instantiate the Viewer with the engine and options.\r\n const viewer = new Viewer(engine, finalOptions);\r\n disposeActions.push(viewer.dispose.bind(viewer));\r\n\r\n disposeActions.push(() => engine.dispose());\r\n\r\n // Override the Viewer's dispose method to add in additional cleanup.\r\n viewer.dispose = () => disposeActions.forEach((dispose) => dispose());\r\n\r\n // TODO: Creating an engine instance will be async if we use a dynamic import for choosing either Engine or WebGPUEngine,\r\n // or even when just creating a WebGPUEngine since we have to call initAsync. To keep the UI integration layer\r\n // simple (e.g. not have to deal with asynchronous creation of the Viewer), should we also be able to pass Promise<AbstractEngine> to the Viewer constructor?\r\n\r\n return viewer;\r\n}\r\n","import type { PropertyValues } from \"lit\";\r\nimport type { Viewer } from \"./viewer\";\r\n\r\nimport { LitElement, css, html } from \"lit\";\r\nimport { customElement, property, query, state } from \"lit/decorators.js\";\r\n\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { createViewerForCanvas } from \"./viewerFactory\";\r\n\r\n// Icon SVG is pulled from https://fluentuipr.z22.web.core.windows.net/heads/master/public-docsite-v9/storybook/iframe.html?id=icons-catalog--page&viewMode=story\r\nconst playFilledIcon = \"M17.22 8.68a1.5 1.5 0 0 1 0 2.63l-10 5.5A1.5 1.5 0 0 1 5 15.5v-11A1.5 1.5 0 0 1 7.22 3.2l10 5.5Z\";\r\nconst pauseFilledIcon = \"M5 2a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h2a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H5Zm8 0a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h2a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2h-2Z\";\r\n\r\nconst allowedAnimationSpeeds = [0.5, 1, 1.5, 2] as const;\r\n\r\ninterface HTML3DElementEventMap extends HTMLElementEventMap {\r\n modelchange: Event;\r\n modelerror: Event;\r\n selectedanimationchange: Event;\r\n animationspeedchange: Event;\r\n animationplayingchange: Event;\r\n animationprogresschange: Event;\r\n}\r\n\r\n/**\r\n * Represents a custom element that displays a 3D model using the Babylon.js Viewer.\r\n */\r\n@customElement(\"babylon-viewer\")\r\nexport class HTML3DElement extends LitElement {\r\n /**\r\n * Gets the underlying Viewer object. It will be undefined when the element is not connected to the DOM.\r\n */\r\n public viewer?: Viewer;\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, jsdoc/require-jsdoc\r\n static override styles = css`\r\n :host {\r\n --ui-foreground-color: white;\r\n --ui-background-hue: 233;\r\n --ui-background-saturation: 8%;\r\n --ui-background-lightness: 39%;\r\n --ui-background-opacity: 0.75;\r\n --ui-background-color: hsla(var(--ui-background-hue), var(--ui-background-saturation), var(--ui-background-lightness), var(--ui-background-opacity));\r\n --ui-background-color-hover: hsla(\r\n var(--ui-background-hue),\r\n var(--ui-background-saturation),\r\n calc(var(--ui-background-lightness) - 10%),\r\n calc(var(--ui-background-opacity) - 0.1)\r\n );\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n\r\n .full-size {\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n .tool-bar {\r\n position: absolute;\r\n display: flex;\r\n flex-direction: row;\r\n border-radius: 12px;\r\n border-color: var(--ui-foreground-color);\r\n height: 48px;\r\n width: calc(100% - 24px);\r\n min-width: 150px;\r\n max-width: 1280px;\r\n bottom: 12px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n background-color: var(--ui-background-color);\r\n color: var(--ui-foreground-color);\r\n -webkit-tap-highlight-color: transparent;\r\n }\r\n\r\n .tool-bar * {\r\n height: 100%;\r\n min-width: 48px;\r\n }\r\n\r\n .tool-bar select {\r\n background: none;\r\n min-width: 52px;\r\n max-width: 128px;\r\n border: 1px solid transparent;\r\n border-radius: inherit;\r\n color: inherit;\r\n font-size: 14px;\r\n padding: 12px;\r\n cursor: pointer;\r\n outline: none;\r\n appearance: none; /* Remove default styling */\r\n -webkit-appearance: none; /* Remove default styling for Safari */\r\n -moz-appearance: none; /* Remove default styling for Firefox */\r\n }\r\n\r\n .tool-bar select:hover,\r\n .tool-bar select:focus {\r\n background-color: var(--ui-background-color-hover);\r\n }\r\n\r\n .tool-bar select option {\r\n background-color: var(--ui-background-color);\r\n color: var(--ui-foreground-color);\r\n }\r\n\r\n .tool-bar select:focus-visible {\r\n border-color: inherit;\r\n }\r\n\r\n .tool-bar button {\r\n background: none;\r\n border: 1px solid transparent;\r\n border-radius: inherit;\r\n color: inherit;\r\n padding: 0;\r\n cursor: pointer;\r\n outline: none;\r\n }\r\n\r\n .tool-bar button:hover {\r\n background-color: var(--ui-background-color-hover);\r\n }\r\n\r\n .tool-bar button:focus-visible {\r\n border-color: inherit;\r\n }\r\n\r\n .tool-bar button svg {\r\n width: 32px;\r\n height: 32px;\r\n }\r\n\r\n .progress-control {\r\n display: flex;\r\n flex: 1;\r\n position: relative;\r\n overflow: hidden;\r\n cursor: pointer;\r\n align-items: center;\r\n border-radius: inherit;\r\n border-color: inherit;\r\n }\r\n\r\n .progress-wrapper {\r\n -webkit-appearance: none;\r\n cursor: pointer;\r\n width: 100%;\r\n height: 100%;\r\n outline: none;\r\n border: 1px solid transparent;\r\n border-radius: inherit;\r\n padding: 0 12px;\r\n background-color: transparent;\r\n }\r\n\r\n .progress-wrapper:focus-visible {\r\n border-color: inherit;\r\n }\r\n\r\n /*Chrome -webkit */\r\n\r\n .progress-wrapper::-webkit-slider-thumb {\r\n -webkit-appearance: none;\r\n width: 20px;\r\n height: 20px;\r\n border: 2px solid;\r\n color: var(--ui-foreground-color);\r\n border-radius: 50%;\r\n background: hsla(var(--ui-background-hue), var(--ui-background-saturation), var(--ui-background-lightness), 1);\r\n margin-top: -10px;\r\n }\r\n\r\n .progress-wrapper::-webkit-slider-runnable-track {\r\n height: 2px;\r\n -webkit-appearance: none;\r\n background-color: var(--ui-foreground-color);\r\n }\r\n\r\n /** FireFox -moz */\r\n\r\n .progress-wrapper::-moz-range-progress {\r\n height: 2px;\r\n background-color: var(--ui-foreground-color);\r\n }\r\n\r\n .progress-wrapper::-moz-range-thumb {\r\n width: 16px;\r\n height: 16px;\r\n border: 2px solid var(--ui-foreground-color);\r\n border-radius: 50%;\r\n background: hsla(var(--ui-background-hue), var(--ui-background-saturation), var(--ui-background-lightness), 1);\r\n }\r\n\r\n .progress-wrapper::-moz-range-track {\r\n height: 2px;\r\n background: var(--ui-foreground-color);\r\n }\r\n `;\r\n\r\n /**\r\n * The model URL.\r\n */\r\n @property()\r\n public src = \"\";\r\n\r\n /**\r\n * The environment URL.\r\n */\r\n @property()\r\n public env = \"\";\r\n\r\n /**\r\n * The list of animation names for the currently loaded model.\r\n */\r\n public get animations(): readonly string[] {\r\n return this._animations;\r\n }\r\n\r\n /**\r\n * The currently selected animation index.\r\n */\r\n public get selectedAnimation(): number {\r\n return this._selectedAnimation;\r\n }\r\n\r\n /**\r\n * True if an animation is currently playing.\r\n */\r\n public get isAnimationPlaying(): boolean {\r\n return this._isAnimationPlaying;\r\n }\r\n\r\n /**\r\n * The speed scale at which animations are played.\r\n */\r\n @property({ attribute: \"animation-speed\" })\r\n public animationSpeed = 1;\r\n\r\n /**\r\n * The current point on the selected animation timeline, normalized between 0 and 1.\r\n */\r\n @property({ attribute: false })\r\n public animationProgress = 0;\r\n\r\n @state()\r\n private _animations: string[] = [];\r\n\r\n @state()\r\n private _selectedAnimation = -1;\r\n\r\n @state()\r\n private _isAnimationPlaying = false;\r\n\r\n @query(\"#renderCanvas\")\r\n private _canvas: HTMLCanvasElement;\r\n\r\n /**\r\n * Toggles the play/pause animation state if there is a selected animation.\r\n */\r\n public toggleAnimation() {\r\n this.viewer?.toggleAnimation();\r\n }\r\n\r\n // eslint-disable-next-line babylonjs/available\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n this._setupViewer();\r\n }\r\n\r\n // eslint-disable-next-line babylonjs/available\r\n override firstUpdated(_changedProperties: PropertyValues): void {\r\n super.firstUpdated(_changedProperties);\r\n this._setupViewer();\r\n }\r\n\r\n // eslint-disable-next-line babylonjs/available\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n this._tearDownViewer();\r\n }\r\n\r\n // eslint-disable-next-line babylonjs/available\r\n override update(changedProperties: PropertyValues): void {\r\n super.update(changedProperties);\r\n\r\n if (changedProperties.has(\"animationSpeed\")) {\r\n this._updateAnimationSpeed();\r\n }\r\n\r\n if (changedProperties.has(\"_selectedAnimation\")) {\r\n this._updateSelectedAnimation();\r\n }\r\n\r\n if (changedProperties.has(\"src\" satisfies keyof this)) {\r\n this._updateModel();\r\n }\r\n\r\n if (changedProperties.has(\"env\" satisfies keyof this)) {\r\n this._updateEnv();\r\n }\r\n }\r\n\r\n // eslint-disable-next-line babylonjs/available\r\n override render() {\r\n return html`\r\n <div class=\"full-size\">\r\n <canvas id=\"renderCanvas\" class=\"full-size\" touch-action=\"none\"></canvas>\r\n ${this.animations.length === 0\r\n ? \"\"\r\n : html`\r\n <slot name=\"tool-bar\">\r\n <div part=\"tool-bar\" class=\"tool-bar\">\r\n <div class=\"progress-control\">\r\n <button aria-label=\"${this.isAnimationPlaying ? \"Pause\" : \"Play\"}\" @click=\"${this.toggleAnimation}\">\r\n ${!this.isAnimationPlaying\r\n ? html`<svg viewBox=\"0 0 20 20\">\r\n <path d=\"${playFilledIcon}\" fill=\"currentColor\"></path>\r\n </svg>`\r\n : html`<svg viewBox=\"-3 -2 24 24\">\r\n <path d=\"${pauseFilledIcon}\" fill=\"currentColor\"></path>\r\n </svg>`}\r\n </button>\r\n <input\r\n aria-label=\"Animation Progress\"\r\n class=\"progress-wrapper\"\r\n type=\"range\"\r\n min=\"0\"\r\n max=\"1\"\r\n step=\"0.0001\"\r\n .value=\"${this.animationProgress}\"\r\n @input=\"${this._onProgressChanged}\"\r\n @pointerdown=\"${this._onProgressPointerDown}\"\r\n />\r\n </div>\r\n <select aria-label=\"Select Animation Speed\" @change=\"${this._onAnimationSpeedChanged}\">\r\n ${allowedAnimationSpeeds.map((speed) => html`<option value=\"${speed}\" .selected=\"${this.animationSpeed === speed}\">${speed}x</option>`)}\r\n </select>\r\n ${this.animations.length > 1\r\n ? html`<select aria-label=\"Select Animation\" @change=\"${this._onSelectedAnimationChanged}\">\r\n ${this.animations.map((name, index) => html`<option value=\"${index}\" .selected=\"${this.selectedAnimation == index}\">${name}</option>`)}\r\n </select>`\r\n : \"\"}\r\n </div>\r\n </slot>\r\n `}\r\n </div>\r\n `;\r\n }\r\n\r\n // eslint-disable-next-line babylonjs/available\r\n override addEventListener<K extends keyof HTML3DElementEventMap>(\r\n type: K,\r\n listener: (this: HTMLElement, ev: HTML3DElementEventMap[K]) => any,\r\n options?: boolean | AddEventListenerOptions\r\n ): void;\r\n override addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\r\n override addEventListener(type: unknown, listener: unknown, options?: unknown): void {\r\n super.addEventListener(type as string, listener as EventListenerOrEventListenerObject, options as boolean | AddEventListenerOptions);\r\n }\r\n\r\n private _dispatchCustomEvent(type: keyof HTML3DElementEventMap) {\r\n this.dispatchEvent(new Event(type));\r\n }\r\n\r\n private _onSelectedAnimationChanged(event: Event) {\r\n const selectElement = event.target as HTMLSelectElement;\r\n this._selectedAnimation = Number(selectElement.value);\r\n }\r\n\r\n private _onAnimationSpeedChanged(event: Event) {\r\n const selectElement = event.target as HTMLSelectElement;\r\n this.animationSpeed = Number(selectElement.value);\r\n }\r\n\r\n private _onProgressChanged(event: Event) {\r\n if (this.viewer) {\r\n const input = event.target as HTMLInputElement;\r\n const value = Number(input.value);\r\n if (value !== this.animationProgress) {\r\n this.viewer.animationProgress = value;\r\n }\r\n }\r\n }\r\n\r\n private _onProgressPointerDown(event: Event) {\r\n if (this.viewer?.isAnimationPlaying) {\r\n this.viewer.pauseAnimation();\r\n const input = event.target as HTMLInputElement;\r\n input.addEventListener(\"pointerup\", () => this.viewer?.playAnimation(), { once: true });\r\n }\r\n }\r\n\r\n private _setupViewer() {\r\n if (this._canvas && !this.viewer) {\r\n this.viewer = createViewerForCanvas(this._canvas);\r\n\r\n this.viewer.onModelLoaded.add(() => {\r\n this._animations = [...(this.viewer?.animations ?? [])];\r\n this._dispatchCustomEvent(\"modelchange\");\r\n });\r\n\r\n this.viewer.onModelError.add(() => {\r\n this._dispatchCustomEvent(\"modelerror\");\r\n });\r\n\r\n this.viewer.onSelectedAnimationChanged.add(() => {\r\n this._selectedAnimation = this.viewer?.selectedAnimation ?? -1;\r\n this._dispatchCustomEvent(\"selectedanimationchange\");\r\n });\r\n\r\n this.viewer.onAnimationSpeedChanged.add(() => {\r\n let speed = this.viewer?.animationSpeed ?? 1;\r\n speed = allowedAnimationSpeeds.reduce((prev, curr) => (Math.abs(curr - speed) < Math.abs(prev - speed) ? curr : prev));\r\n this.animationSpeed = speed;\r\n this._dispatchCustomEvent(\"animationspeedchange\");\r\n });\r\n\r\n this.viewer.onIsAnimationPlayingChanged.add(() => {\r\n this._isAnimationPlaying = this.viewer?.isAnimationPlaying ?? false;\r\n this._dispatchCustomEvent(\"animationplayingchange\");\r\n });\r\n\r\n this.viewer.onAnimationProgressChanged.add(() => {\r\n this.animationProgress = this.viewer?.animationProgress ?? 0;\r\n this._dispatchCustomEvent(\"animationprogresschange\");\r\n });\r\n\r\n this._updateSelectedAnimation();\r\n this._updateAnimationSpeed();\r\n this._updateModel();\r\n this._updateEnv();\r\n }\r\n }\r\n\r\n private _tearDownViewer() {\r\n if (this.viewer) {\r\n this.viewer.dispose();\r\n this.viewer = undefined;\r\n }\r\n }\r\n\r\n private _updateAnimationSpeed() {\r\n if (this.viewer) {\r\n this.viewer.animationSpeed = this.animationSpeed;\r\n }\r\n }\r\n\r\n private _updateSelectedAnimation() {\r\n if (this.viewer) {\r\n this.viewer.selectedAnimation = this._selectedAnimation;\r\n }\r\n }\r\n\r\n private async _updateModel() {\r\n if (this.src) {\r\n await this.viewer?.loadModelAsync(this.src).catch(Logger.Log);\r\n } else {\r\n // TODO: Unload model?\r\n }\r\n }\r\n\r\n private _updateEnv() {\r\n this.viewer?.loadEnvironmentAsync(this.env || undefined).catch(Logger.Log);\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
|