@fps-games/editor-deployment 0.2.3-beta.3

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 (533) hide show
  1. package/bin/fps-editor-prepare.mjs +5 -0
  2. package/bin/fps-editor-server.mjs +2 -0
  3. package/licenses/THIRD_PARTY_NOTICES.txt +7 -0
  4. package/manifest.json +2685 -0
  5. package/npm-shrinkwrap.json +19 -0
  6. package/package.json +38 -0
  7. package/public/assets/abstractAudioBus-DKeLA-55.js +1 -0
  8. package/public/assets/animation-DY4Gs-Pw.js +1 -0
  9. package/public/assets/animation-DY4Gs-Pw.js.br +0 -0
  10. package/public/assets/animation-DY4Gs-Pw.js.gz +0 -0
  11. package/public/assets/animationGroup-BN6ExD_I.js +1 -0
  12. package/public/assets/animationGroup-BN6ExD_I.js.br +0 -0
  13. package/public/assets/animationGroup-BN6ExD_I.js.gz +0 -0
  14. package/public/assets/arcRotateCamera-BrOEThh0.js +1 -0
  15. package/public/assets/arcRotateCamera-BrOEThh0.js.br +0 -0
  16. package/public/assets/arcRotateCamera-BrOEThh0.js.gz +0 -0
  17. package/public/assets/babylon-core-BiQ_mrkl.js +1 -0
  18. package/public/assets/babylon-core-BiQ_mrkl.js.br +0 -0
  19. package/public/assets/babylon-core-BiQ_mrkl.js.gz +0 -0
  20. package/public/assets/babylon-core-DygJEuf6.js +13882 -0
  21. package/public/assets/babylon-core-DygJEuf6.js.br +0 -0
  22. package/public/assets/babylon-core-DygJEuf6.js.gz +0 -0
  23. package/public/assets/basisTextureLoader-BWwwG7Gw.js +1 -0
  24. package/public/assets/basisTextureLoader-BWwwG7Gw.js.br +0 -0
  25. package/public/assets/basisTextureLoader-BWwwG7Gw.js.gz +0 -0
  26. package/public/assets/bumpVertex-CzYtMFbI.js +177 -0
  27. package/public/assets/bumpVertex-CzYtMFbI.js.br +0 -0
  28. package/public/assets/bumpVertex-CzYtMFbI.js.gz +0 -0
  29. package/public/assets/bumpVertex-DIMp0NiU.js +173 -0
  30. package/public/assets/bumpVertex-DIMp0NiU.js.br +0 -0
  31. package/public/assets/bumpVertex-DIMp0NiU.js.gz +0 -0
  32. package/public/assets/chromaticAberration.fragment-BJhO9WeA.js +7 -0
  33. package/public/assets/chromaticAberration.fragment-BJhO9WeA.js.br +0 -0
  34. package/public/assets/chromaticAberration.fragment-BJhO9WeA.js.gz +0 -0
  35. package/public/assets/chromaticAberration.fragment-DEAEmyJy.js +6 -0
  36. package/public/assets/chromaticAberration.fragment-DEAEmyJy.js.br +0 -0
  37. package/public/assets/chromaticAberration.fragment-DEAEmyJy.js.gz +0 -0
  38. package/public/assets/circleOfConfusion.fragment-DGnleQIE.js +17 -0
  39. package/public/assets/circleOfConfusion.fragment-DGnleQIE.js.br +0 -0
  40. package/public/assets/circleOfConfusion.fragment-DGnleQIE.js.gz +0 -0
  41. package/public/assets/circleOfConfusion.fragment-DqQcLT7C.js +17 -0
  42. package/public/assets/circleOfConfusion.fragment-DqQcLT7C.js.br +0 -0
  43. package/public/assets/circleOfConfusion.fragment-DqQcLT7C.js.gz +0 -0
  44. package/public/assets/clipPlaneFragment-Da_1RMjt.js +46 -0
  45. package/public/assets/clipPlaneFragment-Da_1RMjt.js.br +0 -0
  46. package/public/assets/clipPlaneFragment-Da_1RMjt.js.gz +0 -0
  47. package/public/assets/clipPlaneVertex-B8PIfZU_.js +177 -0
  48. package/public/assets/clipPlaneVertex-B8PIfZU_.js.br +0 -0
  49. package/public/assets/clipPlaneVertex-B8PIfZU_.js.gz +0 -0
  50. package/public/assets/color.fragment-Bf62ouS6.js +20 -0
  51. package/public/assets/color.fragment-Bf62ouS6.js.br +0 -0
  52. package/public/assets/color.fragment-Bf62ouS6.js.gz +0 -0
  53. package/public/assets/color.fragment-DtJC5xR0.js +21 -0
  54. package/public/assets/color.fragment-DtJC5xR0.js.br +0 -0
  55. package/public/assets/color.fragment-DtJC5xR0.js.gz +0 -0
  56. package/public/assets/color.vertex-DYnzh3f-.js +39 -0
  57. package/public/assets/color.vertex-DYnzh3f-.js.br +0 -0
  58. package/public/assets/color.vertex-DYnzh3f-.js.gz +0 -0
  59. package/public/assets/color.vertex-foaAsgqw.js +32 -0
  60. package/public/assets/color.vertex-foaAsgqw.js.br +0 -0
  61. package/public/assets/color.vertex-foaAsgqw.js.gz +0 -0
  62. package/public/assets/dds-CbA4nCCq.js +1 -0
  63. package/public/assets/dds-CbA4nCCq.js.br +0 -0
  64. package/public/assets/dds-CbA4nCCq.js.gz +0 -0
  65. package/public/assets/ddsTextureLoader-Bwa3u-Gp.js +1 -0
  66. package/public/assets/ddsTextureLoader-Bwa3u-Gp.js.br +0 -0
  67. package/public/assets/ddsTextureLoader-Bwa3u-Gp.js.gz +0 -0
  68. package/public/assets/default.fragment-BKaVVFYF.js +526 -0
  69. package/public/assets/default.fragment-BKaVVFYF.js.br +0 -0
  70. package/public/assets/default.fragment-BKaVVFYF.js.gz +0 -0
  71. package/public/assets/default.fragment-DjNCicws.js +468 -0
  72. package/public/assets/default.fragment-DjNCicws.js.br +0 -0
  73. package/public/assets/default.fragment-DjNCicws.js.gz +0 -0
  74. package/public/assets/default.vertex-CKOvcJ54.js +193 -0
  75. package/public/assets/default.vertex-CKOvcJ54.js.br +0 -0
  76. package/public/assets/default.vertex-CKOvcJ54.js.gz +0 -0
  77. package/public/assets/default.vertex-DyPOsib0.js +181 -0
  78. package/public/assets/default.vertex-DyPOsib0.js.br +0 -0
  79. package/public/assets/default.vertex-DyPOsib0.js.gz +0 -0
  80. package/public/assets/defaultUboDeclaration-ChgZa3Dv.js +5 -0
  81. package/public/assets/defaultUboDeclaration-ChgZa3Dv.js.br +0 -0
  82. package/public/assets/defaultUboDeclaration-ChgZa3Dv.js.gz +0 -0
  83. package/public/assets/defaultUboDeclaration-Dzd2ch6X.js +7 -0
  84. package/public/assets/defaultUboDeclaration-Dzd2ch6X.js.br +0 -0
  85. package/public/assets/defaultUboDeclaration-Dzd2ch6X.js.gz +0 -0
  86. package/public/assets/depth.fragment-B9FDfPgW.js +40 -0
  87. package/public/assets/depth.fragment-B9FDfPgW.js.br +2 -0
  88. package/public/assets/depth.fragment-B9FDfPgW.js.gz +0 -0
  89. package/public/assets/depth.vertex-DXkbiW3p.js +57 -0
  90. package/public/assets/depth.vertex-DXkbiW3p.js.br +0 -0
  91. package/public/assets/depth.vertex-DXkbiW3p.js.gz +0 -0
  92. package/public/assets/depthBoxBlur.fragment-BlgJGCM0.js +6 -0
  93. package/public/assets/depthBoxBlur.fragment-BlgJGCM0.js.br +0 -0
  94. package/public/assets/depthBoxBlur.fragment-BlgJGCM0.js.gz +0 -0
  95. package/public/assets/depthBoxBlur.fragment-DUm61npj.js +5 -0
  96. package/public/assets/depthBoxBlur.fragment-DUm61npj.js.br +0 -0
  97. package/public/assets/depthBoxBlur.fragment-DUm61npj.js.gz +0 -0
  98. package/public/assets/depthOfFieldMerge.fragment-25hKWM62.js +21 -0
  99. package/public/assets/depthOfFieldMerge.fragment-25hKWM62.js.br +0 -0
  100. package/public/assets/depthOfFieldMerge.fragment-25hKWM62.js.gz +0 -0
  101. package/public/assets/depthOfFieldMerge.fragment-_d6h2qdf.js +26 -0
  102. package/public/assets/depthOfFieldMerge.fragment-_d6h2qdf.js.br +0 -0
  103. package/public/assets/depthOfFieldMerge.fragment-_d6h2qdf.js.gz +0 -0
  104. package/public/assets/easing-BkcTAuOI.js +1 -0
  105. package/public/assets/easing-BkcTAuOI.js.br +0 -0
  106. package/public/assets/easing-BkcTAuOI.js.gz +0 -0
  107. package/public/assets/editor-core-plugin-host-c2002442.js +1 -0
  108. package/public/assets/editor-core-plugin-host-c2002442.js.br +0 -0
  109. package/public/assets/editor-core-plugin-host-c2002442.js.gz +0 -0
  110. package/public/assets/exrTextureLoader-DD6CMgpF.js +1 -0
  111. package/public/assets/exrTextureLoader-DD6CMgpF.js.br +0 -0
  112. package/public/assets/exrTextureLoader-DD6CMgpF.js.gz +0 -0
  113. package/public/assets/flowGraphArrayIndexBlock-DAsvnV45.js +1 -0
  114. package/public/assets/flowGraphArrayIndexBlock-DAsvnV45.js.br +0 -0
  115. package/public/assets/flowGraphArrayIndexBlock-DAsvnV45.js.gz +0 -0
  116. package/public/assets/flowGraphBezierCurveEasingBlock-_sVLfNt3.js +1 -0
  117. package/public/assets/flowGraphBezierCurveEasingBlock-_sVLfNt3.js.br +0 -0
  118. package/public/assets/flowGraphBezierCurveEasingBlock-_sVLfNt3.js.gz +0 -0
  119. package/public/assets/flowGraphBinaryOperationBlock-D9lz9r7e.js +1 -0
  120. package/public/assets/flowGraphBinaryOperationBlock-D9lz9r7e.js.br +0 -0
  121. package/public/assets/flowGraphBinaryOperationBlock-D9lz9r7e.js.gz +0 -0
  122. package/public/assets/flowGraphBranchBlock-BMgiYImb.js +1 -0
  123. package/public/assets/flowGraphBranchBlock-BMgiYImb.js.br +0 -0
  124. package/public/assets/flowGraphBranchBlock-BMgiYImb.js.gz +0 -0
  125. package/public/assets/flowGraphCachedOperationBlock-CDf6OBvO.js +1 -0
  126. package/public/assets/flowGraphCachedOperationBlock-CDf6OBvO.js.br +0 -0
  127. package/public/assets/flowGraphCachedOperationBlock-CDf6OBvO.js.gz +0 -0
  128. package/public/assets/flowGraphCancelDelayBlock-BbyDVz48.js +1 -0
  129. package/public/assets/flowGraphCancelDelayBlock-BbyDVz48.js.br +0 -0
  130. package/public/assets/flowGraphCancelDelayBlock-BbyDVz48.js.gz +0 -0
  131. package/public/assets/flowGraphCodeExecutionBlock-fMRePVwn.js +1 -0
  132. package/public/assets/flowGraphCodeExecutionBlock-fMRePVwn.js.br +0 -0
  133. package/public/assets/flowGraphCodeExecutionBlock-fMRePVwn.js.gz +0 -0
  134. package/public/assets/flowGraphConditionalDataBlock-Db9HPH7K.js +1 -0
  135. package/public/assets/flowGraphConditionalDataBlock-Db9HPH7K.js.br +0 -0
  136. package/public/assets/flowGraphConditionalDataBlock-Db9HPH7K.js.gz +0 -0
  137. package/public/assets/flowGraphConsoleLogBlock-U9fcEDaX.js +1 -0
  138. package/public/assets/flowGraphConsoleLogBlock-U9fcEDaX.js.br +0 -0
  139. package/public/assets/flowGraphConsoleLogBlock-U9fcEDaX.js.gz +0 -0
  140. package/public/assets/flowGraphConstantBlock-CN1Myhpi.js +1 -0
  141. package/public/assets/flowGraphConstantBlock-CN1Myhpi.js.br +0 -0
  142. package/public/assets/flowGraphConstantBlock-CN1Myhpi.js.gz +0 -0
  143. package/public/assets/flowGraphContextBlock-BbRTNgI4.js +1 -0
  144. package/public/assets/flowGraphContextBlock-BbRTNgI4.js.br +0 -0
  145. package/public/assets/flowGraphContextBlock-BbRTNgI4.js.gz +0 -0
  146. package/public/assets/flowGraphCounterBlock-DTqShVsi.js +1 -0
  147. package/public/assets/flowGraphCounterBlock-DTqShVsi.js.br +0 -0
  148. package/public/assets/flowGraphCounterBlock-DTqShVsi.js.gz +0 -0
  149. package/public/assets/flowGraphDataSwitchBlock-BtEqygYT.js +1 -0
  150. package/public/assets/flowGraphDataSwitchBlock-BtEqygYT.js.br +0 -0
  151. package/public/assets/flowGraphDataSwitchBlock-BtEqygYT.js.gz +0 -0
  152. package/public/assets/flowGraphDebounceBlock-CNHFUJ8N.js +1 -0
  153. package/public/assets/flowGraphDebounceBlock-CNHFUJ8N.js.br +0 -0
  154. package/public/assets/flowGraphDebounceBlock-CNHFUJ8N.js.gz +0 -0
  155. package/public/assets/flowGraphDoNBlock-DfiUsh6W.js +1 -0
  156. package/public/assets/flowGraphDoNBlock-DfiUsh6W.js.br +0 -0
  157. package/public/assets/flowGraphDoNBlock-DfiUsh6W.js.gz +0 -0
  158. package/public/assets/flowGraphEasingBlock-BQz5MDh1.js +1 -0
  159. package/public/assets/flowGraphEasingBlock-BQz5MDh1.js.br +0 -0
  160. package/public/assets/flowGraphEasingBlock-BQz5MDh1.js.gz +0 -0
  161. package/public/assets/flowGraphFlipFlopBlock-FFeDrjtF.js +1 -0
  162. package/public/assets/flowGraphFlipFlopBlock-FFeDrjtF.js.br +0 -0
  163. package/public/assets/flowGraphFlipFlopBlock-FFeDrjtF.js.gz +0 -0
  164. package/public/assets/flowGraphForLoopBlock-CjPa-aIl.js +1 -0
  165. package/public/assets/flowGraphForLoopBlock-CjPa-aIl.js.br +0 -0
  166. package/public/assets/flowGraphForLoopBlock-CjPa-aIl.js.gz +0 -0
  167. package/public/assets/flowGraphFunctionReferenceBlock-CUUBvJaO.js +1 -0
  168. package/public/assets/flowGraphFunctionReferenceBlock-CUUBvJaO.js.br +0 -0
  169. package/public/assets/flowGraphFunctionReferenceBlock-CUUBvJaO.js.gz +0 -0
  170. package/public/assets/flowGraphGetAssetBlock-CuKntTUp.js +1 -0
  171. package/public/assets/flowGraphGetAssetBlock-CuKntTUp.js.br +0 -0
  172. package/public/assets/flowGraphGetAssetBlock-CuKntTUp.js.gz +0 -0
  173. package/public/assets/flowGraphGetPropertyBlock-r3I5d5Pw.js +1 -0
  174. package/public/assets/flowGraphGetPropertyBlock-r3I5d5Pw.js.br +0 -0
  175. package/public/assets/flowGraphGetPropertyBlock-r3I5d5Pw.js.gz +0 -0
  176. package/public/assets/flowGraphGetVariableBlock-ByAhPias.js +1 -0
  177. package/public/assets/flowGraphGetVariableBlock-ByAhPias.js.br +0 -0
  178. package/public/assets/flowGraphGetVariableBlock-ByAhPias.js.gz +0 -0
  179. package/public/assets/flowGraphIndexOfBlock-kKyrBvN9.js +1 -0
  180. package/public/assets/flowGraphIndexOfBlock-kKyrBvN9.js.br +0 -0
  181. package/public/assets/flowGraphIndexOfBlock-kKyrBvN9.js.gz +0 -0
  182. package/public/assets/flowGraphInterpolationBlock-C1KggJs6.js +1 -0
  183. package/public/assets/flowGraphInterpolationBlock-C1KggJs6.js.br +0 -0
  184. package/public/assets/flowGraphInterpolationBlock-C1KggJs6.js.gz +0 -0
  185. package/public/assets/flowGraphJsonPointerParserBlock-Cq1Nm55u.js +1 -0
  186. package/public/assets/flowGraphJsonPointerParserBlock-Cq1Nm55u.js.br +0 -0
  187. package/public/assets/flowGraphJsonPointerParserBlock-Cq1Nm55u.js.gz +0 -0
  188. package/public/assets/flowGraphMathBlocks-DyKkUJIM.js +1 -0
  189. package/public/assets/flowGraphMathBlocks-DyKkUJIM.js.br +0 -0
  190. package/public/assets/flowGraphMathBlocks-DyKkUJIM.js.gz +0 -0
  191. package/public/assets/flowGraphMathCombineExtractBlocks-DWLx9Jo-.js +1 -0
  192. package/public/assets/flowGraphMathCombineExtractBlocks-DWLx9Jo-.js.br +0 -0
  193. package/public/assets/flowGraphMathCombineExtractBlocks-DWLx9Jo-.js.gz +0 -0
  194. package/public/assets/flowGraphMatrixMathBlocks-CEbyv5Ky.js +1 -0
  195. package/public/assets/flowGraphMatrixMathBlocks-CEbyv5Ky.js.br +0 -0
  196. package/public/assets/flowGraphMatrixMathBlocks-CEbyv5Ky.js.gz +0 -0
  197. package/public/assets/flowGraphMeshPickEventBlock-DBaLM4_x.js +1 -0
  198. package/public/assets/flowGraphMeshPickEventBlock-DBaLM4_x.js.br +0 -0
  199. package/public/assets/flowGraphMeshPickEventBlock-DBaLM4_x.js.gz +0 -0
  200. package/public/assets/flowGraphMultiGateBlock-0zKVRfwg.js +1 -0
  201. package/public/assets/flowGraphMultiGateBlock-0zKVRfwg.js.br +0 -0
  202. package/public/assets/flowGraphMultiGateBlock-0zKVRfwg.js.gz +0 -0
  203. package/public/assets/flowGraphPauseAnimationBlock-Cj1qZ8KL.js +1 -0
  204. package/public/assets/flowGraphPauseAnimationBlock-Cj1qZ8KL.js.br +0 -0
  205. package/public/assets/flowGraphPauseAnimationBlock-Cj1qZ8KL.js.gz +0 -0
  206. package/public/assets/flowGraphPlayAnimationBlock-CmNlz0tC.js +1 -0
  207. package/public/assets/flowGraphPlayAnimationBlock-CmNlz0tC.js.br +0 -0
  208. package/public/assets/flowGraphPlayAnimationBlock-CmNlz0tC.js.gz +0 -0
  209. package/public/assets/flowGraphPointerOutEventBlock-CksX91Wf.js +1 -0
  210. package/public/assets/flowGraphPointerOutEventBlock-CksX91Wf.js.br +4 -0
  211. package/public/assets/flowGraphPointerOutEventBlock-CksX91Wf.js.gz +0 -0
  212. package/public/assets/flowGraphPointerOverEventBlock-BAzWo2rO.js +1 -0
  213. package/public/assets/flowGraphPointerOverEventBlock-BAzWo2rO.js.br +0 -0
  214. package/public/assets/flowGraphPointerOverEventBlock-BAzWo2rO.js.gz +0 -0
  215. package/public/assets/flowGraphReceiveCustomEventBlock-DodatkWu.js +1 -0
  216. package/public/assets/flowGraphReceiveCustomEventBlock-DodatkWu.js.br +0 -0
  217. package/public/assets/flowGraphReceiveCustomEventBlock-DodatkWu.js.gz +0 -0
  218. package/public/assets/flowGraphSceneReadyEventBlock-CdZZEJxf.js +1 -0
  219. package/public/assets/flowGraphSceneReadyEventBlock-CdZZEJxf.js.br +0 -0
  220. package/public/assets/flowGraphSceneReadyEventBlock-CdZZEJxf.js.gz +0 -0
  221. package/public/assets/flowGraphSceneTickEventBlock-BO5xEA0D.js +1 -0
  222. package/public/assets/flowGraphSceneTickEventBlock-BO5xEA0D.js.br +0 -0
  223. package/public/assets/flowGraphSceneTickEventBlock-BO5xEA0D.js.gz +0 -0
  224. package/public/assets/flowGraphSendCustomEventBlock-BSbW6X-n.js +1 -0
  225. package/public/assets/flowGraphSendCustomEventBlock-BSbW6X-n.js.br +0 -0
  226. package/public/assets/flowGraphSendCustomEventBlock-BSbW6X-n.js.gz +0 -0
  227. package/public/assets/flowGraphSequenceBlock-Ppc6pXve.js +1 -0
  228. package/public/assets/flowGraphSequenceBlock-Ppc6pXve.js.br +0 -0
  229. package/public/assets/flowGraphSequenceBlock-Ppc6pXve.js.gz +0 -0
  230. package/public/assets/flowGraphSetDelayBlock-Ckikj9nw.js +1 -0
  231. package/public/assets/flowGraphSetDelayBlock-Ckikj9nw.js.br +0 -0
  232. package/public/assets/flowGraphSetDelayBlock-Ckikj9nw.js.gz +0 -0
  233. package/public/assets/flowGraphSetPropertyBlock-BgUzizbV.js +1 -0
  234. package/public/assets/flowGraphSetPropertyBlock-BgUzizbV.js.br +0 -0
  235. package/public/assets/flowGraphSetPropertyBlock-BgUzizbV.js.gz +0 -0
  236. package/public/assets/flowGraphSetVariableBlock-BdpCJTDy.js +1 -0
  237. package/public/assets/flowGraphSetVariableBlock-BdpCJTDy.js.br +0 -0
  238. package/public/assets/flowGraphSetVariableBlock-BdpCJTDy.js.gz +0 -0
  239. package/public/assets/flowGraphStopAnimationBlock-NXtDyWkx.js +1 -0
  240. package/public/assets/flowGraphStopAnimationBlock-NXtDyWkx.js.br +0 -0
  241. package/public/assets/flowGraphStopAnimationBlock-NXtDyWkx.js.gz +0 -0
  242. package/public/assets/flowGraphSwitchBlock-BtAbN5pw.js +1 -0
  243. package/public/assets/flowGraphSwitchBlock-BtAbN5pw.js.br +0 -0
  244. package/public/assets/flowGraphSwitchBlock-BtAbN5pw.js.gz +0 -0
  245. package/public/assets/flowGraphThrottleBlock-DouJgya1.js +1 -0
  246. package/public/assets/flowGraphThrottleBlock-DouJgya1.js.br +0 -0
  247. package/public/assets/flowGraphThrottleBlock-DouJgya1.js.gz +0 -0
  248. package/public/assets/flowGraphTransformCoordinatesSystemBlock-DnCim8eo.js +1 -0
  249. package/public/assets/flowGraphTransformCoordinatesSystemBlock-DnCim8eo.js.br +0 -0
  250. package/public/assets/flowGraphTransformCoordinatesSystemBlock-DnCim8eo.js.gz +0 -0
  251. package/public/assets/flowGraphTypeToTypeBlocks-DvTPkHj8.js +1 -0
  252. package/public/assets/flowGraphTypeToTypeBlocks-DvTPkHj8.js.br +4 -0
  253. package/public/assets/flowGraphTypeToTypeBlocks-DvTPkHj8.js.gz +0 -0
  254. package/public/assets/flowGraphUnaryOperationBlock-DfKZLa84.js +1 -0
  255. package/public/assets/flowGraphUnaryOperationBlock-DfKZLa84.js.br +0 -0
  256. package/public/assets/flowGraphUnaryOperationBlock-DfKZLa84.js.gz +0 -0
  257. package/public/assets/flowGraphVectorMathBlocks-BQCEcK0m.js +1 -0
  258. package/public/assets/flowGraphVectorMathBlocks-BQCEcK0m.js.br +0 -0
  259. package/public/assets/flowGraphVectorMathBlocks-BQCEcK0m.js.gz +0 -0
  260. package/public/assets/flowGraphWaitAllBlock-ClqfM5vn.js +1 -0
  261. package/public/assets/flowGraphWaitAllBlock-ClqfM5vn.js.br +0 -0
  262. package/public/assets/flowGraphWaitAllBlock-ClqfM5vn.js.gz +0 -0
  263. package/public/assets/flowGraphWhileLoopBlock-DkTf5x3Z.js +1 -0
  264. package/public/assets/flowGraphWhileLoopBlock-DkTf5x3Z.js.br +0 -0
  265. package/public/assets/flowGraphWhileLoopBlock-DkTf5x3Z.js.gz +0 -0
  266. package/public/assets/fogFragmentDeclaration-CJgnG_Ui.js +22 -0
  267. package/public/assets/fogFragmentDeclaration-CJgnG_Ui.js.br +0 -0
  268. package/public/assets/fogFragmentDeclaration-CJgnG_Ui.js.gz +0 -0
  269. package/public/assets/fogFragmentDeclaration-Dk_KLGI0.js +23 -0
  270. package/public/assets/fogFragmentDeclaration-Dk_KLGI0.js.br +0 -0
  271. package/public/assets/fogFragmentDeclaration-Dk_KLGI0.js.gz +0 -0
  272. package/public/assets/glowBlurPostProcess.fragment-BmoPp0DJ.js +7 -0
  273. package/public/assets/glowBlurPostProcess.fragment-BmoPp0DJ.js.br +0 -0
  274. package/public/assets/glowBlurPostProcess.fragment-BmoPp0DJ.js.gz +0 -0
  275. package/public/assets/glowBlurPostProcess.fragment-DSvlweiI.js +7 -0
  276. package/public/assets/glowBlurPostProcess.fragment-DSvlweiI.js.br +0 -0
  277. package/public/assets/glowBlurPostProcess.fragment-DSvlweiI.js.gz +0 -0
  278. package/public/assets/glowMapGeneration.fragment-BmCna86b.js +63 -0
  279. package/public/assets/glowMapGeneration.fragment-BmCna86b.js.br +0 -0
  280. package/public/assets/glowMapGeneration.fragment-BmCna86b.js.gz +0 -0
  281. package/public/assets/glowMapGeneration.fragment-Bx0somqR.js +63 -0
  282. package/public/assets/glowMapGeneration.fragment-Bx0somqR.js.br +0 -0
  283. package/public/assets/glowMapGeneration.fragment-Bx0somqR.js.gz +0 -0
  284. package/public/assets/glowMapGeneration.vertex-C_K1FVYg.js +75 -0
  285. package/public/assets/glowMapGeneration.vertex-C_K1FVYg.js.br +0 -0
  286. package/public/assets/glowMapGeneration.vertex-C_K1FVYg.js.gz +0 -0
  287. package/public/assets/glowMapGeneration.vertex-Fp7OnH6p.js +75 -0
  288. package/public/assets/glowMapGeneration.vertex-Fp7OnH6p.js.br +0 -0
  289. package/public/assets/glowMapGeneration.vertex-Fp7OnH6p.js.gz +0 -0
  290. package/public/assets/glowMapMerge.fragment-0u_W2SCj.js +25 -0
  291. package/public/assets/glowMapMerge.fragment-0u_W2SCj.js.br +0 -0
  292. package/public/assets/glowMapMerge.fragment-0u_W2SCj.js.gz +0 -0
  293. package/public/assets/glowMapMerge.fragment-DbrUnHjm.js +23 -0
  294. package/public/assets/glowMapMerge.fragment-DbrUnHjm.js.br +0 -0
  295. package/public/assets/glowMapMerge.fragment-DbrUnHjm.js.gz +0 -0
  296. package/public/assets/glowMapMerge.vertex-CuTJKa7K.js +7 -0
  297. package/public/assets/glowMapMerge.vertex-CuTJKa7K.js.br +0 -0
  298. package/public/assets/glowMapMerge.vertex-CuTJKa7K.js.gz +0 -0
  299. package/public/assets/glowMapMerge.vertex-DAvXVsHl.js +8 -0
  300. package/public/assets/glowMapMerge.vertex-DAvXVsHl.js.br +0 -0
  301. package/public/assets/glowMapMerge.vertex-DAvXVsHl.js.gz +0 -0
  302. package/public/assets/grain.fragment-6VtM1VfQ.js +6 -0
  303. package/public/assets/grain.fragment-6VtM1VfQ.js.br +0 -0
  304. package/public/assets/grain.fragment-6VtM1VfQ.js.gz +0 -0
  305. package/public/assets/grain.fragment-DDSnqVVY.js +5 -0
  306. package/public/assets/grain.fragment-DDSnqVVY.js.br +4 -1
  307. package/public/assets/grain.fragment-DDSnqVVY.js.gz +0 -0
  308. package/public/assets/harmonicsFunctions-BKiAKdWL.js +189 -0
  309. package/public/assets/harmonicsFunctions-BKiAKdWL.js.br +0 -0
  310. package/public/assets/harmonicsFunctions-BKiAKdWL.js.gz +0 -0
  311. package/public/assets/harmonicsFunctions-BdFr0SEn.js +192 -0
  312. package/public/assets/harmonicsFunctions-BdFr0SEn.js.br +0 -0
  313. package/public/assets/harmonicsFunctions-BdFr0SEn.js.gz +0 -0
  314. package/public/assets/hdrTextureLoader-BZMtuzrh.js +2 -0
  315. package/public/assets/hdrTextureLoader-BZMtuzrh.js.br +0 -0
  316. package/public/assets/hdrTextureLoader-BZMtuzrh.js.gz +0 -0
  317. package/public/assets/hemisphericLight-BF-Si7a7.js +1 -0
  318. package/public/assets/hemisphericLight-BF-Si7a7.js.br +0 -0
  319. package/public/assets/hemisphericLight-BF-Si7a7.js.gz +0 -0
  320. package/public/assets/iesTextureLoader-CfjtMyLq.js +2 -0
  321. package/public/assets/iesTextureLoader-CfjtMyLq.js.br +0 -0
  322. package/public/assets/iesTextureLoader-CfjtMyLq.js.gz +0 -0
  323. package/public/assets/index-Bc_2vm3Z.js +4 -0
  324. package/public/assets/index-Bc_2vm3Z.js.br +0 -0
  325. package/public/assets/index-Bc_2vm3Z.js.gz +0 -0
  326. package/public/assets/index-DKM_mvsP.js +1 -0
  327. package/public/assets/index-DKM_mvsP.js.br +0 -0
  328. package/public/assets/index-DKM_mvsP.js.gz +0 -0
  329. package/public/assets/instancesDeclaration-DpE3Y0C1.js +23 -0
  330. package/public/assets/instancesDeclaration-DpE3Y0C1.js.br +0 -0
  331. package/public/assets/instancesDeclaration-DpE3Y0C1.js.gz +0 -0
  332. package/public/assets/ktxTextureLoader-7eTZtvh5.js +1 -0
  333. package/public/assets/ktxTextureLoader-7eTZtvh5.js.br +0 -0
  334. package/public/assets/ktxTextureLoader-7eTZtvh5.js.gz +0 -0
  335. package/public/assets/lazy-BcZCe0kL.js +2 -0
  336. package/public/assets/lazy-BcZCe0kL.js.br +0 -0
  337. package/public/assets/lazy-BcZCe0kL.js.gz +0 -0
  338. package/public/assets/lod.fragment-CEfFyCdU.js +3 -0
  339. package/public/assets/lod.fragment-CEfFyCdU.js.br +0 -0
  340. package/public/assets/lod.fragment-CEfFyCdU.js.gz +0 -0
  341. package/public/assets/lod.fragment-DT0r7jVm.js +3 -0
  342. package/public/assets/lod.fragment-DT0r7jVm.js.br +0 -0
  343. package/public/assets/lod.fragment-DT0r7jVm.js.gz +0 -0
  344. package/public/assets/lodCube.fragment-BP5e9OXG.js +22 -0
  345. package/public/assets/lodCube.fragment-BP5e9OXG.js.br +0 -0
  346. package/public/assets/lodCube.fragment-BP5e9OXG.js.gz +0 -0
  347. package/public/assets/lodCube.fragment-mh7W3FpN.js +22 -0
  348. package/public/assets/lodCube.fragment-mh7W3FpN.js.br +0 -0
  349. package/public/assets/lodCube.fragment-mh7W3FpN.js.gz +0 -0
  350. package/public/assets/logDepthDeclaration-DapB3ji1.js +4 -0
  351. package/public/assets/logDepthDeclaration-_-FceU2g.js +4 -0
  352. package/public/assets/logDepthFragment-BowlR5UY.js +4 -0
  353. package/public/assets/logDepthFragment-D1ov0i96.js +4 -0
  354. package/public/assets/logDepthFragment-D1ov0i96.js.br +0 -0
  355. package/public/assets/logDepthFragment-D1ov0i96.js.gz +0 -0
  356. package/public/assets/logDepthVertex-dEn2jB_d.js +4 -0
  357. package/public/assets/logDepthVertex-dEn2jB_d.js.br +2 -0
  358. package/public/assets/logDepthVertex-dEn2jB_d.js.gz +0 -0
  359. package/public/assets/logDepthVertex-jWY57236.js +4 -0
  360. package/public/assets/logDepthVertex-jWY57236.js.br +3 -0
  361. package/public/assets/logDepthVertex-jWY57236.js.gz +0 -0
  362. package/public/assets/mainUVVaryingDeclaration-B-lJcjME.js +4 -0
  363. package/public/assets/mainUVVaryingDeclaration-D1LMmumw.js +4 -0
  364. package/public/assets/mesh.vertexData.functions-BXkNVxNr.js +1 -0
  365. package/public/assets/mesh.vertexData.functions-BXkNVxNr.js.br +0 -0
  366. package/public/assets/mesh.vertexData.functions-BXkNVxNr.js.gz +0 -0
  367. package/public/assets/meshUboDeclaration-B5FWJmqY.js +13 -0
  368. package/public/assets/meshUboDeclaration-B5FWJmqY.js.br +1 -0
  369. package/public/assets/meshUboDeclaration-B5FWJmqY.js.gz +0 -0
  370. package/public/assets/meshUboDeclaration-DthvNL2q.js +13 -0
  371. package/public/assets/meshUboDeclaration-DthvNL2q.js.br +0 -0
  372. package/public/assets/meshUboDeclaration-DthvNL2q.js.gz +0 -0
  373. package/public/assets/morphTargetsVertex-DHRA_mKb.js +100 -0
  374. package/public/assets/morphTargetsVertex-DHRA_mKb.js.br +0 -0
  375. package/public/assets/morphTargetsVertex-DHRA_mKb.js.gz +0 -0
  376. package/public/assets/oitFinalSimpleBlend.fragment-BDN2XF0x.js +2 -0
  377. package/public/assets/oitFinalSimpleBlend.fragment-BDN2XF0x.js.br +0 -0
  378. package/public/assets/oitFinalSimpleBlend.fragment-BDN2XF0x.js.gz +0 -0
  379. package/public/assets/oitFinalSimpleBlend.fragment-C5RtcXZE.js +3 -0
  380. package/public/assets/oitFinalSimpleBlend.fragment-C5RtcXZE.js.br +0 -0
  381. package/public/assets/oitFinalSimpleBlend.fragment-C5RtcXZE.js.gz +0 -0
  382. package/public/assets/oitFragment-CAXGfgFH.js +1202 -0
  383. package/public/assets/oitFragment-CAXGfgFH.js.br +0 -0
  384. package/public/assets/oitFragment-CAXGfgFH.js.gz +0 -0
  385. package/public/assets/oitFragment-ay081Wsi.js +1077 -0
  386. package/public/assets/oitFragment-ay081Wsi.js.br +0 -0
  387. package/public/assets/oitFragment-ay081Wsi.js.gz +0 -0
  388. package/public/assets/openpbrMaterial-KVtjwf0K.js +2 -0
  389. package/public/assets/openpbrMaterial-KVtjwf0K.js.br +0 -0
  390. package/public/assets/openpbrMaterial-KVtjwf0K.js.gz +0 -0
  391. package/public/assets/outline.fragment-BanVWYIB.js +21 -0
  392. package/public/assets/outline.fragment-BanVWYIB.js.br +0 -0
  393. package/public/assets/outline.fragment-BanVWYIB.js.gz +0 -0
  394. package/public/assets/outline.fragment-CFKJOJ3l.js +18 -0
  395. package/public/assets/outline.fragment-CFKJOJ3l.js.br +0 -0
  396. package/public/assets/outline.fragment-CFKJOJ3l.js.gz +0 -0
  397. package/public/assets/outline.vertex-1q1i1Z0k.js +47 -0
  398. package/public/assets/outline.vertex-1q1i1Z0k.js.br +0 -0
  399. package/public/assets/outline.vertex-1q1i1Z0k.js.gz +0 -0
  400. package/public/assets/outline.vertex-yrM712o1.js +47 -0
  401. package/public/assets/outline.vertex-yrM712o1.js.br +0 -0
  402. package/public/assets/outline.vertex-yrM712o1.js.gz +0 -0
  403. package/public/assets/passCube.fragment-4x9m1yB9.js +23 -0
  404. package/public/assets/passCube.fragment-4x9m1yB9.js.br +0 -0
  405. package/public/assets/passCube.fragment-4x9m1yB9.js.gz +0 -0
  406. package/public/assets/passCube.fragment-j0YEcfrM.js +23 -0
  407. package/public/assets/passCube.fragment-j0YEcfrM.js.br +3 -0
  408. package/public/assets/passCube.fragment-j0YEcfrM.js.gz +0 -0
  409. package/public/assets/pbr.fragment-D4c9Imut.js +3277 -0
  410. package/public/assets/pbr.fragment-D4c9Imut.js.br +0 -0
  411. package/public/assets/pbr.fragment-D4c9Imut.js.gz +0 -0
  412. package/public/assets/pbr.fragment-qKZeRSsL.js +3327 -0
  413. package/public/assets/pbr.fragment-qKZeRSsL.js.br +0 -0
  414. package/public/assets/pbr.fragment-qKZeRSsL.js.gz +0 -0
  415. package/public/assets/pbr.vertex-CNWuYREY.js +227 -0
  416. package/public/assets/pbr.vertex-CNWuYREY.js.br +0 -0
  417. package/public/assets/pbr.vertex-CNWuYREY.js.gz +0 -0
  418. package/public/assets/pbr.vertex-joJmxK7Z.js +357 -0
  419. package/public/assets/pbr.vertex-joJmxK7Z.js.br +0 -0
  420. package/public/assets/pbr.vertex-joJmxK7Z.js.gz +0 -0
  421. package/public/assets/playable-local-editor-entry-BpT9asOr.js +4 -0
  422. package/public/assets/playable-local-editor-entry-BpT9asOr.js.br +0 -0
  423. package/public/assets/playable-local-editor-entry-BpT9asOr.js.gz +0 -0
  424. package/public/assets/playable-sdk-CrJqCMfO.js +5074 -0
  425. package/public/assets/playable-sdk-CrJqCMfO.js.br +0 -0
  426. package/public/assets/playable-sdk-CrJqCMfO.js.gz +0 -0
  427. package/public/assets/rgbdDecode.fragment-DVQvgSkR.js +5 -0
  428. package/public/assets/rgbdDecode.fragment-DVQvgSkR.js.br +0 -0
  429. package/public/assets/rgbdDecode.fragment-DVQvgSkR.js.gz +0 -0
  430. package/public/assets/rgbdDecode.fragment-jfF24wPs.js +5 -0
  431. package/public/assets/rgbdDecode.fragment-jfF24wPs.js.br +0 -0
  432. package/public/assets/rgbdDecode.fragment-jfF24wPs.js.gz +0 -0
  433. package/public/assets/rgbdEncode.fragment-AWVgflWm.js +5 -0
  434. package/public/assets/rgbdEncode.fragment-AWVgflWm.js.br +0 -0
  435. package/public/assets/rgbdEncode.fragment-AWVgflWm.js.gz +0 -0
  436. package/public/assets/rgbdEncode.fragment-DZGlem9k.js +5 -0
  437. package/public/assets/rgbdEncode.fragment-DZGlem9k.js.br +0 -0
  438. package/public/assets/rgbdEncode.fragment-DZGlem9k.js.gz +0 -0
  439. package/public/assets/sceneLoader-BJz_3O1N.js +1 -0
  440. package/public/assets/sceneLoader-BJz_3O1N.js.br +0 -0
  441. package/public/assets/sceneLoader-BJz_3O1N.js.gz +0 -0
  442. package/public/assets/screenSpaceCurvature.fragment-B-CUjGj1.js +15 -0
  443. package/public/assets/screenSpaceCurvature.fragment-B-CUjGj1.js.br +0 -0
  444. package/public/assets/screenSpaceCurvature.fragment-B-CUjGj1.js.gz +0 -0
  445. package/public/assets/selection.fragment-G8Edn4iI.js +35 -0
  446. package/public/assets/selection.fragment-G8Edn4iI.js.br +0 -0
  447. package/public/assets/selection.fragment-G8Edn4iI.js.gz +0 -0
  448. package/public/assets/selection.fragment-lxotM05-.js +35 -0
  449. package/public/assets/selection.fragment-lxotM05-.js.br +0 -0
  450. package/public/assets/selection.fragment-lxotM05-.js.gz +0 -0
  451. package/public/assets/selection.vertex-BXV_f7Y2.js +74 -0
  452. package/public/assets/selection.vertex-BXV_f7Y2.js.br +0 -0
  453. package/public/assets/selection.vertex-BXV_f7Y2.js.gz +0 -0
  454. package/public/assets/selection.vertex-N4uHCMNz.js +73 -0
  455. package/public/assets/selection.vertex-N4uHCMNz.js.br +0 -0
  456. package/public/assets/selection.vertex-N4uHCMNz.js.gz +0 -0
  457. package/public/assets/selectionOutline.fragment-GI37GIN9.js +48 -0
  458. package/public/assets/selectionOutline.fragment-GI37GIN9.js.br +0 -0
  459. package/public/assets/selectionOutline.fragment-GI37GIN9.js.gz +0 -0
  460. package/public/assets/selectionOutline.fragment-Hvq4J9-Z.js +47 -0
  461. package/public/assets/selectionOutline.fragment-Hvq4J9-Z.js.br +0 -0
  462. package/public/assets/selectionOutline.fragment-Hvq4J9-Z.js.gz +0 -0
  463. package/public/assets/shadowMap.fragment-Bc5HgWvg.js +79 -0
  464. package/public/assets/shadowMap.fragment-Bc5HgWvg.js.br +0 -0
  465. package/public/assets/shadowMap.fragment-Bc5HgWvg.js.gz +0 -0
  466. package/public/assets/shadowMap.fragment-C43vlUxN.js +78 -0
  467. package/public/assets/shadowMap.fragment-C43vlUxN.js.br +0 -0
  468. package/public/assets/shadowMap.fragment-C43vlUxN.js.gz +0 -0
  469. package/public/assets/shadowMap.vertex-CneYEevu.js +119 -0
  470. package/public/assets/shadowMap.vertex-CneYEevu.js.br +0 -0
  471. package/public/assets/shadowMap.vertex-CneYEevu.js.gz +0 -0
  472. package/public/assets/shadowMap.vertex-DCmGPxPg.js +109 -0
  473. package/public/assets/shadowMap.vertex-DCmGPxPg.js.br +0 -0
  474. package/public/assets/shadowMap.vertex-DCmGPxPg.js.gz +0 -0
  475. package/public/assets/shadowMapFragmentSoftTransparentShadow-20DchIFl.js +4 -0
  476. package/public/assets/shadowMapFragmentSoftTransparentShadow-20DchIFl.js.br +0 -0
  477. package/public/assets/shadowMapFragmentSoftTransparentShadow-20DchIFl.js.gz +0 -0
  478. package/public/assets/shadowMapFragmentSoftTransparentShadow-CcyAwByw.js +4 -0
  479. package/public/assets/shadowMapFragmentSoftTransparentShadow-CcyAwByw.js.br +0 -0
  480. package/public/assets/shadowMapFragmentSoftTransparentShadow-CcyAwByw.js.gz +0 -0
  481. package/public/assets/sharpen.fragment-u0Zk00IW.js +8 -0
  482. package/public/assets/sharpen.fragment-u0Zk00IW.js.br +0 -0
  483. package/public/assets/sharpen.fragment-u0Zk00IW.js.gz +0 -0
  484. package/public/assets/standardMaterial-CgDYhl-K.js +1329 -0
  485. package/public/assets/standardMaterial-CgDYhl-K.js.br +0 -0
  486. package/public/assets/standardMaterial-CgDYhl-K.js.gz +0 -0
  487. package/public/assets/textureMerger.fragment-Bb06oGwL.js +84 -0
  488. package/public/assets/textureMerger.fragment-Bb06oGwL.js.br +0 -0
  489. package/public/assets/textureMerger.fragment-Bb06oGwL.js.gz +0 -0
  490. package/public/assets/textureMerger.fragment-yYgn-A7X.js +76 -0
  491. package/public/assets/textureMerger.fragment-yYgn-A7X.js.br +0 -0
  492. package/public/assets/textureMerger.fragment-yYgn-A7X.js.gz +0 -0
  493. package/public/assets/tgaTextureLoader-BD8cHb3T.js +1 -0
  494. package/public/assets/tgaTextureLoader-BD8cHb3T.js.br +0 -0
  495. package/public/assets/tgaTextureLoader-BD8cHb3T.js.gz +0 -0
  496. package/public/assets/vertexColorMixing-31u6kp3A.js +24 -0
  497. package/public/assets/vertexColorMixing-31u6kp3A.js.br +1 -0
  498. package/public/assets/vertexColorMixing-31u6kp3A.js.gz +0 -0
  499. package/public/assets/vertexColorMixing-CWKPQGdm.js +20 -0
  500. package/public/assets/vertexColorMixing-CWKPQGdm.js.br +0 -0
  501. package/public/assets/vertexColorMixing-CWKPQGdm.js.gz +0 -0
  502. package/public/assets/volumetricLightingBlendVolume.fragment-9wHUWZ30.js +11 -0
  503. package/public/assets/volumetricLightingBlendVolume.fragment-9wHUWZ30.js.br +0 -0
  504. package/public/assets/volumetricLightingBlendVolume.fragment-9wHUWZ30.js.gz +0 -0
  505. package/public/assets/volumetricLightingBlendVolume.fragment-N-9p72Fm.js +12 -0
  506. package/public/assets/volumetricLightingBlendVolume.fragment-N-9p72Fm.js.br +0 -0
  507. package/public/assets/volumetricLightingBlendVolume.fragment-N-9p72Fm.js.gz +0 -0
  508. package/public/assets/volumetricLightingRenderVolume.fragment-DJkHTox8.js +15 -0
  509. package/public/assets/volumetricLightingRenderVolume.fragment-DJkHTox8.js.br +0 -0
  510. package/public/assets/volumetricLightingRenderVolume.fragment-DJkHTox8.js.gz +0 -0
  511. package/public/assets/volumetricLightingRenderVolume.fragment-uuHa0TVJ.js +13 -0
  512. package/public/assets/volumetricLightingRenderVolume.fragment-uuHa0TVJ.js.br +0 -0
  513. package/public/assets/volumetricLightingRenderVolume.fragment-uuHa0TVJ.js.gz +0 -0
  514. package/public/assets/volumetricLightingRenderVolume.vertex-DR3E2COu.js +4 -0
  515. package/public/assets/volumetricLightingRenderVolume.vertex-DR3E2COu.js.br +0 -0
  516. package/public/assets/volumetricLightingRenderVolume.vertex-DR3E2COu.js.gz +0 -0
  517. package/public/assets/volumetricLightingRenderVolume.vertex-DhGKqZWW.js +5 -0
  518. package/public/assets/volumetricLightingRenderVolume.vertex-DhGKqZWW.js.br +0 -0
  519. package/public/assets/volumetricLightingRenderVolume.vertex-DhGKqZWW.js.gz +0 -0
  520. package/public/assets/webAudioBus-uR5af0TN.js +1 -0
  521. package/public/assets/webAudioBus-uR5af0TN.js.br +0 -0
  522. package/public/assets/webAudioBus-uR5af0TN.js.gz +0 -0
  523. package/public/assets/webAudioMainBus-B4JHk1VB.js +1 -0
  524. package/public/assets/webAudioMainBus-B4JHk1VB.js.br +0 -0
  525. package/public/assets/webAudioMainBus-B4JHk1VB.js.gz +0 -0
  526. package/public/assets/workerPool-H9Ji3mCo.js +1 -0
  527. package/public/assets/workerPool-H9Ji3mCo.js.br +2 -0
  528. package/public/assets/workerPool-H9Ji3mCo.js.gz +0 -0
  529. package/public/index.html +19 -0
  530. package/public/index.html.br +0 -0
  531. package/public/index.html.gz +0 -0
  532. package/runtime/editor-control-plane.mjs +5 -0
  533. package/worker/editor-service-worker.mjs +1 -0
@@ -0,0 +1,4 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./animationGroup-BN6ExD_I.js","./animation-DY4Gs-Pw.js","./standardMaterial-CgDYhl-K.js","./lazy-BcZCe0kL.js","./workerPool-H9Ji3mCo.js","./openpbrMaterial-KVtjwf0K.js"])))=>i.map(i=>d[i]);
2
+ import{gm as D,dJ as ee,di as R,b5 as Rs,fg as Kn,bK as Un,dt as Z,gD as Wn,gC as w,gB as Ie,fQ as H,bw as be,fo as Ls,Z as Ps,c as ks,ce as Fs,fE as Bt,Y as O,dk as ae,a0 as le,eT as Y,bo as Gt,b_ as Nt,Q as Bs,dv as we,gF as zn,gE as k,dB as qn,cc as Gs,fL as Yn,h2 as Te,gp as St,O as jn,cq as Xn,cZ as bs,df as Zn,cw as Jn,gh as re,L as Qn,fB as er,fC as tr,da as Dt,f1 as sr,eW as Ot}from"./standardMaterial-CgDYhl-K.js";import{RegisterSceneLoaderPlugin as nr}from"./sceneLoader-BJz_3O1N.js";import{D as Ge,k as rr,aR as $t,ax as Vt,aU as ce,p as Pe,bo as ar,af as or,ae as ir,a6 as Ds,x as Ee,ay as lr,ad as ur,z as Ts,aB as As,al as cr,aS as hr,aY as dr,i as mr,bq as fr,O as _r,as as pr,bm as gr,K as yr,aD as xs}from"./lazy-BcZCe0kL.js";import{A as x}from"./animation-DY4Gs-Pw.js";import{HemisphericLight as $s}from"./hemisphericLight-BF-Si7a7.js";import"./workerPool-H9Ji3mCo.js";function Rt(n,e,t,s){const r={externalResourceFunction:s};return t&&(r.uri=e==="file:"?t:e+t),ArrayBuffer.isView(n)?GLTFValidator.validateBytes(n,r):GLTFValidator.validateString(n,r)}function br(){const n=[];onmessage=e=>{const t=e.data;switch(t.id){case"init":{importScripts(t.url);break}case"validate":{Rt(t.data,t.rootUrl,t.fileName,s=>new Promise((r,a)=>{const o=n.length;n.push({resolve:r,reject:a}),postMessage({id:"getExternalResource",index:o,uri:s})})).then(s=>{postMessage({id:"validate.resolve",value:s})},s=>{postMessage({id:"validate.reject",reason:s})});break}case"getExternalResource.resolve":{n[t.index].resolve(t.value);break}case"getExternalResource.reject":{n[t.index].reject(t.reason);break}}}}class ke{static ValidateAsync(e,t,s,r){return typeof Worker=="function"?new Promise((a,o)=>{const i=`${Rt}(${br})()`,l=URL.createObjectURL(new Blob([i],{type:"application/javascript"})),u=new Worker(l),c=d=>{u.removeEventListener("error",c),u.removeEventListener("message",h),o(d)},h=d=>{const f=d.data;switch(f.id){case"getExternalResource":{r(f.uri).then(p=>{u.postMessage({id:"getExternalResource.resolve",index:f.index,value:p},[p.buffer])},p=>{u.postMessage({id:"getExternalResource.reject",index:f.index,reason:p})});break}case"validate.resolve":{u.removeEventListener("error",c),u.removeEventListener("message",h),ke._LastResults=f.value,a(f.value),u.terminate();break}case"validate.reject":u.removeEventListener("error",c),u.removeEventListener("message",h),o(f.reason),u.terminate()}};if(u.addEventListener("error",c),u.addEventListener("message",h),u.postMessage({id:"init",url:D.GetBabylonScriptURL(this.Configuration.url)}),ArrayBuffer.isView(e)){const d=e.slice();u.postMessage({id:"validate",data:d,rootUrl:t,fileName:s},[d.buffer])}else u.postMessage({id:"validate",data:e,rootUrl:t,fileName:s})}):(this._LoadScriptPromise||(this._LoadScriptPromise=D.LoadBabylonScriptAsync(this.Configuration.url)),this._LoadScriptPromise.then(()=>Rt(e,t,s,r)))}}ke.Configuration={url:`${D._DefaultCdnUrl}/gltf_validator.js`};ke._LastResults=null;const pe="Z2xURg",De={name:"gltf",extensions:{".gltf":{isBinary:!1,mimeType:"model/gltf+json"},".glb":{isBinary:!0,mimeType:"model/gltf-binary"}},canDirectLoad(n){return n.indexOf("asset")!==-1&&n.indexOf("version")!==-1||n.startsWith("data:base64,"+pe)||n.startsWith("data:;base64,"+pe)||n.startsWith("data:application/octet-stream;base64,"+pe)||n.startsWith("data:model/gltf-binary;base64,"+pe)}};function Cs(n,e,t){try{return Promise.resolve(new Uint8Array(n,e,t))}catch(s){return Promise.reject(s)}}function Tr(n,e,t){try{if(e<0||e>=n.byteLength)throw new RangeError("Offset is out of range.");if(e+t>n.byteLength)throw new RangeError("Length is out of range.");return Promise.resolve(new Uint8Array(n.buffer,n.byteOffset+e,t))}catch(s){return Promise.reject(s)}}var Ne;(function(n){n[n.AUTO=0]="AUTO",n[n.FORCE_RIGHT_HANDED=1]="FORCE_RIGHT_HANDED"})(Ne||(Ne={}));var xe;(function(n){n[n.NONE=0]="NONE",n[n.FIRST=1]="FIRST",n[n.ALL=2]="ALL"})(xe||(xe={}));var se;(function(n){n[n.LOADING=0]="LOADING",n[n.READY=1]="READY",n[n.COMPLETE=2]="COMPLETE"})(se||(se={}));class Vs{constructor(){this.alwaysComputeBoundingBox=!1,this.alwaysComputeSkeletonRootNode=!1,this.animationStartMode=xe.FIRST,this.compileMaterials=!1,this.compileShadowGenerators=!1,this.coordinateSystemMode=Ne.AUTO,this.createInstances=!0,this.loadAllMaterials=!1,this.loadMorphTargets=!0,this.loadNodeAnimations=!0,this.loadOnlyMaterials=!1,this.loadSkins=!0,this.skipMaterials=!1,this.targetFps=60,this.transparencyAsCoverage=!1,this.useClipPlane=!1,this.useGltfTextureNames=!1,this.useRangeRequests=!1,this.useSRGBBuffers=!0,this.validate=!1,this.useOpenPBR=!1,this.dontUseTransmissionHelper=!1}}const Ar=new Vs;class xr extends Vs{constructor(){super(...arguments),this.extensionOptions={},this.preprocessUrlAsync=e=>Promise.resolve(e)}copyFrom(e){e&&(this.alwaysComputeBoundingBox=e.alwaysComputeBoundingBox??this.alwaysComputeBoundingBox,this.alwaysComputeSkeletonRootNode=e.alwaysComputeSkeletonRootNode??this.alwaysComputeSkeletonRootNode,this.animationStartMode=e.animationStartMode??this.animationStartMode,this.capturePerformanceCounters=e.capturePerformanceCounters??this.capturePerformanceCounters,this.compileMaterials=e.compileMaterials??this.compileMaterials,this.compileShadowGenerators=e.compileShadowGenerators??this.compileShadowGenerators,this.coordinateSystemMode=e.coordinateSystemMode??this.coordinateSystemMode,this.createInstances=e.createInstances??this.createInstances,this.customRootNode=e.customRootNode,this.extensionOptions=e.extensionOptions??this.extensionOptions,this.loadAllMaterials=e.loadAllMaterials??this.loadAllMaterials,this.loadMorphTargets=e.loadMorphTargets??this.loadMorphTargets,this.loadNodeAnimations=e.loadNodeAnimations??this.loadNodeAnimations,this.loadOnlyMaterials=e.loadOnlyMaterials??this.loadOnlyMaterials,this.loadSkins=e.loadSkins??this.loadSkins,this.loggingEnabled=e.loggingEnabled??this.loggingEnabled,this.onCameraLoaded=e.onCameraLoaded,this.onMaterialLoaded=e.onMaterialLoaded,this.onMeshLoaded=e.onMeshLoaded,this.onParsed=e.onParsed,this.onSkinLoaded=e.onSkinLoaded,this.onTextureLoaded=e.onTextureLoaded,this.onValidated=e.onValidated,this.preprocessUrlAsync=e.preprocessUrlAsync??this.preprocessUrlAsync,this.skipMaterials=e.skipMaterials??this.skipMaterials,this.targetFps=e.targetFps??this.targetFps,this.transparencyAsCoverage=e.transparencyAsCoverage??this.transparencyAsCoverage,this.useClipPlane=e.useClipPlane??this.useClipPlane,this.useGltfTextureNames=e.useGltfTextureNames??this.useGltfTextureNames,this.useOpenPBR=e.useOpenPBR??this.useOpenPBR,this.useRangeRequests=e.useRangeRequests??this.useRangeRequests,this.useSRGBBuffers=e.useSRGBBuffers??this.useSRGBBuffers,this.validate=e.validate??this.validate,this.dontUseTransmissionHelper=e.dontUseTransmissionHelper??this.dontUseTransmissionHelper)}}class q extends xr{constructor(e){super(),this.onParsedObservable=new ee,this.onMeshLoadedObservable=new ee,this.onSkinLoadedObservable=new ee,this.onTextureLoadedObservable=new ee,this.onMaterialLoadedObservable=new ee,this.onCameraLoadedObservable=new ee,this.onCompleteObservable=new ee,this.onErrorObservable=new ee,this.onDisposeObservable=new ee,this.onExtensionLoadedObservable=new ee,this.onValidatedObservable=new ee,this._loader=null,this._state=null,this._requests=new Array,this.name=De.name,this.extensions=De.extensions,this.onLoaderStateChangedObservable=new ee,this._logIndentLevel=0,this._loggingEnabled=!1,this._log=this._logDisabled,this._capturePerformanceCounters=!1,this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled,this.copyFrom(Object.assign({...Ar},e))}set onParsed(e){this._onParsedObserver&&this.onParsedObservable.remove(this._onParsedObserver),e&&(this._onParsedObserver=this.onParsedObservable.add(e))}set onMeshLoaded(e){this._onMeshLoadedObserver&&this.onMeshLoadedObservable.remove(this._onMeshLoadedObserver),e&&(this._onMeshLoadedObserver=this.onMeshLoadedObservable.add(e))}set onSkinLoaded(e){this._onSkinLoadedObserver&&this.onSkinLoadedObservable.remove(this._onSkinLoadedObserver),e&&(this._onSkinLoadedObserver=this.onSkinLoadedObservable.add(t=>e(t.node,t.skinnedNode)))}set onTextureLoaded(e){this._onTextureLoadedObserver&&this.onTextureLoadedObservable.remove(this._onTextureLoadedObserver),e&&(this._onTextureLoadedObserver=this.onTextureLoadedObservable.add(e))}set onMaterialLoaded(e){this._onMaterialLoadedObserver&&this.onMaterialLoadedObservable.remove(this._onMaterialLoadedObserver),e&&(this._onMaterialLoadedObserver=this.onMaterialLoadedObservable.add(e))}set onCameraLoaded(e){this._onCameraLoadedObserver&&this.onCameraLoadedObservable.remove(this._onCameraLoadedObserver),e&&(this._onCameraLoadedObserver=this.onCameraLoadedObservable.add(e))}set onComplete(e){this._onCompleteObserver&&this.onCompleteObservable.remove(this._onCompleteObserver),this._onCompleteObserver=this.onCompleteObservable.add(e)}set onError(e){this._onErrorObserver&&this.onErrorObservable.remove(this._onErrorObserver),this._onErrorObserver=this.onErrorObservable.add(e)}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}set onExtensionLoaded(e){this._onExtensionLoadedObserver&&this.onExtensionLoadedObservable.remove(this._onExtensionLoadedObserver),this._onExtensionLoadedObserver=this.onExtensionLoadedObservable.add(e)}get loggingEnabled(){return this._loggingEnabled}set loggingEnabled(e){this._loggingEnabled!==e&&(this._loggingEnabled=e,this._loggingEnabled?this._log=this._logEnabled:this._log=this._logDisabled)}get capturePerformanceCounters(){return this._capturePerformanceCounters}set capturePerformanceCounters(e){this._capturePerformanceCounters!==e&&(this._capturePerformanceCounters=e,this._capturePerformanceCounters?(this._startPerformanceCounter=this._startPerformanceCounterEnabled,this._endPerformanceCounter=this._endPerformanceCounterEnabled):(this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled))}set onValidated(e){this._onValidatedObserver&&this.onValidatedObservable.remove(this._onValidatedObserver),this._onValidatedObserver=this.onValidatedObservable.add(e)}dispose(){this._loader&&(this._loader.dispose(),this._loader=null);for(const e of this._requests)e.abort();this._requests.length=0,delete this._progressCallback,this.preprocessUrlAsync=e=>Promise.resolve(e),this.onMeshLoadedObservable.clear(),this.onSkinLoadedObservable.clear(),this.onTextureLoadedObservable.clear(),this.onMaterialLoadedObservable.clear(),this.onCameraLoadedObservable.clear(),this.onCompleteObservable.clear(),this.onExtensionLoadedObservable.clear(),this.onDisposeObservable.notifyObservers(void 0),this.onDisposeObservable.clear()}loadFile(e,t,s,r,a,o,i,l){if(ArrayBuffer.isView(t))return this._loadBinary(e,t,s,r,i,l),null;this._progressCallback=a;const u=t.name||D.GetFilename(t);if(o){if(this.useRangeRequests){this.validate&&R.Warn("glTF validation is not supported when range requests are enabled");const c={abort:()=>{},onCompleteObservable:new ee},h={readAsync:(d,f)=>new Promise((p,E)=>{this._loadFile(e,t,T=>{p(new Uint8Array(T))},!0,T=>{E(T)},T=>{T.setRequestHeader("Range",`bytes=${d}-${d+f-1}`)})}),byteLength:0};return this._unpackBinaryAsync(new Ge(h)).then(d=>{c.onCompleteObservable.notifyObservers(c),r(d)},i?d=>i(void 0,d):void 0),c}return this._loadFile(e,t,c=>{this._validate(e,new Uint8Array(c,0,c.byteLength),s,u),this._unpackBinaryAsync(new Ge({readAsync:(h,d)=>Cs(c,h,d),byteLength:c.byteLength})).then(h=>{r(h)},i?h=>i(void 0,h):void 0)},!0,i)}else return this._loadFile(e,t,c=>{try{this._validate(e,c,s,u),r({json:this._parseJson(c)})}catch{i&&i()}},!1,i)}_loadBinary(e,t,s,r,a,o){this._validate(e,new Uint8Array(t.buffer,t.byteOffset,t.byteLength),s,o),this._unpackBinaryAsync(new Ge({readAsync:(i,l)=>Tr(t,i,l),byteLength:t.byteLength})).then(i=>{r(i)},a?i=>a(void 0,i):void 0)}importMeshAsync(e,t,s,r,a,o){return Promise.resolve().then(()=>(this.onParsedObservable.notifyObservers(s),this.onParsedObservable.clear(),this._log(`Loading ${o||""}`),this._loader=this._getLoader(s),this._loader.importMeshAsync(e,t,null,s,r,a,o)))}loadAsync(e,t,s,r,a){return Promise.resolve().then(()=>(this.onParsedObservable.notifyObservers(t),this.onParsedObservable.clear(),this._log(`Loading ${a||""}`),this._loader=this._getLoader(t),this._loader.loadAsync(e,t,s,r,a)))}loadAssetContainerAsync(e,t,s,r,a){return Promise.resolve().then(()=>{this.onParsedObservable.notifyObservers(t),this.onParsedObservable.clear(),this._log(`Loading ${a||""}`),this._loader=this._getLoader(t);const o=new rr(e),i=[];this.onMaterialLoadedObservable.add(h=>{i.push(h)});const l=[];this.onTextureLoadedObservable.add(h=>{l.push(h)});const u=[];this.onCameraLoadedObservable.add(h=>{u.push(h)});const c=[];return this.onMeshLoadedObservable.add(h=>{h.morphTargetManager&&c.push(h.morphTargetManager)}),this._loader.importMeshAsync(null,e,o,t,s,r,a).then(h=>(Array.prototype.push.apply(o.geometries,h.geometries),Array.prototype.push.apply(o.meshes,h.meshes),Array.prototype.push.apply(o.particleSystems,h.particleSystems),Array.prototype.push.apply(o.skeletons,h.skeletons),Array.prototype.push.apply(o.animationGroups,h.animationGroups),Array.prototype.push.apply(o.materials,i),Array.prototype.push.apply(o.textures,l),Array.prototype.push.apply(o.lights,h.lights),Array.prototype.push.apply(o.transformNodes,h.transformNodes),Array.prototype.push.apply(o.cameras,u),Array.prototype.push.apply(o.morphTargetManagers,c),o))})}canDirectLoad(e){return De.canDirectLoad(e)}directLoad(e,t){if(t.startsWith("base64,"+pe)||t.startsWith(";base64,"+pe)||t.startsWith("application/octet-stream;base64,"+pe)||t.startsWith("model/gltf-binary;base64,"+pe)){const s=Rs(t);return this._validate(e,new Uint8Array(s,0,s.byteLength)),this._unpackBinaryAsync(new Ge({readAsync:(r,a)=>Cs(s,r,a),byteLength:s.byteLength}))}return this._validate(e,t),Promise.resolve({json:this._parseJson(t)})}createPlugin(e){return new q(e[De.name])}get loaderState(){return this._state}whenCompleteAsync(){return new Promise((e,t)=>{this.onCompleteObservable.addOnce(()=>{e()}),this.onErrorObservable.addOnce(s=>{t(s)})})}_setState(e){this._state!==e&&(this._state=e,this.onLoaderStateChangedObservable.notifyObservers(this._state),this._log(se[this._state]))}_loadFile(e,t,s,r,a,o){const i=e._loadFile(t,s,l=>{this._onProgress(l,i)},!0,r,a,o);return i.onCompleteObservable.add(()=>{i._lengthComputable=!0,i._total=i._loaded}),this._requests.push(i),i}_onProgress(e,t){if(!this._progressCallback)return;t._lengthComputable=e.lengthComputable,t._loaded=e.loaded,t._total=e.total;let s=!0,r=0,a=0;for(const o of this._requests){if(o._lengthComputable===void 0||o._loaded===void 0||o._total===void 0)return;s=s&&o._lengthComputable,r+=o._loaded,a+=o._total}this._progressCallback({lengthComputable:s,loaded:r,total:s?a:0})}_validate(e,t,s="",r=""){this.validate&&(this._startPerformanceCounter("Validate JSON"),ke.ValidateAsync(t,s,r,a=>this.preprocessUrlAsync(s+a).then(o=>e._loadFileAsync(o,void 0,!0,!0).then(i=>new Uint8Array(i,0,i.byteLength)))).then(a=>{this._endPerformanceCounter("Validate JSON"),this.onValidatedObservable.notifyObservers(a),this.onValidatedObservable.clear()},a=>{this._endPerformanceCounter("Validate JSON"),D.Warn(`Failed to validate: ${a.message}`),this.onValidatedObservable.clear()}))}_getLoader(e){const t=e.json.asset||{};this._log(`Asset version: ${t.version}`),t.minVersion&&this._log(`Asset minimum version: ${t.minVersion}`),t.generator&&this._log(`Asset generator: ${t.generator}`);const s=q._parseVersion(t.version);if(!s)throw new Error("Invalid version: "+t.version);if(t.minVersion!==void 0){const o=q._parseVersion(t.minVersion);if(!o)throw new Error("Invalid minimum version: "+t.minVersion);if(q._compareVersion(o,{major:2,minor:0})>0)throw new Error("Incompatible minimum version: "+t.minVersion)}const a={1:q._CreateGLTF1Loader,2:q._CreateGLTF2Loader}[s.major];if(!a)throw new Error("Unsupported version: "+t.version);return a(this)}_parseJson(e){this._startPerformanceCounter("Parse JSON"),this._log(`JSON length: ${e.length}`);const t=JSON.parse(e);return this._endPerformanceCounter("Parse JSON"),t}_unpackBinaryAsync(e){return this._startPerformanceCounter("Unpack Binary"),e.loadAsync(20).then(()=>{const t={Magic:1179937895},s=e.readUint32();if(s!==t.Magic)throw new Kn("Unexpected magic: "+s,Un.GLTFLoaderUnexpectedMagicError);const r=e.readUint32();this.loggingEnabled&&this._log(`Binary version: ${r}`);const a=e.readUint32();!this.useRangeRequests&&a!==e.buffer.byteLength&&R.Warn(`Length in header does not match actual data length: ${a} != ${e.buffer.byteLength}`);let o;switch(r){case 1:{o=this._unpackBinaryV1Async(e,a);break}case 2:{o=this._unpackBinaryV2Async(e,a);break}default:throw new Error("Unsupported version: "+r)}return this._endPerformanceCounter("Unpack Binary"),o})}_unpackBinaryV1Async(e,t){const s={JSON:0},r=e.readUint32(),a=e.readUint32();if(a!==s.JSON)throw new Error(`Unexpected content format: ${a}`);const o=t-e.byteOffset,i={json:this._parseJson(e.readString(r)),bin:null};if(o!==0){const l=e.byteOffset;i.bin={readAsync:(u,c)=>e.buffer.readAsync(l+u,c),byteLength:o}}return Promise.resolve(i)}_unpackBinaryV2Async(e,t){const s={JSON:1313821514,BIN:5130562},r=e.readUint32();if(e.readUint32()!==s.JSON)throw new Error("First chunk format is not JSON");return e.byteOffset+r===t?e.loadAsync(r).then(()=>({json:this._parseJson(e.readString(r)),bin:null})):e.loadAsync(r+8).then(()=>{const o={json:this._parseJson(e.readString(r)),bin:null},i=()=>{const l=e.readUint32();switch(e.readUint32()){case s.JSON:throw new Error("Unexpected JSON chunk");case s.BIN:{const c=e.byteOffset;o.bin={readAsync:(h,d)=>e.buffer.readAsync(c+h,d),byteLength:l},e.skipBytes(l);break}default:{e.skipBytes(l);break}}return e.byteOffset!==t?e.loadAsync(8).then(i):Promise.resolve(o)};return i()})}static _parseVersion(e){if(e==="1.0"||e==="1.0.1")return{major:1,minor:0};const t=(e+"").match(/^(\d+)\.(\d+)/);return t?{major:parseInt(t[1]),minor:parseInt(t[2])}:null}static _compareVersion(e,t){return e.major>t.major?1:e.major<t.major?-1:e.minor>t.minor?1:e.minor<t.minor?-1:0}_logOpen(e){this._log(e),this._logIndentLevel++}_logClose(){--this._logIndentLevel}_logEnabled(e){const t=q._logSpaces.substring(0,this._logIndentLevel*2);R.Log(`${t}${e}`)}_logDisabled(e){}_startPerformanceCounterEnabled(e){D.StartPerformanceCounter(e)}_startPerformanceCounterDisabled(e){}_endPerformanceCounterEnabled(e){D.EndPerformanceCounter(e)}_endPerformanceCounterDisabled(e){}}q.IncrementalLoading=!0;q.HomogeneousCoordinates=!1;q._logSpaces=" ";nr(new q);var de;(function(n){n[n.BYTE=5120]="BYTE",n[n.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",n[n.SHORT=5122]="SHORT",n[n.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",n[n.FLOAT=5126]="FLOAT"})(de||(de={}));var Ve;(function(n){n[n.FRAGMENT=35632]="FRAGMENT",n[n.VERTEX=35633]="VERTEX"})(Ve||(Ve={}));var te;(function(n){n[n.BYTE=5120]="BYTE",n[n.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",n[n.SHORT=5122]="SHORT",n[n.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",n[n.INT=5124]="INT",n[n.UNSIGNED_INT=5125]="UNSIGNED_INT",n[n.FLOAT=5126]="FLOAT",n[n.FLOAT_VEC2=35664]="FLOAT_VEC2",n[n.FLOAT_VEC3=35665]="FLOAT_VEC3",n[n.FLOAT_VEC4=35666]="FLOAT_VEC4",n[n.INT_VEC2=35667]="INT_VEC2",n[n.INT_VEC3=35668]="INT_VEC3",n[n.INT_VEC4=35669]="INT_VEC4",n[n.BOOL=35670]="BOOL",n[n.BOOL_VEC2=35671]="BOOL_VEC2",n[n.BOOL_VEC3=35672]="BOOL_VEC3",n[n.BOOL_VEC4=35673]="BOOL_VEC4",n[n.FLOAT_MAT2=35674]="FLOAT_MAT2",n[n.FLOAT_MAT3=35675]="FLOAT_MAT3",n[n.FLOAT_MAT4=35676]="FLOAT_MAT4",n[n.SAMPLER_2D=35678]="SAMPLER_2D"})(te||(te={}));var Ce;(function(n){n[n.CLAMP_TO_EDGE=33071]="CLAMP_TO_EDGE",n[n.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",n[n.REPEAT=10497]="REPEAT"})(Ce||(Ce={}));var oe;(function(n){n[n.NEAREST=9728]="NEAREST",n[n.LINEAR=9728]="LINEAR",n[n.NEAREST_MIPMAP_NEAREST=9984]="NEAREST_MIPMAP_NEAREST",n[n.LINEAR_MIPMAP_NEAREST=9985]="LINEAR_MIPMAP_NEAREST",n[n.NEAREST_MIPMAP_LINEAR=9986]="NEAREST_MIPMAP_LINEAR",n[n.LINEAR_MIPMAP_LINEAR=9987]="LINEAR_MIPMAP_LINEAR"})(oe||(oe={}));var Lt;(function(n){n[n.ALPHA=6406]="ALPHA",n[n.RGB=6407]="RGB",n[n.RGBA=6408]="RGBA",n[n.LUMINANCE=6409]="LUMINANCE",n[n.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA"})(Lt||(Lt={}));var He;(function(n){n[n.FRONT=1028]="FRONT",n[n.BACK=1029]="BACK",n[n.FRONT_AND_BACK=1032]="FRONT_AND_BACK"})(He||(He={}));var K;(function(n){n[n.ZERO=0]="ZERO",n[n.ONE=1]="ONE",n[n.SRC_COLOR=768]="SRC_COLOR",n[n.ONE_MINUS_SRC_COLOR=769]="ONE_MINUS_SRC_COLOR",n[n.DST_COLOR=774]="DST_COLOR",n[n.ONE_MINUS_DST_COLOR=775]="ONE_MINUS_DST_COLOR",n[n.SRC_ALPHA=770]="SRC_ALPHA",n[n.ONE_MINUS_SRC_ALPHA=771]="ONE_MINUS_SRC_ALPHA",n[n.DST_ALPHA=772]="DST_ALPHA",n[n.ONE_MINUS_DST_ALPHA=773]="ONE_MINUS_DST_ALPHA",n[n.CONSTANT_COLOR=32769]="CONSTANT_COLOR",n[n.ONE_MINUS_CONSTANT_COLOR=32770]="ONE_MINUS_CONSTANT_COLOR",n[n.CONSTANT_ALPHA=32771]="CONSTANT_ALPHA",n[n.ONE_MINUS_CONSTANT_ALPHA=32772]="ONE_MINUS_CONSTANT_ALPHA",n[n.SRC_ALPHA_SATURATE=776]="SRC_ALPHA_SATURATE"})(K||(K={}));class U{static SetMatrix(e,t,s,r,a){let o=null;if(s.semantic==="MODEL"?o=t.getWorldMatrix():s.semantic==="PROJECTION"?o=e.getProjectionMatrix():s.semantic==="VIEW"?o=e.getViewMatrix():s.semantic==="MODELVIEWINVERSETRANSPOSE"?o=Z.Transpose(t.getWorldMatrix().multiply(e.getViewMatrix()).invert()):s.semantic==="MODELVIEW"?o=t.getWorldMatrix().multiply(e.getViewMatrix()):s.semantic==="MODELVIEWPROJECTION"?o=t.getWorldMatrix().multiply(e.getTransformMatrix()):s.semantic==="MODELINVERSE"?o=t.getWorldMatrix().invert():s.semantic==="VIEWINVERSE"?o=e.getViewMatrix().invert():s.semantic==="PROJECTIONINVERSE"?o=e.getProjectionMatrix().invert():s.semantic==="MODELVIEWINVERSE"?o=t.getWorldMatrix().multiply(e.getViewMatrix()).invert():s.semantic==="MODELVIEWPROJECTIONINVERSE"?o=t.getWorldMatrix().multiply(e.getTransformMatrix()).invert():s.semantic==="MODELINVERSETRANSPOSE"&&(o=Z.Transpose(t.getWorldMatrix().invert())),o)switch(s.type){case te.FLOAT_MAT2:a.setMatrix2x2(r,Z.GetAsMatrix2x2(o));break;case te.FLOAT_MAT3:a.setMatrix3x3(r,Z.GetAsMatrix3x3(o));break;case te.FLOAT_MAT4:a.setMatrix(r,o);break}}static SetUniform(e,t,s,r){switch(r){case te.FLOAT:return e.setFloat(t,s),!0;case te.FLOAT_VEC2:return e.setVector2(t,Ie.FromArray(s)),!0;case te.FLOAT_VEC3:return e.setVector3(t,w.FromArray(s)),!0;case te.FLOAT_VEC4:return e.setVector4(t,Wn.FromArray(s)),!0;default:return!1}}static GetWrapMode(e){switch(e){case Ce.CLAMP_TO_EDGE:return H.CLAMP_ADDRESSMODE;case Ce.MIRRORED_REPEAT:return H.MIRROR_ADDRESSMODE;case Ce.REPEAT:return H.WRAP_ADDRESSMODE;default:return H.WRAP_ADDRESSMODE}}static GetByteStrideFromType(e){switch(e.type){case"VEC2":return 2;case"VEC3":return 3;case"VEC4":return 4;case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16;default:return 1}}static GetTextureFilterMode(e){switch(e){case oe.LINEAR:case oe.LINEAR_MIPMAP_NEAREST:case oe.LINEAR_MIPMAP_LINEAR:return H.TRILINEAR_SAMPLINGMODE;case oe.NEAREST:case oe.NEAREST_MIPMAP_NEAREST:return H.NEAREST_SAMPLINGMODE;default:return H.BILINEAR_SAMPLINGMODE}}static GetBufferFromBufferView(e,t,s,r,a){s=t.byteOffset+s;const o=e.loadedBufferViews[t.buffer];if(s+r>o.byteLength)throw new Error("Buffer access is out of range");const i=o.buffer;switch(s+=o.byteOffset,a){case de.BYTE:return new Int8Array(i,s,r);case de.UNSIGNED_BYTE:return new Uint8Array(i,s,r);case de.SHORT:return new Int16Array(i,s,r);case de.UNSIGNED_SHORT:return new Uint16Array(i,s,r);default:return new Float32Array(i,s,r)}}static GetBufferFromAccessor(e,t){const s=e.bufferViews[t.bufferView],r=t.count*U.GetByteStrideFromType(t);return U.GetBufferFromBufferView(e,s,t.byteOffset,r,t.componentType)}static DecodeBufferToText(e){let t="";const s=e.byteLength;for(let r=0;r<s;++r)t+=String.fromCharCode(e[r]);return t}static GetDefaultMaterial(e){if(!U._DefaultMaterial){be.ShadersStore.GLTFDefaultMaterialVertexShader=["precision highp float;","","uniform mat4 worldView;","uniform mat4 projection;","","attribute vec3 position;","","void main(void)","{"," gl_Position = projection * worldView * vec4(position, 1.0);","}"].join(`
3
+ `),be.ShadersStore.GLTFDefaultMaterialPixelShader=["precision highp float;","","uniform vec4 u_emission;","","void main(void)","{"," gl_FragColor = u_emission;","}"].join(`
4
+ `);const t={vertex:"GLTFDefaultMaterial",fragment:"GLTFDefaultMaterial"},s={attributes:["position"],uniforms:["worldView","projection","u_emission"],samplers:new Array,needAlphaBlending:!1};U._DefaultMaterial=new Ls("GLTFDefaultMaterial",e,t,s),U._DefaultMaterial.setColor4("u_emission",new Ps(.5,.5,.5,1))}return U._DefaultMaterial}}U._DefaultMaterial=null;var ge;(function(n){n[n.IDENTIFIER=1]="IDENTIFIER",n[n.UNKNOWN=2]="UNKNOWN",n[n.END_OF_INPUT=3]="END_OF_INPUT"})(ge||(ge={}));class ws{constructor(e){this._pos=0,this.currentToken=ge.UNKNOWN,this.currentIdentifier="",this.currentString="",this.isLetterOrDigitPattern=/^[a-zA-Z0-9]+$/,this._toParse=e,this._maxPos=e.length}getNextToken(){if(this.isEnd())return ge.END_OF_INPUT;if(this.currentString=this.read(),this.currentToken=ge.UNKNOWN,this.currentString==="_"||this.isLetterOrDigitPattern.test(this.currentString))for(this.currentToken=ge.IDENTIFIER,this.currentIdentifier=this.currentString;!this.isEnd()&&(this.isLetterOrDigitPattern.test(this.currentString=this.peek())||this.currentString==="_");)this.currentIdentifier+=this.currentString,this.forward();return this.currentToken}peek(){return this._toParse[this._pos]}read(){return this._toParse[this._pos++]}forward(){this._pos++}isEnd(){return this._pos>=this._maxPos}}const Hs=["MODEL","VIEW","PROJECTION","MODELVIEW","MODELVIEWPROJECTION","JOINTMATRIX"],Ks=["world","view","projection","worldView","worldViewProjection","mBones"],Cr=["translation","rotation","scale"],wr=["position","rotationQuaternion","scaling"],vr=(n,e)=>{for(const t in n){const s=n[t];e.buffers[t]=s,e.buffersCount++}},Er=(n,e)=>{for(const t in n){const s=n[t];e.shaders[t]=s,e.shaderscount++}},Q=(n,e,t)=>{for(const s in n){const r=n[s];t[e][s]=r}},Mr=n=>{if(n)for(let e=0;e<n.length/2;e++)n[e*2+1]=1-n[e*2+1]},vs=n=>{if(n.semantic==="NORMAL")return"normal";if(n.semantic==="POSITION")return"position";if(n.semantic==="JOINT")return"matricesIndices";if(n.semantic==="WEIGHT")return"matricesWeights";if(n.semantic==="COLOR")return"color";if(n.semantic&&n.semantic.indexOf("TEXCOORD_")!==-1){const e=Number(n.semantic.split("_")[1]);return"uv"+(e===0?"":e+1)}return null},Or=n=>{for(const e in n.animations){const t=n.animations[e];if(!t.channels||!t.samplers)continue;let s=null;for(let r=0;r<t.channels.length;r++){const a=t.channels[r],o=t.samplers[a.sampler];if(!o)continue;let i,l;t.parameters?(i=t.parameters[o.input],l=t.parameters[o.output]):(i=o.input,l=o.output);const u=U.GetBufferFromAccessor(n,n.accessors[i]),c=U.GetBufferFromAccessor(n,n.accessors[l]),h=a.target.id;let d=n.scene.getNodeById(h);if(d===null&&(d=n.scene.getNodeByName(h)),d===null){D.Warn("Creating animation named "+e+". But cannot find node named "+h+" to attach to");continue}const f=d instanceof Pe;let p=a.target.path;const E=Cr.indexOf(p);E!==-1&&(p=wr[E]);let T=x.ANIMATIONTYPE_MATRIX;f||(p==="rotationQuaternion"?(T=x.ANIMATIONTYPE_QUATERNION,d.rotationQuaternion=new Y):T=x.ANIMATIONTYPE_VECTOR3);let A=null;const B=[];let I=0,M=!1;f&&s&&s.getKeys().length===u.length&&(A=s,M=!0),M||(n.scene._blockEntityCollection=!!n.assetContainer,A=new x(e,f?"_matrix":p,1,T,x.ANIMATIONLOOPMODE_CYCLE),n.scene._blockEntityCollection=!1);for(let C=0;C<u.length;C++){let S;if(p==="rotationQuaternion"?(S=Y.FromArray([c[I],c[I+1],c[I+2],c[I+3]]),I+=4):(S=w.FromArray([c[I],c[I+1],c[I+2]]),I+=3),f){const v=d;let N=w.Zero(),V=new Y,$=w.Zero(),W=v.getBaseMatrix();M&&s&&(W=s.getKeys()[C].value),W.decompose($,V,N),p==="position"?N=S:p==="rotationQuaternion"?V=S:$=S,S=Z.Compose($,V,N)}M?s&&(s.getKeys()[C].value=S):B.push({frame:u[C],value:S})}!M&&A&&(A.setKeys(B),d.animations.push(A)),s=A,n.scene.stopAnimation(d),n.scene.beginAnimation(d,0,u[u.length-1],!0,1)}}},Ht=n=>{let e;if(n.translation||n.rotation||n.scale){const t=w.FromArray(n.scale||[1,1,1]),s=Y.FromArray(n.rotation||[0,0,0,1]),r=w.FromArray(n.translation||[0,0,0]);e=Z.Compose(t,s,r)}else e=Z.FromArray(n.matrix);return e},Us=(n,e,t,s)=>{for(let a=0;a<s.bones.length;a++)if(s.bones[a].name===t)return s.bones[a];const r=n.nodes;for(const a in r){const o=r[a];if(!o.jointName)continue;const i=o.children;for(let l=0;l<i.length;l++){const u=n.nodes[i[l]];if(u.jointName&&u.jointName===t){const c=Ht(o),h=new Pe(o.name||"",s,Us(n,e,o.jointName,s),c);return h.id=a,h}}}return null},Ir=(n,e)=>{for(let t=0;t<n.length;t++){const s=n[t];for(let r=0;r<s.node.children.length;r++)if(s.node.children[r]===e)return s.bone}return null},It=(n,e)=>{const t=n.nodes;let s=t[e];if(s)return{node:s,id:e};for(const r in t)if(s=t[r],s.jointName===e)return{node:s,id:r};return null},Nr=(n,e)=>{for(let t=0;t<n.jointNames.length;t++)if(n.jointNames[t]===e)return!0;return!1},Sr=(n,e,t,s)=>{for(const r in n.nodes){const a=n.nodes[r],o=r;if(!a.jointName||Nr(t,a.jointName))continue;const i=Ht(a),l=new Pe(a.name||"",e,null,i);l.id=o,s.push({bone:l,node:a,id:o})}for(let r=0;r<s.length;r++){const a=s[r],o=a.node.children;for(let i=0;i<o.length;i++){let l=null;for(let u=0;u<s.length;u++)if(s[u].id===o[i]){l=s[u];break}l&&(l.bone._parent=a.bone,a.bone.children.push(l.bone))}}},Rr=(n,e,t,s)=>{if(s||(s=new $t(e.name||"","",n.scene)),!e.babylonSkeleton)return s;const r=[],a=[];Sr(n,s,e,r),s.bones=[];for(let i=0;i<e.jointNames.length;i++){const l=It(n,e.jointNames[i]);if(!l)continue;const u=l.node;if(!u){D.Warn("Joint named "+e.jointNames[i]+" does not exist");continue}const c=l.id,h=n.scene.getBoneById(c);if(h){s.bones.push(h);continue}let d,f=null;for(let T=0;T<i;T++){const A=It(n,e.jointNames[T]);if(!A)continue;const B=A.node;if(!B){D.Warn("Joint named "+e.jointNames[T]+" does not exist when looking for parent");continue}const I=B.children;if(I){d=!1;for(let M=0;M<I.length;M++)if(I[M]===c){f=Us(n,e,e.jointNames[T],s),d=!0;break}if(d)break}}const p=Ht(u);!f&&r.length>0&&(f=Ir(r,c),f&&a.indexOf(f)===-1&&a.push(f));const E=new Pe(u.jointName||"",s,f,p);E.id=c}const o=s.bones;s.bones=[];for(let i=0;i<e.jointNames.length;i++){const l=It(n,e.jointNames[i]);if(l){for(let u=0;u<o.length;u++)if(o[u].id===l.id){s.bones.push(o[u]);break}}}s.prepare();for(let i=0;i<a.length;i++)s.bones.push(a[i]);return s},Es=(n,e,t,s,r)=>{if(r||(n.scene._blockEntityCollection=!!n.assetContainer,r=new we(e.name||"",n.scene),r._parentContainer=n.assetContainer,n.scene._blockEntityCollection=!1,r.id=s),!e.babylonNode)return r;const a=[];let o=null;const i=[],l=[],u=[],c=[];for(let f=0;f<t.length;f++){const p=t[f],E=n.meshes[p];if(E)for(let T=0;T<E.primitives.length;T++){const A=new zn,B=E.primitives[T];B.mode;const I=B.attributes;let M,C;for(const v in I)if(M=n.accessors[I[v]],C=U.GetBufferFromAccessor(n,M),v==="NORMAL")A.normals=new Float32Array(C.length),A.normals.set(C);else if(v==="POSITION"){if(q.HomogeneousCoordinates){A.positions=new Float32Array(C.length-C.length/4);for(let N=0;N<C.length;N+=4)A.positions[N]=C[N],A.positions[N+1]=C[N+1],A.positions[N+2]=C[N+2]}else A.positions=new Float32Array(C.length),A.positions.set(C);l.push(A.positions.length)}else if(v.indexOf("TEXCOORD_")!==-1){const N=Number(v.split("_")[1]),V=k.UVKind+(N===0?"":N+1),$=new Float32Array(C.length);$.set(C),Mr($),A.set($,V)}else v==="JOINT"?(A.matricesIndices=new Float32Array(C.length),A.matricesIndices.set(C)):v==="WEIGHT"?(A.matricesWeights=new Float32Array(C.length),A.matricesWeights.set(C)):v==="COLOR"&&(A.colors=new Float32Array(C.length),A.colors.set(C));if(M=n.accessors[B.indices],M)C=U.GetBufferFromAccessor(n,M),A.indices=new Int32Array(C.length),A.indices.set(C),c.push(A.indices.length);else{const v=[];for(let N=0;N<A.positions.length/3;N++)v.push(N);A.indices=new Int32Array(v),c.push(A.indices.length)}o?o.merge(A):o=A;const S=n.scene.getMaterialById(B.material);a.push(S===null?U.GetDefaultMaterial(n.scene):S),i.push(i.length===0?0:i[i.length-1]+l[l.length-2]),u.push(u.length===0?0:u[u.length-1]+c[c.length-2])}}let h;n.scene._blockEntityCollection=!!n.assetContainer,a.length>1?(h=new qn("multimat"+s,n.scene),h.subMaterials=a):h=new Bt("multimat"+s,n.scene),a.length===1&&(h=a[0]),h._parentContainer=n.assetContainer,r.material||(r.material=h),new Gs(s,n.scene,o,!1,r),r.computeWorldMatrix(!0),n.scene._blockEntityCollection=!1,r.subMeshes=[];let d=0;for(let f=0;f<t.length;f++){const p=t[f],E=n.meshes[p];if(E)for(let T=0;T<E.primitives.length;T++)E.primitives[T].mode,Yn.AddToMesh(d,i[d],l[d],u[d],c[d],r,r,!0),d++}return r},Pt=(n,e,t,s)=>{n.position&&(n.position=e),(n.rotationQuaternion||n.rotation)&&(n.rotationQuaternion=t),n.scaling&&(n.scaling=s)},Lr=(n,e)=>{if(e.matrix){const t=new w(0,0,0),s=new Y,r=new w(0,0,0);Z.FromArray(e.matrix).decompose(r,s,t),Pt(n,t,s,r)}else e.translation&&e.rotation&&e.scale&&Pt(n,w.FromArray(e.translation),Y.FromArray(e.rotation),w.FromArray(e.scale));n.computeWorldMatrix(!0)},Pr=(n,e,t)=>{let s=null;if(n.importOnlyMeshes&&(e.skin||e.meshes)&&n.importMeshesNames&&n.importMeshesNames.length>0&&n.importMeshesNames.indexOf(e.name||"")===-1)return null;if(e.skin){if(e.meshes){const r=n.skins[e.skin],a=Es(n,e,e.meshes,t,e.babylonNode);a.skeleton=n.scene.getLastSkeletonById(e.skin),a.skeleton===null&&(a.skeleton=Rr(n,r,a,r.babylonSkeleton),r.babylonSkeleton||(r.babylonSkeleton=a.skeleton)),s=a}}else if(e.meshes)s=Es(n,e,e.mesh?[e.mesh]:e.meshes,t,e.babylonNode);else if(e.light&&!e.babylonNode&&!n.importOnlyMeshes){const r=n.lights[e.light];if(r){if(r.type==="ambient"){const a=r[r.type],o=new $s(e.light,w.Zero(),n.scene);o.name=e.name||"",a.color&&(o.diffuse=O.FromArray(a.color)),s=o}else if(r.type==="directional"){const a=r[r.type],o=new Gt(e.light,w.Zero(),n.scene);o.name=e.name||"",a.color&&(o.diffuse=O.FromArray(a.color)),s=o}else if(r.type==="point"){const a=r[r.type],o=new Vt(e.light,w.Zero(),n.scene);o.name=e.name||"",a.color&&(o.diffuse=O.FromArray(a.color)),s=o}else if(r.type==="spot"){const a=r[r.type],o=new ce(e.light,w.Zero(),w.Zero(),0,0,n.scene);o.name=e.name||"",a.color&&(o.diffuse=O.FromArray(a.color)),a.fallOfAngle&&(o.angle=a.fallOfAngle),a.fallOffExponent&&(o.exponent=a.fallOffExponent),s=o}}}else if(e.camera&&!e.babylonNode&&!n.importOnlyMeshes){const r=n.cameras[e.camera];if(r){if(n.scene._blockEntityCollection=!!n.assetContainer,r.type==="orthographic"){const a=new Nt(e.camera,w.Zero(),n.scene,!1);a.name=e.name||"",a.mode=Bs.ORTHOGRAPHIC_CAMERA,a.attachControl(),s=a,a._parentContainer=n.assetContainer}else if(r.type==="perspective"){const a=r[r.type],o=new Nt(e.camera,w.Zero(),n.scene,!1);o.name=e.name||"",o.attachControl(),a.aspectRatio||(a.aspectRatio=n.scene.getEngine().getRenderWidth()/n.scene.getEngine().getRenderHeight()),a.znear&&a.zfar&&(o.maxZ=a.zfar,o.minZ=a.znear),s=o,o._parentContainer=n.assetContainer}n.scene._blockEntityCollection=!1}}if(!e.jointName){if(e.babylonNode)return e.babylonNode;if(s===null){n.scene._blockEntityCollection=!!n.assetContainer;const r=new we(e.name||"",n.scene);r._parentContainer=n.assetContainer,n.scene._blockEntityCollection=!1,e.babylonNode=r,s=r}}if(s!==null){if(e.matrix&&s instanceof we)Lr(s,e);else{const r=e.translation||[0,0,0],a=e.rotation||[0,0,0,1],o=e.scale||[1,1,1];Pt(s,w.FromArray(r),Y.FromArray(a),w.FromArray(o))}s.updateCache(!0),e.babylonNode=s}return s},Se=(n,e,t,s=!1)=>{const r=n.nodes[e];let a=null;if(n.importOnlyMeshes&&!s&&n.importMeshesNames?n.importMeshesNames.indexOf(r.name||"")!==-1||n.importMeshesNames.length===0?s=!0:s=!1:s=!0,!r.jointName&&s&&(a=Pr(n,r,e),a!==null&&(a.id=e,a.parent=t)),r.children)for(let o=0;o<r.children.length;o++)Se(n,r.children[o],a,s)},Ms=n=>{let e=n.currentScene;if(e)for(let t=0;t<e.nodes.length;t++)Se(n,e.nodes[t],null);else for(const t in n.scenes){e=n.scenes[t];for(let s=0;s<e.nodes.length;s++)Se(n,e.nodes[s],null)}Or(n);for(let t=0;t<n.scene.skeletons.length;t++){const s=n.scene.skeletons[t];n.scene.beginAnimation(s,0,Number.MAX_VALUE,!0,1)}},kr=(n,e,t,s,r,a,o)=>{const i=a.values||r.parameters;for(const l in t){const u=t[l],c=u.type;if(c===te.FLOAT_MAT2||c===te.FLOAT_MAT3||c===te.FLOAT_MAT4){if(u.semantic&&!u.source&&!u.node)U.SetMatrix(e.scene,n,u,l,s.getEffect());else if(u.semantic&&(u.source||u.node)){let h=e.scene.getNodeByName(u.source||u.node||"");if(h===null&&(h=e.scene.getNodeById(u.source||u.node||"")),h===null)continue;U.SetMatrix(e.scene,h,u,l,s.getEffect())}}else{const h=i[r.uniforms[l]];if(!h)continue;if(c===te.SAMPLER_2D){const d=e.textures[a.values?h:u.value].babylonTexture;if(d==null)continue;s.getEffect().setTexture(l,d)}else U.SetUniform(s.getEffect(),l,h,c)}}o(s)},Fr=(n,e,t,s,r)=>{const a=s.values||t.parameters,o=t.uniforms;for(const i in r){const l=r[i],u=l.type;let c=a[o[i]];if(c===void 0&&(c=l.value),!c)continue;const h=d=>f=>{l.value&&d&&(e.setTexture(d,f),delete r[d])};u===te.SAMPLER_2D?z.LoadTextureAsync(n,s.values?c:l.value,h(i),()=>h(null)):l.value&&U.SetUniform(e,i,s.values?c:l.value,u)&&delete r[i]}},Br=(n,e,t)=>(s,r)=>{e.dispose(!0),t("Cannot compile program named "+n.name+". Error: "+r+". Default material will be applied")},Gr=(n,e,t,s,r,a)=>o=>{Fr(n,e,t,s,r),e.onBind=i=>{kr(i,n,r,e,t,s,a)}},Os=(n,e,t)=>{for(const s in e.uniforms){const r=e.uniforms[s],a=e.parameters[r];if(n.currentIdentifier===s&&a.semantic&&!a.source&&!a.node){const o=Hs.indexOf(a.semantic);if(o!==-1)return delete t[s],Ks[o]}}return n.currentIdentifier},Is=n=>{for(const e in n.materials)z.LoadMaterialAsync(n,e,()=>{},()=>{})};class he{static CreateRuntime(e,t,s){const r={extensions:{},accessors:{},buffers:{},bufferViews:{},meshes:{},lights:{},cameras:{},nodes:{},images:{},textures:{},shaders:{},programs:{},samplers:{},techniques:{},materials:{},animations:{},skins:{},extensionsUsed:[],scenes:{},buffersCount:0,shaderscount:0,scene:t,rootUrl:s,loadedBufferCount:0,loadedBufferViews:{},loadedShaderCount:0,importOnlyMeshes:!1,dummyNodes:[],assetContainer:null};return e.extensions&&Q(e.extensions,"extensions",r),e.extensionsUsed&&Q(e.extensionsUsed,"extensionsUsed",r),e.buffers&&vr(e.buffers,r),e.bufferViews&&Q(e.bufferViews,"bufferViews",r),e.accessors&&Q(e.accessors,"accessors",r),e.meshes&&Q(e.meshes,"meshes",r),e.lights&&Q(e.lights,"lights",r),e.cameras&&Q(e.cameras,"cameras",r),e.nodes&&Q(e.nodes,"nodes",r),e.images&&Q(e.images,"images",r),e.textures&&Q(e.textures,"textures",r),e.shaders&&Er(e.shaders,r),e.programs&&Q(e.programs,"programs",r),e.samplers&&Q(e.samplers,"samplers",r),e.techniques&&Q(e.techniques,"techniques",r),e.materials&&Q(e.materials,"materials",r),e.animations&&Q(e.animations,"animations",r),e.skins&&Q(e.skins,"skins",r),e.scenes&&(r.scenes=e.scenes),e.scene&&e.scenes&&(r.currentScene=e.scenes[e.scene]),r}static LoadBufferAsync(e,t,s,r,a){const o=e.buffers[t];D.IsBase64(o.uri)?setTimeout(()=>s(new Uint8Array(D.DecodeBase64(o.uri)))):D.LoadFile(e.rootUrl+o.uri,i=>s(new Uint8Array(i)),a,void 0,!0,i=>{i&&r(i.status+" "+i.statusText)})}static LoadTextureBufferAsync(e,t,s,r){const a=e.textures[t];if(!a||!a.source){r("");return}if(a.babylonTexture){s(null);return}const o=e.images[a.source];D.IsBase64(o.uri)?setTimeout(()=>s(new Uint8Array(D.DecodeBase64(o.uri)))):D.LoadFile(e.rootUrl+o.uri,i=>s(new Uint8Array(i)),void 0,void 0,!0,i=>{i&&r(i.status+" "+i.statusText)})}static CreateTextureAsync(e,t,s,r){const a=e.textures[t];if(a.babylonTexture){r(a.babylonTexture);return}const o=e.samplers[a.sampler],i=o.minFilter===oe.NEAREST_MIPMAP_NEAREST||o.minFilter===oe.NEAREST_MIPMAP_LINEAR||o.minFilter===oe.LINEAR_MIPMAP_NEAREST||o.minFilter===oe.LINEAR_MIPMAP_LINEAR,l=H.BILINEAR_SAMPLINGMODE,u=s==null?new Blob:new Blob([Fs(s)]),c=URL.createObjectURL(u),h=()=>URL.revokeObjectURL(c),d=new H(c,e.scene,!i,!0,l,h,h);o.wrapS!==void 0&&(d.wrapU=U.GetWrapMode(o.wrapS)),o.wrapT!==void 0&&(d.wrapV=U.GetWrapMode(o.wrapT)),d.name=t,a.babylonTexture=d,r(d)}static LoadShaderStringAsync(e,t,s,r){const a=e.shaders[t];if(D.IsBase64(a.uri)){const o=atob(a.uri.split(",")[1]);s&&s(o)}else D.LoadFile(e.rootUrl+a.uri,s,void 0,void 0,!1,o=>{o&&r&&r(o.status+" "+o.statusText)})}static LoadMaterialAsync(e,t,s,r){const a=e.materials[t];if(!a.technique){r&&r("No technique found.");return}const o=e.techniques[a.technique];if(!o){e.scene._blockEntityCollection=!!e.assetContainer;const S=new Bt(t,e.scene);S._parentContainer=e.assetContainer,e.scene._blockEntityCollection=!1,S.diffuseColor=new O(.5,.5,.5),S.sideOrientation=ae.CounterClockWiseSideOrientation,s(S);return}const i=e.programs[o.program],l=o.states,u=be.ShadersStore[i.vertexShader+"VertexShader"],c=be.ShadersStore[i.fragmentShader+"PixelShader"];let h="",d="";const f=new ws(u),p=new ws(c),E={},T=[],A=[],B=[];for(const S in o.uniforms){const v=o.uniforms[S],N=o.parameters[v];if(E[S]=N,N.semantic&&!N.node&&!N.source){const V=Hs.indexOf(N.semantic);V!==-1?(T.push(Ks[V]),delete E[S]):T.push(S)}else N.type===te.SAMPLER_2D?B.push(S):T.push(S)}for(const S in o.attributes){const v=o.attributes[S],N=o.parameters[v];if(N.semantic){const V=vs(N);V&&A.push(V)}}for(;!f.isEnd()&&f.getNextToken();){if(f.currentToken!==ge.IDENTIFIER){h+=f.currentString;continue}let v=!1;for(const N in o.attributes){const V=o.attributes[N],$=o.parameters[V];if(f.currentIdentifier===N&&$.semantic){h+=vs($),v=!0;break}}v||(h+=Os(f,o,E))}for(;!p.isEnd()&&p.getNextToken();){if(p.currentToken!==ge.IDENTIFIER){d+=p.currentString;continue}d+=Os(p,o,E)}const I={vertex:i.vertexShader+t,fragment:i.fragmentShader+t},M={attributes:A,uniforms:T,samplers:B,needAlphaBlending:l&&l.enable&&l.enable.indexOf(3042)!==-1};be.ShadersStore[i.vertexShader+t+"VertexShader"]=h,be.ShadersStore[i.fragmentShader+t+"PixelShader"]=d;const C=new Ls(t,e.scene,I,M);if(C.onError=Br(i,C,r),C.onCompiled=Gr(e,C,o,a,E,s),C.sideOrientation=ae.CounterClockWiseSideOrientation,l&&l.functions){const S=l.functions;S.cullFace&&S.cullFace[0]!==He.BACK&&(C.backFaceCulling=!1);const v=S.blendFuncSeparate;v&&(v[0]===K.SRC_ALPHA&&v[1]===K.ONE_MINUS_SRC_ALPHA&&v[2]===K.ONE&&v[3]===K.ONE?C.alphaMode=le.ALPHA_COMBINE:v[0]===K.ONE&&v[1]===K.ONE&&v[2]===K.ZERO&&v[3]===K.ONE?C.alphaMode=le.ALPHA_ONEONE:v[0]===K.SRC_ALPHA&&v[1]===K.ONE&&v[2]===K.ZERO&&v[3]===K.ONE?C.alphaMode=le.ALPHA_ADD:v[0]===K.ZERO&&v[1]===K.ONE_MINUS_SRC_COLOR&&v[2]===K.ONE&&v[3]===K.ONE?C.alphaMode=le.ALPHA_SUBTRACT:v[0]===K.DST_COLOR&&v[1]===K.ZERO&&v[2]===K.ONE&&v[3]===K.ONE?C.alphaMode=le.ALPHA_MULTIPLY:v[0]===K.SRC_ALPHA&&v[1]===K.ONE_MINUS_SRC_COLOR&&v[2]===K.ONE&&v[3]===K.ONE&&(C.alphaMode=le.ALPHA_MAXIMIZED))}}}let Ae=class kt{static RegisterExtension(e){if(kt.Extensions[e.name]){D.Error('Tool with the same name "'+e.name+'" already exists');return}kt.Extensions[e.name]=e}dispose(){}_importMeshAsync(e,t,s,r,a,o,i,l){return t.useRightHandedSystem=!0,z.LoadRuntimeAsync(t,s,r,u=>{u.assetContainer=a,u.importOnlyMeshes=!0,e===""?u.importMeshesNames=[]:typeof e=="string"?u.importMeshesNames=[e]:e&&!(e instanceof Array)?u.importMeshesNames=[e]:(u.importMeshesNames=[],D.Warn("Argument meshesNames must be of type string or string[]")),this._createNodes(u);const c=[],h=[];for(const d in u.nodes){const f=u.nodes[d];f.babylonNode instanceof ks&&c.push(f.babylonNode)}for(const d in u.skins){const f=u.skins[d];f.babylonSkeleton instanceof $t&&h.push(f.babylonSkeleton)}this._loadBuffersAsync(u,()=>{this._loadShadersAsync(u,()=>{Is(u),Ms(u),!q.IncrementalLoading&&o&&o(c,h)})}),q.IncrementalLoading&&o&&o(c,h)},l),!0}importMeshAsync(e,t,s,r,a,o){return new Promise((i,l)=>{this._importMeshAsync(e,t,r,a,s,(u,c)=>{i({meshes:u,particleSystems:[],skeletons:c,animationGroups:[],lights:[],transformNodes:[],geometries:[],spriteManagers:[]})},o,u=>{l(new Error(u))})})}_loadAsync(e,t,s,r,a,o){e.useRightHandedSystem=!0,z.LoadRuntimeAsync(e,t,s,i=>{z.LoadRuntimeExtensionsAsync(i,()=>{this._createNodes(i),this._loadBuffersAsync(i,()=>{this._loadShadersAsync(i,()=>{Is(i),Ms(i),q.IncrementalLoading||r()})}),q.IncrementalLoading&&r()},o)},o)}async loadAsync(e,t,s,r){return await new Promise((a,o)=>{this._loadAsync(e,t,s,()=>{a()},r,i=>{o(new Error(i))})})}_loadShadersAsync(e,t){let s=!1;const r=(a,o)=>{z.LoadShaderStringAsync(e,a,i=>{i instanceof ArrayBuffer||(e.loadedShaderCount++,i&&(be.ShadersStore[a+(o.type===Ve.VERTEX?"VertexShader":"PixelShader")]=i),e.loadedShaderCount===e.shaderscount&&t())},()=>{D.Error("Error when loading shader program named "+a+" located at "+o.uri)})};for(const a in e.shaders){s=!0;const o=e.shaders[a];o?r.bind(this,a,o)():D.Error("No shader named: "+a)}s||t()}_loadBuffersAsync(e,t){let s=!1;const r=(a,o)=>{z.LoadBufferAsync(e,a,i=>{e.loadedBufferCount++,i&&(i.byteLength!=e.buffers[a].byteLength&&D.Error("Buffer named "+a+" is length "+i.byteLength+". Expected: "+o.byteLength),e.loadedBufferViews[a]=i),e.loadedBufferCount===e.buffersCount&&t()},()=>{D.Error("Error when loading buffer named "+a+" located at "+o.uri)})};for(const a in e.buffers){s=!0;const o=e.buffers[a];o?r.bind(this,a,o)():D.Error("No buffer named: "+a)}s||t()}_createNodes(e){let t=e.currentScene;if(t)for(let s=0;s<t.nodes.length;s++)Se(e,t.nodes[s],null);else for(const s in e.scenes){t=e.scenes[s];for(let r=0;r<t.nodes.length;r++)Se(e,t.nodes[r],null)}}};Ae.Extensions={};class z{constructor(e){this._name=e}get name(){return this._name}loadRuntimeAsync(e,t,s,r,a){return!1}loadRuntimeExtensionsAsync(e,t,s){return!1}loadBufferAsync(e,t,s,r,a){return!1}loadTextureBufferAsync(e,t,s,r){return!1}createTextureAsync(e,t,s,r,a){return!1}loadShaderStringAsync(e,t,s,r){return!1}loadMaterialAsync(e,t,s,r){return!1}static LoadRuntimeAsync(e,t,s,r,a){z._ApplyExtensions(o=>o.loadRuntimeAsync(e,t,s,r,a),()=>{setTimeout(()=>{r&&r(he.CreateRuntime(t.json,e,s))})})}static LoadRuntimeExtensionsAsync(e,t,s){z._ApplyExtensions(r=>r.loadRuntimeExtensionsAsync(e,t,s),()=>{setTimeout(()=>{t()})})}static LoadBufferAsync(e,t,s,r,a){z._ApplyExtensions(o=>o.loadBufferAsync(e,t,s,r,a),()=>{he.LoadBufferAsync(e,t,s,r,a)})}static LoadTextureAsync(e,t,s,r){z._LoadTextureBufferAsync(e,t,a=>{a&&z._CreateTextureAsync(e,t,a,s,r)},r)}static LoadShaderStringAsync(e,t,s,r){z._ApplyExtensions(a=>a.loadShaderStringAsync(e,t,s,r),()=>{he.LoadShaderStringAsync(e,t,s,r)})}static LoadMaterialAsync(e,t,s,r){z._ApplyExtensions(a=>a.loadMaterialAsync(e,t,s,r),()=>{he.LoadMaterialAsync(e,t,s,r)})}static _LoadTextureBufferAsync(e,t,s,r){z._ApplyExtensions(a=>a.loadTextureBufferAsync(e,t,s,r),()=>{he.LoadTextureBufferAsync(e,t,s,r)})}static _CreateTextureAsync(e,t,s,r,a){z._ApplyExtensions(o=>o.createTextureAsync(e,t,s,r,a),()=>{he.CreateTextureAsync(e,t,s,r)})}static _ApplyExtensions(e,t){for(const s in Ae.Extensions){const r=Ae.Extensions[s];if(e(r))return}t()}}q._CreateGLTF1Loader=()=>new Ae;const Dr="binary_glTF";class Ws extends z{constructor(){super("KHR_binary_glTF")}loadRuntimeAsync(e,t,s,r){const a=t.json.extensionsUsed;return!a||a.indexOf(this.name)===-1||!t.bin?!1:(this._bin=t.bin,r(he.CreateRuntime(t.json,e,s)),!0)}loadBufferAsync(e,t,s,r){return e.extensionsUsed.indexOf(this.name)===-1||t!==Dr?!1:(this._bin.readAsync(0,this._bin.byteLength).then(s,a=>r(a.message)),!0)}loadTextureBufferAsync(e,t,s){const r=e.textures[t],a=e.images[r.source];if(!a.extensions||!(this.name in a.extensions))return!1;const o=a.extensions[this.name],i=e.bufferViews[o.bufferView],l=U.GetBufferFromBufferView(e,i,0,i.byteLength,de.UNSIGNED_BYTE);return s(l),!0}loadShaderStringAsync(e,t,s){const r=e.shaders[t];if(!r.extensions||!(this.name in r.extensions))return!1;const a=r.extensions[this.name],o=e.bufferViews[a.bufferView],i=U.GetBufferFromBufferView(e,o,0,o.byteLength,de.UNSIGNED_BYTE);return setTimeout(()=>{const l=U.DecodeBufferToText(i);s(l)}),!0}}Ae.RegisterExtension(new Ws);class zs extends z{constructor(){super("KHR_materials_common")}loadRuntimeExtensionsAsync(e){if(!e.extensions)return!1;const t=e.extensions[this.name];if(!t)return!1;const s=t.lights;if(s)for(const r in s){const a=s[r];switch(a.type){case"ambient":{const o=new $s(a.name,new w(0,1,0),e.scene),i=a.ambient;i&&(o.diffuse=O.FromArray(i.color||[1,1,1]));break}case"point":{const o=new Vt(a.name,new w(10,10,10),e.scene),i=a.point;i&&(o.diffuse=O.FromArray(i.color||[1,1,1]));break}case"directional":{const o=new Gt(a.name,new w(0,-1,0),e.scene),i=a.directional;i&&(o.diffuse=O.FromArray(i.color||[1,1,1]));break}case"spot":{const o=a.spot;if(o){const i=new ce(a.name,new w(0,10,0),new w(0,-1,0),o.fallOffAngle||Math.PI,o.fallOffExponent||0,e.scene);i.diffuse=O.FromArray(o.color||[1,1,1])}break}default:D.Warn('GLTF Material Common extension: light type "'+a.type+"” not supported");break}}return!1}loadMaterialAsync(e,t,s,r){const a=e.materials[t];if(!a||!a.extensions)return!1;const o=a.extensions[this.name];if(!o)return!1;const i=new Bt(t,e.scene);return i.sideOrientation=ae.CounterClockWiseSideOrientation,o.technique==="CONSTANT"&&(i.disableLighting=!0),i.backFaceCulling=o.doubleSided===void 0?!1:!o.doubleSided,i.alpha=o.values.transparency===void 0?1:o.values.transparency,i.specularPower=o.values.shininess===void 0?0:o.values.shininess,typeof o.values.ambient=="string"?this._loadTexture(e,o.values.ambient,i,"ambientTexture",r):i.ambientColor=O.FromArray(o.values.ambient||[0,0,0]),typeof o.values.diffuse=="string"?this._loadTexture(e,o.values.diffuse,i,"diffuseTexture",r):i.diffuseColor=O.FromArray(o.values.diffuse||[0,0,0]),typeof o.values.emission=="string"?this._loadTexture(e,o.values.emission,i,"emissiveTexture",r):i.emissiveColor=O.FromArray(o.values.emission||[0,0,0]),typeof o.values.specular=="string"?this._loadTexture(e,o.values.specular,i,"specularTexture",r):i.specularColor=O.FromArray(o.values.specular||[0,0,0]),!0}_loadTexture(e,t,s,r,a){he.LoadTextureBufferAsync(e,t,o=>{he.CreateTextureAsync(e,t,o,i=>s[r]=i)},a)}}Ae.RegisterExtension(new zs);const ca=Object.freeze(Object.defineProperty({__proto__:null,get EBlendingFunction(){return K},get EComponentType(){return de},get ECullingType(){return He},get EParameterType(){return te},get EShaderType(){return Ve},get ETextureFilterType(){return oe},get ETextureFormat(){return Lt},get ETextureWrapMode(){return Ce},GLTFBinaryExtension:Ws,GLTFLoader:Ae,GLTFLoaderBase:he,GLTFLoaderExtension:z,GLTFMaterialsCommonExtension:zs,GLTFUtils:U},Symbol.toStringTag,{value:"Module"})),Kt=new Map,qs=Kt;function P(n,e,t){L(n)&&R.Warn(`Extension with the name '${n}' already exists`),Kt.set(n,{isGLTFExtension:e,factory:t})}function L(n){return Kt.delete(n)}const $r=[{regex:new RegExp("^/nodes/\\d+/extensions/")}];class Vr{constructor(e,t){this._gltf=e,this._infoTree=t}convert(e){let t=this._gltf,s=this._infoTree,r;if(!e.startsWith("/"))throw new Error("Path must start with a /");const a=e.split("/");if(a.shift(),a[a.length-1].includes(".length")){const l=a[a.length-1].split(".");a.pop(),a.push(...l)}let o=!1;for(const i of a){const l=i==="length";if(l&&!s.__array__)throw new Error(`Path ${e} is invalid`);if(s.__ignoreObjectTree__&&(o=!0),s.__array__&&!l)s=s.__array__;else if(s=s[i],!s)throw new Error(`Path ${e} is invalid`);if(!o)if(t===void 0){if(!$r.find(c=>c.regex.test(e)))throw new Error(`Path ${e} is invalid`)}else l||(t=t?.[i]);(s.__target__||l)&&(r=t)}return{object:r,info:s}}}const Hr={length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonTransformNode),getPropertyName:[()=>"length"]},__array__:{__target__:!0,translation:{type:"Vector3",get:n=>n._babylonTransformNode?.position,set:(n,e)=>e._babylonTransformNode?.position.copyFrom(n),getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"position"]},rotation:{type:"Quaternion",get:n=>n._babylonTransformNode?.rotationQuaternion,set:(n,e)=>e._babylonTransformNode?.rotationQuaternion?.copyFrom(n),getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"rotationQuaternion"]},scale:{type:"Vector3",get:n=>n._babylonTransformNode?.scaling,set:(n,e)=>e._babylonTransformNode?.scaling.copyFrom(n),getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"scaling"]},weights:{length:{type:"number",get:n=>n._numMorphTargets,getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"influence"]},__array__:{__target__:!0,type:"number",get:(n,e)=>e!==void 0?n._primitiveBabylonMeshes?.[0].morphTargetManager?.getTarget(e).influence:void 0,getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"influence"]},type:"number[]",get:(n,e)=>[0],getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"influence"]},matrix:{type:"Matrix",get:n=>Z.Compose(n._babylonTransformNode?.scaling,n._babylonTransformNode?.rotationQuaternion,n._babylonTransformNode?.position),getTarget:n=>n._babylonTransformNode,isReadOnly:!0},globalMatrix:{type:"Matrix",get:n=>{const e=Z.Identity();let t=n.parent;for(;t&&t.parent;)t=t.parent;const s=n._babylonTransformNode?.position._isDirty||n._babylonTransformNode?.rotationQuaternion?._isDirty||n._babylonTransformNode?.scaling._isDirty;if(t){const r=t._babylonTransformNode?.computeWorldMatrix(!0).invert();r&&n._babylonTransformNode?.computeWorldMatrix(s)?.multiplyToRef(r,e)}else n._babylonTransformNode&&e.copyFrom(n._babylonTransformNode.computeWorldMatrix(s));return e},getTarget:n=>n._babylonTransformNode,isReadOnly:!0},extensions:{EXT_lights_ies:{multiplier:{type:"number",get:n=>n._babylonTransformNode?.getChildren(e=>e instanceof ce,!0)[0]?.intensity,getTarget:n=>n._babylonTransformNode?.getChildren(e=>e instanceof ce,!0)[0],set:(n,e)=>{if(e._babylonTransformNode){const t=e._babylonTransformNode.getChildren(s=>s instanceof ce,!0)[0];t&&(t.intensity=n)}}},color:{type:"Color3",get:n=>n._babylonTransformNode?.getChildren(e=>e instanceof ce,!0)[0]?.diffuse,getTarget:n=>n._babylonTransformNode?.getChildren(e=>e instanceof ce,!0)[0],set:(n,e)=>{if(e._babylonTransformNode){const t=e._babylonTransformNode.getChildren(s=>s instanceof ce,!0)[0];t&&(t.diffuse=n)}}}},KHR_node_visibility:{visible:{type:"boolean",get:n=>n._primitiveBabylonMeshes?n._primitiveBabylonMeshes[0].isVisible:!1,getTarget:()=>{},set:(n,e)=>{e._primitiveBabylonMeshes&&e._primitiveBabylonMeshes.forEach(t=>t.isVisible=n)}}}}}},Kr={length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonAnimationGroup),getPropertyName:[()=>"length"]},__array__:{}},Ur={length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e.primitives[0]._instanceData?.babylonSourceMesh),getPropertyName:[()=>"length"]},__array__:{}},Wr={__array__:{__target__:!0,orthographic:{xmag:{componentsCount:2,type:"Vector2",get:n=>new Ie(n._babylonCamera?.orthoLeft??0,n._babylonCamera?.orthoRight??0),set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.orthoLeft=n.x,e._babylonCamera.orthoRight=n.y)},getTarget:n=>n,getPropertyName:[()=>"orthoLeft",()=>"orthoRight"]},ymag:{componentsCount:2,type:"Vector2",get:n=>new Ie(n._babylonCamera?.orthoBottom??0,n._babylonCamera?.orthoTop??0),set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.orthoBottom=n.x,e._babylonCamera.orthoTop=n.y)},getTarget:n=>n,getPropertyName:[()=>"orthoBottom",()=>"orthoTop"]},zfar:{type:"number",get:n=>n._babylonCamera?.maxZ,set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.maxZ=n)},getTarget:n=>n,getPropertyName:[()=>"maxZ"]},znear:{type:"number",get:n=>n._babylonCamera?.minZ,set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.minZ=n)},getTarget:n=>n,getPropertyName:[()=>"minZ"]}},perspective:{aspectRatio:{type:"number",get:n=>n._babylonCamera?.getEngine().getAspectRatio(n._babylonCamera),getTarget:n=>n,getPropertyName:[()=>"aspectRatio"],isReadOnly:!0},yfov:{type:"number",get:n=>n._babylonCamera?.fov,set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.fov=n)},getTarget:n=>n,getPropertyName:[()=>"fov"]},zfar:{type:"number",get:n=>n._babylonCamera?.maxZ,set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.maxZ=n)},getTarget:n=>n,getPropertyName:[()=>"maxZ"]},znear:{type:"number",get:n=>n._babylonCamera?.minZ,set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.minZ=n)},getTarget:n=>n,getPropertyName:[()=>"minZ"]}}}},zr={__array__:{__target__:!0,emissiveFactor:{type:"Color3",get:(n,e,t)=>_(n,e,t).emissiveColor,set:(n,e,t,s)=>_(e,t,s).emissiveColor.copyFrom(n),getTarget:(n,e,t)=>_(n,e,t),getPropertyName:[()=>"emissiveColor"]},emissiveTexture:{extensions:{KHR_texture_transform:j("emissiveTexture")}},normalTexture:{scale:{type:"number",get:(n,e,t)=>_e(n,t,"bumpTexture")?.level,set:(n,e,t,s)=>{const r=_e(e,s,"bumpTexture");r&&(r.level=n)},getTarget:(n,e,t)=>_(n,e,t),getPropertyName:[()=>"level"]},extensions:{KHR_texture_transform:j("bumpTexture")}},occlusionTexture:{strength:{type:"number",get:(n,e,t)=>_(n,e,t).ambientTextureStrength,set:(n,e,t,s)=>{const r=_(e,t,s);r&&(r.ambientTextureStrength=n)},getTarget:(n,e,t)=>_(n,e,t),getPropertyName:[()=>"ambientTextureStrength"]},extensions:{KHR_texture_transform:j("ambientTexture")}},pbrMetallicRoughness:{baseColorFactor:{type:"Color4",get:(n,e,t)=>{const s=_(n,e,t);return Ps.FromColor3(s.albedoColor,s.alpha)},set:(n,e,t,s)=>{const r=_(e,t,s);r.albedoColor.set(n.r,n.g,n.b),r.alpha=n.a},getTarget:(n,e,t)=>_(n,e,t),getPropertyName:[()=>"albedoColor",()=>"alpha"]},baseColorTexture:{extensions:{KHR_texture_transform:j("albedoTexture")}},metallicFactor:{type:"number",get:(n,e,t)=>_(n,e,t).metallic,set:(n,e,t,s)=>{const r=_(e,t,s);r&&(r.metallic=n)},getTarget:(n,e,t)=>_(n,e,t),getPropertyName:[()=>"metallic"]},roughnessFactor:{type:"number",get:(n,e,t)=>_(n,e,t).roughness,set:(n,e,t,s)=>{const r=_(e,t,s);r&&(r.roughness=n)},getTarget:(n,e,t)=>_(n,e,t),getPropertyName:[()=>"roughness"]},metallicRoughnessTexture:{extensions:{KHR_texture_transform:j("metallicTexture")}}},extensions:{KHR_materials_anisotropy:{anisotropyStrength:{type:"number",get:(n,e,t)=>_(n,e,t).anisotropy.intensity,set:(n,e,t,s)=>{_(e,t,s).anisotropy.intensity=n},getTarget:(n,e,t)=>_(n,e,t),getPropertyName:[()=>"anisotropy.intensity"]},anisotropyRotation:{type:"number",get:(n,e,t)=>_(n,e,t).anisotropy.angle,set:(n,e,t,s)=>{_(e,t,s).anisotropy.angle=n},getTarget:(n,e,t)=>_(n,e,t),getPropertyName:[()=>"anisotropy.angle"]},anisotropyTexture:{extensions:{KHR_texture_transform:j("anisotropy","texture")}}},KHR_materials_clearcoat:{clearcoatFactor:{type:"number",get:(n,e,t)=>_(n,e,t).clearCoat.intensity,set:(n,e,t,s)=>{_(e,t,s).clearCoat.intensity=n},getTarget:(n,e,t)=>_(n,e,t),getPropertyName:[()=>"clearCoat.intensity"]},clearcoatRoughnessFactor:{type:"number",get:(n,e,t)=>_(n,e,t).clearCoat.roughness,set:(n,e,t,s)=>{_(e,t,s).clearCoat.roughness=n},getTarget:(n,e,t)=>_(n,e,t),getPropertyName:[()=>"clearCoat.roughness"]},clearcoatTexture:{extensions:{KHR_texture_transform:j("clearCoat","texture")}},clearcoatNormalTexture:{scale:{type:"number",get:(n,e,t)=>_(n,e,t).clearCoat.bumpTexture?.level,getTarget:_,set:(n,e,t,s)=>_(e,t,s).clearCoat.bumpTexture.level=n},extensions:{KHR_texture_transform:j("clearCoat","bumpTexture")}},clearcoatRoughnessTexture:{extensions:{KHR_texture_transform:j("clearCoat","textureRoughness")}}},KHR_materials_dispersion:{dispersion:{type:"number",get:(n,e,t)=>_(n,e,t).subSurface.dispersion,getTarget:_,set:(n,e,t,s)=>_(e,t,s).subSurface.dispersion=n}},KHR_materials_emissive_strength:{emissiveStrength:{type:"number",get:(n,e,t)=>_(n,e,t).emissiveIntensity,getTarget:_,set:(n,e,t,s)=>_(e,t,s).emissiveIntensity=n}},KHR_materials_ior:{ior:{type:"number",get:(n,e,t)=>_(n,e,t).indexOfRefraction,getTarget:_,set:(n,e,t,s)=>_(e,t,s).indexOfRefraction=n}},KHR_materials_iridescence:{iridescenceFactor:{type:"number",get:(n,e,t)=>_(n,e,t).iridescence.intensity,getTarget:_,set:(n,e,t,s)=>_(e,t,s).iridescence.intensity=n},iridescenceIor:{type:"number",get:(n,e,t)=>_(n,e,t).iridescence.indexOfRefraction,getTarget:_,set:(n,e,t,s)=>_(e,t,s).iridescence.indexOfRefraction=n},iridescenceTexture:{extensions:{KHR_texture_transform:j("iridescence","texture")}},iridescenceThicknessMaximum:{type:"number",get:(n,e,t)=>_(n,e,t).iridescence.maximumThickness,getTarget:_,set:(n,e,t,s)=>_(e,t,s).iridescence.maximumThickness=n},iridescenceThicknessMinimum:{type:"number",get:(n,e,t)=>_(n,e,t).iridescence.minimumThickness,getTarget:_,set:(n,e,t,s)=>_(e,t,s).iridescence.minimumThickness=n},iridescenceThicknessTexture:{extensions:{KHR_texture_transform:j("iridescence","thicknessTexture")}}},KHR_materials_sheen:{sheenColorFactor:{type:"Color3",get:(n,e,t)=>_(n,e,t).sheen.color,getTarget:_,set:(n,e,t,s)=>_(e,t,s).sheen.color.copyFrom(n)},sheenColorTexture:{extensions:{KHR_texture_transform:j("sheen","texture")}},sheenRoughnessFactor:{type:"number",get:(n,e,t)=>_(n,e,t).sheen.intensity,getTarget:_,set:(n,e,t,s)=>_(e,t,s).sheen.intensity=n},sheenRoughnessTexture:{extensions:{KHR_texture_transform:j("sheen","thicknessTexture")}}},KHR_materials_specular:{specularFactor:{type:"number",get:(n,e,t)=>_(n,e,t).metallicF0Factor,getTarget:_,set:(n,e,t,s)=>_(e,t,s).metallicF0Factor=n,getPropertyName:[()=>"metallicF0Factor"]},specularColorFactor:{type:"Color3",get:(n,e,t)=>_(n,e,t).metallicReflectanceColor,getTarget:_,set:(n,e,t,s)=>_(e,t,s).metallicReflectanceColor.copyFrom(n),getPropertyName:[()=>"metallicReflectanceColor"]},specularTexture:{extensions:{KHR_texture_transform:j("metallicReflectanceTexture")}},specularColorTexture:{extensions:{KHR_texture_transform:j("reflectanceTexture")}}},KHR_materials_transmission:{transmissionFactor:{type:"number",get:(n,e,t)=>_(n,e,t).subSurface.refractionIntensity,getTarget:_,set:(n,e,t,s)=>_(e,t,s).subSurface.refractionIntensity=n,getPropertyName:[()=>"subSurface.refractionIntensity"]},transmissionTexture:{extensions:{KHR_texture_transform:j("subSurface","refractionIntensityTexture")}}},KHR_materials_diffuse_transmission:{diffuseTransmissionFactor:{type:"number",get:(n,e,t)=>_(n,e,t).subSurface.translucencyIntensity,getTarget:_,set:(n,e,t,s)=>_(e,t,s).subSurface.translucencyIntensity=n},diffuseTransmissionTexture:{extensions:{KHR_texture_transform:j("subSurface","translucencyIntensityTexture")}},diffuseTransmissionColorFactor:{type:"Color3",get:(n,e,t)=>_(n,e,t).subSurface.translucencyColor,getTarget:_,set:(n,e,t,s)=>n&&_(e,t,s).subSurface.translucencyColor?.copyFrom(n)},diffuseTransmissionColorTexture:{extensions:{KHR_texture_transform:j("subSurface","translucencyColorTexture")}}},KHR_materials_volume:{attenuationColor:{type:"Color3",get:(n,e,t)=>_(n,e,t).subSurface.tintColor,getTarget:_,set:(n,e,t,s)=>_(e,t,s).subSurface.tintColor.copyFrom(n)},attenuationDistance:{type:"number",get:(n,e,t)=>_(n,e,t).subSurface.tintColorAtDistance,getTarget:_,set:(n,e,t,s)=>_(e,t,s).subSurface.tintColorAtDistance=n},thicknessFactor:{type:"number",get:(n,e,t)=>_(n,e,t).subSurface.maximumThickness,getTarget:_,set:(n,e,t,s)=>_(e,t,s).subSurface.maximumThickness=n},thicknessTexture:{extensions:{KHR_texture_transform:j("subSurface","thicknessTexture")}}}}}},qr={KHR_lights_punctual:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonLight),getPropertyName:[n=>"length"]},__array__:{__target__:!0,color:{type:"Color3",get:n=>n._babylonLight?.diffuse,set:(n,e)=>e._babylonLight?.diffuse.copyFrom(n),getTarget:n=>n._babylonLight,getPropertyName:[n=>"diffuse"]},intensity:{type:"number",get:n=>n._babylonLight?.intensity,set:(n,e)=>e._babylonLight?e._babylonLight.intensity=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"intensity"]},range:{type:"number",get:n=>n._babylonLight?.range,set:(n,e)=>e._babylonLight?e._babylonLight.range=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"range"]},spot:{innerConeAngle:{type:"number",get:n=>n._babylonLight?.innerAngle,set:(n,e)=>e._babylonLight?e._babylonLight.innerAngle=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"innerConeAngle"]},outerConeAngle:{type:"number",get:n=>n._babylonLight?.angle,set:(n,e)=>e._babylonLight?e._babylonLight.angle=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"outerConeAngle"]}}}}},EXT_lights_area:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonLight),getPropertyName:[n=>"length"]},__array__:{__target__:!0,color:{type:"Color3",get:n=>n._babylonLight?.diffuse,set:(n,e)=>e._babylonLight?.diffuse.copyFrom(n),getTarget:n=>n._babylonLight,getPropertyName:[n=>"diffuse"]},intensity:{type:"number",get:n=>n._babylonLight?.intensity,set:(n,e)=>e._babylonLight?e._babylonLight.intensity=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"intensity"]},size:{type:"number",get:n=>n._babylonLight?.height,set:(n,e)=>e._babylonLight?e._babylonLight.height=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"size"]},rect:{aspect:{type:"number",get:n=>n._babylonLight?.width/n._babylonLight?.height,set:(n,e)=>e._babylonLight?e._babylonLight.width=n*e._babylonLight.height:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"aspect"]}}}}},EXT_lights_ies:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonLight),getPropertyName:[n=>"length"]}}},EXT_lights_image_based:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonTexture),getPropertyName:[n=>"length"]},__array__:{__target__:!0,intensity:{type:"number",get:n=>n._babylonTexture?.level,set:(n,e)=>{e._babylonTexture&&(e._babylonTexture.level=n)},getTarget:n=>n._babylonTexture},rotation:{type:"Quaternion",get:n=>n._babylonTexture&&Y.FromRotationMatrix(n._babylonTexture?.getReflectionTextureMatrix()),set:(n,e)=>{e._babylonTexture&&(e._babylonTexture.getScene()?.useRightHandedSystem||(n=Y.Inverse(n)),Z.FromQuaternionToRef(n,e._babylonTexture.getReflectionTextureMatrix()))},getTarget:n=>n._babylonTexture}}}}};function _e(n,e,t,s){const r=_(n);return s?r[t][s]:r[t]}function _(n,e,t){return n._data?.[t?.fillMode??le.MATERIAL_TriangleFillMode]?.babylonMaterial}function j(n,e){return{offset:{componentsCount:2,type:"Vector2",get:(t,s,r)=>{const a=_e(t,r,n,e);return new Ie(a?.uOffset,a?.vOffset)},getTarget:_,set:(t,s,r,a)=>{const o=_e(s,a,n,e);o.uOffset=t.x,o.vOffset=t.y},getPropertyName:[()=>`${n}${e?"."+e:""}.uOffset`,()=>`${n}${e?"."+e:""}.vOffset`]},rotation:{type:"number",get:(t,s,r)=>_e(t,r,n,e)?.wAng,getTarget:_,set:(t,s,r,a)=>_e(s,a,n,e).wAng=t,getPropertyName:[()=>`${n}${e?"."+e:""}.wAng`]},scale:{componentsCount:2,type:"Vector2",get:(t,s,r)=>{const a=_e(t,r,n,e);return new Ie(a?.uScale,a?.vScale)},getTarget:_,set:(t,s,r,a)=>{const o=_e(s,a,n,e);o.uScale=t.x,o.vScale=t.y},getPropertyName:[()=>`${n}${e?"."+e:""}.uScale`,()=>`${n}${e?"."+e:""}.vScale`]}}}const vt={cameras:Wr,nodes:Hr,materials:zr,extensions:qr,animations:Kr,meshes:Ur};function Ut(n){return new Vr(n,vt)}function Me(n){const e=n.split("/").map(s=>s.replace(/{}/g,"__array__"));let t=vt;for(const s of e)s&&(t=t[s]);if(t&&t.type&&t.get)return t}function m(n,e){const t=n.split("/").map(r=>r.replace(/{}/g,"__array__"));let s=vt;for(const r of t)r&&(s=s[r]);s&&s.type&&s.get&&(s.interpolation=e)}function ie(n,e){const t=n.split("/").map(r=>r.replace(/{}/g,"__array__"));let s=vt;for(const r of t)if(r){if(!s[r]){if(r==="?"){s.__ignoreObjectTree__=!0;continue}s[r]={},r==="__array__"&&(s[r].__target__=!0)}s=s[r]}Object.assign(s,e)}const Yr=new Ds(()=>Te(()=>import("./animationGroup-BN6ExD_I.js").then(n=>n.d),__vite__mapDeps([0,1,2,3,4]),import.meta.url)),jr=new Ds(()=>Te(()=>Promise.resolve().then(()=>Xr),void 0,import.meta.url));class g{static Get(e,t,s){if(!t||s==null||!t[s])throw new Error(`${e}: Failed to find index (${s})`);return t[s]}static TryGet(e,t){return!e||t==null||!e[t]?null:e[t]}static Assign(e){if(e)for(let t=0;t<e.length;t++)e[t].index=t}}function Wt(n){if(n.min&&n.max){const e=n.min,t=n.max,s=re.Vector3[0].copyFromFloats(e[0],e[1],e[2]),r=re.Vector3[1].copyFromFloats(t[0],t[1],t[2]);if(n.normalized&&n.componentType!==5126){let a=1;switch(n.componentType){case 5120:a=127;break;case 5121:a=255;break;case 5122:a=32767;break;case 5123:a=65535;break}const o=1/a;s.scaleInPlace(o),r.scaleInPlace(o)}return new Qn(s,r)}return null}class b{isMatchingMaterialType(e){return e&&this._pbrMaterialImpl?e instanceof this._pbrMaterialImpl.materialClass:!1}static RegisterExtension(e,t){P(e,!1,t)}static UnregisterExtension(e){return L(e)}get gltf(){if(!this._gltf)throw new Error("glTF JSON is not available");return this._gltf}get bin(){return this._bin}get parent(){return this._parent}get babylonScene(){if(!this._babylonScene)throw new Error("Scene is not available");return this._babylonScene}get rootBabylonMesh(){return this._rootBabylonMesh}get rootUrl(){return this._rootUrl}constructor(e){this._completePromises=new Array,this._assetContainer=null,this._babylonLights=[],this._disableInstancedMesh=0,this._allMaterialsDirtyRequired=!1,this._skipStartAnimationStep=!1,this._extensions=new Array,this._disposed=!1,this._rootUrl=null,this._fileName=null,this._uniqueRootUrl=null,this._bin=null,this._rootBabylonMesh=null,this._defaultBabylonMaterialData={},this._postSceneLoadActions=new Array,this._materialAdapterCache=new WeakMap,this._pbrMaterialImpl=null,this._parent=e}_getOrCreateMaterialAdapter(e){let t=this._materialAdapterCache.get(e);if(!t){if(this._pbrMaterialImpl)t=new this._pbrMaterialImpl.adapterClass(e);else throw new Error("Appropriate material adapter class not found");this._materialAdapterCache.set(e,t)}return t}dispose(){this._disposed||(this._disposed=!0,this._completePromises.length=0,this._extensions.forEach(e=>e.dispose&&e.dispose()),this._extensions.length=0,this._gltf=null,this._bin=null,this._babylonScene=null,this._rootBabylonMesh=null,this._defaultBabylonMaterialData={},this._postSceneLoadActions.length=0,this._parent.dispose())}async importMeshAsync(e,t,s,r,a,o,i=""){return await Promise.resolve().then(async()=>{this._babylonScene=t,this._assetContainer=s,this._loadData(r);let l=null;if(e){const u={};if(this._gltf.nodes)for(const h of this._gltf.nodes)h.name&&(u[h.name]=h.index);l=(e instanceof Array?e:[e]).map(h=>{const d=u[h];if(d===void 0)throw new Error(`Failed to find node '${h}'`);return d})}return await this._loadAsync(a,i,l,()=>({meshes:this._getMeshes(),particleSystems:[],skeletons:this._getSkeletons(),animationGroups:this._getAnimationGroups(),lights:this._babylonLights,transformNodes:this._getTransformNodes(),geometries:this._getGeometries(),spriteManagers:[]}))})}async loadAsync(e,t,s,r,a=""){return this._babylonScene=e,this._loadData(t),await this._loadAsync(s,a,null,()=>{})}async _loadAsync(e,t,s,r){return await Promise.resolve().then(async()=>{this._rootUrl=e,this._uniqueRootUrl=!e.startsWith("file:")&&t?e:`${e}${Date.now()}/`,this._fileName=t,this._allMaterialsDirtyRequired=!1,await this._loadExtensionsAsync(),!this.parent.skipMaterials&&this._pbrMaterialImpl==null&&(this.parent.useOpenPBR||this.isExtensionUsed("KHR_materials_openpbr")?this._pbrMaterialImpl={materialClass:(await Te(async()=>{const{OpenPBRMaterial:c}=await import("./openpbrMaterial-KVtjwf0K.js");return{OpenPBRMaterial:c}},__vite__mapDeps([5,2,3,1,4]),import.meta.url)).OpenPBRMaterial,adapterClass:(await Te(async()=>{const{OpenPBRMaterialLoadingAdapter:c}=await Promise.resolve().then(()=>Zr);return{OpenPBRMaterialLoadingAdapter:c}},void 0,import.meta.url)).OpenPBRMaterialLoadingAdapter}:this._pbrMaterialImpl={materialClass:(await Te(async()=>{const{PBRMaterial:c}=await import("./lazy-BcZCe0kL.js").then(h=>h.bw);return{PBRMaterial:c}},__vite__mapDeps([3,2,1,4]),import.meta.url)).PBRMaterial,adapterClass:(await Te(async()=>{const{PBRMaterialLoadingAdapter:c}=await Promise.resolve().then(()=>Jr);return{PBRMaterialLoadingAdapter:c}},void 0,import.meta.url)).PBRMaterialLoadingAdapter});const a=`${se[se.LOADING]} => ${se[se.READY]}`,o=`${se[se.LOADING]} => ${se[se.COMPLETE]}`;this._parent._startPerformanceCounter(a),this._parent._startPerformanceCounter(o),this._parent._setState(se.LOADING),this._extensionsOnLoading();const i=new Array,l=this._babylonScene.blockMaterialDirtyMechanism;if(this._babylonScene.blockMaterialDirtyMechanism=!0,!this.parent.loadOnlyMaterials){if(s)i.push(this.loadSceneAsync("/nodes",{nodes:s,index:-1}));else if(this._gltf.scene!=null||this._gltf.scenes&&this._gltf.scenes[0]){const c=g.Get("/scene",this._gltf.scenes,this._gltf.scene||0);i.push(this.loadSceneAsync(`/scenes/${c.index}`,c))}}if(!this.parent.skipMaterials&&this.parent.loadAllMaterials&&this._gltf.materials)for(let c=0;c<this._gltf.materials.length;++c){const h=this._gltf.materials[c],d="/materials/"+c,f=ae.TriangleFillMode;i.push(this._loadMaterialAsync(d,h,null,f,()=>{}))}return this._allMaterialsDirtyRequired?this._babylonScene.blockMaterialDirtyMechanism=l:this._babylonScene._forceBlockMaterialDirtyMechanism(l),this._parent.compileMaterials&&i.push(this._compileMaterialsAsync()),this._parent.compileShadowGenerators&&i.push(this._compileShadowGeneratorsAsync()),await Promise.all(i).then(()=>{this._rootBabylonMesh&&this._rootBabylonMesh!==this._parent.customRootNode&&this._rootBabylonMesh.setEnabled(!0);for(const c of this._babylonScene.materials){const h=c;h.maxSimultaneousLights!==void 0&&(h.maxSimultaneousLights=Math.max(h.maxSimultaneousLights,this._babylonScene.lights.length))}return this._extensionsOnReady(),this._parent._setState(se.READY),this._skipStartAnimationStep||this._startAnimations(),r()}).then(c=>(this._parent._endPerformanceCounter(a),D.SetImmediate(()=>{this._disposed||Promise.all(this._completePromises).then(()=>{this._parent._endPerformanceCounter(o),this._parent._setState(se.COMPLETE),this._parent.onCompleteObservable.notifyObservers(void 0),this._parent.onCompleteObservable.clear(),this.dispose()},h=>{this._parent.onErrorObservable.notifyObservers(h),this._parent.onErrorObservable.clear(),this.dispose()})}),c))}).catch(a=>{throw this._disposed||(this._parent.onErrorObservable.notifyObservers(a),this._parent.onErrorObservable.clear(),this.dispose()),a})}_loadData(e){if(this._gltf=e.json,this._setupData(),e.bin){const t=this._gltf.buffers;if(t&&t[0]&&!t[0].uri){const s=t[0];(s.byteLength<e.bin.byteLength-3||s.byteLength>e.bin.byteLength)&&R.Warn(`Binary buffer length (${s.byteLength}) from JSON does not match chunk length (${e.bin.byteLength})`),this._bin=e.bin}else R.Warn("Unexpected BIN chunk")}}_setupData(){if(g.Assign(this._gltf.accessors),g.Assign(this._gltf.animations),g.Assign(this._gltf.buffers),g.Assign(this._gltf.bufferViews),g.Assign(this._gltf.cameras),g.Assign(this._gltf.images),g.Assign(this._gltf.materials),g.Assign(this._gltf.meshes),g.Assign(this._gltf.nodes),g.Assign(this._gltf.samplers),g.Assign(this._gltf.scenes),g.Assign(this._gltf.skins),g.Assign(this._gltf.textures),this._gltf.nodes){const e={};for(const s of this._gltf.nodes)if(s.children)for(const r of s.children)e[r]=s.index;const t=this._createRootNode();for(const s of this._gltf.nodes){const r=e[s.index];s.parent=r===void 0?t:this._gltf.nodes[r]}}}async _loadExtensionsAsync(){const e=[];if(qs.forEach((t,s)=>{this.parent.extensionOptions[s]?.enabled===!1?t.isGLTFExtension&&this.isExtensionUsed(s)&&R.Warn(`Extension ${s} is used but has been explicitly disabled.`):(!t.isGLTFExtension||this.isExtensionUsed(s))&&e.push((async()=>{const r=await t.factory(this);return r.name!==s&&R.Warn(`The name of the glTF loader extension instance does not match the registered name: ${r.name} !== ${s}`),this._parent.onExtensionLoadedObservable.notifyObservers(r),r})())}),this._extensions.push(...await Promise.all(e)),this._extensions.sort((t,s)=>(t.order||Number.MAX_VALUE)-(s.order||Number.MAX_VALUE)),this._parent.onExtensionLoadedObservable.clear(),this._gltf.extensionsRequired){for(const t of this._gltf.extensionsRequired)if(!this._extensions.some(r=>r.name===t&&r.enabled))throw this.parent.extensionOptions[t]?.enabled===!1?new Error(`Required extension ${t} is disabled`):new Error(`Required extension ${t} is not available`)}}_createRootNode(){if(this._parent.customRootNode!==void 0)return this._rootBabylonMesh=this._parent.customRootNode,{_babylonTransformNode:this._rootBabylonMesh===null?void 0:this._rootBabylonMesh,index:-1};this._babylonScene._blockEntityCollection=!!this._assetContainer;const e=new we("__root__",this._babylonScene);this._rootBabylonMesh=e,this._rootBabylonMesh._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,this._rootBabylonMesh.setEnabled(!1);const t={_babylonTransformNode:this._rootBabylonMesh,index:-1};switch(this._parent.coordinateSystemMode){case Ne.AUTO:{this._babylonScene.useRightHandedSystem||(t.rotation=[0,1,0,0],t.scale=[1,1,-1],b._LoadTransform(t,this._rootBabylonMesh));break}case Ne.FORCE_RIGHT_HANDED:{this._babylonScene.useRightHandedSystem=!0;break}default:throw new Error(`Invalid coordinate system mode (${this._parent.coordinateSystemMode})`)}return this._parent.onMeshLoadedObservable.notifyObservers(e),t}loadSceneAsync(e,t){const s=this._extensionsLoadSceneAsync(e,t);if(s)return s;const r=new Array;if(this.logOpen(`${e} ${t.name||""}`),t.nodes)for(const a of t.nodes){const o=g.Get(`${e}/nodes/${a}`,this._gltf.nodes,a);r.push(this.loadNodeAsync(`/nodes/${o.index}`,o,i=>{i.parent=this._rootBabylonMesh}))}for(const a of this._postSceneLoadActions)a();return r.push(this._loadAnimationsAsync()),this.logClose(),Promise.all(r).then(()=>{})}_forEachPrimitive(e,t){if(e._primitiveBabylonMeshes)for(const s of e._primitiveBabylonMeshes)t(s)}_getGeometries(){const e=[],t=this._gltf.nodes;if(t)for(const s of t)this._forEachPrimitive(s,r=>{const a=r.geometry;a&&e.indexOf(a)===-1&&e.push(a)});return e}_getMeshes(){const e=[];this._rootBabylonMesh instanceof ks&&e.push(this._rootBabylonMesh);const t=this._gltf.nodes;if(t)for(const s of t)this._forEachPrimitive(s,r=>{e.push(r)});return e}_getTransformNodes(){const e=[],t=this._gltf.nodes;if(t)for(const s of t)s._babylonTransformNode&&s._babylonTransformNode.getClassName()==="TransformNode"&&e.push(s._babylonTransformNode),s._babylonTransformNodeForSkin&&e.push(s._babylonTransformNodeForSkin);return e}_getSkeletons(){const e=[],t=this._gltf.skins;if(t)for(const s of t)s._data&&e.push(s._data.babylonSkeleton);return e}_getAnimationGroups(){const e=[],t=this._gltf.animations;if(t)for(const s of t)s._babylonAnimationGroup&&e.push(s._babylonAnimationGroup);return e}_startAnimations(){switch(this._parent.animationStartMode){case xe.NONE:break;case xe.FIRST:{const e=this._getAnimationGroups();e.length!==0&&e[0].start(!0);break}case xe.ALL:{const e=this._getAnimationGroups();for(const t of e)t.start(!0);break}default:{R.Error(`Invalid animation start mode (${this._parent.animationStartMode})`);return}}}loadNodeAsync(e,t,s=()=>{}){const r=this._extensionsLoadNodeAsync(e,t,s);if(r)return r;if(t._babylonTransformNode)throw new Error(`${e}: Invalid recursive node hierarchy`);const a=new Array;this.logOpen(`${e} ${t.name||""}`);const o=u=>{if(b.AddPointerMetadata(u,e),b._LoadTransform(t,u),t.camera!=null){const c=g.Get(`${e}/camera`,this._gltf.cameras,t.camera);a.push(this.loadCameraAsync(`/cameras/${c.index}`,c,h=>{h.parent=u,this._babylonScene.useRightHandedSystem||(u.scaling.x=-1)}))}if(t.children)for(const c of t.children){const h=g.Get(`${e}/children/${c}`,this._gltf.nodes,c);a.push(this.loadNodeAsync(`/nodes/${h.index}`,h,d=>{d.parent=u}))}s(u)},i=t.mesh!=null,l=this._parent.loadSkins&&t.skin!=null;if(!i||l){const u=t.name||`node${t.index}`;this._babylonScene._blockEntityCollection=!!this._assetContainer;const c=new St(u,this._babylonScene);c._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t.mesh==null?t._babylonTransformNode=c:t._babylonTransformNodeForSkin=c,o(c)}if(i)if(l){const u=g.Get(`${e}/mesh`,this._gltf.meshes,t.mesh);a.push(this._loadMeshAsync(`/meshes/${u.index}`,t,u,c=>{const h=t._babylonTransformNodeForSkin;c.metadata=ar(h.metadata,c.metadata||{});const d=g.Get(`${e}/skin`,this._gltf.skins,t.skin);a.push(this._loadSkinAsync(`/skins/${d.index}`,t,d,f=>{this._forEachPrimitive(t,p=>{p.skeleton=f}),this._postSceneLoadActions.push(()=>{if(d.skeleton!=null){const p=g.Get(`/skins/${d.index}/skeleton`,this._gltf.nodes,d.skeleton).parent;t.index===p.index?c.parent=h.parent:c.parent=p._babylonTransformNode}else c.parent=this._rootBabylonMesh;this._parent.onSkinLoadedObservable.notifyObservers({node:h,skinnedNode:c})})}))}))}else{const u=g.Get(`${e}/mesh`,this._gltf.meshes,t.mesh);a.push(this._loadMeshAsync(`/meshes/${u.index}`,t,u,o))}return this.logClose(),Promise.all(a).then(()=>(this._forEachPrimitive(t,u=>{const c=u;!c.isAnInstance&&c.geometry&&c.geometry.useBoundingInfoFromGeometry?u._updateBoundingInfo():u.refreshBoundingInfo(!0,!0)}),t._babylonTransformNode))}_loadMeshAsync(e,t,s,r){const a=s.primitives;if(!a||!a.length)throw new Error(`${e}: Primitives are missing`);a[0].index==null&&g.Assign(a);const o=new Array;this.logOpen(`${e} ${s.name||""}`);const i=t.name||`node${t.index}`;if(a.length===1){const l=s.primitives[0];o.push(this._loadMeshPrimitiveAsync(`${e}/primitives/${l.index}`,i,t,s,l,u=>{t._babylonTransformNode=u,t._primitiveBabylonMeshes=[u]}))}else{this._babylonScene._blockEntityCollection=!!this._assetContainer,t._babylonTransformNode=new St(i,this._babylonScene),t._babylonTransformNode._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._primitiveBabylonMeshes=[];for(const l of a)o.push(this._loadMeshPrimitiveAsync(`${e}/primitives/${l.index}`,`${i}_primitive${l.index}`,t,s,l,u=>{u.parent=t._babylonTransformNode,t._primitiveBabylonMeshes.push(u)}))}return r(t._babylonTransformNode),this.logClose(),Promise.all(o).then(()=>t._babylonTransformNode)}_loadMeshPrimitiveAsync(e,t,s,r,a,o){const i=this._extensionsLoadMeshPrimitiveAsync(e,t,s,r,a,o);if(i)return i;this.logOpen(`${e}`);const l=this._disableInstancedMesh===0&&this._parent.createInstances&&s.skin==null&&!r.primitives[0].targets;let u,c;if(l&&a._instanceData)this._babylonScene._blockEntityCollection=!!this._assetContainer,u=a._instanceData.babylonSourceMesh.createInstance(t),u._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,c=a._instanceData.promise;else{const h=new Array;this._babylonScene._blockEntityCollection=!!this._assetContainer;const d=new we(t,this._babylonScene);if(d._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,d.sideOrientation=this._babylonScene.useRightHandedSystem?ae.CounterClockWiseSideOrientation:ae.ClockWiseSideOrientation,this._createMorphTargets(e,s,r,a,d),h.push(this._loadVertexDataAsync(e,a,d).then(async f=>await this._loadMorphTargetsAsync(e,a,d,f).then(()=>{this._disposed||(this._babylonScene._blockEntityCollection=!!this._assetContainer,f.applyToMesh(d),f._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1)}))),!this.parent.skipMaterials){const f=b._GetDrawMode(e,a.mode);if(a.material==null){let p=this._defaultBabylonMaterialData[f];p||(p=this._createDefaultMaterial("__GLTFLoader._default",f),this._parent.onMaterialLoadedObservable.notifyObservers(p),this._defaultBabylonMaterialData[f]=p),d.material=p}else{const p=g.Get(`${e}/material`,this._gltf.materials,a.material);h.push(this._loadMaterialAsync(`/materials/${p.index}`,p,d,f,E=>{d.material=E}))}}c=Promise.all(h),l&&(a._instanceData={babylonSourceMesh:d,promise:c}),u=d}return b.AddPointerMetadata(u,e),this._parent.onMeshLoadedObservable.notifyObservers(u),o(u),this.logClose(),c.then(()=>u)}_loadVertexDataAsync(e,t,s){const r=this._extensionsLoadVertexDataAsync(e,t,s);if(r)return r;const a=t.attributes;if(!a)throw new Error(`${e}: Attributes are missing`);const o=new Array,i=new Gs(s.name,this._babylonScene);if(t.indices==null)s.isUnIndexed=!0;else{const u=g.Get(`${e}/indices`,this._gltf.accessors,t.indices);o.push(this._loadIndicesAccessorAsync(`/accessors/${u.index}`,u).then(c=>{i.setIndices(c)}))}const l=(u,c,h)=>{if(a[u]==null)return;s._delayInfo=s._delayInfo||[],s._delayInfo.indexOf(c)===-1&&s._delayInfo.push(c);const d=g.Get(`${e}/attributes/${u}`,this._gltf.accessors,a[u]);o.push(this._loadVertexAccessorAsync(`/accessors/${d.index}`,d,c).then(f=>{if(f.getKind()===k.PositionKind&&!this.parent.alwaysComputeBoundingBox&&!s.skeleton){const p=Wt(d);p&&(i._boundingInfo=p,i.useBoundingInfoFromGeometry=!0)}i.setVerticesBuffer(f,d.count)})),c==k.MatricesIndicesExtraKind&&(s.numBoneInfluencers=8),h&&h(d)};return l("POSITION",k.PositionKind),l("NORMAL",k.NormalKind),l("TANGENT",k.TangentKind),l("TEXCOORD_0",k.UVKind),l("TEXCOORD_1",k.UV2Kind),l("TEXCOORD_2",k.UV3Kind),l("TEXCOORD_3",k.UV4Kind),l("TEXCOORD_4",k.UV5Kind),l("TEXCOORD_5",k.UV6Kind),l("JOINTS_0",k.MatricesIndicesKind),l("WEIGHTS_0",k.MatricesWeightsKind),l("JOINTS_1",k.MatricesIndicesExtraKind),l("WEIGHTS_1",k.MatricesWeightsExtraKind),l("COLOR_0",k.ColorKind,u=>{u.type==="VEC4"&&(s.hasVertexAlpha=!0)}),Promise.all(o).then(()=>i)}_createMorphTargets(e,t,s,r,a){if(!r.targets||!this._parent.loadMorphTargets)return;if(t._numMorphTargets==null)t._numMorphTargets=r.targets.length;else if(r.targets.length!==t._numMorphTargets)throw new Error(`${e}: Primitives do not have the same number of targets`);const o=s.extras?s.extras.targetNames:null;this._babylonScene._blockEntityCollection=!!this._assetContainer,a.morphTargetManager=new or(this._babylonScene),a.morphTargetManager._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,a.morphTargetManager.areUpdatesFrozen=!0;for(let i=0;i<r.targets.length;i++){const l=t.weights?t.weights[i]:s.weights?s.weights[i]:0,u=o?o[i]:`morphTarget${i}`;a.morphTargetManager.addTarget(new ir(u,l,a.getScene()))}}_loadMorphTargetsAsync(e,t,s,r){if(!t.targets||!this._parent.loadMorphTargets)return Promise.resolve();const a=new Array,o=s.morphTargetManager;for(let i=0;i<o.numTargets;i++){const l=o.getTarget(i);a.push(this._loadMorphTargetVertexDataAsync(`${e}/targets/${i}`,r,t.targets[i],l))}return Promise.all(a).then(()=>{o.areUpdatesFrozen=!1})}async _loadMorphTargetVertexDataAsync(e,t,s,r){const a=new Array,o=(i,l,u)=>{if(s[i]==null)return;const c=t.getVertexBuffer(l);if(!c)return;const h=g.Get(`${e}/${i}`,this._gltf.accessors,s[i]);a.push(this._loadFloatAccessorAsync(`/accessors/${h.index}`,h).then(d=>{u(c,d)}))};return o("POSITION",k.PositionKind,(i,l)=>{const u=new Float32Array(l.length);i.forEach(l.length,(c,h)=>{u[h]=l[h]+c}),r.setPositions(u)}),o("NORMAL",k.NormalKind,(i,l)=>{const u=new Float32Array(l.length);i.forEach(u.length,(c,h)=>{u[h]=l[h]+c}),r.setNormals(u)}),o("TANGENT",k.TangentKind,(i,l)=>{const u=new Float32Array(l.length/3*4);let c=0;i.forEach(l.length/3*4,(h,d)=>{(d+1)%4!==0&&(u[c]=l[c]+h,c++)}),r.setTangents(u)}),o("TEXCOORD_0",k.UVKind,(i,l)=>{const u=new Float32Array(l.length);i.forEach(l.length,(c,h)=>{u[h]=l[h]+c}),r.setUVs(u)}),o("TEXCOORD_1",k.UV2Kind,(i,l)=>{const u=new Float32Array(l.length);i.forEach(l.length,(c,h)=>{u[h]=l[h]+c}),r.setUV2s(u)}),o("COLOR_0",k.ColorKind,(i,l)=>{let u=null;const c=i.getSize();if(c===3){u=new Float32Array(l.length/3*4),i.forEach(l.length,(h,d)=>{const f=Math.floor(d/3),p=d%3;u[4*f+p]=l[3*f+p]+h});for(let h=0;h<l.length/3;++h)u[4*h+3]=1}else if(c===4)u=new Float32Array(l.length),i.forEach(l.length,(h,d)=>{u[d]=l[d]+h});else throw new Error(`${e}: Invalid number of components (${c}) for COLOR_0 attribute`);r.setColors(u)}),await Promise.all(a).then(()=>{})}static _LoadTransform(e,t){if(e.skin!=null)return;let s=w.Zero(),r=Y.Identity(),a=w.One();e.matrix?Z.FromArray(e.matrix).decompose(a,r,s):(e.translation&&(s=w.FromArray(e.translation)),e.rotation&&(r=Y.FromArray(e.rotation)),e.scale&&(a=w.FromArray(e.scale))),t.position=s,t.rotationQuaternion=r,t.scaling=a}_loadSkinAsync(e,t,s,r){if(!this._parent.loadSkins)return Promise.resolve();const a=this._extensionsLoadSkinAsync(e,t,s);if(a)return a;if(s._data)return r(s._data.babylonSkeleton),s._data.promise;const o=`skeleton${s.index}`;this._babylonScene._blockEntityCollection=!!this._assetContainer;const i=new $t(s.name||o,o,this._babylonScene);i._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,this._loadBones(e,s,i);const l=this._loadSkinInverseBindMatricesDataAsync(e,s).then(u=>{this._updateBoneMatrices(i,u)});return s._data={babylonSkeleton:i,promise:l},r(i),l}_loadBones(e,t,s){if(t.skeleton==null||this._parent.alwaysComputeSkeletonRootNode){const a=this._findSkeletonRootNode(`${e}/joints`,t.joints);if(a)if(t.skeleton===void 0)t.skeleton=a.index;else{const o=(l,u)=>{for(;u.parent;u=u.parent)if(u.parent===l)return!0;return!1},i=g.Get(`${e}/skeleton`,this._gltf.nodes,t.skeleton);i!==a&&!o(i,a)&&(R.Warn(`${e}/skeleton: Overriding with nearest common ancestor as skeleton node is not a common root`),t.skeleton=a.index)}else R.Warn(`${e}: Failed to find common root`)}const r={};for(const a of t.joints){const o=g.Get(`${e}/joints/${a}`,this._gltf.nodes,a);this._loadBone(o,t,s,r)}}_findSkeletonRootNode(e,t){if(t.length===0)return null;const s={};for(const a of t){const o=[];let i=g.Get(`${e}/${a}`,this._gltf.nodes,a);for(;i.index!==-1;)o.unshift(i),i=i.parent;s[a]=o}let r=null;for(let a=0;;++a){let o=s[t[0]];if(a>=o.length)return r;const i=o[a];for(let l=1;l<t.length;++l)if(o=s[t[l]],a>=o.length||i!==o[a])return r;r=i}}_loadBone(e,t,s,r){e._isJoint=!0;let a=r[e.index];if(a)return a;let o=null;e.index!==t.skeleton&&(e.parent&&e.parent.index!==-1?o=this._loadBone(e.parent,t,s,r):t.skeleton!==void 0&&R.Warn(`/skins/${t.index}/skeleton: Skeleton node is not a common root`));const i=t.joints.indexOf(e.index);return a=new Pe(e.name||`joint${e.index}`,s,o,this._getNodeMatrix(e),null,null,i),r[e.index]=a,this._postSceneLoadActions.push(()=>{a.linkTransformNode(e._babylonTransformNode)}),a}_loadSkinInverseBindMatricesDataAsync(e,t){if(t.inverseBindMatrices==null)return Promise.resolve(null);const s=g.Get(`${e}/inverseBindMatrices`,this._gltf.accessors,t.inverseBindMatrices);return this._loadFloatAccessorAsync(`/accessors/${s.index}`,s)}_updateBoneMatrices(e,t){for(const s of e.bones){const r=Z.Identity(),a=s._index;t&&a!==-1&&(Z.FromArrayToRef(t,a*16,r),r.invertToRef(r));const o=s.getParent();o&&r.multiplyToRef(o.getAbsoluteInverseBindMatrix(),r),s.updateMatrix(r,!1,!1),s._updateAbsoluteBindMatrices(void 0,!1)}}_getNodeMatrix(e){return e.matrix?Z.FromArray(e.matrix):Z.Compose(e.scale?w.FromArray(e.scale):w.One(),e.rotation?Y.FromArray(e.rotation):Y.Identity(),e.translation?w.FromArray(e.translation):w.Zero())}loadCameraAsync(e,t,s=()=>{}){const r=this._extensionsLoadCameraAsync(e,t,s);if(r)return r;const a=new Array;this.logOpen(`${e} ${t.name||""}`),this._babylonScene._blockEntityCollection=!!this._assetContainer;const o=new Nt(t.name||`camera${t.index}`,w.Zero(),this._babylonScene,!1);switch(o._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._babylonCamera=o,o.setTarget(new w(0,0,-1)),t.type){case"perspective":{const i=t.perspective;if(!i)throw new Error(`${e}: Camera perspective properties are missing`);o.fov=i.yfov,o.minZ=i.znear,o.maxZ=i.zfar||0;break}case"orthographic":{if(!t.orthographic)throw new Error(`${e}: Camera orthographic properties are missing`);o.mode=Bs.ORTHOGRAPHIC_CAMERA,o.orthoLeft=-t.orthographic.xmag,o.orthoRight=t.orthographic.xmag,o.orthoBottom=-t.orthographic.ymag,o.orthoTop=t.orthographic.ymag,o.minZ=t.orthographic.znear,o.maxZ=t.orthographic.zfar;break}default:throw new Error(`${e}: Invalid camera type (${t.type})`)}return b.AddPointerMetadata(o,e),this._parent.onCameraLoadedObservable.notifyObservers(o),s(o),this.logClose(),Promise.all(a).then(()=>o)}_loadAnimationsAsync(){this._parent._startPerformanceCounter("Load animations");const e=this._gltf.animations;if(!e)return Promise.resolve();const t=new Array;for(let s=0;s<e.length;s++){const r=e[s];t.push(this.loadAnimationAsync(`/animations/${r.index}`,r).then(a=>{a.targetedAnimations.length===0&&a.dispose()}))}return Promise.all(t).then(()=>{this._parent._endPerformanceCounter("Load animations")})}loadAnimationAsync(e,t){this._parent._startPerformanceCounter("Load animation");const s=this._extensionsLoadAnimationAsync(e,t);return s||Yr.value.then(({AnimationGroup:r})=>{this._babylonScene._blockEntityCollection=!!this._assetContainer;const a=new r(t.name||`animation${t.index}`,this._babylonScene);a._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._babylonAnimationGroup=a;const o=new Array;g.Assign(t.channels),g.Assign(t.samplers);for(const i of t.channels)o.push(this._loadAnimationChannelAsync(`${e}/channels/${i.index}`,e,t,i,(l,u)=>{l.animations=l.animations||[],l.animations.push(u),a.addTargetedAnimation(u,l)}));return this._parent._endPerformanceCounter("Load animation"),Promise.all(o).then(()=>(a.normalize(0),a))})}_loadAnimationChannelAsync(e,t,s,r,a){const o=this._extensionsLoadAnimationChannelAsync(e,t,s,r,a);if(o)return o;if(r.target.node==null)return Promise.resolve();const i=g.Get(`${e}/target/node`,this._gltf.nodes,r.target.node),l=r.target.path,u=l==="weights";return u&&!i._numMorphTargets||!u&&!i._babylonTransformNode||!this._parent.loadNodeAnimations&&!u&&!i._isJoint?Promise.resolve():jr.value.then(()=>{let c;switch(l){case"translation":{c=Me("/nodes/{}/translation")?.interpolation;break}case"rotation":{c=Me("/nodes/{}/rotation")?.interpolation;break}case"scale":{c=Me("/nodes/{}/scale")?.interpolation;break}case"weights":{c=Me("/nodes/{}/weights")?.interpolation;break}default:throw new Error(`${e}/target/path: Invalid value (${r.target.path})`)}if(!c)throw new Error(`${e}/target/path: Could not find interpolation properties for target path (${r.target.path})`);const h={object:i,info:c};return this._loadAnimationChannelFromTargetInfoAsync(e,t,s,r,h,a)})}_loadAnimationChannelFromTargetInfoAsync(e,t,s,r,a,o){const i=this.parent.targetFps,l=1/i,u=g.Get(`${e}/sampler`,s.samplers,r.sampler);return this._loadAnimationSamplerAsync(`${t}/samplers/${r.sampler}`,u).then(c=>{let h=0;const d=a.object,f=a.info;for(const p of f){const E=p.getStride(d),T=c.input,A=c.output,B=new Array(T.length);let I=0;switch(c.interpolation){case"STEP":{for(let M=0;M<T.length;M++){const C=p.getValue(d,A,I,1);I+=E,B[M]={frame:T[M]*i,value:C,interpolation:1}}break}case"CUBICSPLINE":{for(let M=0;M<T.length;M++){const C=p.getValue(d,A,I,l);I+=E;const S=p.getValue(d,A,I,1);I+=E;const v=p.getValue(d,A,I,l);I+=E,B[M]={frame:T[M]*i,inTangent:C,value:S,outTangent:v}}break}case"LINEAR":{for(let M=0;M<T.length;M++){const C=p.getValue(d,A,I,1);I+=E,B[M]={frame:T[M]*i,value:C}}break}}if(I>0){const M=`${s.name||`animation${s.index}`}_channel${r.index}_${h}`,C=p.buildAnimations(d,M,i,B);for(const S of C)h++,o(S.babylonAnimatable,S.babylonAnimation)}}})}_loadAnimationSamplerAsync(e,t){if(t._data)return t._data;const s=t.interpolation||"LINEAR";switch(s){case"STEP":case"LINEAR":case"CUBICSPLINE":break;default:throw new Error(`${e}/interpolation: Invalid value (${t.interpolation})`)}const r=g.Get(`${e}/input`,this._gltf.accessors,t.input),a=g.Get(`${e}/output`,this._gltf.accessors,t.output);return t._data=Promise.all([this._loadFloatAccessorAsync(`/accessors/${r.index}`,r),this._loadFloatAccessorAsync(`/accessors/${a.index}`,a)]).then(([o,i])=>({input:o,interpolation:s,output:i})),t._data}loadBufferAsync(e,t,s,r){const a=this._extensionsLoadBufferAsync(e,t,s,r);if(a)return a;if(!t._data)if(t.uri)t._data=this.loadUriAsync(`${e}/uri`,t,t.uri);else{if(!this._bin)throw new Error(`${e}: Uri is missing or the binary glTF is missing its binary chunk`);t._data=this._bin.readAsync(0,t.byteLength)}return t._data.then(o=>{try{return new Uint8Array(o.buffer,o.byteOffset+s,r)}catch(i){throw new Error(`${e}: ${i.message}`,{cause:i})}})}loadBufferViewAsync(e,t){const s=this._extensionsLoadBufferViewAsync(e,t);if(s)return s;if(t._data)return t._data;const r=g.Get(`${e}/buffer`,this._gltf.buffers,t.buffer);return t._data=this.loadBufferAsync(`/buffers/${r.index}`,r,t.byteOffset||0,t.byteLength),t._data}_loadAccessorAsync(e,t,s){if(t._data)return t._data;const r=b._GetNumComponents(e,t.type),a=r*k.GetTypeByteLength(t.componentType),o=r*t.count;if(t.bufferView==null)t._data=Promise.resolve(new s(o));else{const i=g.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync(`/bufferViews/${i.index}`,i).then(l=>{if(t.componentType===5126&&!t.normalized&&(!i.byteStride||i.byteStride===a))return b._GetTypedArray(e,t.componentType,l,t.byteOffset,o);{const u=new s(o);return k.ForEach(l,t.byteOffset||0,i.byteStride||a,r,t.componentType,u.length,t.normalized||!1,(c,h)=>{u[h]=c}),u}})}if(t.sparse){const i=t.sparse;t._data=t._data.then(l=>{const u=l,c=g.Get(`${e}/sparse/indices/bufferView`,this._gltf.bufferViews,i.indices.bufferView),h=g.Get(`${e}/sparse/values/bufferView`,this._gltf.bufferViews,i.values.bufferView);return Promise.all([this.loadBufferViewAsync(`/bufferViews/${c.index}`,c),this.loadBufferViewAsync(`/bufferViews/${h.index}`,h)]).then(([d,f])=>{const p=b._GetTypedArray(`${e}/sparse/indices`,i.indices.componentType,d,i.indices.byteOffset,i.count),E=r*i.count;let T;if(t.componentType===5126&&!t.normalized)T=b._GetTypedArray(`${e}/sparse/values`,t.componentType,f,i.values.byteOffset,E);else{const B=b._GetTypedArray(`${e}/sparse/values`,t.componentType,f,i.values.byteOffset,E);T=new s(E),k.ForEach(B,0,a,r,t.componentType,T.length,t.normalized||!1,(I,M)=>{T[M]=I})}let A=0;for(let B=0;B<p.length;B++){let I=p[B]*r;for(let M=0;M<r;M++)u[I++]=T[A++]}return u})})}return t._data}_loadFloatAccessorAsync(e,t){return this._loadAccessorAsync(e,t,Float32Array)}_loadIndicesAccessorAsync(e,t){if(t.type!=="SCALAR")throw new Error(`${e}/type: Invalid value ${t.type}`);if(t.componentType!==5121&&t.componentType!==5123&&t.componentType!==5125)throw new Error(`${e}/componentType: Invalid value ${t.componentType}`);if(t._data)return t._data;if(t.sparse){const s=b._GetTypedArrayConstructor(`${e}/componentType`,t.componentType);t._data=this._loadAccessorAsync(e,t,s)}else{const s=g.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync(`/bufferViews/${s.index}`,s).then(r=>b._GetTypedArray(e,t.componentType,r,t.byteOffset,t.count))}return t._data}_loadVertexBufferViewAsync(e){if(e._babylonBuffer)return e._babylonBuffer;const t=this._babylonScene.getEngine();return e._babylonBuffer=this.loadBufferViewAsync(`/bufferViews/${e.index}`,e).then(s=>new jn(t,s,!1)),e._babylonBuffer}_loadVertexAccessorAsync(e,t,s){if(t._babylonVertexBuffer?.[s])return t._babylonVertexBuffer[s];t._babylonVertexBuffer||(t._babylonVertexBuffer={});const r=this._babylonScene.getEngine();if(t.sparse||t.bufferView==null)t._babylonVertexBuffer[s]=this._loadFloatAccessorAsync(e,t).then(a=>new k(r,a,s,!1));else{const a=g.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._babylonVertexBuffer[s]=this._loadVertexBufferViewAsync(a).then(o=>{const i=b._GetNumComponents(e,t.type);return new k(r,o,s,!1,void 0,a.byteStride,void 0,t.byteOffset,i,t.componentType,t.normalized,!0,void 0,!0)})}return t._babylonVertexBuffer[s]}_loadMaterialMetallicRoughnessPropertiesAsync(e,t,s){const r=new Array,a=this._getOrCreateMaterialAdapter(s);return t&&(t.baseColorFactor?(a.baseColor=O.FromArray(t.baseColorFactor),a.geometryOpacity=t.baseColorFactor[3]):a.baseColor=O.White(),a.baseMetalness=t.metallicFactor==null?1:t.metallicFactor,a.specularRoughness=t.roughnessFactor==null?1:t.roughnessFactor,t.baseColorTexture&&r.push(this.loadTextureInfoAsync(`${e}/baseColorTexture`,t.baseColorTexture,o=>{o.name=`${s.name} (Base Color)`,a.baseColorTexture=o})),t.metallicRoughnessTexture&&(t.metallicRoughnessTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync(`${e}/metallicRoughnessTexture`,t.metallicRoughnessTexture,o=>{o.name=`${s.name} (Metallic Roughness)`,a.baseMetalnessTexture=o,a.specularRoughnessTexture=o})),a.useRoughnessFromMetallicTextureGreen=!0,a.useMetallicFromMetallicTextureBlue=!0)),Promise.all(r).then(()=>{})}_loadMaterialAsync(e,t,s,r,a=()=>{}){const o=this._extensionsLoadMaterialAsync(e,t,s,r,a);if(o)return o;t._data=t._data||{};let i=t._data[r];if(!i){this.logOpen(`${e} ${t.name||""}`);const l=this.createMaterial(e,t,r);i={babylonMaterial:l,babylonMeshes:[],promise:this.loadMaterialPropertiesAsync(e,t,l)},t._data[r]=i,b.AddPointerMetadata(l,e),this._parent.onMaterialLoadedObservable.notifyObservers(l),this.logClose()}return s&&(i.babylonMeshes.push(s),s.onDisposeObservable.addOnce(()=>{const l=i.babylonMeshes.indexOf(s);l!==-1&&i.babylonMeshes.splice(l,1)})),a(i.babylonMaterial),i.promise.then(()=>i.babylonMaterial)}_createDefaultMaterial(e,t){if(!this._pbrMaterialImpl)throw new Error("PBR Material class not loaded");this._babylonScene._blockEntityCollection=!!this._assetContainer;const s=new this._pbrMaterialImpl.materialClass(e,this._babylonScene);s._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,s.fillMode=t,s.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_OPAQUE;const r=this._getOrCreateMaterialAdapter(s);return r.transparencyAsAlphaCoverage=this._parent.transparencyAsCoverage,r.baseMetalness=1,r.specularRoughness=1,s}createMaterial(e,t,s){const r=this._extensionsCreateMaterial(e,t,s);if(r)return r;const a=t.name||`material${t.index}`;return this._createDefaultMaterial(a,s)}loadMaterialPropertiesAsync(e,t,s){const r=this._extensionsLoadMaterialPropertiesAsync(e,t,s);if(r)return r;const a=new Array;return a.push(this.loadMaterialBasePropertiesAsync(e,t,s)),t.pbrMetallicRoughness&&a.push(this._loadMaterialMetallicRoughnessPropertiesAsync(`${e}/pbrMetallicRoughness`,t.pbrMetallicRoughness,s)),this.loadMaterialAlphaProperties(e,t,s),Promise.all(a).then(()=>{})}loadMaterialBasePropertiesAsync(e,t,s){const r=new Array,a=this._getOrCreateMaterialAdapter(s);a.emissionColor=t.emissiveFactor?O.FromArray(t.emissiveFactor):new O(0,0,0),t.doubleSided&&(a.backFaceCulling=!1,a.twoSidedLighting=!0),t.normalTexture&&(t.normalTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync(`${e}/normalTexture`,t.normalTexture,u=>{u.name=`${s.name} (Normal)`,a.geometryNormalTexture=u,t.normalTexture?.scale!=null&&(u.level=t.normalTexture.scale)})),a.setNormalMapInversions(!this._babylonScene.useRightHandedSystem,this._babylonScene.useRightHandedSystem));let o,i=1,l;return t.occlusionTexture&&(t.occlusionTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync(`${e}/occlusionTexture`,t.occlusionTexture,u=>{u.name=`${s.name} (Occlusion)`,o=u})),t.occlusionTexture.strength!=null&&(i=t.occlusionTexture.strength)),t.emissiveTexture&&r.push(this.loadTextureInfoAsync(`${e}/emissiveTexture`,t.emissiveTexture,u=>{u.name=`${s.name} (Emissive)`,l=u})),Promise.all(r).then(()=>{o&&(a.ambientOcclusionTexture=o,a.ambientOcclusionTextureStrength=i),l&&(a.emissionColorTexture=l)})}loadMaterialAlphaProperties(e,t,s){if(!this._pbrMaterialImpl)throw new Error(`${e}: Material type not supported`);const r=this._getOrCreateMaterialAdapter(s),a=r.baseColorTexture;switch(t.alphaMode||"OPAQUE"){case"OPAQUE":{s.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_OPAQUE,s.alpha=1;break}case"MASK":{s.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_ALPHATEST,r.alphaCutOff=t.alphaCutoff==null?.5:t.alphaCutoff,a&&(a.hasAlpha=!0);break}case"BLEND":{s.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_ALPHABLEND,a&&(a.hasAlpha=!0,r.useAlphaFromBaseColorTexture=!0);break}default:throw new Error(`${e}/alphaMode: Invalid value (${t.alphaMode})`)}}loadTextureInfoAsync(e,t,s=()=>{}){const r=this._extensionsLoadTextureInfoAsync(e,t,s);if(r)return r;if(this.logOpen(`${e}`),t.texCoord>=6)throw new Error(`${e}/texCoord: Invalid value (${t.texCoord})`);const a=g.Get(`${e}/index`,this._gltf.textures,t.index);a._textureInfo=t;const o=this._loadTextureAsync(`/textures/${t.index}`,a,i=>{i.coordinatesIndex=t.texCoord||0,b.AddPointerMetadata(i,e),this._parent.onTextureLoadedObservable.notifyObservers(i),s(i)});return this.logClose(),o}_loadTextureAsync(e,t,s=()=>{}){const r=this._extensionsLoadTextureAsync(e,t,s);if(r)return r;this.logOpen(`${e} ${t.name||""}`);const a=t.sampler==null?b.DefaultSampler:g.Get(`${e}/sampler`,this._gltf.samplers,t.sampler),o=g.Get(`${e}/source`,this._gltf.images,t.source),i=this._createTextureAsync(e,a,o,s,void 0,!t._textureInfo.nonColorData);return this.logClose(),i}_createTextureAsync(e,t,s,r=()=>{},a,o){const i=this._loadSampler(`/samplers/${t.index}`,t),l=new Array,u=new Ee;this._babylonScene._blockEntityCollection=!!this._assetContainer;const c={noMipmap:i.noMipMaps,invertY:!1,samplingMode:i.samplingMode,onLoad:()=>{this._disposed||u.resolve()},onError:(p,E)=>{this._disposed||u.reject(new Error(`${e}: ${E&&E.message?E.message:p||"Failed to load texture"}`))},mimeType:s.mimeType??Xn(s.uri??""),loaderOptions:a,useSRGBBuffer:!!o&&this._parent.useSRGBBuffers},h=new H(null,this._babylonScene,c);h._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,l.push(u.promise);const d=s.uri&&!bs(s.uri)?s.uri:void 0,f=d??`${this._fileName}#image${s.index}`;if(l.push(this.loadImageAsync(`/images/${s.index}`,s).then(p=>{const E=`data:${this._uniqueRootUrl}${f}`;h.updateURL(E,p);const T=h.getInternalTexture();T&&(T.label=s.name)})),h.wrapU=i.wrapU,h.wrapV=i.wrapV,r(h),this._parent.useGltfTextureNames){const p=s.name||d||`image${s.index}`;h.name=p}return Promise.all(l).then(()=>h)}_loadSampler(e,t){return t._data||(t._data={noMipMaps:t.minFilter===9728||t.minFilter===9729,samplingMode:b._GetTextureSamplingMode(e,t),wrapU:b._GetTextureWrapMode(`${e}/wrapS`,t.wrapS),wrapV:b._GetTextureWrapMode(`${e}/wrapT`,t.wrapT)}),t._data}loadImageAsync(e,t){if(!t._data){if(this.logOpen(`${e} ${t.name||""}`),t.uri)t._data=this.loadUriAsync(`${e}/uri`,t,t.uri);else{const s=g.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync(`/bufferViews/${s.index}`,s)}this.logClose()}return t._data}loadUriAsync(e,t,s){const r=this._extensionsLoadUriAsync(e,t,s);if(r)return r;if(!b._ValidateUri(s))throw new Error(`${e}: '${s}' is invalid`);if(bs(s)){const a=new Uint8Array(Rs(s));return this.log(`${e}: Decoded ${s.substring(0,64)}... (${a.length} bytes)`),Promise.resolve(a)}return this.log(`${e}: Loading ${s}`),this._parent.preprocessUrlAsync(this._rootUrl+s).then(a=>new Promise((o,i)=>{this._parent._loadFile(this._babylonScene,a,l=>{this._disposed||(this.log(`${e}: Loaded ${s} (${l.byteLength} bytes)`),o(new Uint8Array(l)))},!0,l=>{i(new Zn(`${e}: Failed to load '${s}'${l?": "+l.status+" "+l.statusText:""}`,l))})}))}static AddPointerMetadata(e,t){e.metadata=e.metadata||{};const s=e._internalMetadata=e._internalMetadata||{},r=s.gltf=s.gltf||{};(r.pointers=r.pointers||[]).push(t)}static _GetTextureWrapMode(e,t){switch(t=t??10497,t){case 33071:return H.CLAMP_ADDRESSMODE;case 33648:return H.MIRROR_ADDRESSMODE;case 10497:return H.WRAP_ADDRESSMODE;default:return R.Warn(`${e}: Invalid value (${t})`),H.WRAP_ADDRESSMODE}}static _GetTextureSamplingMode(e,t){const s=t.magFilter==null?9729:t.magFilter,r=t.minFilter==null?9987:t.minFilter;if(s===9729)switch(r){case 9728:return H.LINEAR_NEAREST;case 9729:return H.LINEAR_LINEAR;case 9984:return H.LINEAR_NEAREST_MIPNEAREST;case 9985:return H.LINEAR_LINEAR_MIPNEAREST;case 9986:return H.LINEAR_NEAREST_MIPLINEAR;case 9987:return H.LINEAR_LINEAR_MIPLINEAR;default:return R.Warn(`${e}/minFilter: Invalid value (${r})`),H.LINEAR_LINEAR_MIPLINEAR}else switch(s!==9728&&R.Warn(`${e}/magFilter: Invalid value (${s})`),r){case 9728:return H.NEAREST_NEAREST;case 9729:return H.NEAREST_LINEAR;case 9984:return H.NEAREST_NEAREST_MIPNEAREST;case 9985:return H.NEAREST_LINEAR_MIPNEAREST;case 9986:return H.NEAREST_NEAREST_MIPLINEAR;case 9987:return H.NEAREST_LINEAR_MIPLINEAR;default:return R.Warn(`${e}/minFilter: Invalid value (${r})`),H.NEAREST_NEAREST_MIPNEAREST}}static _GetTypedArrayConstructor(e,t){try{return Jn(t)}catch(s){throw new Error(`${e}: ${s.message}`,{cause:s})}}static _GetTypedArray(e,t,s,r,a){const o=s.buffer;r=s.byteOffset+(r||0);const i=b._GetTypedArrayConstructor(`${e}/componentType`,t),l=k.GetTypeByteLength(t);return r%l!==0?(R.Warn(`${e}: Copying buffer as byte offset (${r}) is not a multiple of component type byte length (${l})`),new i(o.slice(r,r+a*l),0)):new i(o,r,a)}static _GetNumComponents(e,t){switch(t){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":return 4;case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16}throw new Error(`${e}: Invalid type (${t})`)}static _ValidateUri(e){return D.IsBase64(e)||e.indexOf("..")===-1}static _GetDrawMode(e,t){switch(t==null&&(t=4),t){case 0:return ae.PointListDrawMode;case 1:return ae.LineListDrawMode;case 2:return ae.LineLoopDrawMode;case 3:return ae.LineStripDrawMode;case 4:return ae.TriangleFillMode;case 5:return ae.TriangleStripDrawMode;case 6:return ae.TriangleFanDrawMode}throw new Error(`${e}: Invalid mesh primitive mode (${t})`)}_compileMaterialsAsync(){this._parent._startPerformanceCounter("Compile materials");const e=new Array;if(this._gltf.materials){for(const t of this._gltf.materials)if(t._data)for(const s in t._data){const r=t._data[s];for(const a of r.babylonMeshes){a.computeWorldMatrix(!0);const o=r.babylonMaterial;e.push(o.forceCompilationAsync(a)),e.push(o.forceCompilationAsync(a,{useInstances:!0})),this._parent.useClipPlane&&(e.push(o.forceCompilationAsync(a,{clipPlane:!0})),e.push(o.forceCompilationAsync(a,{clipPlane:!0,useInstances:!0})))}}}return Promise.all(e).then(()=>{this._parent._endPerformanceCounter("Compile materials")})}_compileShadowGeneratorsAsync(){this._parent._startPerformanceCounter("Compile shadow generators");const e=new Array,t=this._babylonScene.lights;for(const s of t){const r=s.getShadowGenerator();r&&e.push(r.forceCompilationAsync())}return Promise.all(e).then(()=>{this._parent._endPerformanceCounter("Compile shadow generators")})}_forEachExtensions(e){for(const t of this._extensions)t.enabled&&e(t)}_applyExtensions(e,t,s){for(const r of this._extensions)if(r.enabled){const a=`${r.name}.${t}`,o=e;o._activeLoaderExtensionFunctions=o._activeLoaderExtensionFunctions||{};const i=o._activeLoaderExtensionFunctions;if(!i[a]){i[a]=!0;try{const l=s(r);if(l)return l}finally{delete i[a]}}}return null}_extensionsOnLoading(){this._forEachExtensions(e=>e.onLoading&&e.onLoading())}_extensionsOnReady(){this._forEachExtensions(e=>e.onReady&&e.onReady())}_extensionsLoadSceneAsync(e,t){return this._applyExtensions(t,"loadScene",s=>s.loadSceneAsync&&s.loadSceneAsync(e,t))}_extensionsLoadNodeAsync(e,t,s){return this._applyExtensions(t,"loadNode",r=>r.loadNodeAsync&&r.loadNodeAsync(e,t,s))}_extensionsLoadCameraAsync(e,t,s){return this._applyExtensions(t,"loadCamera",r=>r.loadCameraAsync&&r.loadCameraAsync(e,t,s))}_extensionsLoadVertexDataAsync(e,t,s){return this._applyExtensions(t,"loadVertexData",r=>r._loadVertexDataAsync&&r._loadVertexDataAsync(e,t,s))}_extensionsLoadMeshPrimitiveAsync(e,t,s,r,a,o){return this._applyExtensions(a,"loadMeshPrimitive",i=>i._loadMeshPrimitiveAsync&&i._loadMeshPrimitiveAsync(e,t,s,r,a,o))}_extensionsLoadMaterialAsync(e,t,s,r,a){return this._applyExtensions(t,"loadMaterial",o=>o._loadMaterialAsync&&o._loadMaterialAsync(e,t,s,r,a))}_extensionsCreateMaterial(e,t,s){return this._applyExtensions(t,"createMaterial",r=>r.createMaterial&&r.createMaterial(e,t,s))}_extensionsLoadMaterialPropertiesAsync(e,t,s){return this._applyExtensions(t,"loadMaterialProperties",r=>r.loadMaterialPropertiesAsync&&r.loadMaterialPropertiesAsync(e,t,s))}_extensionsLoadTextureInfoAsync(e,t,s){return this._applyExtensions(t,"loadTextureInfo",r=>r.loadTextureInfoAsync&&r.loadTextureInfoAsync(e,t,s))}_extensionsLoadTextureAsync(e,t,s){return this._applyExtensions(t,"loadTexture",r=>r._loadTextureAsync&&r._loadTextureAsync(e,t,s))}_extensionsLoadAnimationAsync(e,t){return this._applyExtensions(t,"loadAnimation",s=>s.loadAnimationAsync&&s.loadAnimationAsync(e,t))}_extensionsLoadAnimationChannelAsync(e,t,s,r,a){return this._applyExtensions(s,"loadAnimationChannel",o=>o._loadAnimationChannelAsync&&o._loadAnimationChannelAsync(e,t,s,r,a))}_extensionsLoadSkinAsync(e,t,s){return this._applyExtensions(s,"loadSkin",r=>r._loadSkinAsync&&r._loadSkinAsync(e,t,s))}_extensionsLoadUriAsync(e,t,s){return this._applyExtensions(t,"loadUri",r=>r._loadUriAsync&&r._loadUriAsync(e,t,s))}_extensionsLoadBufferViewAsync(e,t){return this._applyExtensions(t,"loadBufferView",s=>s.loadBufferViewAsync&&s.loadBufferViewAsync(e,t))}_extensionsLoadBufferAsync(e,t,s,r){return this._applyExtensions(t,"loadBuffer",a=>a.loadBufferAsync&&a.loadBufferAsync(e,t,s,r))}static LoadExtensionAsync(e,t,s,r){if(!t.extensions)return null;const o=t.extensions[s];return o?r(`${e}/extensions/${s}`,o):null}static LoadExtraAsync(e,t,s,r){if(!t.extras)return null;const o=t.extras[s];return o?r(`${e}/extras/${s}`,o):null}isExtensionUsed(e){return!!this._gltf.extensionsUsed&&this._gltf.extensionsUsed.indexOf(e)!==-1}logOpen(e){this._parent._logOpen(e)}logClose(){this._parent._logClose()}log(e){this._parent._log(e)}startPerformanceCounter(e){this._parent._startPerformanceCounter(e)}endPerformanceCounter(e){this._parent._endPerformanceCounter(e)}}b.DefaultSampler={index:-1};q._CreateGLTF2Loader=n=>new b(n);function Et(n,e,t,s){return w.FromArray(e,t).scaleInPlace(s)}function zt(n,e,t,s){return Y.FromArray(e,t).scaleInPlace(s)}function qt(n,e,t,s){const r=new Array(n._numMorphTargets);for(let a=0;a<r.length;a++)r[a]=e[t++]*s;return r}class ye{constructor(e,t,s,r){this.type=e,this.name=t,this.getValue=s,this.getStride=r}_buildAnimation(e,t,s){const r=new x(e,this.name,t,this.type);return r.setKeys(s,!0),r}}class Fe extends ye{buildAnimations(e,t,s,r){const a=[];return a.push({babylonAnimatable:e._babylonTransformNode,babylonAnimation:this._buildAnimation(t,s,r)}),a}}class Yt extends ye{buildAnimations(e,t,s,r){const a=[];if(e._numMorphTargets)for(let o=0;o<e._numMorphTargets;o++){const i=new x(`${t}_${o}`,this.name,s,this.type);if(i.setKeys(r.map(l=>({frame:l.frame,inTangent:l.inTangent?l.inTangent[o]:void 0,value:l.value[o],outTangent:l.outTangent?l.outTangent[o]:void 0,interpolation:l.interpolation})),!0),e._primitiveBabylonMeshes){for(const l of e._primitiveBabylonMeshes)if(l.morphTargetManager){const u=l.morphTargetManager.getTarget(o),c=i.clone();u.animations.push(c),a.push({babylonAnimatable:u,babylonAnimation:c})}}}return a}}m("/nodes/{}/translation",[new Fe(x.ANIMATIONTYPE_VECTOR3,"position",Et,()=>3)]);m("/nodes/{}/rotation",[new Fe(x.ANIMATIONTYPE_QUATERNION,"rotationQuaternion",zt,()=>4)]);m("/nodes/{}/scale",[new Fe(x.ANIMATIONTYPE_VECTOR3,"scaling",Et,()=>3)]);m("/nodes/{}/weights",[new Yt(x.ANIMATIONTYPE_FLOAT,"influence",qt,n=>n._numMorphTargets)]);const Xr=Object.freeze(Object.defineProperty({__proto__:null,AnimationPropertyInfo:ye,TransformNodeAnimationPropertyInfo:Fe,WeightAnimationPropertyInfo:Yt,getQuaternion:zt,getVector3:Et,getWeights:qt},Symbol.toStringTag,{value:"Module"}));class Ys{constructor(e){this._extinctionCoefficient=w.Zero(),this._material=e}get material(){return this._material}get isUnlit(){return this._material.unlit}set isUnlit(e){this._material.unlit=e}set backFaceCulling(e){this._material.backFaceCulling=e}get backFaceCulling(){return this._material.backFaceCulling}set twoSidedLighting(e){this._material.twoSidedLighting=e}get twoSidedLighting(){return this._material.twoSidedLighting}set alphaCutOff(e){}get alphaCutOff(){return .5}set useAlphaFromBaseColorTexture(e){this._material._useAlphaFromBaseColorTexture=e}get useAlphaFromBaseColorTexture(){return!1}get transparencyAsAlphaCoverage(){return!1}set transparencyAsAlphaCoverage(e){}set baseColor(e){this._material.baseColor=e}get baseColor(){return this._material.baseColor}set baseColorTexture(e){this._material.baseColorTexture=e}get baseColorTexture(){return this._material.baseColorTexture}set baseDiffuseRoughness(e){this._material.baseDiffuseRoughness=e}get baseDiffuseRoughness(){return this._material.baseDiffuseRoughness}set baseDiffuseRoughnessTexture(e){this._material.baseDiffuseRoughnessTexture=e}get baseDiffuseRoughnessTexture(){return this._material.baseDiffuseRoughnessTexture}set baseMetalness(e){this._material.baseMetalness=e}get baseMetalness(){return this._material.baseMetalness}set baseMetalnessTexture(e){this._material.baseMetalnessTexture=e}get baseMetalnessTexture(){return this._material.baseMetalnessTexture}set useRoughnessFromMetallicTextureGreen(e){this._material._useRoughnessFromMetallicTextureGreen=e}set useMetallicFromMetallicTextureBlue(e){this._material._useMetallicFromMetallicTextureBlue=e}enableSpecularEdgeColor(e=!1){}set specularWeight(e){this._material.specularWeight=e}get specularWeight(){return this._material.specularWeight}set specularWeightTexture(e){this._material.specularColorTexture===e?(this._material.specularWeightTexture=null,this._material._useSpecularWeightFromSpecularColorTexture=!0,this._material._useSpecularWeightFromAlpha=!0):this._material.specularWeightTexture=e}get specularWeightTexture(){return this._material.specularWeightTexture}set specularColor(e){this._material.specularColor=e}get specularColor(){return this._material.specularColor}set specularColorTexture(e){this._material.specularColorTexture=e,this._material.specularWeightTexture===this._material.specularColorTexture&&(this._material.specularWeightTexture=null,this._material._useSpecularWeightFromSpecularColorTexture=!0,this._material._useSpecularWeightFromAlpha=!0)}get specularColorTexture(){return this._material.specularColorTexture}set specularRoughness(e){this._material.specularRoughness=e}get specularRoughness(){return this._material.specularRoughness}set specularRoughnessTexture(e){this._material.specularRoughnessTexture=e}get specularRoughnessTexture(){return this._material.specularRoughnessTexture}set specularIor(e){this._material.specularIor=e}get specularIor(){return this._material.specularIor}set emissionColor(e){this._material.emissionColor=e}get emissionColor(){return this._material.emissionColor}set emissionLuminance(e){this._material.emissionLuminance=e}get emissionLuminance(){return this._material.emissionLuminance}set emissionColorTexture(e){this._material.emissionColorTexture=e}get emissionColorTexture(){return this._material.emissionColorTexture}set ambientOcclusionTexture(e){this._material.ambientOcclusionTexture=e}get ambientOcclusionTexture(){return this._material.ambientOcclusionTexture}set ambientOcclusionTextureStrength(e){const t=this._material.ambientOcclusionTexture;t&&(t.level=e)}get ambientOcclusionTextureStrength(){return this._material.ambientOcclusionTexture?.level??1}configureCoat(){}set coatWeight(e){this._material.coatWeight=e}get coatWeight(){return this._material.coatWeight}set coatWeightTexture(e){this._material.coatWeightTexture=e}get coatWeightTexture(){return this._material.coatWeightTexture}set coatColor(e){this._material.coatColor=e}set coatColorTexture(e){this._material.coatColorTexture=e}set coatRoughness(e){this._material.coatRoughness=e}get coatRoughness(){return this._material.coatRoughness}set coatRoughnessTexture(e){this._material.coatRoughnessTexture=e,e&&(this._material._useCoatRoughnessFromGreenChannel=!0)}get coatRoughnessTexture(){return this._material.coatRoughnessTexture}set coatIor(e){this._material.coatIor=e}set coatDarkening(e){this._material.coatDarkening=e}set coatDarkeningTexture(e){this._material.coatDarkeningTexture=e}set coatRoughnessAnisotropy(e){this._material.coatRoughnessAnisotropy=e}get coatRoughnessAnisotropy(){return this._material.coatRoughnessAnisotropy}set geometryCoatTangentAngle(e){this._material.geometryCoatTangentAngle=e}set geometryCoatTangentTexture(e){this._material.geometryCoatTangentTexture=e,e&&(this._material._useCoatRoughnessAnisotropyFromTangentTexture=!0)}get geometryCoatTangentTexture(){return this._material.geometryCoatTangentTexture}configureTransmission(){}set transmissionWeight(e){this._material.transmissionWeight=e,this._material.transmissionColor=this._material.baseColor,this._material.transmissionColorTexture=this._material.baseColorTexture,this._material.transmissionDepth=0}set transmissionWeightTexture(e){this._material.transmissionWeightTexture=e}get transmissionWeight(){return this._material.transmissionWeight}set transmissionScatter(e){this._material.transmissionScatter=e}get transmissionScatter(){return this._material.transmissionScatter}set transmissionScatterTexture(e){this._material.transmissionScatterTexture=e}get transmissionScatterTexture(){return this._material.transmissionScatterTexture}set transmissionScatterAnisotropy(e){this._material.transmissionScatterAnisotropy=e}set transmissionDispersionAbbeNumber(e){this._material.transmissionDispersionAbbeNumber=e}set transmissionDispersionScale(e){this._material.transmissionDispersionScale=e}set transmissionDepth(e){e!==Number.MAX_VALUE||this._material.transmissionDepth!==0?this._material.transmissionDepth=e:this._material.transmissionDepth=0}get transmissionDepth(){return this._material.transmissionDepth}set transmissionColor(e){e.equals(O.White())||(this._material.transmissionColor=e)}get transmissionColor(){return this._material.transmissionColor}get refractionBackgroundTexture(){return this._material.backgroundRefractionTexture}set refractionBackgroundTexture(e){this._material.backgroundRefractionTexture=e}set volumeThicknessTexture(e){this._material.geometryThicknessTexture=e,this._material._useGeometryThicknessFromGreenChannel=!0}set volumeThickness(e){this._material.geometryThickness=e}configureSubsurface(){}set extinctionCoefficient(e){this._extinctionCoefficient=e}get extinctionCoefficient(){return this._extinctionCoefficient}set subsurfaceWeight(e){}get subsurfaceWeight(){return 0}set subsurfaceWeightTexture(e){}set subsurfaceColor(e){}set subsurfaceColorTexture(e){}set subsurfaceConstantTint(e){}get subsurfaceConstantTint(){return O.White()}set subsurfaceConstantTintTexture(e){}get subsurfaceRadius(){return 0}set subsurfaceRadius(e){}get subsurfaceRadiusScale(){return O.White()}set subsurfaceRadiusScale(e){}set subsurfaceScatterAnisotropy(e){}configureFuzz(){}set fuzzWeight(e){this._material.fuzzWeight=e}set fuzzWeightTexture(e){this._material.fuzzWeightTexture=e}set fuzzColor(e){this._material.fuzzColor=e}set fuzzColorTexture(e){this._material.fuzzColorTexture=e}set fuzzRoughness(e){this._material.fuzzRoughness=e}set fuzzRoughnessTexture(e){this._material.fuzzRoughnessTexture=e,this._material._useFuzzRoughnessFromTextureAlpha=!0}set specularRoughnessAnisotropy(e){this._material.specularRoughnessAnisotropy=e}get specularRoughnessAnisotropy(){return this._material.specularRoughnessAnisotropy}set geometryTangentAngle(e){this._material.geometryTangentAngle=e}set geometryTangentTexture(e){this._material.geometryTangentTexture=e,this._material._useSpecularRoughnessAnisotropyFromTangentTexture=!0}get geometryTangentTexture(){return this._material.geometryTangentTexture}configureGltfStyleAnisotropy(e=!0){this._material._useGltfStyleAnisotropy=e}set thinFilmWeight(e){this._material.thinFilmWeight=e}set thinFilmIor(e){this._material.thinFilmIor=e}set thinFilmThicknessMinimum(e){this._material.thinFilmThicknessMin=e/1e3}set thinFilmThicknessMaximum(e){this._material.thinFilmThickness=e/1e3}set thinFilmWeightTexture(e){this._material.thinFilmWeightTexture=e}set thinFilmThicknessTexture(e){this._material.thinFilmThicknessTexture=e,this._material._useThinFilmThicknessFromTextureGreen=!0}set unlit(e){this._material.unlit=e}set geometryOpacity(e){this._material.geometryOpacity=e}get geometryOpacity(){return this._material.geometryOpacity}set geometryNormalTexture(e){this._material.geometryNormalTexture=e}get geometryNormalTexture(){return this._material.geometryNormalTexture}setNormalMapInversions(e,t){}set geometryCoatNormalTexture(e){this._material.geometryCoatNormalTexture=e}get geometryCoatNormalTexture(){return this._material.geometryCoatNormalTexture}set geometryCoatNormalTextureScale(e){this._material.geometryCoatNormalTexture&&(this._material.geometryCoatNormalTexture.level=e)}}const Zr=Object.freeze(Object.defineProperty({__proto__:null,OpenPBRMaterialLoadingAdapter:Ys},Symbol.toStringTag,{value:"Module"}));class js{constructor(e){this._extinctionCoefficient=w.Zero(),this._material=e,this._material.enableSpecularAntiAliasing=!0}get material(){return this._material}get isUnlit(){return this._material.unlit}set isUnlit(e){this._material.unlit=e}set backFaceCulling(e){this._material.backFaceCulling=e}get backFaceCulling(){return this._material.backFaceCulling}set twoSidedLighting(e){this._material.twoSidedLighting=e}get twoSidedLighting(){return this._material.twoSidedLighting}set alphaCutOff(e){this._material.alphaCutOff=e}get alphaCutOff(){return this._material.alphaCutOff}set useAlphaFromBaseColorTexture(e){this._material.useAlphaFromAlbedoTexture=e}get useAlphaFromBaseColorTexture(){return this._material.useAlphaFromAlbedoTexture}get transparencyAsAlphaCoverage(){return this._material.useRadianceOverAlpha||this._material.useSpecularOverAlpha}set transparencyAsAlphaCoverage(e){this._material.useRadianceOverAlpha=!e,this._material.useSpecularOverAlpha=!e}set baseColor(e){this._material.albedoColor=e}get baseColor(){return this._material.albedoColor}set baseColorTexture(e){this._material.albedoTexture=e}get baseColorTexture(){return this._material.albedoTexture}set baseDiffuseRoughness(e){this._material.baseDiffuseRoughness=e,e>0&&(this._material.brdf.baseDiffuseModel=le.MATERIAL_DIFFUSE_MODEL_E_OREN_NAYAR)}get baseDiffuseRoughness(){return this._material.baseDiffuseRoughness??0}set baseDiffuseRoughnessTexture(e){this._material.baseDiffuseRoughnessTexture=e}get baseDiffuseRoughnessTexture(){return this._material.baseDiffuseRoughnessTexture}set baseMetalness(e){this._material.metallic=e}get baseMetalness(){return this._material.metallic??1}set baseMetalnessTexture(e){this._material.metallicTexture=e}get baseMetalnessTexture(){return this._material.metallicTexture}set useRoughnessFromMetallicTextureGreen(e){this._material.useRoughnessFromMetallicTextureGreen=e,this._material.useRoughnessFromMetallicTextureAlpha=!e}set useMetallicFromMetallicTextureBlue(e){this._material.useMetallnessFromMetallicTextureBlue=e}enableSpecularEdgeColor(e=!1){e&&(this._material.brdf.dielectricSpecularModel=le.MATERIAL_DIELECTRIC_SPECULAR_MODEL_OPENPBR,this._material.brdf.conductorSpecularModel=le.MATERIAL_CONDUCTOR_SPECULAR_MODEL_OPENPBR)}set specularWeight(e){this._material.metallicF0Factor=e}get specularWeight(){return this._material.metallicF0Factor??1}set specularWeightTexture(e){e?(this._material.metallicReflectanceTexture=e,this._material.useOnlyMetallicFromMetallicReflectanceTexture=!0):(this._material.metallicReflectanceTexture=null,this._material.useOnlyMetallicFromMetallicReflectanceTexture=!1)}get specularWeightTexture(){return this._material.metallicReflectanceTexture}set specularColor(e){this._material.metallicReflectanceColor=e}get specularColor(){return this._material.metallicReflectanceColor}set specularColorTexture(e){this._material.reflectanceTexture=e}get specularColorTexture(){return this._material.reflectanceTexture}set specularRoughness(e){this._material.roughness=e}get specularRoughness(){return this._material.roughness??1}set specularRoughnessTexture(e){this.baseMetalnessTexture||(this._material.metallicTexture=e)}get specularRoughnessTexture(){return this._material.metallicTexture}set specularIor(e){this._material.indexOfRefraction=e}get specularIor(){return this._material.indexOfRefraction}set emissionColor(e){this._material.emissiveColor=e}get emissionColor(){return this._material.emissiveColor}set emissionLuminance(e){this._material.emissiveIntensity=e}get emissionLuminance(){return this._material.emissiveIntensity}set emissionColorTexture(e){this._material.emissiveTexture=e}get emissionColorTexture(){return this._material.emissiveTexture}set ambientOcclusionTexture(e){this._material.ambientTexture=e,e&&(this._material.useAmbientInGrayScale=!0)}get ambientOcclusionTexture(){return this._material.ambientTexture}set ambientOcclusionTextureStrength(e){this._material.ambientTextureStrength=e}get ambientOcclusionTextureStrength(){return this._material.ambientTextureStrength??1}configureCoat(){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.useRoughnessFromMainTexture=!1,this._material.clearCoat.remapF0OnInterfaceChange=!1}set coatWeight(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.intensity=e}get coatWeight(){return this._material.clearCoat.intensity}set coatWeightTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.texture=e}get coatWeightTexture(){return this._material.clearCoat.texture}set coatColor(e){this._material.clearCoat.isTintEnabled=e!=O.White(),this._material.clearCoat.tintColor=e}set coatColorTexture(e){this._material.clearCoat.tintTexture=e}set coatRoughness(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.roughness=e}get coatRoughness(){return this._material.clearCoat.roughness??0}set coatRoughnessTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.useRoughnessFromMainTexture=!1,this._material.clearCoat.textureRoughness=e}get coatRoughnessTexture(){return this._material.clearCoat.textureRoughness}set coatIor(e){this._material.clearCoat.indexOfRefraction=e}set coatDarkening(e){}set coatDarkeningTexture(e){}set coatRoughnessAnisotropy(e){}get coatRoughnessAnisotropy(){return 0}set geometryCoatTangentAngle(e){}set geometryCoatTangentTexture(e){}get geometryCoatTangentTexture(){return null}set transmissionWeight(e){this._material.subSurface.isRefractionEnabled=e>0,this._material.subSurface.refractionIntensity=e}get transmissionWeight(){return this._material.subSurface.isRefractionEnabled?this._material.subSurface.refractionIntensity:0}set transmissionWeightTexture(e){this._material.subSurface.isRefractionEnabled=!0,this._material.subSurface.refractionIntensityTexture=e,this._material.subSurface.useGltfStyleTextures=!0}set transmissionDepth(e){this.transmissionWeight>0?this._material.subSurface.tintColorAtDistance=e:this.subsurfaceWeight>0&&this._material.subSurface.diffusionDistance.multiplyInPlace(new O(e,e,e))}get transmissionDepth(){return this.transmissionWeight>0?this._material.subSurface.tintColorAtDistance:0}set transmissionColor(e){this.transmissionWeight>0?this._material.subSurface.tintColor=e:this.subsurfaceWeight>0&&this._material.subSurface.diffusionDistance.multiplyInPlace(e)}get transmissionColor(){return this.transmissionWeight>0?this._material.subSurface.tintColor:this.subsurfaceWeight>0?this._material.subSurface.diffusionDistance:new O(0,0,0)}set transmissionScatter(e){this._material.subSurface.diffusionDistance=e}get transmissionScatter(){return this._material.subSurface.diffusionDistance}set transmissionScatterAnisotropy(e){}set transmissionDispersionAbbeNumber(e){}set transmissionDispersionScale(e){e>0?(this._material.subSurface.isDispersionEnabled=!0,this._material.subSurface.dispersion=20/e):(this._material.subSurface.isDispersionEnabled=!1,this._material.subSurface.dispersion=0)}get refractionBackgroundTexture(){return this._material.subSurface.refractionTexture}set refractionBackgroundTexture(e){this._material.subSurface.refractionTexture=e}configureTransmission(){this._material.subSurface.volumeIndexOfRefraction=1,this._material.subSurface.useAlbedoToTintRefraction=!0,this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=0}set volumeThicknessTexture(e){this._material.subSurface.thicknessTexture=e,this._material.subSurface.useGltfStyleTextures=!0}set volumeThickness(e){this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=e,this._material.subSurface.useThicknessAsDepth=!0,e>0&&(this._material.subSurface.volumeIndexOfRefraction=this._material.indexOfRefraction)}configureSubsurface(){this._material.subSurface.useGltfStyleTextures=!0,this._material.subSurface.volumeIndexOfRefraction=1,this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=0,this._material.subSurface.useAlbedoToTintTranslucency=!1}set extinctionCoefficient(e){this._extinctionCoefficient=e}get extinctionCoefficient(){return this._extinctionCoefficient}set subsurfaceWeight(e){this._material.subSurface.isTranslucencyEnabled=e>0,this._material.subSurface.translucencyIntensity=e}get subsurfaceWeight(){return this._material.subSurface.isTranslucencyEnabled?this._material.subSurface.translucencyIntensity:0}set subsurfaceWeightTexture(e){this._material.subSurface.translucencyIntensityTexture=e}set subsurfaceColor(e){const t=this.extinctionCoefficient,s=Math.max(t.x,Math.max(t.y,t.z)),r=s>0?1/s:1;this._material.subSurface.diffusionDistance=new O(Math.exp(-t.x*r),Math.exp(-t.y*r),Math.exp(-t.z*r))}set subsurfaceColorTexture(e){}set subsurfaceConstantTint(e){this._material.subSurface.tintColor=e}get subsurfaceConstantTint(){return this._material.subSurface.tintColor}set subsurfaceConstantTintTexture(e){this._material.subSurface.translucencyColorTexture=e}get subsurfaceRadius(){return 1}set subsurfaceRadius(e){}get subsurfaceRadiusScale(){return this._material.subSurface.scatteringDiffusionProfile??O.White()}set subsurfaceRadiusScale(e){this._material.subSurface.scatteringDiffusionProfile=e}set subsurfaceScatterAnisotropy(e){}configureFuzz(){this._material.sheen.isEnabled=!0,this._material.sheen.useRoughnessFromMainTexture=!1,this._material.sheen.albedoScaling=!0}set fuzzWeight(e){this._material.sheen.isEnabled=!0,this._material.sheen.intensity=e}set fuzzWeightTexture(e){this._material.sheen.texture||(this._material.sheen.texture=e)}set fuzzColor(e){this._material.sheen.isEnabled=!0,this._material.sheen.color=e}set fuzzColorTexture(e){this._material.sheen.texture=e}set fuzzRoughness(e){this._material.sheen.isEnabled=!0,this._material.sheen.roughness=e}set fuzzRoughnessTexture(e){this._material.sheen.isEnabled=!0,this._material.sheen.textureRoughness=e}set specularRoughnessAnisotropy(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.intensity=e}get specularRoughnessAnisotropy(){return this._material.anisotropy.intensity}set geometryTangentAngle(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.angle=e}set geometryTangentTexture(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.texture=e}get geometryTangentTexture(){return this._material.anisotropy.texture}configureGltfStyleAnisotropy(e=!0){}set thinFilmWeight(e){this._material.iridescence.isEnabled=e>0,this._material.iridescence.intensity=e}set thinFilmIor(e){this._material.iridescence.indexOfRefraction=e}set thinFilmThicknessMinimum(e){this._material.iridescence.minimumThickness=e}set thinFilmThicknessMaximum(e){this._material.iridescence.maximumThickness=e}set thinFilmWeightTexture(e){this._material.iridescence.texture=e}set thinFilmThicknessTexture(e){this._material.iridescence.thicknessTexture=e}set unlit(e){this._material.unlit=e}set geometryOpacity(e){this._material.alpha=e}get geometryOpacity(){return this._material.alpha}set geometryNormalTexture(e){this._material.bumpTexture=e,this._material.forceIrradianceInFragment=!0}get geometryNormalTexture(){return this._material.bumpTexture}setNormalMapInversions(e,t){this._material.invertNormalMapX=e,this._material.invertNormalMapY=t}set geometryCoatNormalTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.bumpTexture=e}get geometryCoatNormalTexture(){return this._material.clearCoat.bumpTexture}set geometryCoatNormalTextureScale(e){this._material.clearCoat.bumpTexture&&(this._material.clearCoat.bumpTexture.level=e)}}const Jr=Object.freeze(Object.defineProperty({__proto__:null,PBRMaterialLoadingAdapter:js},Symbol.toStringTag,{value:"Module"})),Ke="EXT_lights_image_based";class Xs{constructor(e){this.name=Ke,this._loader=e,this.enabled=this._loader.isExtensionUsed(Ke)}dispose(){this._loader=null,delete this._lights}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._lights=t.lights}}loadSceneAsync(e,t){return b.LoadExtensionAsync(e,t,this.name,async(s,r)=>{this._loader._allMaterialsDirtyRequired=!0;const a=new Array;a.push(this._loader.loadSceneAsync(e,t)),this._loader.logOpen(`${s}`);const o=g.Get(`${s}/light`,this._lights,r.light);return a.push(this._loadLightAsync(`/extensions/${this.name}/lights/${r.light}`,o).then(i=>{this._loader.babylonScene.environmentTexture=i})),this._loader.logClose(),await Promise.all(a).then(()=>{})})}_loadLightAsync(e,t){if(!t._loaded){const s=new Array;this._loader.logOpen(`${e}`);const r=new Array(t.specularImages.length);for(let a=0;a<t.specularImages.length;a++){const o=t.specularImages[a];r[a]=new Array(o.length);for(let i=0;i<o.length;i++){const l=`${e}/specularImages/${a}/${i}`;this._loader.logOpen(`${l}`);const u=o[i],c=g.Get(l,this._loader.gltf.images,u);s.push(this._loader.loadImageAsync(`/images/${u}`,c).then(h=>{r[a][i]=h})),this._loader.logClose()}}this._loader.logClose(),t._loaded=Promise.all(s).then(async()=>{const a=new lr(this._loader.babylonScene,null,t.specularImageSize);if(a.name=t.name||"environment",t._babylonTexture=a,t.intensity!=null&&(a.level=t.intensity),t.rotation){let u=Y.FromArray(t.rotation);this._loader.babylonScene.useRightHandedSystem||(u=Y.Inverse(u)),Z.FromQuaternionToRef(u,a.getReflectionTextureMatrix())}if(!t.irradianceCoefficients)throw new Error(`${e}: Irradiance coefficients are missing`);const o=er.FromArray(t.irradianceCoefficients);o.scaleInPlace(t.intensity),o.convertIrradianceToLambertianRadiance();const i=tr.FromHarmonics(o),l=(r.length-1)/Math.log2(t.specularImageSize);return await a.updateRGBDAsync(r,i,l)})}return t._loaded.then(()=>t._babylonTexture)}}L(Ke);P(Ke,!0,n=>new Xs(n));const Ue="EXT_mesh_gpu_instancing";class Zs{constructor(e){this.name=Ue,this._loader=e,this.enabled=this._loader.isExtensionUsed(Ue)}dispose(){this._loader=null}loadNodeAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{this._loader._disableInstancedMesh++;const o=this._loader.loadNodeAsync(`/nodes/${t.index}`,t,s);if(this._loader._disableInstancedMesh--,!t._primitiveBabylonMeshes)return await o;const i=new Array;let l=0;const u=c=>{if(a.attributes[c]==null){i.push(Promise.resolve(null));return}const h=g.Get(`${r}/attributes/${c}`,this._loader.gltf.accessors,a.attributes[c]);if(i.push(this._loader._loadFloatAccessorAsync(`/accessors/${h.bufferView}`,h)),l===0)l=h.count;else if(l!==h.count)throw new Error(`${r}/attributes: Instance buffer accessors do not have the same count.`)};return u("TRANSLATION"),u("ROTATION"),u("SCALE"),u("_COLOR_0"),await o.then(async c=>{const[h,d,f,p]=await Promise.all(i),E=new Float32Array(l*16);re.Vector3[0].copyFromFloats(0,0,0),re.Quaternion[0].copyFromFloats(0,0,0,1),re.Vector3[1].copyFromFloats(1,1,1);for(let T=0;T<l;++T)h&&w.FromArrayToRef(h,T*3,re.Vector3[0]),d&&Y.FromArrayToRef(d,T*4,re.Quaternion[0]),f&&w.FromArrayToRef(f,T*3,re.Vector3[1]),Z.ComposeToRef(re.Vector3[1],re.Quaternion[0],re.Vector3[0],re.Matrix[0]),re.Matrix[0].copyToArray(E,T*16);for(const T of t._primitiveBabylonMeshes)T.thinInstanceSetBuffer("matrix",E,16,!0),p&&(p.length===l*3?T.thinInstanceSetBuffer("color",p,3,!0):p.length===l*4?T.thinInstanceSetBuffer("color",p,4,!0):R.Warn("Unexpected size of _COLOR_0 attribute for mesh "+T.name));return c})})}}L(Ue);P(Ue,!0,n=>new Zs(n));const We="EXT_meshopt_compression";class Js{constructor(e){this.name=We,this.enabled=e.isExtensionUsed(We),this._loader=e}dispose(){this._loader=null}loadBufferViewAsync(e,t){return b.LoadExtensionAsync(e,t,this.name,async(s,r)=>{const a=t;if(a._meshOptData)return await a._meshOptData;const o=g.Get(`${e}/buffer`,this._loader.gltf.buffers,r.buffer);return a._meshOptData=this._loader.loadBufferAsync(`/buffers/${o.index}`,o,r.byteOffset||0,r.byteLength).then(async i=>await ur.Default.decodeGltfBufferAsync(i,r.count,r.byteStride,r.mode,r.filter)),await a._meshOptData})}}L(We);P(We,!0,n=>new Js(n));const ze="EXT_texture_webp";class Qs{constructor(e){this.name=ze,this._loader=e,this.enabled=e.isExtensionUsed(ze)}dispose(){this._loader=null}_loadTextureAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=t.sampler==null?b.DefaultSampler:g.Get(`${e}/sampler`,this._loader.gltf.samplers,t.sampler),i=g.Get(`${r}/source`,this._loader.gltf.images,a.source);return await this._loader._createTextureAsync(e,o,i,l=>{s(l)},void 0,!t._textureInfo.nonColorData)})}}L(ze);P(ze,!0,n=>new Qs(n));const qe="EXT_texture_avif";class en{constructor(e){this.name=qe,this._loader=e,this.enabled=e.isExtensionUsed(qe)}dispose(){this._loader=null}_loadTextureAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=t.sampler==null?b.DefaultSampler:g.Get(`${e}/sampler`,this._loader.gltf.samplers,t.sampler),i=g.Get(`${r}/source`,this._loader.gltf.images,a.source);return await this._loader._createTextureAsync(e,o,i,l=>{s(l)},void 0,!t._textureInfo.nonColorData)})}}L(qe);P(qe,!0,n=>new en(n));const Ye="EXT_lights_ies";class tn{constructor(e){this.name=Ye,this._loader=e,this.enabled=this._loader.isExtensionUsed(Ye)}dispose(){this._loader=null,delete this._lights}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._lights=t.lights,g.Assign(this._lights)}}loadNodeAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{this._loader._allMaterialsDirtyRequired=!0;let o,i;const l=await this._loader.loadNodeAsync(e,t,c=>{i=g.Get(r,this._lights,a.light);const h=i.name||c.name;this._loader.babylonScene._blockEntityCollection=!!this._loader._assetContainer,o=new ce(h,w.Zero(),w.Backward(),0,1,this._loader.babylonScene),o.angle=Math.PI/2,o.innerAngle=0,o._parentContainer=this._loader._assetContainer,this._loader.babylonScene._blockEntityCollection=!1,i._babylonLight=o,o.falloffType=Dt.FALLOFF_GLTF,o.diffuse=a.color?O.FromArray(a.color):O.White(),o.intensity=a.multiplier||1,o.range=Number.MAX_VALUE,o.parent=c,this._loader._babylonLights.push(o),b.AddPointerMetadata(o,r),s(c)});let u;if(i.uri)u=await this._loader.loadUriAsync(e,i,i.uri);else{const c=g.Get(`${e}/bufferView`,this._loader.gltf.bufferViews,i.bufferView);u=await this._loader.loadBufferViewAsync(`/bufferViews/${c.index}`,c)}return o.iesProfileTexture=new H(name+"_iesProfile",this._loader.babylonScene,!0,!1,void 0,null,null,u,!0,void 0,void 0,void 0,void 0,".ies"),l})}}L(Ye);P(Ye,!0,n=>new tn(n));const je="KHR_draco_mesh_compression";class sn{constructor(e){this.name=je,this.useNormalizedFlagFromAccessor=!0,this._loader=e,this.enabled=Ts.DefaultAvailable&&this._loader.isExtensionUsed(je)}dispose(){delete this.dracoDecoder,this._loader=null}_loadVertexDataAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{if(t.mode!=null&&t.mode!==4&&t.mode!==5)throw new Error(`${e}: Unsupported mode ${t.mode}`);const o={},i={},l=(c,h)=>{const d=a.attributes[c];if(d!=null&&(s._delayInfo=s._delayInfo||[],s._delayInfo.indexOf(h)===-1&&s._delayInfo.push(h),o[h]=d,this.useNormalizedFlagFromAccessor)){const f=g.TryGet(this._loader.gltf.accessors,t.attributes[c]);f&&(i[h]=f.normalized||!1)}};l("POSITION",k.PositionKind),l("NORMAL",k.NormalKind),l("TANGENT",k.TangentKind),l("TEXCOORD_0",k.UVKind),l("TEXCOORD_1",k.UV2Kind),l("TEXCOORD_2",k.UV3Kind),l("TEXCOORD_3",k.UV4Kind),l("TEXCOORD_4",k.UV5Kind),l("TEXCOORD_5",k.UV6Kind),l("JOINTS_0",k.MatricesIndicesKind),l("WEIGHTS_0",k.MatricesWeightsKind),l("COLOR_0",k.ColorKind);const u=g.Get(r,this._loader.gltf.bufferViews,a.bufferView);return u._dracoBabylonGeometry||(u._dracoBabylonGeometry=this._loader.loadBufferViewAsync(`/bufferViews/${u.index}`,u).then(async c=>{const h=this.dracoDecoder||Ts.Default,d=g.TryGet(this._loader.gltf.accessors,t.attributes.POSITION),f=!this._loader.parent.alwaysComputeBoundingBox&&!s.skeleton&&d?Wt(d):null;return await h._decodeMeshToGeometryForGltfAsync(s.name,this._loader.babylonScene,c,o,i,f).catch(p=>{throw new Error(`${e}: ${p.message}`)})})),await u._dracoBabylonGeometry})}}L(je);P(je,!0,n=>new sn(n));const Xe="KHR_lights_punctual";class nn{constructor(e){this.name=Xe,this._loader=e,this.enabled=this._loader.isExtensionUsed(Xe)}dispose(){this._loader=null,delete this._lights}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._lights=t.lights,g.Assign(this._lights)}}loadNodeAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>(this._loader._allMaterialsDirtyRequired=!0,await this._loader.loadNodeAsync(e,t,o=>{let i;const l=g.Get(r,this._lights,a.light),u=l.name||o.name;switch(this._loader.babylonScene._blockEntityCollection=!!this._loader._assetContainer,l.type){case"directional":{const c=new Gt(u,w.Backward(),this._loader.babylonScene);c.position.setAll(0),i=c;break}case"point":{i=new Vt(u,w.Zero(),this._loader.babylonScene);break}case"spot":{const c=new ce(u,w.Zero(),w.Backward(),0,1,this._loader.babylonScene);c.angle=(l.spot&&l.spot.outerConeAngle||Math.PI/4)*2,c.innerAngle=(l.spot&&l.spot.innerConeAngle||0)*2,i=c;break}default:throw this._loader.babylonScene._blockEntityCollection=!1,new Error(`${r}: Invalid light type (${l.type})`)}i._parentContainer=this._loader._assetContainer,this._loader.babylonScene._blockEntityCollection=!1,l._babylonLight=i,i.falloffType=Dt.FALLOFF_GLTF,i.diffuse=l.color?O.FromArray(l.color):O.White(),i.intensity=l.intensity==null?1:l.intensity,i.range=l.range==null?Number.MAX_VALUE:l.range,i.parent=o,this._loader._babylonLights.push(i),b.AddPointerMetadata(i,r),s(o)})))}}L(Xe);P(Xe,!0,n=>new nn(n));const Ze="EXT_lights_area";class rn{constructor(e){this.name=Ze,this._loader=e,this.enabled=this._loader.isExtensionUsed(Ze)}dispose(){this._loader=null,delete this._lights}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._lights=t.lights,g.Assign(this._lights)}}loadNodeAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>(this._loader._allMaterialsDirtyRequired=!0,await this._loader.loadNodeAsync(e,t,o=>{let i;const l=g.Get(r,this._lights,a.light),u=l.name||o.name;this._loader.babylonScene._blockEntityCollection=!!this._loader._assetContainer;const c=l.size!==void 0?l.size:1;switch(l.type){case"rect":{const d=l.rect?.aspect!==void 0?l.rect.aspect*c:c,f=c;i=new As(u,w.Zero(),d,f,this._loader.babylonScene);break}case"disk":{const d=Math.sqrt(c*c*.25*Math.PI);i=new As(u,w.Zero(),d,d,this._loader.babylonScene);break}default:throw this._loader.babylonScene._blockEntityCollection=!1,new Error(`${r}: Invalid area light type (${l.type})`)}i._parentContainer=this._loader._assetContainer,this._loader.babylonScene._blockEntityCollection=!1,l._babylonLight=i,i.falloffType=Dt.FALLOFF_GLTF,i.diffuse=l.color?O.FromArray(l.color):O.White(),i.intensity=l.intensity==null?1:l.intensity;const h=new St(`${u}_orientation`,this._loader.babylonScene);h.rotationQuaternion=Y.RotationAxis(w.Up(),Math.PI),h.parent=o,i.parent=h,this._loader._babylonLights.push(i),b.AddPointerMetadata(i,r),s(o)})))}}L(Ze);P(Ze,!0,n=>new rn(n));const Je="KHR_materials_pbrSpecularGlossiness";class an{constructor(e){this.name=Je,this.order=200,this._loader=e,this.enabled=this._loader.isExtensionUsed(Je)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=new Array;return o.push(this._loader.loadMaterialBasePropertiesAsync(e,t,s)),o.push(this._loadSpecularGlossinessPropertiesAsync(r,a,s)),this._loader.loadMaterialAlphaProperties(e,t,s),await Promise.all(o).then(()=>{})})}_loadSpecularGlossinessPropertiesAsync(e,t,s){if(!(s instanceof cr))throw new Error(`${e}: Material type not supported`);const r=new Array;return s.metallic=null,s.roughness=null,t.diffuseFactor?(s.albedoColor=O.FromArray(t.diffuseFactor),s.alpha=t.diffuseFactor[3]):s.albedoColor=O.White(),s.reflectivityColor=t.specularFactor?O.FromArray(t.specularFactor):O.White(),s.microSurface=t.glossinessFactor==null?1:t.glossinessFactor,t.diffuseTexture&&r.push(this._loader.loadTextureInfoAsync(`${e}/diffuseTexture`,t.diffuseTexture,a=>{a.name=`${s.name} (Diffuse)`,s.albedoTexture=a})),t.specularGlossinessTexture&&(r.push(this._loader.loadTextureInfoAsync(`${e}/specularGlossinessTexture`,t.specularGlossinessTexture,a=>{a.name=`${s.name} (Specular Glossiness)`,s.reflectivityTexture=a,s.reflectivityTexture.hasAlpha=!0})),s.useMicroSurfaceFromReflectivityMapAlpha=!0),Promise.all(r).then(()=>{})}}L(Je);P(Je,!0,n=>new an(n));const Qe="KHR_materials_unlit";class on{constructor(e){this.name=Qe,this.order=210,this._loader=e,this.enabled=this._loader.isExtensionUsed(Qe)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async()=>await this._loadUnlitPropertiesAsync(e,t,s))}_loadUnlitPropertiesAsync(e,t,s){const r=this._loader._getOrCreateMaterialAdapter(s),a=new Array,o=t.pbrMetallicRoughness;return o&&(o.baseColorFactor&&(r.baseColor=O.FromArray(o.baseColorFactor),r.geometryOpacity=o.baseColorFactor[3]),o.baseColorTexture&&a.push(this._loader.loadTextureInfoAsync(`${e}/baseColorTexture`,o.baseColorTexture,i=>{i.name=`${s.name} (Base Color)`,r.baseColorTexture=i}))),r.isUnlit=!0,t.doubleSided&&(r.backFaceCulling=!1,r.twoSidedLighting=!0),this._loader.loadMaterialAlphaProperties(e,t,s),Promise.all(a).then(()=>{})}}L(Qe);P(Qe,!0,n=>new on(n));const et="KHR_materials_clearcoat";class ln{constructor(e){this.name=et,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(et)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=new Array;o.push(this._loader.loadMaterialPropertiesAsync(e,t,s)),o.push(this._loadClearCoatPropertiesAsync(r,a,s)),await Promise.all(o)})}_loadClearCoatPropertiesAsync(e,t,s){const r=this._loader._getOrCreateMaterialAdapter(s),a=new Array;return r.configureCoat(),r.coatWeight=t.clearcoatFactor!==void 0?t.clearcoatFactor:0,r.coatRoughness=t.clearcoatRoughnessFactor!==void 0?t.clearcoatRoughnessFactor:0,t.clearcoatTexture&&a.push(this._loader.loadTextureInfoAsync(`${e}/clearcoatTexture`,t.clearcoatTexture,o=>{o.name=`${s.name} (ClearCoat)`,r.coatWeightTexture=o})),t.clearcoatRoughnessTexture&&(t.clearcoatRoughnessTexture.nonColorData=!0,a.push(this._loader.loadTextureInfoAsync(`${e}/clearcoatRoughnessTexture`,t.clearcoatRoughnessTexture,o=>{o.name=`${s.name} (ClearCoat Roughness)`,r.coatRoughnessTexture=o}))),t.clearcoatNormalTexture&&(t.clearcoatNormalTexture.nonColorData=!0,a.push(this._loader.loadTextureInfoAsync(`${e}/clearcoatNormalTexture`,t.clearcoatNormalTexture,o=>{o.name=`${s.name} (ClearCoat Normal)`,r.geometryCoatNormalTexture=o,t.clearcoatNormalTexture?.scale!=null&&(r.geometryCoatNormalTextureScale=t.clearcoatNormalTexture.scale)})),r.setNormalMapInversions(!s.getScene().useRightHandedSystem,s.getScene().useRightHandedSystem)),Promise.all(a).then(()=>{})}}L(et);P(et,!0,n=>new ln(n));const tt="KHR_materials_coat";class un{constructor(e){this.name=tt,this.order=191,this.useOpenPBR=!1,this._loader=e,this.enabled=this._loader.isExtensionUsed(tt)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=new Array;o.push(this._loader.loadMaterialPropertiesAsync(e,t,s)),t.extensions&&t.extensions.KHR_materials_openpbr&&(this.useOpenPBR=!0),o.push(this._loadCoatPropertiesAsync(r,a,s)),await Promise.all(o)})}_loadCoatPropertiesAsync(e,t,s){const r=this._loader._getOrCreateMaterialAdapter(s),a=new Array;r.configureCoat(),r.coatWeight=t.coatFactor!==void 0?t.coatFactor:0,r.coatRoughness=t.coatRoughnessFactor!==void 0?t.coatRoughnessFactor:0,t.coatTexture&&a.push(this._loader.loadTextureInfoAsync(`${e}/coatTexture`,t.coatTexture,u=>{u.name=`${s.name} (Coat)`,r.coatWeightTexture=u})),t.coatRoughnessTexture&&(t.coatRoughnessTexture.nonColorData=!0,a.push(this._loader.loadTextureInfoAsync(`${e}/coatRoughnessTexture`,t.coatRoughnessTexture,u=>{u.name=`${s.name} (Coat Roughness)`,r.coatRoughnessTexture=u}))),t.coatNormalTexture&&(t.coatNormalTexture.nonColorData=!0,a.push(this._loader.loadTextureInfoAsync(`${e}/coatNormalTexture`,t.coatNormalTexture,u=>{u.name=`${s.name} (Coat Normal)`,r.geometryCoatNormalTexture=u,t.coatNormalTexture?.scale!=null&&(r.geometryCoatNormalTextureScale=t.coatNormalTexture.scale)})),r.setNormalMapInversions(!s.getScene().useRightHandedSystem,s.getScene().useRightHandedSystem)),r.coatDarkening=t.coatDarkeningFactor!==void 0?t.coatDarkeningFactor:1,r.coatIor=t.coatIor!==void 0?t.coatIor:1.5;const o=O.White();t.coatColorFactor!==void 0&&o.fromArray(t.coatColorFactor),r.coatColor=o,t.coatColorTexture&&a.push(this._loader.loadTextureInfoAsync(`${e}/coatColorTexture`,t.coatColorTexture,u=>{u.name=`${s.name} (Coat Color)`,r.coatColorTexture=u}));const i=t.coatAnisotropyStrength??0,l=t.coatAnisotropyRotation??0;return r.coatRoughnessAnisotropy=i,r.geometryCoatTangentAngle=l,this.useOpenPBR||r.configureGltfStyleAnisotropy(!0),t.coatAnisotropyTexture&&(t.coatAnisotropyTexture.nonColorData=!0,a.push(this._loader.loadTextureInfoAsync(`${e}/coatAnisotropyTexture`,t.coatAnisotropyTexture,u=>{u.name=`${s.name} (Coat Anisotropy)`,r.geometryCoatTangentTexture=u}))),Promise.all(a).then(()=>{})}}L(tt);P(tt,!0,n=>new un(n));const st="KHR_materials_iridescence";class cn{constructor(e){this.name=st,this.order=195,this._loader=e,this.enabled=this._loader.isExtensionUsed(st)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,s)),o.push(this._loadIridescencePropertiesAsync(r,a,s)),await Promise.all(o).then(()=>{})})}_loadIridescencePropertiesAsync(e,t,s){const r=this._loader._getOrCreateMaterialAdapter(s),a=new Array;return r.thinFilmWeight=t.iridescenceFactor??0,r.thinFilmIor=t.iridescenceIor??t.iridescenceIOR??1.3,r.thinFilmThicknessMinimum=t.iridescenceThicknessMinimum??100,r.thinFilmThicknessMaximum=t.iridescenceThicknessMaximum??400,t.iridescenceTexture&&a.push(this._loader.loadTextureInfoAsync(`${e}/iridescenceTexture`,t.iridescenceTexture,o=>{o.name=`${s.name} (Iridescence)`,r.thinFilmWeightTexture=o})),t.iridescenceThicknessTexture&&a.push(this._loader.loadTextureInfoAsync(`${e}/iridescenceThicknessTexture`,t.iridescenceThicknessTexture,o=>{o.name=`${s.name} (Iridescence Thickness)`,r.thinFilmThicknessTexture=o})),Promise.all(a).then(()=>{})}}L(st);P(st,!0,n=>new cn(n));const nt="KHR_materials_anisotropy";class hn{constructor(e){this.name=nt,this.order=195,this._loader=e,this.enabled=this._loader.isExtensionUsed(nt)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=new Array;o.push(this._loader.loadMaterialPropertiesAsync(e,t,s)),o.push(this._loadAnisotropyPropertiesAsync(r,a,s)),await Promise.all(o)})}async _loadAnisotropyPropertiesAsync(e,t,s){const r=this._loader._getOrCreateMaterialAdapter(s),a=new Array,o=t.anisotropyStrength??0,i=t.anisotropyRotation??0;r.specularRoughnessAnisotropy=o,r.geometryTangentAngle=i;const l=t.extensions??{};(!l.EXT_materials_anisotropy_openpbr||!l.EXT_materials_anisotropy_openpbr.openPbrAnisotropyEnabled)&&r.configureGltfStyleAnisotropy(!0),t.anisotropyTexture&&(t.anisotropyTexture.nonColorData=!0,a.push(this._loader.loadTextureInfoAsync(`${e}/anisotropyTexture`,t.anisotropyTexture,u=>{u.name=`${s.name} (Anisotropy Intensity)`,r.geometryTangentTexture=u}))),await Promise.all(a)}}L(nt);P(nt,!0,n=>new hn(n));const rt="KHR_materials_emissive_strength";class dn{constructor(e){this.name=rt,this.order=170,this._loader=e,this.enabled=this._loader.isExtensionUsed(rt)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>(await this._loader.loadMaterialPropertiesAsync(e,t,s),this._loadEmissiveProperties(r,a,s),await Promise.resolve()))}_loadEmissiveProperties(e,t,s){if(t.emissiveStrength!==void 0){const r=this._loader._getOrCreateMaterialAdapter(s);r.emissionLuminance=t.emissiveStrength}}}L(rt);P(rt,!0,n=>new dn(n));const at="KHR_materials_sheen";class mn{constructor(e){this.name=at,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(at)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,s)),o.push(this._loadSheenPropertiesAsync(r,a,s)),await Promise.all(o).then(()=>{})})}_loadSheenPropertiesAsync(e,t,s){const r=this._loader._getOrCreateMaterialAdapter(s),a=new Array;r.configureFuzz();const o=t.sheenColorFactor!==void 0?O.FromArray(t.sheenColorFactor):O.Black(),i=t.sheenRoughnessFactor!==void 0?t.sheenRoughnessFactor:0;return r.fuzzWeight=1,r.fuzzColor=o,r.fuzzRoughness=i,t.sheenColorTexture&&a.push(this._loader.loadTextureInfoAsync(`${e}/sheenColorTexture`,t.sheenColorTexture,l=>{l.name=`${s.name} (Sheen Color)`,r.fuzzColorTexture=l})),t.sheenRoughnessTexture&&(t.sheenRoughnessTexture.nonColorData=!0,a.push(this._loader.loadTextureInfoAsync(`${e}/sheenRoughnessTexture`,t.sheenRoughnessTexture,l=>{l.name=`${s.name} (Sheen Roughness)`,r.fuzzRoughnessTexture=l}))),Promise.all(a).then(()=>{})}}L(at);P(at,!0,n=>new mn(n));const ot="KHR_materials_fuzz";class fn{constructor(e){this.name=ot,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(ot)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,s)),o.push(this._loadFuzzPropertiesAsync(r,a,s)),await Promise.all(o).then(()=>{})})}_loadFuzzPropertiesAsync(e,t,s){const r=this._loader._getOrCreateMaterialAdapter(s),a=new Array;return r.configureFuzz(),r.fuzzWeight=t.fuzzFactor!==void 0?t.fuzzFactor:0,r.fuzzColor=t.fuzzColorFactor!==void 0?O.FromArray(t.fuzzColorFactor):O.White(),r.fuzzRoughness=t.fuzzRoughnessFactor!==void 0?t.fuzzRoughnessFactor:.5,t.fuzzTexture&&a.push(this._loader.loadTextureInfoAsync(`${e}/fuzzTexture`,t.fuzzTexture,o=>{o.name=`${s.name} (Fuzz)`,r.fuzzWeightTexture=o})),t.fuzzColorTexture&&a.push(this._loader.loadTextureInfoAsync(`${e}/fuzzColorTexture`,t.fuzzColorTexture,o=>{o.name=`${s.name} (Fuzz Color)`,r.fuzzColorTexture=o})),t.fuzzRoughnessTexture&&(t.fuzzRoughnessTexture.nonColorData=!0,a.push(this._loader.loadTextureInfoAsync(`${e}/fuzzRoughnessTexture`,t.fuzzRoughnessTexture,o=>{o.name=`${s.name} (Fuzz Roughness)`,r.fuzzRoughnessTexture=o}))),Promise.all(a).then(()=>{})}}L(ot);P(ot,!0,n=>new fn(n));const it="KHR_materials_specular";class _n{constructor(e){this.name=it,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(it)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=new Array;o.push(this._loader.loadMaterialPropertiesAsync(e,t,s)),o.push(this._loadSpecularPropertiesAsync(r,a,s));const i=this._loader._getOrCreateMaterialAdapter(s);return a.extensions&&a.extensions.EXT_materials_specular_edge_color&&a.extensions.EXT_materials_specular_edge_color.specularEdgeColorEnabled&&i.enableSpecularEdgeColor(!0),await Promise.all(o).then(()=>{})})}_loadSpecularPropertiesAsync(e,t,s){const r=this._loader._getOrCreateMaterialAdapter(s),a=new Array;return r.specularWeight=t.specularFactor??1,r.specularColor=t.specularColorFactor!==void 0?O.FromArray(t.specularColorFactor):new O(1,1,1),t.specularTexture&&(t.specularTexture.nonColorData=!0,a.push(this._loader.loadTextureInfoAsync(`${e}/specularTexture`,t.specularTexture,o=>{o.name=`${s.name} (Specular)`,r.specularWeightTexture=o}))),t.specularColorTexture&&a.push(this._loader.loadTextureInfoAsync(`${e}/specularColorTexture`,t.specularColorTexture,o=>{o.name=`${s.name} (Specular Color)`,r.specularColorTexture=o})),Promise.all(a).then(()=>{})}}L(it);P(it,!0,n=>new _n(n));const lt="KHR_materials_ior";class Be{constructor(e){this.name=lt,this.order=180,this._loader=e,this.enabled=this._loader.isExtensionUsed(lt)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,s)),o.push(this._loadIorPropertiesAsync(r,a,s)),await Promise.all(o).then(()=>{})})}_loadIorPropertiesAsync(e,t,s){const r=this._loader._getOrCreateMaterialAdapter(s),a=t.ior!==void 0?t.ior:Be._DEFAULT_IOR;return r.specularIor=a,Promise.resolve()}}Be._DEFAULT_IOR=1.5;L(lt);P(lt,!0,n=>new Be(n));const J="KHR_materials_variants";class ne{constructor(e){this.name=J,this._loader=e,this.enabled=this._loader.isExtensionUsed(J)&&!this._loader.parent.skipMaterials}dispose(){this._loader=null}static GetAvailableVariants(e){const t=this._GetExtensionMetadata(e);return t?Object.keys(t.variants):[]}getAvailableVariants(e){return ne.GetAvailableVariants(e)}static SelectVariant(e,t){const s=this._GetExtensionMetadata(e);if(!s)throw new Error(`Cannot select variant on a glTF mesh that does not have the ${J} extension`);const r=a=>{const o=s.variants[a];if(o)for(const i of o)i.mesh.material=i.material};if(t instanceof Array)for(const a of t)r(a);else r(t);s.lastSelected=t}selectVariant(e,t){ne.SelectVariant(e,t)}static Reset(e){const t=this._GetExtensionMetadata(e);if(!t)throw new Error(`Cannot reset on a glTF mesh that does not have the ${J} extension`);for(const s of t.original)s.mesh.material=s.material;t.lastSelected=null}reset(e){ne.Reset(e)}static GetLastSelectedVariant(e){const t=this._GetExtensionMetadata(e);if(!t)throw new Error(`Cannot get the last selected variant on a glTF mesh that does not have the ${J} extension`);return t.lastSelected}getLastSelectedVariant(e){return ne.GetLastSelectedVariant(e)}static _GetExtensionMetadata(e){return e?._internalMetadata?.gltf?.[J]||null}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._variants=t.variants}}onReady(){const e=this._loader.rootBabylonMesh;if(e){const t=this._loader.parent.extensionOptions[J];t?.defaultVariant&&ne.SelectVariant(e,t.defaultVariant),t?.onLoaded?.({get variants(){return ne.GetAvailableVariants(e)},get selectedVariant(){const s=ne.GetLastSelectedVariant(e);return s?Array.isArray(s)?s[0]:s:ne.GetAvailableVariants(e)[0]},set selectedVariant(s){ne.SelectVariant(e,s)}})}}_loadMeshPrimitiveAsync(e,t,s,r,a,o){return b.LoadExtensionAsync(e,a,this.name,async(i,l)=>{const u=new Array;return u.push(this._loader._loadMeshPrimitiveAsync(e,t,s,r,a,c=>{if(o(c),c instanceof we){const h=b._GetDrawMode(e,a.mode),d=this._loader.rootBabylonMesh,f=d?d._internalMetadata=d._internalMetadata||{}:{},p=f.gltf=f.gltf||{},E=p[J]=p[J]||{lastSelected:null,original:[],variants:{}};E.original.push({mesh:c,material:c.material});for(let T=0;T<l.mappings.length;++T){const A=l.mappings[T],B=g.Get(`${i}/mappings/${T}/material`,this._loader.gltf.materials,A.material);u.push(this._loader._loadMaterialAsync(`#/materials/${A.material}`,B,c,h,I=>{for(let M=0;M<A.variants.length;++M){const C=A.variants[M],S=g.Get(`/extensions/${J}/variants/${C}`,this._variants,C);E.variants[S.name]=E.variants[S.name]||[],E.variants[S.name].push({mesh:c,material:I}),c.onClonedObservable.add(v=>{const N=v;let V,$=N;do{if($=$.parent,!$)return;V=ne._GetExtensionMetadata($)}while(V===null);if(d&&V===ne._GetExtensionMetadata(d)){$._internalMetadata={};for(const W in d._internalMetadata)$._internalMetadata[W]=d._internalMetadata[W];$._internalMetadata.gltf=[];for(const W in d._internalMetadata.gltf)$._internalMetadata.gltf[W]=d._internalMetadata.gltf[W];$._internalMetadata.gltf[J]={lastSelected:null,original:[],variants:{}};for(const W of V.original)$._internalMetadata.gltf[J].original.push({mesh:W.mesh,material:W.material});for(const W in V.variants)if(Object.prototype.hasOwnProperty.call(V.variants,W)){$._internalMetadata.gltf[J].variants[W]=[];for(const ys of V.variants[W])$._internalMetadata.gltf[J].variants[W].push({mesh:ys.mesh,material:ys.material})}V=$._internalMetadata.gltf[J]}for(const W of V.original)W.mesh===c&&(W.mesh=N);for(const W of V.variants[S.name])W.mesh===c&&(W.mesh=N)})}}))}}})),await Promise.all(u).then(([c])=>c)})}}L(J);P(J,!0,n=>new ne(n));class jt{static _GetDefaultOptions(){return{renderSize:1024,samples:4,lodGenerationScale:1,lodGenerationOffset:-4,renderTargetTextureType:le.TEXTURETYPE_HALF_FLOAT,generateMipmaps:!0}}constructor(e,t,s){this._opaqueRenderTarget=null,this._opaqueMeshesCache=[],this._transparentMeshesCache=[],this._materialObservers={},this._options={...jt._GetDefaultOptions(),...e},this._scene=t,this._scene._transmissionHelper=this,this._loader=s,this.onErrorObservable=new ee,this._scene.onDisposeObservable.addOnce(()=>{this.dispose()}),this._parseScene(),this._setupRenderTargets()}updateOptions(e){if(!Object.keys(e).filter(a=>this._options[a]!==e[a]).length)return;const s={...this._options,...e},r=this._options;this._options=s,s.renderSize!==r.renderSize||s.renderTargetTextureType!==r.renderTargetTextureType||s.generateMipmaps!==r.generateMipmaps||!this._opaqueRenderTarget?this._setupRenderTargets():(this._opaqueRenderTarget.samples=s.samples,this._opaqueRenderTarget.lodGenerationScale=s.lodGenerationScale,this._opaqueRenderTarget.lodGenerationOffset=s.lodGenerationOffset)}getOpaqueTarget(){return this._opaqueRenderTarget}_addMesh(e){this._materialObservers[e.uniqueId]=e.onMaterialChangedObservable.add(this._onMeshMaterialChanged.bind(this)),D.SetImmediate(()=>{if(e.material){if(!this._loader.isMatchingMaterialType(e.material))return;const t=this._loader._getOrCreateMaterialAdapter(e.material);t.transmissionWeight>0?(t.refractionBackgroundTexture=this._opaqueRenderTarget,this._transparentMeshesCache.indexOf(e)===-1&&this._transparentMeshesCache.push(e)):this._opaqueMeshesCache.indexOf(e)===-1&&this._opaqueMeshesCache.push(e)}})}_removeMesh(e){e.onMaterialChangedObservable.remove(this._materialObservers[e.uniqueId]),delete this._materialObservers[e.uniqueId];let t=this._transparentMeshesCache.indexOf(e);t!==-1&&this._transparentMeshesCache.splice(t,1),t=this._opaqueMeshesCache.indexOf(e),t!==-1&&this._opaqueMeshesCache.splice(t,1)}_parseScene(){this._scene.meshes.forEach(this._addMesh.bind(this)),this._scene.onNewMeshAddedObservable.add(this._addMesh.bind(this)),this._scene.onMeshRemovedObservable.add(this._removeMesh.bind(this))}_onMeshMaterialChanged(e){const t=this._transparentMeshesCache.indexOf(e),s=this._opaqueMeshesCache.indexOf(e);if(!this._loader.isMatchingMaterialType(e.material))return;const r=e.material?this._loader._getOrCreateMaterialAdapter(e.material):null;(r?r.transmissionWeight>0:!1)?(r&&(r.refractionBackgroundTexture=this._opaqueRenderTarget),s!==-1?(this._opaqueMeshesCache.splice(s,1),this._transparentMeshesCache.push(e)):t===-1&&this._transparentMeshesCache.push(e)):t!==-1?(this._transparentMeshesCache.splice(t,1),this._opaqueMeshesCache.push(e)):s===-1&&this._opaqueMeshesCache.push(e)}_isRenderTargetValid(){return this._opaqueRenderTarget?.getInternalTexture()!==null}_setupRenderTargets(){this._opaqueRenderTarget&&this._opaqueRenderTarget.dispose(),this._opaqueRenderTarget=new sr("opaqueSceneTexture",this._options.renderSize,this._scene,this._options.generateMipmaps,void 0,this._options.renderTargetTextureType),this._opaqueRenderTarget.ignoreCameraViewport=!0,this._opaqueRenderTarget.renderList=this._opaqueMeshesCache,this._opaqueRenderTarget.clearColor=this._options.clearColor?.clone()??this._scene.clearColor.clone(),this._opaqueRenderTarget.gammaSpace=!1,this._opaqueRenderTarget.lodGenerationScale=this._options.lodGenerationScale,this._opaqueRenderTarget.lodGenerationOffset=this._options.lodGenerationOffset,this._opaqueRenderTarget.samples=this._options.samples,this._opaqueRenderTarget.renderSprites=!0,this._opaqueRenderTarget.renderParticles=!0,this._opaqueRenderTarget.disableImageProcessing=!0;let e;this._opaqueRenderTarget.onBeforeBindObservable.add(t=>{e=this._scene.environmentIntensity,this._scene.environmentIntensity=1,this._options.clearColor?t.clearColor.copyFrom(this._options.clearColor):this._scene.clearColor.toLinearSpaceToRef(t.clearColor,this._scene.getEngine().useExactSrgbConversions)}),this._opaqueRenderTarget.onAfterUnbindObservable.add(()=>{this._scene.environmentIntensity=e});for(const t of this._transparentMeshesCache)if(t.material){if(!this._loader.isMatchingMaterialType(t.material))return;const s=this._loader._getOrCreateMaterialAdapter(t.material);s.transmissionWeight>0&&(s.refractionBackgroundTexture=this._opaqueRenderTarget)}}dispose(){this._scene._transmissionHelper=void 0,this._opaqueRenderTarget&&(this._opaqueRenderTarget.dispose(),this._opaqueRenderTarget=null),this._transparentMeshesCache=[],this._opaqueMeshesCache=[]}}const ut="KHR_materials_transmission";class pn{constructor(e){this.name=ut,this.order=175,this._loader=e,this.enabled=this._loader.isExtensionUsed(ut),this.enabled&&(e.parent.transparencyAsCoverage=!0)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,s)),o.push(this._loadTransparentPropertiesAsync(r,t,s,a)),await Promise.all(o).then(()=>{})})}_loadTransparentPropertiesAsync(e,t,s,r){const a=this._loader._getOrCreateMaterialAdapter(s),o=r.transmissionFactor!==void 0?r.transmissionFactor:0;if(o===0||!a)return Promise.resolve();if(a.configureTransmission(),a.transmissionWeight=o,o>0&&!this._loader.parent.dontUseTransmissionHelper){const l=s.getScene();l._transmissionHelper?l._transmissionHelper?._isRenderTargetValid()||l._transmissionHelper?._setupRenderTargets():new jt({},s.getScene(),this._loader)}let i=Promise.resolve(null);return r.transmissionTexture&&(r.transmissionTexture.nonColorData=!0,i=this._loader.loadTextureInfoAsync(`${e}/transmissionTexture`,r.transmissionTexture,l=>{l.name=`${s.name} (Transmission)`,a.transmissionWeightTexture=l})),i.then(()=>{})}}L(ut);P(ut,!0,n=>new pn(n));const ct="KHR_materials_diffuse_transmission";class gn{constructor(e){this.name=ct,this.order=174,this._loader=e,this.enabled=this._loader.isExtensionUsed(ct),this.enabled&&(e.parent.transparencyAsCoverage=!0)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,s)),o.push(this._loadTranslucentPropertiesAsync(r,t,s,a)),await Promise.all(o).then(()=>{})})}_loadTranslucentPropertiesAsync(e,t,s,r){const a=this._loader._getOrCreateMaterialAdapter(s);a.configureSubsurface(),a.subsurfaceWeight=r.diffuseTransmissionFactor??0,a.subsurfaceConstantTint=r.diffuseTransmissionColorFactor!==void 0?O.FromArray(r.diffuseTransmissionColorFactor):O.White();const o=new Array;return r.diffuseTransmissionTexture&&(r.diffuseTransmissionTexture.nonColorData=!0,o.push(this._loader.loadTextureInfoAsync(`${e}/diffuseTransmissionTexture`,r.diffuseTransmissionTexture).then(i=>{i.name=`${s.name} (Diffuse Transmission)`,a.subsurfaceWeightTexture=i}))),r.diffuseTransmissionColorTexture&&o.push(this._loader.loadTextureInfoAsync(`${e}/diffuseTransmissionColorTexture`,r.diffuseTransmissionColorTexture).then(i=>{i.name=`${s.name} (Diffuse Transmission Color)`,a.subsurfaceConstantTintTexture=i})),Promise.all(o).then(()=>{})}}L(ct);P(ct,!0,n=>new gn(n));const ht="KHR_materials_volume";class yn{constructor(e){this.name=ht,this.order=173,this._loader=e,this.enabled=this._loader.isExtensionUsed(ht),this.enabled&&this._loader._disableInstancedMesh++}dispose(){this.enabled&&this._loader._disableInstancedMesh--,this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,s)),o.push(this._loadVolumePropertiesAsync(r,t,s,a)),await Promise.all(o).then(()=>{})})}_loadVolumePropertiesAsync(e,t,s,r){const a=this._loader._getOrCreateMaterialAdapter(s);if(a.transmissionWeight===0&&a.subsurfaceWeight===0||!r.thicknessFactor)return Promise.resolve();const o=r.attenuationDistance!==void 0?r.attenuationDistance:Number.MAX_VALUE,i=r.attenuationColor!==void 0&&r.attenuationColor.length==3?O.FromArray(r.attenuationColor):O.White(),l=new w(-Math.log(i.r),-Math.log(i.g),-Math.log(i.b));l.scaleInPlace(1/Math.max(o,.001)),a.extinctionCoefficient=l,a.transmissionDepth=o,a.transmissionColor=i,a.volumeThickness=r.thicknessFactor??0;const u=new Array;return r.thicknessTexture&&(r.thicknessTexture.nonColorData=!0,u.push(this._loader.loadTextureInfoAsync(`${e}/thicknessTexture`,r.thicknessTexture,c=>{c.name=`${s.name} (Thickness)`,a.volumeThicknessTexture=c}))),Promise.all(u).then(()=>{})}}L(ht);P(ht,!0,n=>new yn(n));const dt="KHR_materials_volume_scatter";function Qr(n){const e=new w(n.r,n.g,n.b),t=new w(4.09712,4.09712,4.09712);t.multiplyInPlace(e),t.addInPlace(new w(4.20863,4.20863,4.20863));const s=new w(9.59217,9.59217,9.59217);return s.addInPlace(new w(41.6808,41.6808,41.6808).multiplyInPlace(e)),s.addInPlace(new w(17.7126,17.7126,17.7126).multiplyInPlace(e.multiply(e))),t.subtractInPlace(new w(Math.sqrt(s.x),Math.sqrt(s.y),Math.sqrt(s.z))),new w(1,1,1).subtract(t.multiply(t))}class bn{constructor(e){this.name=dt,this.order=172,this._loader=e,this.enabled=this._loader.isExtensionUsed(dt),this.enabled&&this._loader._disableInstancedMesh++}dispose(){this.enabled&&this._loader._disableInstancedMesh--,this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,s)),o.push(this._loadVolumePropertiesAsync(r,t,s,a)),await Promise.all(o).then(()=>{})})}_loadVolumePropertiesAsync(e,t,s,r){const a=this._loader._getOrCreateMaterialAdapter(s);if(a.transmissionWeight===0&&a.subsurfaceWeight===0)return Promise.resolve();const o=r.multiscatterColor!==void 0&&r.multiscatterColor.length==3?O.FromArray(r.multiscatterColor):O.Black(),i=r.scatterAnisotropy!==void 0?r.scatterAnisotropy:0;if(a.transmissionWeight>0){const l=Qr(o),u=new w(-Math.log(a.transmissionColor.r),-Math.log(a.transmissionColor.g),-Math.log(a.transmissionColor.b));u.scaleInPlace(1/Math.max(a.transmissionDepth,.001));const c=u.multiply(l);c.scaleInPlace(a.transmissionDepth),a.transmissionScatter.set(c.x,c.y,c.z);let h=Promise.resolve(null);return r.multiscatterColorTexture&&(r.multiscatterColorTexture.nonColorData=!0,h=this._loader.loadTextureInfoAsync(`${e}/multiscatterColorTexture`,r.multiscatterColorTexture,d=>{d.name=`${s.name} (Transmission)`,a.transmissionWeightTexture=d})),a.transmissionScatterAnisotropy=i,h.then(()=>{})}if(a.subsurfaceWeight>0){a.subsurfaceScatterAnisotropy=i,a.subsurfaceColor=o;const l=new w(a.extinctionCoefficient.x!==0?1/a.extinctionCoefficient.x:1,a.extinctionCoefficient.y!==0?1/a.extinctionCoefficient.y:1,a.extinctionCoefficient.z!==0?1/a.extinctionCoefficient.z:1);a.subsurfaceRadius=Math.max(l.x,l.y,l.z),a.subsurfaceRadiusScale=new O(l.x/a.subsurfaceRadius,l.y/a.subsurfaceRadius,l.z/a.subsurfaceRadius)}return Promise.resolve()}}L(dt);P(dt,!0,n=>new bn(n));const mt="KHR_materials_dispersion";class Tn{constructor(e){this.name=mt,this.order=174,this._loader=e,this.enabled=this._loader.isExtensionUsed(mt)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,s)),o.push(this._loadDispersionPropertiesAsync(r,t,s,a)),await Promise.all(o).then(()=>{})})}_loadDispersionPropertiesAsync(e,t,s,r){const a=this._loader._getOrCreateMaterialAdapter(s);return a.transmissionWeight==0||!r.dispersion||(a.transmissionDispersionAbbeNumber=20,a.transmissionDispersionScale=r.dispersion),Promise.resolve()}}L(mt);P(mt,!0,n=>new Tn(n));const ft="KHR_materials_diffuse_roughness";class An{constructor(e){this.name=ft,this.order=190,this._loader=e,this.enabled=this._loader.isExtensionUsed(ft)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=new Array;return o.push(this._loader.loadMaterialPropertiesAsync(e,t,s)),o.push(this._loadDiffuseRoughnessPropertiesAsync(r,a,s)),await Promise.all(o).then(()=>{})})}_loadDiffuseRoughnessPropertiesAsync(e,t,s){const r=this._loader._getOrCreateMaterialAdapter(s),a=new Array;return r.baseDiffuseRoughness=t.diffuseRoughnessFactor??0,t.diffuseRoughnessTexture&&a.push(this._loader.loadTextureInfoAsync(`${e}/diffuseRoughnessTexture`,t.diffuseRoughnessTexture,o=>{o.name=`${s.name} (Diffuse Roughness)`,r.baseDiffuseRoughnessTexture=o})),Promise.all(a).then(()=>{})}}L(ft);P(ft,!0,n=>new An(n));const _t="KHR_mesh_quantization";class xn{constructor(e){this.name=_t,this.enabled=e.isExtensionUsed(_t)}dispose(){}}L(_t);P(_t,!0,n=>new xn(n));const pt="KHR_texture_basisu";class Cn{constructor(e){this.name=pt,this._loader=e,this.enabled=e.isExtensionUsed(pt)}dispose(){this._loader=null}_loadTextureAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=t.sampler==null?b.DefaultSampler:g.Get(`${e}/sampler`,this._loader.gltf.samplers,t.sampler),i=g.Get(`${r}/source`,this._loader.gltf.images,a.source);return await this._loader._createTextureAsync(e,o,i,l=>{s(l)},t._textureInfo.nonColorData?{useRGBAIfASTCBC7NotAvailableWhenUASTC:!0}:void 0,!t._textureInfo.nonColorData)})}}L(pt);P(pt,!0,n=>new Cn(n));const gt="KHR_texture_transform";class wn{constructor(e){this.name=gt,this._loader=e,this.enabled=this._loader.isExtensionUsed(gt)}dispose(){this._loader=null}loadTextureInfoAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>await this._loader.loadTextureInfoAsync(e,t,o=>{if(!(o instanceof H))throw new Error(`${r}: Texture type not supported`);a.offset&&(o.uOffset=a.offset[0],o.vOffset=a.offset[1]),o.uRotationCenter=0,o.vRotationCenter=0,a.rotation&&(o.wAng=-a.rotation),a.scale&&(o.uScale=a.scale[0],o.vScale=a.scale[1]),a.texCoord!=null&&(o.coordinatesIndex=a.texCoord),s(o)}))}}L(gt);P(gt,!0,n=>new wn(n));const yt="KHR_xmp_json_ld";class vn{constructor(e){this.name=yt,this.order=100,this._loader=e,this.enabled=this._loader.isExtensionUsed(yt)}dispose(){this._loader=null}onLoading(){if(this._loader.rootBabylonMesh===null)return;const e=this._loader.gltf.extensions?.KHR_xmp_json_ld,t=this._loader.gltf.asset?.extensions?.KHR_xmp_json_ld;if(e&&t){const s=+t.packet;e.packets&&s<e.packets.length&&(this._loader.rootBabylonMesh.metadata=this._loader.rootBabylonMesh.metadata||{},this._loader.rootBabylonMesh.metadata.xmp=e.packets[s])}}}L(yt);P(yt,!0,n=>new vn(n));function fe(n,e,t,s){return O.FromArray(e,t).scale(s)}function ea(n,e,t,s){return e[t+3]*s}function F(n,e,t,s){return e[t]*s}function Xt(n,e,t,s){return-e[t]*s}function bt(n,e,t,s){return e[t+1]*s}function En(n,e,t,s){return e[t]*s*2}function X(n){return{scale:[new G(x.ANIMATIONTYPE_FLOAT,`${n}.uScale`,F,()=>2),new G(x.ANIMATIONTYPE_FLOAT,`${n}.vScale`,bt,()=>2)],offset:[new G(x.ANIMATIONTYPE_FLOAT,`${n}.uOffset`,F,()=>2),new G(x.ANIMATIONTYPE_FLOAT,`${n}.vOffset`,bt,()=>2)],rotation:[new G(x.ANIMATIONTYPE_FLOAT,`${n}.wAng`,Xt,()=>1)]}}class me extends ye{buildAnimations(e,t,s,r){return[{babylonAnimatable:e._babylonCamera,babylonAnimation:this._buildAnimation(t,s,r)}]}}class G extends ye{buildAnimations(e,t,s,r){const a=[];for(const o in e._data)a.push({babylonAnimatable:e._data[o].babylonMaterial,babylonAnimation:this._buildAnimation(t,s,r)});return a}}class ue extends ye{buildAnimations(e,t,s,r){return[{babylonAnimatable:e._babylonLight,babylonAnimation:this._buildAnimation(t,s,r)}]}}class ta extends ye{buildAnimations(e,t,s,r){return e._primitiveBabylonMeshes?e._primitiveBabylonMeshes.map(a=>({babylonAnimatable:a,babylonAnimation:this._buildAnimation(t,s,r)})):[]}}m("/cameras/{}/orthographic/xmag",[new me(x.ANIMATIONTYPE_FLOAT,"orthoLeft",Xt,()=>1),new me(x.ANIMATIONTYPE_FLOAT,"orthoRight",bt,()=>1)]);m("/cameras/{}/orthographic/ymag",[new me(x.ANIMATIONTYPE_FLOAT,"orthoBottom",Xt,()=>1),new me(x.ANIMATIONTYPE_FLOAT,"orthoTop",bt,()=>1)]);m("/cameras/{}/orthographic/zfar",[new me(x.ANIMATIONTYPE_FLOAT,"maxZ",F,()=>1)]);m("/cameras/{}/orthographic/znear",[new me(x.ANIMATIONTYPE_FLOAT,"minZ",F,()=>1)]);m("/cameras/{}/perspective/yfov",[new me(x.ANIMATIONTYPE_FLOAT,"fov",F,()=>1)]);m("/cameras/{}/perspective/zfar",[new me(x.ANIMATIONTYPE_FLOAT,"maxZ",F,()=>1)]);m("/cameras/{}/perspective/znear",[new me(x.ANIMATIONTYPE_FLOAT,"minZ",F,()=>1)]);m("/materials/{}/pbrMetallicRoughness/baseColorFactor",[new G(x.ANIMATIONTYPE_COLOR3,"albedoColor",fe,()=>4),new G(x.ANIMATIONTYPE_FLOAT,"alpha",ea,()=>4)]);m("/materials/{}/pbrMetallicRoughness/metallicFactor",[new G(x.ANIMATIONTYPE_FLOAT,"metallic",F,()=>1)]);m("/materials/{}/pbrMetallicRoughness/metallicFactor",[new G(x.ANIMATIONTYPE_FLOAT,"roughness",F,()=>1)]);const Zt=X("albedoTexture");m("/materials/{}/pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/scale",Zt.scale);m("/materials/{}/pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/offset",Zt.offset);m("/materials/{}/pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/rotation",Zt.rotation);const Jt=X("metallicTexture");m("//materials/{}/pbrMetallicRoughness/metallicRoughnessTexture/scale",Jt.scale);m("//materials/{}/pbrMetallicRoughness/metallicRoughnessTexture/offset",Jt.offset);m("//materials/{}/pbrMetallicRoughness/metallicRoughnessTexture/rotation",Jt.rotation);m("/materials/{}/emissiveFactor",[new G(x.ANIMATIONTYPE_COLOR3,"emissiveColor",fe,()=>3)]);const Qt=X("bumpTexture");m("/materials/{}/normalTexture/scale",[new G(x.ANIMATIONTYPE_FLOAT,"bumpTexture.level",F,()=>1)]);m("/materials/{}/normalTexture/extensions/KHR_texture_transform/scale",Qt.scale);m("/materials/{}/normalTexture/extensions/KHR_texture_transform/offset",Qt.offset);m("/materials/{}/normalTexture/extensions/KHR_texture_transform/rotation",Qt.rotation);m("/materials/{}/occlusionTexture/strength",[new G(x.ANIMATIONTYPE_FLOAT,"ambientTextureStrength",F,()=>1)]);const es=X("ambientTexture");m("/materials/{}/occlusionTexture/extensions/KHR_texture_transform/scale",es.scale);m("/materials/{}/occlusionTexture/extensions/KHR_texture_transform/offset",es.offset);m("/materials/{}/occlusionTexture/extensions/KHR_texture_transform/rotation",es.rotation);const ts=X("emissiveTexture");m("/materials/{}/emissiveTexture/extensions/KHR_texture_transform/scale",ts.scale);m("/materials/{}/emissiveTexture/extensions/KHR_texture_transform/offset",ts.offset);m("/materials/{}/emissiveTexture/extensions/KHR_texture_transform/rotation",ts.rotation);m("/materials/{}/extensions/KHR_materials_anisotropy/anisotropyStrength",[new G(x.ANIMATIONTYPE_FLOAT,"anisotropy.intensity",F,()=>1)]);m("/materials/{}/extensions/KHR_materials_anisotropy/anisotropyRotation",[new G(x.ANIMATIONTYPE_FLOAT,"anisotropy.angle",F,()=>1)]);const ss=X("anisotropy.texture");m("/materials/{}/extensions/KHR_materials_anisotropy/anisotropyTexture/extensions/KHR_texture_transform/scale",ss.scale);m("/materials/{}/extensions/KHR_materials_anisotropy/anisotropyTexture/extensions/KHR_texture_transform/offset",ss.offset);m("/materials/{}/extensions/KHR_materials_anisotropy/anisotropyTexture/extensions/KHR_texture_transform/rotation",ss.rotation);m("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatFactor",[new G(x.ANIMATIONTYPE_FLOAT,"clearCoat.intensity",F,()=>1)]);m("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessFactor",[new G(x.ANIMATIONTYPE_FLOAT,"clearCoat.roughness",F,()=>1)]);const ns=X("clearCoat.texture");m("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatTexture/extensions/KHR_texture_transform/scale",ns.scale);m("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatTexture/extensions/KHR_texture_transform/offset",ns.offset);m("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatTexture/extensions/KHR_texture_transform/rotation",ns.rotation);const rs=X("clearCoat.bumpTexture");m("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/scale",[new G(x.ANIMATIONTYPE_FLOAT,"clearCoat.bumpTexture.level",F,()=>1)]);m("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/extensions/KHR_texture_transform/scale",rs.scale);m("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/extensions/KHR_texture_transform/offset",rs.offset);m("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/extensions/KHR_texture_transform/rotation",rs.rotation);const as=X("clearCoat.textureRoughness");m("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessTexture/extensions/KHR_texture_transform/scale",as.scale);m("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessTexture/extensions/KHR_texture_transform/offset",as.offset);m("/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessTexture/extensions/KHR_texture_transform/rotation",as.rotation);m("/materials/{}/extensions/KHR_materials_dispersion/dispersionFactor",[new G(x.ANIMATIONTYPE_FLOAT,"subSurface.dispersion",F,()=>1)]);m("/materials/{}/extensions/KHR_materials_emissive_strength/emissiveStrength",[new G(x.ANIMATIONTYPE_FLOAT,"emissiveIntensity",F,()=>1)]);m("/materials/{}/extensions/KHR_materials_ior/ior",[new G(x.ANIMATIONTYPE_FLOAT,"indexOfRefraction",F,()=>1)]);m("/materials/{}/extensions/KHR_materials_iridescence/iridescenceFactor",[new G(x.ANIMATIONTYPE_FLOAT,"iridescence.intensity",F,()=>1)]);m("/materials/{}/extensions/KHR_materials_iridescence/iridescenceIor",[new G(x.ANIMATIONTYPE_FLOAT,"iridescence.indexOfRefraction",F,()=>1)]);m("/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessMinimum",[new G(x.ANIMATIONTYPE_FLOAT,"iridescence.minimumThickness",F,()=>1)]);m("/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessMaximum",[new G(x.ANIMATIONTYPE_FLOAT,"iridescence.maximumThickness",F,()=>1)]);const os=X("iridescence.texture");m("/materials/{}/extensions/KHR_materials_iridescence/iridescenceTexture/extensions/KHR_texture_transform/scale",os.scale);m("/materials/{}/extensions/KHR_materials_iridescence/iridescenceTexture/extensions/KHR_texture_transform/offset",os.offset);m("/materials/{}/extensions/KHR_materials_iridescence/iridescenceTexture/extensions/KHR_texture_transform/rotation",os.rotation);const is=X("iridescence.thicknessTexture");m("/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessTexture/extensions/KHR_texture_transform/scale",is.scale);m("/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessTexture/extensions/KHR_texture_transform/offset",is.offset);m("/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessTexture/extensions/KHR_texture_transform/rotation",is.rotation);m("/materials/{}/extensions/KHR_materials_sheen/sheenColorFactor",[new G(x.ANIMATIONTYPE_COLOR3,"sheen.color",fe,()=>3)]);m("/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessFactor",[new G(x.ANIMATIONTYPE_FLOAT,"sheen.roughness",F,()=>1)]);const ls=X("sheen.texture");m("/materials/{}/extensions/KHR_materials_sheen/sheenColorTexture/extensions/KHR_texture_transform/scale",ls.scale);m("/materials/{}/extensions/KHR_materials_sheen/sheenColorTexture/extensions/KHR_texture_transform/offset",ls.offset);m("/materials/{}/extensions/KHR_materials_sheen/sheenColorTexture/extensions/KHR_texture_transform/rotation",ls.rotation);const us=X("sheen.textureRoughness");m("/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessTexture/extensions/KHR_texture_transform/scale",us.scale);m("/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessTexture/extensions/KHR_texture_transform/offset",us.offset);m("/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessTexture/extensions/KHR_texture_transform/rotation",us.rotation);m("/materials/{}/extensions/KHR_materials_specular/specularFactor",[new G(x.ANIMATIONTYPE_FLOAT,"metallicF0Factor",F,()=>1)]);m("/materials/{}/extensions/KHR_materials_specular/specularColorFactor",[new G(x.ANIMATIONTYPE_COLOR3,"metallicReflectanceColor",fe,()=>3)]);const cs=X("metallicReflectanceTexture");m("/materials/{}/extensions/KHR_materials_specular/specularTexture/extensions/KHR_texture_transform/scale",cs.scale);m("/materials/{}/extensions/KHR_materials_specular/specularTexture/extensions/KHR_texture_transform/offset",cs.offset);m("/materials/{}/extensions/KHR_materials_specular/specularTexture/extensions/KHR_texture_transform/rotation",cs.rotation);const hs=X("reflectanceTexture");m("/materials/{}/extensions/KHR_materials_specular/specularColorTexture/extensions/KHR_texture_transform/scale",hs.scale);m("/materials/{}/extensions/KHR_materials_specular/specularColorTexture/extensions/KHR_texture_transform/offset",hs.offset);m("/materials/{}/extensions/KHR_materials_specular/specularColorTexture/extensions/KHR_texture_transform/rotation",hs.rotation);m("/materials/{}/extensions/KHR_materials_transmission/transmissionFactor",[new G(x.ANIMATIONTYPE_FLOAT,"subSurface.refractionIntensity",F,()=>1)]);const ds=X("subSurface.refractionIntensityTexture");m("/materials/{}/extensions/KHR_materials_transmission/transmissionTexture/extensions/KHR_texture_transform/scale",ds.scale);m("/materials/{}/extensions/KHR_materials_transmission/transmissionTexture/extensions/KHR_texture_transform/offset",ds.offset);m("/materials/{}/extensions/KHR_materials_transmission/transmissionTexture/extensions/KHR_texture_transform/rotation",ds.rotation);m("/materials/{}/extensions/KHR_materials_volume/attenuationColor",[new G(x.ANIMATIONTYPE_COLOR3,"subSurface.tintColor",fe,()=>3)]);m("/materials/{}/extensions/KHR_materials_volume/attenuationDistance",[new G(x.ANIMATIONTYPE_FLOAT,"subSurface.tintColorAtDistance",F,()=>1)]);m("/materials/{}/extensions/KHR_materials_volume/thicknessFactor",[new G(x.ANIMATIONTYPE_FLOAT,"subSurface.maximumThickness",F,()=>1)]);const ms=X("subSurface.thicknessTexture");m("/materials/{}/extensions/KHR_materials_volume/thicknessTexture/extensions/KHR_texture_transform/scale",ms.scale);m("/materials/{}/extensions/KHR_materials_volume/thicknessTexture/extensions/KHR_texture_transform/offset",ms.offset);m("/materials/{}/extensions/KHR_materials_volume/thicknessTexture/extensions/KHR_texture_transform/rotation",ms.rotation);m("/materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionFactor",[new G(x.ANIMATIONTYPE_FLOAT,"subSurface.translucencyIntensity",F,()=>1)]);const fs=X("subSurface.translucencyIntensityTexture");m("materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionTexture/extensions/KHR_texture_transform/scale",fs.scale);m("materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionTexture/extensions/KHR_texture_transform/offset",fs.offset);m("materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionTexture/extensions/KHR_texture_transform/rotation",fs.rotation);m("/materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorFactor",[new G(x.ANIMATIONTYPE_COLOR3,"subSurface.translucencyColor",fe,()=>3)]);const _s=X("subSurface.translucencyColorTexture");m("materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorTexture/extensions/KHR_texture_transform/scale",_s.scale);m("materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorTexture/extensions/KHR_texture_transform/offset",_s.offset);m("materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorTexture/extensions/KHR_texture_transform/rotation",_s.rotation);m("/extensions/KHR_lights_punctual/lights/{}/color",[new ue(x.ANIMATIONTYPE_COLOR3,"diffuse",fe,()=>3)]);m("/extensions/KHR_lights_punctual/lights/{}/intensity",[new ue(x.ANIMATIONTYPE_FLOAT,"intensity",F,()=>1)]);m("/extensions/KHR_lights_punctual/lights/{}/range",[new ue(x.ANIMATIONTYPE_FLOAT,"range",F,()=>1)]);m("/extensions/KHR_lights_punctual/lights/{}/spot/innerConeAngle",[new ue(x.ANIMATIONTYPE_FLOAT,"innerAngle",En,()=>1)]);m("/extensions/KHR_lights_punctual/lights/{}/spot/outerConeAngle",[new ue(x.ANIMATIONTYPE_FLOAT,"angle",En,()=>1)]);m("/extensions/EXT_lights_area/lights/{}/color",[new ue(x.ANIMATIONTYPE_COLOR3,"diffuse",fe,()=>3)]);m("/extensions/EXT_lights_area/lights/{}/intensity",[new ue(x.ANIMATIONTYPE_FLOAT,"intensity",F,()=>1)]);m("/extensions/EXT_lights_area/lights/{}/size",[new ue(x.ANIMATIONTYPE_FLOAT,"radius",F,()=>1)]);m("/extensions/EXT_lights_area/lights/{}/rect/aspect",[new ue(x.ANIMATIONTYPE_FLOAT,"radius",F,()=>1)]);m("/nodes/{}/extensions/EXT_lights_ies/color",[new ue(x.ANIMATIONTYPE_COLOR3,"diffuse",fe,()=>3)]);m("/nodes/{}/extensions/EXT_lights_ies/multiplier",[new ue(x.ANIMATIONTYPE_FLOAT,"intensity",F,()=>1)]);m("/nodes/{}/extensions/KHR_node_visibility/visible",[new ta(x.ANIMATIONTYPE_FLOAT,"isVisible",F,()=>1)]);const Tt="KHR_animation_pointer";class Mn{constructor(e){this.name=Tt,this._loader=e,this._pathToObjectConverter=Ut(this._loader.gltf)}get enabled(){return this._loader.isExtensionUsed(Tt)}dispose(){this._loader=null,delete this._pathToObjectConverter}_loadAnimationChannelAsync(e,t,s,r,a){const o=r.target.extensions?.KHR_animation_pointer;if(!o||!this._pathToObjectConverter)return null;r.target.path!=="pointer"&&R.Warn(`${e}/target/path: Value (${r.target.path}) must be (pointer) when using the ${this.name} extension`),r.target.node!=null&&R.Warn(`${e}/target/node: Value (${r.target.node}) must not be present when using the ${this.name} extension`);const i=`${e}/extensions/${this.name}`,l=o.pointer;if(!l)throw new Error(`${i}: Pointer is missing`);try{const u=this._pathToObjectConverter.convert(l);if(!u.info.interpolation)throw new Error(`${i}/pointer: Interpolation is missing`);return this._loader._loadAnimationChannelFromTargetInfoAsync(e,t,s,r,{object:u.object,info:u.info.interpolation},a)}catch{return R.Warn(`${i}/pointer: Invalid pointer (${l}) skipped`),null}}}L(Tt);P(Tt,!0,n=>new Mn(n));const At="MSFT_audio_emitter";class On{constructor(e){this.name=At,this._loader=e,this.enabled=this._loader.isExtensionUsed(At)}dispose(){this._loader=null,this._clips=null,this._emitters=null}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._clips=t.clips,this._emitters=t.emitters,g.Assign(this._clips),g.Assign(this._emitters)}}loadSceneAsync(e,t){return b.LoadExtensionAsync(e,t,this.name,async(s,r)=>{const a=new Array;a.push(this._loader.loadSceneAsync(e,t));for(const o of r.emitters){const i=g.Get(`${s}/emitters`,this._emitters,o);if(i.refDistance!=null||i.maxDistance!=null||i.rolloffFactor!=null||i.distanceModel!=null||i.innerAngle!=null||i.outerAngle!=null)throw new Error(`${s}: Direction or Distance properties are not allowed on emitters attached to a scene`);a.push(this._loadEmitterAsync(`${s}/emitters/${i.index}`,i))}await Promise.all(a)})}loadNodeAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{const o=new Array,i=await this._loader.loadNodeAsync(r,t,l=>{for(const u of a.emitters){const c=g.Get(`${r}/emitters`,this._emitters,u);o.push(this._loadEmitterAsync(`${r}/emitters/${c.index}`,c).then(()=>{for(const h of c._babylonSounds)h.attachToMesh(l),(c.innerAngle!=null||c.outerAngle!=null)&&(h.setLocalDirectionToMesh(w.Forward()),h.setDirectionalCone(2*D.ToDegrees(c.innerAngle==null?Math.PI:c.innerAngle),2*D.ToDegrees(c.outerAngle==null?Math.PI:c.outerAngle),0))}))}s(l)});return await Promise.all(o),i})}loadAnimationAsync(e,t){return b.LoadExtensionAsync(e,t,this.name,async(s,r)=>{const a=await this._loader.loadAnimationAsync(e,t),o=new Array;g.Assign(r.events);for(const i of r.events)o.push(this._loadAnimationEventAsync(`${s}/events/${i.index}`,e,t,i,a));return await Promise.all(o),a})}_loadClipAsync(e,t){if(t._objectURL)return t._objectURL;let s;if(t.uri)s=this._loader.loadUriAsync(e,t,t.uri);else{const r=g.Get(`${e}/bufferView`,this._loader.gltf.bufferViews,t.bufferView);s=this._loader.loadBufferViewAsync(`/bufferViews/${r.index}`,r)}return t._objectURL=s.then(r=>{const a=Fs(r);return URL.createObjectURL(new Blob([a],{type:t.mimeType}))}),t._objectURL}_loadEmitterAsync(e,t){if(t._babylonSounds=t._babylonSounds||[],!t._babylonData){const s=new Array,r=t.name||`emitter${t.index}`,a={loop:!1,autoplay:!1,volume:t.volume==null?1:t.volume};for(let i=0;i<t.clips.length;i++){const l=`/extensions/${this.name}/clips`,u=g.Get(l,this._clips,t.clips[i].clip);s.push(this._loadClipAsync(`${l}/${t.clips[i].clip}`,u).then(c=>{const h=t._babylonSounds[i]=new hr(r,c,this._loader.babylonScene,null,a);h.refDistance=t.refDistance||1,h.maxDistance=t.maxDistance||256,h.rolloffFactor=t.rolloffFactor||1,h.distanceModel=t.distanceModel||"exponential"}))}const o=Promise.all(s).then(()=>{const i=t.clips.map(u=>u.weight||1),l=new dr(t.loop||!1,t._babylonSounds,i);t.innerAngle&&(l.directionalConeInnerAngle=2*D.ToDegrees(t.innerAngle)),t.outerAngle&&(l.directionalConeOuterAngle=2*D.ToDegrees(t.outerAngle)),t.volume&&(l.volume=t.volume),t._babylonData.sound=l});t._babylonData={loaded:o}}return t._babylonData.loaded}_getEventAction(e,t,s,r,a){switch(s){case"play":return o=>{const i=(a||0)+(o-r);t.play(i)};case"stop":return()=>{t.stop()};case"pause":return()=>{t.pause()};default:throw new Error(`${e}: Unsupported action ${s}`)}}_loadAnimationEventAsync(e,t,s,r,a){if(a.targetedAnimations.length==0)return Promise.resolve();const o=a.targetedAnimations[0],i=r.emitter,l=g.Get(`/extensions/${this.name}/emitters`,this._emitters,i);return this._loadEmitterAsync(e,l).then(()=>{const u=l._babylonData.sound;if(u){const c=new mr(r.time,this._getEventAction(e,u,r.action,r.time,r.startOffset));o.animation.addEvent(c),a.onAnimationGroupEndObservable.add(()=>{u.stop()}),a.onAnimationGroupPauseObservable.add(()=>{u.pause()})}})}}L(At);P(At,!0,n=>new On(n));const Oe="MSFT_lod";class In{constructor(e){this.name=Oe,this.order=100,this.maxLODsToLoad=10,this.onNodeLODsLoadedObservable=new ee,this.onMaterialLODsLoadedObservable=new ee,this._bufferLODs=new Array,this._nodeIndexLOD=null,this._nodeSignalLODs=new Array,this._nodePromiseLODs=new Array,this._nodeBufferLODs=new Array,this._materialIndexLOD=null,this._materialSignalLODs=new Array,this._materialPromiseLODs=new Array,this._materialBufferLODs=new Array,this._loader=e,this.maxLODsToLoad=this._loader.parent.extensionOptions[Oe]?.maxLODsToLoad??this.maxLODsToLoad,this.enabled=this._loader.isExtensionUsed(Oe)}dispose(){this._loader=null,this._nodeIndexLOD=null,this._nodeSignalLODs.length=0,this._nodePromiseLODs.length=0,this._nodeBufferLODs.length=0,this._materialIndexLOD=null,this._materialSignalLODs.length=0,this._materialPromiseLODs.length=0,this._materialBufferLODs.length=0,this.onMaterialLODsLoadedObservable.clear(),this.onNodeLODsLoadedObservable.clear()}onReady(){for(let e=0;e<this._nodePromiseLODs.length;e++){const t=Promise.all(this._nodePromiseLODs[e]).then(()=>{e!==0&&(this._loader.endPerformanceCounter(`Node LOD ${e}`),this._loader.log(`Loaded node LOD ${e}`)),this.onNodeLODsLoadedObservable.notifyObservers(e),e!==this._nodePromiseLODs.length-1&&(this._loader.startPerformanceCounter(`Node LOD ${e+1}`),this._loadBufferLOD(this._nodeBufferLODs,e+1),this._nodeSignalLODs[e]&&this._nodeSignalLODs[e].resolve())});this._loader._completePromises.push(t)}for(let e=0;e<this._materialPromiseLODs.length;e++){const t=Promise.all(this._materialPromiseLODs[e]).then(()=>{e!==0&&(this._loader.endPerformanceCounter(`Material LOD ${e}`),this._loader.log(`Loaded material LOD ${e}`)),this.onMaterialLODsLoadedObservable.notifyObservers(e),e!==this._materialPromiseLODs.length-1&&(this._loader.startPerformanceCounter(`Material LOD ${e+1}`),this._loadBufferLOD(this._materialBufferLODs,e+1),this._materialSignalLODs[e]&&this._materialSignalLODs[e].resolve())});this._loader._completePromises.push(t)}}loadSceneAsync(e,t){const s=this._loader.loadSceneAsync(e,t);return this._loadBufferLOD(this._bufferLODs,0),s}loadNodeAsync(e,t,s){return b.LoadExtensionAsync(e,t,this.name,async(r,a)=>{let o;const i=this._getLODs(r,t,this._loader.gltf.nodes,a.ids);this._loader.logOpen(`${r}`);for(let l=0;l<i.length;l++){const u=i[l];l!==0&&(this._nodeIndexLOD=l,this._nodeSignalLODs[l]=this._nodeSignalLODs[l]||new Ee);const c=d=>{s(d),d.setEnabled(!1)},h=this._loader.loadNodeAsync(`/nodes/${u.index}`,u,c).then(d=>{if(l!==0){const f=i[l-1];f._babylonTransformNode&&(this._disposeTransformNode(f._babylonTransformNode),delete f._babylonTransformNode)}return d.setEnabled(!0),d});this._nodePromiseLODs[l]=this._nodePromiseLODs[l]||[],l===0?o=h:(this._nodeIndexLOD=null,this._nodePromiseLODs[l].push(h))}return this._loader.logClose(),await o})}_loadMaterialAsync(e,t,s,r,a){return this._nodeIndexLOD?null:b.LoadExtensionAsync(e,t,this.name,async(o,i)=>{let l;const u=this._getLODs(o,t,this._loader.gltf.materials,i.ids);this._loader.logOpen(`${o}`);for(let c=0;c<u.length;c++){const h=u[c];c!==0&&(this._materialIndexLOD=c);const d=this._loader._loadMaterialAsync(`/materials/${h.index}`,h,s,r,f=>{c===0&&a(f)}).then(f=>{if(c!==0){a(f);const p=u[c-1]._data;p[r]&&(this._disposeMaterials([p[r].babylonMaterial]),delete p[r])}return f});this._materialPromiseLODs[c]=this._materialPromiseLODs[c]||[],c===0?l=d:(this._materialIndexLOD=null,this._materialPromiseLODs[c].push(d))}return this._loader.logClose(),await l})}_loadUriAsync(e,t,s){if(this._nodeIndexLOD!==null){this._loader.log("deferred");const r=this._nodeIndexLOD-1;return this._nodeSignalLODs[r]=this._nodeSignalLODs[r]||new Ee,this._nodeSignalLODs[this._nodeIndexLOD-1].promise.then(async()=>await this._loader.loadUriAsync(e,t,s))}else if(this._materialIndexLOD!==null){this._loader.log("deferred");const r=this._materialIndexLOD-1;return this._materialSignalLODs[r]=this._materialSignalLODs[r]||new Ee,this._materialSignalLODs[r].promise.then(async()=>await this._loader.loadUriAsync(e,t,s))}return null}loadBufferAsync(e,t,s,r){if(this._loader.parent.useRangeRequests&&!t.uri){if(!this._loader.bin)throw new Error(`${e}: Uri is missing or the binary glTF is missing its binary chunk`);const a=async(o,i)=>{const l=s,u=l+r-1;let c=o[i];return c?(c.start=Math.min(c.start,l),c.end=Math.max(c.end,u)):(c={start:l,end:u,loaded:new Ee},o[i]=c),await c.loaded.promise.then(h=>new Uint8Array(h.buffer,h.byteOffset+s-c.start,r))};return this._loader.log("deferred"),this._nodeIndexLOD!==null?a(this._nodeBufferLODs,this._nodeIndexLOD):this._materialIndexLOD!==null?a(this._materialBufferLODs,this._materialIndexLOD):a(this._bufferLODs,0)}return null}_loadBufferLOD(e,t){const s=e[t];s&&(this._loader.log(`Loading buffer range [${s.start}-${s.end}]`),this._loader.bin.readAsync(s.start,s.end-s.start+1).then(r=>{s.loaded.resolve(r)},r=>{s.loaded.reject(r)}))}_getLODs(e,t,s,r){if(this.maxLODsToLoad<=0)throw new Error("maxLODsToLoad must be greater than zero");const a=[];for(let o=r.length-1;o>=0;o--)if(a.push(g.Get(`${e}/ids/${r[o]}`,s,r[o])),a.length===this.maxLODsToLoad)return a;return a.push(t),a}_disposeTransformNode(e){const t=[],s=e.material;s&&t.push(s);for(const a of e.getChildMeshes())a.material&&t.push(a.material);e.dispose();const r=t.filter(a=>this._loader.babylonScene.meshes.every(o=>o.material!=a));this._disposeMaterials(r)}_disposeMaterials(e){const t={};for(const s of e){for(const r of s.getActiveTextures())t[r.uniqueId]=r;s.dispose()}for(const s in t)for(const r of this._loader.babylonScene.materials)r.hasTexture(t[s])&&delete t[s];for(const s in t)t[s].dispose()}}L(Oe);P(Oe,!0,n=>new In(n));const xt="MSFT_minecraftMesh";class Nn{constructor(e){this.name=xt,this._loader=e,this.enabled=this._loader.isExtensionUsed(xt)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtraAsync(e,t,this.name,async(r,a)=>{if(a){if(!this._loader._pbrMaterialImpl)throw new Error(`${r}: Material type not supported`);const o=this._loader.loadMaterialPropertiesAsync(e,t,s);return s.needAlphaBlending()&&(s.forceDepthWrite=!0,s.separateCullingPass=!0),s.backFaceCulling=s.forceDepthWrite,s.twoSidedLighting=!0,await o}})}}L(xt);P(xt,!0,n=>new Nn(n));const Ct="MSFT_sRGBFactors";class Sn{constructor(e){this.name=Ct,this._loader=e,this.enabled=this._loader.isExtensionUsed(Ct)}dispose(){this._loader=null}loadMaterialPropertiesAsync(e,t,s){return b.LoadExtraAsync(e,t,this.name,async(r,a)=>{if(a){const o=this._loader._getOrCreateMaterialAdapter(s),i=this._loader.loadMaterialPropertiesAsync(e,t,s),l=s.getScene().getEngine().useExactSrgbConversions;return o.baseColorTexture||o.baseColor.toLinearSpaceToRef(o.baseColor,l),o.specularColorTexture||o.specularColor.toLinearSpaceToRef(o.specularColor,l),await i}})}}L(Ct);P(Ct,!0,n=>new Sn(n));function Ft(n){const[e,t]=n.split(":");return ps({op:e,extension:t})}function ps(n,e=!0){const t=n.extension?$e[n.extension]?.[n.op]:Rn[n.op];if(!t&&(R.Warn(`No mapping found for operation ${n.op} and extension ${n.extension||"KHR_interactivity"}`),e)){const s={},r={flows:{}};if(n.inputValueSockets){s.values={};for(const a in n.inputValueSockets)s.values[a]={name:a}}return n.outputValueSockets&&(r.values={},Object.keys(n.outputValueSockets).forEach(a=>{r.values[a]={name:a}})),{blocks:[],inputs:s,outputs:r}}return t}function Mt(n,e,t){$e[e]||($e[e]={}),$e[e][n]=t}const $e={BABYLON:{"flow/log":{blocks:["FlowGraphConsoleLogBlock"],inputs:{values:{message:{name:"message"}}}}}},Rn={"event/onStart":{blocks:["FlowGraphSceneReadyEventBlock"],outputs:{flows:{out:{name:"done"}}}},"event/onTick":{blocks:["FlowGraphSceneTickEventBlock"],inputs:{},outputs:{values:{timeSinceLastTick:{name:"deltaTime",gltfType:"number"}},flows:{out:{name:"done"}}}},"event/send":{blocks:["FlowGraphSendCustomEventBlock"],extraProcessor(n,e,t,s,r){if(e.op!=="event/send"||!n.configuration||Object.keys(n.configuration).length!==1)throw new Error("Receive event should have a single configuration object, the event itself");const o=n.configuration.event.value?.[0];if(typeof o!="number")throw new Error("Event id should be a number");const i=s.arrays.events[o],l=r[0];return l.config||(l.config={}),l.config.eventId=i.eventId,l.config.eventData=i.eventData,r}},"event/receive":{blocks:["FlowGraphReceiveCustomEventBlock"],outputs:{flows:{out:{name:"done"}}},validation(n,e){if(!n.configuration)return R.Error("Receive event should have a configuration object"),{valid:!1,error:"Receive event should have a configuration object"};const t=n.configuration.event;if(!t)return R.Error("Receive event should have a single configuration object, the event itself"),{valid:!1,error:"Receive event should have a single configuration object, the event itself"};const s=t.value?.[0];return typeof s!="number"?(R.Error("Event id should be a number"),{valid:!1,error:"Event id should be a number"}):e.events?.[s]?{valid:!0}:(R.Error(`Event with id ${s} not found`),{valid:!1,error:`Event with id ${s} not found`})},extraProcessor(n,e,t,s,r){if(e.op!=="event/receive"||!n.configuration||Object.keys(n.configuration).length!==1)throw new Error("Receive event should have a single configuration object, the event itself");const o=n.configuration.event.value?.[0];if(typeof o!="number")throw new Error("Event id should be a number");const i=s.arrays.events[o],l=r[0];return l.config||(l.config={}),l.config.eventId=i.eventId,l.config.eventData=i.eventData,r}},"math/E":y("FlowGraphEBlock"),"math/Pi":y("FlowGraphPIBlock"),"math/Inf":y("FlowGraphInfBlock"),"math/NaN":y("FlowGraphNaNBlock"),"math/abs":y("FlowGraphAbsBlock"),"math/sign":y("FlowGraphSignBlock"),"math/trunc":y("FlowGraphTruncBlock"),"math/floor":y("FlowGraphFloorBlock"),"math/ceil":y("FlowGraphCeilBlock"),"math/round":{blocks:["FlowGraphRoundBlock"],configuration:{},inputs:{values:{a:{name:"a"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(n,e,t,s,r){var a;return(a=r[0]).config||(a.config={}),r[0].config.roundHalfAwayFromZero=!0,r}},"math/fract":y("FlowGraphFractBlock"),"math/neg":y("FlowGraphNegationBlock"),"math/add":y("FlowGraphAddBlock",["a","b"],!0),"math/sub":y("FlowGraphSubtractBlock",["a","b"],!0),"math/mul":{blocks:["FlowGraphMultiplyBlock"],extraProcessor(n,e,t,s,r){var a;(a=r[0]).config||(a.config={}),r[0].config.useMatrixPerComponent=!0,r[0].config.preventIntegerFloatArithmetic=!0;let o=-1;return Object.keys(n.values||{}).find(i=>n.values?.[i].type!==void 0?(o=n.values[i].type,!0):!1),o!==-1&&(r[0].config.type=s.arrays.types[o].flowGraphType),r},validation(n){return n.values?Ln(n):{valid:!0}}},"math/div":y("FlowGraphDivideBlock",["a","b"],!0),"math/rem":y("FlowGraphModuloBlock",["a","b"]),"math/min":y("FlowGraphMinBlock",["a","b"]),"math/max":y("FlowGraphMaxBlock",["a","b"]),"math/clamp":y("FlowGraphClampBlock",["a","b","c"]),"math/saturate":y("FlowGraphSaturateBlock"),"math/mix":y("FlowGraphMathInterpolationBlock",["a","b","c"]),"math/eq":y("FlowGraphEqualityBlock",["a","b"]),"math/lt":y("FlowGraphLessThanBlock",["a","b"]),"math/le":y("FlowGraphLessThanOrEqualBlock",["a","b"]),"math/gt":y("FlowGraphGreaterThanBlock",["a","b"]),"math/ge":y("FlowGraphGreaterThanOrEqualBlock",["a","b"]),"math/isNaN":y("FlowGraphIsNaNBlock"),"math/isInf":y("FlowGraphIsInfBlock"),"math/select":{blocks:["FlowGraphConditionalBlock"],inputs:{values:{condition:{name:"condition"},a:{name:"onTrue"},b:{name:"onFalse"}}},outputs:{values:{value:{name:"output"}}}},"math/random":{blocks:["FlowGraphRandomBlock"],outputs:{values:{value:{name:"value"}}}},"math/sin":y("FlowGraphSinBlock"),"math/cos":y("FlowGraphCosBlock"),"math/tan":y("FlowGraphTanBlock"),"math/asin":y("FlowGraphASinBlock"),"math/acos":y("FlowGraphACosBlock"),"math/atan":y("FlowGraphATanBlock"),"math/atan2":y("FlowGraphATan2Block",["a","b"]),"math/sinh":y("FlowGraphSinhBlock"),"math/cosh":y("FlowGraphCoshBlock"),"math/tanh":y("FlowGraphTanhBlock"),"math/asinh":y("FlowGraphASinhBlock"),"math/acosh":y("FlowGraphACoshBlock"),"math/atanh":y("FlowGraphATanhBlock"),"math/exp":y("FlowGraphExponentialBlock"),"math/log":y("FlowGraphLogBlock"),"math/log2":y("FlowGraphLog2Block"),"math/log10":y("FlowGraphLog10Block"),"math/sqrt":y("FlowGraphSquareRootBlock"),"math/cbrt":y("FlowGraphCubeRootBlock"),"math/pow":y("FlowGraphPowerBlock",["a","b"]),"math/length":y("FlowGraphLengthBlock"),"math/normalize":y("FlowGraphNormalizeBlock"),"math/dot":y("FlowGraphDotBlock",["a","b"]),"math/cross":y("FlowGraphCrossBlock",["a","b"]),"math/rotate2D":{blocks:["FlowGraphRotate2DBlock"],inputs:{values:{a:{name:"a"},angle:{name:"b"}}},outputs:{values:{value:{name:"value"}}}},"math/rotate3D":{blocks:["FlowGraphRotate3DBlock"],inputs:{values:{a:{name:"a"},rotation:{name:"b"}}},outputs:{values:{value:{name:"value"}}}},"math/transform":{blocks:["FlowGraphTransformVectorBlock"],inputs:{values:{a:{name:"a"},b:{name:"b"}}},outputs:{values:{value:{name:"value"}}}},"math/combine2":{blocks:["FlowGraphCombineVector2Block"],inputs:{values:{a:{name:"input_0",gltfType:"number"},b:{name:"input_1",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/combine3":{blocks:["FlowGraphCombineVector3Block"],inputs:{values:{a:{name:"input_0",gltfType:"number"},b:{name:"input_1",gltfType:"number"},c:{name:"input_2",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/combine4":{blocks:["FlowGraphCombineVector4Block"],inputs:{values:{a:{name:"input_0",gltfType:"number"},b:{name:"input_1",gltfType:"number"},c:{name:"input_2",gltfType:"number"},d:{name:"input_3",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/extract2":{blocks:["FlowGraphExtractVector2Block"],inputs:{values:{a:{name:"input",gltfType:"number"}}},outputs:{values:{0:{name:"output_0"},1:{name:"output_1"}}}},"math/extract3":{blocks:["FlowGraphExtractVector3Block"],inputs:{values:{a:{name:"input",gltfType:"number"}}},outputs:{values:{0:{name:"output_0"},1:{name:"output_1"},2:{name:"output_2"}}}},"math/extract4":{blocks:["FlowGraphExtractVector4Block"],inputs:{values:{a:{name:"input",gltfType:"number"}}},outputs:{values:{0:{name:"output_0"},1:{name:"output_1"},2:{name:"output_2"},3:{name:"output_3"}}}},"math/transpose":y("FlowGraphTransposeBlock"),"math/determinant":y("FlowGraphDeterminantBlock"),"math/inverse":y("FlowGraphInvertMatrixBlock"),"math/matMul":y("FlowGraphMatrixMultiplicationBlock",["a","b"]),"math/matCompose":{blocks:["FlowGraphMatrixCompose"],inputs:{values:{translation:{name:"position",gltfType:"float3"},rotation:{name:"rotationQuaternion",gltfType:"float4"},scale:{name:"scaling",gltfType:"float3"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(n,e,t,s,r,a){const o=r[0].dataInputs.find(i=>i.name==="rotationQuaternion");if(!o)throw new Error("Rotation quaternion input not found");return a._connectionValues[o.uniqueId]&&(a._connectionValues[o.uniqueId].type="Quaternion"),r}},"math/matDecompose":{blocks:["FlowGraphMatrixDecompose"],inputs:{values:{a:{name:"input",gltfType:"number"}}},outputs:{values:{translation:{name:"position"},rotation:{name:"rotationQuaternion"},scale:{name:"scaling"}}}},"math/quatConjugate":y("FlowGraphConjugateBlock",["a"]),"math/quatMul":{blocks:["FlowGraphMultiplyBlock"],inputs:{values:{a:{name:"a",gltfType:"vector4"},b:{name:"b",gltfType:"vector4"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(n,e,t,s,r){var a;return(a=r[0]).config||(a.config={}),r[0].config.type="Quaternion",r}},"math/quatAngleBetween":y("FlowGraphAngleBetweenBlock",["a","b"]),"math/quatFromAxisAngle":{blocks:["FlowGraphQuaternionFromAxisAngleBlock"],inputs:{values:{axis:{name:"a",gltfType:"float3"},angle:{name:"b",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}}},"math/quatToAxisAngle":y("FlowGraphAxisAngleFromQuaternionBlock",["a"]),"math/quatFromDirections":y("FlowGraphQuaternionFromDirectionsBlock",["a","b"]),"math/combine2x2":{blocks:["FlowGraphCombineMatrix2DBlock"],inputs:{values:{a:{name:"input_0",gltfType:"number"},b:{name:"input_1",gltfType:"number"},c:{name:"input_2",gltfType:"number"},d:{name:"input_3",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(n,e,t,s,r){var a;return(a=r[0]).config||(a.config={}),r[0].config.inputIsColumnMajor=!0,r}},"math/extract2x2":{blocks:["FlowGraphExtractMatrix2DBlock"],inputs:{values:{a:{name:"input",gltfType:"float2x2"}}},outputs:{values:{0:{name:"output_0"},1:{name:"output_1"},2:{name:"output_2"},3:{name:"output_3"}}}},"math/combine3x3":{blocks:["FlowGraphCombineMatrix3DBlock"],inputs:{values:{a:{name:"input_0",gltfType:"number"},b:{name:"input_1",gltfType:"number"},c:{name:"input_2",gltfType:"number"},d:{name:"input_3",gltfType:"number"},e:{name:"input_4",gltfType:"number"},f:{name:"input_5",gltfType:"number"},g:{name:"input_6",gltfType:"number"},h:{name:"input_7",gltfType:"number"},i:{name:"input_8",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(n,e,t,s,r){var a;return(a=r[0]).config||(a.config={}),r[0].config.inputIsColumnMajor=!0,r}},"math/extract3x3":{blocks:["FlowGraphExtractMatrix3DBlock"],inputs:{values:{a:{name:"input",gltfType:"float3x3"}}},outputs:{values:{0:{name:"output_0"},1:{name:"output_1"},2:{name:"output_2"},3:{name:"output_3"},4:{name:"output_4"},5:{name:"output_5"},6:{name:"output_6"},7:{name:"output_7"},8:{name:"output_8"}}}},"math/combine4x4":{blocks:["FlowGraphCombineMatrixBlock"],inputs:{values:{a:{name:"input_0",gltfType:"number"},b:{name:"input_1",gltfType:"number"},c:{name:"input_2",gltfType:"number"},d:{name:"input_3",gltfType:"number"},e:{name:"input_4",gltfType:"number"},f:{name:"input_5",gltfType:"number"},g:{name:"input_6",gltfType:"number"},h:{name:"input_7",gltfType:"number"},i:{name:"input_8",gltfType:"number"},j:{name:"input_9",gltfType:"number"},k:{name:"input_10",gltfType:"number"},l:{name:"input_11",gltfType:"number"},m:{name:"input_12",gltfType:"number"},n:{name:"input_13",gltfType:"number"},o:{name:"input_14",gltfType:"number"},p:{name:"input_15",gltfType:"number"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(n,e,t,s,r){var a;return(a=r[0]).config||(a.config={}),r[0].config.inputIsColumnMajor=!0,r}},"math/extract4x4":{blocks:["FlowGraphExtractMatrixBlock"],configuration:{},inputs:{values:{a:{name:"input",gltfType:"number"}}},outputs:{values:{0:{name:"output_0"},1:{name:"output_1"},2:{name:"output_2"},3:{name:"output_3"},4:{name:"output_4"},5:{name:"output_5"},6:{name:"output_6"},7:{name:"output_7"},8:{name:"output_8"},9:{name:"output_9"},10:{name:"output_10"},11:{name:"output_11"},12:{name:"output_12"},13:{name:"output_13"},14:{name:"output_14"},15:{name:"output_15"}}}},"math/not":{blocks:["FlowGraphBitwiseNotBlock"],inputs:{values:{a:{name:"a"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(n,e,t,s,r,a){var o;(o=r[0]).config||(o.config={});const i=r[0].dataInputs[0];return r[0].config.valueType=a._connectionValues[i.uniqueId]?.type??"FlowGraphInteger",r}},"math/and":{blocks:["FlowGraphBitwiseAndBlock"],inputs:{values:{a:{name:"a"},b:{name:"b"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(n,e,t,s,r,a){var o;(o=r[0]).config||(o.config={});const i=r[0].dataInputs[0],l=r[0].dataInputs[1];return r[0].config.valueType=a._connectionValues[i.uniqueId]?.type??a._connectionValues[l.uniqueId]?.type??"FlowGraphInteger",r}},"math/or":{blocks:["FlowGraphBitwiseOrBlock"],inputs:{values:{a:{name:"a"},b:{name:"b"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(n,e,t,s,r,a){var o;(o=r[0]).config||(o.config={});const i=r[0].dataInputs[0],l=r[0].dataInputs[1];return r[0].config.valueType=a._connectionValues[i.uniqueId]?.type??a._connectionValues[l.uniqueId]?.type??"FlowGraphInteger",r}},"math/xor":{blocks:["FlowGraphBitwiseXorBlock"],inputs:{values:{a:{name:"a"},b:{name:"b"}}},outputs:{values:{value:{name:"value"}}},extraProcessor(n,e,t,s,r,a){var o;(o=r[0]).config||(o.config={});const i=r[0].dataInputs[0],l=r[0].dataInputs[1];return r[0].config.valueType=a._connectionValues[i.uniqueId]?.type??a._connectionValues[l.uniqueId]?.type??"FlowGraphInteger",r}},"math/asr":y("FlowGraphBitwiseRightShiftBlock",["a","b"]),"math/lsl":y("FlowGraphBitwiseLeftShiftBlock",["a","b"]),"math/clz":y("FlowGraphLeadingZerosBlock"),"math/ctz":y("FlowGraphTrailingZerosBlock"),"math/popcnt":y("FlowGraphOneBitsCounterBlock"),"math/rad":y("FlowGraphDegToRadBlock"),"math/deg":y("FlowGraphRadToDegBlock"),"type/boolToInt":y("FlowGraphBooleanToInt"),"type/boolToFloat":y("FlowGraphBooleanToFloat"),"type/intToBool":y("FlowGraphIntToBoolean"),"type/intToFloat":y("FlowGraphIntToFloat"),"type/floatToInt":y("FlowGraphFloatToInt"),"type/floatToBool":y("FlowGraphFloatToBoolean"),"flow/sequence":{blocks:["FlowGraphSequenceBlock"],extraProcessor(n,e,t,s,r){const a=r[0];return a.config||(a.config={}),a.config.outputSignalCount=Object.keys(n.flows||[]).length,a.signalOutputs.forEach((o,i)=>{o.name="out_"+i}),r}},"flow/branch":{blocks:["FlowGraphBranchBlock"],outputs:{flows:{true:{name:"onTrue"},false:{name:"onFalse"}}}},"flow/switch":{blocks:["FlowGraphSwitchBlock"],configuration:{cases:{name:"cases",isArray:!0,inOptions:!0,defaultValue:[]}},inputs:{values:{selection:{name:"case"},default:{name:"default"}}},validation(n){const e=n.configuration?.cases;if(e&&e.value){if(!e.value.every(r=>typeof r=="number"&&/^-?\d+$/.test(r.toString())))return R.Warn("Switch cases should be integers. Using empty array instead."),e.value=[],{valid:!0};const s=new Set(e.value);e.value=Array.from(s)}return{valid:!0}},extraProcessor(n,e,t,s,r){if(e.op!=="flow/switch"||!n.flows||Object.keys(n.flows).length===0)throw new Error("Switch should have a single configuration object, the cases array");return r[0].signalOutputs.forEach(o=>{o.name!=="default"&&(o.name="out_"+o.name)}),r}},"flow/while":{blocks:["FlowGraphWhileLoopBlock"],outputs:{flows:{loopBody:{name:"executionFlow"}}}},"flow/for":{blocks:["FlowGraphForLoopBlock"],configuration:{initialIndex:{name:"initialIndex",gltfType:"number",inOptions:!0,defaultValue:0}},inputs:{values:{startIndex:{name:"startIndex",gltfType:"number"},endIndex:{name:"endIndex",gltfType:"number"}}},outputs:{values:{index:{name:"index"}},flows:{loopBody:{name:"executionFlow"}}},extraProcessor(n,e,t,s,r){const a=r[0];return a.config||(a.config={}),a.config.incrementIndexWhenLoopDone=!0,r}},"flow/doN":{blocks:["FlowGraphDoNBlock"],configuration:{},inputs:{values:{n:{name:"maxExecutions",gltfType:"number"}}},outputs:{values:{currentCount:{name:"executionCount"}}}},"flow/multiGate":{blocks:["FlowGraphMultiGateBlock"],configuration:{isRandom:{name:"isRandom",gltfType:"boolean",inOptions:!0,defaultValue:!1},isLoop:{name:"isLoop",gltfType:"boolean",inOptions:!0,defaultValue:!1}},extraProcessor(n,e,t,s,r){if(e.op!=="flow/multiGate"||!n.flows||Object.keys(n.flows).length===0)throw new Error("MultiGate should have a single configuration object, the number of output flows");const a=r[0];return a.config||(a.config={}),a.config.outputSignalCount=Object.keys(n.flows).length,a.signalOutputs.forEach((o,i)=>{o.name="out_"+i}),r}},"flow/waitAll":{blocks:["FlowGraphWaitAllBlock"],configuration:{inputFlows:{name:"inputSignalCount",gltfType:"number",inOptions:!0,defaultValue:0}},inputs:{flows:{reset:{name:"reset"},"[segment]":{name:"in_$1"}}},validation(n){return typeof n.configuration?.inputFlows?.value?.[0]!="number"&&(n.configuration=n.configuration||{inputFlows:{value:[0]}},n.configuration.inputFlows.value=[0]),{valid:!0}}},"flow/throttle":{blocks:["FlowGraphThrottleBlock"],outputs:{flows:{err:{name:"error"}}}},"flow/setDelay":{blocks:["FlowGraphSetDelayBlock"],outputs:{flows:{err:{name:"error"}}}},"flow/cancelDelay":{blocks:["FlowGraphCancelDelayBlock"]},"variable/get":{blocks:["FlowGraphGetVariableBlock"],validation(n){return n.configuration?.variable?.value?{valid:!0}:(R.Error("Variable get block should have a variable configuration"),{valid:!1,error:"Variable get block should have a variable configuration"})},configuration:{variable:{name:"variable",gltfType:"number",flowGraphType:"string",inOptions:!0,isVariable:!0,dataTransformer(n,e){return e.getVariableName(n)}}}},"variable/set":{blocks:["FlowGraphSetVariableBlock"],configuration:{variables:{name:"variables",gltfType:"number",flowGraphType:"string",inOptions:!0,isArray:!0,dataTransformer(n,e){return n.map(t=>e.getVariableName(t))}}},extraProcessor(n,e,t,s,r){return r[0].dataInputs.forEach(o=>{o.name=s.getVariableName(+o.name)}),r}},"variable/interpolate":{blocks:["FlowGraphInterpolationBlock","FlowGraphContextBlock","FlowGraphPlayAnimationBlock","FlowGraphBezierCurveEasing","FlowGraphGetVariableBlock"],configuration:{variable:{name:"propertyName",inOptions:!0,isVariable:!0,dataTransformer(n,e){return e.getVariableName(n)}},useSlerp:{name:"animationType",inOptions:!0,defaultValue:!1,dataTransformer(n){return n===!0?"Quaternion":void 0}}},inputs:{values:{value:{name:"value_1"},duration:{name:"duration_1",gltfType:"number"},p1:{name:"controlPoint1",toBlock:"FlowGraphBezierCurveEasing"},p2:{name:"controlPoint2",toBlock:"FlowGraphBezierCurveEasing"}},flows:{in:{name:"in",toBlock:"FlowGraphPlayAnimationBlock"}}},outputs:{flows:{err:{name:"error",toBlock:"FlowGraphPlayAnimationBlock"},out:{name:"out",toBlock:"FlowGraphPlayAnimationBlock"},done:{name:"done",toBlock:"FlowGraphPlayAnimationBlock"}}},interBlockConnectors:[{input:"object",output:"userVariables",inputBlockIndex:2,outputBlockIndex:1,isVariable:!0},{input:"animation",output:"animation",inputBlockIndex:2,outputBlockIndex:0,isVariable:!0},{input:"easingFunction",output:"easingFunction",inputBlockIndex:0,outputBlockIndex:3,isVariable:!0},{input:"value_0",output:"value",inputBlockIndex:0,outputBlockIndex:4,isVariable:!0}],extraProcessor(n,e,t,s,r){var a,o;const i=r[0],l=n.configuration?.variable.value?.[0];if(typeof l!="number")throw R.Error("Variable index is not defined for variable interpolation block"),new Error("Variable index is not defined for variable interpolation block");const u=s.arrays.staticVariables[l];typeof i.config?.animationType?.value>"u"&&(i.config||(i.config={}),(a=i.config).animationType||(a.animationType={}),i.config.animationType.value=fr(u.type));const c=r[4];return c.config||(c.config={}),(o=c.config).variable||(o.variable={}),c.config.variable.value=s.getVariableName(l),r}},"pointer/get":{blocks:["FlowGraphGetPropertyBlock","FlowGraphJsonPointerParserBlock"],configuration:{pointer:{name:"jsonPointer",toBlock:"FlowGraphJsonPointerParserBlock"}},inputs:{values:{"[segment]":{name:"$1",toBlock:"FlowGraphJsonPointerParserBlock"}}},interBlockConnectors:[{input:"object",output:"object",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"propertyName",output:"propertyName",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"customGetFunction",output:"getFunction",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0}],extraProcessor(n,e,t,s,r){return r.forEach(a=>{a.className==="FlowGraphJsonPointerParserBlock"&&(a.config||(a.config={}),a.config.outputValue=!0)}),r}},"pointer/set":{blocks:["FlowGraphSetPropertyBlock","FlowGraphJsonPointerParserBlock"],configuration:{pointer:{name:"jsonPointer",toBlock:"FlowGraphJsonPointerParserBlock"}},inputs:{values:{value:{name:"value"},"[segment]":{name:"$1",toBlock:"FlowGraphJsonPointerParserBlock"}}},outputs:{flows:{err:{name:"error"}}},interBlockConnectors:[{input:"object",output:"object",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"propertyName",output:"propertyName",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"customSetFunction",output:"setFunction",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0}],extraProcessor(n,e,t,s,r){return r.forEach(a=>{a.className==="FlowGraphJsonPointerParserBlock"&&(a.config||(a.config={}),a.config.outputValue=!0)}),r}},"pointer/interpolate":{blocks:["FlowGraphInterpolationBlock","FlowGraphJsonPointerParserBlock","FlowGraphPlayAnimationBlock","FlowGraphBezierCurveEasing"],configuration:{pointer:{name:"jsonPointer",toBlock:"FlowGraphJsonPointerParserBlock"}},inputs:{values:{value:{name:"value_1"},"[segment]":{name:"$1",toBlock:"FlowGraphJsonPointerParserBlock"},duration:{name:"duration_1",gltfType:"number"},p1:{name:"controlPoint1",toBlock:"FlowGraphBezierCurveEasing"},p2:{name:"controlPoint2",toBlock:"FlowGraphBezierCurveEasing"}},flows:{in:{name:"in",toBlock:"FlowGraphPlayAnimationBlock"}}},outputs:{flows:{err:{name:"error",toBlock:"FlowGraphPlayAnimationBlock"},out:{name:"out",toBlock:"FlowGraphPlayAnimationBlock"},done:{name:"done",toBlock:"FlowGraphPlayAnimationBlock"}}},interBlockConnectors:[{input:"object",output:"object",inputBlockIndex:2,outputBlockIndex:1,isVariable:!0},{input:"propertyName",output:"propertyName",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"customBuildAnimation",output:"generateAnimationsFunction",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"animation",output:"animation",inputBlockIndex:2,outputBlockIndex:0,isVariable:!0},{input:"easingFunction",output:"easingFunction",inputBlockIndex:0,outputBlockIndex:3,isVariable:!0},{input:"value_0",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0}],extraProcessor(n,e,t,s,r){return r.forEach(a=>{a.className==="FlowGraphJsonPointerParserBlock"?(a.config||(a.config={}),a.config.outputValue=!0):a.className==="FlowGraphInterpolationBlock"&&(a.config||(a.config={}),Object.keys(n.values||[]).forEach(o=>{const i=n.values?.[o];if(o==="value"&&i){const l=i.type;l!==void 0&&(a.config.animationType=s.arrays.types[l].flowGraphType)}}))}),r}},"animation/start":{blocks:["FlowGraphPlayAnimationBlock","FlowGraphArrayIndexBlock","KHR_interactivity/FlowGraphGLTFDataProvider"],inputs:{values:{animation:{name:"index",gltfType:"number",toBlock:"FlowGraphArrayIndexBlock"},speed:{name:"speed",gltfType:"number"},startTime:{name:"from",gltfType:"number",dataTransformer:(n,e)=>[n[0]*e._animationTargetFps]},endTime:{name:"to",gltfType:"number",dataTransformer:(n,e)=>[n[0]*e._animationTargetFps]}}},outputs:{flows:{err:{name:"error"}}},interBlockConnectors:[{input:"animationGroup",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"animationGroups",inputBlockIndex:1,outputBlockIndex:2,isVariable:!0}],extraProcessor(n,e,t,s,r,a,o){const i=r[r.length-1];return i.config||(i.config={}),i.config.glTF=o,r}},"animation/stop":{blocks:["FlowGraphStopAnimationBlock","FlowGraphArrayIndexBlock","KHR_interactivity/FlowGraphGLTFDataProvider"],inputs:{values:{animation:{name:"index",gltfType:"number",toBlock:"FlowGraphArrayIndexBlock"}}},outputs:{flows:{err:{name:"error"}}},interBlockConnectors:[{input:"animationGroup",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"animationGroups",inputBlockIndex:1,outputBlockIndex:2,isVariable:!0}],extraProcessor(n,e,t,s,r,a,o){const i=r[r.length-1];return i.config||(i.config={}),i.config.glTF=o,r}},"animation/stopAt":{blocks:["FlowGraphStopAnimationBlock","FlowGraphArrayIndexBlock","KHR_interactivity/FlowGraphGLTFDataProvider"],configuration:{},inputs:{values:{animation:{name:"index",gltfType:"number",toBlock:"FlowGraphArrayIndexBlock"},stopTime:{name:"stopAtFrame",gltfType:"number",dataTransformer:(n,e)=>[n[0]*e._animationTargetFps]}}},outputs:{flows:{err:{name:"error"}}},interBlockConnectors:[{input:"animationGroup",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"animationGroups",inputBlockIndex:1,outputBlockIndex:2,isVariable:!0}],extraProcessor(n,e,t,s,r,a,o){const i=r[r.length-1];return i.config||(i.config={}),i.config.glTF=o,r}},"math/switch":{blocks:["FlowGraphDataSwitchBlock"],configuration:{cases:{name:"cases",isArray:!0,inOptions:!0,defaultValue:[]}},inputs:{values:{selection:{name:"case"}}},validation(n){const e=n.configuration?.cases;if(e&&e.value){if(!e.value.every(r=>typeof r=="number"&&/^-?\d+$/.test(r.toString())))return R.Warn("Switch cases should be integers. Using empty array instead."),e.value=[],{valid:!0};const s=new Set(e.value);e.value=Array.from(s)}return{valid:!0}},extraProcessor(n,e,t,s,r){const a=r[0];return a.dataInputs.forEach(o=>{o.name!=="default"&&o.name!=="case"&&(o.name="in_"+o.name)}),a.config||(a.config={}),a.config.treatCasesAsIntegers=!0,r}},"debug/log":{blocks:["FlowGraphConsoleLogBlock"],configuration:{message:{name:"messageTemplate",inOptions:!0}}}};function y(n,e=["a"],t){return{blocks:[n],inputs:{values:e.reduce((s,r)=>(s[r]={name:r},s),{})},outputs:{values:{value:{name:"value"}}},extraProcessor(s,r,a,o,i){var l;if(t){(l=i[0]).config||(l.config={}),i[0].config.preventIntegerFloatArithmetic=!0;let u=-1;Object.keys(s.values||{}).find(c=>s.values?.[c].type!==void 0?(u=s.values[c].type,!0):!1),u!==-1&&(i[0].config.type=o.arrays.types[u].flowGraphType)}return i},validation(s){return t?Ln(s):{valid:!0}}}}function Ln(n){if(n.values){const e=Object.keys(n.values).map(s=>n.values[s].type).filter(s=>s!==void 0);if(!e.every(s=>s===e[0]))return{valid:!1,error:"All inputs must be of the same type"}}return{valid:!0}}function sa(){return Object.keys(Rn)}const Pn={float:{length:1,flowGraphType:"number",elementType:"number"},bool:{length:1,flowGraphType:"boolean",elementType:"boolean"},float2:{length:2,flowGraphType:"Vector2",elementType:"number"},float3:{length:3,flowGraphType:"Vector3",elementType:"number"},float4:{length:4,flowGraphType:"Vector4",elementType:"number"},float4x4:{length:16,flowGraphType:"Matrix",elementType:"number"},float2x2:{length:4,flowGraphType:"Matrix2D",elementType:"number"},float3x3:{length:9,flowGraphType:"Matrix3D",elementType:"number"},int:{length:1,flowGraphType:"FlowGraphInteger",elementType:"number"}};class kn{constructor(e,t,s=60){this._interactivityGraph=e,this._gltf=t,this._animationTargetFps=s,this._types=[],this._mappings=[],this._staticVariables=[],this._events=[],this._internalEventsCounter=0,this._nodes=[],this._parseTypes(),this._parseDeclarations(),this._parseVariables(),this._parseEvents(),this._parseNodes()}get arrays(){return{types:this._types,mappings:this._mappings,staticVariables:this._staticVariables,events:this._events,nodes:this._nodes}}_parseTypes(){if(this._interactivityGraph.types)for(const e of this._interactivityGraph.types)this._types.push(Pn[e.signature])}_parseDeclarations(){if(this._interactivityGraph.declarations)for(const e of this._interactivityGraph.declarations){const t=ps(e);if(!t)throw R.Error(["No mapping found for declaration",e]),new Error("Error parsing declarations");this._mappings.push({flowGraphMapping:t,fullOperationName:e.extension?e.op+":"+e.extension:e.op})}}_parseVariables(){if(this._interactivityGraph.variables)for(const e of this._interactivityGraph.variables){const t=this._parseVariable(e);this._staticVariables.push(t)}}_parseVariable(e,t){const s=this._types[e.type];if(!s)throw R.Error(["No type found for variable",e]),new Error("Error parsing variables");if(e.value&&e.value.length!==s.length)throw R.Error(["Invalid value length for variable",e,s]),new Error("Error parsing variables");const r=e.value||[];if(!r.length)switch(s.flowGraphType){case"boolean":r.push(!1);break;case"FlowGraphInteger":r.push(0);break;case"number":r.push(NaN);break;case"Vector2":r.push(NaN,NaN);break;case"Vector3":r.push(NaN,NaN,NaN);break;case"Vector4":case"Matrix2D":case"Quaternion":r.fill(NaN,0,4);break;case"Matrix":r.fill(NaN,0,16);break;case"Matrix3D":r.fill(NaN,0,9);break}return s.elementType==="number"&&typeof r[0]=="string"&&(r[0]=parseFloat(r[0])),{type:s.flowGraphType,value:t?t(r,this):r}}_parseEvents(){if(this._interactivityGraph.events)for(const e of this._interactivityGraph.events){const t={eventId:e.id||"internalEvent_"+this._internalEventsCounter++};e.values&&(t.eventData=Object.keys(e.values).map(s=>{const r=e.values?.[s];if(!r)throw R.Error(["No value found for event key",s]),new Error("Error parsing events");const a=this._types[r.type];if(!a)throw R.Error(["No type found for event value",r]),new Error("Error parsing events");const o=typeof r.value<"u"?this._parseVariable(r):void 0;return{id:s,type:a.flowGraphType,eventData:!0,value:o}})),this._events.push(t)}}_parseNodes(){if(this._interactivityGraph.nodes)for(const e of this._interactivityGraph.nodes){if(typeof e.declaration!="number")throw R.Error(["No declaration found for node",e]),new Error("Error parsing nodes");const t=this._mappings[e.declaration];if(!t)throw R.Error(["No mapping found for node",e]),new Error("Error parsing nodes");if(t.flowGraphMapping.validation){const r=t.flowGraphMapping.validation(e,this._interactivityGraph,this._gltf);if(!r.valid)throw new Error(`Error validating interactivity node ${this._interactivityGraph.declarations?.[e.declaration].op} - ${r.error}`)}const s=[];for(const r of t.flowGraphMapping.blocks){const a=this._getEmptyBlock(r,t.fullOperationName);this._parseNodeConfiguration(e,a,t.flowGraphMapping,r),s.push(a)}this._nodes.push({blocks:s,fullOperationName:t.fullOperationName})}}_getEmptyBlock(e,t){return{uniqueId:Ot(),className:e,dataInputs:[],dataOutputs:[],signalInputs:[],signalOutputs:[],config:{},type:t,metadata:{}}}_parseNodeConfiguration(e,t,s,r){const a=e.configuration;if(a)for(const o in a){const i=a[o];if(!i)throw new Error("Error parsing node configuration");const l=s.configuration?.[o];if(l&&l.toBlock?l.toBlock===r:s.blocks.indexOf(r)===0){let c=l?.defaultValue;i?.value&&(c=i.value),l?.isArray||(c.length!==1&&R.Warn(`Invalid non-array value length: ${c.length}`),c=c[0]),l?.dataTransformer&&(c=l.dataTransformer(c,this)),c!==void 0&&(t.config[l?.name||o]={value:c})}}}_parseNodeConnections(e){for(let t=0;t<this._nodes.length;t++){const s=this._interactivityGraph.nodes?.[t];if(!s)throw R.Error(["No node found for interactivity node",this._nodes[t]]),new Error("Error parsing node connections");const r=this._nodes[t],a=this._mappings[s.declaration];if(!a)throw R.Error(["No mapping found for node",s]),new Error("Error parsing node connections");const o=s.flows||{},i=Object.keys(o).sort();for(const c of i){const h=o[c],d=a.flowGraphMapping.outputs?.flows?.[c],f=d?.name||c,p=this._createNewSocketConnection(f,!0);(d&&d.toBlock&&r.blocks.find(N=>N.className===d.toBlock)||r.blocks[0]).signalOutputs.push(p);const T=h.node,A=this._nodes[T];if(!A)throw R.Error(["No node found for input node id",T]),new Error("Error parsing node connections");const B=Ft(A.fullOperationName);if(!B)throw R.Error(["No mapping found for input node",A]),new Error("Error parsing node connections");let I=B.inputs?.flows?.[h.socket||"in"],M=!1;if(!I)for(const N in B.inputs?.flows)N.startsWith("[")&&N.endsWith("]")&&(M=!0,I=B.inputs?.flows?.[N]);const C=I?M?I.name.replace("$1",h.socket||""):I.name:h.socket||"in",S=I&&I.toBlock&&A.blocks.find(N=>N.className===I.toBlock)||A.blocks[0];let v=S.signalInputs.find(N=>N.name===C);v||(v=this._createNewSocketConnection(C),S.signalInputs.push(v)),v.connectedPointIds.push(p.uniqueId),p.connectedPointIds.push(v.uniqueId)}const l=s.values||{},u=Object.keys(l);for(const c of u){const h=l[c];let d=a.flowGraphMapping.inputs?.values?.[c],f=!1;if(!d)for(const A in a.flowGraphMapping.inputs?.values)A.startsWith("[")&&A.endsWith("]")&&(f=!0,d=a.flowGraphMapping.inputs?.values?.[A]);const p=d?f?d.name.replace("$1",c):d.name:c,E=this._createNewSocketConnection(p);if((d&&d.toBlock&&r.blocks.find(A=>A.className===d.toBlock)||r.blocks[0]).dataInputs.push(E),h.value!==void 0){const A=this._parseVariable(h,d&&d.dataTransformer);e._connectionValues[E.uniqueId]=A}else if(typeof h.node<"u"){const A=h.node,B=h.socket||"value",I=this._nodes[A];if(!I)throw R.Error(["No node found for output socket reference",h]),new Error("Error parsing node connections");const M=Ft(I.fullOperationName);if(!M)throw R.Error(["No mapping found for output socket reference",h]),new Error("Error parsing node connections");let C=M.outputs?.values?.[B],S=!1;if(!C)for(const $ in M.outputs?.values)$.startsWith("[")&&$.endsWith("]")&&(S=!0,C=M.outputs?.values?.[$]);const v=C?S?C.name.replace("$1",B):C?.name:B,N=C&&C.toBlock&&I.blocks.find($=>$.className===C.toBlock)||I.blocks[0];let V=N.dataOutputs.find($=>$.name===v);V||(V=this._createNewSocketConnection(v,!0),N.dataOutputs.push(V)),E.connectedPointIds.push(V.uniqueId),V.connectedPointIds.push(E.uniqueId)}else throw R.Error(["Invalid value for value connection",h]),new Error("Error parsing node connections")}if(a.flowGraphMapping.interBlockConnectors)for(const c of a.flowGraphMapping.interBlockConnectors){const h=c.input,d=c.output,f=c.isVariable;this._connectFlowGraphNodes(h,d,r.blocks[c.inputBlockIndex],r.blocks[c.outputBlockIndex],f)}if(a.flowGraphMapping.extraProcessor){const c=this._interactivityGraph.declarations?.[s.declaration];if(!c)throw R.Error(["No declaration found for extra processor",s]),new Error("Error parsing node connections");r.blocks=a.flowGraphMapping.extraProcessor(s,c,a.flowGraphMapping,this,r.blocks,e,this._gltf)}}}_createNewSocketConnection(e,t){return{uniqueId:Ot(),name:e,_connectionType:t?1:0,connectedPointIds:[]}}_connectFlowGraphNodes(e,t,s,r,a){const o=a?s.dataInputs:s.signalInputs,i=a?r.dataOutputs:r.signalOutputs,l=o.find(c=>c.name===e)||this._createNewSocketConnection(e),u=i.find(c=>c.name===t)||this._createNewSocketConnection(t,!0);o.find(c=>c.name===e)||o.push(l),i.find(c=>c.name===t)||i.push(u),l.connectedPointIds.push(u.uniqueId),u.connectedPointIds.push(l.uniqueId)}getVariableName(e){return"staticVariable_"+e}serializeToFlowGraph(){const e={uniqueId:Ot(),_userVariables:{},_connectionValues:{}};this._parseNodeConnections(e);for(let s=0;s<this._staticVariables.length;s++){const r=this._staticVariables[s];e._userVariables[this.getVariableName(s)]=r}return{rightHanded:!0,allBlocks:this._nodes.reduce((s,r)=>s.concat(r.blocks),[]),executionContexts:[e]}}}const Re="KHR_interactivity";class Fn{constructor(e){this._loader=e,this.name=Re,this.enabled=this._loader.isExtensionUsed(Re),this._pathConverter=Ut(this._loader.gltf),e._skipStartAnimationStep=!0;const t=e.babylonScene;t&&Bn(t)}dispose(){this._loader=null,delete this._pathConverter}async onReady(){if(!this._loader.babylonScene||!this._pathConverter)return;const e=this._loader.babylonScene,t=this._loader.gltf.extensions?.KHR_interactivity;if(!t)return;const s=new _r({scene:e});s.dispatchEventsSynchronously=!1;const r=t.graphs.map(a=>new kn(a,this._loader.gltf,this._loader.parent.targetFps).serializeToFlowGraph());await Promise.all(r.map(async a=>await pr(a,{coordinator:s,pathConverter:this._pathConverter}))),s.start()}}function Bn(n){ie("/extensions/KHR_interactivity/?/activeCamera/rotation",{get:()=>{if(!n.activeCamera)return new Y(NaN,NaN,NaN,NaN);const e=Y.FromRotationMatrix(n.activeCamera.getWorldMatrix()).normalize();return n.useRightHandedSystem||(e.w*=-1,e.x*=-1),e},type:"Quaternion",getTarget:()=>n.activeCamera}),ie("/extensions/KHR_interactivity/?/activeCamera/position",{get:()=>{if(!n.activeCamera)return new w(NaN,NaN,NaN);const e=n.activeCamera.getWorldMatrix().getTranslation();return n.useRightHandedSystem||(e.x*=-1),e},type:"Vector3",getTarget:()=>n.activeCamera}),ie("/animations/{}/extensions/KHR_interactivity/isPlaying",{get:e=>e._babylonAnimationGroup?.isPlaying??!1,type:"boolean",getTarget:e=>e._babylonAnimationGroup}),ie("/animations/{}/extensions/KHR_interactivity/minTime",{get:e=>(e._babylonAnimationGroup?.from??0)/60,type:"number",getTarget:e=>e._babylonAnimationGroup}),ie("/animations/{}/extensions/KHR_interactivity/maxTime",{get:e=>(e._babylonAnimationGroup?.to??0)/60,type:"number",getTarget:e=>e._babylonAnimationGroup}),ie("/animations/{}/extensions/KHR_interactivity/playhead",{get:e=>(e._babylonAnimationGroup?.getCurrentFrame()??0)/60,type:"number",getTarget:e=>e._babylonAnimationGroup}),ie("/animations/{}/extensions/KHR_interactivity/virtualPlayhead",{get:e=>(e._babylonAnimationGroup?.getCurrentFrame()??0)/60,type:"number",getTarget:e=>e._babylonAnimationGroup})}gr(Re,"FlowGraphGLTFDataProvider",async()=>(await Te(async()=>{const{FlowGraphGLTFDataProvider:n}=await Promise.resolve().then(()=>na);return{FlowGraphGLTFDataProvider:n}},void 0,import.meta.url)).FlowGraphGLTFDataProvider);L(Re);P(Re,!0,n=>new Fn(n));const wt="KHR_node_visibility";ie("/nodes/{}/extensions/KHR_node_visibility/visible",{get:n=>{const e=n._babylonTransformNode;return e&&e.isVisible!==void 0?e.isVisible:!0},set:(n,e)=>{e._primitiveBabylonMeshes?.forEach(t=>{t.inheritVisibility=!0}),e._babylonTransformNode&&(e._babylonTransformNode.isVisible=n),e._primitiveBabylonMeshes?.forEach(t=>{t.isVisible=n})},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"isVisible"],type:"boolean"});class Gn{constructor(e){this.name=wt,this._loader=e,this.enabled=e.isExtensionUsed(wt)}onReady(){if(!this._loader)return;const e=this._loader.gltf.nodes;if(e)for(const t of e){const s=t._babylonTransformNode;s&&(s.inheritVisibility=!0,t.extensions&&t.extensions.KHR_node_visibility&&t.extensions.KHR_node_visibility.visible===!1&&(s.isVisible=!1))}}dispose(){delete this._loader}}L(wt);P(wt,!0,n=>new Gn(n));const Le="KHR_node_selectability";Mt("event/onSelect",Le,{blocks:["FlowGraphMeshPickEventBlock","FlowGraphGetVariableBlock","FlowGraphIndexOfBlock","KHR_interactivity/FlowGraphGLTFDataProvider"],configuration:{stopPropagation:{name:"stopPropagation"},nodeIndex:{name:"variable",toBlock:"FlowGraphGetVariableBlock",dataTransformer(n){return"pickedMesh_"+n}}},outputs:{values:{selectedNodeIndex:{name:"index",toBlock:"FlowGraphIndexOfBlock"},controllerIndex:{name:"pointerId"},selectionPoint:{name:"pickedPoint"},selectionRayOrigin:{name:"pickOrigin"}},flows:{out:{name:"done"}}},interBlockConnectors:[{input:"asset",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"nodes",inputBlockIndex:2,outputBlockIndex:3,isVariable:!0},{input:"object",output:"pickedMesh",inputBlockIndex:2,outputBlockIndex:0,isVariable:!0}],extraProcessor(n,e,t,s,r,a,o){const i=r[r.length-1];i.config=i.config||{},i.config.glTF=o;const l=n.configuration?.nodeIndex?.value?.[0];if(l===void 0||typeof l!="number")throw new Error("nodeIndex not found in configuration");const u="pickedMesh_"+l;return r[1].config.variable=u,a._userVariables[u]={className:"Mesh",id:o?.nodes?.[l]._babylonTransformNode?.id,uniqueId:o?.nodes?.[l]._babylonTransformNode?.uniqueId},r}});ie("/nodes/{}/extensions/KHR_node_selectability/selectable",{get:n=>{const e=n._babylonTransformNode;return e&&e.isPickable!==void 0?e.isPickable:!0},set:(n,e)=>{e._primitiveBabylonMeshes?.forEach(t=>{t.isPickable=n})},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"isPickable"],type:"boolean"});class Dn{constructor(e){this.name=Le,this._loader=e,this.enabled=e.isExtensionUsed(Le)}async onReady(){this._loader.gltf.nodes?.forEach(e=>{e.extensions?.KHR_node_selectability&&e.extensions?.KHR_node_selectability.selectable===!1&&e._babylonTransformNode?.getChildMeshes().forEach(t=>{t.isPickable=!1})})}dispose(){this._loader=null}}L(Le);P(Le,!0,n=>new Dn(n));const ve="KHR_node_hoverability",Ns="targetMeshPointerOver_";Mt("event/onHoverIn",ve,{blocks:["FlowGraphPointerOverEventBlock","FlowGraphGetVariableBlock","FlowGraphIndexOfBlock","KHR_interactivity/FlowGraphGLTFDataProvider"],configuration:{stopPropagation:{name:"stopPropagation"},nodeIndex:{name:"variable",toBlock:"FlowGraphGetVariableBlock",dataTransformer(n){return Ns+n}}},outputs:{values:{hoverNodeIndex:{name:"index",toBlock:"FlowGraphIndexOfBlock"},controllerIndex:{name:"pointerId"}},flows:{out:{name:"done"}}},interBlockConnectors:[{input:"targetMesh",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"nodes",inputBlockIndex:2,outputBlockIndex:3,isVariable:!0},{input:"object",output:"meshUnderPointer",inputBlockIndex:2,outputBlockIndex:0,isVariable:!0}],extraProcessor(n,e,t,s,r,a,o){const i=r[r.length-1];i.config=i.config||{},i.config.glTF=o;const l=n.configuration?.nodeIndex?.value?.[0];if(l===void 0||typeof l!="number")throw new Error("nodeIndex not found in configuration");const u=Ns+l;return r[1].config.variable=u,a._userVariables[u]={className:"Mesh",id:o?.nodes?.[l]._babylonTransformNode?.id,uniqueId:o?.nodes?.[l]._babylonTransformNode?.uniqueId},r}});const Ss="targetMeshPointerOut_";Mt("event/onHoverOut",ve,{blocks:["FlowGraphPointerOutEventBlock","FlowGraphGetVariableBlock","FlowGraphIndexOfBlock","KHR_interactivity/FlowGraphGLTFDataProvider"],configuration:{stopPropagation:{name:"stopPropagation"},nodeIndex:{name:"variable",toBlock:"FlowGraphGetVariableBlock",dataTransformer(n){return Ss+n}}},outputs:{values:{hoverNodeIndex:{name:"index",toBlock:"FlowGraphIndexOfBlock"},controllerIndex:{name:"pointerId"}},flows:{out:{name:"done"}}},interBlockConnectors:[{input:"targetMesh",output:"value",inputBlockIndex:0,outputBlockIndex:1,isVariable:!0},{input:"array",output:"nodes",inputBlockIndex:2,outputBlockIndex:3,isVariable:!0},{input:"object",output:"meshOutOfPointer",inputBlockIndex:2,outputBlockIndex:0,isVariable:!0}],extraProcessor(n,e,t,s,r,a,o){const i=r[r.length-1];i.config=i.config||{},i.config.glTF=o;const l=n.configuration?.nodeIndex?.value?.[0];if(l===void 0||typeof l!="number")throw new Error("nodeIndex not found in configuration");const u=Ss+l;return r[1].config.variable=u,a._userVariables[u]={className:"Mesh",id:o?.nodes?.[l]._babylonTransformNode?.id,uniqueId:o?.nodes?.[l]._babylonTransformNode?.uniqueId},r}});ie("/nodes/{}/extensions/KHR_node_hoverability/hoverable",{get:n=>{const e=n._babylonTransformNode;return e&&e.pointerOverDisableMeshTesting!==void 0?e.pointerOverDisableMeshTesting:!0},set:(n,e)=>{e._primitiveBabylonMeshes?.forEach(t=>{t.pointerOverDisableMeshTesting=!n})},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"pointerOverDisableMeshTesting"],type:"boolean"});class $n{constructor(e){this.name=ve,this._loader=e,this.enabled=e.isExtensionUsed(ve)}async onReady(){this._loader.gltf.nodes?.forEach(e=>{e.extensions?.KHR_node_hoverability&&e.extensions?.KHR_node_hoverability.hoverable===!1&&e._babylonTransformNode?.getChildMeshes().forEach(t=>{t.pointerOverDisableMeshTesting=!0})})}dispose(){this._loader=null}}L(ve);P(ve,!0,n=>new $n(n));const gs="ExtrasAsMetadata";class Vn{_assignExtras(e,t){if(t.extras&&Object.keys(t.extras).length>0){const s=e.metadata=e.metadata||{},r=s.gltf=s.gltf||{};r.extras=t.extras}}constructor(e){this.name=gs,this.enabled=!0,this._loader=e}dispose(){this._loader=null}loadNodeAsync(e,t,s){return this._loader.loadNodeAsync(e,t,r=>{this._assignExtras(r,t),s(r)})}loadCameraAsync(e,t,s){return this._loader.loadCameraAsync(e,t,r=>{this._assignExtras(r,t),s(r)})}createMaterial(e,t,s){const r=this._loader.createMaterial(e,t,s);return this._assignExtras(r,t),r}loadAnimationAsync(e,t){return this._loader.loadAnimationAsync(e,t).then(s=>(this._assignExtras(s,t),s))}}L(gs);P(gs,!1,n=>new Vn(n));class Hn extends yr{constructor(e){super();const t=e.glTF,s=t.animations?.map(a=>a._babylonAnimationGroup)||[];this.animationGroups=this.registerDataOutput("animationGroups",xs,s);const r=t.nodes?.map(a=>a._babylonTransformNode)||[];this.nodes=this.registerDataOutput("nodes",xs,r)}getClassName(){return"FlowGraphGLTFDataProvider"}}const na=Object.freeze(Object.defineProperty({__proto__:null,FlowGraphGLTFDataProvider:Hn},Symbol.toStringTag,{value:"Module"})),ha=Object.freeze(Object.defineProperty({__proto__:null,AddObjectAccessorToKey:ie,AnimationPropertyInfo:ye,ArrayItem:g,EXT_lights_area:rn,EXT_lights_ies:tn,EXT_lights_image_based:Xs,EXT_mesh_gpu_instancing:Zs,EXT_meshopt_compression:Js,EXT_texture_avif:en,EXT_texture_webp:Qs,ExtrasAsMetadata:Vn,FlowGraphGLTFDataProvider:Hn,GLTFFileLoader:q,GLTFLoader:b,GetMappingForKey:Me,GetPathToObjectConverter:Ut,InteractivityGraphToFlowGraphParser:kn,KHR_animation_pointer:Mn,KHR_draco_mesh_compression:sn,KHR_interactivity:Fn,KHR_lights:nn,KHR_materials_anisotropy:hn,KHR_materials_clearcoat:ln,KHR_materials_coat:un,KHR_materials_diffuse_roughness:An,KHR_materials_diffuse_transmission:gn,KHR_materials_dispersion:Tn,KHR_materials_emissive_strength:dn,KHR_materials_fuzz:fn,KHR_materials_ior:Be,KHR_materials_iridescence:cn,KHR_materials_pbrSpecularGlossiness:an,KHR_materials_sheen:mn,KHR_materials_specular:_n,KHR_materials_transmission:pn,KHR_materials_unlit:on,KHR_materials_variants:ne,KHR_materials_volume:yn,KHR_materials_volume_scatter:bn,KHR_mesh_quantization:xn,KHR_node_hoverability:$n,KHR_node_selectability:Dn,KHR_node_visibility:Gn,KHR_texture_basisu:Cn,KHR_texture_transform:wn,KHR_xmp_json_ld:vn,LoadBoundingInfoFromPositionAccessor:Wt,MSFT_audio_emitter:On,MSFT_lod:In,MSFT_minecraftMesh:Nn,MSFT_sRGBFactors:Sn,OpenPBRMaterialLoadingAdapter:Ys,PBRMaterialLoadingAdapter:js,SetInterpolationForKey:m,TransformNodeAnimationPropertyInfo:Fe,WeightAnimationPropertyInfo:Yt,_AddInteractivityObjectModel:Bn,addNewInteractivityFlowGraphMapping:Mt,getAllSupportedNativeNodeTypes:sa,getMappingForDeclaration:ps,getMappingForFullOperationName:Ft,getQuaternion:zt,getVector3:Et,getWeights:qt,gltfTypeToBabylonType:Pn,registerGLTFExtension:P,registeredGLTFExtensions:qs,unregisterGLTFExtension:L},Symbol.toStringTag,{value:"Module"}));export{ca as GLTF1,ha as GLTF2,q as GLTFFileLoader,xe as GLTFLoaderAnimationStartMode,Ne as GLTFLoaderCoordinateSystemMode,Ar as GLTFLoaderDefaultOptions,se as GLTFLoaderState,ke as GLTFValidation};