@babylonjs/viewer 7.40.4 → 7.41.0-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-CFzvmxxg.esm.min.js +2 -0
  7. package/dist/chunks/EXT_lights_ies-CFzvmxxg.esm.min.js.map +1 -0
  8. package/dist/chunks/EXT_lights_ies-cyFdY7yl.esm.js +84 -0
  9. package/dist/chunks/EXT_lights_ies-cyFdY7yl.esm.js.map +1 -0
  10. package/dist/chunks/EXT_lights_image_based-BNmSqx40.esm.min.js +2 -0
  11. package/dist/chunks/EXT_lights_image_based-BNmSqx40.esm.min.js.map +1 -0
  12. package/dist/chunks/EXT_lights_image_based-CC48JVU0.esm.js +171 -0
  13. package/dist/chunks/EXT_lights_image_based-CC48JVU0.esm.js.map +1 -0
  14. package/dist/chunks/EXT_mesh_gpu_instancing-B2qj3kQu.esm.js +86 -0
  15. package/dist/chunks/EXT_mesh_gpu_instancing-B2qj3kQu.esm.js.map +1 -0
  16. package/dist/chunks/EXT_mesh_gpu_instancing-lanrAAoi.esm.min.js +2 -0
  17. package/dist/chunks/EXT_mesh_gpu_instancing-lanrAAoi.esm.min.js.map +1 -0
  18. package/dist/chunks/EXT_meshopt_compression-DjvHx7gJ.esm.js +134 -0
  19. package/dist/chunks/EXT_meshopt_compression-DjvHx7gJ.esm.js.map +1 -0
  20. package/dist/chunks/EXT_meshopt_compression-oH6HzGir.esm.min.js +2 -0
  21. package/dist/chunks/EXT_meshopt_compression-oH6HzGir.esm.min.js.map +1 -0
  22. package/dist/chunks/EXT_texture_avif-BYWETW7-.esm.min.js +2 -0
  23. package/dist/chunks/EXT_texture_avif-BYWETW7-.esm.min.js.map +1 -0
  24. package/dist/chunks/EXT_texture_avif-CKXEq29h.esm.js +44 -0
  25. package/dist/chunks/EXT_texture_avif-CKXEq29h.esm.js.map +1 -0
  26. package/dist/chunks/EXT_texture_webp-Dl4GPoEU.esm.min.js +2 -0
  27. package/dist/chunks/EXT_texture_webp-Dl4GPoEU.esm.min.js.map +1 -0
  28. package/dist/chunks/EXT_texture_webp-fAiSgaNl.esm.js +43 -0
  29. package/dist/chunks/EXT_texture_webp-fAiSgaNl.esm.js.map +1 -0
  30. package/dist/chunks/ExtrasAsMetadata-BUQ3X3M6.esm.js +64 -0
  31. package/dist/chunks/ExtrasAsMetadata-BUQ3X3M6.esm.js.map +1 -0
  32. package/dist/chunks/ExtrasAsMetadata-C_M9nxb4.esm.min.js +2 -0
  33. package/dist/chunks/ExtrasAsMetadata-C_M9nxb4.esm.min.js.map +1 -0
  34. package/dist/chunks/KHR_animation_pointer-BdFZyLUq.esm.js +352 -0
  35. package/dist/chunks/KHR_animation_pointer-BdFZyLUq.esm.js.map +1 -0
  36. package/dist/chunks/KHR_animation_pointer-CBqZcURZ.esm.min.js +2 -0
  37. package/dist/chunks/KHR_animation_pointer-CBqZcURZ.esm.min.js.map +1 -0
  38. package/dist/chunks/KHR_draco_mesh_compression-DU2Rk2nj.esm.min.js +2 -0
  39. package/dist/chunks/KHR_draco_mesh_compression-DU2Rk2nj.esm.min.js.map +1 -0
  40. package/dist/chunks/KHR_draco_mesh_compression-hVF9XuFz.esm.js +610 -0
  41. package/dist/chunks/KHR_draco_mesh_compression-hVF9XuFz.esm.js.map +1 -0
  42. package/dist/chunks/KHR_interactivity-COE1p684.esm.min.js +2 -0
  43. package/dist/chunks/KHR_interactivity-COE1p684.esm.min.js.map +1 -0
  44. package/dist/chunks/KHR_interactivity-Cv1s_pea.esm.js +4033 -0
  45. package/dist/chunks/KHR_interactivity-Cv1s_pea.esm.js.map +1 -0
  46. package/dist/chunks/KHR_lights_punctual-CHf5kbKi.esm.js +581 -0
  47. package/dist/chunks/KHR_lights_punctual-CHf5kbKi.esm.js.map +1 -0
  48. package/dist/chunks/KHR_lights_punctual-DIEAP5SG.esm.min.js +2 -0
  49. package/dist/chunks/KHR_lights_punctual-DIEAP5SG.esm.min.js.map +1 -0
  50. package/dist/chunks/KHR_materials_anisotropy-CU-xxV6y.esm.js +65 -0
  51. package/dist/chunks/KHR_materials_anisotropy-CU-xxV6y.esm.js.map +1 -0
  52. package/dist/chunks/KHR_materials_anisotropy-Cq6CU4qW.esm.min.js +2 -0
  53. package/dist/chunks/KHR_materials_anisotropy-Cq6CU4qW.esm.min.js.map +1 -0
  54. package/dist/chunks/KHR_materials_clearcoat-BSjcmIju.esm.js +96 -0
  55. package/dist/chunks/KHR_materials_clearcoat-BSjcmIju.esm.js.map +1 -0
  56. package/dist/chunks/KHR_materials_clearcoat-CVNNhJRE.esm.min.js +2 -0
  57. package/dist/chunks/KHR_materials_clearcoat-CVNNhJRE.esm.min.js.map +1 -0
  58. package/dist/chunks/KHR_materials_diffuse_transmission-BDuGIkOh.esm.min.js +2 -0
  59. package/dist/chunks/KHR_materials_diffuse_transmission-BDuGIkOh.esm.min.js.map +1 -0
  60. package/dist/chunks/KHR_materials_diffuse_transmission-BZ-9rJUf.esm.js +97 -0
  61. package/dist/chunks/KHR_materials_diffuse_transmission-BZ-9rJUf.esm.js.map +1 -0
  62. package/dist/chunks/KHR_materials_dispersion-BxiGElVU.esm.min.js +2 -0
  63. package/dist/chunks/KHR_materials_dispersion-BxiGElVU.esm.min.js.map +1 -0
  64. package/dist/chunks/KHR_materials_dispersion-UI4zH1V_.esm.js +62 -0
  65. package/dist/chunks/KHR_materials_dispersion-UI4zH1V_.esm.js.map +1 -0
  66. package/dist/chunks/KHR_materials_emissive_strength-BT-Nu60T.esm.js +55 -0
  67. package/dist/chunks/KHR_materials_emissive_strength-BT-Nu60T.esm.js.map +1 -0
  68. package/dist/chunks/KHR_materials_emissive_strength-CwkVNmN7.esm.min.js +2 -0
  69. package/dist/chunks/KHR_materials_emissive_strength-CwkVNmN7.esm.min.js.map +1 -0
  70. package/dist/chunks/KHR_materials_ior-BGUUe5AW.esm.min.js +2 -0
  71. package/dist/chunks/KHR_materials_ior-BGUUe5AW.esm.min.js.map +1 -0
  72. package/dist/chunks/KHR_materials_ior-BbBQF-yw.esm.js +64 -0
  73. package/dist/chunks/KHR_materials_ior-BbBQF-yw.esm.js.map +1 -0
  74. package/dist/chunks/KHR_materials_iridescence-IFN2ewvr.esm.min.js +2 -0
  75. package/dist/chunks/KHR_materials_iridescence-IFN2ewvr.esm.min.js.map +1 -0
  76. package/dist/chunks/KHR_materials_iridescence-nLZDN7sc.esm.js +72 -0
  77. package/dist/chunks/KHR_materials_iridescence-nLZDN7sc.esm.js.map +1 -0
  78. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-CyNVQC-W.esm.js +81 -0
  79. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-CyNVQC-W.esm.js.map +1 -0
  80. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-zxcydJdp.esm.min.js +2 -0
  81. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-zxcydJdp.esm.min.js.map +1 -0
  82. package/dist/chunks/KHR_materials_sheen-BWL9yo8Z.esm.min.js +2 -0
  83. package/dist/chunks/KHR_materials_sheen-BWL9yo8Z.esm.min.js.map +1 -0
  84. package/dist/chunks/KHR_materials_sheen-DSThWwq2.esm.js +85 -0
  85. package/dist/chunks/KHR_materials_sheen-DSThWwq2.esm.js.map +1 -0
  86. package/dist/chunks/KHR_materials_specular-B96NRFEV.esm.js +75 -0
  87. package/dist/chunks/KHR_materials_specular-B96NRFEV.esm.js.map +1 -0
  88. package/dist/chunks/KHR_materials_specular-D2JwOdxw.esm.min.js +2 -0
  89. package/dist/chunks/KHR_materials_specular-D2JwOdxw.esm.min.js.map +1 -0
  90. package/dist/chunks/KHR_materials_transmission-BvqtJXfD.esm.js +307 -0
  91. package/dist/chunks/KHR_materials_transmission-BvqtJXfD.esm.js.map +1 -0
  92. package/dist/chunks/KHR_materials_transmission-ljXN4y_0.esm.min.js +2 -0
  93. package/dist/chunks/KHR_materials_transmission-ljXN4y_0.esm.min.js.map +1 -0
  94. package/dist/chunks/KHR_materials_unlit-CjGTXU3z.esm.min.js +2 -0
  95. package/dist/chunks/KHR_materials_unlit-CjGTXU3z.esm.min.js.map +1 -0
  96. package/dist/chunks/KHR_materials_unlit-ww00IloC.esm.js +74 -0
  97. package/dist/chunks/KHR_materials_unlit-ww00IloC.esm.js.map +1 -0
  98. package/dist/chunks/KHR_materials_variants-D0pVU1lm.esm.min.js +2 -0
  99. package/dist/chunks/KHR_materials_variants-D0pVU1lm.esm.min.js.map +1 -0
  100. package/dist/chunks/KHR_materials_variants-D3IDOJfB.esm.js +262 -0
  101. package/dist/chunks/KHR_materials_variants-D3IDOJfB.esm.js.map +1 -0
  102. package/dist/chunks/KHR_materials_volume-BfZR8rbr.esm.min.js +2 -0
  103. package/dist/chunks/KHR_materials_volume-BfZR8rbr.esm.min.js.map +1 -0
  104. package/dist/chunks/KHR_materials_volume-CLkC_Bvi.esm.js +87 -0
  105. package/dist/chunks/KHR_materials_volume-CLkC_Bvi.esm.js.map +1 -0
  106. package/dist/chunks/KHR_mesh_quantization-BJv1P2Wt.esm.js +26 -0
  107. package/dist/chunks/KHR_mesh_quantization-BJv1P2Wt.esm.js.map +1 -0
  108. package/dist/chunks/KHR_mesh_quantization-D69X_5bR.esm.min.js +2 -0
  109. package/dist/chunks/KHR_mesh_quantization-D69X_5bR.esm.min.js.map +1 -0
  110. package/dist/chunks/KHR_node_hoverability-CG6s7hhs.esm.min.js +2 -0
  111. package/dist/chunks/KHR_node_hoverability-CG6s7hhs.esm.min.js.map +1 -0
  112. package/dist/chunks/KHR_node_hoverability-xgvyZ_r-.esm.js +39 -0
  113. package/dist/chunks/KHR_node_hoverability-xgvyZ_r-.esm.js.map +1 -0
  114. package/dist/chunks/KHR_node_visibility-DUozjXRR.esm.min.js +2 -0
  115. package/dist/chunks/KHR_node_visibility-DUozjXRR.esm.min.js.map +1 -0
  116. package/dist/chunks/KHR_node_visibility-aAs5Kkey.esm.js +46 -0
  117. package/dist/chunks/KHR_node_visibility-aAs5Kkey.esm.js.map +1 -0
  118. package/dist/chunks/KHR_texture_basisu-Bjw0jG1d.esm.js +43 -0
  119. package/dist/chunks/KHR_texture_basisu-Bjw0jG1d.esm.js.map +1 -0
  120. package/dist/chunks/KHR_texture_basisu-FWm46QOj.esm.min.js +2 -0
  121. package/dist/chunks/KHR_texture_basisu-FWm46QOj.esm.min.js.map +1 -0
  122. package/dist/chunks/KHR_texture_transform-BZYr2brj.esm.min.js +2 -0
  123. package/dist/chunks/KHR_texture_transform-BZYr2brj.esm.min.js.map +1 -0
  124. package/dist/chunks/KHR_texture_transform-DdsN6SA_.esm.js +63 -0
  125. package/dist/chunks/KHR_texture_transform-DdsN6SA_.esm.js.map +1 -0
  126. package/dist/chunks/KHR_xmp_json_ld-DhFD64vh.esm.min.js +2 -0
  127. package/dist/chunks/KHR_xmp_json_ld-DhFD64vh.esm.min.js.map +1 -0
  128. package/dist/chunks/KHR_xmp_json_ld-sTn6N13E.esm.js +51 -0
  129. package/dist/chunks/KHR_xmp_json_ld-sTn6N13E.esm.js.map +1 -0
  130. package/dist/chunks/MSFT_audio_emitter-5lrNj8-c.esm.min.js +2 -0
  131. package/dist/chunks/MSFT_audio_emitter-5lrNj8-c.esm.min.js.map +1 -0
  132. package/dist/chunks/MSFT_audio_emitter-B7RJSCaF.esm.js +2201 -0
  133. package/dist/chunks/MSFT_audio_emitter-B7RJSCaF.esm.js.map +1 -0
  134. package/dist/chunks/MSFT_lod-BJBjM7Gp.esm.js +337 -0
  135. package/dist/chunks/MSFT_lod-BJBjM7Gp.esm.js.map +1 -0
  136. package/dist/chunks/MSFT_lod-DpEZMnoU.esm.min.js +2 -0
  137. package/dist/chunks/MSFT_lod-DpEZMnoU.esm.min.js.map +1 -0
  138. package/dist/chunks/MSFT_minecraftMesh-CXHPdyar.esm.min.js +2 -0
  139. package/dist/chunks/MSFT_minecraftMesh-CXHPdyar.esm.min.js.map +1 -0
  140. package/dist/chunks/MSFT_minecraftMesh-DRC2tMvY.esm.js +46 -0
  141. package/dist/chunks/MSFT_minecraftMesh-DRC2tMvY.esm.js.map +1 -0
  142. package/dist/chunks/MSFT_sRGBFactors-Db1asZRk.esm.js +47 -0
  143. package/dist/chunks/MSFT_sRGBFactors-Db1asZRk.esm.js.map +1 -0
  144. package/dist/chunks/MSFT_sRGBFactors-RhAtY3q7.esm.min.js +2 -0
  145. package/dist/chunks/MSFT_sRGBFactors-RhAtY3q7.esm.min.js.map +1 -0
  146. package/dist/chunks/animationGroup-CjaFhT87.esm.min.js +2 -0
  147. package/dist/chunks/animationGroup-CjaFhT87.esm.min.js.map +1 -0
  148. package/dist/chunks/animationGroup-Ctc6BUYh.esm.js +2482 -0
  149. package/dist/chunks/animationGroup-Ctc6BUYh.esm.js.map +1 -0
  150. package/dist/chunks/assetContainer-DDEska5G.esm.min.js +2 -0
  151. package/dist/chunks/assetContainer-DDEska5G.esm.min.js.map +1 -0
  152. package/dist/chunks/assetContainer-QD3gUzyx.esm.js +1720 -0
  153. package/dist/chunks/assetContainer-QD3gUzyx.esm.js.map +1 -0
  154. package/dist/chunks/audioEngine-C6R2Ow6e.esm.js +305 -0
  155. package/dist/chunks/audioEngine-C6R2Ow6e.esm.js.map +1 -0
  156. package/dist/chunks/audioEngine-FKYFzzDb.esm.min.js +2 -0
  157. package/dist/chunks/audioEngine-FKYFzzDb.esm.min.js.map +1 -0
  158. package/dist/chunks/bakedVertexAnimation-DKR6lpIg.esm.min.js +2 -0
  159. package/dist/chunks/bakedVertexAnimation-DKR6lpIg.esm.min.js.map +1 -0
  160. package/dist/chunks/bakedVertexAnimation-Hxn22qoJ.esm.js +114 -0
  161. package/dist/chunks/bakedVertexAnimation-Hxn22qoJ.esm.js.map +1 -0
  162. package/dist/chunks/basisTextureLoader-BcNAHqjw.esm.min.js +2 -0
  163. package/dist/chunks/basisTextureLoader-BcNAHqjw.esm.min.js.map +1 -0
  164. package/dist/chunks/basisTextureLoader-Dr2d0ez5.esm.js +600 -0
  165. package/dist/chunks/basisTextureLoader-Dr2d0ez5.esm.js.map +1 -0
  166. package/dist/chunks/dds-CFrq_XFM.esm.js +540 -0
  167. package/dist/chunks/dds-CFrq_XFM.esm.js.map +1 -0
  168. package/dist/chunks/dds-D1NTXLIL.esm.min.js +2 -0
  169. package/dist/chunks/dds-D1NTXLIL.esm.min.js.map +1 -0
  170. package/dist/chunks/ddsTextureLoader-DbvffCUa.esm.min.js +2 -0
  171. package/dist/chunks/ddsTextureLoader-DbvffCUa.esm.min.js.map +1 -0
  172. package/dist/chunks/ddsTextureLoader-wyjUdBoO.esm.js +88 -0
  173. package/dist/chunks/ddsTextureLoader-wyjUdBoO.esm.js.map +1 -0
  174. package/dist/chunks/decalFragment-CGto5zyq.esm.js +18 -0
  175. package/dist/chunks/decalFragment-CGto5zyq.esm.js.map +1 -0
  176. package/dist/chunks/decalFragment-CU64C8uG.esm.min.js +2 -0
  177. package/dist/chunks/decalFragment-CU64C8uG.esm.min.js.map +1 -0
  178. package/dist/chunks/default.fragment-B2bhCC4E.esm.js +446 -0
  179. package/dist/chunks/default.fragment-B2bhCC4E.esm.js.map +1 -0
  180. package/dist/chunks/default.fragment-Boq79lom.esm.min.js +2 -0
  181. package/dist/chunks/default.fragment-Boq79lom.esm.min.js.map +1 -0
  182. package/dist/chunks/default.fragment-CluFtXFp.esm.min.js +2 -0
  183. package/dist/chunks/default.fragment-CluFtXFp.esm.min.js.map +1 -0
  184. package/dist/chunks/default.fragment-Dshl5Uqc.esm.js +515 -0
  185. package/dist/chunks/default.fragment-Dshl5Uqc.esm.js.map +1 -0
  186. package/dist/chunks/default.vertex-BAAgCiYo.esm.min.js +2 -0
  187. package/dist/chunks/default.vertex-BAAgCiYo.esm.min.js.map +1 -0
  188. package/dist/chunks/default.vertex-BhOIicZW.esm.min.js +2 -0
  189. package/dist/chunks/default.vertex-BhOIicZW.esm.min.js.map +1 -0
  190. package/dist/chunks/default.vertex-DL7IogGB.esm.js +211 -0
  191. package/dist/chunks/default.vertex-DL7IogGB.esm.js.map +1 -0
  192. package/dist/chunks/default.vertex-DOXcZEQ0.esm.js +190 -0
  193. package/dist/chunks/default.vertex-DOXcZEQ0.esm.js.map +1 -0
  194. package/dist/chunks/defaultUboDeclaration-1qBz6EuF.esm.js +15 -0
  195. package/dist/chunks/defaultUboDeclaration-1qBz6EuF.esm.js.map +1 -0
  196. package/dist/chunks/defaultUboDeclaration-B9LzMzlw.esm.min.js +2 -0
  197. package/dist/chunks/defaultUboDeclaration-B9LzMzlw.esm.min.js.map +1 -0
  198. package/dist/chunks/defaultUboDeclaration-CXdodf7i.esm.js +13 -0
  199. package/dist/chunks/defaultUboDeclaration-CXdodf7i.esm.js.map +1 -0
  200. package/dist/chunks/defaultUboDeclaration-CZlCaxgu.esm.min.js +2 -0
  201. package/dist/chunks/defaultUboDeclaration-CZlCaxgu.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-C3vcqEdz.esm.js +200 -0
  207. package/dist/chunks/dumpTools-C3vcqEdz.esm.js.map +1 -0
  208. package/dist/chunks/dumpTools-C8ZzlWEh.esm.min.js +2 -0
  209. package/dist/chunks/dumpTools-C8ZzlWEh.esm.min.js.map +1 -0
  210. package/dist/chunks/engine-_wVL12I1.esm.js +2213 -0
  211. package/dist/chunks/engine-_wVL12I1.esm.js.map +1 -0
  212. package/dist/chunks/engine-nCWszV_w.esm.min.js +2 -0
  213. package/dist/chunks/engine-nCWszV_w.esm.min.js.map +1 -0
  214. package/dist/chunks/engine.common-BuPfo1Wj.esm.min.js +2 -0
  215. package/dist/chunks/engine.common-BuPfo1Wj.esm.min.js.map +1 -0
  216. package/dist/chunks/engine.common-CT5iq3ZT.esm.js +1162 -0
  217. package/dist/chunks/engine.common-CT5iq3ZT.esm.js.map +1 -0
  218. package/dist/chunks/envTextureLoader-D7L0fVXR.esm.min.js +2 -0
  219. package/dist/chunks/envTextureLoader-D7L0fVXR.esm.min.js.map +1 -0
  220. package/dist/chunks/envTextureLoader-PtuRNDrr.esm.js +64 -0
  221. package/dist/chunks/envTextureLoader-PtuRNDrr.esm.js.map +1 -0
  222. package/dist/chunks/environmentTextureTools-BjmCbfSf.esm.min.js +2 -0
  223. package/dist/chunks/environmentTextureTools-BjmCbfSf.esm.min.js.map +1 -0
  224. package/dist/chunks/environmentTextureTools-DYbFmR95.esm.js +382 -0
  225. package/dist/chunks/environmentTextureTools-DYbFmR95.esm.js.map +1 -0
  226. package/dist/chunks/exrTextureLoader-BIPK0bPG.esm.min.js +2 -0
  227. package/dist/chunks/exrTextureLoader-BIPK0bPG.esm.min.js.map +1 -0
  228. package/dist/chunks/exrTextureLoader-CEhv_7O9.esm.js +1683 -0
  229. package/dist/chunks/exrTextureLoader-CEhv_7O9.esm.js.map +1 -0
  230. package/dist/chunks/fogFragment-B7_evZbY.esm.js +102 -0
  231. package/dist/chunks/fogFragment-B7_evZbY.esm.js.map +1 -0
  232. package/dist/chunks/fogFragment-CoZPb7oI.esm.min.js +2 -0
  233. package/dist/chunks/fogFragment-CoZPb7oI.esm.min.js.map +1 -0
  234. package/dist/chunks/fogFragment-DSO97-dc.esm.min.js +2 -0
  235. package/dist/chunks/fogFragment-DSO97-dc.esm.min.js.map +1 -0
  236. package/dist/chunks/fogFragment-wY2jQ7fb.esm.js +101 -0
  237. package/dist/chunks/fogFragment-wY2jQ7fb.esm.js.map +1 -0
  238. package/dist/chunks/fresnelFunction-BSEp5SCT.esm.js +12 -0
  239. package/dist/chunks/fresnelFunction-BSEp5SCT.esm.js.map +1 -0
  240. package/dist/chunks/fresnelFunction-Cg-NNSrz.esm.min.js +2 -0
  241. package/dist/chunks/fresnelFunction-Cg-NNSrz.esm.min.js.map +1 -0
  242. package/dist/chunks/glTFLoader-3ZUBWawQ.esm.min.js +2 -0
  243. package/dist/chunks/glTFLoader-3ZUBWawQ.esm.min.js.map +1 -0
  244. package/dist/chunks/glTFLoader-DVoAJl_A.esm.js +7658 -0
  245. package/dist/chunks/glTFLoader-DVoAJl_A.esm.js.map +1 -0
  246. package/dist/chunks/glTFLoaderAnimation-By7yP8sQ.esm.js +77 -0
  247. package/dist/chunks/glTFLoaderAnimation-By7yP8sQ.esm.js.map +1 -0
  248. package/dist/chunks/glTFLoaderAnimation-C9g-SHaJ.esm.min.js +2 -0
  249. package/dist/chunks/glTFLoaderAnimation-C9g-SHaJ.esm.min.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-B8pgRSdd.esm.min.js +2 -0
  255. package/dist/chunks/harmonicsFunctions-B8pgRSdd.esm.min.js.map +1 -0
  256. package/dist/chunks/harmonicsFunctions-BcfkM4gb.esm.js +35 -0
  257. package/dist/chunks/harmonicsFunctions-BcfkM4gb.esm.js.map +1 -0
  258. package/dist/chunks/harmonicsFunctions-DF1x585z.esm.min.js +2 -0
  259. package/dist/chunks/harmonicsFunctions-DF1x585z.esm.min.js.map +1 -0
  260. package/dist/chunks/harmonicsFunctions-a48Ki58F.esm.js +34 -0
  261. package/dist/chunks/harmonicsFunctions-a48Ki58F.esm.js.map +1 -0
  262. package/dist/chunks/hdrTextureLoader-BWnO8u1r.esm.js +253 -0
  263. package/dist/chunks/hdrTextureLoader-BWnO8u1r.esm.js.map +1 -0
  264. package/dist/chunks/hdrTextureLoader-Bii9QpYI.esm.min.js +2 -0
  265. package/dist/chunks/hdrTextureLoader-Bii9QpYI.esm.min.js.map +1 -0
  266. package/dist/chunks/helperFunctions-BinFB44e.esm.js +110 -0
  267. package/dist/chunks/helperFunctions-BinFB44e.esm.js.map +1 -0
  268. package/dist/chunks/helperFunctions-CZAyJNTJ.esm.min.js +2 -0
  269. package/dist/chunks/helperFunctions-CZAyJNTJ.esm.min.js.map +1 -0
  270. package/dist/chunks/helperFunctions-DjoUVhI2.esm.min.js +2 -0
  271. package/dist/chunks/helperFunctions-DjoUVhI2.esm.min.js.map +1 -0
  272. package/dist/chunks/helperFunctions-Ds3-3-tu.esm.js +83 -0
  273. package/dist/chunks/helperFunctions-Ds3-3-tu.esm.js.map +1 -0
  274. package/dist/chunks/iesTextureLoader-CsnjIN7M.esm.js +189 -0
  275. package/dist/chunks/iesTextureLoader-CsnjIN7M.esm.js.map +1 -0
  276. package/dist/chunks/iesTextureLoader-DkmTomCD.esm.min.js +2 -0
  277. package/dist/chunks/iesTextureLoader-DkmTomCD.esm.min.js.map +1 -0
  278. package/dist/chunks/index-Cw2FZpYY.esm.js +74870 -0
  279. package/dist/chunks/index-Cw2FZpYY.esm.js.map +1 -0
  280. package/dist/chunks/index-DRbhrB0j.esm.min.js +57 -0
  281. package/dist/chunks/index-DRbhrB0j.esm.min.js.map +1 -0
  282. package/dist/chunks/ktxTextureLoader-B4pmAFQl.esm.js +814 -0
  283. package/dist/chunks/ktxTextureLoader-B4pmAFQl.esm.js.map +1 -0
  284. package/dist/chunks/ktxTextureLoader-B8Rlj2T0.esm.min.js +2 -0
  285. package/dist/chunks/ktxTextureLoader-B8Rlj2T0.esm.min.js.map +1 -0
  286. package/dist/chunks/logDepthDeclaration-CGz2sG_K.esm.js +11 -0
  287. package/dist/chunks/logDepthDeclaration-CGz2sG_K.esm.js.map +1 -0
  288. package/dist/chunks/logDepthDeclaration-CfVFs2QC.esm.min.js +2 -0
  289. package/dist/chunks/logDepthDeclaration-CfVFs2QC.esm.min.js.map +1 -0
  290. package/dist/chunks/logDepthDeclaration-CzVshpad.esm.min.js +2 -0
  291. package/dist/chunks/logDepthDeclaration-CzVshpad.esm.min.js.map +1 -0
  292. package/dist/chunks/logDepthDeclaration-xOwnAKtd.esm.js +35 -0
  293. package/dist/chunks/logDepthDeclaration-xOwnAKtd.esm.js.map +1 -0
  294. package/dist/chunks/logDepthVertex-BRgUZAsw.esm.js +81 -0
  295. package/dist/chunks/logDepthVertex-BRgUZAsw.esm.js.map +1 -0
  296. package/dist/chunks/logDepthVertex-CWfPfN9-.esm.min.js +2 -0
  297. package/dist/chunks/logDepthVertex-CWfPfN9-.esm.min.js.map +1 -0
  298. package/dist/chunks/logDepthVertex-HDlt7vTP.esm.min.js +2 -0
  299. package/dist/chunks/logDepthVertex-HDlt7vTP.esm.min.js.map +1 -0
  300. package/dist/chunks/logDepthVertex-l0uEG89p.esm.js +77 -0
  301. package/dist/chunks/logDepthVertex-l0uEG89p.esm.js.map +1 -0
  302. package/dist/chunks/mainUVVaryingDeclaration-B72zV2P9.esm.min.js +2 -0
  303. package/dist/chunks/mainUVVaryingDeclaration-B72zV2P9.esm.min.js.map +1 -0
  304. package/dist/chunks/mainUVVaryingDeclaration-BDogjZrz.esm.js +11 -0
  305. package/dist/chunks/mainUVVaryingDeclaration-BDogjZrz.esm.js.map +1 -0
  306. package/dist/chunks/mainUVVaryingDeclaration-DO5HJKyl.esm.min.js +2 -0
  307. package/dist/chunks/mainUVVaryingDeclaration-DO5HJKyl.esm.min.js.map +1 -0
  308. package/dist/chunks/mainUVVaryingDeclaration-DqzNajlu.esm.js +11 -0
  309. package/dist/chunks/mainUVVaryingDeclaration-DqzNajlu.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-BCO87lfZ.esm.js +26 -0
  315. package/dist/chunks/meshUboDeclaration-BCO87lfZ.esm.js.map +1 -0
  316. package/dist/chunks/meshUboDeclaration-o4Xf2fwW.esm.min.js +2 -0
  317. package/dist/chunks/meshUboDeclaration-o4Xf2fwW.esm.min.js.map +1 -0
  318. package/dist/chunks/objFileLoader-BfPYM2Sh.esm.min.js +2 -0
  319. package/dist/chunks/objFileLoader-BfPYM2Sh.esm.min.js.map +1 -0
  320. package/dist/chunks/objFileLoader-D1emf4Qh.esm.js +1338 -0
  321. package/dist/chunks/objFileLoader-D1emf4Qh.esm.js.map +1 -0
  322. package/dist/chunks/oitFragment-B92YpEfj.esm.min.js +2 -0
  323. package/dist/chunks/oitFragment-B92YpEfj.esm.min.js.map +1 -0
  324. package/dist/chunks/oitFragment-BoFKkDNv.esm.js +1078 -0
  325. package/dist/chunks/oitFragment-BoFKkDNv.esm.js.map +1 -0
  326. package/dist/chunks/oitFragment-Cfx3g0iX.esm.js +1240 -0
  327. package/dist/chunks/oitFragment-Cfx3g0iX.esm.js.map +1 -0
  328. package/dist/chunks/oitFragment-CiA7gld-.esm.min.js +2 -0
  329. package/dist/chunks/oitFragment-CiA7gld-.esm.min.js.map +1 -0
  330. package/dist/chunks/pass.fragment-BLbIViJ7.esm.js +15 -0
  331. package/dist/chunks/pass.fragment-BLbIViJ7.esm.js.map +1 -0
  332. package/dist/chunks/pass.fragment-BqMk9ouF.esm.min.js +2 -0
  333. package/dist/chunks/pass.fragment-BqMk9ouF.esm.min.js.map +1 -0
  334. package/dist/chunks/pass.fragment-BuVDFNSR.esm.js +15 -0
  335. package/dist/chunks/pass.fragment-BuVDFNSR.esm.js.map +1 -0
  336. package/dist/chunks/pass.fragment-cM5FBHLm.esm.min.js +2 -0
  337. package/dist/chunks/pass.fragment-cM5FBHLm.esm.min.js.map +1 -0
  338. package/dist/chunks/pbr.fragment-5L_F7nGn.esm.js +3222 -0
  339. package/dist/chunks/pbr.fragment-5L_F7nGn.esm.js.map +1 -0
  340. package/dist/chunks/pbr.fragment-BJNPHSa-.esm.min.js +2 -0
  341. package/dist/chunks/pbr.fragment-BJNPHSa-.esm.min.js.map +1 -0
  342. package/dist/chunks/pbr.fragment-CTLrOzV2.esm.js +3269 -0
  343. package/dist/chunks/pbr.fragment-CTLrOzV2.esm.js.map +1 -0
  344. package/dist/chunks/pbr.fragment-D9MJFOr2.esm.min.js +2 -0
  345. package/dist/chunks/pbr.fragment-D9MJFOr2.esm.min.js.map +1 -0
  346. package/dist/chunks/pbr.vertex-BJyjq_fb.esm.js +223 -0
  347. package/dist/chunks/pbr.vertex-BJyjq_fb.esm.js.map +1 -0
  348. package/dist/chunks/pbr.vertex-Bm8Ng4Sx.esm.min.js +2 -0
  349. package/dist/chunks/pbr.vertex-Bm8Ng4Sx.esm.min.js.map +1 -0
  350. package/dist/chunks/pbr.vertex-CAKPUhfb.esm.min.js +2 -0
  351. package/dist/chunks/pbr.vertex-CAKPUhfb.esm.min.js.map +1 -0
  352. package/dist/chunks/pbr.vertex-DJd_-MvE.esm.js +348 -0
  353. package/dist/chunks/pbr.vertex-DJd_-MvE.esm.js.map +1 -0
  354. package/dist/chunks/postprocess.vertex-BjRX5eGi.esm.min.js +2 -0
  355. package/dist/chunks/postprocess.vertex-BjRX5eGi.esm.min.js.map +1 -0
  356. package/dist/chunks/postprocess.vertex-CFaKNIU-.esm.js +20 -0
  357. package/dist/chunks/postprocess.vertex-CFaKNIU-.esm.js.map +1 -0
  358. package/dist/chunks/rawTexture-ByD8l28R.esm.min.js +2 -0
  359. package/dist/chunks/rawTexture-ByD8l28R.esm.min.js.map +1 -0
  360. package/dist/chunks/rawTexture-DGz22uaX.esm.js +191 -0
  361. package/dist/chunks/rawTexture-DGz22uaX.esm.js.map +1 -0
  362. package/dist/chunks/ray-ByafiITx.esm.js +946 -0
  363. package/dist/chunks/ray-ByafiITx.esm.js.map +1 -0
  364. package/dist/chunks/ray-ChSTYrPm.esm.min.js +2 -0
  365. package/dist/chunks/ray-ChSTYrPm.esm.min.js.map +1 -0
  366. package/dist/chunks/rgbdDecode.fragment-CJ7PpH1N.esm.js +13 -0
  367. package/dist/chunks/rgbdDecode.fragment-CJ7PpH1N.esm.js.map +1 -0
  368. package/dist/chunks/rgbdDecode.fragment-DJ9crbPP.esm.js +13 -0
  369. package/dist/chunks/rgbdDecode.fragment-DJ9crbPP.esm.js.map +1 -0
  370. package/dist/chunks/rgbdDecode.fragment-DLpb3z18.esm.min.js +2 -0
  371. package/dist/chunks/rgbdDecode.fragment-DLpb3z18.esm.min.js.map +1 -0
  372. package/dist/chunks/rgbdDecode.fragment-ygeOUzIi.esm.min.js +2 -0
  373. package/dist/chunks/rgbdDecode.fragment-ygeOUzIi.esm.min.js.map +1 -0
  374. package/dist/chunks/rgbdEncode.fragment-BTG_wbck.esm.min.js +2 -0
  375. package/dist/chunks/rgbdEncode.fragment-BTG_wbck.esm.min.js.map +1 -0
  376. package/dist/chunks/rgbdEncode.fragment-C2s4AQaM.esm.js +13 -0
  377. package/dist/chunks/rgbdEncode.fragment-C2s4AQaM.esm.js.map +1 -0
  378. package/dist/chunks/rgbdEncode.fragment-C6LKySQH.esm.js +13 -0
  379. package/dist/chunks/rgbdEncode.fragment-C6LKySQH.esm.js.map +1 -0
  380. package/dist/chunks/rgbdEncode.fragment-CKB2lpgL.esm.min.js +2 -0
  381. package/dist/chunks/rgbdEncode.fragment-CKB2lpgL.esm.min.js.map +1 -0
  382. package/dist/chunks/splatFileLoader-BtSUlfZs.esm.min.js +2 -0
  383. package/dist/chunks/splatFileLoader-BtSUlfZs.esm.min.js.map +1 -0
  384. package/dist/chunks/splatFileLoader-Wn5sDtLq.esm.js +3379 -0
  385. package/dist/chunks/splatFileLoader-Wn5sDtLq.esm.js.map +1 -0
  386. package/dist/chunks/spotLight-CmDQEB8V.esm.js +701 -0
  387. package/dist/chunks/spotLight-CmDQEB8V.esm.js.map +1 -0
  388. package/dist/chunks/spotLight-hg94aMJD.esm.min.js +2 -0
  389. package/dist/chunks/spotLight-hg94aMJD.esm.min.js.map +1 -0
  390. package/dist/chunks/standardMaterial-BhIiLn1_.esm.js +1806 -0
  391. package/dist/chunks/standardMaterial-BhIiLn1_.esm.js.map +1 -0
  392. package/dist/chunks/standardMaterial-DQii8fRL.esm.min.js +2 -0
  393. package/dist/chunks/standardMaterial-DQii8fRL.esm.min.js.map +1 -0
  394. package/dist/chunks/stlFileLoader-D83u9BOr.esm.js +238 -0
  395. package/dist/chunks/stlFileLoader-D83u9BOr.esm.js.map +1 -0
  396. package/dist/chunks/stlFileLoader-DkXWqjZo.esm.min.js +2 -0
  397. package/dist/chunks/stlFileLoader-DkXWqjZo.esm.min.js.map +1 -0
  398. package/dist/chunks/tgaTextureLoader-C9xl6cvE.esm.js +349 -0
  399. package/dist/chunks/tgaTextureLoader-C9xl6cvE.esm.js.map +1 -0
  400. package/dist/chunks/tgaTextureLoader-DfzjGulW.esm.min.js +2 -0
  401. package/dist/chunks/tgaTextureLoader-DfzjGulW.esm.min.js.map +1 -0
  402. package/dist/chunks/thinEngine-Cu21aOSC.esm.min.js +2 -0
  403. package/dist/chunks/thinEngine-Cu21aOSC.esm.min.js.map +1 -0
  404. package/dist/chunks/thinEngine-IzS60pqU.esm.js +3853 -0
  405. package/dist/chunks/thinEngine-IzS60pqU.esm.js.map +1 -0
  406. package/dist/chunks/thinInstanceMesh-BN8Ev-h8.esm.js +314 -0
  407. package/dist/chunks/thinInstanceMesh-BN8Ev-h8.esm.js.map +1 -0
  408. package/dist/chunks/thinInstanceMesh-Bm9vmKU4.esm.min.js +2 -0
  409. package/dist/chunks/thinInstanceMesh-Bm9vmKU4.esm.min.js.map +1 -0
  410. package/dist/chunks/vertexColorMixing-Cazf4vEl.esm.min.js +2 -0
  411. package/dist/chunks/vertexColorMixing-Cazf4vEl.esm.min.js.map +1 -0
  412. package/dist/chunks/vertexColorMixing-DGvq3Fju.esm.js +421 -0
  413. package/dist/chunks/vertexColorMixing-DGvq3Fju.esm.js.map +1 -0
  414. package/dist/chunks/vertexColorMixing-D_6ZvivZ.esm.min.js +2 -0
  415. package/dist/chunks/vertexColorMixing-D_6ZvivZ.esm.min.js.map +1 -0
  416. package/dist/chunks/vertexColorMixing-DuYHnuUm.esm.js +531 -0
  417. package/dist/chunks/vertexColorMixing-DuYHnuUm.esm.js.map +1 -0
  418. package/dist/chunks/webgpuEngine-DHaXinU4.esm.min.js +2 -0
  419. package/dist/chunks/webgpuEngine-DHaXinU4.esm.min.js.map +1 -0
  420. package/dist/chunks/webgpuEngine-Dxev7pbz.esm.js +11538 -0
  421. package/dist/chunks/webgpuEngine-Dxev7pbz.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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animationGroup-Ctc6BUYh.esm.js","sources":["../../../../../dev/core/dist/Animations/runtimeAnimation.js","../../../../../dev/core/dist/Animations/animatable.core.js","../../../../../dev/core/dist/Animations/animatable.js","../../../../../dev/core/dist/Animations/animationGroup.js"],"sourcesContent":["import { Matrix } from \"../Maths/math.vector\";\nimport { Animation, _staticOffsetValueColor3, _staticOffsetValueColor4, _staticOffsetValueQuaternion, _staticOffsetValueSize, _staticOffsetValueVector2, _staticOffsetValueVector3, } from \"./animation\";\n/**\n * Defines a runtime animation\n */\nexport class RuntimeAnimation {\n /**\n * Gets the current frame of the runtime animation\n */\n get currentFrame() {\n return this._currentFrame;\n }\n /**\n * Gets the weight of the runtime animation\n */\n get weight() {\n return this._weight;\n }\n /**\n * Gets the current value of the runtime animation\n */\n get currentValue() {\n return this._currentValue;\n }\n /**\n * Gets or sets the target path of the runtime animation\n */\n get targetPath() {\n return this._targetPath;\n }\n /**\n * Gets the actual target of the runtime animation\n */\n get target() {\n return this._currentActiveTarget;\n }\n /**\n * Gets the additive state of the runtime animation\n */\n get isAdditive() {\n return this._host && this._host.isAdditive;\n }\n /**\n * Create a new RuntimeAnimation object\n * @param target defines the target of the animation\n * @param animation defines the source animation object\n * @param scene defines the hosting scene\n * @param host defines the initiating Animatable\n */\n constructor(target, animation, scene, host) {\n this._events = new Array();\n /**\n * The current frame of the runtime animation\n */\n this._currentFrame = 0;\n /**\n * The original value of the runtime animation\n */\n this._originalValue = new Array();\n /**\n * The original blend value of the runtime animation\n */\n this._originalBlendValue = null;\n /**\n * The offsets cache of the runtime animation\n */\n this._offsetsCache = {};\n /**\n * The high limits cache of the runtime animation\n */\n this._highLimitsCache = {};\n /**\n * Specifies if the runtime animation has been stopped\n */\n this._stopped = false;\n /**\n * The blending factor of the runtime animation\n */\n this._blendingFactor = 0;\n /**\n * The current value of the runtime animation\n */\n this._currentValue = null;\n this._currentActiveTarget = null;\n this._directTarget = null;\n /**\n * The target path of the runtime animation\n */\n this._targetPath = \"\";\n /**\n * The weight of the runtime animation\n */\n this._weight = 1.0;\n /**\n * The absolute frame offset of the runtime animation\n */\n this._absoluteFrameOffset = 0;\n /**\n * The previous elapsed time (since start of animation) of the runtime animation\n */\n this._previousElapsedTime = 0;\n this._yoyoDirection = 1;\n /**\n * The previous absolute frame of the runtime animation (meaning, without taking into account the from/to values, only the elapsed time and the fps)\n */\n this._previousAbsoluteFrame = 0;\n this._targetIsArray = false;\n this._animation = animation;\n this._target = target;\n this._scene = scene;\n this._host = host;\n this._activeTargets = [];\n animation._runtimeAnimations.push(this);\n // State\n this._animationState = {\n key: 0,\n repeatCount: 0,\n loopMode: this._getCorrectLoopMode(),\n };\n if (this._animation.dataType === Animation.ANIMATIONTYPE_MATRIX) {\n this._animationState.workValue = Matrix.Zero();\n }\n // Limits\n this._keys = this._animation.getKeys();\n this._minFrame = this._keys[0].frame;\n this._maxFrame = this._keys[this._keys.length - 1].frame;\n this._minValue = this._keys[0].value;\n this._maxValue = this._keys[this._keys.length - 1].value;\n // Add a start key at frame 0 if missing\n if (this._minFrame !== 0) {\n const newKey = { frame: 0, value: this._minValue };\n this._keys.splice(0, 0, newKey);\n }\n // Check data\n if (this._target instanceof Array) {\n let index = 0;\n for (const target of this._target) {\n this._preparePath(target, index);\n this._getOriginalValues(index);\n index++;\n }\n this._targetIsArray = true;\n }\n else {\n this._preparePath(this._target);\n this._getOriginalValues();\n this._targetIsArray = false;\n this._directTarget = this._activeTargets[0];\n }\n // Cloning events locally\n const events = animation.getEvents();\n if (events && events.length > 0) {\n events.forEach((e) => {\n this._events.push(e._clone());\n });\n }\n this._enableBlending = target && target.animationPropertiesOverride ? target.animationPropertiesOverride.enableBlending : this._animation.enableBlending;\n }\n _preparePath(target, targetIndex = 0) {\n const targetPropertyPath = this._animation.targetPropertyPath;\n if (targetPropertyPath.length > 1) {\n let property = target;\n for (let index = 0; index < targetPropertyPath.length - 1; index++) {\n const name = targetPropertyPath[index];\n property = property[name];\n if (property === undefined) {\n throw new Error(`Invalid property (${name}) in property path (${targetPropertyPath.join(\".\")})`);\n }\n }\n this._targetPath = targetPropertyPath[targetPropertyPath.length - 1];\n this._activeTargets[targetIndex] = property;\n }\n else {\n this._targetPath = targetPropertyPath[0];\n this._activeTargets[targetIndex] = target;\n }\n if (this._activeTargets[targetIndex][this._targetPath] === undefined) {\n throw new Error(`Invalid property (${this._targetPath}) in property path (${targetPropertyPath.join(\".\")})`);\n }\n }\n /**\n * Gets the animation from the runtime animation\n */\n get animation() {\n return this._animation;\n }\n /**\n * Resets the runtime animation to the beginning\n * @param restoreOriginal defines whether to restore the target property to the original value\n */\n reset(restoreOriginal = false) {\n if (restoreOriginal) {\n if (this._target instanceof Array) {\n let index = 0;\n for (const target of this._target) {\n if (this._originalValue[index] !== undefined) {\n this._setValue(target, this._activeTargets[index], this._originalValue[index], -1, index);\n }\n index++;\n }\n }\n else {\n if (this._originalValue[0] !== undefined) {\n this._setValue(this._target, this._directTarget, this._originalValue[0], -1, 0);\n }\n }\n }\n this._offsetsCache = {};\n this._highLimitsCache = {};\n this._currentFrame = 0;\n this._blendingFactor = 0;\n // Events\n for (let index = 0; index < this._events.length; index++) {\n this._events[index].isDone = false;\n }\n }\n /**\n * Specifies if the runtime animation is stopped\n * @returns Boolean specifying if the runtime animation is stopped\n */\n isStopped() {\n return this._stopped;\n }\n /**\n * Disposes of the runtime animation\n */\n dispose() {\n const index = this._animation.runtimeAnimations.indexOf(this);\n if (index > -1) {\n this._animation.runtimeAnimations.splice(index, 1);\n }\n }\n /**\n * Apply the interpolated value to the target\n * @param currentValue defines the value computed by the animation\n * @param weight defines the weight to apply to this value (Defaults to 1.0)\n */\n setValue(currentValue, weight) {\n if (this._targetIsArray) {\n for (let index = 0; index < this._target.length; index++) {\n const target = this._target[index];\n this._setValue(target, this._activeTargets[index], currentValue, weight, index);\n }\n return;\n }\n this._setValue(this._target, this._directTarget, currentValue, weight, 0);\n }\n _getOriginalValues(targetIndex = 0) {\n let originalValue;\n const target = this._activeTargets[targetIndex];\n if (target.getLocalMatrix && this._targetPath === \"_matrix\") {\n // For bones\n originalValue = target.getLocalMatrix();\n }\n else {\n originalValue = target[this._targetPath];\n }\n if (originalValue && originalValue.clone) {\n this._originalValue[targetIndex] = originalValue.clone();\n }\n else {\n this._originalValue[targetIndex] = originalValue;\n }\n }\n _registerTargetForLateAnimationBinding(runtimeAnimation, originalValue) {\n const target = runtimeAnimation.target;\n this._scene._registeredForLateAnimationBindings.pushNoDuplicate(target);\n if (!target._lateAnimationHolders) {\n target._lateAnimationHolders = {};\n }\n if (!target._lateAnimationHolders[runtimeAnimation.targetPath]) {\n target._lateAnimationHolders[runtimeAnimation.targetPath] = {\n totalWeight: 0,\n totalAdditiveWeight: 0,\n animations: [],\n additiveAnimations: [],\n originalValue: originalValue,\n };\n }\n if (runtimeAnimation.isAdditive) {\n target._lateAnimationHolders[runtimeAnimation.targetPath].additiveAnimations.push(runtimeAnimation);\n target._lateAnimationHolders[runtimeAnimation.targetPath].totalAdditiveWeight += runtimeAnimation.weight;\n }\n else {\n target._lateAnimationHolders[runtimeAnimation.targetPath].animations.push(runtimeAnimation);\n target._lateAnimationHolders[runtimeAnimation.targetPath].totalWeight += runtimeAnimation.weight;\n }\n }\n _setValue(target, destination, currentValue, weight, targetIndex) {\n // Set value\n this._currentActiveTarget = destination;\n this._weight = weight;\n if (this._enableBlending && this._blendingFactor <= 1.0) {\n if (!this._originalBlendValue) {\n const originalValue = destination[this._targetPath];\n if (originalValue.clone) {\n this._originalBlendValue = originalValue.clone();\n }\n else {\n this._originalBlendValue = originalValue;\n }\n }\n if (this._originalBlendValue.m) {\n // Matrix\n if (Animation.AllowMatrixDecomposeForInterpolation) {\n if (this._currentValue) {\n Matrix.DecomposeLerpToRef(this._originalBlendValue, currentValue, this._blendingFactor, this._currentValue);\n }\n else {\n this._currentValue = Matrix.DecomposeLerp(this._originalBlendValue, currentValue, this._blendingFactor);\n }\n }\n else {\n if (this._currentValue) {\n Matrix.LerpToRef(this._originalBlendValue, currentValue, this._blendingFactor, this._currentValue);\n }\n else {\n this._currentValue = Matrix.Lerp(this._originalBlendValue, currentValue, this._blendingFactor);\n }\n }\n }\n else {\n this._currentValue = Animation._UniversalLerp(this._originalBlendValue, currentValue, this._blendingFactor);\n }\n const blendingSpeed = target && target.animationPropertiesOverride ? target.animationPropertiesOverride.blendingSpeed : this._animation.blendingSpeed;\n this._blendingFactor += blendingSpeed;\n }\n else {\n if (!this._currentValue) {\n if (currentValue?.clone) {\n this._currentValue = currentValue.clone();\n }\n else {\n this._currentValue = currentValue;\n }\n }\n else if (this._currentValue.copyFrom) {\n this._currentValue.copyFrom(currentValue);\n }\n else {\n this._currentValue = currentValue;\n }\n }\n if (weight !== -1.0) {\n this._registerTargetForLateAnimationBinding(this, this._originalValue[targetIndex]);\n }\n else {\n if (this._animationState.loopMode === Animation.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT) {\n if (this._currentValue.addToRef) {\n this._currentValue.addToRef(this._originalValue[targetIndex], destination[this._targetPath]);\n }\n else {\n destination[this._targetPath] = this._originalValue[targetIndex] + this._currentValue;\n }\n }\n else {\n destination[this._targetPath] = this._currentValue;\n }\n }\n if (target.markAsDirty) {\n target.markAsDirty(this._animation.targetProperty);\n }\n }\n /**\n * Gets the loop pmode of the runtime animation\n * @returns Loop Mode\n */\n _getCorrectLoopMode() {\n if (this._target && this._target.animationPropertiesOverride) {\n return this._target.animationPropertiesOverride.loopMode;\n }\n return this._animation.loopMode;\n }\n /**\n * Move the current animation to a given frame\n * @param frame defines the frame to move to\n * @param weight defines the weight to apply to the animation (-1.0 by default)\n */\n goToFrame(frame, weight = -1) {\n const keys = this._animation.getKeys();\n if (frame < keys[0].frame) {\n frame = keys[0].frame;\n }\n else if (frame > keys[keys.length - 1].frame) {\n frame = keys[keys.length - 1].frame;\n }\n // Need to reset animation events\n const events = this._events;\n if (events.length) {\n for (let index = 0; index < events.length; index++) {\n if (!events[index].onlyOnce) {\n // reset events in the future\n events[index].isDone = events[index].frame < frame;\n }\n }\n }\n this._currentFrame = frame;\n const currentValue = this._animation._interpolate(frame, this._animationState);\n this.setValue(currentValue, weight);\n }\n /**\n * @internal Internal use only\n */\n _prepareForSpeedRatioChange(newSpeedRatio) {\n const newAbsoluteFrame = (this._previousElapsedTime * (this._animation.framePerSecond * newSpeedRatio)) / 1000.0;\n this._absoluteFrameOffset = this._previousAbsoluteFrame - newAbsoluteFrame;\n }\n /**\n * Execute the current animation\n * @param elapsedTimeSinceAnimationStart defines the elapsed time (in milliseconds) since the animation was started\n * @param from defines the lower frame of the animation range\n * @param to defines the upper frame of the animation range\n * @param loop defines if the current animation must loop\n * @param speedRatio defines the current speed ratio\n * @param weight defines the weight of the animation (default is -1 so no weight)\n * @returns a boolean indicating if the animation is running\n */\n animate(elapsedTimeSinceAnimationStart, from, to, loop, speedRatio, weight = -1.0) {\n const animation = this._animation;\n const targetPropertyPath = animation.targetPropertyPath;\n if (!targetPropertyPath || targetPropertyPath.length < 1) {\n this._stopped = true;\n return false;\n }\n let returnValue = true;\n // Check limits\n if (from < this._minFrame || from > this._maxFrame) {\n from = this._minFrame;\n }\n if (to < this._minFrame || to > this._maxFrame) {\n to = this._maxFrame;\n }\n const frameRange = to - from;\n let offsetValue;\n // Compute the frame according to the elapsed time and the fps of the animation (\"from\" and \"to\" are not factored in!)\n let absoluteFrame = (elapsedTimeSinceAnimationStart * (animation.framePerSecond * speedRatio)) / 1000.0 + this._absoluteFrameOffset;\n let highLimitValue = 0;\n // Apply the yoyo function if required\n let yoyoLoop = false;\n const yoyoMode = loop && this._animationState.loopMode === Animation.ANIMATIONLOOPMODE_YOYO;\n if (yoyoMode) {\n const position = (absoluteFrame - from) / frameRange;\n // Apply the yoyo curve\n const sin = Math.sin(position * Math.PI);\n const yoyoPosition = Math.abs(sin);\n // Map the yoyo position back to the range\n absoluteFrame = yoyoPosition * frameRange + from;\n const direction = sin >= 0 ? 1 : -1;\n if (this._yoyoDirection !== direction) {\n yoyoLoop = true;\n }\n this._yoyoDirection = direction;\n }\n this._previousElapsedTime = elapsedTimeSinceAnimationStart;\n this._previousAbsoluteFrame = absoluteFrame;\n if (!loop && to >= from && ((absoluteFrame >= frameRange && speedRatio > 0) || (absoluteFrame <= 0 && speedRatio < 0))) {\n // If we are out of range and not looping get back to caller\n returnValue = false;\n highLimitValue = animation._getKeyValue(this._maxValue);\n }\n else if (!loop && from >= to && ((absoluteFrame <= frameRange && speedRatio < 0) || (absoluteFrame >= 0 && speedRatio > 0))) {\n returnValue = false;\n highLimitValue = animation._getKeyValue(this._minValue);\n }\n else if (this._animationState.loopMode !== Animation.ANIMATIONLOOPMODE_CYCLE) {\n const keyOffset = to.toString() + from.toString();\n if (!this._offsetsCache[keyOffset]) {\n this._animationState.repeatCount = 0;\n this._animationState.loopMode = Animation.ANIMATIONLOOPMODE_CYCLE; // force a specific codepath in animation._interpolate()!\n const fromValue = animation._interpolate(from, this._animationState);\n const toValue = animation._interpolate(to, this._animationState);\n this._animationState.loopMode = this._getCorrectLoopMode();\n switch (animation.dataType) {\n // Float\n case Animation.ANIMATIONTYPE_FLOAT:\n this._offsetsCache[keyOffset] = toValue - fromValue;\n break;\n // Quaternion\n case Animation.ANIMATIONTYPE_QUATERNION:\n this._offsetsCache[keyOffset] = toValue.subtract(fromValue);\n break;\n // Vector3\n case Animation.ANIMATIONTYPE_VECTOR3:\n this._offsetsCache[keyOffset] = toValue.subtract(fromValue);\n break;\n // Vector2\n case Animation.ANIMATIONTYPE_VECTOR2:\n this._offsetsCache[keyOffset] = toValue.subtract(fromValue);\n break;\n // Size\n case Animation.ANIMATIONTYPE_SIZE:\n this._offsetsCache[keyOffset] = toValue.subtract(fromValue);\n break;\n // Color3\n case Animation.ANIMATIONTYPE_COLOR3:\n this._offsetsCache[keyOffset] = toValue.subtract(fromValue);\n break;\n default:\n break;\n }\n this._highLimitsCache[keyOffset] = toValue;\n }\n highLimitValue = this._highLimitsCache[keyOffset];\n offsetValue = this._offsetsCache[keyOffset];\n }\n if (offsetValue === undefined) {\n switch (animation.dataType) {\n // Float\n case Animation.ANIMATIONTYPE_FLOAT:\n offsetValue = 0;\n break;\n // Quaternion\n case Animation.ANIMATIONTYPE_QUATERNION:\n offsetValue = _staticOffsetValueQuaternion;\n break;\n // Vector3\n case Animation.ANIMATIONTYPE_VECTOR3:\n offsetValue = _staticOffsetValueVector3;\n break;\n // Vector2\n case Animation.ANIMATIONTYPE_VECTOR2:\n offsetValue = _staticOffsetValueVector2;\n break;\n // Size\n case Animation.ANIMATIONTYPE_SIZE:\n offsetValue = _staticOffsetValueSize;\n break;\n // Color3\n case Animation.ANIMATIONTYPE_COLOR3:\n offsetValue = _staticOffsetValueColor3;\n break;\n case Animation.ANIMATIONTYPE_COLOR4:\n offsetValue = _staticOffsetValueColor4;\n break;\n }\n }\n // Compute value\n let currentFrame;\n if (this._host && this._host.syncRoot) {\n // If we must sync with an animatable, calculate the current frame based on the frame of the root animatable\n const syncRoot = this._host.syncRoot;\n const hostNormalizedFrame = (syncRoot.masterFrame - syncRoot.fromFrame) / (syncRoot.toFrame - syncRoot.fromFrame);\n currentFrame = from + frameRange * hostNormalizedFrame;\n }\n else {\n if ((absoluteFrame > 0 && from > to) || (absoluteFrame < 0 && from < to)) {\n currentFrame = returnValue && frameRange !== 0 ? to + (absoluteFrame % frameRange) : from;\n }\n else {\n currentFrame = returnValue && frameRange !== 0 ? from + (absoluteFrame % frameRange) : to;\n }\n }\n const events = this._events;\n // Reset event/state if looping\n if ((!yoyoMode && ((speedRatio > 0 && this.currentFrame > currentFrame) || (speedRatio < 0 && this.currentFrame < currentFrame))) || (yoyoMode && yoyoLoop)) {\n this._onLoop();\n // Need to reset animation events\n for (let index = 0; index < events.length; index++) {\n if (!events[index].onlyOnce) {\n // reset event, the animation is looping\n events[index].isDone = false;\n }\n }\n this._animationState.key = speedRatio > 0 ? 0 : animation.getKeys().length - 1;\n }\n this._currentFrame = currentFrame;\n this._animationState.repeatCount = frameRange === 0 ? 0 : (absoluteFrame / frameRange) >> 0;\n this._animationState.highLimitValue = highLimitValue;\n this._animationState.offsetValue = offsetValue;\n const currentValue = animation._interpolate(currentFrame, this._animationState);\n // Set value\n this.setValue(currentValue, weight);\n // Check events\n if (events.length) {\n for (let index = 0; index < events.length; index++) {\n // Make sure current frame has passed event frame and that event frame is within the current range\n // Also, handle both forward and reverse animations\n if ((frameRange >= 0 && currentFrame >= events[index].frame && events[index].frame >= from) ||\n (frameRange < 0 && currentFrame <= events[index].frame && events[index].frame <= from)) {\n const event = events[index];\n if (!event.isDone) {\n // If event should be done only once, remove it.\n if (event.onlyOnce) {\n events.splice(index, 1);\n index--;\n }\n event.isDone = true;\n event.action(currentFrame);\n } // Don't do anything if the event has already been done.\n }\n }\n }\n if (!returnValue) {\n this._stopped = true;\n }\n return returnValue;\n }\n}\n//# sourceMappingURL=runtimeAnimation.js.map","import { Observable } from \"core/Misc/observable\";\nimport { RuntimeAnimation } from \"./runtimeAnimation\";\nimport { Animation } from \"./animation\";\nimport { PrecisionDate } from \"core/Misc/precisionDate\";\nimport { Matrix, Quaternion, TmpVectors, Vector3 } from \"core/Maths/math.vector\";\n/**\n * Class used to store an actual running animation\n */\nexport class Animatable {\n /**\n * Gets the root Animatable used to synchronize and normalize animations\n */\n get syncRoot() {\n return this._syncRoot;\n }\n /**\n * Gets the current frame of the first RuntimeAnimation\n * Used to synchronize Animatables\n */\n get masterFrame() {\n if (this._runtimeAnimations.length === 0) {\n return 0;\n }\n return this._runtimeAnimations[0].currentFrame;\n }\n /**\n * Gets or sets the animatable weight (-1.0 by default meaning not weighted)\n */\n get weight() {\n return this._weight;\n }\n set weight(value) {\n if (value === -1) {\n // -1 is ok and means no weight\n this._weight = -1;\n return;\n }\n // Else weight must be in [0, 1] range\n this._weight = Math.min(Math.max(value, 0), 1.0);\n }\n /**\n * Gets or sets the speed ratio to apply to the animatable (1.0 by default)\n */\n get speedRatio() {\n return this._speedRatio;\n }\n set speedRatio(value) {\n for (let index = 0; index < this._runtimeAnimations.length; index++) {\n const animation = this._runtimeAnimations[index];\n animation._prepareForSpeedRatioChange(value);\n }\n this._speedRatio = value;\n // Resync _manualJumpDelay in case goToFrame was called before speedRatio was set.\n if (this._goToFrame !== null) {\n this.goToFrame(this._goToFrame);\n }\n }\n /**\n * Gets the elapsed time since the animatable started in milliseconds\n */\n get elapsedTime() {\n return this._localDelayOffset === null ? 0 : this._scene._animationTime - this._localDelayOffset;\n }\n /**\n * Creates a new Animatable\n * @param scene defines the hosting scene\n * @param target defines the target object\n * @param fromFrame defines the starting frame number (default is 0)\n * @param toFrame defines the ending frame number (default is 100)\n * @param loopAnimation defines if the animation must loop (default is false)\n * @param speedRatio defines the factor to apply to animation speed (default is 1)\n * @param onAnimationEnd defines a callback to call when animation ends if it is not looping\n * @param animations defines a group of animation to add to the new Animatable\n * @param onAnimationLoop defines a callback to call when animation loops\n * @param isAdditive defines whether the animation should be evaluated additively\n * @param playOrder defines the order in which this animatable should be processed in the list of active animatables (default: 0)\n */\n constructor(scene, \n /** defines the target object */\n target, \n /** [0] defines the starting frame number (default is 0) */\n fromFrame = 0, \n /** [100] defines the ending frame number (default is 100) */\n toFrame = 100, \n /** [false] defines if the animation must loop (default is false) */\n loopAnimation = false, speedRatio = 1.0, \n /** defines a callback to call when animation ends if it is not looping */\n onAnimationEnd, animations, \n /** defines a callback to call when animation loops */\n onAnimationLoop, \n /** [false] defines whether the animation should be evaluated additively */\n isAdditive = false, \n /** [0] defines the order in which this animatable should be processed in the list of active animatables (default: 0) */\n playOrder = 0) {\n this.target = target;\n this.fromFrame = fromFrame;\n this.toFrame = toFrame;\n this.loopAnimation = loopAnimation;\n this.onAnimationEnd = onAnimationEnd;\n this.onAnimationLoop = onAnimationLoop;\n this.isAdditive = isAdditive;\n this.playOrder = playOrder;\n this._localDelayOffset = null;\n this._pausedDelay = null;\n this._manualJumpDelay = null;\n /** @hidden */\n this._runtimeAnimations = new Array();\n this._paused = false;\n this._speedRatio = 1;\n this._weight = -1.0;\n this._syncRoot = null;\n this._frameToSyncFromJump = null;\n this._goToFrame = null;\n /**\n * Gets or sets a boolean indicating if the animatable must be disposed and removed at the end of the animation.\n * This will only apply for non looping animation (default is true)\n */\n this.disposeOnEnd = true;\n /**\n * Gets a boolean indicating if the animation has started\n */\n this.animationStarted = false;\n /**\n * Observer raised when the animation ends\n */\n this.onAnimationEndObservable = new Observable();\n /**\n * Observer raised when the animation loops\n */\n this.onAnimationLoopObservable = new Observable();\n this._scene = scene;\n if (animations) {\n this.appendAnimations(target, animations);\n }\n this._speedRatio = speedRatio;\n scene._activeAnimatables.push(this);\n }\n // Methods\n /**\n * Synchronize and normalize current Animatable with a source Animatable\n * This is useful when using animation weights and when animations are not of the same length\n * @param root defines the root Animatable to synchronize with (null to stop synchronizing)\n * @returns the current Animatable\n */\n syncWith(root) {\n this._syncRoot = root;\n if (root) {\n // Make sure this animatable will animate after the root\n const index = this._scene._activeAnimatables.indexOf(this);\n if (index > -1) {\n this._scene._activeAnimatables.splice(index, 1);\n this._scene._activeAnimatables.push(this);\n }\n }\n return this;\n }\n /**\n * Gets the list of runtime animations\n * @returns an array of RuntimeAnimation\n */\n getAnimations() {\n return this._runtimeAnimations;\n }\n /**\n * Adds more animations to the current animatable\n * @param target defines the target of the animations\n * @param animations defines the new animations to add\n */\n appendAnimations(target, animations) {\n for (let index = 0; index < animations.length; index++) {\n const animation = animations[index];\n const newRuntimeAnimation = new RuntimeAnimation(target, animation, this._scene, this);\n newRuntimeAnimation._onLoop = () => {\n this.onAnimationLoopObservable.notifyObservers(this);\n if (this.onAnimationLoop) {\n this.onAnimationLoop();\n }\n };\n this._runtimeAnimations.push(newRuntimeAnimation);\n }\n }\n /**\n * Gets the source animation for a specific property\n * @param property defines the property to look for\n * @returns null or the source animation for the given property\n */\n getAnimationByTargetProperty(property) {\n const runtimeAnimations = this._runtimeAnimations;\n for (let index = 0; index < runtimeAnimations.length; index++) {\n if (runtimeAnimations[index].animation.targetProperty === property) {\n return runtimeAnimations[index].animation;\n }\n }\n return null;\n }\n /**\n * Gets the runtime animation for a specific property\n * @param property defines the property to look for\n * @returns null or the runtime animation for the given property\n */\n getRuntimeAnimationByTargetProperty(property) {\n const runtimeAnimations = this._runtimeAnimations;\n for (let index = 0; index < runtimeAnimations.length; index++) {\n if (runtimeAnimations[index].animation.targetProperty === property) {\n return runtimeAnimations[index];\n }\n }\n return null;\n }\n /**\n * Resets the animatable to its original state\n */\n reset() {\n const runtimeAnimations = this._runtimeAnimations;\n for (let index = 0; index < runtimeAnimations.length; index++) {\n runtimeAnimations[index].reset(true);\n }\n this._localDelayOffset = null;\n this._pausedDelay = null;\n }\n /**\n * Allows the animatable to blend with current running animations\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#animation-blending\n * @param blendingSpeed defines the blending speed to use\n */\n enableBlending(blendingSpeed) {\n const runtimeAnimations = this._runtimeAnimations;\n for (let index = 0; index < runtimeAnimations.length; index++) {\n runtimeAnimations[index].animation.enableBlending = true;\n runtimeAnimations[index].animation.blendingSpeed = blendingSpeed;\n }\n }\n /**\n * Disable animation blending\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#animation-blending\n */\n disableBlending() {\n const runtimeAnimations = this._runtimeAnimations;\n for (let index = 0; index < runtimeAnimations.length; index++) {\n runtimeAnimations[index].animation.enableBlending = false;\n }\n }\n /**\n * Jump directly to a given frame\n * @param frame defines the frame to jump to\n * @param useWeight defines whether the animation weight should be applied to the image to be jumped to (false by default)\n */\n goToFrame(frame, useWeight = false) {\n const runtimeAnimations = this._runtimeAnimations;\n if (runtimeAnimations[0]) {\n const fps = runtimeAnimations[0].animation.framePerSecond;\n this._frameToSyncFromJump = this._frameToSyncFromJump ?? runtimeAnimations[0].currentFrame;\n const delay = this.speedRatio === 0 ? 0 : (((frame - this._frameToSyncFromJump) / fps) * 1000) / this.speedRatio;\n this._manualJumpDelay = -delay;\n }\n for (let index = 0; index < runtimeAnimations.length; index++) {\n runtimeAnimations[index].goToFrame(frame, useWeight ? this._weight : -1);\n }\n this._goToFrame = frame;\n }\n /**\n * Returns true if the animations for this animatable are paused\n */\n get paused() {\n return this._paused;\n }\n /**\n * Pause the animation\n */\n pause() {\n if (this._paused) {\n return;\n }\n this._paused = true;\n }\n /**\n * Restart the animation\n */\n restart() {\n this._paused = false;\n }\n _raiseOnAnimationEnd() {\n if (this.onAnimationEnd) {\n this.onAnimationEnd();\n }\n this.onAnimationEndObservable.notifyObservers(this);\n }\n /**\n * Stop and delete the current animation\n * @param animationName defines a string used to only stop some of the runtime animations instead of all\n * @param targetMask a function that determines if the animation should be stopped based on its target (all animations will be stopped if both this and animationName are empty)\n * @param useGlobalSplice if true, the animatables will be removed by the caller of this function (false by default)\n * @param skipOnAnimationEnd defines if the system should not raise onAnimationEnd. Default is false\n */\n stop(animationName, targetMask, useGlobalSplice = false, skipOnAnimationEnd = false) {\n if (animationName || targetMask) {\n const idx = this._scene._activeAnimatables.indexOf(this);\n if (idx > -1) {\n const runtimeAnimations = this._runtimeAnimations;\n for (let index = runtimeAnimations.length - 1; index >= 0; index--) {\n const runtimeAnimation = runtimeAnimations[index];\n if (animationName && runtimeAnimation.animation.name != animationName) {\n continue;\n }\n if (targetMask && !targetMask(runtimeAnimation.target)) {\n continue;\n }\n runtimeAnimation.dispose();\n runtimeAnimations.splice(index, 1);\n }\n if (runtimeAnimations.length == 0) {\n if (!useGlobalSplice) {\n this._scene._activeAnimatables.splice(idx, 1);\n }\n if (!skipOnAnimationEnd) {\n this._raiseOnAnimationEnd();\n }\n }\n }\n }\n else {\n const index = this._scene._activeAnimatables.indexOf(this);\n if (index > -1) {\n if (!useGlobalSplice) {\n this._scene._activeAnimatables.splice(index, 1);\n }\n const runtimeAnimations = this._runtimeAnimations;\n for (let index = 0; index < runtimeAnimations.length; index++) {\n runtimeAnimations[index].dispose();\n }\n this._runtimeAnimations.length = 0;\n if (!skipOnAnimationEnd) {\n this._raiseOnAnimationEnd();\n }\n }\n }\n }\n /**\n * Wait asynchronously for the animation to end\n * @returns a promise which will be fulfilled when the animation ends\n */\n waitAsync() {\n return new Promise((resolve) => {\n this.onAnimationEndObservable.add(() => {\n resolve(this);\n }, undefined, undefined, this, true);\n });\n }\n /**\n * @internal\n */\n _animate(delay) {\n if (this._paused) {\n this.animationStarted = false;\n if (this._pausedDelay === null) {\n this._pausedDelay = delay;\n }\n return true;\n }\n if (this._localDelayOffset === null) {\n this._localDelayOffset = delay;\n this._pausedDelay = null;\n }\n else if (this._pausedDelay !== null) {\n this._localDelayOffset += delay - this._pausedDelay;\n this._pausedDelay = null;\n }\n if (this._manualJumpDelay !== null) {\n this._localDelayOffset += this._manualJumpDelay;\n this._manualJumpDelay = null;\n this._frameToSyncFromJump = null;\n }\n this._goToFrame = null;\n if (this._weight === 0) {\n // We consider that an animatable with a weight === 0 is \"actively\" paused\n return true;\n }\n // Animating\n let running = false;\n const runtimeAnimations = this._runtimeAnimations;\n let index;\n for (index = 0; index < runtimeAnimations.length; index++) {\n const animation = runtimeAnimations[index];\n const isRunning = animation.animate(delay - this._localDelayOffset, this.fromFrame, this.toFrame, this.loopAnimation, this._speedRatio, this._weight);\n running = running || isRunning;\n }\n this.animationStarted = running;\n if (!running) {\n if (this.disposeOnEnd) {\n // Remove from active animatables\n index = this._scene._activeAnimatables.indexOf(this);\n this._scene._activeAnimatables.splice(index, 1);\n // Dispose all runtime animations\n for (index = 0; index < runtimeAnimations.length; index++) {\n runtimeAnimations[index].dispose();\n }\n }\n this._raiseOnAnimationEnd();\n if (this.disposeOnEnd) {\n this.onAnimationEnd = null;\n this.onAnimationLoop = null;\n this.onAnimationLoopObservable.clear();\n this.onAnimationEndObservable.clear();\n }\n }\n return running;\n }\n}\n/** @internal */\nfunction ProcessLateAnimationBindingsForMatrices(holder) {\n if (holder.totalWeight === 0 && holder.totalAdditiveWeight === 0) {\n return holder.originalValue;\n }\n let normalizer = 1.0;\n const finalPosition = TmpVectors.Vector3[0];\n const finalScaling = TmpVectors.Vector3[1];\n const finalQuaternion = TmpVectors.Quaternion[0];\n let startIndex = 0;\n const originalAnimation = holder.animations[0];\n const originalValue = holder.originalValue;\n let scale = 1;\n let skipOverride = false;\n if (holder.totalWeight < 1.0) {\n // We need to mix the original value in\n scale = 1.0 - holder.totalWeight;\n originalValue.decompose(finalScaling, finalQuaternion, finalPosition);\n }\n else {\n startIndex = 1;\n // We need to normalize the weights\n normalizer = holder.totalWeight;\n scale = originalAnimation.weight / normalizer;\n if (scale == 1) {\n if (holder.totalAdditiveWeight) {\n skipOverride = true;\n }\n else {\n return originalAnimation.currentValue;\n }\n }\n originalAnimation.currentValue.decompose(finalScaling, finalQuaternion, finalPosition);\n }\n // Add up the override animations\n if (!skipOverride) {\n finalScaling.scaleInPlace(scale);\n finalPosition.scaleInPlace(scale);\n finalQuaternion.scaleInPlace(scale);\n for (let animIndex = startIndex; animIndex < holder.animations.length; animIndex++) {\n const runtimeAnimation = holder.animations[animIndex];\n if (runtimeAnimation.weight === 0) {\n continue;\n }\n scale = runtimeAnimation.weight / normalizer;\n const currentPosition = TmpVectors.Vector3[2];\n const currentScaling = TmpVectors.Vector3[3];\n const currentQuaternion = TmpVectors.Quaternion[1];\n runtimeAnimation.currentValue.decompose(currentScaling, currentQuaternion, currentPosition);\n currentScaling.scaleAndAddToRef(scale, finalScaling);\n currentQuaternion.scaleAndAddToRef(Quaternion.Dot(finalQuaternion, currentQuaternion) > 0 ? scale : -scale, finalQuaternion);\n currentPosition.scaleAndAddToRef(scale, finalPosition);\n }\n finalQuaternion.normalize();\n }\n // Add up the additive animations\n for (let animIndex = 0; animIndex < holder.additiveAnimations.length; animIndex++) {\n const runtimeAnimation = holder.additiveAnimations[animIndex];\n if (runtimeAnimation.weight === 0) {\n continue;\n }\n const currentPosition = TmpVectors.Vector3[2];\n const currentScaling = TmpVectors.Vector3[3];\n const currentQuaternion = TmpVectors.Quaternion[1];\n runtimeAnimation.currentValue.decompose(currentScaling, currentQuaternion, currentPosition);\n currentScaling.multiplyToRef(finalScaling, currentScaling);\n Vector3.LerpToRef(finalScaling, currentScaling, runtimeAnimation.weight, finalScaling);\n finalQuaternion.multiplyToRef(currentQuaternion, currentQuaternion);\n Quaternion.SlerpToRef(finalQuaternion, currentQuaternion, runtimeAnimation.weight, finalQuaternion);\n currentPosition.scaleAndAddToRef(runtimeAnimation.weight, finalPosition);\n }\n const workValue = originalAnimation ? originalAnimation._animationState.workValue : TmpVectors.Matrix[0].clone();\n Matrix.ComposeToRef(finalScaling, finalQuaternion, finalPosition, workValue);\n return workValue;\n}\n/** @internal */\nfunction ProcessLateAnimationBindingsForQuaternions(holder, refQuaternion) {\n if (holder.totalWeight === 0 && holder.totalAdditiveWeight === 0) {\n return refQuaternion;\n }\n const originalAnimation = holder.animations[0];\n const originalValue = holder.originalValue;\n let cumulativeQuaternion = refQuaternion;\n if (holder.totalWeight === 0 && holder.totalAdditiveWeight > 0) {\n cumulativeQuaternion.copyFrom(originalValue);\n }\n else if (holder.animations.length === 1) {\n Quaternion.SlerpToRef(originalValue, originalAnimation.currentValue, Math.min(1.0, holder.totalWeight), cumulativeQuaternion);\n if (holder.totalAdditiveWeight === 0) {\n return cumulativeQuaternion;\n }\n }\n else if (holder.animations.length > 1) {\n // Add up the override animations\n let normalizer = 1.0;\n let quaternions;\n let weights;\n if (holder.totalWeight < 1.0) {\n const scale = 1.0 - holder.totalWeight;\n quaternions = [];\n weights = [];\n quaternions.push(originalValue);\n weights.push(scale);\n }\n else {\n if (holder.animations.length === 2) {\n // Slerp as soon as we can\n Quaternion.SlerpToRef(holder.animations[0].currentValue, holder.animations[1].currentValue, holder.animations[1].weight / holder.totalWeight, refQuaternion);\n if (holder.totalAdditiveWeight === 0) {\n return refQuaternion;\n }\n }\n quaternions = [];\n weights = [];\n normalizer = holder.totalWeight;\n }\n for (let animIndex = 0; animIndex < holder.animations.length; animIndex++) {\n const runtimeAnimation = holder.animations[animIndex];\n quaternions.push(runtimeAnimation.currentValue);\n weights.push(runtimeAnimation.weight / normalizer);\n }\n // https://gamedev.stackexchange.com/questions/62354/method-for-interpolation-between-3-quaternions\n let cumulativeAmount = 0;\n for (let index = 0; index < quaternions.length;) {\n if (!index) {\n Quaternion.SlerpToRef(quaternions[index], quaternions[index + 1], weights[index + 1] / (weights[index] + weights[index + 1]), refQuaternion);\n cumulativeQuaternion = refQuaternion;\n cumulativeAmount = weights[index] + weights[index + 1];\n index += 2;\n continue;\n }\n cumulativeAmount += weights[index];\n Quaternion.SlerpToRef(cumulativeQuaternion, quaternions[index], weights[index] / cumulativeAmount, cumulativeQuaternion);\n index++;\n }\n }\n // Add up the additive animations\n for (let animIndex = 0; animIndex < holder.additiveAnimations.length; animIndex++) {\n const runtimeAnimation = holder.additiveAnimations[animIndex];\n if (runtimeAnimation.weight === 0) {\n continue;\n }\n cumulativeQuaternion.multiplyToRef(runtimeAnimation.currentValue, TmpVectors.Quaternion[0]);\n Quaternion.SlerpToRef(cumulativeQuaternion, TmpVectors.Quaternion[0], runtimeAnimation.weight, cumulativeQuaternion);\n }\n return cumulativeQuaternion;\n}\n/** @internal */\nfunction ProcessLateAnimationBindings(scene) {\n if (!scene._registeredForLateAnimationBindings.length) {\n return;\n }\n for (let index = 0; index < scene._registeredForLateAnimationBindings.length; index++) {\n const target = scene._registeredForLateAnimationBindings.data[index];\n for (const path in target._lateAnimationHolders) {\n const holder = target._lateAnimationHolders[path];\n const originalAnimation = holder.animations[0];\n const originalValue = holder.originalValue;\n if (originalValue === undefined || originalValue === null) {\n continue;\n }\n const matrixDecomposeMode = Animation.AllowMatrixDecomposeForInterpolation && originalValue.m; // ie. data is matrix\n let finalValue = target[path];\n if (matrixDecomposeMode) {\n finalValue = ProcessLateAnimationBindingsForMatrices(holder);\n }\n else {\n const quaternionMode = originalValue.w !== undefined;\n if (quaternionMode) {\n finalValue = ProcessLateAnimationBindingsForQuaternions(holder, finalValue || Quaternion.Identity());\n }\n else {\n let startIndex = 0;\n let normalizer = 1.0;\n const originalAnimationIsLoopRelativeFromCurrent = originalAnimation && originalAnimation._animationState.loopMode === Animation.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT;\n if (holder.totalWeight < 1.0) {\n // We need to mix the original value in\n if (originalAnimationIsLoopRelativeFromCurrent) {\n finalValue = originalValue.clone ? originalValue.clone() : originalValue;\n }\n else if (originalAnimation && originalValue.scale) {\n finalValue = originalValue.scale(1.0 - holder.totalWeight);\n }\n else if (originalAnimation) {\n finalValue = originalValue * (1.0 - holder.totalWeight);\n }\n else if (originalValue.clone) {\n finalValue = originalValue.clone();\n }\n else {\n finalValue = originalValue;\n }\n }\n else if (originalAnimation) {\n // We need to normalize the weights\n normalizer = holder.totalWeight;\n const scale = originalAnimation.weight / normalizer;\n if (scale !== 1) {\n if (originalAnimation.currentValue.scale) {\n finalValue = originalAnimation.currentValue.scale(scale);\n }\n else {\n finalValue = originalAnimation.currentValue * scale;\n }\n }\n else {\n finalValue = originalAnimation.currentValue;\n }\n if (originalAnimationIsLoopRelativeFromCurrent) {\n if (finalValue.addToRef) {\n finalValue.addToRef(originalValue, finalValue);\n }\n else {\n finalValue += originalValue;\n }\n }\n startIndex = 1;\n }\n // Add up the override animations\n for (let animIndex = startIndex; animIndex < holder.animations.length; animIndex++) {\n const runtimeAnimation = holder.animations[animIndex];\n const scale = runtimeAnimation.weight / normalizer;\n if (!scale) {\n continue;\n }\n else if (runtimeAnimation.currentValue.scaleAndAddToRef) {\n runtimeAnimation.currentValue.scaleAndAddToRef(scale, finalValue);\n }\n else {\n finalValue += runtimeAnimation.currentValue * scale;\n }\n }\n // Add up the additive animations\n for (let animIndex = 0; animIndex < holder.additiveAnimations.length; animIndex++) {\n const runtimeAnimation = holder.additiveAnimations[animIndex];\n const scale = runtimeAnimation.weight;\n if (!scale) {\n continue;\n }\n else if (runtimeAnimation.currentValue.scaleAndAddToRef) {\n runtimeAnimation.currentValue.scaleAndAddToRef(scale, finalValue);\n }\n else {\n finalValue += runtimeAnimation.currentValue * scale;\n }\n }\n }\n }\n target[path] = finalValue;\n }\n target._lateAnimationHolders = {};\n }\n scene._registeredForLateAnimationBindings.reset();\n}\n/** @internal */\nexport function RegisterTargetForLateAnimationBinding(scene, runtimeAnimation, originalValue) {\n const target = runtimeAnimation.target;\n scene._registeredForLateAnimationBindings.pushNoDuplicate(target);\n if (!target._lateAnimationHolders) {\n target._lateAnimationHolders = {};\n }\n if (!target._lateAnimationHolders[runtimeAnimation.targetPath]) {\n target._lateAnimationHolders[runtimeAnimation.targetPath] = {\n totalWeight: 0,\n totalAdditiveWeight: 0,\n animations: [],\n additiveAnimations: [],\n originalValue: originalValue,\n };\n }\n if (runtimeAnimation.isAdditive) {\n target._lateAnimationHolders[runtimeAnimation.targetPath].additiveAnimations.push(runtimeAnimation);\n target._lateAnimationHolders[runtimeAnimation.targetPath].totalAdditiveWeight += runtimeAnimation.weight;\n }\n else {\n target._lateAnimationHolders[runtimeAnimation.targetPath].animations.push(runtimeAnimation);\n target._lateAnimationHolders[runtimeAnimation.targetPath].totalWeight += runtimeAnimation.weight;\n }\n}\n/**\n * Initialize all the inter dependecies between the animations and Scene and Bone\n * @param sceneClass defines the scene prototype to use\n * @param boneClass defines the bone prototype to use\n */\nexport function AddAnimationExtensions(sceneClass, boneClass) {\n if (boneClass) {\n boneClass.prototype.copyAnimationRange = function (source, rangeName, frameOffset, rescaleAsRequired = false, skelDimensionsRatio = null) {\n // all animation may be coming from a library skeleton, so may need to create animation\n if (this.animations.length === 0) {\n this.animations.push(new Animation(this.name, \"_matrix\", source.animations[0].framePerSecond, Animation.ANIMATIONTYPE_MATRIX, 0));\n this.animations[0].setKeys([]);\n }\n // get animation info / verify there is such a range from the source bone\n const sourceRange = source.animations[0].getRange(rangeName);\n if (!sourceRange) {\n return false;\n }\n const from = sourceRange.from;\n const to = sourceRange.to;\n const sourceKeys = source.animations[0].getKeys();\n // rescaling prep\n const sourceBoneLength = source.length;\n const sourceParent = source.getParent();\n const parent = this.getParent();\n const parentScalingReqd = rescaleAsRequired && sourceParent && sourceBoneLength && this.length && sourceBoneLength !== this.length;\n const parentRatio = parentScalingReqd && parent && sourceParent ? parent.length / sourceParent.length : 1;\n const dimensionsScalingReqd = rescaleAsRequired && !parent && skelDimensionsRatio && (skelDimensionsRatio.x !== 1 || skelDimensionsRatio.y !== 1 || skelDimensionsRatio.z !== 1);\n const destKeys = this.animations[0].getKeys();\n // loop vars declaration\n let orig;\n let origTranslation;\n let mat;\n for (let key = 0, nKeys = sourceKeys.length; key < nKeys; key++) {\n orig = sourceKeys[key];\n if (orig.frame >= from && orig.frame <= to) {\n if (rescaleAsRequired) {\n mat = orig.value.clone();\n // scale based on parent ratio, when bone has parent\n if (parentScalingReqd) {\n origTranslation = mat.getTranslation();\n mat.setTranslation(origTranslation.scaleInPlace(parentRatio));\n // scale based on skeleton dimension ratio when root bone, and value is passed\n }\n else if (dimensionsScalingReqd && skelDimensionsRatio) {\n origTranslation = mat.getTranslation();\n mat.setTranslation(origTranslation.multiplyInPlace(skelDimensionsRatio));\n // use original when root bone, and no data for skelDimensionsRatio\n }\n else {\n mat = orig.value;\n }\n }\n else {\n mat = orig.value;\n }\n destKeys.push({ frame: orig.frame + frameOffset, value: mat });\n }\n }\n this.animations[0].createRange(rangeName, from + frameOffset, to + frameOffset);\n return true;\n };\n }\n if (!sceneClass) {\n return;\n }\n sceneClass.prototype._animate = function (customDeltaTime) {\n if (!this.animationsEnabled) {\n return;\n }\n // Getting time\n const now = PrecisionDate.Now;\n if (!this._animationTimeLast) {\n if (this._pendingData.length > 0) {\n return;\n }\n this._animationTimeLast = now;\n }\n this.deltaTime = customDeltaTime !== undefined ? customDeltaTime : this.useConstantAnimationDeltaTime ? 16.0 : (now - this._animationTimeLast) * this.animationTimeScale;\n this._animationTimeLast = now;\n const animatables = this._activeAnimatables;\n if (animatables.length === 0) {\n return;\n }\n this._animationTime += this.deltaTime;\n const animationTime = this._animationTime;\n for (let index = 0; index < animatables.length; index++) {\n const animatable = animatables[index];\n if (!animatable._animate(animationTime) && animatable.disposeOnEnd) {\n index--; // Array was updated\n }\n }\n // Late animation bindings\n ProcessLateAnimationBindings(this);\n };\n sceneClass.prototype.sortActiveAnimatables = function () {\n this._activeAnimatables.sort((a, b) => {\n return a.playOrder - b.playOrder;\n });\n };\n sceneClass.prototype.beginWeightedAnimation = function (target, from, to, weight = 1.0, loop, speedRatio = 1.0, onAnimationEnd, animatable, targetMask, onAnimationLoop, isAdditive = false) {\n const returnedAnimatable = this.beginAnimation(target, from, to, loop, speedRatio, onAnimationEnd, animatable, false, targetMask, onAnimationLoop, isAdditive);\n returnedAnimatable.weight = weight;\n return returnedAnimatable;\n };\n sceneClass.prototype.beginAnimation = function (target, from, to, loop, speedRatio = 1.0, onAnimationEnd, animatable, stopCurrent = true, targetMask, onAnimationLoop, isAdditive = false) {\n // get speed speedRatio, to and from, based on the sign and value(s)\n if (speedRatio < 0) {\n const tmp = from;\n from = to;\n to = tmp;\n speedRatio = -speedRatio;\n }\n // if from > to switch speed ratio\n if (from > to) {\n speedRatio = -speedRatio;\n }\n if (stopCurrent) {\n this.stopAnimation(target, undefined, targetMask);\n }\n if (!animatable) {\n animatable = new Animatable(this, target, from, to, loop, speedRatio, onAnimationEnd, undefined, onAnimationLoop, isAdditive);\n }\n const shouldRunTargetAnimations = targetMask ? targetMask(target) : true;\n // Local animations\n if (target.animations && shouldRunTargetAnimations) {\n animatable.appendAnimations(target, target.animations);\n }\n // Children animations\n if (target.getAnimatables) {\n const animatables = target.getAnimatables();\n for (let index = 0; index < animatables.length; index++) {\n this.beginAnimation(animatables[index], from, to, loop, speedRatio, onAnimationEnd, animatable, stopCurrent, targetMask, onAnimationLoop);\n }\n }\n animatable.reset();\n return animatable;\n };\n sceneClass.prototype.beginHierarchyAnimation = function (target, directDescendantsOnly, from, to, loop, speedRatio = 1.0, onAnimationEnd, animatable, stopCurrent = true, targetMask, onAnimationLoop, isAdditive = false) {\n const children = target.getDescendants(directDescendantsOnly);\n const result = [];\n result.push(this.beginAnimation(target, from, to, loop, speedRatio, onAnimationEnd, animatable, stopCurrent, targetMask, undefined, isAdditive));\n for (const child of children) {\n result.push(this.beginAnimation(child, from, to, loop, speedRatio, onAnimationEnd, animatable, stopCurrent, targetMask, undefined, isAdditive));\n }\n return result;\n };\n sceneClass.prototype.beginDirectAnimation = function (target, animations, from, to, loop, speedRatio = 1.0, onAnimationEnd, onAnimationLoop, isAdditive = false) {\n // get speed speedRatio, to and from, based on the sign and value(s)\n if (speedRatio < 0) {\n const tmp = from;\n from = to;\n to = tmp;\n speedRatio = -speedRatio;\n }\n // if from > to switch speed ratio\n if (from > to) {\n speedRatio = -speedRatio;\n }\n const animatable = new Animatable(this, target, from, to, loop, speedRatio, onAnimationEnd, animations, onAnimationLoop, isAdditive);\n return animatable;\n };\n sceneClass.prototype.beginDirectHierarchyAnimation = function (target, directDescendantsOnly, animations, from, to, loop, speedRatio, onAnimationEnd, onAnimationLoop, isAdditive = false) {\n const children = target.getDescendants(directDescendantsOnly);\n const result = [];\n result.push(this.beginDirectAnimation(target, animations, from, to, loop, speedRatio, onAnimationEnd, onAnimationLoop, isAdditive));\n for (const child of children) {\n result.push(this.beginDirectAnimation(child, animations, from, to, loop, speedRatio, onAnimationEnd, onAnimationLoop, isAdditive));\n }\n return result;\n };\n sceneClass.prototype.getAnimatableByTarget = function (target) {\n for (let index = 0; index < this._activeAnimatables.length; index++) {\n if (this._activeAnimatables[index].target === target) {\n return this._activeAnimatables[index];\n }\n }\n return null;\n };\n sceneClass.prototype.getAllAnimatablesByTarget = function (target) {\n const result = [];\n for (let index = 0; index < this._activeAnimatables.length; index++) {\n if (this._activeAnimatables[index].target === target) {\n result.push(this._activeAnimatables[index]);\n }\n }\n return result;\n };\n sceneClass.prototype.stopAnimation = function (target, animationName, targetMask) {\n const animatables = this.getAllAnimatablesByTarget(target);\n for (const animatable of animatables) {\n animatable.stop(animationName, targetMask);\n }\n };\n sceneClass.prototype.stopAllAnimations = function () {\n if (this._activeAnimatables) {\n for (let i = 0; i < this._activeAnimatables.length; i++) {\n this._activeAnimatables[i].stop(undefined, undefined, true);\n }\n this._activeAnimatables.length = 0;\n }\n for (const group of this.animationGroups) {\n group.stop();\n }\n };\n}\n//# sourceMappingURL=animatable.core.js.map","import { Bone } from \"../Bones/bone\";\nimport { AddAnimationExtensions } from \"./animatable.core\";\nimport { Scene } from \"core/scene\";\nexport * from \"./animatable.core\";\n// Connect everything!\nAddAnimationExtensions(Scene, Bone);\n//# sourceMappingURL=animatable.js.map","import { Animation } from \"./animation\";\nimport { Observable } from \"../Misc/observable\";\nimport { EngineStore } from \"../Engines/engineStore\";\nimport { Tags } from \"../Misc/tags\";\nimport \"./animatable\";\n/**\n * This class defines the direct association between an animation and a target\n */\nexport class TargetedAnimation {\n /**\n * Returns the string \"TargetedAnimation\"\n * @returns \"TargetedAnimation\"\n */\n getClassName() {\n return \"TargetedAnimation\";\n }\n /**\n * Serialize the object\n * @returns the JSON object representing the current entity\n */\n serialize() {\n const serializationObject = {};\n serializationObject.animation = this.animation.serialize();\n serializationObject.targetId = this.target.id;\n return serializationObject;\n }\n}\n/**\n * Use this class to create coordinated animations on multiple targets\n */\nexport class AnimationGroup {\n /**\n * Gets or sets the mask associated with this animation group. This mask is used to filter which objects should be animated.\n */\n get mask() {\n return this._mask;\n }\n set mask(value) {\n if (this._mask === value) {\n return;\n }\n this._mask = value;\n this.syncWithMask(true);\n }\n /**\n * Makes sure that the animations are either played or stopped according to the animation group mask.\n * Note however that the call won't have any effect if the animation group has not been started yet.\n * @param forceUpdate If true, forces to loop over the animatables even if no mask is defined (used internally, you shouldn't need to use it). Default: false.\n */\n syncWithMask(forceUpdate = false) {\n if (!this.mask && !forceUpdate) {\n this._numActiveAnimatables = this._targetedAnimations.length;\n return;\n }\n this._numActiveAnimatables = 0;\n for (let i = 0; i < this._animatables.length; ++i) {\n const animatable = this._animatables[i];\n if (!this.mask || this.mask.disabled || this.mask.retainsTarget(animatable.target.name)) {\n this._numActiveAnimatables++;\n if (animatable.paused) {\n animatable.restart();\n }\n }\n else {\n if (!animatable.paused) {\n animatable.pause();\n }\n }\n }\n }\n /**\n * Removes all animations for the targets not retained by the animation group mask.\n * Use this function if you know you won't need those animations anymore and if you want to free memory.\n */\n removeUnmaskedAnimations() {\n if (!this.mask || this.mask.disabled) {\n return;\n }\n // Removes all animatables (in case the animation group has already been started)\n for (let i = 0; i < this._animatables.length; ++i) {\n const animatable = this._animatables[i];\n if (!this.mask.retainsTarget(animatable.target.name)) {\n animatable.stop();\n this._animatables.splice(i, 1);\n --i;\n }\n }\n // Removes the targeted animations\n for (let index = 0; index < this._targetedAnimations.length; index++) {\n const targetedAnimation = this._targetedAnimations[index];\n if (!this.mask.retainsTarget(targetedAnimation.target.name)) {\n this._targetedAnimations.splice(index, 1);\n --index;\n }\n }\n }\n /**\n * Gets or sets the first frame\n */\n get from() {\n return this._from;\n }\n set from(value) {\n if (this._from === value) {\n return;\n }\n this._from = value;\n for (let index = 0; index < this._animatables.length; index++) {\n const animatable = this._animatables[index];\n animatable.fromFrame = this._from;\n }\n }\n /**\n * Gets or sets the last frame\n */\n get to() {\n return this._to;\n }\n set to(value) {\n if (this._to === value) {\n return;\n }\n this._to = value;\n for (let index = 0; index < this._animatables.length; index++) {\n const animatable = this._animatables[index];\n animatable.toFrame = this._to;\n }\n }\n /**\n * Define if the animations are started\n */\n get isStarted() {\n return this._isStarted;\n }\n /**\n * Gets a value indicating that the current group is playing\n */\n get isPlaying() {\n return this._isStarted && !this._isPaused;\n }\n /**\n * Gets or sets the speed ratio to use for all animations\n */\n get speedRatio() {\n return this._speedRatio;\n }\n /**\n * Gets or sets the speed ratio to use for all animations\n */\n set speedRatio(value) {\n if (this._speedRatio === value) {\n return;\n }\n this._speedRatio = value;\n for (let index = 0; index < this._animatables.length; index++) {\n const animatable = this._animatables[index];\n animatable.speedRatio = this._speedRatio;\n }\n }\n /**\n * Gets or sets if all animations should loop or not\n */\n get loopAnimation() {\n return this._loopAnimation;\n }\n set loopAnimation(value) {\n if (this._loopAnimation === value) {\n return;\n }\n this._loopAnimation = value;\n for (let index = 0; index < this._animatables.length; index++) {\n const animatable = this._animatables[index];\n animatable.loopAnimation = this._loopAnimation;\n }\n }\n /**\n * Gets or sets if all animations should be evaluated additively\n */\n get isAdditive() {\n return this._isAdditive;\n }\n set isAdditive(value) {\n if (this._isAdditive === value) {\n return;\n }\n this._isAdditive = value;\n for (let index = 0; index < this._animatables.length; index++) {\n const animatable = this._animatables[index];\n animatable.isAdditive = this._isAdditive;\n }\n }\n /**\n * Gets or sets the weight to apply to all animations of the group\n */\n get weight() {\n return this._weight;\n }\n set weight(value) {\n if (this._weight === value) {\n return;\n }\n this._weight = value;\n this.setWeightForAllAnimatables(this._weight);\n }\n /**\n * Gets the targeted animations for this animation group\n */\n get targetedAnimations() {\n return this._targetedAnimations;\n }\n /**\n * returning the list of animatables controlled by this animation group.\n */\n get animatables() {\n return this._animatables;\n }\n /**\n * Gets the list of target animations\n */\n get children() {\n return this._targetedAnimations;\n }\n /**\n * Gets or sets the order of play of the animation group (default: 0)\n */\n get playOrder() {\n return this._playOrder;\n }\n set playOrder(value) {\n if (this._playOrder === value) {\n return;\n }\n this._playOrder = value;\n if (this._animatables.length > 0) {\n for (let i = 0; i < this._animatables.length; i++) {\n this._animatables[i].playOrder = this._playOrder;\n }\n this._scene.sortActiveAnimatables();\n }\n }\n /**\n * Allows the animations of the animation group to blend with current running animations\n * Note that a null value means that each animation will use their own existing blending configuration (Animation.enableBlending)\n */\n get enableBlending() {\n return this._enableBlending;\n }\n set enableBlending(value) {\n if (this._enableBlending === value) {\n return;\n }\n this._enableBlending = value;\n if (value !== null) {\n for (let i = 0; i < this._targetedAnimations.length; ++i) {\n this._targetedAnimations[i].animation.enableBlending = value;\n }\n }\n }\n /**\n * Gets or sets the animation blending speed\n * Note that a null value means that each animation will use their own existing blending configuration (Animation.blendingSpeed)\n */\n get blendingSpeed() {\n return this._blendingSpeed;\n }\n set blendingSpeed(value) {\n if (this._blendingSpeed === value) {\n return;\n }\n this._blendingSpeed = value;\n if (value !== null) {\n for (let i = 0; i < this._targetedAnimations.length; ++i) {\n this._targetedAnimations[i].animation.blendingSpeed = value;\n }\n }\n }\n /**\n * Gets the length (in seconds) of the animation group\n * This function assumes that all animations are played at the same framePerSecond speed!\n * Note: you can only call this method after you've added at least one targeted animation!\n * @param from Starting frame range (default is AnimationGroup.from)\n * @param to Ending frame range (default is AnimationGroup.to)\n * @returns The length in seconds\n */\n getLength(from, to) {\n from = from ?? this._from;\n to = to ?? this._to;\n const fps = this.targetedAnimations[0].animation.framePerSecond * this._speedRatio;\n return (to - from) / fps;\n }\n /**\n * Merge the array of animation groups into a new animation group\n * @param animationGroups List of animation groups to merge\n * @param disposeSource If true, animation groups will be disposed after being merged (default: true)\n * @param normalize If true, animation groups will be normalized before being merged, so that all animations have the same \"from\" and \"to\" frame (default: false)\n * @param weight Weight for the new animation group. If not provided, it will inherit the weight from the first animation group of the array\n * @returns The new animation group or null if no animation groups were passed\n */\n static MergeAnimationGroups(animationGroups, disposeSource = true, normalize = false, weight) {\n if (animationGroups.length === 0) {\n return null;\n }\n weight = weight ?? animationGroups[0].weight;\n let beginFrame = Number.MAX_VALUE;\n let endFrame = -Number.MAX_VALUE;\n if (normalize) {\n for (const animationGroup of animationGroups) {\n if (animationGroup.from < beginFrame) {\n beginFrame = animationGroup.from;\n }\n if (animationGroup.to > endFrame) {\n endFrame = animationGroup.to;\n }\n }\n }\n const mergedAnimationGroup = new AnimationGroup(animationGroups[0].name + \"_merged\", animationGroups[0]._scene, weight);\n for (const animationGroup of animationGroups) {\n if (normalize) {\n animationGroup.normalize(beginFrame, endFrame);\n }\n for (const targetedAnimation of animationGroup.targetedAnimations) {\n mergedAnimationGroup.addTargetedAnimation(targetedAnimation.animation, targetedAnimation.target);\n }\n if (disposeSource) {\n animationGroup.dispose();\n }\n }\n return mergedAnimationGroup;\n }\n /**\n * Instantiates a new Animation Group.\n * This helps managing several animations at once.\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/groupAnimations\n * @param name Defines the name of the group\n * @param scene Defines the scene the group belongs to\n * @param weight Defines the weight to use for animations in the group (-1.0 by default, meaning \"no weight\")\n * @param playOrder Defines the order of play of the animation group (default is 0)\n */\n constructor(\n /** The name of the animation group */\n name, scene = null, weight = -1, playOrder = 0) {\n this.name = name;\n this._targetedAnimations = new Array();\n this._animatables = new Array();\n this._from = Number.MAX_VALUE;\n this._to = -Number.MAX_VALUE;\n this._speedRatio = 1;\n this._loopAnimation = false;\n this._isAdditive = false;\n this._weight = -1;\n this._playOrder = 0;\n this._enableBlending = null;\n this._blendingSpeed = null;\n this._numActiveAnimatables = 0;\n this._shouldStart = true;\n /** @internal */\n this._parentContainer = null;\n /**\n * This observable will notify when one animation have ended\n */\n this.onAnimationEndObservable = new Observable();\n /**\n * Observer raised when one animation loops\n */\n this.onAnimationLoopObservable = new Observable();\n /**\n * Observer raised when all animations have looped\n */\n this.onAnimationGroupLoopObservable = new Observable();\n /**\n * This observable will notify when all animations have ended.\n */\n this.onAnimationGroupEndObservable = new Observable();\n /**\n * This observable will notify when all animations have paused.\n */\n this.onAnimationGroupPauseObservable = new Observable();\n /**\n * This observable will notify when all animations are playing.\n */\n this.onAnimationGroupPlayObservable = new Observable();\n /**\n * Gets or sets an object used to store user defined information for the node\n */\n this.metadata = null;\n this._mask = null;\n this._animationLoopFlags = [];\n this._scene = scene || EngineStore.LastCreatedScene;\n this._weight = weight;\n this._playOrder = playOrder;\n this.uniqueId = this._scene.getUniqueId();\n this._scene.addAnimationGroup(this);\n }\n /**\n * Add an animation (with its target) in the group\n * @param animation defines the animation we want to add\n * @param target defines the target of the animation\n * @returns the TargetedAnimation object\n */\n addTargetedAnimation(animation, target) {\n const targetedAnimation = new TargetedAnimation();\n targetedAnimation.animation = animation;\n targetedAnimation.target = target;\n const keys = animation.getKeys();\n if (this._from > keys[0].frame) {\n this._from = keys[0].frame;\n }\n if (this._to < keys[keys.length - 1].frame) {\n this._to = keys[keys.length - 1].frame;\n }\n if (this._enableBlending !== null) {\n animation.enableBlending = this._enableBlending;\n }\n if (this._blendingSpeed !== null) {\n animation.blendingSpeed = this._blendingSpeed;\n }\n this._targetedAnimations.push(targetedAnimation);\n this._shouldStart = true;\n return targetedAnimation;\n }\n /**\n * Remove an animation from the group\n * @param animation defines the animation we want to remove\n */\n removeTargetedAnimation(animation) {\n for (let index = this._targetedAnimations.length - 1; index > -1; index--) {\n const targetedAnimation = this._targetedAnimations[index];\n if (targetedAnimation.animation === animation) {\n this._targetedAnimations.splice(index, 1);\n }\n }\n }\n /**\n * This function will normalize every animation in the group to make sure they all go from beginFrame to endFrame\n * It can add constant keys at begin or end\n * @param beginFrame defines the new begin frame for all animations or the smallest begin frame of all animations if null (defaults to null)\n * @param endFrame defines the new end frame for all animations or the largest end frame of all animations if null (defaults to null)\n * @returns the animation group\n */\n normalize(beginFrame = null, endFrame = null) {\n if (beginFrame == null) {\n beginFrame = this._from;\n }\n if (endFrame == null) {\n endFrame = this._to;\n }\n for (let index = 0; index < this._targetedAnimations.length; index++) {\n const targetedAnimation = this._targetedAnimations[index];\n const keys = targetedAnimation.animation.getKeys();\n const startKey = keys[0];\n const endKey = keys[keys.length - 1];\n if (startKey.frame > beginFrame) {\n const newKey = {\n frame: beginFrame,\n value: startKey.value,\n inTangent: startKey.inTangent,\n outTangent: startKey.outTangent,\n interpolation: startKey.interpolation,\n };\n keys.splice(0, 0, newKey);\n }\n if (endKey.frame < endFrame) {\n const newKey = {\n frame: endFrame,\n value: endKey.value,\n inTangent: endKey.inTangent,\n outTangent: endKey.outTangent,\n interpolation: endKey.interpolation,\n };\n keys.push(newKey);\n }\n }\n this._from = beginFrame;\n this._to = endFrame;\n return this;\n }\n _processLoop(animatable, targetedAnimation, index) {\n animatable.onAnimationLoop = () => {\n this.onAnimationLoopObservable.notifyObservers(targetedAnimation);\n if (this._animationLoopFlags[index]) {\n return;\n }\n this._animationLoopFlags[index] = true;\n this._animationLoopCount++;\n if (this._animationLoopCount === this._numActiveAnimatables) {\n this.onAnimationGroupLoopObservable.notifyObservers(this);\n this._animationLoopCount = 0;\n this._animationLoopFlags.length = 0;\n }\n };\n }\n /**\n * Start all animations on given targets\n * @param loop defines if animations must loop\n * @param speedRatio defines the ratio to apply to animation speed (1 by default)\n * @param from defines the from key (optional)\n * @param to defines the to key (optional)\n * @param isAdditive defines the additive state for the resulting animatables (optional)\n * @returns the current animation group\n */\n start(loop = false, speedRatio = 1, from, to, isAdditive) {\n if (this._isStarted || this._targetedAnimations.length === 0) {\n return this;\n }\n this._loopAnimation = loop;\n this._shouldStart = false;\n this._animationLoopCount = 0;\n this._animationLoopFlags.length = 0;\n for (let index = 0; index < this._targetedAnimations.length; index++) {\n const targetedAnimation = this._targetedAnimations[index];\n const animatable = this._scene.beginDirectAnimation(targetedAnimation.target, [targetedAnimation.animation], from !== undefined ? from : this._from, to !== undefined ? to : this._to, loop, speedRatio, undefined, undefined, isAdditive !== undefined ? isAdditive : this._isAdditive);\n animatable.weight = this._weight;\n animatable.playOrder = this._playOrder;\n animatable.onAnimationEnd = () => {\n this.onAnimationEndObservable.notifyObservers(targetedAnimation);\n this._checkAnimationGroupEnded(animatable);\n };\n this._processLoop(animatable, targetedAnimation, index);\n this._animatables.push(animatable);\n }\n this.syncWithMask();\n this._scene.sortActiveAnimatables();\n this._speedRatio = speedRatio;\n this._isStarted = true;\n this._isPaused = false;\n this.onAnimationGroupPlayObservable.notifyObservers(this);\n return this;\n }\n /**\n * Pause all animations\n * @returns the animation group\n */\n pause() {\n if (!this._isStarted) {\n return this;\n }\n this._isPaused = true;\n for (let index = 0; index < this._animatables.length; index++) {\n const animatable = this._animatables[index];\n animatable.pause();\n }\n this.onAnimationGroupPauseObservable.notifyObservers(this);\n return this;\n }\n /**\n * Play all animations to initial state\n * This function will start() the animations if they were not started or will restart() them if they were paused\n * @param loop defines if animations must loop\n * @returns the animation group\n */\n play(loop) {\n // only if there are animatable available\n if (this.isStarted && this._animatables.length && !this._shouldStart) {\n if (loop !== undefined) {\n this.loopAnimation = loop;\n }\n this.restart();\n }\n else {\n this.stop();\n this.start(loop, this._speedRatio);\n }\n return this;\n }\n /**\n * Reset all animations to initial state\n * @returns the animation group\n */\n reset() {\n if (!this._isStarted) {\n this.play();\n this.goToFrame(0);\n this.stop(true);\n return this;\n }\n for (let index = 0; index < this._animatables.length; index++) {\n const animatable = this._animatables[index];\n animatable.reset();\n }\n return this;\n }\n /**\n * Restart animations from after pausing it\n * @returns the animation group\n */\n restart() {\n if (!this._isStarted) {\n return this;\n }\n for (let index = 0; index < this._animatables.length; index++) {\n const animatable = this._animatables[index];\n animatable.restart();\n }\n this.syncWithMask();\n this._isPaused = false;\n this.onAnimationGroupPlayObservable.notifyObservers(this);\n return this;\n }\n /**\n * Stop all animations\n * @param skipOnAnimationEnd defines if the system should not raise onAnimationEnd. Default is false\n * @returns the animation group\n */\n stop(skipOnAnimationEnd = false) {\n if (!this._isStarted) {\n return this;\n }\n const list = this._animatables.slice();\n for (let index = 0; index < list.length; index++) {\n list[index].stop(undefined, undefined, true, skipOnAnimationEnd);\n }\n // We will take care of removing all stopped animatables\n let curIndex = 0;\n for (let index = 0; index < this._scene._activeAnimatables.length; index++) {\n const animatable = this._scene._activeAnimatables[index];\n if (animatable._runtimeAnimations.length > 0) {\n this._scene._activeAnimatables[curIndex++] = animatable;\n }\n else if (skipOnAnimationEnd) {\n // We normally rely on the onAnimationEnd callback (assigned in the start function) to be notified when an animatable\n // ends and should be removed from the active animatables array. However, if the animatable is stopped with the skipOnAnimationEnd\n // flag set to true, then we need to explicitly remove it from the active animatables array.\n this._checkAnimationGroupEnded(animatable, skipOnAnimationEnd);\n }\n }\n this._scene._activeAnimatables.length = curIndex;\n this._isStarted = false;\n return this;\n }\n /**\n * Set animation weight for all animatables\n *\n * @since 6.12.4\n * You can pass the weight to the AnimationGroup constructor, or use the weight property to set it after the group has been created,\n * making it easier to define the overall animation weight than calling setWeightForAllAnimatables() after the animation group has been started\n * @param weight defines the weight to use\n * @returns the animationGroup\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#animation-weights\n */\n setWeightForAllAnimatables(weight) {\n for (let index = 0; index < this._animatables.length; index++) {\n const animatable = this._animatables[index];\n animatable.weight = weight;\n }\n return this;\n }\n /**\n * Synchronize and normalize all animatables with a source animatable\n * @param root defines the root animatable to synchronize with (null to stop synchronizing)\n * @returns the animationGroup\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#animation-weights\n */\n syncAllAnimationsWith(root) {\n for (let index = 0; index < this._animatables.length; index++) {\n const animatable = this._animatables[index];\n animatable.syncWith(root);\n }\n return this;\n }\n /**\n * Goes to a specific frame in this animation group. Note that the animation group must be in playing or paused status\n * @param frame the frame number to go to\n * @param useWeight defines whether the animation weight should be applied to the image to be jumped to (false by default)\n * @returns the animationGroup\n */\n goToFrame(frame, useWeight = false) {\n if (!this._isStarted) {\n return this;\n }\n for (let index = 0; index < this._animatables.length; index++) {\n const animatable = this._animatables[index];\n animatable.goToFrame(frame, useWeight);\n }\n return this;\n }\n /**\n * Helper to get the current frame. This will return 0 if the AnimationGroup is not running, and it might return wrong results if multiple animations are running in different frames.\n * @returns current animation frame.\n */\n getCurrentFrame() {\n return this.animatables[0]?.masterFrame || 0;\n }\n /**\n * Dispose all associated resources\n */\n dispose() {\n if (this.isStarted) {\n this.stop();\n }\n this._targetedAnimations.length = 0;\n this._animatables.length = 0;\n // Remove from scene\n const index = this._scene.animationGroups.indexOf(this);\n if (index > -1) {\n this._scene.animationGroups.splice(index, 1);\n }\n if (this._parentContainer) {\n const index = this._parentContainer.animationGroups.indexOf(this);\n if (index > -1) {\n this._parentContainer.animationGroups.splice(index, 1);\n }\n this._parentContainer = null;\n }\n this.onAnimationEndObservable.clear();\n this.onAnimationGroupEndObservable.clear();\n this.onAnimationGroupPauseObservable.clear();\n this.onAnimationGroupPlayObservable.clear();\n this.onAnimationLoopObservable.clear();\n this.onAnimationGroupLoopObservable.clear();\n }\n _checkAnimationGroupEnded(animatable, skipOnAnimationEnd = false) {\n // animatable should be taken out of the array\n const idx = this._animatables.indexOf(animatable);\n if (idx > -1) {\n this._animatables.splice(idx, 1);\n }\n // all animatables were removed? animation group ended!\n if (this._animatables.length === this._targetedAnimations.length - this._numActiveAnimatables) {\n this._isStarted = false;\n if (!skipOnAnimationEnd) {\n this.onAnimationGroupEndObservable.notifyObservers(this);\n }\n this._animatables.length = 0;\n }\n }\n /**\n * Clone the current animation group and returns a copy\n * @param newName defines the name of the new group\n * @param targetConverter defines an optional function used to convert current animation targets to new ones\n * @param cloneAnimations defines if the animations should be cloned or referenced\n * @returns the new animation group\n */\n clone(newName, targetConverter, cloneAnimations = false) {\n const newGroup = new AnimationGroup(newName || this.name, this._scene, this._weight, this._playOrder);\n newGroup._from = this.from;\n newGroup._to = this.to;\n newGroup._speedRatio = this.speedRatio;\n newGroup._loopAnimation = this.loopAnimation;\n newGroup._isAdditive = this.isAdditive;\n newGroup._enableBlending = this.enableBlending;\n newGroup._blendingSpeed = this.blendingSpeed;\n newGroup.metadata = this.metadata;\n newGroup.mask = this.mask;\n for (const targetAnimation of this._targetedAnimations) {\n newGroup.addTargetedAnimation(cloneAnimations ? targetAnimation.animation.clone() : targetAnimation.animation, targetConverter ? targetConverter(targetAnimation.target) : targetAnimation.target);\n }\n return newGroup;\n }\n /**\n * Serializes the animationGroup to an object\n * @returns Serialized object\n */\n serialize() {\n const serializationObject = {};\n serializationObject.name = this.name;\n serializationObject.from = this.from;\n serializationObject.to = this.to;\n serializationObject.speedRatio = this.speedRatio;\n serializationObject.loopAnimation = this.loopAnimation;\n serializationObject.isAdditive = this.isAdditive;\n serializationObject.weight = this.weight;\n serializationObject.playOrder = this.playOrder;\n serializationObject.enableBlending = this.enableBlending;\n serializationObject.blendingSpeed = this.blendingSpeed;\n serializationObject.targetedAnimations = [];\n for (let targetedAnimationIndex = 0; targetedAnimationIndex < this.targetedAnimations.length; targetedAnimationIndex++) {\n const targetedAnimation = this.targetedAnimations[targetedAnimationIndex];\n serializationObject.targetedAnimations[targetedAnimationIndex] = targetedAnimation.serialize();\n }\n if (Tags && Tags.HasTags(this)) {\n serializationObject.tags = Tags.GetTags(this);\n }\n // Metadata\n if (this.metadata) {\n serializationObject.metadata = this.metadata;\n }\n return serializationObject;\n }\n // Statics\n /**\n * Returns a new AnimationGroup object parsed from the source provided.\n * @param parsedAnimationGroup defines the source\n * @param scene defines the scene that will receive the animationGroup\n * @returns a new AnimationGroup\n */\n static Parse(parsedAnimationGroup, scene) {\n const animationGroup = new AnimationGroup(parsedAnimationGroup.name, scene, parsedAnimationGroup.weight, parsedAnimationGroup.playOrder);\n for (let i = 0; i < parsedAnimationGroup.targetedAnimations.length; i++) {\n const targetedAnimation = parsedAnimationGroup.targetedAnimations[i];\n const animation = Animation.Parse(targetedAnimation.animation);\n const id = targetedAnimation.targetId;\n if (targetedAnimation.animation.property === \"influence\") {\n // morph target animation\n const morphTarget = scene.getMorphTargetById(id);\n if (morphTarget) {\n animationGroup.addTargetedAnimation(animation, morphTarget);\n }\n }\n else {\n const targetNode = scene.getNodeById(id);\n if (targetNode != null) {\n animationGroup.addTargetedAnimation(animation, targetNode);\n }\n }\n }\n if (Tags) {\n Tags.AddTagsTo(animationGroup, parsedAnimationGroup.tags);\n }\n if (parsedAnimationGroup.from !== null && parsedAnimationGroup.to !== null) {\n animationGroup.normalize(parsedAnimationGroup.from, parsedAnimationGroup.to);\n }\n if (parsedAnimationGroup.speedRatio !== undefined) {\n animationGroup._speedRatio = parsedAnimationGroup.speedRatio;\n }\n if (parsedAnimationGroup.loopAnimation !== undefined) {\n animationGroup._loopAnimation = parsedAnimationGroup.loopAnimation;\n }\n if (parsedAnimationGroup.isAdditive !== undefined) {\n animationGroup._isAdditive = parsedAnimationGroup.isAdditive;\n }\n if (parsedAnimationGroup.weight !== undefined) {\n animationGroup._weight = parsedAnimationGroup.weight;\n }\n if (parsedAnimationGroup.playOrder !== undefined) {\n animationGroup._playOrder = parsedAnimationGroup.playOrder;\n }\n if (parsedAnimationGroup.enableBlending !== undefined) {\n animationGroup._enableBlending = parsedAnimationGroup.enableBlending;\n }\n if (parsedAnimationGroup.blendingSpeed !== undefined) {\n animationGroup._blendingSpeed = parsedAnimationGroup.blendingSpeed;\n }\n if (parsedAnimationGroup.metadata !== undefined) {\n animationGroup.metadata = parsedAnimationGroup.metadata;\n }\n return animationGroup;\n }\n /** @internal */\n static MakeAnimationAdditive(sourceAnimationGroup, referenceFrameOrOptions, range, cloneOriginal = false, clonedName) {\n let options;\n if (typeof referenceFrameOrOptions === \"object\") {\n options = referenceFrameOrOptions;\n }\n else {\n options = {\n referenceFrame: referenceFrameOrOptions,\n range: range,\n cloneOriginalAnimationGroup: cloneOriginal,\n clonedAnimationName: clonedName,\n };\n }\n let animationGroup = sourceAnimationGroup;\n if (options.cloneOriginalAnimationGroup) {\n animationGroup = sourceAnimationGroup.clone(options.clonedAnimationGroupName || animationGroup.name);\n }\n const targetedAnimations = animationGroup.targetedAnimations;\n for (let index = 0; index < targetedAnimations.length; index++) {\n const targetedAnimation = targetedAnimations[index];\n targetedAnimation.animation = Animation.MakeAnimationAdditive(targetedAnimation.animation, options);\n }\n animationGroup.isAdditive = true;\n if (options.clipKeys) {\n // We need to recalculate the from/to frames for the animation group because some keys may have been removed\n let from = Number.MAX_VALUE;\n let to = -Number.MAX_VALUE;\n const targetedAnimations = animationGroup.targetedAnimations;\n for (let index = 0; index < targetedAnimations.length; index++) {\n const targetedAnimation = targetedAnimations[index];\n const animation = targetedAnimation.animation;\n const keys = animation.getKeys();\n if (from > keys[0].frame) {\n from = keys[0].frame;\n }\n if (to < keys[keys.length - 1].frame) {\n to = keys[keys.length - 1].frame;\n }\n }\n animationGroup._from = from;\n animationGroup._to = to;\n }\n return animationGroup;\n }\n /**\n * Creates a new animation, keeping only the keys that are inside a given key range\n * @param sourceAnimationGroup defines the animation group on which to operate\n * @param fromKey defines the lower bound of the range\n * @param toKey defines the upper bound of the range\n * @param name defines the name of the new animation group. If not provided, use the same name as animationGroup\n * @param dontCloneAnimations defines whether or not the animations should be cloned before clipping the keys. Default is false, so animations will be cloned\n * @returns a new animation group stripped from all the keys outside the given range\n */\n static ClipKeys(sourceAnimationGroup, fromKey, toKey, name, dontCloneAnimations) {\n const animationGroup = sourceAnimationGroup.clone(name || sourceAnimationGroup.name);\n return AnimationGroup.ClipKeysInPlace(animationGroup, fromKey, toKey, dontCloneAnimations);\n }\n /**\n * Updates an existing animation, keeping only the keys that are inside a given key range\n * @param animationGroup defines the animation group on which to operate\n * @param fromKey defines the lower bound of the range\n * @param toKey defines the upper bound of the range\n * @param dontCloneAnimations defines whether or not the animations should be cloned before clipping the keys. Default is false, so animations will be cloned\n * @returns the animationGroup stripped from all the keys outside the given range\n */\n static ClipKeysInPlace(animationGroup, fromKey, toKey, dontCloneAnimations) {\n return AnimationGroup.ClipInPlace(animationGroup, fromKey, toKey, dontCloneAnimations, false);\n }\n /**\n * Creates a new animation, keeping only the frames that are inside a given frame range\n * @param sourceAnimationGroup defines the animation group on which to operate\n * @param fromFrame defines the lower bound of the range\n * @param toFrame defines the upper bound of the range\n * @param name defines the name of the new animation group. If not provided, use the same name as animationGroup\n * @param dontCloneAnimations defines whether or not the animations should be cloned before clipping the frames. Default is false, so animations will be cloned\n * @returns a new animation group stripped from all the frames outside the given range\n */\n static ClipFrames(sourceAnimationGroup, fromFrame, toFrame, name, dontCloneAnimations) {\n const animationGroup = sourceAnimationGroup.clone(name || sourceAnimationGroup.name);\n return AnimationGroup.ClipFramesInPlace(animationGroup, fromFrame, toFrame, dontCloneAnimations);\n }\n /**\n * Updates an existing animation, keeping only the frames that are inside a given frame range\n * @param animationGroup defines the animation group on which to operate\n * @param fromFrame defines the lower bound of the range\n * @param toFrame defines the upper bound of the range\n * @param dontCloneAnimations defines whether or not the animations should be cloned before clipping the frames. Default is false, so animations will be cloned\n * @returns the animationGroup stripped from all the frames outside the given range\n */\n static ClipFramesInPlace(animationGroup, fromFrame, toFrame, dontCloneAnimations) {\n return AnimationGroup.ClipInPlace(animationGroup, fromFrame, toFrame, dontCloneAnimations, true);\n }\n /**\n * Updates an existing animation, keeping only the keys that are inside a given key or frame range\n * @param animationGroup defines the animation group on which to operate\n * @param start defines the lower bound of the range\n * @param end defines the upper bound of the range\n * @param dontCloneAnimations defines whether or not the animations should be cloned before clipping the keys. Default is false, so animations will be cloned\n * @param useFrame defines if the range is defined by frame numbers or key indices (default is false which means use key indices)\n * @returns the animationGroup stripped from all the keys outside the given range\n */\n static ClipInPlace(animationGroup, start, end, dontCloneAnimations, useFrame = false) {\n let from = Number.MAX_VALUE;\n let to = -Number.MAX_VALUE;\n const targetedAnimations = animationGroup.targetedAnimations;\n for (let index = 0; index < targetedAnimations.length; index++) {\n const targetedAnimation = targetedAnimations[index];\n const animation = dontCloneAnimations ? targetedAnimation.animation : targetedAnimation.animation.clone();\n if (useFrame) {\n // Make sure we have keys corresponding to the bounds of the frame range\n animation.createKeyForFrame(start);\n animation.createKeyForFrame(end);\n }\n const keys = animation.getKeys();\n const newKeys = [];\n let startFrame = Number.MAX_VALUE;\n for (let k = 0; k < keys.length; k++) {\n const key = keys[k];\n if ((!useFrame && k >= start && k <= end) || (useFrame && key.frame >= start && key.frame <= end)) {\n const newKey = {\n frame: key.frame,\n value: key.value.clone ? key.value.clone() : key.value,\n inTangent: key.inTangent,\n outTangent: key.outTangent,\n interpolation: key.interpolation,\n lockedTangent: key.lockedTangent,\n };\n if (startFrame === Number.MAX_VALUE) {\n startFrame = newKey.frame;\n }\n newKey.frame -= startFrame;\n newKeys.push(newKey);\n }\n }\n if (newKeys.length === 0) {\n targetedAnimations.splice(index, 1);\n index--;\n continue;\n }\n if (from > newKeys[0].frame) {\n from = newKeys[0].frame;\n }\n if (to < newKeys[newKeys.length - 1].frame) {\n to = newKeys[newKeys.length - 1].frame;\n }\n animation.setKeys(newKeys, true);\n targetedAnimation.animation = animation; // in case the animation has been cloned\n }\n animationGroup._from = from;\n animationGroup._to = to;\n return animationGroup;\n }\n /**\n * Returns the string \"AnimationGroup\"\n * @returns \"AnimationGroup\"\n */\n getClassName() {\n return \"AnimationGroup\";\n }\n /**\n * Creates a detailed string about the object\n * @param fullDetails defines if the output string will support multiple levels of logging within scene loading\n * @returns a string representing the object\n */\n toString(fullDetails) {\n let ret = \"Name: \" + this.name;\n ret += \", type: \" + this.getClassName();\n if (fullDetails) {\n ret += \", from: \" + this._from;\n ret += \", to: \" + this._to;\n ret += \", isStarted: \" + this._isStarted;\n ret += \", speedRatio: \" + this._speedRatio;\n ret += \", targetedAnimations length: \" + this._targetedAnimations.length;\n ret += \", animatables length: \" + this._animatables;\n }\n return ret;\n }\n}\n//# sourceMappingURL=animationGroup.js.map"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{M as e,l as t,T as s,L as n,V as r,bt as i,a5 as o,a7 as a,bk as h,R as c,E as u,aY as d,Y as f}from"./index-DRbhrB0j.esm.min.js";e._instancedMeshFactory=(e,t)=>{const s=new l(e,t);if(t.instancedBuffers){s.instancedBuffers={};for(const e in t.instancedBuffers)s.instancedBuffers[e]=t.instancedBuffers[e]}return s};class l extends t{constructor(e,t){super(e,t.getScene()),this._indexInSourceMeshInstanceArray=-1,this._distanceToCamera=0,t.addInstance(this),this._sourceMesh=t,this._unIndexed=t._unIndexed,this.position.copyFrom(t.position),this.rotation.copyFrom(t.rotation),this.scaling.copyFrom(t.scaling),t.rotationQuaternion&&(this.rotationQuaternion=t.rotationQuaternion.clone()),this.animations=t.animations.slice();for(const e of t.getAnimationRanges())null!=e&&this.createAnimationRange(e.name,e.from,e.to);this.infiniteDistance=t.infiniteDistance,this.setPivotMatrix(t.getPivotMatrix()),this.refreshBoundingInfo(!0,!0),this._syncSubMeshes()}getClassName(){return"InstancedMesh"}get lightSources(){return this._sourceMesh._lightSources}_resyncLightSources(){}_resyncLightSource(){}_removeLightSource(){}get receiveShadows(){return this._sourceMesh.receiveShadows}set receiveShadows(e){this._sourceMesh?.receiveShadows!==e&&s.Warn("Setting receiveShadows on an instanced mesh has no effect")}get material(){return this._sourceMesh.material}set material(e){this._sourceMesh?.material!==e&&s.Warn("Setting material on an instanced mesh has no effect")}get visibility(){return this._sourceMesh.visibility}set visibility(e){this._sourceMesh?.visibility!==e&&s.Warn("Setting visibility on an instanced mesh has no effect")}get skeleton(){return this._sourceMesh.skeleton}set skeleton(e){this._sourceMesh?.skeleton!==e&&s.Warn("Setting skeleton on an instanced mesh has no effect")}get renderingGroupId(){return this._sourceMesh.renderingGroupId}set renderingGroupId(e){this._sourceMesh&&e!==this._sourceMesh.renderingGroupId&&n.Warn("Note - setting renderingGroupId of an instanced mesh has no effect on the scene")}getTotalVertices(){return this._sourceMesh?this._sourceMesh.getTotalVertices():0}getTotalIndices(){return this._sourceMesh.getTotalIndices()}get sourceMesh(){return this._sourceMesh}createInstance(e){return this._sourceMesh.createInstance(e)}isReady(e=!1){return this._sourceMesh.isReady(e,!0)}getVerticesData(e,t,s){return this._sourceMesh.getVerticesData(e,t,s)}copyVerticesData(e,t){this._sourceMesh.copyVerticesData(e,t)}setVerticesData(e,t,s,n){return this.sourceMesh&&this.sourceMesh.setVerticesData(e,t,s,n),this.sourceMesh}updateVerticesData(e,t,s,n){return this.sourceMesh&&this.sourceMesh.updateVerticesData(e,t,s,n),this.sourceMesh}setIndices(e,t=null){return this.sourceMesh&&this.sourceMesh.setIndices(e,t),this.sourceMesh}isVerticesDataPresent(e){return this._sourceMesh.isVerticesDataPresent(e)}getIndices(){return this._sourceMesh.getIndices()}get _positions(){return this._sourceMesh._positions}refreshBoundingInfo(e=!1,t=!1){if(this.hasBoundingInfo&&this.getBoundingInfo().isLocked)return this;let s;s="object"==typeof e?e:{applySkeleton:e,applyMorph:t};const n=this._sourceMesh.geometry?this._sourceMesh.geometry.boundingBias:null;return this._refreshBoundingInfo(this._sourceMesh._getData(s,null,r.PositionKind),n),this}_preActivate(){return this._currentLOD&&this._currentLOD._preActivate(),this}_activate(e,t){if(super._activate(e,t),this._sourceMesh.subMeshes||n.Warn("Instances should only be created for meshes with geometry."),this._currentLOD){if(this._currentLOD._getWorldMatrixDeterminant()>=0!=this._getWorldMatrixDeterminant()>=0)return this._internalAbstractMeshDataInfo._actAsRegularMesh=!0,!0;if(this._internalAbstractMeshDataInfo._actAsRegularMesh=!1,this._currentLOD._registerInstanceForRenderId(this,e),t){if(!this._currentLOD._internalAbstractMeshDataInfo._isActiveIntermediate)return this._currentLOD._internalAbstractMeshDataInfo._onlyForInstancesIntermediate=!0,!0}else if(!this._currentLOD._internalAbstractMeshDataInfo._isActive)return this._currentLOD._internalAbstractMeshDataInfo._onlyForInstances=!0,!0}return!1}_postActivate(){this._sourceMesh.edgesShareWithInstances&&this._sourceMesh._edgesRenderer&&this._sourceMesh._edgesRenderer.isEnabled&&this._sourceMesh._renderingGroup?(this._sourceMesh._renderingGroup._edgesRenderers.pushNoDuplicate(this._sourceMesh._edgesRenderer),this._sourceMesh._edgesRenderer.customInstances.push(this.getWorldMatrix())):this._edgesRenderer&&this._edgesRenderer.isEnabled&&this._sourceMesh._renderingGroup&&this._sourceMesh._renderingGroup._edgesRenderers.push(this._edgesRenderer)}getWorldMatrix(){if(this._currentLOD&&this._currentLOD.billboardMode!==i.BILLBOARDMODE_NONE&&this._currentLOD._masterMesh!==this){this._billboardWorldMatrix||(this._billboardWorldMatrix=new o);const e=this._currentLOD._masterMesh;return this._currentLOD._masterMesh=this,a.Vector3[7].copyFrom(this._currentLOD.position),this._currentLOD.position.set(0,0,0),this._billboardWorldMatrix.copyFrom(this._currentLOD.computeWorldMatrix(!0)),this._currentLOD.position.copyFrom(a.Vector3[7]),this._currentLOD._masterMesh=e,this._billboardWorldMatrix}return super.getWorldMatrix()}get isAnInstance(){return!0}getLOD(e){if(!e)return this;const t=this.sourceMesh.getLODLevels();if(t&&0!==t.length){const t=this.getBoundingInfo();this._currentLOD=this.sourceMesh.getLOD(e,t.boundingSphere)}else this._currentLOD=this.sourceMesh;return this._currentLOD}_preActivateForIntermediateRendering(e){return this.sourceMesh._preActivateForIntermediateRendering(e)}_syncSubMeshes(){if(this.releaseSubMeshes(),this._sourceMesh.subMeshes)for(let e=0;e<this._sourceMesh.subMeshes.length;e++)this._sourceMesh.subMeshes[e].clone(this,this._sourceMesh);return this}_generatePointsArray(){return this._sourceMesh._generatePointsArray()}_updateBoundingInfo(){return this.hasBoundingInfo?this.getBoundingInfo().update(this.worldMatrixFromCache):this.buildBoundingInfo(this.absolutePosition,this.absolutePosition,this.worldMatrixFromCache),this._updateSubMeshesBoundingInfo(this.worldMatrixFromCache),this}clone(e,t=null,s,n){const r=(n||this._sourceMesh).createInstance(e);if(h.DeepCopy(this,r,["name","subMeshes","uniqueId","parent","lightSources","receiveShadows","material","visibility","skeleton","sourceMesh","isAnInstance","facetNb","isFacetDataEnabled","isBlocked","useBones","hasInstances","collider","edgesRenderer","forward","up","right","absolutePosition","absoluteScaling","absoluteRotationQuaternion","isWorldMatrixFrozen","nonUniformScaling","behaviors","worldMatrixFromCache","hasThinInstances","hasBoundingInfo"],[]),this.refreshBoundingInfo(),t&&(r.parent=t),!s)for(let e=0;e<this.getScene().meshes.length;e++){const t=this.getScene().meshes[e];t.parent===this&&t.clone(t.name,r)}return r.computeWorldMatrix(!0),this.onClonedObservable.notifyObservers(r),r}dispose(e,t=!1){this._sourceMesh.removeInstance(this),super.dispose(e,t)}_serializeAsParent(e){super._serializeAsParent(e),e.parentId=this._sourceMesh.uniqueId,e.parentInstanceIndex=this._indexInSourceMeshInstanceArray}instantiateHierarchy(e=null,t,s){const n=this.clone("Clone of "+(this.name||this.id),e||this.parent,!0,t&&t.newSourcedMesh);n&&s&&s(this,n);for(const e of this.getChildTransformNodes(!0))e.instantiateHierarchy(n,t,s);return n}}e.prototype.registerInstancedBuffer=function(e,t){if(this._userInstancedBuffersStorage?.vertexBuffers[e]?.dispose(),!this.instancedBuffers){this.instancedBuffers={};for(const e of this.instances)e.instancedBuffers={}}this._userInstancedBuffersStorage||(this._userInstancedBuffersStorage={data:{},vertexBuffers:{},strides:{},sizes:{},vertexArrayObjects:this.getEngine().getCaps().vertexArrayObject?{}:void 0}),this.instancedBuffers[e]=null,this._userInstancedBuffersStorage.strides[e]=t,this._userInstancedBuffersStorage.sizes[e]=32*t,this._userInstancedBuffersStorage.data[e]=new Float32Array(this._userInstancedBuffersStorage.sizes[e]),this._userInstancedBuffersStorage.vertexBuffers[e]=new r(this.getEngine(),this._userInstancedBuffersStorage.data[e],e,!0,!1,t,!0);for(const t of this.instances)t.instancedBuffers[e]=null;this._invalidateInstanceVertexArrayObject(),this._markSubMeshesAsAttributesDirty()},e.prototype._processInstancedBuffers=function(e,t){const s=e?e.length:0;for(const n in this.instancedBuffers){let i=this._userInstancedBuffersStorage.sizes[n];const o=this._userInstancedBuffersStorage.strides[n],a=(s+1)*o;for(;i<a;)i*=2;this._userInstancedBuffersStorage.data[n].length!=i&&(this._userInstancedBuffersStorage.data[n]=new Float32Array(i),this._userInstancedBuffersStorage.sizes[n]=i,this._userInstancedBuffersStorage.vertexBuffers[n]&&(this._userInstancedBuffersStorage.vertexBuffers[n].dispose(),this._userInstancedBuffersStorage.vertexBuffers[n]=null));const h=this._userInstancedBuffersStorage.data[n];let c=0;if(t){const e=this.instancedBuffers[n];e.toArray?e.toArray(h,c):e.copyToArray?e.copyToArray(h,c):h[c]=e,c+=o}for(let t=0;t<s;t++){const s=e[t].instancedBuffers[n];s.toArray?s.toArray(h,c):s.copyToArray?s.copyToArray(h,c):h[c]=s,c+=o}this._userInstancedBuffersStorage.vertexBuffers[n]?this._userInstancedBuffersStorage.vertexBuffers[n].updateDirectly(h,0):(this._userInstancedBuffersStorage.vertexBuffers[n]=new r(this.getEngine(),this._userInstancedBuffersStorage.data[n],n,!0,!1,o,!0),this._invalidateInstanceVertexArrayObject())}},e.prototype._invalidateInstanceVertexArrayObject=function(){if(this._userInstancedBuffersStorage&&void 0!==this._userInstancedBuffersStorage.vertexArrayObjects){for(const e in this._userInstancedBuffersStorage.vertexArrayObjects)this.getEngine().releaseVertexArrayObject(this._userInstancedBuffersStorage.vertexArrayObjects[e]);this._userInstancedBuffersStorage.vertexArrayObjects={}}},e.prototype._disposeInstanceSpecificData=function(){for(this._instanceDataStorage.instancesBuffer&&(this._instanceDataStorage.instancesBuffer.dispose(),this._instanceDataStorage.instancesBuffer=null);this.instances.length;)this.instances[0].dispose();for(const e in this.instancedBuffers)this._userInstancedBuffersStorage.vertexBuffers[e]&&this._userInstancedBuffersStorage.vertexBuffers[e].dispose();this._invalidateInstanceVertexArrayObject(),this.instancedBuffers={}},c("BABYLON.InstancedMesh",l);class m{constructor(){this.rootNodes=[],this.cameras=[],this.lights=[],this.meshes=[],this.skeletons=[],this.particleSystems=[],this.animations=[],this.animationGroups=[],this.multiMaterials=[],this.materials=[],this.morphTargetManagers=[],this.geometries=[],this.transformNodes=[],this.actionManagers=[],this.textures=[],this._environmentTexture=null,this.postProcesses=[],this.sounds=null,this.effectLayers=[],this.layers=[],this.reflectionProbes=[]}get environmentTexture(){return this._environmentTexture}set environmentTexture(e){this._environmentTexture=e}getNodes(){let e=[];return e=e.concat(this.meshes),e=e.concat(this.lights),e=e.concat(this.cameras),e=e.concat(this.transformNodes),this.skeletons.forEach((t=>e=e.concat(t.bones))),e}}class g extends m{}class p{constructor(){this.rootNodes=[],this.skeletons=[],this.animationGroups=[]}dispose(){this.rootNodes.slice(0).forEach((e=>{e.dispose()})),this.rootNodes.length=0,this.skeletons.slice(0).forEach((e=>{e.dispose()})),this.skeletons.length=0,this.animationGroups.slice(0).forEach((e=>{e.dispose()})),this.animationGroups.length=0}}class _ extends m{constructor(e){super(),this._wasAddedToScene=!1,(e=e||u.LastCreatedScene)&&(this.scene=e,this.proceduralTextures=[],e.onDisposeObservable.add((()=>{this._wasAddedToScene||this.dispose()})),this._onContextRestoredObserver=e.getEngine().onContextRestoredObservable.add((()=>{for(const e of this.geometries)e._rebuild();for(const e of this.meshes)e._rebuild();for(const e of this.particleSystems)e.rebuild();for(const e of this.textures)e._rebuild()})))}_topologicalSort(e){const t=new Map;for(const s of e)t.set(s.uniqueId,s);const s={dependsOn:new Map,dependedBy:new Map};for(const t of e){const e=t.uniqueId;s.dependsOn.set(e,new Set),s.dependedBy.set(e,new Set)}for(const n of e){const e=n.uniqueId,r=s.dependsOn.get(e);if(n instanceof l){const i=n.sourceMesh;t.has(i.uniqueId)&&(r.add(i.uniqueId),s.dependedBy.get(i.uniqueId).add(e))}const i=s.dependedBy.get(e);for(const r of n.getDescendants()){const n=r.uniqueId;if(t.has(n)){i.add(n);s.dependsOn.get(n).add(e)}}}const r=[],i=[];for(const n of e){const e=n.uniqueId;0===s.dependsOn.get(e).size&&(i.push(n),t.delete(e))}const o=i;for(;o.length>0;){const e=o.shift();r.push(e);const n=s.dependedBy.get(e.uniqueId);for(const r of Array.from(n.values())){const n=s.dependsOn.get(r);n.delete(e.uniqueId),0===n.size&&t.get(r)&&(o.push(t.get(r)),t.delete(r))}}return t.size>0&&(n.Error("SceneSerializer._topologicalSort: There were unvisited nodes:"),t.forEach((e=>n.Error(e.name)))),r}_addNodeAndDescendantsToList(e,t,s,n){if(s&&(!n||n(s))&&!t.has(s.uniqueId)){e.push(s),t.add(s.uniqueId);for(const r of s.getDescendants(!0))this._addNodeAndDescendantsToList(e,t,r,n)}}_isNodeInContainer(e){return e instanceof t&&-1!==this.meshes.indexOf(e)||(e instanceof i&&-1!==this.transformNodes.indexOf(e)||(e instanceof d&&-1!==this.lights.indexOf(e)||e instanceof f&&-1!==this.cameras.indexOf(e)))}_isValidHierarchy(){for(const e of this.meshes)if(e.parent&&!this._isNodeInContainer(e.parent))return n.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;for(const e of this.transformNodes)if(e.parent&&!this._isNodeInContainer(e.parent))return n.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;for(const e of this.lights)if(e.parent&&!this._isNodeInContainer(e.parent))return n.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;for(const e of this.cameras)if(e.parent&&!this._isNodeInContainer(e.parent))return n.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;return!0}instantiateModelsToScene(t,n=!1,r){this._isValidHierarchy()||s.Warn("SceneSerializer.InstantiateModelsToScene: The Asset Container hierarchy is not valid.");const i={},o={},a=new p,h=[],c=[],u={doNotInstantiate:!0,...r},d=[],f=new Set;for(const e of this.transformNodes)null===e.parent&&this._addNodeAndDescendantsToList(d,f,e,u.predicate);for(const e of this.meshes)null===e.parent&&this._addNodeAndDescendantsToList(d,f,e,u.predicate);const l=this._topologicalSort(d),m=(s,r)=>{if(((s,n)=>{if(i[s.uniqueId]=n.uniqueId,o[n.uniqueId]=n,t&&(n.name=t(s.name)),n instanceof e){const e=n;if(e.morphTargetManager){const t=s.morphTargetManager;e.morphTargetManager=t.clone();for(let s=0;s<t.numTargets;s++){const n=t.getTarget(s),r=e.morphTargetManager.getTarget(s);i[n.uniqueId]=r.uniqueId,o[r.uniqueId]=r}}}})(s,r),s.parent){const e=i[s.parent.uniqueId],t=o[e];r.parent=t||s.parent}if(r.position&&s.position&&r.position.copyFrom(s.position),r.rotationQuaternion&&s.rotationQuaternion&&r.rotationQuaternion.copyFrom(s.rotationQuaternion),r.rotation&&s.rotation&&r.rotation.copyFrom(s.rotation),r.scaling&&s.scaling&&r.scaling.copyFrom(s.scaling),r.material){const e=r;if(e.material)if(n){const n=s.material;if(-1===c.indexOf(n)){let e=n.clone(t?t(n.name):"Clone of "+n.name);if(c.push(n),i[n.uniqueId]=e.uniqueId,o[e.uniqueId]=e,"MultiMaterial"===n.getClassName()){const s=n;for(const n of s.subMaterials)n&&(e=n.clone(t?t(n.name):"Clone of "+n.name),c.push(n),i[n.uniqueId]=e.uniqueId,o[e.uniqueId]=e);s.subMaterials=s.subMaterials.map((e=>e&&o[i[e.uniqueId]]))}}"InstancedMesh"!==e.getClassName()&&(e.material=o[i[n.uniqueId]])}else"MultiMaterial"===e.material.getClassName()?-1===this.scene.multiMaterials.indexOf(e.material)&&this.scene.addMultiMaterial(e.material):-1===this.scene.materials.indexOf(e.material)&&this.scene.addMaterial(e.material)}null===r.parent&&a.rootNodes.push(r)};return l.forEach((e=>{if("InstancedMesh"===e.getClassName()){const t=e,s=t.sourceMesh,n=i[s.uniqueId],r=("number"==typeof n?o[n]:s).createInstance(t.name);m(t,r)}else{let t=!0;"TransformNode"===e.getClassName()||"Node"===e.getClassName()||e.skeleton||!e.getTotalVertices||0===e.getTotalVertices()?t=!1:u.doNotInstantiate&&(t="function"==typeof u.doNotInstantiate?!u.doNotInstantiate(e):!u.doNotInstantiate);const s=t?e.createInstance(`instance of ${e.name}`):e.clone(`Clone of ${e.name}`,null,!0);if(!s)throw new Error(`Could not clone or instantiate node on Asset Container ${e.name}`);m(e,s)}})),this.skeletons.forEach((e=>{if(u.predicate&&!u.predicate(e))return;const s=e.clone(t?t(e.name):"Clone of "+e.name);for(const t of this.meshes)if(t.skeleton===e&&!t.isAnInstance){const e=o[i[t.uniqueId]];if(!e||e.isAnInstance)continue;if(e.skeleton=s,-1!==h.indexOf(s))continue;h.push(s);for(const e of s.bones)e._linkedTransformNode&&(e._linkedTransformNode=o[i[e._linkedTransformNode.uniqueId]])}a.skeletons.push(s)})),this.animationGroups.forEach((e=>{if(u.predicate&&!u.predicate(e))return;const s=e.clone(t?t(e.name):"Clone of "+e.name,(e=>o[i[e.uniqueId]]||e));a.animationGroups.push(s)})),a}addAllToScene(){if(!this._wasAddedToScene){this._isValidHierarchy()||s.Warn("SceneSerializer.addAllToScene: The Asset Container hierarchy is not valid."),this._wasAddedToScene=!0,this.addToScene(null),this.environmentTexture&&(this.scene.environmentTexture=this.environmentTexture);for(const e of this.scene._serializableComponents)e.addFromContainer(this);this.scene.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null}}addToScene(e=null){const t=[];this.cameras.forEach((s=>{e&&!e(s)||(this.scene.addCamera(s),t.push(s))})),this.lights.forEach((s=>{e&&!e(s)||(this.scene.addLight(s),t.push(s))})),this.meshes.forEach((s=>{e&&!e(s)||(this.scene.addMesh(s),t.push(s))})),this.skeletons.forEach((t=>{e&&!e(t)||this.scene.addSkeleton(t)})),this.animations.forEach((t=>{e&&!e(t)||this.scene.addAnimation(t)})),this.animationGroups.forEach((t=>{e&&!e(t)||this.scene.addAnimationGroup(t)})),this.multiMaterials.forEach((t=>{e&&!e(t)||this.scene.addMultiMaterial(t)})),this.materials.forEach((t=>{e&&!e(t)||this.scene.addMaterial(t)})),this.morphTargetManagers.forEach((t=>{e&&!e(t)||this.scene.addMorphTargetManager(t)})),this.geometries.forEach((t=>{e&&!e(t)||this.scene.addGeometry(t)})),this.transformNodes.forEach((s=>{e&&!e(s)||(this.scene.addTransformNode(s),t.push(s))})),this.actionManagers.forEach((t=>{e&&!e(t)||this.scene.addActionManager(t)})),this.textures.forEach((t=>{e&&!e(t)||this.scene.addTexture(t)})),this.reflectionProbes.forEach((t=>{e&&!e(t)||this.scene.addReflectionProbe(t)}));for(const e of t)e.parent&&-1===this.scene.getNodes().indexOf(e.parent)&&(e.setParent?e.setParent(null):e.parent=null)}removeAllFromScene(){this._isValidHierarchy()||s.Warn("SceneSerializer.removeAllFromScene: The Asset Container hierarchy is not valid."),this._wasAddedToScene=!1,this.removeFromScene(null),this.environmentTexture===this.scene.environmentTexture&&(this.scene.environmentTexture=null);for(const e of this.scene._serializableComponents)e.removeFromContainer(this)}removeFromScene(e=null){this.cameras.forEach((t=>{e&&!e(t)||this.scene.removeCamera(t)})),this.lights.forEach((t=>{e&&!e(t)||this.scene.removeLight(t)})),this.meshes.forEach((t=>{e&&!e(t)||this.scene.removeMesh(t,!0)})),this.skeletons.forEach((t=>{e&&!e(t)||this.scene.removeSkeleton(t)})),this.animations.forEach((t=>{e&&!e(t)||this.scene.removeAnimation(t)})),this.animationGroups.forEach((t=>{e&&!e(t)||this.scene.removeAnimationGroup(t)})),this.multiMaterials.forEach((t=>{e&&!e(t)||this.scene.removeMultiMaterial(t)})),this.materials.forEach((t=>{e&&!e(t)||this.scene.removeMaterial(t)})),this.morphTargetManagers.forEach((t=>{e&&!e(t)||this.scene.removeMorphTargetManager(t)})),this.geometries.forEach((t=>{e&&!e(t)||this.scene.removeGeometry(t)})),this.transformNodes.forEach((t=>{e&&!e(t)||this.scene.removeTransformNode(t)})),this.actionManagers.forEach((t=>{e&&!e(t)||this.scene.removeActionManager(t)})),this.textures.forEach((t=>{e&&!e(t)||this.scene.removeTexture(t)})),this.reflectionProbes.forEach((t=>{e&&!e(t)||this.scene.removeReflectionProbe(t)}))}dispose(){this.cameras.slice(0).forEach((e=>{e.dispose()})),this.cameras.length=0,this.lights.slice(0).forEach((e=>{e.dispose()})),this.lights.length=0,this.meshes.slice(0).forEach((e=>{e.dispose()})),this.meshes.length=0,this.skeletons.slice(0).forEach((e=>{e.dispose()})),this.skeletons.length=0,this.animationGroups.slice(0).forEach((e=>{e.dispose()})),this.animationGroups.length=0,this.multiMaterials.slice(0).forEach((e=>{e.dispose()})),this.multiMaterials.length=0,this.materials.slice(0).forEach((e=>{e.dispose()})),this.materials.length=0,this.geometries.slice(0).forEach((e=>{e.dispose()})),this.geometries.length=0,this.transformNodes.slice(0).forEach((e=>{e.dispose()})),this.transformNodes.length=0,this.actionManagers.slice(0).forEach((e=>{e.dispose()})),this.actionManagers.length=0,this.textures.slice(0).forEach((e=>{e.dispose()})),this.textures.length=0,this.reflectionProbes.slice(0).forEach((e=>{e.dispose()})),this.reflectionProbes.length=0,this.morphTargetManagers.slice(0).forEach((e=>{e.dispose()})),this.morphTargetManagers.length=0,this.environmentTexture&&(this.environmentTexture.dispose(),this.environmentTexture=null);for(const e of this.scene._serializableComponents)e.removeFromContainer(this,!0);this._onContextRestoredObserver&&(this.scene.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null)}_moveAssets(e,t,s){if(e&&t)for(const n of e){let e=!0;if(s)for(const t of s)if(n===t){e=!1;break}e&&(t.push(n),n._parentContainer=this)}}moveAllFromScene(e){this._wasAddedToScene=!1,void 0===e&&(e=new g);for(const t in this)Object.prototype.hasOwnProperty.call(this,t)&&(this[t]=this[t]||("_environmentTexture"===t?null:[]),this._moveAssets(this.scene[t],this[t],e[t]));this.environmentTexture=this.scene.environmentTexture,this.removeAllFromScene()}createRootMesh(){const t=new e("assetContainerRootMesh",this.scene);return this.meshes.forEach((e=>{e.parent||t.addChild(e)})),this.meshes.unshift(t),t}mergeAnimationsTo(e=u.LastCreatedScene,t,s=null){if(!e)return n.Error("No scene available to merge animations to"),[];const r=s||(t=>{let s=null;const n=t.animations.length?t.animations[0].targetProperty:"",r=t.name.split(".").join("").split("_primitive")[0];switch(n){case"position":case"rotationQuaternion":s=e.getTransformNodeByName(t.name)||e.getTransformNodeByName(r);break;case"influence":s=e.getMorphTargetByName(t.name)||e.getMorphTargetByName(r);break;default:s=e.getNodeByName(t.name)||e.getNodeByName(r)}return s});this.getNodes().forEach((e=>{const t=r(e);if(null!==t){for(const s of e.animations){const e=t.animations.filter((e=>e.targetProperty===s.targetProperty));for(const s of e){const e=t.animations.indexOf(s,0);e>-1&&t.animations.splice(e,1)}}t.animations=t.animations.concat(e.animations)}}));const i=[];return this.animationGroups.slice().forEach((e=>{i.push(e.clone(e.name,r)),e.animatables.forEach((e=>{e.stop()}))})),t.forEach((t=>{const s=r(t.target);s&&(e.beginAnimation(s,t.fromFrame,t.toFrame,t.loopAnimation,t.speedRatio,t.onAnimationEnd?t.onAnimationEnd:void 0,void 0,!0,void 0,t.onAnimationLoop?t.onAnimationLoop:void 0),e.stopAnimation(t.target))})),i}populateRootNodes(){this.rootNodes.length=0,this.meshes.forEach((e=>{e.parent||-1!==this.rootNodes.indexOf(e)||this.rootNodes.push(e)})),this.transformNodes.forEach((e=>{e.parent||-1!==this.rootNodes.indexOf(e)||this.rootNodes.push(e)})),this.lights.forEach((e=>{e.parent||-1!==this.rootNodes.indexOf(e)||this.rootNodes.push(e)})),this.cameras.forEach((e=>{e.parent||-1!==this.rootNodes.indexOf(e)||this.rootNodes.push(e)}))}addAllAssetsToContainer(s){if(!s)return;const n=[],r=new Set;for(n.push(s);n.length>0;){const s=n.pop();if(s instanceof e?(s.geometry&&-1===this.geometries.indexOf(s.geometry)&&this.geometries.push(s.geometry),this.meshes.push(s)):s instanceof i?this.transformNodes.push(s):s instanceof d?this.lights.push(s):s instanceof f&&this.cameras.push(s),s instanceof t){if(s.material&&-1===this.materials.indexOf(s.material)){this.materials.push(s.material);for(const e of s.material.getActiveTextures())-1===this.textures.indexOf(e)&&this.textures.push(e)}s.skeleton&&-1===this.skeletons.indexOf(s.skeleton)&&this.skeletons.push(s.skeleton),s.morphTargetManager&&-1===this.morphTargetManagers.indexOf(s.morphTargetManager)&&this.morphTargetManagers.push(s.morphTargetManager)}for(const e of s.getChildren())r.has(e)||n.push(e);r.add(s)}this.populateRootNodes()}}export{_ as A};
2
+ //# sourceMappingURL=assetContainer-DDEska5G.esm.min.js.map