@babylonjs/viewer 7.41.0 → 7.41.1-alpha

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.
Files changed (619) hide show
  1. package/assets/photoStudio.env +0 -0
  2. package/dist/babylon-viewer.esm.js +2 -0
  3. package/dist/babylon-viewer.esm.js.map +1 -0
  4. package/dist/babylon-viewer.esm.min.js +2 -0
  5. package/dist/babylon-viewer.esm.min.js.map +1 -0
  6. package/dist/chunks/EXT_lights_ies-BS2USlck.esm.min.js +2 -0
  7. package/dist/chunks/EXT_lights_ies-BS2USlck.esm.min.js.map +1 -0
  8. package/dist/chunks/EXT_lights_ies-C-joQ5O4.esm.js +84 -0
  9. package/dist/chunks/EXT_lights_ies-C-joQ5O4.esm.js.map +1 -0
  10. package/dist/chunks/EXT_lights_image_based-C3wbbb5Z.esm.js +171 -0
  11. package/dist/chunks/EXT_lights_image_based-C3wbbb5Z.esm.js.map +1 -0
  12. package/dist/chunks/EXT_lights_image_based-DDdRDnM2.esm.min.js +2 -0
  13. package/dist/chunks/EXT_lights_image_based-DDdRDnM2.esm.min.js.map +1 -0
  14. package/dist/chunks/EXT_mesh_gpu_instancing-AXAnRQN7.esm.js +86 -0
  15. package/dist/chunks/EXT_mesh_gpu_instancing-AXAnRQN7.esm.js.map +1 -0
  16. package/dist/chunks/EXT_mesh_gpu_instancing-BcjPo6uC.esm.min.js +2 -0
  17. package/dist/chunks/EXT_mesh_gpu_instancing-BcjPo6uC.esm.min.js.map +1 -0
  18. package/dist/chunks/EXT_meshopt_compression-DlUkQB2P.esm.js +134 -0
  19. package/dist/chunks/EXT_meshopt_compression-DlUkQB2P.esm.js.map +1 -0
  20. package/dist/chunks/EXT_meshopt_compression-yJ4OpORd.esm.min.js +2 -0
  21. package/dist/chunks/EXT_meshopt_compression-yJ4OpORd.esm.min.js.map +1 -0
  22. package/dist/chunks/EXT_texture_avif-BQWbvJfK.esm.min.js +2 -0
  23. package/dist/chunks/EXT_texture_avif-BQWbvJfK.esm.min.js.map +1 -0
  24. package/dist/chunks/EXT_texture_avif-C0pGpnGv.esm.js +44 -0
  25. package/dist/chunks/EXT_texture_avif-C0pGpnGv.esm.js.map +1 -0
  26. package/dist/chunks/EXT_texture_webp-Dd7Uqtmh.esm.min.js +2 -0
  27. package/dist/chunks/EXT_texture_webp-Dd7Uqtmh.esm.min.js.map +1 -0
  28. package/dist/chunks/EXT_texture_webp-DehlrnW-.esm.js +43 -0
  29. package/dist/chunks/EXT_texture_webp-DehlrnW-.esm.js.map +1 -0
  30. package/dist/chunks/ExtrasAsMetadata-C5NMuDj4.esm.js +64 -0
  31. package/dist/chunks/ExtrasAsMetadata-C5NMuDj4.esm.js.map +1 -0
  32. package/dist/chunks/ExtrasAsMetadata-Cp3LHdoG.esm.min.js +2 -0
  33. package/dist/chunks/ExtrasAsMetadata-Cp3LHdoG.esm.min.js.map +1 -0
  34. package/dist/chunks/KHR_animation_pointer-DEBOwDXh.esm.min.js +2 -0
  35. package/dist/chunks/KHR_animation_pointer-DEBOwDXh.esm.min.js.map +1 -0
  36. package/dist/chunks/KHR_animation_pointer-Dx1OeG2b.esm.js +352 -0
  37. package/dist/chunks/KHR_animation_pointer-Dx1OeG2b.esm.js.map +1 -0
  38. package/dist/chunks/KHR_draco_mesh_compression-Ch0QOlBL.esm.min.js +2 -0
  39. package/dist/chunks/KHR_draco_mesh_compression-Ch0QOlBL.esm.min.js.map +1 -0
  40. package/dist/chunks/KHR_draco_mesh_compression-D59SFLyo.esm.js +610 -0
  41. package/dist/chunks/KHR_draco_mesh_compression-D59SFLyo.esm.js.map +1 -0
  42. package/dist/chunks/KHR_interactivity-Blj_9jts.esm.min.js +2 -0
  43. package/dist/chunks/KHR_interactivity-Blj_9jts.esm.min.js.map +1 -0
  44. package/dist/chunks/KHR_interactivity-CR0LYUa7.esm.js +4033 -0
  45. package/dist/chunks/KHR_interactivity-CR0LYUa7.esm.js.map +1 -0
  46. package/dist/chunks/KHR_lights_punctual--w0a62AP.esm.js +581 -0
  47. package/dist/chunks/KHR_lights_punctual--w0a62AP.esm.js.map +1 -0
  48. package/dist/chunks/KHR_lights_punctual-BojffBbG.esm.min.js +2 -0
  49. package/dist/chunks/KHR_lights_punctual-BojffBbG.esm.min.js.map +1 -0
  50. package/dist/chunks/KHR_materials_anisotropy-BPtHWkOQ.esm.js +65 -0
  51. package/dist/chunks/KHR_materials_anisotropy-BPtHWkOQ.esm.js.map +1 -0
  52. package/dist/chunks/KHR_materials_anisotropy-DU5_bnCL.esm.min.js +2 -0
  53. package/dist/chunks/KHR_materials_anisotropy-DU5_bnCL.esm.min.js.map +1 -0
  54. package/dist/chunks/KHR_materials_clearcoat-BBuRlPhc.esm.min.js +2 -0
  55. package/dist/chunks/KHR_materials_clearcoat-BBuRlPhc.esm.min.js.map +1 -0
  56. package/dist/chunks/KHR_materials_clearcoat-Eg0xbuWN.esm.js +96 -0
  57. package/dist/chunks/KHR_materials_clearcoat-Eg0xbuWN.esm.js.map +1 -0
  58. package/dist/chunks/KHR_materials_diffuse_transmission-Bkzk60Y5.esm.min.js +2 -0
  59. package/dist/chunks/KHR_materials_diffuse_transmission-Bkzk60Y5.esm.min.js.map +1 -0
  60. package/dist/chunks/KHR_materials_diffuse_transmission-C3DaLgRY.esm.js +97 -0
  61. package/dist/chunks/KHR_materials_diffuse_transmission-C3DaLgRY.esm.js.map +1 -0
  62. package/dist/chunks/KHR_materials_dispersion-DL_XFhxj.esm.js +62 -0
  63. package/dist/chunks/KHR_materials_dispersion-DL_XFhxj.esm.js.map +1 -0
  64. package/dist/chunks/KHR_materials_dispersion-DbMQPBgM.esm.min.js +2 -0
  65. package/dist/chunks/KHR_materials_dispersion-DbMQPBgM.esm.min.js.map +1 -0
  66. package/dist/chunks/KHR_materials_emissive_strength-BuHyjtBD.esm.js +55 -0
  67. package/dist/chunks/KHR_materials_emissive_strength-BuHyjtBD.esm.js.map +1 -0
  68. package/dist/chunks/KHR_materials_emissive_strength-Djlr_ul3.esm.min.js +2 -0
  69. package/dist/chunks/KHR_materials_emissive_strength-Djlr_ul3.esm.min.js.map +1 -0
  70. package/dist/chunks/KHR_materials_ior-BIe6qBOo.esm.js +64 -0
  71. package/dist/chunks/KHR_materials_ior-BIe6qBOo.esm.js.map +1 -0
  72. package/dist/chunks/KHR_materials_ior-DOfaAmNY.esm.min.js +2 -0
  73. package/dist/chunks/KHR_materials_ior-DOfaAmNY.esm.min.js.map +1 -0
  74. package/dist/chunks/KHR_materials_iridescence-BgElZgUu.esm.js +72 -0
  75. package/dist/chunks/KHR_materials_iridescence-BgElZgUu.esm.js.map +1 -0
  76. package/dist/chunks/KHR_materials_iridescence-lUeo07SZ.esm.min.js +2 -0
  77. package/dist/chunks/KHR_materials_iridescence-lUeo07SZ.esm.min.js.map +1 -0
  78. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-9ShQyhJ6.esm.min.js +2 -0
  79. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-9ShQyhJ6.esm.min.js.map +1 -0
  80. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-DE5LjLg6.esm.js +81 -0
  81. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-DE5LjLg6.esm.js.map +1 -0
  82. package/dist/chunks/KHR_materials_sheen-BfZe6ZFu.esm.js +85 -0
  83. package/dist/chunks/KHR_materials_sheen-BfZe6ZFu.esm.js.map +1 -0
  84. package/dist/chunks/KHR_materials_sheen-OWjuK2V4.esm.min.js +2 -0
  85. package/dist/chunks/KHR_materials_sheen-OWjuK2V4.esm.min.js.map +1 -0
  86. package/dist/chunks/KHR_materials_specular-dowPxbW3.esm.js +75 -0
  87. package/dist/chunks/KHR_materials_specular-dowPxbW3.esm.js.map +1 -0
  88. package/dist/chunks/KHR_materials_specular-nWeBZu0R.esm.min.js +2 -0
  89. package/dist/chunks/KHR_materials_specular-nWeBZu0R.esm.min.js.map +1 -0
  90. package/dist/chunks/KHR_materials_transmission-BPNQkK0O.esm.min.js +2 -0
  91. package/dist/chunks/KHR_materials_transmission-BPNQkK0O.esm.min.js.map +1 -0
  92. package/dist/chunks/KHR_materials_transmission-CHr_yLLX.esm.js +307 -0
  93. package/dist/chunks/KHR_materials_transmission-CHr_yLLX.esm.js.map +1 -0
  94. package/dist/chunks/KHR_materials_unlit-BYXpcsdj.esm.min.js +2 -0
  95. package/dist/chunks/KHR_materials_unlit-BYXpcsdj.esm.min.js.map +1 -0
  96. package/dist/chunks/KHR_materials_unlit-Cr7YsDHT.esm.js +74 -0
  97. package/dist/chunks/KHR_materials_unlit-Cr7YsDHT.esm.js.map +1 -0
  98. package/dist/chunks/KHR_materials_variants-BCVX3sJa.esm.js +262 -0
  99. package/dist/chunks/KHR_materials_variants-BCVX3sJa.esm.js.map +1 -0
  100. package/dist/chunks/KHR_materials_variants-BXzl6KpJ.esm.min.js +2 -0
  101. package/dist/chunks/KHR_materials_variants-BXzl6KpJ.esm.min.js.map +1 -0
  102. package/dist/chunks/KHR_materials_volume-BD9KEaJz.esm.min.js +2 -0
  103. package/dist/chunks/KHR_materials_volume-BD9KEaJz.esm.min.js.map +1 -0
  104. package/dist/chunks/KHR_materials_volume-DrqGUGW6.esm.js +87 -0
  105. package/dist/chunks/KHR_materials_volume-DrqGUGW6.esm.js.map +1 -0
  106. package/dist/chunks/KHR_mesh_quantization-Dg22auJA.esm.min.js +2 -0
  107. package/dist/chunks/KHR_mesh_quantization-Dg22auJA.esm.min.js.map +1 -0
  108. package/dist/chunks/KHR_mesh_quantization-hvxpvTbe.esm.js +26 -0
  109. package/dist/chunks/KHR_mesh_quantization-hvxpvTbe.esm.js.map +1 -0
  110. package/dist/chunks/KHR_node_hoverability-BDiqFmBB.esm.js +39 -0
  111. package/dist/chunks/KHR_node_hoverability-BDiqFmBB.esm.js.map +1 -0
  112. package/dist/chunks/KHR_node_hoverability-CumkOtZM.esm.min.js +2 -0
  113. package/dist/chunks/KHR_node_hoverability-CumkOtZM.esm.min.js.map +1 -0
  114. package/dist/chunks/KHR_node_visibility-BKEa-Yfj.esm.min.js +2 -0
  115. package/dist/chunks/KHR_node_visibility-BKEa-Yfj.esm.min.js.map +1 -0
  116. package/dist/chunks/KHR_node_visibility-K0fsD4Vv.esm.js +46 -0
  117. package/dist/chunks/KHR_node_visibility-K0fsD4Vv.esm.js.map +1 -0
  118. package/dist/chunks/KHR_texture_basisu-8YVY1pKo.esm.js +43 -0
  119. package/dist/chunks/KHR_texture_basisu-8YVY1pKo.esm.js.map +1 -0
  120. package/dist/chunks/KHR_texture_basisu-BM__NeSW.esm.min.js +2 -0
  121. package/dist/chunks/KHR_texture_basisu-BM__NeSW.esm.min.js.map +1 -0
  122. package/dist/chunks/KHR_texture_transform--qxpdvRw.esm.js +63 -0
  123. package/dist/chunks/KHR_texture_transform--qxpdvRw.esm.js.map +1 -0
  124. package/dist/chunks/KHR_texture_transform-C0MO-oJp.esm.min.js +2 -0
  125. package/dist/chunks/KHR_texture_transform-C0MO-oJp.esm.min.js.map +1 -0
  126. package/dist/chunks/KHR_xmp_json_ld-D9FpHvJo.esm.js +51 -0
  127. package/dist/chunks/KHR_xmp_json_ld-D9FpHvJo.esm.js.map +1 -0
  128. package/dist/chunks/KHR_xmp_json_ld-DeXPWWQE.esm.min.js +2 -0
  129. package/dist/chunks/KHR_xmp_json_ld-DeXPWWQE.esm.min.js.map +1 -0
  130. package/dist/chunks/MSFT_audio_emitter-BbICSwFH.esm.min.js +2 -0
  131. package/dist/chunks/MSFT_audio_emitter-BbICSwFH.esm.min.js.map +1 -0
  132. package/dist/chunks/MSFT_audio_emitter-Dd5lbfUc.esm.js +2201 -0
  133. package/dist/chunks/MSFT_audio_emitter-Dd5lbfUc.esm.js.map +1 -0
  134. package/dist/chunks/MSFT_lod-B0zrRF3s.esm.js +337 -0
  135. package/dist/chunks/MSFT_lod-B0zrRF3s.esm.js.map +1 -0
  136. package/dist/chunks/MSFT_lod-Bd4znUfD.esm.min.js +2 -0
  137. package/dist/chunks/MSFT_lod-Bd4znUfD.esm.min.js.map +1 -0
  138. package/dist/chunks/MSFT_minecraftMesh-CdIpMgsb.esm.min.js +2 -0
  139. package/dist/chunks/MSFT_minecraftMesh-CdIpMgsb.esm.min.js.map +1 -0
  140. package/dist/chunks/MSFT_minecraftMesh-WFc8m_Ka.esm.js +46 -0
  141. package/dist/chunks/MSFT_minecraftMesh-WFc8m_Ka.esm.js.map +1 -0
  142. package/dist/chunks/MSFT_sRGBFactors-CTbtGna8.esm.js +47 -0
  143. package/dist/chunks/MSFT_sRGBFactors-CTbtGna8.esm.js.map +1 -0
  144. package/dist/chunks/MSFT_sRGBFactors-yTSoBQJx.esm.min.js +2 -0
  145. package/dist/chunks/MSFT_sRGBFactors-yTSoBQJx.esm.min.js.map +1 -0
  146. package/dist/chunks/animationGroup-8TJDgymS.esm.js +2482 -0
  147. package/dist/chunks/animationGroup-8TJDgymS.esm.js.map +1 -0
  148. package/dist/chunks/animationGroup-toXtd3a1.esm.min.js +2 -0
  149. package/dist/chunks/animationGroup-toXtd3a1.esm.min.js.map +1 -0
  150. package/dist/chunks/assetContainer-7pMDUaac.esm.min.js +2 -0
  151. package/dist/chunks/assetContainer-7pMDUaac.esm.min.js.map +1 -0
  152. package/dist/chunks/assetContainer-DYzO0AbX.esm.js +1720 -0
  153. package/dist/chunks/assetContainer-DYzO0AbX.esm.js.map +1 -0
  154. package/dist/chunks/audioEngine-Kz4HSEXd.esm.min.js +2 -0
  155. package/dist/chunks/audioEngine-Kz4HSEXd.esm.min.js.map +1 -0
  156. package/dist/chunks/audioEngine-peiGqjr6.esm.js +305 -0
  157. package/dist/chunks/audioEngine-peiGqjr6.esm.js.map +1 -0
  158. package/dist/chunks/bakedVertexAnimation-BZvcL01J.esm.min.js +2 -0
  159. package/dist/chunks/bakedVertexAnimation-BZvcL01J.esm.min.js.map +1 -0
  160. package/dist/chunks/bakedVertexAnimation-CPflSjER.esm.js +114 -0
  161. package/dist/chunks/bakedVertexAnimation-CPflSjER.esm.js.map +1 -0
  162. package/dist/chunks/basisTextureLoader-CR0XhSAg.esm.js +600 -0
  163. package/dist/chunks/basisTextureLoader-CR0XhSAg.esm.js.map +1 -0
  164. package/dist/chunks/basisTextureLoader-DVJdcB62.esm.min.js +2 -0
  165. package/dist/chunks/basisTextureLoader-DVJdcB62.esm.min.js.map +1 -0
  166. package/dist/chunks/dds-6EdM5O6M.esm.js +540 -0
  167. package/dist/chunks/dds-6EdM5O6M.esm.js.map +1 -0
  168. package/dist/chunks/dds-DVX_K9B3.esm.min.js +2 -0
  169. package/dist/chunks/dds-DVX_K9B3.esm.min.js.map +1 -0
  170. package/dist/chunks/ddsTextureLoader-BAK7Ib2Z.esm.min.js +2 -0
  171. package/dist/chunks/ddsTextureLoader-BAK7Ib2Z.esm.min.js.map +1 -0
  172. package/dist/chunks/ddsTextureLoader-_nktVxwZ.esm.js +88 -0
  173. package/dist/chunks/ddsTextureLoader-_nktVxwZ.esm.js.map +1 -0
  174. package/dist/chunks/decalFragment-C_Cews3-.esm.js +18 -0
  175. package/dist/chunks/decalFragment-C_Cews3-.esm.js.map +1 -0
  176. package/dist/chunks/decalFragment-Dmj88EX9.esm.min.js +2 -0
  177. package/dist/chunks/decalFragment-Dmj88EX9.esm.min.js.map +1 -0
  178. package/dist/chunks/default.fragment-Bv_nR7po.esm.min.js +2 -0
  179. package/dist/chunks/default.fragment-Bv_nR7po.esm.min.js.map +1 -0
  180. package/dist/chunks/default.fragment-CkZQyJVM.esm.min.js +2 -0
  181. package/dist/chunks/default.fragment-CkZQyJVM.esm.min.js.map +1 -0
  182. package/dist/chunks/default.fragment-CyFHDykY.esm.js +446 -0
  183. package/dist/chunks/default.fragment-CyFHDykY.esm.js.map +1 -0
  184. package/dist/chunks/default.fragment-ej-2z5tS.esm.js +515 -0
  185. package/dist/chunks/default.fragment-ej-2z5tS.esm.js.map +1 -0
  186. package/dist/chunks/default.vertex-16mVOFgT.esm.js +211 -0
  187. package/dist/chunks/default.vertex-16mVOFgT.esm.js.map +1 -0
  188. package/dist/chunks/default.vertex-D--q2At3.esm.min.js +2 -0
  189. package/dist/chunks/default.vertex-D--q2At3.esm.min.js.map +1 -0
  190. package/dist/chunks/default.vertex-DDlgZTrR.esm.js +190 -0
  191. package/dist/chunks/default.vertex-DDlgZTrR.esm.js.map +1 -0
  192. package/dist/chunks/default.vertex-_jqs3KiZ.esm.min.js +2 -0
  193. package/dist/chunks/default.vertex-_jqs3KiZ.esm.min.js.map +1 -0
  194. package/dist/chunks/defaultUboDeclaration-8YG0iNg8.esm.js +15 -0
  195. package/dist/chunks/defaultUboDeclaration-8YG0iNg8.esm.js.map +1 -0
  196. package/dist/chunks/defaultUboDeclaration-BoBSRTbi.esm.js +13 -0
  197. package/dist/chunks/defaultUboDeclaration-BoBSRTbi.esm.js.map +1 -0
  198. package/dist/chunks/defaultUboDeclaration-Dt_5vo1d.esm.min.js +2 -0
  199. package/dist/chunks/defaultUboDeclaration-Dt_5vo1d.esm.min.js.map +1 -0
  200. package/dist/chunks/defaultUboDeclaration-R6gGjkAM.esm.min.js +2 -0
  201. package/dist/chunks/defaultUboDeclaration-R6gGjkAM.esm.min.js.map +1 -0
  202. package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js +11 -0
  203. package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js.map +1 -0
  204. package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js +2 -0
  205. package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js.map +1 -0
  206. package/dist/chunks/dumpTools-Bhux0wvM.esm.js +200 -0
  207. package/dist/chunks/dumpTools-Bhux0wvM.esm.js.map +1 -0
  208. package/dist/chunks/dumpTools-CHCb2UkY.esm.min.js +2 -0
  209. package/dist/chunks/dumpTools-CHCb2UkY.esm.min.js.map +1 -0
  210. package/dist/chunks/engine-DF_zE4qj.esm.js +2213 -0
  211. package/dist/chunks/engine-DF_zE4qj.esm.js.map +1 -0
  212. package/dist/chunks/engine-DVmdDcyP.esm.min.js +2 -0
  213. package/dist/chunks/engine-DVmdDcyP.esm.min.js.map +1 -0
  214. package/dist/chunks/engine.common-CvOmoKru.esm.js +1162 -0
  215. package/dist/chunks/engine.common-CvOmoKru.esm.js.map +1 -0
  216. package/dist/chunks/engine.common-DpTzktQJ.esm.min.js +2 -0
  217. package/dist/chunks/engine.common-DpTzktQJ.esm.min.js.map +1 -0
  218. package/dist/chunks/envTextureLoader-4YxGm-Px.esm.js +64 -0
  219. package/dist/chunks/envTextureLoader-4YxGm-Px.esm.js.map +1 -0
  220. package/dist/chunks/envTextureLoader-DMQui088.esm.min.js +2 -0
  221. package/dist/chunks/envTextureLoader-DMQui088.esm.min.js.map +1 -0
  222. package/dist/chunks/environmentTextureTools-BPGrTBPI.esm.min.js +2 -0
  223. package/dist/chunks/environmentTextureTools-BPGrTBPI.esm.min.js.map +1 -0
  224. package/dist/chunks/environmentTextureTools-DvkpsqkN.esm.js +382 -0
  225. package/dist/chunks/environmentTextureTools-DvkpsqkN.esm.js.map +1 -0
  226. package/dist/chunks/exrTextureLoader-BRkB54sO.esm.js +1683 -0
  227. package/dist/chunks/exrTextureLoader-BRkB54sO.esm.js.map +1 -0
  228. package/dist/chunks/exrTextureLoader-BtN7_zst.esm.min.js +2 -0
  229. package/dist/chunks/exrTextureLoader-BtN7_zst.esm.min.js.map +1 -0
  230. package/dist/chunks/fogFragment-BrGGFaiu.esm.js +101 -0
  231. package/dist/chunks/fogFragment-BrGGFaiu.esm.js.map +1 -0
  232. package/dist/chunks/fogFragment-ByOwwQur.esm.min.js +2 -0
  233. package/dist/chunks/fogFragment-ByOwwQur.esm.min.js.map +1 -0
  234. package/dist/chunks/fogFragment-Chod24nu.esm.min.js +2 -0
  235. package/dist/chunks/fogFragment-Chod24nu.esm.min.js.map +1 -0
  236. package/dist/chunks/fogFragment-gZfybCpt.esm.js +102 -0
  237. package/dist/chunks/fogFragment-gZfybCpt.esm.js.map +1 -0
  238. package/dist/chunks/fresnelFunction-BdEia8ob.esm.min.js +2 -0
  239. package/dist/chunks/fresnelFunction-BdEia8ob.esm.min.js.map +1 -0
  240. package/dist/chunks/fresnelFunction-DBlxfmri.esm.js +12 -0
  241. package/dist/chunks/fresnelFunction-DBlxfmri.esm.js.map +1 -0
  242. package/dist/chunks/glTFLoader-D4C1IGb3.esm.min.js +2 -0
  243. package/dist/chunks/glTFLoader-D4C1IGb3.esm.min.js.map +1 -0
  244. package/dist/chunks/glTFLoader-fUFiWvYb.esm.js +7693 -0
  245. package/dist/chunks/glTFLoader-fUFiWvYb.esm.js.map +1 -0
  246. package/dist/chunks/glTFLoaderAnimation-BB_Vw079.esm.min.js +2 -0
  247. package/dist/chunks/glTFLoaderAnimation-BB_Vw079.esm.min.js.map +1 -0
  248. package/dist/chunks/glTFLoaderAnimation-CttmY50U.esm.js +77 -0
  249. package/dist/chunks/glTFLoaderAnimation-CttmY50U.esm.js.map +1 -0
  250. package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js +2 -0
  251. package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js.map +1 -0
  252. package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js +67 -0
  253. package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js.map +1 -0
  254. package/dist/chunks/harmonicsFunctions-B0Rp1hEo.esm.min.js +2 -0
  255. package/dist/chunks/harmonicsFunctions-B0Rp1hEo.esm.min.js.map +1 -0
  256. package/dist/chunks/harmonicsFunctions-Cca_z552.esm.js +34 -0
  257. package/dist/chunks/harmonicsFunctions-Cca_z552.esm.js.map +1 -0
  258. package/dist/chunks/harmonicsFunctions-D4ID83NC.esm.min.js +2 -0
  259. package/dist/chunks/harmonicsFunctions-D4ID83NC.esm.min.js.map +1 -0
  260. package/dist/chunks/harmonicsFunctions-HJ5dbl0w.esm.js +35 -0
  261. package/dist/chunks/harmonicsFunctions-HJ5dbl0w.esm.js.map +1 -0
  262. package/dist/chunks/hdrTextureLoader-C3kqy6YV.esm.js +253 -0
  263. package/dist/chunks/hdrTextureLoader-C3kqy6YV.esm.js.map +1 -0
  264. package/dist/chunks/hdrTextureLoader-Dhlluz4z.esm.min.js +2 -0
  265. package/dist/chunks/hdrTextureLoader-Dhlluz4z.esm.min.js.map +1 -0
  266. package/dist/chunks/helperFunctions-BJotVqUd.esm.min.js +2 -0
  267. package/dist/chunks/helperFunctions-BJotVqUd.esm.min.js.map +1 -0
  268. package/dist/chunks/helperFunctions-C66wRWtu.esm.js +110 -0
  269. package/dist/chunks/helperFunctions-C66wRWtu.esm.js.map +1 -0
  270. package/dist/chunks/helperFunctions-DwEZ9rqh.esm.min.js +2 -0
  271. package/dist/chunks/helperFunctions-DwEZ9rqh.esm.min.js.map +1 -0
  272. package/dist/chunks/helperFunctions-gnki_9Kj.esm.js +83 -0
  273. package/dist/chunks/helperFunctions-gnki_9Kj.esm.js.map +1 -0
  274. package/dist/chunks/iesTextureLoader-QDs2Cwy5.esm.js +189 -0
  275. package/dist/chunks/iesTextureLoader-QDs2Cwy5.esm.js.map +1 -0
  276. package/dist/chunks/iesTextureLoader-pwA6Q4HK.esm.min.js +2 -0
  277. package/dist/chunks/iesTextureLoader-pwA6Q4HK.esm.min.js.map +1 -0
  278. package/dist/chunks/index-C6hXZyZb.esm.js +74889 -0
  279. package/dist/chunks/index-C6hXZyZb.esm.js.map +1 -0
  280. package/dist/chunks/index-rZVkfTE6.esm.min.js +57 -0
  281. package/dist/chunks/index-rZVkfTE6.esm.min.js.map +1 -0
  282. package/dist/chunks/ktxTextureLoader-jVu-Sj-0.esm.js +814 -0
  283. package/dist/chunks/ktxTextureLoader-jVu-Sj-0.esm.js.map +1 -0
  284. package/dist/chunks/ktxTextureLoader-zG9azrZF.esm.min.js +2 -0
  285. package/dist/chunks/ktxTextureLoader-zG9azrZF.esm.min.js.map +1 -0
  286. package/dist/chunks/logDepthDeclaration-0cA1pTvQ.esm.min.js +2 -0
  287. package/dist/chunks/logDepthDeclaration-0cA1pTvQ.esm.min.js.map +1 -0
  288. package/dist/chunks/logDepthDeclaration-CYxYhXIS.esm.js +11 -0
  289. package/dist/chunks/logDepthDeclaration-CYxYhXIS.esm.js.map +1 -0
  290. package/dist/chunks/logDepthDeclaration-D4KGxdX-.esm.min.js +2 -0
  291. package/dist/chunks/logDepthDeclaration-D4KGxdX-.esm.min.js.map +1 -0
  292. package/dist/chunks/logDepthDeclaration-DJlt2-H5.esm.js +35 -0
  293. package/dist/chunks/logDepthDeclaration-DJlt2-H5.esm.js.map +1 -0
  294. package/dist/chunks/logDepthVertex-BS2JEtXA.esm.min.js +2 -0
  295. package/dist/chunks/logDepthVertex-BS2JEtXA.esm.min.js.map +1 -0
  296. package/dist/chunks/logDepthVertex-DKPfA10X.esm.js +81 -0
  297. package/dist/chunks/logDepthVertex-DKPfA10X.esm.js.map +1 -0
  298. package/dist/chunks/logDepthVertex-ojTShW5I.esm.js +77 -0
  299. package/dist/chunks/logDepthVertex-ojTShW5I.esm.js.map +1 -0
  300. package/dist/chunks/logDepthVertex-v-0pHNc-.esm.min.js +2 -0
  301. package/dist/chunks/logDepthVertex-v-0pHNc-.esm.min.js.map +1 -0
  302. package/dist/chunks/mainUVVaryingDeclaration-BAzmbS0W.esm.min.js +2 -0
  303. package/dist/chunks/mainUVVaryingDeclaration-BAzmbS0W.esm.min.js.map +1 -0
  304. package/dist/chunks/mainUVVaryingDeclaration-Cnux1jkK.esm.js +11 -0
  305. package/dist/chunks/mainUVVaryingDeclaration-Cnux1jkK.esm.js.map +1 -0
  306. package/dist/chunks/mainUVVaryingDeclaration-CwS0hUUZ.esm.min.js +2 -0
  307. package/dist/chunks/mainUVVaryingDeclaration-CwS0hUUZ.esm.min.js.map +1 -0
  308. package/dist/chunks/mainUVVaryingDeclaration-DCawby1A.esm.js +11 -0
  309. package/dist/chunks/mainUVVaryingDeclaration-DCawby1A.esm.js.map +1 -0
  310. package/dist/chunks/mesh.vertexData.functions-B_pMCAzZ.esm.js +119 -0
  311. package/dist/chunks/mesh.vertexData.functions-B_pMCAzZ.esm.js.map +1 -0
  312. package/dist/chunks/mesh.vertexData.functions-Bo7e6Of9.esm.min.js +2 -0
  313. package/dist/chunks/mesh.vertexData.functions-Bo7e6Of9.esm.min.js.map +1 -0
  314. package/dist/chunks/meshUboDeclaration-QvH0RgeZ.esm.js +26 -0
  315. package/dist/chunks/meshUboDeclaration-QvH0RgeZ.esm.js.map +1 -0
  316. package/dist/chunks/meshUboDeclaration-g2s_cYI1.esm.min.js +2 -0
  317. package/dist/chunks/meshUboDeclaration-g2s_cYI1.esm.min.js.map +1 -0
  318. package/dist/chunks/objFileLoader-BOutXdVR.esm.min.js +2 -0
  319. package/dist/chunks/objFileLoader-BOutXdVR.esm.min.js.map +1 -0
  320. package/dist/chunks/objFileLoader-BPwrX8RK.esm.js +1338 -0
  321. package/dist/chunks/objFileLoader-BPwrX8RK.esm.js.map +1 -0
  322. package/dist/chunks/oitFragment-CmcWUhsZ.esm.js +1240 -0
  323. package/dist/chunks/oitFragment-CmcWUhsZ.esm.js.map +1 -0
  324. package/dist/chunks/oitFragment-D8XBQ6Wa.esm.js +1078 -0
  325. package/dist/chunks/oitFragment-D8XBQ6Wa.esm.js.map +1 -0
  326. package/dist/chunks/oitFragment-DgAlmoHs.esm.min.js +2 -0
  327. package/dist/chunks/oitFragment-DgAlmoHs.esm.min.js.map +1 -0
  328. package/dist/chunks/oitFragment-DpJ5xGhy.esm.min.js +2 -0
  329. package/dist/chunks/oitFragment-DpJ5xGhy.esm.min.js.map +1 -0
  330. package/dist/chunks/pass.fragment--XRaXRhU.esm.js +15 -0
  331. package/dist/chunks/pass.fragment--XRaXRhU.esm.js.map +1 -0
  332. package/dist/chunks/pass.fragment-5Q3qXxDe.esm.min.js +2 -0
  333. package/dist/chunks/pass.fragment-5Q3qXxDe.esm.min.js.map +1 -0
  334. package/dist/chunks/pass.fragment-BBLiyU_i.esm.min.js +2 -0
  335. package/dist/chunks/pass.fragment-BBLiyU_i.esm.min.js.map +1 -0
  336. package/dist/chunks/pass.fragment-DI4ZYZJe.esm.js +15 -0
  337. package/dist/chunks/pass.fragment-DI4ZYZJe.esm.js.map +1 -0
  338. package/dist/chunks/pbr.fragment-C7xQS4ZJ.esm.js +3269 -0
  339. package/dist/chunks/pbr.fragment-C7xQS4ZJ.esm.js.map +1 -0
  340. package/dist/chunks/pbr.fragment-Ddxaik8T.esm.min.js +2 -0
  341. package/dist/chunks/pbr.fragment-Ddxaik8T.esm.min.js.map +1 -0
  342. package/dist/chunks/pbr.fragment-fky04gH_.esm.js +3222 -0
  343. package/dist/chunks/pbr.fragment-fky04gH_.esm.js.map +1 -0
  344. package/dist/chunks/pbr.fragment-ya1zai4w.esm.min.js +2 -0
  345. package/dist/chunks/pbr.fragment-ya1zai4w.esm.min.js.map +1 -0
  346. package/dist/chunks/pbr.vertex-BPEYHoRM.esm.js +223 -0
  347. package/dist/chunks/pbr.vertex-BPEYHoRM.esm.js.map +1 -0
  348. package/dist/chunks/pbr.vertex-BXcMYADF.esm.js +348 -0
  349. package/dist/chunks/pbr.vertex-BXcMYADF.esm.js.map +1 -0
  350. package/dist/chunks/pbr.vertex-BjA08auU.esm.min.js +2 -0
  351. package/dist/chunks/pbr.vertex-BjA08auU.esm.min.js.map +1 -0
  352. package/dist/chunks/pbr.vertex-Cx2V3lNf.esm.min.js +2 -0
  353. package/dist/chunks/pbr.vertex-Cx2V3lNf.esm.min.js.map +1 -0
  354. package/dist/chunks/postprocess.vertex-BHpQrNSx.esm.min.js +2 -0
  355. package/dist/chunks/postprocess.vertex-BHpQrNSx.esm.min.js.map +1 -0
  356. package/dist/chunks/postprocess.vertex-DnDbk0tq.esm.js +20 -0
  357. package/dist/chunks/postprocess.vertex-DnDbk0tq.esm.js.map +1 -0
  358. package/dist/chunks/rawTexture-CWiRIto8.esm.js +191 -0
  359. package/dist/chunks/rawTexture-CWiRIto8.esm.js.map +1 -0
  360. package/dist/chunks/rawTexture-DX8V9PEj.esm.min.js +2 -0
  361. package/dist/chunks/rawTexture-DX8V9PEj.esm.min.js.map +1 -0
  362. package/dist/chunks/ray-ix7SqYNQ.esm.min.js +2 -0
  363. package/dist/chunks/ray-ix7SqYNQ.esm.min.js.map +1 -0
  364. package/dist/chunks/ray-nTZBkOil.esm.js +946 -0
  365. package/dist/chunks/ray-nTZBkOil.esm.js.map +1 -0
  366. package/dist/chunks/rgbdDecode.fragment-Be3ofvlt.esm.min.js +2 -0
  367. package/dist/chunks/rgbdDecode.fragment-Be3ofvlt.esm.min.js.map +1 -0
  368. package/dist/chunks/rgbdDecode.fragment-C05QJpT2.esm.js +13 -0
  369. package/dist/chunks/rgbdDecode.fragment-C05QJpT2.esm.js.map +1 -0
  370. package/dist/chunks/rgbdDecode.fragment-D3SYBclQ.esm.min.js +2 -0
  371. package/dist/chunks/rgbdDecode.fragment-D3SYBclQ.esm.min.js.map +1 -0
  372. package/dist/chunks/rgbdDecode.fragment-DBG6KfKF.esm.js +13 -0
  373. package/dist/chunks/rgbdDecode.fragment-DBG6KfKF.esm.js.map +1 -0
  374. package/dist/chunks/rgbdEncode.fragment-BlhtohrO.esm.js +13 -0
  375. package/dist/chunks/rgbdEncode.fragment-BlhtohrO.esm.js.map +1 -0
  376. package/dist/chunks/rgbdEncode.fragment-BmJKYw6A.esm.min.js +2 -0
  377. package/dist/chunks/rgbdEncode.fragment-BmJKYw6A.esm.min.js.map +1 -0
  378. package/dist/chunks/rgbdEncode.fragment-dr2kGjSO.esm.js +13 -0
  379. package/dist/chunks/rgbdEncode.fragment-dr2kGjSO.esm.js.map +1 -0
  380. package/dist/chunks/rgbdEncode.fragment-hXPzg1p5.esm.min.js +2 -0
  381. package/dist/chunks/rgbdEncode.fragment-hXPzg1p5.esm.min.js.map +1 -0
  382. package/dist/chunks/splatFileLoader-Bs42LtsP.esm.min.js +2 -0
  383. package/dist/chunks/splatFileLoader-Bs42LtsP.esm.min.js.map +1 -0
  384. package/dist/chunks/splatFileLoader-Dp33YOem.esm.js +3379 -0
  385. package/dist/chunks/splatFileLoader-Dp33YOem.esm.js.map +1 -0
  386. package/dist/chunks/spotLight-C0NmKeem.esm.js +701 -0
  387. package/dist/chunks/spotLight-C0NmKeem.esm.js.map +1 -0
  388. package/dist/chunks/spotLight-CcuCNdES.esm.min.js +2 -0
  389. package/dist/chunks/spotLight-CcuCNdES.esm.min.js.map +1 -0
  390. package/dist/chunks/standardMaterial-C1E5n_4w.esm.min.js +2 -0
  391. package/dist/chunks/standardMaterial-C1E5n_4w.esm.min.js.map +1 -0
  392. package/dist/chunks/standardMaterial-v_D8QA4q.esm.js +1807 -0
  393. package/dist/chunks/standardMaterial-v_D8QA4q.esm.js.map +1 -0
  394. package/dist/chunks/stlFileLoader-DC2IRQDj.esm.min.js +2 -0
  395. package/dist/chunks/stlFileLoader-DC2IRQDj.esm.min.js.map +1 -0
  396. package/dist/chunks/stlFileLoader-LRHEIFfU.esm.js +238 -0
  397. package/dist/chunks/stlFileLoader-LRHEIFfU.esm.js.map +1 -0
  398. package/dist/chunks/tgaTextureLoader-2ekJC0En.esm.js +349 -0
  399. package/dist/chunks/tgaTextureLoader-2ekJC0En.esm.js.map +1 -0
  400. package/dist/chunks/tgaTextureLoader-Clj6zUK-.esm.min.js +2 -0
  401. package/dist/chunks/tgaTextureLoader-Clj6zUK-.esm.min.js.map +1 -0
  402. package/dist/chunks/thinEngine-DksimP2U.esm.js +3848 -0
  403. package/dist/chunks/thinEngine-DksimP2U.esm.js.map +1 -0
  404. package/dist/chunks/thinEngine-tsALaFYH.esm.min.js +2 -0
  405. package/dist/chunks/thinEngine-tsALaFYH.esm.min.js.map +1 -0
  406. package/dist/chunks/thinInstanceMesh-B8AW0Oa2.esm.js +314 -0
  407. package/dist/chunks/thinInstanceMesh-B8AW0Oa2.esm.js.map +1 -0
  408. package/dist/chunks/thinInstanceMesh-kCGEJ0-e.esm.min.js +2 -0
  409. package/dist/chunks/thinInstanceMesh-kCGEJ0-e.esm.min.js.map +1 -0
  410. package/dist/chunks/vertexColorMixing-Bjijk3lU.esm.min.js +2 -0
  411. package/dist/chunks/vertexColorMixing-Bjijk3lU.esm.min.js.map +1 -0
  412. package/dist/chunks/vertexColorMixing-D9917nJN.esm.js +428 -0
  413. package/dist/chunks/vertexColorMixing-D9917nJN.esm.js.map +1 -0
  414. package/dist/chunks/vertexColorMixing-DgthWrKf.esm.min.js +2 -0
  415. package/dist/chunks/vertexColorMixing-DgthWrKf.esm.min.js.map +1 -0
  416. package/dist/chunks/vertexColorMixing-U1SA6UK3.esm.js +538 -0
  417. package/dist/chunks/vertexColorMixing-U1SA6UK3.esm.js.map +1 -0
  418. package/dist/chunks/webgpuEngine-BOGR1D8F.esm.min.js +2 -0
  419. package/dist/chunks/webgpuEngine-BOGR1D8F.esm.min.js.map +1 -0
  420. package/dist/chunks/webgpuEngine-BrzOpZ-2.esm.js +11533 -0
  421. package/dist/chunks/webgpuEngine-BrzOpZ-2.esm.js.map +1 -0
  422. package/dist/chunks/workerPool-BUOov2K1.esm.js +122 -0
  423. package/dist/chunks/workerPool-BUOov2K1.esm.js.map +1 -0
  424. package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js +2 -0
  425. package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js.map +1 -0
  426. package/lib/index.d.ts +591 -0
  427. package/lib/index.js +2165 -0
  428. package/lib/index.js.map +1 -0
  429. package/package.json +19 -28
  430. package/readme.md +28 -28
  431. package/configuration/configuration.d.ts +0 -107
  432. package/configuration/configuration.js +0 -16
  433. package/configuration/configuration.js.map +0 -1
  434. package/configuration/configurationCompatibility.d.ts +0 -8
  435. package/configuration/configurationCompatibility.js +0 -66
  436. package/configuration/configurationCompatibility.js.map +0 -1
  437. package/configuration/configurationContainer.d.ts +0 -10
  438. package/configuration/configurationContainer.js +0 -10
  439. package/configuration/configurationContainer.js.map +0 -1
  440. package/configuration/globals.d.ts +0 -6
  441. package/configuration/globals.js +0 -18
  442. package/configuration/globals.js.map +0 -1
  443. package/configuration/index.d.ts +0 -2
  444. package/configuration/index.js +0 -4
  445. package/configuration/index.js.map +0 -1
  446. package/configuration/interfaces/cameraConfiguration.d.ts +0 -31
  447. package/configuration/interfaces/cameraConfiguration.js +0 -2
  448. package/configuration/interfaces/cameraConfiguration.js.map +0 -1
  449. package/configuration/interfaces/colorGradingConfiguration.d.ts +0 -81
  450. package/configuration/interfaces/colorGradingConfiguration.js +0 -2
  451. package/configuration/interfaces/colorGradingConfiguration.js.map +0 -1
  452. package/configuration/interfaces/defaultRenderingPipelineConfiguration.d.ts +0 -20
  453. package/configuration/interfaces/defaultRenderingPipelineConfiguration.js +0 -2
  454. package/configuration/interfaces/defaultRenderingPipelineConfiguration.js.map +0 -1
  455. package/configuration/interfaces/environmentMapConfiguration.d.ts +0 -22
  456. package/configuration/interfaces/environmentMapConfiguration.js +0 -2
  457. package/configuration/interfaces/environmentMapConfiguration.js.map +0 -1
  458. package/configuration/interfaces/groundConfiguration.d.ts +0 -24
  459. package/configuration/interfaces/groundConfiguration.js +0 -2
  460. package/configuration/interfaces/groundConfiguration.js.map +0 -1
  461. package/configuration/interfaces/imageProcessingConfiguration.d.ts +0 -45
  462. package/configuration/interfaces/imageProcessingConfiguration.js +0 -2
  463. package/configuration/interfaces/imageProcessingConfiguration.js.map +0 -1
  464. package/configuration/interfaces/index.d.ts +0 -15
  465. package/configuration/interfaces/index.js +0 -16
  466. package/configuration/interfaces/index.js.map +0 -1
  467. package/configuration/interfaces/lightConfiguration.d.ts +0 -60
  468. package/configuration/interfaces/lightConfiguration.js +0 -2
  469. package/configuration/interfaces/lightConfiguration.js.map +0 -1
  470. package/configuration/interfaces/modelAnimationConfiguration.d.ts +0 -26
  471. package/configuration/interfaces/modelAnimationConfiguration.js +0 -2
  472. package/configuration/interfaces/modelAnimationConfiguration.js.map +0 -1
  473. package/configuration/interfaces/modelConfiguration.d.ts +0 -65
  474. package/configuration/interfaces/modelConfiguration.js +0 -2
  475. package/configuration/interfaces/modelConfiguration.js.map +0 -1
  476. package/configuration/interfaces/observersConfiguration.d.ts +0 -5
  477. package/configuration/interfaces/observersConfiguration.js +0 -2
  478. package/configuration/interfaces/observersConfiguration.js.map +0 -1
  479. package/configuration/interfaces/sceneConfiguration.d.ts +0 -48
  480. package/configuration/interfaces/sceneConfiguration.js +0 -2
  481. package/configuration/interfaces/sceneConfiguration.js.map +0 -1
  482. package/configuration/interfaces/sceneOptimizerConfiguration.d.ts +0 -23
  483. package/configuration/interfaces/sceneOptimizerConfiguration.js +0 -2
  484. package/configuration/interfaces/sceneOptimizerConfiguration.js.map +0 -1
  485. package/configuration/interfaces/skyboxConfiguration.d.ts +0 -21
  486. package/configuration/interfaces/skyboxConfiguration.js +0 -2
  487. package/configuration/interfaces/skyboxConfiguration.js.map +0 -1
  488. package/configuration/interfaces/templateConfiguration.d.ts +0 -67
  489. package/configuration/interfaces/templateConfiguration.js +0 -2
  490. package/configuration/interfaces/templateConfiguration.js.map +0 -1
  491. package/configuration/interfaces/vrConfiguration.d.ts +0 -16
  492. package/configuration/interfaces/vrConfiguration.js +0 -2
  493. package/configuration/interfaces/vrConfiguration.js.map +0 -1
  494. package/configuration/loader.d.ts +0 -4
  495. package/configuration/loader.js +0 -17
  496. package/configuration/loader.js.map +0 -1
  497. package/configuration/mappers.d.ts +0 -43
  498. package/configuration/mappers.js +0 -193
  499. package/configuration/mappers.js.map +0 -1
  500. package/configuration/renderOnlyLoader.d.ts +0 -33
  501. package/configuration/renderOnlyLoader.js +0 -162
  502. package/configuration/renderOnlyLoader.js.map +0 -1
  503. package/configuration/types/default.d.ts +0 -6
  504. package/configuration/types/default.js +0 -121
  505. package/configuration/types/default.js.map +0 -1
  506. package/configuration/types/environmentMap.d.ts +0 -5
  507. package/configuration/types/environmentMap.js +0 -14
  508. package/configuration/types/environmentMap.js.map +0 -1
  509. package/configuration/types/extended.d.ts +0 -6
  510. package/configuration/types/extended.js +0 -317
  511. package/configuration/types/extended.js.map +0 -1
  512. package/configuration/types/index.d.ts +0 -14
  513. package/configuration/types/index.js +0 -51
  514. package/configuration/types/index.js.map +0 -1
  515. package/configuration/types/minimal.d.ts +0 -6
  516. package/configuration/types/minimal.js +0 -43
  517. package/configuration/types/minimal.js.map +0 -1
  518. package/configuration/types/renderOnlyDefault.d.ts +0 -30
  519. package/configuration/types/renderOnlyDefault.js +0 -31
  520. package/configuration/types/renderOnlyDefault.js.map +0 -1
  521. package/configuration/types/shadowLight.d.ts +0 -9
  522. package/configuration/types/shadowLight.js +0 -64
  523. package/configuration/types/shadowLight.js.map +0 -1
  524. package/helper/index.d.ts +0 -29
  525. package/helper/index.js +0 -66
  526. package/helper/index.js.map +0 -1
  527. package/index.d.ts +0 -30
  528. package/index.js +0 -46
  529. package/index.js.map +0 -1
  530. package/initializer.d.ts +0 -11
  531. package/initializer.js +0 -35
  532. package/initializer.js.map +0 -1
  533. package/interfaces.d.ts +0 -5
  534. package/interfaces.js +0 -7
  535. package/interfaces.js.map +0 -1
  536. package/labs/environmentSerializer.d.ts +0 -126
  537. package/labs/environmentSerializer.js +0 -191
  538. package/labs/environmentSerializer.js.map +0 -1
  539. package/labs/texture.d.ts +0 -183
  540. package/labs/texture.js +0 -351
  541. package/labs/texture.js.map +0 -1
  542. package/labs/viewerLabs.d.ts +0 -51
  543. package/labs/viewerLabs.js +0 -134
  544. package/labs/viewerLabs.js.map +0 -1
  545. package/loader/modelLoader.d.ts +0 -56
  546. package/loader/modelLoader.js +0 -202
  547. package/loader/modelLoader.js.map +0 -1
  548. package/loader/plugins/applyMaterialConfig.d.ts +0 -12
  549. package/loader/plugins/applyMaterialConfig.js +0 -16
  550. package/loader/plugins/applyMaterialConfig.js.map +0 -1
  551. package/loader/plugins/extendedMaterialLoaderPlugin.d.ts +0 -9
  552. package/loader/plugins/extendedMaterialLoaderPlugin.js +0 -16
  553. package/loader/plugins/extendedMaterialLoaderPlugin.js.map +0 -1
  554. package/loader/plugins/index.d.ts +0 -19
  555. package/loader/plugins/index.js +0 -44
  556. package/loader/plugins/index.js.map +0 -1
  557. package/loader/plugins/loaderPlugin.d.ts +0 -24
  558. package/loader/plugins/loaderPlugin.js +0 -2
  559. package/loader/plugins/loaderPlugin.js.map +0 -1
  560. package/loader/plugins/msftLodLoaderPlugin.d.ts +0 -12
  561. package/loader/plugins/msftLodLoaderPlugin.js +0 -21
  562. package/loader/plugins/msftLodLoaderPlugin.js.map +0 -1
  563. package/loader/plugins/telemetryLoaderPlugin.d.ts +0 -12
  564. package/loader/plugins/telemetryLoaderPlugin.js +0 -36
  565. package/loader/plugins/telemetryLoaderPlugin.js.map +0 -1
  566. package/managers/observablesManager.d.ts +0 -66
  567. package/managers/observablesManager.js +0 -35
  568. package/managers/observablesManager.js.map +0 -1
  569. package/managers/sceneManager.d.ts +0 -245
  570. package/managers/sceneManager.js +0 -1375
  571. package/managers/sceneManager.js.map +0 -1
  572. package/managers/telemetryManager.d.ts +0 -78
  573. package/managers/telemetryManager.js +0 -117
  574. package/managers/telemetryManager.js.map +0 -1
  575. package/model/modelAnimation.d.ts +0 -215
  576. package/model/modelAnimation.js +0 -237
  577. package/model/modelAnimation.js.map +0 -1
  578. package/model/viewerModel.d.ts +0 -233
  579. package/model/viewerModel.js +0 -673
  580. package/model/viewerModel.js.map +0 -1
  581. package/optimizer/custom/extended.d.ts +0 -13
  582. package/optimizer/custom/extended.js +0 -101
  583. package/optimizer/custom/extended.js.map +0 -1
  584. package/optimizer/custom/index.d.ts +0 -9
  585. package/optimizer/custom/index.js +0 -26
  586. package/optimizer/custom/index.js.map +0 -1
  587. package/renderOnlyIndex.d.ts +0 -11
  588. package/renderOnlyIndex.js +0 -18
  589. package/renderOnlyIndex.js.map +0 -1
  590. package/templating/eventManager.d.ts +0 -35
  591. package/templating/eventManager.js +0 -66
  592. package/templating/eventManager.js.map +0 -1
  593. package/templating/plugins/hdButtonPlugin.d.ts +0 -9
  594. package/templating/plugins/hdButtonPlugin.js +0 -22
  595. package/templating/plugins/hdButtonPlugin.js.map +0 -1
  596. package/templating/plugins/printButton.d.ts +0 -9
  597. package/templating/plugins/printButton.js +0 -41
  598. package/templating/plugins/printButton.js.map +0 -1
  599. package/templating/templateManager.d.ts +0 -197
  600. package/templating/templateManager.js +0 -561
  601. package/templating/templateManager.js.map +0 -1
  602. package/templating/viewerTemplatePlugin.d.ts +0 -21
  603. package/templating/viewerTemplatePlugin.js +0 -69
  604. package/templating/viewerTemplatePlugin.js.map +0 -1
  605. package/viewer/defaultViewer.d.ts +0 -130
  606. package/viewer/defaultViewer.js +0 -672
  607. package/viewer/defaultViewer.js.map +0 -1
  608. package/viewer/renderOnlyViewer.d.ts +0 -9
  609. package/viewer/renderOnlyViewer.js +0 -46
  610. package/viewer/renderOnlyViewer.js.map +0 -1
  611. package/viewer/viewer.d.ts +0 -258
  612. package/viewer/viewer.js +0 -783
  613. package/viewer/viewer.js.map +0 -1
  614. package/viewer/viewerManager.d.ts +0 -58
  615. package/viewer/viewerManager.js +0 -91
  616. package/viewer/viewerManager.js.map +0 -1
  617. package/viewer/viewerWithTemplate.d.ts +0 -9
  618. package/viewer/viewerWithTemplate.js +0 -20
  619. package/viewer/viewerWithTemplate.js.map +0 -1
@@ -1 +0,0 @@
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"]}
@@ -1,78 +0,0 @@
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;
@@ -1,117 +0,0 @@
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
@@ -1 +0,0 @@
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"]}