@fps-games/editor-deployment 0.2.3-beta.4 → 0.2.3-beta.6

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 (1033) hide show
  1. package/bin/fps-editor-agent.mjs +5 -0
  2. package/bin/fps-editor-prepare.mjs +3 -4
  3. package/bin/fps-editor-project.mjs +18 -0
  4. package/bin/fps-editor-server.mjs +1 -1
  5. package/licenses/THIRD_PARTY_NOTICES.txt +2 -2
  6. package/manifest.json +1416 -1404
  7. package/npm-shrinkwrap.json +5 -3
  8. package/package.json +9 -4
  9. package/public/assets/abstractAudioBus-zin9aBGb.js +1 -0
  10. package/public/assets/animation-BJ8XM1EP.js +1 -0
  11. package/public/assets/animation-BJ8XM1EP.js.br +0 -0
  12. package/public/assets/animation-BJ8XM1EP.js.gz +0 -0
  13. package/public/assets/animationGroup-nIU37qTl.js +1 -0
  14. package/public/assets/animationGroup-nIU37qTl.js.br +0 -0
  15. package/public/assets/animationGroup-nIU37qTl.js.gz +0 -0
  16. package/public/assets/arcRotateCamera-Bpb6_-jM.js +1 -0
  17. package/public/assets/arcRotateCamera-Bpb6_-jM.js.br +0 -0
  18. package/public/assets/arcRotateCamera-Bpb6_-jM.js.gz +0 -0
  19. package/public/assets/babylon-core-B6Ot-GOK.js +1 -0
  20. package/public/assets/babylon-core-B6Ot-GOK.js.br +0 -0
  21. package/public/assets/babylon-core-B6Ot-GOK.js.gz +0 -0
  22. package/public/assets/babylon-core-DBdQTkWG.js +13882 -0
  23. package/public/assets/babylon-core-DBdQTkWG.js.br +0 -0
  24. package/public/assets/babylon-core-DBdQTkWG.js.gz +0 -0
  25. package/public/assets/basisTextureLoader-xaH1TU2T.js +1 -0
  26. package/public/assets/basisTextureLoader-xaH1TU2T.js.br +0 -0
  27. package/public/assets/basisTextureLoader-xaH1TU2T.js.gz +0 -0
  28. package/public/assets/bumpVertex-CydMViY3.js +173 -0
  29. package/public/assets/bumpVertex-CydMViY3.js.br +0 -0
  30. package/public/assets/bumpVertex-CydMViY3.js.gz +0 -0
  31. package/public/assets/bumpVertex-bM0VcD-v.js +177 -0
  32. package/public/assets/bumpVertex-bM0VcD-v.js.br +0 -0
  33. package/public/assets/bumpVertex-bM0VcD-v.js.gz +0 -0
  34. package/public/assets/chromaticAberration.fragment-2LQpSY6n.js +6 -0
  35. package/public/assets/chromaticAberration.fragment-2LQpSY6n.js.br +0 -0
  36. package/public/assets/chromaticAberration.fragment-2LQpSY6n.js.gz +0 -0
  37. package/public/assets/chromaticAberration.fragment-CPC2jGBk.js +7 -0
  38. package/public/assets/chromaticAberration.fragment-CPC2jGBk.js.br +0 -0
  39. package/public/assets/chromaticAberration.fragment-CPC2jGBk.js.gz +0 -0
  40. package/public/assets/circleOfConfusion.fragment-DWehhKOk.js +17 -0
  41. package/public/assets/circleOfConfusion.fragment-DWehhKOk.js.br +0 -0
  42. package/public/assets/circleOfConfusion.fragment-DWehhKOk.js.gz +0 -0
  43. package/public/assets/circleOfConfusion.fragment-WIeIzKLd.js +17 -0
  44. package/public/assets/circleOfConfusion.fragment-WIeIzKLd.js.br +0 -0
  45. package/public/assets/circleOfConfusion.fragment-WIeIzKLd.js.gz +0 -0
  46. package/public/assets/clipPlaneFragment-BQiHvjzo.js +46 -0
  47. package/public/assets/clipPlaneFragment-BQiHvjzo.js.br +0 -0
  48. package/public/assets/clipPlaneFragment-BQiHvjzo.js.gz +0 -0
  49. package/public/assets/clipPlaneVertex-D5EB-X5S.js +177 -0
  50. package/public/assets/clipPlaneVertex-D5EB-X5S.js.br +0 -0
  51. package/public/assets/clipPlaneVertex-D5EB-X5S.js.gz +0 -0
  52. package/public/assets/color.fragment-0xZe_dSa.js +20 -0
  53. package/public/assets/color.fragment-0xZe_dSa.js.br +0 -0
  54. package/public/assets/color.fragment-0xZe_dSa.js.gz +0 -0
  55. package/public/assets/color.fragment-BQNpLnxa.js +21 -0
  56. package/public/assets/color.fragment-BQNpLnxa.js.br +0 -0
  57. package/public/assets/color.fragment-BQNpLnxa.js.gz +0 -0
  58. package/public/assets/color.vertex-0geH1BI8.js +32 -0
  59. package/public/assets/color.vertex-0geH1BI8.js.br +0 -0
  60. package/public/assets/color.vertex-0geH1BI8.js.gz +0 -0
  61. package/public/assets/color.vertex-qtb2-mc5.js +39 -0
  62. package/public/assets/color.vertex-qtb2-mc5.js.br +0 -0
  63. package/public/assets/color.vertex-qtb2-mc5.js.gz +0 -0
  64. package/public/assets/dds-IzbrFkh8.js +1 -0
  65. package/public/assets/dds-IzbrFkh8.js.br +0 -0
  66. package/public/assets/dds-IzbrFkh8.js.gz +0 -0
  67. package/public/assets/ddsTextureLoader-D3ROWbwv.js +1 -0
  68. package/public/assets/ddsTextureLoader-D3ROWbwv.js.br +5 -0
  69. package/public/assets/ddsTextureLoader-D3ROWbwv.js.gz +0 -0
  70. package/public/assets/default.fragment-BAHNlmD5.js +526 -0
  71. package/public/assets/default.fragment-BAHNlmD5.js.br +0 -0
  72. package/public/assets/default.fragment-BAHNlmD5.js.gz +0 -0
  73. package/public/assets/default.fragment-D3MA9CRV.js +468 -0
  74. package/public/assets/default.fragment-D3MA9CRV.js.br +0 -0
  75. package/public/assets/default.fragment-D3MA9CRV.js.gz +0 -0
  76. package/public/assets/default.vertex-B1KwtIUb.js +181 -0
  77. package/public/assets/default.vertex-B1KwtIUb.js.br +0 -0
  78. package/public/assets/default.vertex-B1KwtIUb.js.gz +0 -0
  79. package/public/assets/default.vertex-Mne8Sq_G.js +193 -0
  80. package/public/assets/default.vertex-Mne8Sq_G.js.br +0 -0
  81. package/public/assets/default.vertex-Mne8Sq_G.js.gz +0 -0
  82. package/public/assets/defaultUboDeclaration-00t3po2f.js +7 -0
  83. package/public/assets/defaultUboDeclaration-00t3po2f.js.br +0 -0
  84. package/public/assets/defaultUboDeclaration-00t3po2f.js.gz +0 -0
  85. package/public/assets/defaultUboDeclaration-DAuovVEA.js +5 -0
  86. package/public/assets/defaultUboDeclaration-DAuovVEA.js.br +0 -0
  87. package/public/assets/defaultUboDeclaration-DAuovVEA.js.gz +0 -0
  88. package/public/assets/depth.fragment-Da86gbwP.js +40 -0
  89. package/public/assets/depth.fragment-Da86gbwP.js.br +0 -0
  90. package/public/assets/depth.fragment-Da86gbwP.js.gz +0 -0
  91. package/public/assets/depth.vertex-DPT_V_9f.js +57 -0
  92. package/public/assets/depth.vertex-DPT_V_9f.js.br +0 -0
  93. package/public/assets/depth.vertex-DPT_V_9f.js.gz +0 -0
  94. package/public/assets/depthBoxBlur.fragment-tYNfbhdh.js +6 -0
  95. package/public/assets/depthBoxBlur.fragment-tYNfbhdh.js.br +0 -0
  96. package/public/assets/depthBoxBlur.fragment-tYNfbhdh.js.gz +0 -0
  97. package/public/assets/depthBoxBlur.fragment-zrJ9DLe5.js +5 -0
  98. package/public/assets/depthBoxBlur.fragment-zrJ9DLe5.js.br +0 -0
  99. package/public/assets/depthBoxBlur.fragment-zrJ9DLe5.js.gz +0 -0
  100. package/public/assets/depthOfFieldMerge.fragment-Car-ami-.js +21 -0
  101. package/public/assets/depthOfFieldMerge.fragment-Car-ami-.js.br +0 -0
  102. package/public/assets/depthOfFieldMerge.fragment-Car-ami-.js.gz +0 -0
  103. package/public/assets/depthOfFieldMerge.fragment-eO7Ot6AR.js +26 -0
  104. package/public/assets/depthOfFieldMerge.fragment-eO7Ot6AR.js.br +0 -0
  105. package/public/assets/depthOfFieldMerge.fragment-eO7Ot6AR.js.gz +0 -0
  106. package/public/assets/easing-BdugUZqW.js +1 -0
  107. package/public/assets/easing-BdugUZqW.js.br +0 -0
  108. package/public/assets/easing-BdugUZqW.js.gz +0 -0
  109. package/public/assets/exrTextureLoader-DYq9r93V.js +1 -0
  110. package/public/assets/exrTextureLoader-DYq9r93V.js.br +0 -0
  111. package/public/assets/exrTextureLoader-DYq9r93V.js.gz +0 -0
  112. package/public/assets/flowGraphArrayIndexBlock-C3zDMjuo.js +1 -0
  113. package/public/assets/flowGraphArrayIndexBlock-C3zDMjuo.js.br +0 -0
  114. package/public/assets/flowGraphArrayIndexBlock-C3zDMjuo.js.gz +0 -0
  115. package/public/assets/flowGraphBezierCurveEasingBlock-DDoK8_8l.js +1 -0
  116. package/public/assets/flowGraphBezierCurveEasingBlock-DDoK8_8l.js.br +0 -0
  117. package/public/assets/flowGraphBezierCurveEasingBlock-DDoK8_8l.js.gz +0 -0
  118. package/public/assets/flowGraphBinaryOperationBlock-BKlR9DS-.js +1 -0
  119. package/public/assets/flowGraphBinaryOperationBlock-BKlR9DS-.js.br +3 -0
  120. package/public/assets/flowGraphBinaryOperationBlock-BKlR9DS-.js.gz +0 -0
  121. package/public/assets/flowGraphBranchBlock-Bup839Qd.js +1 -0
  122. package/public/assets/flowGraphBranchBlock-Bup839Qd.js.br +0 -0
  123. package/public/assets/flowGraphBranchBlock-Bup839Qd.js.gz +0 -0
  124. package/public/assets/flowGraphCachedOperationBlock-DnmbMTY7.js +1 -0
  125. package/public/assets/flowGraphCachedOperationBlock-DnmbMTY7.js.br +0 -0
  126. package/public/assets/flowGraphCachedOperationBlock-DnmbMTY7.js.gz +0 -0
  127. package/public/assets/flowGraphCancelDelayBlock-B9MfNdwj.js +1 -0
  128. package/public/assets/flowGraphCancelDelayBlock-B9MfNdwj.js.br +0 -0
  129. package/public/assets/flowGraphCancelDelayBlock-B9MfNdwj.js.gz +0 -0
  130. package/public/assets/flowGraphCodeExecutionBlock-auEOflkO.js +1 -0
  131. package/public/assets/flowGraphCodeExecutionBlock-auEOflkO.js.br +0 -0
  132. package/public/assets/flowGraphCodeExecutionBlock-auEOflkO.js.gz +0 -0
  133. package/public/assets/flowGraphConditionalDataBlock-BAia9WED.js +1 -0
  134. package/public/assets/flowGraphConditionalDataBlock-BAia9WED.js.br +0 -0
  135. package/public/assets/flowGraphConditionalDataBlock-BAia9WED.js.gz +0 -0
  136. package/public/assets/flowGraphConsoleLogBlock--6MvrOCG.js +1 -0
  137. package/public/assets/flowGraphConsoleLogBlock--6MvrOCG.js.br +0 -0
  138. package/public/assets/flowGraphConsoleLogBlock--6MvrOCG.js.gz +0 -0
  139. package/public/assets/flowGraphConstantBlock-FOfDeLIf.js +1 -0
  140. package/public/assets/flowGraphConstantBlock-FOfDeLIf.js.br +0 -0
  141. package/public/assets/flowGraphConstantBlock-FOfDeLIf.js.gz +0 -0
  142. package/public/assets/flowGraphContextBlock-BP5dmyKZ.js +1 -0
  143. package/public/assets/flowGraphContextBlock-BP5dmyKZ.js.br +0 -0
  144. package/public/assets/flowGraphContextBlock-BP5dmyKZ.js.gz +0 -0
  145. package/public/assets/flowGraphCounterBlock-DjKMvUGB.js +1 -0
  146. package/public/assets/flowGraphCounterBlock-DjKMvUGB.js.br +0 -0
  147. package/public/assets/flowGraphCounterBlock-DjKMvUGB.js.gz +0 -0
  148. package/public/assets/flowGraphDataSwitchBlock-gSJm410f.js +1 -0
  149. package/public/assets/flowGraphDataSwitchBlock-gSJm410f.js.br +0 -0
  150. package/public/assets/flowGraphDataSwitchBlock-gSJm410f.js.gz +0 -0
  151. package/public/assets/flowGraphDebounceBlock-CO5ptvWG.js +1 -0
  152. package/public/assets/flowGraphDebounceBlock-CO5ptvWG.js.br +0 -0
  153. package/public/assets/flowGraphDebounceBlock-CO5ptvWG.js.gz +0 -0
  154. package/public/assets/flowGraphDoNBlock-Bf26kum1.js +1 -0
  155. package/public/assets/flowGraphDoNBlock-Bf26kum1.js.br +0 -0
  156. package/public/assets/flowGraphDoNBlock-Bf26kum1.js.gz +0 -0
  157. package/public/assets/flowGraphEasingBlock-DtnL-aP_.js +1 -0
  158. package/public/assets/flowGraphEasingBlock-DtnL-aP_.js.br +0 -0
  159. package/public/assets/flowGraphEasingBlock-DtnL-aP_.js.gz +0 -0
  160. package/public/assets/flowGraphFlipFlopBlock-Bh_IN41P.js +1 -0
  161. package/public/assets/flowGraphFlipFlopBlock-Bh_IN41P.js.br +0 -0
  162. package/public/assets/flowGraphFlipFlopBlock-Bh_IN41P.js.gz +0 -0
  163. package/public/assets/flowGraphForLoopBlock-C3CLz9Iv.js +1 -0
  164. package/public/assets/flowGraphForLoopBlock-C3CLz9Iv.js.br +0 -0
  165. package/public/assets/flowGraphForLoopBlock-C3CLz9Iv.js.gz +0 -0
  166. package/public/assets/flowGraphFunctionReferenceBlock-Bz40tn10.js +1 -0
  167. package/public/assets/flowGraphFunctionReferenceBlock-Bz40tn10.js.br +0 -0
  168. package/public/assets/flowGraphFunctionReferenceBlock-Bz40tn10.js.gz +0 -0
  169. package/public/assets/flowGraphGetAssetBlock-DYP1H9Hj.js +1 -0
  170. package/public/assets/flowGraphGetAssetBlock-DYP1H9Hj.js.br +0 -0
  171. package/public/assets/flowGraphGetAssetBlock-DYP1H9Hj.js.gz +0 -0
  172. package/public/assets/flowGraphGetPropertyBlock-B6XVNxDR.js +1 -0
  173. package/public/assets/flowGraphGetPropertyBlock-B6XVNxDR.js.br +0 -0
  174. package/public/assets/flowGraphGetPropertyBlock-B6XVNxDR.js.gz +0 -0
  175. package/public/assets/flowGraphGetVariableBlock-BvaNDTu7.js +1 -0
  176. package/public/assets/flowGraphGetVariableBlock-BvaNDTu7.js.br +0 -0
  177. package/public/assets/flowGraphGetVariableBlock-BvaNDTu7.js.gz +0 -0
  178. package/public/assets/flowGraphIndexOfBlock-qm1Ab3oN.js +1 -0
  179. package/public/assets/flowGraphIndexOfBlock-qm1Ab3oN.js.br +0 -0
  180. package/public/assets/flowGraphIndexOfBlock-qm1Ab3oN.js.gz +0 -0
  181. package/public/assets/flowGraphInterpolationBlock-CmG25tSZ.js +1 -0
  182. package/public/assets/flowGraphInterpolationBlock-CmG25tSZ.js.br +0 -0
  183. package/public/assets/flowGraphInterpolationBlock-CmG25tSZ.js.gz +0 -0
  184. package/public/assets/flowGraphJsonPointerParserBlock-C8rfhc4j.js +1 -0
  185. package/public/assets/flowGraphJsonPointerParserBlock-C8rfhc4j.js.br +0 -0
  186. package/public/assets/flowGraphJsonPointerParserBlock-C8rfhc4j.js.gz +0 -0
  187. package/public/assets/flowGraphMathBlocks-BdiMH3MQ.js +1 -0
  188. package/public/assets/flowGraphMathBlocks-BdiMH3MQ.js.br +0 -0
  189. package/public/assets/flowGraphMathBlocks-BdiMH3MQ.js.gz +0 -0
  190. package/public/assets/flowGraphMathCombineExtractBlocks-CXvPWL3b.js +1 -0
  191. package/public/assets/flowGraphMathCombineExtractBlocks-CXvPWL3b.js.br +0 -0
  192. package/public/assets/flowGraphMathCombineExtractBlocks-CXvPWL3b.js.gz +0 -0
  193. package/public/assets/flowGraphMatrixMathBlocks-Cal7WQ7i.js +1 -0
  194. package/public/assets/flowGraphMatrixMathBlocks-Cal7WQ7i.js.br +0 -0
  195. package/public/assets/flowGraphMatrixMathBlocks-Cal7WQ7i.js.gz +0 -0
  196. package/public/assets/flowGraphMeshPickEventBlock-B8EU7KmL.js +1 -0
  197. package/public/assets/flowGraphMeshPickEventBlock-B8EU7KmL.js.br +0 -0
  198. package/public/assets/flowGraphMeshPickEventBlock-B8EU7KmL.js.gz +0 -0
  199. package/public/assets/flowGraphMultiGateBlock-GMcU5jv7.js +1 -0
  200. package/public/assets/flowGraphMultiGateBlock-GMcU5jv7.js.br +0 -0
  201. package/public/assets/flowGraphMultiGateBlock-GMcU5jv7.js.gz +0 -0
  202. package/public/assets/flowGraphPauseAnimationBlock-BKUeGFEQ.js +1 -0
  203. package/public/assets/flowGraphPauseAnimationBlock-BKUeGFEQ.js.br +0 -0
  204. package/public/assets/flowGraphPauseAnimationBlock-BKUeGFEQ.js.gz +0 -0
  205. package/public/assets/flowGraphPlayAnimationBlock-vvCkTY_Z.js +1 -0
  206. package/public/assets/flowGraphPlayAnimationBlock-vvCkTY_Z.js.br +0 -0
  207. package/public/assets/flowGraphPlayAnimationBlock-vvCkTY_Z.js.gz +0 -0
  208. package/public/assets/flowGraphPointerOutEventBlock-EEJ78HAF.js +1 -0
  209. package/public/assets/flowGraphPointerOutEventBlock-EEJ78HAF.js.br +0 -0
  210. package/public/assets/flowGraphPointerOutEventBlock-EEJ78HAF.js.gz +0 -0
  211. package/public/assets/flowGraphPointerOverEventBlock-QMzEzISN.js +1 -0
  212. package/public/assets/flowGraphPointerOverEventBlock-QMzEzISN.js.br +0 -0
  213. package/public/assets/flowGraphPointerOverEventBlock-QMzEzISN.js.gz +0 -0
  214. package/public/assets/flowGraphReceiveCustomEventBlock-B5jEx7xE.js +1 -0
  215. package/public/assets/flowGraphReceiveCustomEventBlock-B5jEx7xE.js.br +0 -0
  216. package/public/assets/flowGraphReceiveCustomEventBlock-B5jEx7xE.js.gz +0 -0
  217. package/public/assets/flowGraphSceneReadyEventBlock-MjViOZsL.js +1 -0
  218. package/public/assets/flowGraphSceneReadyEventBlock-MjViOZsL.js.br +0 -0
  219. package/public/assets/flowGraphSceneReadyEventBlock-MjViOZsL.js.gz +0 -0
  220. package/public/assets/flowGraphSceneTickEventBlock-lyjGPNYo.js +1 -0
  221. package/public/assets/flowGraphSceneTickEventBlock-lyjGPNYo.js.br +0 -0
  222. package/public/assets/flowGraphSceneTickEventBlock-lyjGPNYo.js.gz +0 -0
  223. package/public/assets/flowGraphSendCustomEventBlock-M0LLhV7D.js +1 -0
  224. package/public/assets/flowGraphSendCustomEventBlock-M0LLhV7D.js.br +0 -0
  225. package/public/assets/flowGraphSendCustomEventBlock-M0LLhV7D.js.gz +0 -0
  226. package/public/assets/flowGraphSequenceBlock-DocFLI4M.js +1 -0
  227. package/public/assets/flowGraphSequenceBlock-DocFLI4M.js.br +0 -0
  228. package/public/assets/flowGraphSequenceBlock-DocFLI4M.js.gz +0 -0
  229. package/public/assets/flowGraphSetDelayBlock-BDoJj0I_.js +1 -0
  230. package/public/assets/flowGraphSetDelayBlock-BDoJj0I_.js.br +0 -0
  231. package/public/assets/flowGraphSetDelayBlock-BDoJj0I_.js.gz +0 -0
  232. package/public/assets/flowGraphSetPropertyBlock-9jao3AHa.js +1 -0
  233. package/public/assets/flowGraphSetPropertyBlock-9jao3AHa.js.br +0 -0
  234. package/public/assets/flowGraphSetPropertyBlock-9jao3AHa.js.gz +0 -0
  235. package/public/assets/flowGraphSetVariableBlock-buwJMv9v.js +1 -0
  236. package/public/assets/flowGraphSetVariableBlock-buwJMv9v.js.br +0 -0
  237. package/public/assets/flowGraphSetVariableBlock-buwJMv9v.js.gz +0 -0
  238. package/public/assets/flowGraphStopAnimationBlock-CDWhmsC8.js +1 -0
  239. package/public/assets/flowGraphStopAnimationBlock-CDWhmsC8.js.br +0 -0
  240. package/public/assets/flowGraphStopAnimationBlock-CDWhmsC8.js.gz +0 -0
  241. package/public/assets/flowGraphSwitchBlock-DG5ReWET.js +1 -0
  242. package/public/assets/flowGraphSwitchBlock-DG5ReWET.js.br +0 -0
  243. package/public/assets/flowGraphSwitchBlock-DG5ReWET.js.gz +0 -0
  244. package/public/assets/flowGraphThrottleBlock-Bgyx9UOo.js +1 -0
  245. package/public/assets/flowGraphThrottleBlock-Bgyx9UOo.js.br +0 -0
  246. package/public/assets/flowGraphThrottleBlock-Bgyx9UOo.js.gz +0 -0
  247. package/public/assets/flowGraphTransformCoordinatesSystemBlock-CUUmRj2j.js +1 -0
  248. package/public/assets/flowGraphTransformCoordinatesSystemBlock-CUUmRj2j.js.br +0 -0
  249. package/public/assets/flowGraphTransformCoordinatesSystemBlock-CUUmRj2j.js.gz +0 -0
  250. package/public/assets/flowGraphTypeToTypeBlocks-D7N8ZT_V.js +1 -0
  251. package/public/assets/flowGraphTypeToTypeBlocks-D7N8ZT_V.js.br +0 -0
  252. package/public/assets/flowGraphTypeToTypeBlocks-D7N8ZT_V.js.gz +0 -0
  253. package/public/assets/flowGraphUnaryOperationBlock-Bu73VxMC.js +1 -0
  254. package/public/assets/flowGraphUnaryOperationBlock-Bu73VxMC.js.br +0 -0
  255. package/public/assets/flowGraphUnaryOperationBlock-Bu73VxMC.js.gz +0 -0
  256. package/public/assets/flowGraphVectorMathBlocks-CqVzbdAw.js +1 -0
  257. package/public/assets/flowGraphVectorMathBlocks-CqVzbdAw.js.br +0 -0
  258. package/public/assets/flowGraphVectorMathBlocks-CqVzbdAw.js.gz +0 -0
  259. package/public/assets/flowGraphWaitAllBlock-xmBmiluG.js +1 -0
  260. package/public/assets/flowGraphWaitAllBlock-xmBmiluG.js.br +0 -0
  261. package/public/assets/flowGraphWaitAllBlock-xmBmiluG.js.gz +0 -0
  262. package/public/assets/flowGraphWhileLoopBlock-Ct2rHXgO.js +1 -0
  263. package/public/assets/flowGraphWhileLoopBlock-Ct2rHXgO.js.br +0 -0
  264. package/public/assets/flowGraphWhileLoopBlock-Ct2rHXgO.js.gz +0 -0
  265. package/public/assets/fogFragmentDeclaration-C-9jZMBi.js +22 -0
  266. package/public/assets/fogFragmentDeclaration-C-9jZMBi.js.br +0 -0
  267. package/public/assets/fogFragmentDeclaration-C-9jZMBi.js.gz +0 -0
  268. package/public/assets/fogFragmentDeclaration-CpAbKvc3.js +23 -0
  269. package/public/assets/fogFragmentDeclaration-CpAbKvc3.js.br +0 -0
  270. package/public/assets/fogFragmentDeclaration-CpAbKvc3.js.gz +0 -0
  271. package/public/assets/glowBlurPostProcess.fragment-C77x1kl1.js +7 -0
  272. package/public/assets/glowBlurPostProcess.fragment-C77x1kl1.js.br +0 -0
  273. package/public/assets/glowBlurPostProcess.fragment-C77x1kl1.js.gz +0 -0
  274. package/public/assets/glowBlurPostProcess.fragment-C7miknry.js +7 -0
  275. package/public/assets/glowBlurPostProcess.fragment-C7miknry.js.br +2 -0
  276. package/public/assets/glowBlurPostProcess.fragment-C7miknry.js.gz +0 -0
  277. package/public/assets/glowMapGeneration.fragment-BAqrUGS4.js +63 -0
  278. package/public/assets/glowMapGeneration.fragment-BAqrUGS4.js.br +0 -0
  279. package/public/assets/glowMapGeneration.fragment-BAqrUGS4.js.gz +0 -0
  280. package/public/assets/glowMapGeneration.fragment-CMvy-ILZ.js +63 -0
  281. package/public/assets/glowMapGeneration.fragment-CMvy-ILZ.js.br +0 -0
  282. package/public/assets/glowMapGeneration.fragment-CMvy-ILZ.js.gz +0 -0
  283. package/public/assets/glowMapGeneration.vertex-BThT8Jce.js +75 -0
  284. package/public/assets/glowMapGeneration.vertex-BThT8Jce.js.br +0 -0
  285. package/public/assets/glowMapGeneration.vertex-BThT8Jce.js.gz +0 -0
  286. package/public/assets/glowMapGeneration.vertex-mq9WR5EZ.js +75 -0
  287. package/public/assets/glowMapGeneration.vertex-mq9WR5EZ.js.br +0 -0
  288. package/public/assets/glowMapGeneration.vertex-mq9WR5EZ.js.gz +0 -0
  289. package/public/assets/glowMapMerge.fragment-BtMIQDli.js +25 -0
  290. package/public/assets/glowMapMerge.fragment-BtMIQDli.js.br +0 -0
  291. package/public/assets/glowMapMerge.fragment-BtMIQDli.js.gz +0 -0
  292. package/public/assets/glowMapMerge.fragment-CYj1SIfc.js +23 -0
  293. package/public/assets/glowMapMerge.fragment-CYj1SIfc.js.br +0 -0
  294. package/public/assets/glowMapMerge.fragment-CYj1SIfc.js.gz +0 -0
  295. package/public/assets/glowMapMerge.vertex-BilMgMCX.js +8 -0
  296. package/public/assets/glowMapMerge.vertex-BilMgMCX.js.br +0 -0
  297. package/public/assets/glowMapMerge.vertex-BilMgMCX.js.gz +0 -0
  298. package/public/assets/glowMapMerge.vertex-ChJNqQPz.js +7 -0
  299. package/public/assets/glowMapMerge.vertex-ChJNqQPz.js.br +0 -0
  300. package/public/assets/glowMapMerge.vertex-ChJNqQPz.js.gz +0 -0
  301. package/public/assets/grain.fragment-D6WdAOpZ.js +6 -0
  302. package/public/assets/grain.fragment-D6WdAOpZ.js.br +0 -0
  303. package/public/assets/grain.fragment-D6WdAOpZ.js.gz +0 -0
  304. package/public/assets/grain.fragment-DCpxKIZw.js +5 -0
  305. package/public/assets/grain.fragment-DCpxKIZw.js.br +0 -0
  306. package/public/assets/grain.fragment-DCpxKIZw.js.gz +0 -0
  307. package/public/assets/harmonicsFunctions-B5nauyTb.js +189 -0
  308. package/public/assets/harmonicsFunctions-B5nauyTb.js.br +0 -0
  309. package/public/assets/harmonicsFunctions-B5nauyTb.js.gz +0 -0
  310. package/public/assets/harmonicsFunctions-DVIRrUZs.js +192 -0
  311. package/public/assets/harmonicsFunctions-DVIRrUZs.js.br +0 -0
  312. package/public/assets/harmonicsFunctions-DVIRrUZs.js.gz +0 -0
  313. package/public/assets/hdrTextureLoader-Dfs_Fv5B.js +2 -0
  314. package/public/assets/hdrTextureLoader-Dfs_Fv5B.js.br +0 -0
  315. package/public/assets/hdrTextureLoader-Dfs_Fv5B.js.gz +0 -0
  316. package/public/assets/hemisphericLight-BkYyeXbK.js +1329 -0
  317. package/public/assets/hemisphericLight-BkYyeXbK.js.br +0 -0
  318. package/public/assets/hemisphericLight-BkYyeXbK.js.gz +0 -0
  319. package/public/assets/iesTextureLoader-I2E-BXCc.js +2 -0
  320. package/public/assets/iesTextureLoader-I2E-BXCc.js.br +0 -0
  321. package/public/assets/iesTextureLoader-I2E-BXCc.js.gz +0 -0
  322. package/public/assets/index-CzHwtW4R.js +4 -0
  323. package/public/assets/index-CzHwtW4R.js.br +0 -0
  324. package/public/assets/index-CzHwtW4R.js.gz +0 -0
  325. package/public/assets/index-nxfO_jYU.js +1 -0
  326. package/public/assets/index-nxfO_jYU.js.br +0 -0
  327. package/public/assets/index-nxfO_jYU.js.gz +0 -0
  328. package/public/assets/instancesDeclaration-DcwHJpHY.js +23 -0
  329. package/public/assets/instancesDeclaration-DcwHJpHY.js.br +2 -0
  330. package/public/assets/instancesDeclaration-DcwHJpHY.js.gz +0 -0
  331. package/public/assets/ktxTextureLoader-zpgT--10.js +1 -0
  332. package/public/assets/ktxTextureLoader-zpgT--10.js.br +0 -0
  333. package/public/assets/ktxTextureLoader-zpgT--10.js.gz +0 -0
  334. package/public/assets/lazy-CI-V5lCV.js +2 -0
  335. package/public/assets/lazy-CI-V5lCV.js.br +0 -0
  336. package/public/assets/lazy-CI-V5lCV.js.gz +0 -0
  337. package/public/assets/lod.fragment-B28SQFUx.js +3 -0
  338. package/public/assets/lod.fragment-B28SQFUx.js.br +0 -0
  339. package/public/assets/lod.fragment-B28SQFUx.js.gz +0 -0
  340. package/public/assets/lod.fragment-DOjU_E37.js +3 -0
  341. package/public/assets/lod.fragment-DOjU_E37.js.br +2 -0
  342. package/public/assets/lod.fragment-DOjU_E37.js.gz +0 -0
  343. package/public/assets/lodCube.fragment-B_ALsGmh.js +22 -0
  344. package/public/assets/lodCube.fragment-B_ALsGmh.js.br +0 -0
  345. package/public/assets/lodCube.fragment-B_ALsGmh.js.gz +0 -0
  346. package/public/assets/lodCube.fragment-CzeVIOa3.js +22 -0
  347. package/public/assets/lodCube.fragment-CzeVIOa3.js.br +0 -0
  348. package/public/assets/lodCube.fragment-CzeVIOa3.js.gz +0 -0
  349. package/public/assets/logDepthDeclaration-C8UZWL7A.js +4 -0
  350. package/public/assets/logDepthDeclaration-DSZN0VWa.js +4 -0
  351. package/public/assets/logDepthFragment-BaJ2YjZ0.js +4 -0
  352. package/public/assets/logDepthFragment-BaJ2YjZ0.js.br +0 -0
  353. package/public/assets/logDepthFragment-BaJ2YjZ0.js.gz +0 -0
  354. package/public/assets/logDepthFragment-CpZV3R_E.js +4 -0
  355. package/public/assets/logDepthVertex-B8jNoEwN.js +4 -0
  356. package/public/assets/logDepthVertex-B8jNoEwN.js.br +0 -0
  357. package/public/assets/logDepthVertex-B8jNoEwN.js.gz +0 -0
  358. package/public/assets/logDepthVertex-xgQTn7wg.js +4 -0
  359. package/public/assets/logDepthVertex-xgQTn7wg.js.br +0 -0
  360. package/public/assets/logDepthVertex-xgQTn7wg.js.gz +0 -0
  361. package/public/assets/mainUVVaryingDeclaration-CTzt4kpd.js +4 -0
  362. package/public/assets/mainUVVaryingDeclaration-DPCXXS4Y.js +4 -0
  363. package/public/assets/meshUboDeclaration-C5p-TivH.js +13 -0
  364. package/public/assets/meshUboDeclaration-C5p-TivH.js.br +0 -0
  365. package/public/assets/meshUboDeclaration-C5p-TivH.js.gz +0 -0
  366. package/public/assets/meshUboDeclaration-DKldQKni.js +13 -0
  367. package/public/assets/meshUboDeclaration-DKldQKni.js.br +0 -0
  368. package/public/assets/meshUboDeclaration-DKldQKni.js.gz +0 -0
  369. package/public/assets/morphTargetsVertex-BDbfSote.js +100 -0
  370. package/public/assets/morphTargetsVertex-BDbfSote.js.br +0 -0
  371. package/public/assets/morphTargetsVertex-BDbfSote.js.gz +0 -0
  372. package/public/assets/oitFinalSimpleBlend.fragment-DtE63qrD.js +3 -0
  373. package/public/assets/oitFinalSimpleBlend.fragment-DtE63qrD.js.br +0 -0
  374. package/public/assets/oitFinalSimpleBlend.fragment-DtE63qrD.js.gz +0 -0
  375. package/public/assets/oitFinalSimpleBlend.fragment-ZwpH3v_v.js +2 -0
  376. package/public/assets/oitFinalSimpleBlend.fragment-ZwpH3v_v.js.br +0 -0
  377. package/public/assets/oitFinalSimpleBlend.fragment-ZwpH3v_v.js.gz +0 -0
  378. package/public/assets/oitFragment-B8hFhX-8.js +1077 -0
  379. package/public/assets/oitFragment-B8hFhX-8.js.br +0 -0
  380. package/public/assets/oitFragment-B8hFhX-8.js.gz +0 -0
  381. package/public/assets/oitFragment-B_HlWcYZ.js +1202 -0
  382. package/public/assets/oitFragment-B_HlWcYZ.js.br +0 -0
  383. package/public/assets/oitFragment-B_HlWcYZ.js.gz +0 -0
  384. package/public/assets/openpbrMaterial-t_lYoXh4.js +2 -0
  385. package/public/assets/openpbrMaterial-t_lYoXh4.js.br +0 -0
  386. package/public/assets/openpbrMaterial-t_lYoXh4.js.gz +0 -0
  387. package/public/assets/outline.fragment-DEsg98mo.js +21 -0
  388. package/public/assets/outline.fragment-DEsg98mo.js.br +0 -0
  389. package/public/assets/outline.fragment-DEsg98mo.js.gz +0 -0
  390. package/public/assets/outline.fragment-WqsugjI-.js +18 -0
  391. package/public/assets/outline.fragment-WqsugjI-.js.br +3 -0
  392. package/public/assets/outline.fragment-WqsugjI-.js.gz +0 -0
  393. package/public/assets/outline.vertex-CVL3AfNh.js +47 -0
  394. package/public/assets/outline.vertex-CVL3AfNh.js.br +0 -0
  395. package/public/assets/outline.vertex-CVL3AfNh.js.gz +0 -0
  396. package/public/assets/outline.vertex-CtQ-HC3X.js +47 -0
  397. package/public/assets/outline.vertex-CtQ-HC3X.js.br +0 -0
  398. package/public/assets/outline.vertex-CtQ-HC3X.js.gz +0 -0
  399. package/public/assets/passCube.fragment-CHI4OPgd.js +23 -0
  400. package/public/assets/passCube.fragment-CHI4OPgd.js.br +0 -0
  401. package/public/assets/passCube.fragment-CHI4OPgd.js.gz +0 -0
  402. package/public/assets/passCube.fragment-DLbzh6pI.js +23 -0
  403. package/public/assets/passCube.fragment-DLbzh6pI.js.br +0 -0
  404. package/public/assets/passCube.fragment-DLbzh6pI.js.gz +0 -0
  405. package/public/assets/pbr.fragment-DHPEcGrm.js +3327 -0
  406. package/public/assets/pbr.fragment-DHPEcGrm.js.br +0 -0
  407. package/public/assets/pbr.fragment-DHPEcGrm.js.gz +0 -0
  408. package/public/assets/pbr.fragment-KiX_RvyZ.js +3277 -0
  409. package/public/assets/pbr.fragment-KiX_RvyZ.js.br +0 -0
  410. package/public/assets/pbr.fragment-KiX_RvyZ.js.gz +0 -0
  411. package/public/assets/pbr.vertex-CVSRg4tx.js +357 -0
  412. package/public/assets/pbr.vertex-CVSRg4tx.js.br +0 -0
  413. package/public/assets/pbr.vertex-CVSRg4tx.js.gz +0 -0
  414. package/public/assets/pbr.vertex-Dp30Rtkl.js +227 -0
  415. package/public/assets/pbr.vertex-Dp30Rtkl.js.br +0 -0
  416. package/public/assets/pbr.vertex-Dp30Rtkl.js.gz +0 -0
  417. package/public/assets/playable-sdk-D6RL-8B7.js +135 -0
  418. package/public/assets/playable-sdk-D6RL-8B7.js.br +0 -0
  419. package/public/assets/playable-sdk-D6RL-8B7.js.gz +0 -0
  420. package/public/assets/playable-standard-project-CkKWpnr-.js +4943 -0
  421. package/public/assets/playable-standard-project-CkKWpnr-.js.br +0 -0
  422. package/public/assets/playable-standard-project-CkKWpnr-.js.gz +0 -0
  423. package/public/assets/rgbdDecode.fragment-CU4ChTYE.js +5 -0
  424. package/public/assets/rgbdDecode.fragment-CU4ChTYE.js.br +0 -0
  425. package/public/assets/rgbdDecode.fragment-CU4ChTYE.js.gz +0 -0
  426. package/public/assets/rgbdDecode.fragment-DhrCd3U4.js +5 -0
  427. package/public/assets/rgbdDecode.fragment-DhrCd3U4.js.br +3 -0
  428. package/public/assets/rgbdDecode.fragment-DhrCd3U4.js.gz +0 -0
  429. package/public/assets/rgbdEncode.fragment-Bt1zaovT.js +5 -0
  430. package/public/assets/rgbdEncode.fragment-Bt1zaovT.js.br +0 -0
  431. package/public/assets/rgbdEncode.fragment-Bt1zaovT.js.gz +0 -0
  432. package/public/assets/rgbdEncode.fragment-CfKDkRU3.js +5 -0
  433. package/public/assets/rgbdEncode.fragment-CfKDkRU3.js.br +0 -0
  434. package/public/assets/rgbdEncode.fragment-CfKDkRU3.js.gz +0 -0
  435. package/public/assets/sceneLoader-DS5g2vTC.js +1 -0
  436. package/public/assets/sceneLoader-DS5g2vTC.js.br +0 -0
  437. package/public/assets/sceneLoader-DS5g2vTC.js.gz +0 -0
  438. package/public/assets/screenSpaceCurvature.fragment-Od67z-rQ.js +15 -0
  439. package/public/assets/screenSpaceCurvature.fragment-Od67z-rQ.js.br +0 -0
  440. package/public/assets/screenSpaceCurvature.fragment-Od67z-rQ.js.gz +0 -0
  441. package/public/assets/selection.fragment-CRMhdE35.js +35 -0
  442. package/public/assets/selection.fragment-CRMhdE35.js.br +0 -0
  443. package/public/assets/selection.fragment-CRMhdE35.js.gz +0 -0
  444. package/public/assets/selection.fragment-cSqXB6nx.js +35 -0
  445. package/public/assets/selection.fragment-cSqXB6nx.js.br +0 -0
  446. package/public/assets/selection.fragment-cSqXB6nx.js.gz +0 -0
  447. package/public/assets/selection.vertex-B5sPJWi2.js +74 -0
  448. package/public/assets/selection.vertex-B5sPJWi2.js.br +0 -0
  449. package/public/assets/selection.vertex-B5sPJWi2.js.gz +0 -0
  450. package/public/assets/selection.vertex-Dp4qd1GF.js +73 -0
  451. package/public/assets/selection.vertex-Dp4qd1GF.js.br +0 -0
  452. package/public/assets/selection.vertex-Dp4qd1GF.js.gz +0 -0
  453. package/public/assets/selectionOutline.fragment-CaYdhbIY.js +47 -0
  454. package/public/assets/selectionOutline.fragment-CaYdhbIY.js.br +0 -0
  455. package/public/assets/selectionOutline.fragment-CaYdhbIY.js.gz +0 -0
  456. package/public/assets/selectionOutline.fragment-RBpUe89m.js +48 -0
  457. package/public/assets/selectionOutline.fragment-RBpUe89m.js.br +0 -0
  458. package/public/assets/selectionOutline.fragment-RBpUe89m.js.gz +0 -0
  459. package/public/assets/shadowMap.fragment-BecpzSny.js +78 -0
  460. package/public/assets/shadowMap.fragment-BecpzSny.js.br +0 -0
  461. package/public/assets/shadowMap.fragment-BecpzSny.js.gz +0 -0
  462. package/public/assets/shadowMap.fragment-BhrOFpmK.js +79 -0
  463. package/public/assets/shadowMap.fragment-BhrOFpmK.js.br +0 -0
  464. package/public/assets/shadowMap.fragment-BhrOFpmK.js.gz +0 -0
  465. package/public/assets/shadowMap.vertex-DV4Ec23Y.js +119 -0
  466. package/public/assets/shadowMap.vertex-DV4Ec23Y.js.br +0 -0
  467. package/public/assets/shadowMap.vertex-DV4Ec23Y.js.gz +0 -0
  468. package/public/assets/shadowMap.vertex-Dpx2-6XS.js +109 -0
  469. package/public/assets/shadowMap.vertex-Dpx2-6XS.js.br +0 -0
  470. package/public/assets/shadowMap.vertex-Dpx2-6XS.js.gz +0 -0
  471. package/public/assets/shadowMapFragmentSoftTransparentShadow-BHumE7-J.js +4 -0
  472. package/public/assets/shadowMapFragmentSoftTransparentShadow-BHumE7-J.js.br +2 -0
  473. package/public/assets/shadowMapFragmentSoftTransparentShadow-BHumE7-J.js.gz +0 -0
  474. package/public/assets/shadowMapFragmentSoftTransparentShadow-CrPC6Hns.js +4 -0
  475. package/public/assets/shadowMapFragmentSoftTransparentShadow-CrPC6Hns.js.br +0 -0
  476. package/public/assets/shadowMapFragmentSoftTransparentShadow-CrPC6Hns.js.gz +0 -0
  477. package/public/assets/sharpen.fragment-CPdQPlDe.js +8 -0
  478. package/public/assets/sharpen.fragment-CPdQPlDe.js.br +0 -0
  479. package/public/assets/sharpen.fragment-CPdQPlDe.js.gz +0 -0
  480. package/public/assets/textureMerger.fragment-BNxx2w1v.js +76 -0
  481. package/public/assets/textureMerger.fragment-BNxx2w1v.js.br +0 -0
  482. package/public/assets/textureMerger.fragment-BNxx2w1v.js.gz +0 -0
  483. package/public/assets/textureMerger.fragment-CPq4n9w5.js +84 -0
  484. package/public/assets/textureMerger.fragment-CPq4n9w5.js.br +0 -0
  485. package/public/assets/textureMerger.fragment-CPq4n9w5.js.gz +0 -0
  486. package/public/assets/tgaTextureLoader-B7dlONGx.js +1 -0
  487. package/public/assets/tgaTextureLoader-B7dlONGx.js.br +0 -0
  488. package/public/assets/tgaTextureLoader-B7dlONGx.js.gz +0 -0
  489. package/public/assets/vertexColorMixing-BUQkJeP0.js +24 -0
  490. package/public/assets/vertexColorMixing-BUQkJeP0.js.br +2 -0
  491. package/public/assets/vertexColorMixing-BUQkJeP0.js.gz +0 -0
  492. package/public/assets/vertexColorMixing-Co5x3WYA.js +20 -0
  493. package/public/assets/vertexColorMixing-Co5x3WYA.js.br +0 -0
  494. package/public/assets/vertexColorMixing-Co5x3WYA.js.gz +0 -0
  495. package/public/assets/volumetricLightingBlendVolume.fragment-D01l1w1u.js +11 -0
  496. package/public/assets/volumetricLightingBlendVolume.fragment-D01l1w1u.js.br +1 -0
  497. package/public/assets/volumetricLightingBlendVolume.fragment-D01l1w1u.js.gz +0 -0
  498. package/public/assets/volumetricLightingBlendVolume.fragment-Dq5kceRW.js +12 -0
  499. package/public/assets/volumetricLightingBlendVolume.fragment-Dq5kceRW.js.br +0 -0
  500. package/public/assets/volumetricLightingBlendVolume.fragment-Dq5kceRW.js.gz +0 -0
  501. package/public/assets/volumetricLightingRenderVolume.fragment-BCxtzv0C.js +13 -0
  502. package/public/assets/volumetricLightingRenderVolume.fragment-BCxtzv0C.js.br +0 -0
  503. package/public/assets/volumetricLightingRenderVolume.fragment-BCxtzv0C.js.gz +0 -0
  504. package/public/assets/volumetricLightingRenderVolume.fragment-DwEKCs2S.js +15 -0
  505. package/public/assets/volumetricLightingRenderVolume.fragment-DwEKCs2S.js.br +0 -0
  506. package/public/assets/volumetricLightingRenderVolume.fragment-DwEKCs2S.js.gz +0 -0
  507. package/public/assets/volumetricLightingRenderVolume.vertex-CNPaSIo7.js +5 -0
  508. package/public/assets/volumetricLightingRenderVolume.vertex-CNPaSIo7.js.br +2 -0
  509. package/public/assets/volumetricLightingRenderVolume.vertex-CNPaSIo7.js.gz +0 -0
  510. package/public/assets/volumetricLightingRenderVolume.vertex-EiQlWi_X.js +4 -0
  511. package/public/assets/volumetricLightingRenderVolume.vertex-EiQlWi_X.js.br +0 -0
  512. package/public/assets/volumetricLightingRenderVolume.vertex-EiQlWi_X.js.gz +0 -0
  513. package/public/assets/webAudioBus-DYpSKoOA.js +1 -0
  514. package/public/assets/webAudioBus-DYpSKoOA.js.br +0 -0
  515. package/public/assets/webAudioBus-DYpSKoOA.js.gz +0 -0
  516. package/public/assets/webAudioMainBus-CP3f56US.js +1 -0
  517. package/public/assets/webAudioMainBus-CP3f56US.js.br +0 -0
  518. package/public/assets/webAudioMainBus-CP3f56US.js.gz +0 -0
  519. package/public/index.html +5 -3
  520. package/public/index.html.br +0 -0
  521. package/public/index.html.gz +0 -0
  522. package/runtime/editor-control-plane.mjs +5 -5
  523. package/worker/editor-service-worker.mjs +28 -1
  524. package/public/assets/abstractAudioBus-CwSv7Eb3.js +0 -1
  525. package/public/assets/animation-Dc6xotit.js +0 -1
  526. package/public/assets/animation-Dc6xotit.js.br +0 -0
  527. package/public/assets/animation-Dc6xotit.js.gz +0 -0
  528. package/public/assets/animationGroup-Bb43X_Yv.js +0 -1
  529. package/public/assets/animationGroup-Bb43X_Yv.js.br +0 -0
  530. package/public/assets/animationGroup-Bb43X_Yv.js.gz +0 -0
  531. package/public/assets/arcRotateCamera-DCsKO46S.js +0 -1
  532. package/public/assets/arcRotateCamera-DCsKO46S.js.br +0 -0
  533. package/public/assets/arcRotateCamera-DCsKO46S.js.gz +0 -0
  534. package/public/assets/babylon-core-4EDDhHi5.js +0 -1
  535. package/public/assets/babylon-core-4EDDhHi5.js.br +0 -0
  536. package/public/assets/babylon-core-4EDDhHi5.js.gz +0 -0
  537. package/public/assets/babylon-core-DTJyI3OO.js +0 -13882
  538. package/public/assets/babylon-core-DTJyI3OO.js.br +0 -0
  539. package/public/assets/babylon-core-DTJyI3OO.js.gz +0 -0
  540. package/public/assets/basisTextureLoader-B_l81qWL.js +0 -1
  541. package/public/assets/basisTextureLoader-B_l81qWL.js.br +0 -0
  542. package/public/assets/basisTextureLoader-B_l81qWL.js.gz +0 -0
  543. package/public/assets/bumpVertex-B5vn1mAU.js +0 -173
  544. package/public/assets/bumpVertex-B5vn1mAU.js.br +0 -0
  545. package/public/assets/bumpVertex-B5vn1mAU.js.gz +0 -0
  546. package/public/assets/bumpVertex-BnMgSKmg.js +0 -177
  547. package/public/assets/bumpVertex-BnMgSKmg.js.br +0 -0
  548. package/public/assets/bumpVertex-BnMgSKmg.js.gz +0 -0
  549. package/public/assets/chromaticAberration.fragment-Cl04McZg.js +0 -7
  550. package/public/assets/chromaticAberration.fragment-Cl04McZg.js.br +0 -0
  551. package/public/assets/chromaticAberration.fragment-Cl04McZg.js.gz +0 -0
  552. package/public/assets/chromaticAberration.fragment-rqEaR71j.js +0 -6
  553. package/public/assets/chromaticAberration.fragment-rqEaR71j.js.br +0 -0
  554. package/public/assets/chromaticAberration.fragment-rqEaR71j.js.gz +0 -0
  555. package/public/assets/circleOfConfusion.fragment-BvIGWjO3.js +0 -17
  556. package/public/assets/circleOfConfusion.fragment-BvIGWjO3.js.br +0 -0
  557. package/public/assets/circleOfConfusion.fragment-BvIGWjO3.js.gz +0 -0
  558. package/public/assets/circleOfConfusion.fragment-DSOONwfm.js +0 -17
  559. package/public/assets/circleOfConfusion.fragment-DSOONwfm.js.br +0 -0
  560. package/public/assets/circleOfConfusion.fragment-DSOONwfm.js.gz +0 -0
  561. package/public/assets/clipPlaneFragment-CFFp2pmA.js +0 -46
  562. package/public/assets/clipPlaneFragment-CFFp2pmA.js.br +0 -0
  563. package/public/assets/clipPlaneFragment-CFFp2pmA.js.gz +0 -0
  564. package/public/assets/clipPlaneVertex-DH0MuwgY.js +0 -177
  565. package/public/assets/clipPlaneVertex-DH0MuwgY.js.br +0 -0
  566. package/public/assets/clipPlaneVertex-DH0MuwgY.js.gz +0 -0
  567. package/public/assets/color.fragment-Cd4tHTqv.js +0 -20
  568. package/public/assets/color.fragment-Cd4tHTqv.js.br +0 -0
  569. package/public/assets/color.fragment-Cd4tHTqv.js.gz +0 -0
  570. package/public/assets/color.fragment-DOCfKc_w.js +0 -21
  571. package/public/assets/color.fragment-DOCfKc_w.js.br +0 -0
  572. package/public/assets/color.fragment-DOCfKc_w.js.gz +0 -0
  573. package/public/assets/color.vertex-DUZmxGC1.js +0 -32
  574. package/public/assets/color.vertex-DUZmxGC1.js.br +0 -0
  575. package/public/assets/color.vertex-DUZmxGC1.js.gz +0 -0
  576. package/public/assets/color.vertex-DpELFZoU.js +0 -39
  577. package/public/assets/color.vertex-DpELFZoU.js.br +0 -0
  578. package/public/assets/color.vertex-DpELFZoU.js.gz +0 -0
  579. package/public/assets/dds-CEBk2t4r.js +0 -1
  580. package/public/assets/dds-CEBk2t4r.js.br +0 -0
  581. package/public/assets/dds-CEBk2t4r.js.gz +0 -0
  582. package/public/assets/ddsTextureLoader-h9Yk9VPt.js +0 -1
  583. package/public/assets/ddsTextureLoader-h9Yk9VPt.js.br +0 -0
  584. package/public/assets/ddsTextureLoader-h9Yk9VPt.js.gz +0 -0
  585. package/public/assets/default.fragment-COzNPJ7-.js +0 -526
  586. package/public/assets/default.fragment-COzNPJ7-.js.br +0 -0
  587. package/public/assets/default.fragment-COzNPJ7-.js.gz +0 -0
  588. package/public/assets/default.fragment-CQPGwgh4.js +0 -468
  589. package/public/assets/default.fragment-CQPGwgh4.js.br +0 -0
  590. package/public/assets/default.fragment-CQPGwgh4.js.gz +0 -0
  591. package/public/assets/default.vertex-GHPY8HrU.js +0 -181
  592. package/public/assets/default.vertex-GHPY8HrU.js.br +0 -0
  593. package/public/assets/default.vertex-GHPY8HrU.js.gz +0 -0
  594. package/public/assets/default.vertex-cNRo56GQ.js +0 -193
  595. package/public/assets/default.vertex-cNRo56GQ.js.br +0 -0
  596. package/public/assets/default.vertex-cNRo56GQ.js.gz +0 -0
  597. package/public/assets/defaultUboDeclaration-BeFW9U7n.js +0 -7
  598. package/public/assets/defaultUboDeclaration-BeFW9U7n.js.br +0 -0
  599. package/public/assets/defaultUboDeclaration-BeFW9U7n.js.gz +0 -0
  600. package/public/assets/defaultUboDeclaration-DiwLbHSx.js +0 -5
  601. package/public/assets/defaultUboDeclaration-DiwLbHSx.js.br +0 -4
  602. package/public/assets/defaultUboDeclaration-DiwLbHSx.js.gz +0 -0
  603. package/public/assets/depth.fragment-BIeQuETO.js +0 -40
  604. package/public/assets/depth.fragment-BIeQuETO.js.br +0 -5
  605. package/public/assets/depth.fragment-BIeQuETO.js.gz +0 -0
  606. package/public/assets/depth.vertex-CgqNuCSg.js +0 -57
  607. package/public/assets/depth.vertex-CgqNuCSg.js.br +0 -0
  608. package/public/assets/depth.vertex-CgqNuCSg.js.gz +0 -0
  609. package/public/assets/depthBoxBlur.fragment-BTEjIc12.js +0 -6
  610. package/public/assets/depthBoxBlur.fragment-BTEjIc12.js.br +0 -0
  611. package/public/assets/depthBoxBlur.fragment-BTEjIc12.js.gz +0 -0
  612. package/public/assets/depthBoxBlur.fragment-BUauWaJ9.js +0 -5
  613. package/public/assets/depthBoxBlur.fragment-BUauWaJ9.js.br +0 -0
  614. package/public/assets/depthBoxBlur.fragment-BUauWaJ9.js.gz +0 -0
  615. package/public/assets/depthOfFieldMerge.fragment-BJMZs7hN.js +0 -26
  616. package/public/assets/depthOfFieldMerge.fragment-BJMZs7hN.js.br +0 -0
  617. package/public/assets/depthOfFieldMerge.fragment-BJMZs7hN.js.gz +0 -0
  618. package/public/assets/depthOfFieldMerge.fragment-xA1xz5uY.js +0 -21
  619. package/public/assets/depthOfFieldMerge.fragment-xA1xz5uY.js.br +0 -0
  620. package/public/assets/depthOfFieldMerge.fragment-xA1xz5uY.js.gz +0 -0
  621. package/public/assets/easing-BWZ0IelG.js +0 -1
  622. package/public/assets/easing-BWZ0IelG.js.br +0 -0
  623. package/public/assets/easing-BWZ0IelG.js.gz +0 -0
  624. package/public/assets/exrTextureLoader-DI-rMOXk.js +0 -1
  625. package/public/assets/exrTextureLoader-DI-rMOXk.js.br +0 -0
  626. package/public/assets/exrTextureLoader-DI-rMOXk.js.gz +0 -0
  627. package/public/assets/flowGraphArrayIndexBlock-BpGAc_ay.js +0 -1
  628. package/public/assets/flowGraphArrayIndexBlock-BpGAc_ay.js.br +0 -0
  629. package/public/assets/flowGraphArrayIndexBlock-BpGAc_ay.js.gz +0 -0
  630. package/public/assets/flowGraphBezierCurveEasingBlock-BPsWBgdF.js +0 -1
  631. package/public/assets/flowGraphBezierCurveEasingBlock-BPsWBgdF.js.br +0 -0
  632. package/public/assets/flowGraphBezierCurveEasingBlock-BPsWBgdF.js.gz +0 -0
  633. package/public/assets/flowGraphBinaryOperationBlock-Cm67fMr2.js +0 -1
  634. package/public/assets/flowGraphBinaryOperationBlock-Cm67fMr2.js.br +0 -2
  635. package/public/assets/flowGraphBinaryOperationBlock-Cm67fMr2.js.gz +0 -0
  636. package/public/assets/flowGraphBranchBlock-CL09OjgM.js +0 -1
  637. package/public/assets/flowGraphBranchBlock-CL09OjgM.js.br +0 -0
  638. package/public/assets/flowGraphBranchBlock-CL09OjgM.js.gz +0 -0
  639. package/public/assets/flowGraphCachedOperationBlock-DpztldqR.js +0 -1
  640. package/public/assets/flowGraphCachedOperationBlock-DpztldqR.js.br +0 -0
  641. package/public/assets/flowGraphCachedOperationBlock-DpztldqR.js.gz +0 -0
  642. package/public/assets/flowGraphCancelDelayBlock-DS2leoEQ.js +0 -1
  643. package/public/assets/flowGraphCancelDelayBlock-DS2leoEQ.js.br +0 -0
  644. package/public/assets/flowGraphCancelDelayBlock-DS2leoEQ.js.gz +0 -0
  645. package/public/assets/flowGraphCodeExecutionBlock-CZsH6xC3.js +0 -1
  646. package/public/assets/flowGraphCodeExecutionBlock-CZsH6xC3.js.br +0 -0
  647. package/public/assets/flowGraphCodeExecutionBlock-CZsH6xC3.js.gz +0 -0
  648. package/public/assets/flowGraphConditionalDataBlock-BT491PP3.js +0 -1
  649. package/public/assets/flowGraphConditionalDataBlock-BT491PP3.js.br +0 -0
  650. package/public/assets/flowGraphConditionalDataBlock-BT491PP3.js.gz +0 -0
  651. package/public/assets/flowGraphConsoleLogBlock-TWgVe2O2.js +0 -1
  652. package/public/assets/flowGraphConsoleLogBlock-TWgVe2O2.js.br +0 -0
  653. package/public/assets/flowGraphConsoleLogBlock-TWgVe2O2.js.gz +0 -0
  654. package/public/assets/flowGraphConstantBlock-Db7DzsBC.js +0 -1
  655. package/public/assets/flowGraphConstantBlock-Db7DzsBC.js.br +0 -0
  656. package/public/assets/flowGraphConstantBlock-Db7DzsBC.js.gz +0 -0
  657. package/public/assets/flowGraphContextBlock-CwtT7HJj.js +0 -1
  658. package/public/assets/flowGraphContextBlock-CwtT7HJj.js.br +0 -0
  659. package/public/assets/flowGraphContextBlock-CwtT7HJj.js.gz +0 -0
  660. package/public/assets/flowGraphCounterBlock-DXAWFHyt.js +0 -1
  661. package/public/assets/flowGraphCounterBlock-DXAWFHyt.js.br +0 -0
  662. package/public/assets/flowGraphCounterBlock-DXAWFHyt.js.gz +0 -0
  663. package/public/assets/flowGraphDataSwitchBlock-CA0XNPt5.js +0 -1
  664. package/public/assets/flowGraphDataSwitchBlock-CA0XNPt5.js.br +0 -0
  665. package/public/assets/flowGraphDataSwitchBlock-CA0XNPt5.js.gz +0 -0
  666. package/public/assets/flowGraphDebounceBlock-CnRyqOcu.js +0 -1
  667. package/public/assets/flowGraphDebounceBlock-CnRyqOcu.js.br +0 -0
  668. package/public/assets/flowGraphDebounceBlock-CnRyqOcu.js.gz +0 -0
  669. package/public/assets/flowGraphDoNBlock-X4iiGpSw.js +0 -1
  670. package/public/assets/flowGraphDoNBlock-X4iiGpSw.js.br +0 -0
  671. package/public/assets/flowGraphDoNBlock-X4iiGpSw.js.gz +0 -0
  672. package/public/assets/flowGraphEasingBlock-CdNpFy_m.js +0 -1
  673. package/public/assets/flowGraphEasingBlock-CdNpFy_m.js.br +0 -0
  674. package/public/assets/flowGraphEasingBlock-CdNpFy_m.js.gz +0 -0
  675. package/public/assets/flowGraphFlipFlopBlock-JeU7xMBI.js +0 -1
  676. package/public/assets/flowGraphFlipFlopBlock-JeU7xMBI.js.br +0 -0
  677. package/public/assets/flowGraphFlipFlopBlock-JeU7xMBI.js.gz +0 -0
  678. package/public/assets/flowGraphForLoopBlock-upu1twwT.js +0 -1
  679. package/public/assets/flowGraphForLoopBlock-upu1twwT.js.br +0 -0
  680. package/public/assets/flowGraphForLoopBlock-upu1twwT.js.gz +0 -0
  681. package/public/assets/flowGraphFunctionReferenceBlock-Daffma5E.js +0 -1
  682. package/public/assets/flowGraphFunctionReferenceBlock-Daffma5E.js.br +0 -0
  683. package/public/assets/flowGraphFunctionReferenceBlock-Daffma5E.js.gz +0 -0
  684. package/public/assets/flowGraphGetAssetBlock-CxkPaXJB.js +0 -1
  685. package/public/assets/flowGraphGetAssetBlock-CxkPaXJB.js.br +0 -0
  686. package/public/assets/flowGraphGetAssetBlock-CxkPaXJB.js.gz +0 -0
  687. package/public/assets/flowGraphGetPropertyBlock-BDBDCjy7.js +0 -1
  688. package/public/assets/flowGraphGetPropertyBlock-BDBDCjy7.js.br +0 -0
  689. package/public/assets/flowGraphGetPropertyBlock-BDBDCjy7.js.gz +0 -0
  690. package/public/assets/flowGraphGetVariableBlock-DOxlcCWT.js +0 -1
  691. package/public/assets/flowGraphGetVariableBlock-DOxlcCWT.js.br +0 -0
  692. package/public/assets/flowGraphGetVariableBlock-DOxlcCWT.js.gz +0 -0
  693. package/public/assets/flowGraphIndexOfBlock-yw6jUGKM.js +0 -1
  694. package/public/assets/flowGraphIndexOfBlock-yw6jUGKM.js.br +0 -0
  695. package/public/assets/flowGraphIndexOfBlock-yw6jUGKM.js.gz +0 -0
  696. package/public/assets/flowGraphInterpolationBlock-Ck5OamMG.js +0 -1
  697. package/public/assets/flowGraphInterpolationBlock-Ck5OamMG.js.br +0 -0
  698. package/public/assets/flowGraphInterpolationBlock-Ck5OamMG.js.gz +0 -0
  699. package/public/assets/flowGraphJsonPointerParserBlock-jvN_dUwJ.js +0 -1
  700. package/public/assets/flowGraphJsonPointerParserBlock-jvN_dUwJ.js.br +0 -0
  701. package/public/assets/flowGraphJsonPointerParserBlock-jvN_dUwJ.js.gz +0 -0
  702. package/public/assets/flowGraphMathBlocks-BVVFxcFy.js +0 -1
  703. package/public/assets/flowGraphMathBlocks-BVVFxcFy.js.br +0 -0
  704. package/public/assets/flowGraphMathBlocks-BVVFxcFy.js.gz +0 -0
  705. package/public/assets/flowGraphMathCombineExtractBlocks-CkflpSEK.js +0 -1
  706. package/public/assets/flowGraphMathCombineExtractBlocks-CkflpSEK.js.br +0 -0
  707. package/public/assets/flowGraphMathCombineExtractBlocks-CkflpSEK.js.gz +0 -0
  708. package/public/assets/flowGraphMatrixMathBlocks-BooSDlFa.js +0 -1
  709. package/public/assets/flowGraphMatrixMathBlocks-BooSDlFa.js.br +0 -0
  710. package/public/assets/flowGraphMatrixMathBlocks-BooSDlFa.js.gz +0 -0
  711. package/public/assets/flowGraphMeshPickEventBlock-IhpVOKEA.js +0 -1
  712. package/public/assets/flowGraphMeshPickEventBlock-IhpVOKEA.js.br +0 -0
  713. package/public/assets/flowGraphMeshPickEventBlock-IhpVOKEA.js.gz +0 -0
  714. package/public/assets/flowGraphMultiGateBlock-RZGBo11p.js +0 -1
  715. package/public/assets/flowGraphMultiGateBlock-RZGBo11p.js.br +0 -0
  716. package/public/assets/flowGraphMultiGateBlock-RZGBo11p.js.gz +0 -0
  717. package/public/assets/flowGraphPauseAnimationBlock-Bkkg5xPh.js +0 -1
  718. package/public/assets/flowGraphPauseAnimationBlock-Bkkg5xPh.js.br +0 -0
  719. package/public/assets/flowGraphPauseAnimationBlock-Bkkg5xPh.js.gz +0 -0
  720. package/public/assets/flowGraphPlayAnimationBlock-BGYK4Gwy.js +0 -1
  721. package/public/assets/flowGraphPlayAnimationBlock-BGYK4Gwy.js.br +0 -0
  722. package/public/assets/flowGraphPlayAnimationBlock-BGYK4Gwy.js.gz +0 -0
  723. package/public/assets/flowGraphPointerOutEventBlock-BK_POpYI.js +0 -1
  724. package/public/assets/flowGraphPointerOutEventBlock-BK_POpYI.js.br +0 -0
  725. package/public/assets/flowGraphPointerOutEventBlock-BK_POpYI.js.gz +0 -0
  726. package/public/assets/flowGraphPointerOverEventBlock-BmOvPDps.js +0 -1
  727. package/public/assets/flowGraphPointerOverEventBlock-BmOvPDps.js.br +0 -0
  728. package/public/assets/flowGraphPointerOverEventBlock-BmOvPDps.js.gz +0 -0
  729. package/public/assets/flowGraphReceiveCustomEventBlock-CfmvvT2p.js +0 -1
  730. package/public/assets/flowGraphReceiveCustomEventBlock-CfmvvT2p.js.br +0 -0
  731. package/public/assets/flowGraphReceiveCustomEventBlock-CfmvvT2p.js.gz +0 -0
  732. package/public/assets/flowGraphSceneReadyEventBlock-CE7HFh-1.js +0 -1
  733. package/public/assets/flowGraphSceneReadyEventBlock-CE7HFh-1.js.br +0 -0
  734. package/public/assets/flowGraphSceneReadyEventBlock-CE7HFh-1.js.gz +0 -0
  735. package/public/assets/flowGraphSceneTickEventBlock-D8AXFvpd.js +0 -1
  736. package/public/assets/flowGraphSceneTickEventBlock-D8AXFvpd.js.br +0 -0
  737. package/public/assets/flowGraphSceneTickEventBlock-D8AXFvpd.js.gz +0 -0
  738. package/public/assets/flowGraphSendCustomEventBlock-BGhCqHTV.js +0 -1
  739. package/public/assets/flowGraphSendCustomEventBlock-BGhCqHTV.js.br +0 -0
  740. package/public/assets/flowGraphSendCustomEventBlock-BGhCqHTV.js.gz +0 -0
  741. package/public/assets/flowGraphSequenceBlock-DeEAJCzS.js +0 -1
  742. package/public/assets/flowGraphSequenceBlock-DeEAJCzS.js.br +0 -0
  743. package/public/assets/flowGraphSequenceBlock-DeEAJCzS.js.gz +0 -0
  744. package/public/assets/flowGraphSetDelayBlock-DeADOVkO.js +0 -1
  745. package/public/assets/flowGraphSetDelayBlock-DeADOVkO.js.br +0 -0
  746. package/public/assets/flowGraphSetDelayBlock-DeADOVkO.js.gz +0 -0
  747. package/public/assets/flowGraphSetPropertyBlock-Df2COSkG.js +0 -1
  748. package/public/assets/flowGraphSetPropertyBlock-Df2COSkG.js.br +0 -0
  749. package/public/assets/flowGraphSetPropertyBlock-Df2COSkG.js.gz +0 -0
  750. package/public/assets/flowGraphSetVariableBlock-ClUcKlf6.js +0 -1
  751. package/public/assets/flowGraphSetVariableBlock-ClUcKlf6.js.br +0 -0
  752. package/public/assets/flowGraphSetVariableBlock-ClUcKlf6.js.gz +0 -0
  753. package/public/assets/flowGraphStopAnimationBlock-Bt8pe7f_.js +0 -1
  754. package/public/assets/flowGraphStopAnimationBlock-Bt8pe7f_.js.br +0 -0
  755. package/public/assets/flowGraphStopAnimationBlock-Bt8pe7f_.js.gz +0 -0
  756. package/public/assets/flowGraphSwitchBlock-zI-0kWak.js +0 -1
  757. package/public/assets/flowGraphSwitchBlock-zI-0kWak.js.br +0 -0
  758. package/public/assets/flowGraphSwitchBlock-zI-0kWak.js.gz +0 -0
  759. package/public/assets/flowGraphThrottleBlock-CivUgYqw.js +0 -1
  760. package/public/assets/flowGraphThrottleBlock-CivUgYqw.js.br +0 -3
  761. package/public/assets/flowGraphThrottleBlock-CivUgYqw.js.gz +0 -0
  762. package/public/assets/flowGraphTransformCoordinatesSystemBlock-Bc-3Xlmz.js +0 -1
  763. package/public/assets/flowGraphTransformCoordinatesSystemBlock-Bc-3Xlmz.js.br +0 -0
  764. package/public/assets/flowGraphTransformCoordinatesSystemBlock-Bc-3Xlmz.js.gz +0 -0
  765. package/public/assets/flowGraphTypeToTypeBlocks-C_XzvyYD.js +0 -1
  766. package/public/assets/flowGraphTypeToTypeBlocks-C_XzvyYD.js.br +0 -0
  767. package/public/assets/flowGraphTypeToTypeBlocks-C_XzvyYD.js.gz +0 -0
  768. package/public/assets/flowGraphUnaryOperationBlock-XDIPCIyI.js +0 -1
  769. package/public/assets/flowGraphUnaryOperationBlock-XDIPCIyI.js.br +0 -2
  770. package/public/assets/flowGraphUnaryOperationBlock-XDIPCIyI.js.gz +0 -0
  771. package/public/assets/flowGraphVectorMathBlocks-BYkqfm_k.js +0 -1
  772. package/public/assets/flowGraphVectorMathBlocks-BYkqfm_k.js.br +0 -0
  773. package/public/assets/flowGraphVectorMathBlocks-BYkqfm_k.js.gz +0 -0
  774. package/public/assets/flowGraphWaitAllBlock-C0YksXPg.js +0 -1
  775. package/public/assets/flowGraphWaitAllBlock-C0YksXPg.js.br +0 -0
  776. package/public/assets/flowGraphWaitAllBlock-C0YksXPg.js.gz +0 -0
  777. package/public/assets/flowGraphWhileLoopBlock-Bn-UE83p.js +0 -1
  778. package/public/assets/flowGraphWhileLoopBlock-Bn-UE83p.js.br +0 -0
  779. package/public/assets/flowGraphWhileLoopBlock-Bn-UE83p.js.gz +0 -0
  780. package/public/assets/fogFragmentDeclaration-C5u8Pgqo.js +0 -23
  781. package/public/assets/fogFragmentDeclaration-C5u8Pgqo.js.br +0 -0
  782. package/public/assets/fogFragmentDeclaration-C5u8Pgqo.js.gz +0 -0
  783. package/public/assets/fogFragmentDeclaration-mP0obfB9.js +0 -22
  784. package/public/assets/fogFragmentDeclaration-mP0obfB9.js.br +0 -0
  785. package/public/assets/fogFragmentDeclaration-mP0obfB9.js.gz +0 -0
  786. package/public/assets/glowBlurPostProcess.fragment-C6uju2t8.js +0 -7
  787. package/public/assets/glowBlurPostProcess.fragment-C6uju2t8.js.br +0 -0
  788. package/public/assets/glowBlurPostProcess.fragment-C6uju2t8.js.gz +0 -0
  789. package/public/assets/glowBlurPostProcess.fragment-Dr-qkitX.js +0 -7
  790. package/public/assets/glowBlurPostProcess.fragment-Dr-qkitX.js.br +0 -0
  791. package/public/assets/glowBlurPostProcess.fragment-Dr-qkitX.js.gz +0 -0
  792. package/public/assets/glowMapGeneration.fragment-BDnwvFlG.js +0 -63
  793. package/public/assets/glowMapGeneration.fragment-BDnwvFlG.js.br +0 -0
  794. package/public/assets/glowMapGeneration.fragment-BDnwvFlG.js.gz +0 -0
  795. package/public/assets/glowMapGeneration.fragment-OrWzGMIp.js +0 -63
  796. package/public/assets/glowMapGeneration.fragment-OrWzGMIp.js.br +0 -0
  797. package/public/assets/glowMapGeneration.fragment-OrWzGMIp.js.gz +0 -0
  798. package/public/assets/glowMapGeneration.vertex-Bttf_lXK.js +0 -75
  799. package/public/assets/glowMapGeneration.vertex-Bttf_lXK.js.br +0 -0
  800. package/public/assets/glowMapGeneration.vertex-Bttf_lXK.js.gz +0 -0
  801. package/public/assets/glowMapGeneration.vertex-D495A0yk.js +0 -75
  802. package/public/assets/glowMapGeneration.vertex-D495A0yk.js.br +0 -0
  803. package/public/assets/glowMapGeneration.vertex-D495A0yk.js.gz +0 -0
  804. package/public/assets/glowMapMerge.fragment-BBy5fK8Z.js +0 -25
  805. package/public/assets/glowMapMerge.fragment-BBy5fK8Z.js.br +0 -0
  806. package/public/assets/glowMapMerge.fragment-BBy5fK8Z.js.gz +0 -0
  807. package/public/assets/glowMapMerge.fragment-DTuMSb13.js +0 -23
  808. package/public/assets/glowMapMerge.fragment-DTuMSb13.js.br +0 -0
  809. package/public/assets/glowMapMerge.fragment-DTuMSb13.js.gz +0 -0
  810. package/public/assets/glowMapMerge.vertex-DeQCVNmi.js +0 -7
  811. package/public/assets/glowMapMerge.vertex-DeQCVNmi.js.br +0 -2
  812. package/public/assets/glowMapMerge.vertex-DeQCVNmi.js.gz +0 -0
  813. package/public/assets/glowMapMerge.vertex-DvgWUOKt.js +0 -8
  814. package/public/assets/glowMapMerge.vertex-DvgWUOKt.js.br +0 -0
  815. package/public/assets/glowMapMerge.vertex-DvgWUOKt.js.gz +0 -0
  816. package/public/assets/grain.fragment-BWO-CJ7L.js +0 -5
  817. package/public/assets/grain.fragment-BWO-CJ7L.js.br +0 -0
  818. package/public/assets/grain.fragment-BWO-CJ7L.js.gz +0 -0
  819. package/public/assets/grain.fragment-CWIfbYlV.js +0 -6
  820. package/public/assets/grain.fragment-CWIfbYlV.js.br +0 -0
  821. package/public/assets/grain.fragment-CWIfbYlV.js.gz +0 -0
  822. package/public/assets/harmonicsFunctions-C2Q4EJ3Z.js +0 -192
  823. package/public/assets/harmonicsFunctions-C2Q4EJ3Z.js.br +0 -0
  824. package/public/assets/harmonicsFunctions-C2Q4EJ3Z.js.gz +0 -0
  825. package/public/assets/harmonicsFunctions-VLLgj-rF.js +0 -189
  826. package/public/assets/harmonicsFunctions-VLLgj-rF.js.br +0 -0
  827. package/public/assets/harmonicsFunctions-VLLgj-rF.js.gz +0 -0
  828. package/public/assets/hdrTextureLoader-DDzhSmx9.js +0 -2
  829. package/public/assets/hdrTextureLoader-DDzhSmx9.js.br +0 -0
  830. package/public/assets/hdrTextureLoader-DDzhSmx9.js.gz +0 -0
  831. package/public/assets/hemisphericLight-B2YCkAtw.js +0 -1329
  832. package/public/assets/hemisphericLight-B2YCkAtw.js.br +0 -0
  833. package/public/assets/hemisphericLight-B2YCkAtw.js.gz +0 -0
  834. package/public/assets/iesTextureLoader-BK_E12nT.js +0 -2
  835. package/public/assets/iesTextureLoader-BK_E12nT.js.br +0 -0
  836. package/public/assets/iesTextureLoader-BK_E12nT.js.gz +0 -0
  837. package/public/assets/index-DUdsbWh7.js +0 -4
  838. package/public/assets/index-DUdsbWh7.js.br +0 -0
  839. package/public/assets/index-DUdsbWh7.js.gz +0 -0
  840. package/public/assets/index-_NqBhNjW.js +0 -1
  841. package/public/assets/index-_NqBhNjW.js.br +0 -0
  842. package/public/assets/index-_NqBhNjW.js.gz +0 -0
  843. package/public/assets/instancesDeclaration--Hv3QWRD.js +0 -23
  844. package/public/assets/instancesDeclaration--Hv3QWRD.js.br +0 -2
  845. package/public/assets/instancesDeclaration--Hv3QWRD.js.gz +0 -0
  846. package/public/assets/ktxTextureLoader-i1W0tRYO.js +0 -1
  847. package/public/assets/ktxTextureLoader-i1W0tRYO.js.br +0 -0
  848. package/public/assets/ktxTextureLoader-i1W0tRYO.js.gz +0 -0
  849. package/public/assets/lazy-bPTMWkQf.js +0 -2
  850. package/public/assets/lazy-bPTMWkQf.js.br +0 -0
  851. package/public/assets/lazy-bPTMWkQf.js.gz +0 -0
  852. package/public/assets/lod.fragment-BNynDx2f.js +0 -3
  853. package/public/assets/lod.fragment-BNynDx2f.js.br +0 -1
  854. package/public/assets/lod.fragment-BNynDx2f.js.gz +0 -0
  855. package/public/assets/lod.fragment-Vryhczgv.js +0 -3
  856. package/public/assets/lod.fragment-Vryhczgv.js.br +0 -3
  857. package/public/assets/lod.fragment-Vryhczgv.js.gz +0 -0
  858. package/public/assets/lodCube.fragment-BnOVfRB2.js +0 -22
  859. package/public/assets/lodCube.fragment-BnOVfRB2.js.br +0 -1
  860. package/public/assets/lodCube.fragment-BnOVfRB2.js.gz +0 -0
  861. package/public/assets/lodCube.fragment-Dh_sp9xe.js +0 -22
  862. package/public/assets/lodCube.fragment-Dh_sp9xe.js.br +0 -0
  863. package/public/assets/lodCube.fragment-Dh_sp9xe.js.gz +0 -0
  864. package/public/assets/logDepthDeclaration-CuQOxmxx.js +0 -4
  865. package/public/assets/logDepthDeclaration-DanccFH2.js +0 -4
  866. package/public/assets/logDepthFragment-BavhnqdT.js +0 -4
  867. package/public/assets/logDepthFragment-BavhnqdT.js.br +0 -0
  868. package/public/assets/logDepthFragment-BavhnqdT.js.gz +0 -0
  869. package/public/assets/logDepthFragment-QtAbzC-k.js +0 -4
  870. package/public/assets/logDepthVertex-Bo2V8zmw.js +0 -4
  871. package/public/assets/logDepthVertex-Bo2V8zmw.js.br +0 -0
  872. package/public/assets/logDepthVertex-Bo2V8zmw.js.gz +0 -0
  873. package/public/assets/logDepthVertex-DOsyQ-jK.js +0 -4
  874. package/public/assets/logDepthVertex-DOsyQ-jK.js.br +0 -0
  875. package/public/assets/logDepthVertex-DOsyQ-jK.js.gz +0 -0
  876. package/public/assets/mainUVVaryingDeclaration-BUNVjnbO.js +0 -4
  877. package/public/assets/mainUVVaryingDeclaration-Bo0lGRhD.js +0 -4
  878. package/public/assets/meshUboDeclaration-BECF32TN.js +0 -13
  879. package/public/assets/meshUboDeclaration-BECF32TN.js.br +0 -2
  880. package/public/assets/meshUboDeclaration-BECF32TN.js.gz +0 -0
  881. package/public/assets/meshUboDeclaration-BZF5-_KO.js +0 -13
  882. package/public/assets/meshUboDeclaration-BZF5-_KO.js.br +0 -0
  883. package/public/assets/meshUboDeclaration-BZF5-_KO.js.gz +0 -0
  884. package/public/assets/morphTargetsVertex-ucesXr9N.js +0 -100
  885. package/public/assets/morphTargetsVertex-ucesXr9N.js.br +0 -0
  886. package/public/assets/morphTargetsVertex-ucesXr9N.js.gz +0 -0
  887. package/public/assets/oitFinalSimpleBlend.fragment-9CVVXoXG.js +0 -2
  888. package/public/assets/oitFinalSimpleBlend.fragment-9CVVXoXG.js.br +0 -4
  889. package/public/assets/oitFinalSimpleBlend.fragment-9CVVXoXG.js.gz +0 -0
  890. package/public/assets/oitFinalSimpleBlend.fragment-pnyV1EtQ.js +0 -3
  891. package/public/assets/oitFinalSimpleBlend.fragment-pnyV1EtQ.js.br +0 -0
  892. package/public/assets/oitFinalSimpleBlend.fragment-pnyV1EtQ.js.gz +0 -0
  893. package/public/assets/oitFragment-BTU5r8hd.js +0 -1077
  894. package/public/assets/oitFragment-BTU5r8hd.js.br +0 -0
  895. package/public/assets/oitFragment-BTU5r8hd.js.gz +0 -0
  896. package/public/assets/oitFragment-DaCmfDTf.js +0 -1202
  897. package/public/assets/oitFragment-DaCmfDTf.js.br +0 -0
  898. package/public/assets/oitFragment-DaCmfDTf.js.gz +0 -0
  899. package/public/assets/openpbrMaterial-y9JMvWU-.js +0 -2
  900. package/public/assets/openpbrMaterial-y9JMvWU-.js.br +0 -0
  901. package/public/assets/openpbrMaterial-y9JMvWU-.js.gz +0 -0
  902. package/public/assets/outline.fragment-DdTu5egz.js +0 -21
  903. package/public/assets/outline.fragment-DdTu5egz.js.br +0 -0
  904. package/public/assets/outline.fragment-DdTu5egz.js.gz +0 -0
  905. package/public/assets/outline.fragment-Oz1B6zGa.js +0 -18
  906. package/public/assets/outline.fragment-Oz1B6zGa.js.br +0 -0
  907. package/public/assets/outline.fragment-Oz1B6zGa.js.gz +0 -0
  908. package/public/assets/outline.vertex-CaBToQYU.js +0 -47
  909. package/public/assets/outline.vertex-CaBToQYU.js.br +0 -0
  910. package/public/assets/outline.vertex-CaBToQYU.js.gz +0 -0
  911. package/public/assets/outline.vertex-DbdHcKtj.js +0 -47
  912. package/public/assets/outline.vertex-DbdHcKtj.js.br +0 -0
  913. package/public/assets/outline.vertex-DbdHcKtj.js.gz +0 -0
  914. package/public/assets/passCube.fragment-ASOkfzWw.js +0 -23
  915. package/public/assets/passCube.fragment-ASOkfzWw.js.br +0 -0
  916. package/public/assets/passCube.fragment-ASOkfzWw.js.gz +0 -0
  917. package/public/assets/passCube.fragment-CesCgucZ.js +0 -23
  918. package/public/assets/passCube.fragment-CesCgucZ.js.br +0 -0
  919. package/public/assets/passCube.fragment-CesCgucZ.js.gz +0 -0
  920. package/public/assets/pbr.fragment-CbgPo-3F.js +0 -3277
  921. package/public/assets/pbr.fragment-CbgPo-3F.js.br +0 -0
  922. package/public/assets/pbr.fragment-CbgPo-3F.js.gz +0 -0
  923. package/public/assets/pbr.fragment-DLeljKQt.js +0 -3327
  924. package/public/assets/pbr.fragment-DLeljKQt.js.br +0 -0
  925. package/public/assets/pbr.fragment-DLeljKQt.js.gz +0 -0
  926. package/public/assets/pbr.vertex-DUYhUOUT.js +0 -357
  927. package/public/assets/pbr.vertex-DUYhUOUT.js.br +0 -0
  928. package/public/assets/pbr.vertex-DUYhUOUT.js.gz +0 -0
  929. package/public/assets/pbr.vertex-DahApfLg.js +0 -227
  930. package/public/assets/pbr.vertex-DahApfLg.js.br +0 -0
  931. package/public/assets/pbr.vertex-DahApfLg.js.gz +0 -0
  932. package/public/assets/playable-local-editor-entry-BpT9asOr.js +0 -4
  933. package/public/assets/playable-local-editor-entry-BpT9asOr.js.br +0 -0
  934. package/public/assets/playable-local-editor-entry-BpT9asOr.js.gz +0 -0
  935. package/public/assets/playable-sdk-C9seYWgr.js +0 -5074
  936. package/public/assets/playable-sdk-C9seYWgr.js.br +0 -0
  937. package/public/assets/playable-sdk-C9seYWgr.js.gz +0 -0
  938. package/public/assets/rgbdDecode.fragment-Bick1_rx.js +0 -5
  939. package/public/assets/rgbdDecode.fragment-Bick1_rx.js.br +0 -0
  940. package/public/assets/rgbdDecode.fragment-Bick1_rx.js.gz +0 -0
  941. package/public/assets/rgbdDecode.fragment-DzMtEs3h.js +0 -5
  942. package/public/assets/rgbdDecode.fragment-DzMtEs3h.js.br +0 -0
  943. package/public/assets/rgbdDecode.fragment-DzMtEs3h.js.gz +0 -0
  944. package/public/assets/rgbdEncode.fragment-CEWNAXWl.js +0 -5
  945. package/public/assets/rgbdEncode.fragment-CEWNAXWl.js.br +0 -2
  946. package/public/assets/rgbdEncode.fragment-CEWNAXWl.js.gz +0 -0
  947. package/public/assets/rgbdEncode.fragment-CktuZd9q.js +0 -5
  948. package/public/assets/rgbdEncode.fragment-CktuZd9q.js.br +0 -0
  949. package/public/assets/rgbdEncode.fragment-CktuZd9q.js.gz +0 -0
  950. package/public/assets/sceneLoader-B9RqNIDE.js +0 -1
  951. package/public/assets/sceneLoader-B9RqNIDE.js.br +0 -0
  952. package/public/assets/sceneLoader-B9RqNIDE.js.gz +0 -0
  953. package/public/assets/screenSpaceCurvature.fragment-DNzilh7y.js +0 -15
  954. package/public/assets/screenSpaceCurvature.fragment-DNzilh7y.js.br +0 -0
  955. package/public/assets/screenSpaceCurvature.fragment-DNzilh7y.js.gz +0 -0
  956. package/public/assets/selection.fragment-BMd4fV_W.js +0 -35
  957. package/public/assets/selection.fragment-BMd4fV_W.js.br +0 -0
  958. package/public/assets/selection.fragment-BMd4fV_W.js.gz +0 -0
  959. package/public/assets/selection.fragment-BVUwux40.js +0 -35
  960. package/public/assets/selection.fragment-BVUwux40.js.br +0 -0
  961. package/public/assets/selection.fragment-BVUwux40.js.gz +0 -0
  962. package/public/assets/selection.vertex-CAspwulq.js +0 -74
  963. package/public/assets/selection.vertex-CAspwulq.js.br +0 -0
  964. package/public/assets/selection.vertex-CAspwulq.js.gz +0 -0
  965. package/public/assets/selection.vertex-YX2t3WyJ.js +0 -73
  966. package/public/assets/selection.vertex-YX2t3WyJ.js.br +0 -0
  967. package/public/assets/selection.vertex-YX2t3WyJ.js.gz +0 -0
  968. package/public/assets/selectionOutline.fragment-BZSDTxgH.js +0 -48
  969. package/public/assets/selectionOutline.fragment-BZSDTxgH.js.br +0 -0
  970. package/public/assets/selectionOutline.fragment-BZSDTxgH.js.gz +0 -0
  971. package/public/assets/selectionOutline.fragment-DjMMfPzA.js +0 -47
  972. package/public/assets/selectionOutline.fragment-DjMMfPzA.js.br +0 -0
  973. package/public/assets/selectionOutline.fragment-DjMMfPzA.js.gz +0 -0
  974. package/public/assets/shadowMap.fragment-C0zUSTuU.js +0 -79
  975. package/public/assets/shadowMap.fragment-C0zUSTuU.js.br +0 -0
  976. package/public/assets/shadowMap.fragment-C0zUSTuU.js.gz +0 -0
  977. package/public/assets/shadowMap.fragment-sR_Q-AH8.js +0 -78
  978. package/public/assets/shadowMap.fragment-sR_Q-AH8.js.br +0 -0
  979. package/public/assets/shadowMap.fragment-sR_Q-AH8.js.gz +0 -0
  980. package/public/assets/shadowMap.vertex-CT3bNf33.js +0 -109
  981. package/public/assets/shadowMap.vertex-CT3bNf33.js.br +0 -0
  982. package/public/assets/shadowMap.vertex-CT3bNf33.js.gz +0 -0
  983. package/public/assets/shadowMap.vertex-sMSLTp3c.js +0 -119
  984. package/public/assets/shadowMap.vertex-sMSLTp3c.js.br +0 -0
  985. package/public/assets/shadowMap.vertex-sMSLTp3c.js.gz +0 -0
  986. package/public/assets/shadowMapFragmentSoftTransparentShadow-Bnxb02PB.js +0 -4
  987. package/public/assets/shadowMapFragmentSoftTransparentShadow-Bnxb02PB.js.br +0 -0
  988. package/public/assets/shadowMapFragmentSoftTransparentShadow-Bnxb02PB.js.gz +0 -0
  989. package/public/assets/shadowMapFragmentSoftTransparentShadow-BojcGEHr.js +0 -4
  990. package/public/assets/shadowMapFragmentSoftTransparentShadow-BojcGEHr.js.br +0 -0
  991. package/public/assets/shadowMapFragmentSoftTransparentShadow-BojcGEHr.js.gz +0 -0
  992. package/public/assets/sharpen.fragment-C_DmJvkR.js +0 -8
  993. package/public/assets/sharpen.fragment-C_DmJvkR.js.br +0 -0
  994. package/public/assets/sharpen.fragment-C_DmJvkR.js.gz +0 -0
  995. package/public/assets/textureMerger.fragment-2cNeH25a.js +0 -76
  996. package/public/assets/textureMerger.fragment-2cNeH25a.js.br +0 -0
  997. package/public/assets/textureMerger.fragment-2cNeH25a.js.gz +0 -0
  998. package/public/assets/textureMerger.fragment-D_Dj39Il.js +0 -84
  999. package/public/assets/textureMerger.fragment-D_Dj39Il.js.br +0 -0
  1000. package/public/assets/textureMerger.fragment-D_Dj39Il.js.gz +0 -0
  1001. package/public/assets/tgaTextureLoader-BQepad5v.js +0 -1
  1002. package/public/assets/tgaTextureLoader-BQepad5v.js.br +0 -0
  1003. package/public/assets/tgaTextureLoader-BQepad5v.js.gz +0 -0
  1004. package/public/assets/vertexColorMixing-8WKJ-twY.js +0 -24
  1005. package/public/assets/vertexColorMixing-8WKJ-twY.js.br +0 -4
  1006. package/public/assets/vertexColorMixing-8WKJ-twY.js.gz +0 -0
  1007. package/public/assets/vertexColorMixing-z4uRqfw6.js +0 -20
  1008. package/public/assets/vertexColorMixing-z4uRqfw6.js.br +0 -0
  1009. package/public/assets/vertexColorMixing-z4uRqfw6.js.gz +0 -0
  1010. package/public/assets/volumetricLightingBlendVolume.fragment-DY5AZ-PB.js +0 -12
  1011. package/public/assets/volumetricLightingBlendVolume.fragment-DY5AZ-PB.js.br +0 -0
  1012. package/public/assets/volumetricLightingBlendVolume.fragment-DY5AZ-PB.js.gz +0 -0
  1013. package/public/assets/volumetricLightingBlendVolume.fragment-GMeE7yZS.js +0 -11
  1014. package/public/assets/volumetricLightingBlendVolume.fragment-GMeE7yZS.js.br +0 -1
  1015. package/public/assets/volumetricLightingBlendVolume.fragment-GMeE7yZS.js.gz +0 -0
  1016. package/public/assets/volumetricLightingRenderVolume.fragment-BYQE79sy.js +0 -15
  1017. package/public/assets/volumetricLightingRenderVolume.fragment-BYQE79sy.js.br +0 -0
  1018. package/public/assets/volumetricLightingRenderVolume.fragment-BYQE79sy.js.gz +0 -0
  1019. package/public/assets/volumetricLightingRenderVolume.fragment-DJEyhskc.js +0 -13
  1020. package/public/assets/volumetricLightingRenderVolume.fragment-DJEyhskc.js.br +0 -0
  1021. package/public/assets/volumetricLightingRenderVolume.fragment-DJEyhskc.js.gz +0 -0
  1022. package/public/assets/volumetricLightingRenderVolume.vertex-BKT2xlTI.js +0 -5
  1023. package/public/assets/volumetricLightingRenderVolume.vertex-BKT2xlTI.js.br +0 -0
  1024. package/public/assets/volumetricLightingRenderVolume.vertex-BKT2xlTI.js.gz +0 -0
  1025. package/public/assets/volumetricLightingRenderVolume.vertex-DRVWuXh0.js +0 -4
  1026. package/public/assets/volumetricLightingRenderVolume.vertex-DRVWuXh0.js.br +0 -0
  1027. package/public/assets/volumetricLightingRenderVolume.vertex-DRVWuXh0.js.gz +0 -0
  1028. package/public/assets/webAudioBus-DR4MSC_a.js +0 -1
  1029. package/public/assets/webAudioBus-DR4MSC_a.js.br +0 -0
  1030. package/public/assets/webAudioBus-DR4MSC_a.js.gz +0 -0
  1031. package/public/assets/webAudioMainBus-o1ujDFsW.js +0 -1
  1032. package/public/assets/webAudioMainBus-o1ujDFsW.js.br +0 -0
  1033. package/public/assets/webAudioMainBus-o1ujDFsW.js.gz +0 -0
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env node
2
+ import cn from"node:fs/promises";import V from"node:path";import{pathToFileURL as Zc}from"node:url";var St=class extends Error{path;reason;code="runtime.lighting.invalid";constructor(t,r){super(`Invalid Runtime Lighting data at ${t}: ${r}`),this.path=t,this.reason=r,this.name="FpsRuntimeLightingDataError"}},fn=1e-6,Fo=1e-4,Uo=new Set(["schemaVersion","type","intensity","direction","diffuseColor"]),zo=new Set(["schemaVersion","type","intensity","diffuseColor","groundColor"]),Bo=new Set(["x","y","z"]),Vo=new Set(["r","g","b"]);function Je(e,t="$.direction"){let r=mn(e,t),n=Math.hypot(r.x,r.y,r.z);return n<=fn&&X(t,"expected a non-zero direction vector"),Object.freeze({x:r.x/n,y:r.y/n,z:r.z/n})}function ve(e,t="$.light"){let r=nr(e,t);r.schemaVersion!==1&&X(`${t}.schemaVersion`,"expected 1");let n=Ko(r.intensity,`${t}.intensity`);if(r.type==="directional"){Et(r,Uo,t);let i=mn(r.direction,`${t}.direction`),o=Math.hypot(i.x,i.y,i.z);return o<=fn&&X(`${t}.direction`,"expected a non-zero direction vector"),Math.abs(o-1)>Fo&&X(`${t}.direction`,"expected a normalized direction vector"),Object.freeze({schemaVersion:1,type:"directional",intensity:n,direction:i,diffuseColor:tr(r.diffuseColor,`${t}.diffuseColor`)})}if(r.type==="hemispheric")return Et(r,zo,t),Object.freeze({schemaVersion:1,type:"hemispheric",intensity:n,diffuseColor:tr(r.diffuseColor,`${t}.diffuseColor`),groundColor:tr(r.groundColor,`${t}.groundColor`)});X(`${t}.type`,"expected directional or hemispheric")}function mn(e,t){let r=nr(e,t);return Et(r,Bo,t),Object.freeze({x:qe(r.x,`${t}.x`),y:qe(r.y,`${t}.y`),z:qe(r.z,`${t}.z`)})}function tr(e,t){let r=nr(e,t);return Et(r,Vo,t),Object.freeze({r:rr(r.r,`${t}.r`),g:rr(r.g,`${t}.g`),b:rr(r.b,`${t}.b`)})}function nr(e,t){(!e||typeof e!="object"||Array.isArray(e))&&X(t,"expected a plain object");let r=Object.getPrototypeOf(e);return r!==Object.prototype&&r!==null&&X(t,"expected a plain object"),e}function Et(e,t,r){for(let n of Object.keys(e))t.has(n)||X(`${r}.${n}`,"unknown field")}function qe(e,t){return(typeof e!="number"||!Number.isFinite(e))&&X(t,"expected a finite number"),e}function Ko(e,t){let r=qe(e,t);return r<0&&X(t,"expected a non-negative number"),r}function rr(e,t){let r=qe(e,t);return(r<0||r>1)&&X(t,"expected a number between 0 and 1"),r}function X(e,t){throw new St(e,t)}var Xe="medium",ir={low:{opacity:.32,softness:.25,bias:.0015,normalBias:.02,maxDistance:24,resolution:512,cascadeCount:1,bakeSamples:8,blurKernel:2},medium:{opacity:.42,softness:.4,bias:.001,normalBias:.01,maxDistance:48,resolution:1024,cascadeCount:2,bakeSamples:24,blurKernel:4},high:{opacity:.5,softness:.58,bias:8e-4,normalBias:.006,maxDistance:80,resolution:2048,cascadeCount:4,bakeSamples:64,blurKernel:8},ultra:{opacity:.56,softness:.72,bias:6e-4,normalBias:.004,maxDistance:120,resolution:4096,cascadeCount:4,bakeSamples:128,blurKernel:12}};function xt(e=Xe,t={}){let r=ir[e]??ir[Xe];return{opacity:Ye(t.opacity,r.opacity),softness:Ye(t.softness,r.softness),bias:Ye(t.bias,r.bias),normalBias:Ye(t.normalBias,r.normalBias),maxDistance:Ye(t.maxDistance,r.maxDistance),resolution:qo(t.resolution,r.resolution),cascadeCount:Jo(t.cascadeCount,r.cascadeCount),bakeSamples:Ho(t.bakeSamples,r.bakeSamples),blurKernel:Wo(t.blurKernel,r.blurKernel)}}function Ye(e,t){return typeof e=="number"&&Number.isFinite(e)?e:t}function Ho(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.round(e):t}function Wo(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>=0?Math.round(e):t}function qo(e,t){return e===512||e===1024||e===2048||e===4096?e:t}function Jo(e,t){return e===1||e===2||e===4?e:t}function Pt(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function It(e){return e==="inherit"||e==="none"||e==="enabled"||e==="auto"}function At(e){return e==="inherit"||e==="none"||e==="enabled"||e==="auto"}function wt(e){return e==="inherit"||e==="none"||e==="dynamic"||e==="static"||e==="blob"||e==="projected"||e==="auto"}function Tt(e){return e==="inherit"||e==="low"||e==="medium"||e==="high"||e==="ultra"}function Dt(e){return e==="inherit"||e==="scene-main"||e==="nearest"||e==="explicit"}function gn(e){let t=Pt(e);if(!t)return;let r={};It(t.cast)&&(r.cast=t.cast),At(t.receive)&&(r.receive=t.receive),wt(t.mode)&&(r.mode=t.mode),Tt(t.quality)&&(r.quality=t.quality);let n=Pt(t.light);if(n){let o={};Dt(n.mode)&&(o.mode=n.mode),typeof n.lightId=="string"&&n.lightId.trim()&&(o.lightId=n.lightId.trim()),Object.keys(o).length>0&&(r.light=o)}let i=Yo(t.params);return i&&(r.params=i),Object.keys(r).length>0?r:void 0}function ne(e){let t=gn(e);return t?{shadow:t,diagnostics:[]}:{diagnostics:[]}}function or(e,t="none"){let r=e?.mode;return!r||r==="inherit"||r==="auto"?t:r}function ar(e,t=Xe){let r=e?.quality;return r&&r!=="inherit"?r:t}function ce(...e){let t={};for(let r of e)if(r){if((r.cast==="enabled"||r.cast==="none")&&(t.cast=r.cast),(r.receive==="enabled"||r.receive==="none")&&(t.receive=r.receive),r.mode!==void 0&&r.mode!=="inherit"&&(t.mode=r.mode),r.quality!==void 0&&r.quality!=="inherit"&&(t.quality=r.quality),r.light){let n={...t.light??{}};r.light.mode!==void 0&&r.light.mode!=="inherit"&&(n.mode=r.light.mode),r.light.lightId!==void 0&&(n.lightId=r.light.lightId),Object.keys(n).length>0&&(t.light=n)}r.params&&(t.params={...t.params??{},...r.params})}return Object.keys(t).length>0?t:void 0}function Yo(e){let t=Pt(e);if(!t)return;let r={};return typeof t.opacity=="number"&&Number.isFinite(t.opacity)&&(r.opacity=t.opacity),typeof t.softness=="number"&&Number.isFinite(t.softness)&&(r.softness=t.softness),typeof t.bias=="number"&&Number.isFinite(t.bias)&&(r.bias=t.bias),typeof t.normalBias=="number"&&Number.isFinite(t.normalBias)&&(r.normalBias=t.normalBias),typeof t.maxDistance=="number"&&Number.isFinite(t.maxDistance)&&(r.maxDistance=t.maxDistance),(t.resolution===512||t.resolution===1024||t.resolution===2048||t.resolution===4096)&&(r.resolution=t.resolution),(t.cascadeCount===1||t.cascadeCount===2||t.cascadeCount===4)&&(r.cascadeCount=t.cascadeCount),typeof t.bakeSamples=="number"&&Number.isFinite(t.bakeSamples)&&(r.bakeSamples=t.bakeSamples),typeof t.blurKernel=="number"&&Number.isFinite(t.blurKernel)&&(r.blurKernel=t.blurKernel),Object.keys(r).length>0?r:void 0}var Xo=new Set(["cast","receive","mode","quality","light","params"]),Zo=new Set(["mode","lightId"]),Qo=new Set(["opacity","softness","bias","normalBias","maxDistance","resolution","cascadeCount","bakeSamples","blurKernel"]);function Ze(e,t="$.shadow"){let r=dr(e);if(!r)throw B("schema.invalidType",t);if(sr(r,Xo,t),"cast"in r&&!It(r.cast))throw B("schema.invalidValue",`${t}.cast`);if("receive"in r&&!At(r.receive))throw B("schema.invalidValue",`${t}.receive`);if("mode"in r&&!wt(r.mode))throw B("schema.invalidValue",`${t}.mode`);if("quality"in r&&!Tt(r.quality))throw B("schema.invalidValue",`${t}.quality`);"light"in r&&ea(r.light,`${t}.light`),"params"in r&&ta(r.params,`${t}.params`)}function ea(e,t){let r=dr(e);if(!r)throw B("schema.invalidType",t);if(sr(r,Zo,t),"mode"in r&&!Dt(r.mode))throw B("schema.invalidValue",`${t}.mode`);if("lightId"in r&&(typeof r.lightId!="string"||!r.lightId.trim()))throw B("schema.invalidValue",`${t}.lightId`);if(r.mode==="explicit"&&(typeof r.lightId!="string"||!r.lightId.trim()))throw B("schema.invalidValue",`${t}.lightId`)}function ta(e,t){let r=dr(e);if(!r)throw B("schema.invalidType",t);if(sr(r,Qo,t),Ae(r,"opacity",t,n=>n>=0&&n<=1),Ae(r,"softness",t,n=>n>=0),Ae(r,"bias",t,()=>!0),Ae(r,"normalBias",t,()=>!0),Ae(r,"maxDistance",t,n=>n>0),Ae(r,"bakeSamples",t,n=>n>0),Ae(r,"blurKernel",t,n=>n>=0),"resolution"in r&&![512,1024,2048,4096].includes(r.resolution))throw B("schema.invalidValue",`${t}.resolution`);if("cascadeCount"in r&&![1,2,4].includes(r.cascadeCount))throw B("schema.invalidValue",`${t}.cascadeCount`)}function Ae(e,t,r,n){if(!(t in e))return;let i=e[t];if(typeof i!="number"||!Number.isFinite(i)||!n(i))throw B("schema.invalidValue",`${r}.${t}`)}function sr(e,t,r){for(let n of Object.keys(e))if(!t.has(n))throw B("schema.deprecatedField",`${r}.${n}`)}function B(e,t){let r=new Error(`${e}: ${t}`);return Object.assign(r,{code:e,path:t}),r}function dr(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}var fr="fps.shadow-map-experiment";function mr(e,t="$.scene.shadowMapExperiment"){let r=Z(e,t);oe(r,["qualityProfile","behaviorProfile"],t),r.qualityProfile!==void 0&&ie(r.qualityProfile,`${t}.qualityProfile`),r.behaviorProfile!==void 0&&ie(r.behaviorProfile,`${t}.behaviorProfile`)}function tt(e,t="$.shadowMapExperiment"){let r=Z(e,t);oe(r,["behaviorProfile"],t),ie(r.behaviorProfile,`${t}.behaviorProfile`)}function ra(e,t="$"){let r=Z(e,t);oe(r,["schemaVersion","enabled","lightRef","defaultQualityProfile","defaultBehaviorProfile","qualityProfiles","behaviorProfiles"],t),r.schemaVersion!==1&&k(`${t}.schemaVersion`,"expected 1"),typeof r.enabled!="boolean"&&k(`${t}.enabled`,"expected boolean"),ie(r.lightRef,`${t}.lightRef`);let n=ie(r.defaultQualityProfile,`${t}.defaultQualityProfile`),i=ie(r.defaultBehaviorProfile,`${t}.defaultBehaviorProfile`),o=bn(r.qualityProfiles,`${t}.qualityProfiles`),a=bn(r.behaviorProfiles,`${t}.behaviorProfiles`);for(let[s,l]of Object.entries(o))ia(l,`${t}.qualityProfiles.${s}`);for(let[s,l]of Object.entries(a))oa(l,`${t}.behaviorProfiles.${s}`);Object.prototype.hasOwnProperty.call(o,n)||k(`${t}.defaultQualityProfile`,`unknown quality profile: ${n}`),Object.prototype.hasOwnProperty.call(a,i)||k(`${t}.defaultBehaviorProfile`,`unknown behavior profile: ${i}`)}function yn(e){ra(e.config),e.settings!==void 0&&mr(e.settings),(!Number.isInteger(e.revision)||e.revision<0)&&k("$.revision","expected a non-negative integer");let t=e.settings?.qualityProfile??e.config.defaultQualityProfile,r=e.settings?.behaviorProfile??e.config.defaultBehaviorProfile,n=cr(e.config.qualityProfiles,t,"$.settings.qualityProfile","quality");cr(e.config.behaviorProfiles,r,"$.settings.behaviorProfile","behavior");let i=e.objects.map((s,l)=>{let d=`$.objects[${l}]`;s.override!==void 0&&tt(s.override,`${d}.override`);let u=s.override?.behaviorProfile??r,c=cr(e.config.behaviorProfiles,u,`${d}.override.behaviorProfile`,"behavior");return Object.freeze({entityId:ie(s.entityId,`${d}.entityId`),renderableIds:Object.freeze(ma(s.renderableIds,`${d}.renderableIds`)),cast:pn(s.cast,`${d}.cast`)??c.cast==="enabled",receive:pn(s.receive,`${d}.receive`)??c.receive==="enabled",updateClass:c.updateClass!=="auto"?c.updateClass:s.inferredUpdateClass??"static",behaviorProfileId:u})}).sort((s,l)=>s.entityId.localeCompare(l.entityId)),o=e.config.enabled?i:[];ua(o);let a=Object.fromEntries(Object.entries(e.config.behaviorProfiles).sort(([s],[l])=>s.localeCompare(l)).map(([s,l])=>[s,Object.freeze({cast:l.cast==="enabled",receive:l.receive==="enabled",updateClass:l.updateClass})]));return hn({schemaVersion:3,revision:e.revision,enabled:e.config.enabled,scopeId:ie(e.scopeId,"$.scopeId"),light:{entityId:e.config.lightRef,direction:et(e.lightDirection,"$.lightDirection")},qualityProfileId:t,generator:{maps:{...n.maps},...n.cascadeCount===void 0?{}:{cascadeCount:n.cascadeCount},filter:n.receiverFilter,bias:n.bias,normalBias:n.normalBias,darkness:n.darkness,...n.softness===void 0?{}:{softness:n.softness},bounds:fa(n.bounds),backend:{...n.backend}},culling:{...n.culling},diagnosticThresholds:{...n.diagnostics},behaviorProfiles:a,objects:o,diagnostics:[]})}function pn(e,t){if(e!==void 0)return typeof e!="boolean"&&k(t,"expected a boolean"),e}function na(e,t){let r=Z(e,t);oe(r,["mode","center","extent","near","far"],t),r.mode!=="fixed"&&k(`${t}.mode`,"expected fixed"),et(r.center,`${t}.center`),et(r.extent,`${t}.extent`).some(a=>a<=0)&&k(`${t}.extent`,"expected positive values");let i=Mt(r.near,`${t}.near`),o=Mt(r.far,`${t}.far`);(i<0||o<=i)&&k(t,"expected 0 <= near < far")}function ia(e,t){let r=Z(e,t);oe(r,["maps","cascadeCount","receiverFilter","bias","normalBias","darkness","softness","bounds","backend","culling","diagnostics"],t),aa(r.maps,`${t}.maps`),r.cascadeCount!==void 0&&sa(r.cascadeCount,`${t}.cascadeCount`),r.receiverFilter!=="hard"&&r.receiverFilter!=="low-pcf"&&k(`${t}.receiverFilter`,"expected hard or low-pcf"),Qe(r.bias,`${t}.bias`,0,.1),Qe(r.normalBias,`${t}.normalBias`,0,1),Qe(r.darkness,`${t}.darkness`,0,1),r.softness!==void 0&&Qe(r.softness,`${t}.softness`,0,1),na(r.bounds,`${t}.bounds`),da(r.backend,`${t}.backend`),la(r.culling,`${t}.culling`),ca(r.diagnostics,`${t}.diagnostics`)}function oa(e,t){let r=Z(e,t);oe(r,["cast","receive","updateClass"],t),r.cast!=="enabled"&&r.cast!=="disabled"&&k(`${t}.cast`,"expected enabled or disabled"),r.receive!=="enabled"&&r.receive!=="disabled"&&k(`${t}.receive`,"expected enabled or disabled"),["auto","static","dynamic","skinned"].includes(String(r.updateClass))||k(`${t}.updateClass`,"expected auto, static, dynamic, or skinned")}function aa(e,t){let r=Z(e,t);oe(r,["staticResolution","dynamicResolution","compositeResolution"],t),lr(r.staticResolution,`${t}.staticResolution`),lr(r.dynamicResolution,`${t}.dynamicResolution`),lr(r.compositeResolution,`${t}.compositeResolution`)}function lr(e,t){e!==512&&e!==1024&&e!==2048&&e!==4096&&k(t,"expected 512, 1024, 2048, or 4096")}function sa(e,t){e!==1&&e!==2&&e!==4&&k(t,"expected 1, 2, or 4")}function da(e,t){let r=Z(e,t);oe(r,["mode","fallback"],t),["auto","split","single"].includes(String(r.mode))||k(`${t}.mode`,"expected auto, split, or single"),r.fallback!=="single-map"&&r.fallback!=="disable"&&k(`${t}.fallback`,"expected single-map or disable")}function la(e,t){let r=Z(e,t);oe(r,["enabled","guardBandRatio"],t),typeof r.enabled!="boolean"&&k(`${t}.enabled`,"expected boolean"),Qe(r.guardBandRatio,`${t}.guardBandRatio`,0,4)}function ca(e,t){let r=Z(e,t);oe(r,["staticCasterCountWarning","dynamicCasterCountWarning","renderableCountWarning"],t),ur(r.staticCasterCountWarning,`${t}.staticCasterCountWarning`),ur(r.dynamicCasterCountWarning,`${t}.dynamicCasterCountWarning`),ur(r.renderableCountWarning,`${t}.renderableCountWarning`)}function ua(e){let t=new Set,r=new Set;for(let n of e){t.has(n.entityId)&&k("$.objects",`duplicate entity id: ${n.entityId}`),t.add(n.entityId);for(let i of n.renderableIds)r.has(i)&&k("$.objects",`duplicate renderable id: ${i}`),r.add(i)}}function bn(e,t){let r=Z(e,t);Object.keys(r).length===0&&k(t,"expected at least one profile");for(let n of Object.keys(r))ie(n,`${t} key`);return r}function cr(e,t,r,n){return Object.prototype.hasOwnProperty.call(e,t)||k(r,`unknown ${n} profile: ${t}`),e[t]}function fa(e){return Object.freeze({mode:"fixed",center:et(e.center,"$.bounds.center"),extent:et(e.extent,"$.bounds.extent"),near:e.near,far:e.far})}function et(e,t){let r=ga(e,t);return r.length!==3&&k(t,"expected exactly three numbers"),Object.freeze(r.map((n,i)=>Mt(n,`${t}[${i}]`)))}function ma(e,t){let r=e.map((n,i)=>ie(n,`${t}[${i}]`));return new Set(r).size!==r.length&&k(t,"expected unique strings"),r}function Mt(e,t){return(typeof e!="number"||!Number.isFinite(e))&&k(t,"expected a finite number"),e}function Qe(e,t,r,n){let i=Mt(e,t);return(i<r||i>n)&&k(t,`expected ${r}..${n}`),i}function ur(e,t){return(!Number.isInteger(e)||e<0)&&k(t,"expected a non-negative integer"),e}function ie(e,t){return(typeof e!="string"||!e.trim()||e!==e.trim())&&k(t,"expected a trimmed non-empty string"),e}function Z(e,t){(!e||typeof e!="object"||Array.isArray(e))&&k(t,"expected an object");let r=Object.getPrototypeOf(e);return r!==Object.prototype&&r!==null&&k(t,"expected a plain object"),e}function ga(e,t){return Array.isArray(e)||k(t,"expected an array"),e}function oe(e,t,r){let n=new Set(t);for(let i of Object.keys(e))n.has(i)||k(`${r}.${i}`,"unknown field")}function hn(e){if(!e||typeof e!="object"||Object.isFrozen(e))return e;for(let t of Object.values(e))hn(t);return Object.freeze(e)}function k(e,t){throw new Error(`shadow_map_experiment_invalid:${e}:${t}`)}var pa=new Set([".glb",".gltf",".png",".jpg",".jpeg",".webp",".env",".hdr",".dds",".ktx",".ktx2",".mp3",".wav",".ogg",".flac",".aac",".m4a"]);function gr(e){let t=String(e??"").trim().toLowerCase();if(/^\.[a-z0-9]+$/.test(t))return t;let r=t.split(/[?#]/,1)[0]??"",n=r.slice(r.lastIndexOf("/")+1),i=n.lastIndexOf(".");return i<=0||i===n.length-1?null:n.slice(i)}function pr(e){return pa.has(e)}function yr(e){return e==="fps.builtin.pbr"||e==="fps.builtin.standard"?e:void 0}function br(e){if(!e||typeof e!="object")return;let t={};(e.lightingModel==="lit"||e.lightingModel==="unlit")&&(t.lightingModel=e.lightingModel);let r={},n=Sn(e.baseColor?.color);n&&(r.color=n);let i=we(e.baseColor?.texture);i!==void 0&&(r.texture=i),ue(e.baseColor,r,"brightness"),ue(e.baseColor,r,"saturation"),ue(e.baseColor,r,"contrast"),ue(e.baseColor,r,"hue"),Object.keys(r).length>0&&(t.baseColor=r);let o={},a=we(e.normal?.texture);a!==void 0&&(o.texture=a),ue(e.normal,o,"strength"),Object.keys(o).length>0&&(t.normal=o),_e(e.metallic)&&(t.metallic=e.metallic),_e(e.roughness)&&(t.roughness=e.roughness);let s={},l=we(e.metallicRoughness?.texture);l!==void 0&&(s.texture=l),Object.keys(s).length>0&&(t.metallicRoughness=s);let d={},u=we(e.occlusion?.texture);u!==void 0&&(d.texture=u),ue(e.occlusion,d,"strength"),Object.keys(d).length>0&&(t.occlusion=d);let c={},m=Sn(e.emission?.color);m&&(c.color=m),ue(e.emission,c,"intensity");let p=we(e.emission?.texture);p!==void 0&&(c.texture=p);let g=we(e.emission?.maskTexture);g!==void 0&&(c.maskTexture=g),Object.keys(c).length>0&&(t.emission=c);let b={};(e.alpha?.mode==="opaque"||e.alpha?.mode==="mask"||e.alpha?.mode==="blend")&&(b.mode=e.alpha.mode),ue(e.alpha,b,"opacity"),ue(e.alpha,b,"cutoff");let S=we(e.alpha?.texture);return S!==void 0&&(b.texture=S),Object.keys(b).length>0&&(t.alpha=b),Object.keys(t).length>0?t:void 0}function kt(...e){let t={};for(let r of e){let n=br(r);n&&(n.lightingModel&&(t.lightingModel=n.lightingModel),Ge(t,n,"baseColor"),Ge(t,n,"normal"),n.metallic!==void 0&&(t.metallic=n.metallic),n.roughness!==void 0&&(t.roughness=n.roughness),Ge(t,n,"metallicRoughness"),Ge(t,n,"occlusion"),Ge(t,n,"emission"),Ge(t,n,"alpha"))}return br(t)??{}}function Ge(e,t,r){let n=t[r];n&&Object.assign(e,{[r]:{...e[r]??{},...n}})}function Sn(e){return e&&_e(e.r)&&_e(e.g)&&_e(e.b)?{r:e.r,g:e.g,b:e.b}:void 0}function we(e){if(e===null)return null;if(!e||typeof e!="object")return;let t=typeof e.url=="string"?e.url.trim():"",r=typeof e.textureAssetId=="string"?e.textureAssetId.trim():"";if(!(!t&&!r))return{...t?{url:t}:{},...r?{textureAssetId:r}:{}}}function ue(e,t,r){_e(e?.[r])&&(t[r]=e[r])}function _e(e){return typeof e=="number"&&Number.isFinite(e)}function En(e){let t=me(e);if(!t)return null;let r=L(t.sourceHash),n=L(t.lightHash),i=L(t.profileHash);if(!r||!n||!i)return null;let o={sourceHash:r,lightHash:n,profileHash:i,...typeof t.generatedAt=="string"&&t.generatedAt.trim()?{generatedAt:t.generatedAt.trim()}:{},...(()=>{let u=Ia(t.stats);return u?{stats:u}:{}})()};if(t.version!==2||t.format!=="sdf-atlas"||!Array.isArray(t.pages)||!Array.isArray(t.chunks))return null;let a=[],s=new Map;for(let u of t.pages){let c=ba(u);if(!c||s.has(c.id))return null;a.push(c),s.set(c.id,c)}let l=[],d=new Set;for(let u of t.chunks){let c=ya(u,s);if(!c||d.has(c.id))return null;l.push(c),d.add(c.id)}return{version:2,format:"sdf-atlas",pages:a,chunks:l,...o}}function rt(e,t="$.staticShadows"){let r=En(e);if(r)return r;let n=new Error(`schema.unsupportedVersion: ${t}`);throw Object.assign(n,{code:"schema.unsupportedVersion",path:t}),n}function ba(e){let t=me(e);if(!t)return null;let r=L(t.id),n=Ot(t.width),i=Ot(t.height),o=Aa(t.sdfTextureDataUrl);return!r||n==null||i==null||!o?null:{id:r,width:n,height:i,sdfTextureDataUrl:o}}function ya(e,t){let r=me(e);if(!r)return null;let n=L(r.id),i=xa(r.bounds),o=Pa(r.plane),a=L(r.pageId),s=Sa(r.atlasRect),l=Ea(r.atlasUv),d=wa(r.sourceNodeIds),u=L(r.sourceHash),c=L(r.lightHash),m=L(r.profileHash);if(!n||!i||!o||!a||!s||!l||!d||!u||!c||!m)return null;let p=t.get(a);return!p||s.x+s.width>p.width||s.y+s.height>p.height?null:{id:n,bounds:i,plane:o,pageId:a,atlasRect:s,atlasUv:l,sourceNodeIds:d,sourceHash:u,lightHash:c,profileHash:m,...(()=>{let g=ha(r.binding);return g?{binding:g}:{}})()}}function ha(e){let t=me(e);if(!t)return null;let r=L(t.id),n=L(t.ownerCasterId),i=L(t.receiverId),o=L(t.generatedAt),a=L(t.sourceHash);if(!r||!n||!i||!o||!a||t.visibleWhenOwnerVisible!==!0||t.staleWhenOwnerTransformChanges!==!0||t.staleWhenLightChanges!==!0)return null;let s=L(t.lightId),l=L(t.textureAssetId),d=L(t.projectionNodeId);return{id:r,ownerCasterId:n,receiverId:i,...s?{lightId:s}:{},...l?{textureAssetId:l}:{},...d?{projectionNodeId:d}:{},visibleWhenOwnerVisible:!0,staleWhenOwnerTransformChanges:!0,staleWhenLightChanges:!0,generatedAt:o,sourceHash:a}}function Sa(e){let t=me(e);if(!t)return null;let r=ye(t.x),n=ye(t.y),i=Ot(t.width),o=Ot(t.height);return r==null||n==null||i==null||o==null?null:{x:r,y:n,width:i,height:o}}function Ea(e){let t=me(e);if(!t)return null;let r=Ct(t.u0),n=Ct(t.v0),i=Ct(t.u1),o=Ct(t.v1);return r==null||n==null||i==null||o==null||i<=r||o<=n?null:{u0:r,v0:n,u1:i,v1:o}}function xa(e){let t=me(e);if(!t)return null;let r=ae(t.minX),n=ae(t.maxX),i=ae(t.minZ),o=ae(t.maxZ),a=ae(t.y);return r==null||n==null||i==null||o==null||a==null||n<=r||o<=i?null:{minX:r,maxX:n,minZ:i,maxZ:o,y:a}}function Pa(e){let t=me(e);if(!t)return null;let r=ae(t.height),n=ae(t.yOffset);return r==null||n==null||n<0?null:{height:r,yOffset:n}}function Ia(e){let t=me(e);if(!t)return null;let r=ye(t.sourceRootCount),n=ye(t.sourceMeshCount),i=ye(t.attemptedChunkCount),o=ye(t.chunkCount),a=ye(t.textureCount);return r==null||n==null||i==null||o==null||a==null?null:{sourceRootCount:r,sourceMeshCount:n,attemptedChunkCount:i,chunkCount:o,textureCount:a,...Rt(t.skippedChunkCount,"skippedChunkCount"),...Rt(t.pageCount,"pageCount"),...fe(t.resolution,"resolution"),...fe(t.chunkSize,"chunkSize"),...fe(t.atlasSize,"atlasSize"),...Nt(t.atlasUsedPixels,"atlasUsedPixels"),...Nt(t.atlasAllocatedPixels,"atlasAllocatedPixels"),...Ta(t.atlasOccupancy,"atlasOccupancy"),...fe(t.texelsPerMeter,"texelsPerMeter"),...fe(t.effectiveTexelsPerMeter,"effectiveTexelsPerMeter"),...fe(t.maxAtlasPages,"maxAtlasPages"),...Nt(t.sdfRadiusPx,"sdfRadiusPx"),...fe(t.spatialChunkSize,"spatialChunkSize"),...fe(t.effectiveSpatialChunkSize,"effectiveSpatialChunkSize"),...fe(t.targetChunkCount,"targetChunkCount"),...Rt(t.bakedChunkCount,"bakedChunkCount"),...Rt(t.reusedChunkCount,"reusedChunkCount"),...Nt(t.durationMs,"durationMs")}}function Aa(e){let t=L(e);return t&&/^data:image\/png[;,]/i.test(t)?t:null}function wa(e){if(!Array.isArray(e)||e.length===0)return null;let t=[],r=new Set;for(let n of e){let i=L(n);if(!i)return null;r.has(i)||t.push(i),r.add(i)}return t}function L(e){return typeof e=="string"&&e.trim()?e.trim():null}function ae(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function ye(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0?e:null}function Ot(e){return typeof e=="number"&&Number.isInteger(e)&&e>0?e:null}function Ct(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0&&e<=1?e:null}function Rt(e,t){let r=ye(e);return r==null?{}:{[t]:r}}function fe(e,t){let r=ae(e);return r==null||r<=0?{}:{[t]:r}}function Nt(e,t){let r=ae(e);return r==null||r<0?{}:{[t]:r}}function Ta(e,t){let r=ae(e);return r==null||r<0||r>1?{}:{[t]:r}}function me(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}var Da="@fps-games/editor.playable-sdk.scene-compiler",Ma="2",ka=1e-4,H={nodeKinds:["group","instance","transform","primitive","image"],primitiveShapes:["cube","sphere","plane","capsule"],transformTypes:["plain","light","camera","groundDecal"],assetTypes:["glb","texture"],materialScopes:["sharedAsset","nodeMaterial"],materialModes:["shared","instance"],materialShaderIds:["fps.builtin.pbr","fps.builtin.standard"],materialAssetSystemPresets:["default-pbr","default-standard"],runtimeV3:{assetFields:["id","guid","type","url","external","warmupCount","singleton","materialMode","defaults","materialSlots"],materialSlotFields:["slotId","label","sourceSurfaces"],materialSlotSourceSurfaceFields:["ownerNodePath","nodeIndex","nodeIndexPath","meshIndex","primitiveIndex","sourceMaterialIndex","sourceMeshName"]},hierarchy:{parentTargets:["root","sceneNode"]},runtimeOnlyTokens:["/@fs","assetUrl","sourceAssetUrl","sourceAssetPath"]},Ca=new Set(H.nodeKinds),Ra=new Set(H.primitiveShapes),Na=new Set(H.assetTypes),Oa=new Set(H.materialModes),$a=new Set(H.materialScopes),va=new Set(H.materialAssetSystemPresets),Ga=new Set(H.transformTypes),nt=new Set(H.hierarchy.parentTargets),_a=H.runtimeOnlyTokens,ja=new Set(H.runtimeV3.assetFields),La=new Set(H.runtimeV3.materialSlotFields),Fa=new Set(H.runtimeV3.materialSlotSourceSurfaceFields);function Ua(e,t={}){let{allowOrphanSharedMaterials:r=!0,allowOrphanNodeMaterials:n=!0,strictAssetIds:i=[],strictNodeIds:o=[],maxErrors:a=50}=t,s=Number.isInteger(a)&&a>0?a:50,l=[],d=new Set(i),u=new Set(o),c=(f,v)=>{l.length<s&&l.push({path:f,message:v})};if(!E(e))return c("$","scene json must be an object"),l;let m=e.schemaVersion;m!==2&&m!==3&&c("$.schemaVersion","schemaVersion must be 2 or 3"),Xa(e.meta?.generatedFrom,"$.meta.generatedFrom",c);let p=as(e),g=e.scene;if(!E(g))return c("$.scene","scene must be an object"),l;if(P(g.rootId)||c("$.scene.rootId","rootId must be a non-empty string"),Array.isArray(g.assets)||c("$.scene.assets","assets must be an array"),Array.isArray(g.nodes)||c("$.scene.nodes","nodes must be an array"),Array.isArray(g.materialAssets)||c("$.scene.materialAssets","materialAssets must be an array"),Array.isArray(g.materials)||c("$.scene.materials","materials must be an array"),Array.isArray(g.textures)||c("$.scene.textures","textures must be an array"),l.length>0)return l;e.staticShadows!=null&&xn(()=>rt(e.staticShadows,"$.staticShadows"),"$.staticShadows",c);let b=new Set,S=new Map,x=new Map,D=new Set,w=new Set([g.rootId]),M=new Map,O=new Map,z=new Set;return g.assets.forEach((f,v)=>{let y=`$.scene.assets[${v}]`;if(!E(f)){c(y,"asset must be an object");return}if(P(f.id)?b.has(f.id)?c(`${y}.id`,`duplicate asset id: ${f.id}`):(b.add(f.id),S.set(f.id,f.type)):c(`${y}.id`,"asset.id must be a non-empty string"),Na.has(f.type)||c(`${y}.type`,"asset.type must be glb or texture"),f.guid!=null&&!P(f.guid)&&c(`${y}.guid`,"asset.guid must be a non-empty string when present"),f.url!=null&&!P(f.url)&&c(`${y}.url`,"url must be a non-empty string when present"),f.external!=null&&!E(f.external)&&c(`${y}.external`,"external must be an object when present"),f.warmupCount!=null&&(!Number.isInteger(f.warmupCount)||f.warmupCount<0)&&c(`${y}.warmupCount`,"warmupCount must be a non-negative integer when present"),f.singleton!=null&&typeof f.singleton!="boolean"&&c(`${y}.singleton`,"singleton must be a boolean when present"),f.materialMode!=null&&!Oa.has(f.materialMode)&&c(`${y}.materialMode`,"materialMode must be shared or instance"),Ya(f.defaults,`${y}.defaults`,c),m===3)for(let j of Object.keys(f))ja.has(j)||c(`${y}.${j}`,`runtime schema v3 asset field is not allowed: ${j}`);else f.displayName!=null&&!P(f.displayName)&&c(`${y}.displayName`,"displayName must be a non-empty string when present"),f.category!=null&&!P(f.category)&&c(`${y}.category`,"category must be a non-empty string when present"),f.metadata!=null&&!E(f.metadata)&&c(`${y}.metadata`,"metadata must be an object when present");let G=m===3?f.materialSlots:E(f.metadata)?f.metadata.materialSlots:void 0,J=m===3?`${y}.materialSlots`:`${y}.metadata.materialSlots`,Y=new Set;G!=null&&(Array.isArray(G)?G.forEach((j,$e)=>{let Ie=`${J}[${$e}]`;if(!E(j)||!P(j.slotId)){c(Ie,m===3?"material slot must contain a stable slotId":"material slot must contain stable slotId and ownerNodePath");return}if(m!==3&&!P(j.ownerNodePath)){c(Ie,"material slot must contain stable slotId and ownerNodePath");return}Y.has(j.slotId)?c(`${Ie}.slotId`,`duplicate material slot id: ${j.slotId}`):Y.add(j.slotId),m===3&&Ja(j,Ie,c)}):c(J,"materialSlots must be an array when present")),P(f.id)&&x.set(f.id,Y),d.has(f.id)&&An(f,y,c)}),g.nodes.forEach((f,v)=>{let y=`$.scene.nodes[${v}]`;if(!E(f)){c(y,"node must be an object");return}P(f.id)&&M.set(f.id,f),P(f.id)?w.has(f.id)?c(`${y}.id`,`duplicate node id: ${f.id}`):(w.add(f.id),typeof f.kind=="string"&&O.set(f.id,f.kind),f.kind==="transform"&&Object.prototype.hasOwnProperty.call(f,"marker")&&z.add(f.id)):c(`${y}.id`,"node.id must be a non-empty string"),Ca.has(f.kind)||c(`${y}.kind`,"node.kind must be group, instance, transform, primitive, or image")}),g.materialAssets.forEach((f,v)=>{let y=`$.scene.materialAssets[${v}]`;if(!E(f)){c(y,"material asset must be an object");return}P(f.id)?D.has(f.id)?c(`${y}.id`,`duplicate material asset id: ${f.id}`):D.add(f.id):c(`${y}.id`,"material asset id must be a non-empty string"),f.name!=null&&!P(f.name)&&c(`${y}.name`,"material asset name must be a non-empty string when present"),f.guid!=null&&!P(f.guid)&&c(`${y}.guid`,"material asset guid must be a non-empty string when present"),Object.prototype.hasOwnProperty.call(f,"materialKind")&&c(`${y}.materialKind`,"materialKind is not supported; use shaderId"),Object.prototype.hasOwnProperty.call(f,"profile")&&c(`${y}.profile`,"profile is not supported; use properties"),yr(f.shaderId)||c(`${y}.shaderId`,"shaderId must be fps.builtin.pbr or fps.builtin.standard"),Dn(f.properties,`${y}.properties`,c);for(let G of Object.keys(f))["id","guid","name","shaderId","properties","system","origin"].includes(G)||c(`${y}.${G}`,`material asset field is not allowed: ${G}`);Va(f.system,`${y}.system`,c),Ka(f.origin,`${y}.origin`,c),Ha(f,y,c)}),g.nodes.forEach((f,v)=>{if(!E(f))return;let y=`$.scene.nodes[${v}]`,G=Object.prototype.hasOwnProperty.call(f,"parentId");G&&!P(f.parentId)&&c(`${y}.parentId`,"parentId must be a non-empty string when present");let J=G?f.parentId:g.rootId;P(J)&&Wa(J,g.rootId,w,`${y}.parentId`,c),P(f.id)&&qa(f.id,g.rootId,M,`${y}.parentId`,c),Za(f.source,`${y}.source`,c),kn(f.transform,`${y}.transform`,c),ys(f.rendering,`${y}.rendering`,c),f.shadow!=null&&xn(()=>Ze(f.shadow,`${y}.shadow`),`${y}.shadow`,c),Object.prototype.hasOwnProperty.call(f,"shadowMode")&&c(`${y}.shadowMode`,"deprecated field; use shadow.mode");let Y=null;f.kind==="instance"&&(E(f.instance)?b.has(f.instance.assetId)?S.get(f.instance.assetId)!=="glb"?c(`${y}.instance.assetId`,"instance.assetId must reference a glb asset"):Y=P(f.instance.assetId)?f.instance.assetId:null:c(`${y}.instance.assetId`,`assetId must reference scene.assets: ${f.instance.assetId}`):c(`${y}.instance`,"instance node must contain instance object")),f.kind==="primitive"&&(E(f.primitive)?Ra.has(f.primitive.shape)||c(`${y}.primitive.shape`,"primitive.shape must be cube, sphere, plane, or capsule"):c(`${y}.primitive`,"primitive node must contain primitive object")),f.kind==="image"&&(E(f.image)?(b.has(f.image.assetId)?S.get(f.image.assetId)!=="texture"&&c(`${y}.image.assetId`,"image.assetId must reference a texture asset"):c(`${y}.image.assetId`,`assetId must reference scene.assets: ${f.image.assetId}`),E(f.image.size)?(In(f.image.size.width)||c(`${y}.image.size.width`,"image.size.width must be positive"),In(f.image.size.height)||c(`${y}.image.size.height`,"image.size.height must be positive")):c(`${y}.image.size`,"image.size must be an object")):c(`${y}.image`,"image node must contain image object")),f.kind==="transform"&&f.transformType!=null&&!Ga.has(f.transformType)&&c(`${y}.transformType`,"transformType must be plain, light, camera, or groundDecal"),f.kind==="transform"&&f.transformType==="groundDecal"?ls(f.groundDecal,`${y}.groundDecal`,c):Object.prototype.hasOwnProperty.call(f,"groundDecal")&&c(`${y}.groundDecal`,"groundDecal is only allowed on transform nodes with transformType groundDecal"),f.kind==="transform"&&(os(f.camera,`${y}.camera`,c),ss(f.light,`${y}.light`,c,p)),Object.prototype.hasOwnProperty.call(f,"marker")&&(f.kind!=="transform"?c(`${y}.marker`,"marker is only allowed on transform nodes"):(Qa(f.marker,`${y}.marker`,c),es(f.marker,f.id,w,z,`${y}.marker`,c))),(f.kind==="instance"||f.kind==="transform"||f.kind==="primitive"||f.kind==="image")&&za(f.overrides,`${y}.overrides`,D,Y?x.get(Y):void 0,m===3?"materialSlots":"metadata.materialSlots",c),u.has(f.id)&&An(f,y,c)}),g.materials.forEach((f,v)=>{let y=`$.scene.materials[${v}]`;if(!E(f)){c(y,"material must be an object");return}if(P(f.id)||c(`${y}.id`,"material.id must be a non-empty string"),f.scope!=null&&!$a.has(f.scope)&&c(`${y}.scope`,"material scope must be sharedAsset or nodeMaterial"),f.scope==="sharedAsset"&&(!P(f.assetId)||!b.has(f.assetId))&&!r&&c(`${y}.assetId`,`shared material assetId must reference scene.assets: ${f.assetId}`),f.scope==="nodeMaterial"){if((!P(f.nodeId)||!w.has(f.nodeId))&&!n)c(`${y}.nodeId`,`node material nodeId must reference scene.nodes: ${f.nodeId}`);else if(P(f.nodeId)&&w.has(f.nodeId)){let G=O.get(f.nodeId);G!=="instance"&&G!=="transform"&&G!=="primitive"&&c(`${y}.nodeId`,`node material nodeId must reference an instance, transform, or primitive node: ${f.nodeId}`)}}P(f.materialName)||c(`${y}.materialName`,"materialName must be a non-empty string"),E(f.properties)?Rn(f.properties,`${y}.properties`,c):c(`${y}.properties`,"properties must be an object")}),l}function wn(e,t={}){let r=Ua(e,t);return{ok:r.length===0,errors:r}}function xn(e,t,r){try{e()}catch(n){let i=typeof n?.path=="string"?n.path:t,o=typeof n?.code=="string"?n.code:"schema.invalidValue";r(i,o)}}function za(e,t,r,n,i,o){if(e!=null){if(!E(e)){o(t,"overrides must be an object when present");return}Tn(e.materialBinding,`${t}.materialBinding`,r,o),Ba(e.materialSlotBindings,`${t}.materialSlotBindings`,"slotId",r,n,i,o),Object.prototype.hasOwnProperty.call(e,"childMaterialBindings")&&o(`${t}.childMaterialBindings`,"deprecated field; use materialSlotBindings keyed by slotId"),Object.prototype.hasOwnProperty.call(e,"childMaterials")&&o(`${t}.childMaterials`,"deprecated field; use materialSlotBindings keyed by slotId")}}function Ba(e,t,r,n,i,o,a){if(e!=null){if(!E(e)){a(t,"material binding map must be an object when present");return}for(let[s,l]of Object.entries(e)){let d=`${t}.${s}`;P(s)||a(d,`${r} must be a non-empty string`),i?i.has(s)||a(d,`${r} must reference asset ${o}`):a(d,`${r} requires an instance asset with ${o}`),l==null?a(d,"material binding must be an object"):Tn(l,d,n,a)}}}function Tn(e,t,r,n){if(e!=null){if(!E(e)){n(t,"material binding must be an object when present");return}e.materialAssetId!=null&&(P(e.materialAssetId)?r.has(e.materialAssetId)||n(`${t}.materialAssetId`,`materialAssetId must reference scene.materialAssets: ${e.materialAssetId}`):n(`${t}.materialAssetId`,"materialAssetId must be non-empty when present")),e.override!=null&&Dn(e.override,`${t}.override`,n)}}function Dn(e,t,r){if(!E(e)){r(t,"material asset profile must be an object");return}if(e.lightingModel!=null&&e.lightingModel!=="lit"&&e.lightingModel!=="unlit"&&r(`${t}.lightingModel`,"lightingModel must be lit or unlit"),e.baseColor!=null)if(!E(e.baseColor))r(`${t}.baseColor`,"baseColor must be an object");else{$t(e.baseColor.color,`${t}.baseColor.color`,r),Te(e.baseColor.texture,`${t}.baseColor.texture`,r);for(let n of["brightness","saturation","contrast","hue"])e.baseColor[n]!=null&&!K(e.baseColor[n])&&r(`${t}.baseColor.${n}`,`${n} must be a finite number`)}for(let n of["metallic","roughness"])e[n]!=null&&!K(e[n])&&r(`${t}.${n}`,`${n} must be a finite number`);e.normal!=null&&(E(e.normal)?(Te(e.normal.texture,`${t}.normal.texture`,r),e.normal.strength!=null&&!K(e.normal.strength)&&r(`${t}.normal.strength`,"normal strength must be a finite number")):r(`${t}.normal`,"normal must be an object")),e.metallicRoughness!=null&&(E(e.metallicRoughness)?Te(e.metallicRoughness.texture,`${t}.metallicRoughness.texture`,r):r(`${t}.metallicRoughness`,"metallicRoughness must be an object")),e.occlusion!=null&&(E(e.occlusion)?(Te(e.occlusion.texture,`${t}.occlusion.texture`,r),e.occlusion.strength!=null&&!K(e.occlusion.strength)&&r(`${t}.occlusion.strength`,"occlusion strength must be a finite number")):r(`${t}.occlusion`,"occlusion must be an object")),e.emission!=null&&(E(e.emission)?($t(e.emission.color,`${t}.emission.color`,r),e.emission.intensity!=null&&!K(e.emission.intensity)&&r(`${t}.emission.intensity`,"emission intensity must be a finite number"),Te(e.emission.texture,`${t}.emission.texture`,r),Te(e.emission.maskTexture,`${t}.emission.maskTexture`,r)):r(`${t}.emission`,"emission must be an object")),e.alpha!=null&&(E(e.alpha)?(e.alpha.mode!=null&&e.alpha.mode!=="opaque"&&e.alpha.mode!=="mask"&&e.alpha.mode!=="blend"&&r(`${t}.alpha.mode`,"alpha mode must be opaque, mask, or blend"),e.alpha.opacity!=null&&!K(e.alpha.opacity)&&r(`${t}.alpha.opacity`,"alpha opacity must be a finite number"),e.alpha.cutoff!=null&&!K(e.alpha.cutoff)&&r(`${t}.alpha.cutoff`,"alpha cutoff must be a finite number"),Te(e.alpha.texture,`${t}.alpha.texture`,r)):r(`${t}.alpha`,"alpha must be an object"))}function Te(e,t,r){if(e!=null){if(!E(e)){r(t,"texture ref must be an object");return}e.url!=null&&!P(e.url)&&r(`${t}.url`,"texture url must be non-empty when present"),e.textureAssetId!=null&&!P(e.textureAssetId)&&r(`${t}.textureAssetId`,"textureAssetId must be non-empty when present")}}function Va(e,t,r){if(e!=null){if(!E(e)){r(t,"material asset system must be an object");return}e.readonly!=null&&typeof e.readonly!="boolean"&&r(`${t}.readonly`,"readonly must be boolean"),e.preset!=null&&!va.has(e.preset)&&r(`${t}.preset`,"preset must be default-pbr or default-standard")}}function Ka(e,t,r){if(e!=null){if(!E(e)){r(t,"material asset origin must be an object");return}e.type!=="imported"&&e.type!=="created"&&e.type!=="duplicated"&&e.type!=="preset"&&r(`${t}.type`,"origin type must be imported, created, duplicated, or preset"),e.sourceAssetGuid!=null&&!P(e.sourceAssetGuid)&&r(`${t}.sourceAssetGuid`,"sourceAssetGuid must be non-empty when present"),e.sourceAssetId!=null&&!P(e.sourceAssetId)&&r(`${t}.sourceAssetId`,"sourceAssetId must be non-empty when present"),e.sourceSlotId!=null&&!P(e.sourceSlotId)&&r(`${t}.sourceSlotId`,"sourceSlotId must be non-empty when present"),e.sourceMaterialIndex!=null&&!Number.isInteger(e.sourceMaterialIndex)&&r(`${t}.sourceMaterialIndex`,"sourceMaterialIndex must be an integer when present"),e.sourceMaterialName!=null&&!P(e.sourceMaterialName)&&r(`${t}.sourceMaterialName`,"sourceMaterialName must be non-empty when present"),e.sourceMaterialAssetId!=null&&!P(e.sourceMaterialAssetId)&&r(`${t}.sourceMaterialAssetId`,"sourceMaterialAssetId must be non-empty when present")}}function Ha(e,t,r){let n=E(e.system)?e.system.preset:void 0;n==="default-pbr"&&e.shaderId!=="fps.builtin.pbr"&&r(`${t}.shaderId`,"default-pbr material assets must use shaderId fps.builtin.pbr"),n==="default-standard"&&e.shaderId!=="fps.builtin.standard"&&r(`${t}.shaderId`,"default-standard material assets must use shaderId fps.builtin.standard")}function Wa(e,t,r,n,i){if(e===t){nt.has("root")||i(n,`parentId must point to scene node: ${e}`);return}if(nt.has("sceneNode")&&r.has(e))return;let o=nt.has("root")&&nt.has("sceneNode")?"root or scene node":nt.has("sceneNode")?"scene node":"root";i(n,`parentId must point to ${o}: ${e}`)}function qa(e,t,r,n,i){if(!P(t))return;let o=new Set([e]),a=P(r.get(e)?.parentId)?r.get(e)?.parentId:t;for(;P(a)&&a!==t;){if(o.has(a)){i(n,`parentId creates a node cycle involving ${e}`);return}o.add(a);let s=r.get(a);if(!s)return;a=P(s.parentId)?s.parentId:t}}function Ja(e,t,r){for(let n of Object.keys(e))La.has(n)||r(`${t}.${n}`,`runtime schema v3 material slot field is not allowed: ${n}`);if(e.label!=null&&!P(e.label)&&r(`${t}.label`,"label must be a non-empty string when present"),!Array.isArray(e.sourceSurfaces)||e.sourceSurfaces.length===0){r(`${t}.sourceSurfaces`,"sourceSurfaces must be a non-empty array");return}for(let n=0;n<e.sourceSurfaces.length;n+=1){let i=`${t}.sourceSurfaces[${n}]`,o=e.sourceSurfaces[n];if(!E(o)){r(i,"source surface must be an object");continue}for(let a of Object.keys(o))Fa.has(a)||r(`${i}.${a}`,`runtime schema v3 material slot source surface field is not allowed: ${a}`);P(o.ownerNodePath)||r(`${i}.ownerNodePath`,"ownerNodePath must be a non-empty string");for(let a of["meshIndex","primitiveIndex"])(!Number.isInteger(o[a])||o[a]<0)&&r(`${i}.${a}`,`${a} must be a non-negative integer`);for(let a of["nodeIndex","sourceMaterialIndex"])o[a]!=null&&(!Number.isInteger(o[a])||o[a]<0)&&r(`${i}.${a}`,`${a} must be a non-negative integer when present`);o.nodeIndexPath!=null&&(!Array.isArray(o.nodeIndexPath)||o.nodeIndexPath.some(a=>!Number.isInteger(a)||a<0))&&r(`${i}.nodeIndexPath`,"nodeIndexPath must contain non-negative integers"),P(o.sourceMeshName)||r(`${i}.sourceMeshName`,"sourceMeshName is required")}}function Ya(e,t,r){if(e!=null){if(!E(e)){r(t,"defaults must be an object");return}if(kn(e.transform,`${t}.transform`,r),Pn(e.outline,`${t}.outline`,r),e.childOutlines!=null)if(!E(e.childOutlines))r(`${t}.childOutlines`,"childOutlines must be an object");else for(let[n,i]of Object.entries(e.childOutlines))Pn(i,`${t}.childOutlines.${n}`,r)}}function Xa(e,t,r){if(e!=null){if(!E(e)){r(t,"generatedFrom must be an object when present");return}Mn(e,t,r),P(e.compilerId)||r(`${t}.compilerId`,"compilerId must be a non-empty string"),P(e.compilerVersion)||r(`${t}.compilerVersion`,"compilerVersion must be a non-empty string"),P(e.compiledAt)||r(`${t}.compiledAt`,"compiledAt must be a non-empty string")}}function Za(e,t,r){if(e!=null){if(!E(e)){r(t,"source must be an object when present");return}Mn(e,t,r),e.objectGuid!=null&&!P(e.objectGuid)&&r(`${t}.objectGuid`,"objectGuid must be a non-empty string when present"),e.objectId!=null&&!P(e.objectId)&&r(`${t}.objectId`,"objectId must be a non-empty string when present"),e.component!=null&&!P(e.component)&&r(`${t}.component`,"component must be a non-empty string when present"),e.propertyPath!=null&&!P(e.propertyPath)&&r(`${t}.propertyPath`,"propertyPath must be a non-empty string when present")}}function Mn(e,t,r){P(e.sourceId)||r(`${t}.sourceId`,"sourceId must be a non-empty string"),P(e.sourceType)||r(`${t}.sourceType`,"sourceType must be a non-empty string"),e.revision!=null&&(typeof e.revision!="number"||!Number.isFinite(e.revision))&&r(`${t}.revision`,"revision must be a finite number when present")}function Sr(e,t){let r=wn(e,t);if(r.ok)return;let n=new Error(`scene_json_schema_failed:
3
+ ${JSON.stringify(r.errors,null,2)}`);throw Object.assign(n,{code:"scene_json_schema_failed",diagnostics:r.errors}),n}function E(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function P(e){return typeof e=="string"&&e.trim().length>0}function kn(e,t,r){if(e!=null){if(!E(e)){r(t,"transform must be an object");return}se(e.position,`${t}.position`,r),se(e.rotation,`${t}.rotation`,r),se(e.rotationDeg,`${t}.rotationDeg`,r),typeof e.scale=="number"?Number.isFinite(e.scale)||r(`${t}.scale`,"scale number must be finite"):se(e.scale,`${t}.scale`,r)}}function Qa(e,t,r){if(!E(e)){r(t,"marker must be an object");return}he(e,["schemaVersion","label","type","kind","tags","note","color","target","semanticFrame","geometry","metadata"],t,r),e.schemaVersion!==1&&r(`${t}.schemaVersion`,"marker.schemaVersion must be 1"),P(e.label)||r(`${t}.label`,"marker.label must be a non-empty string"),P(e.type)||r(`${t}.type`,"marker.type must be a non-empty string"),e.kind!=null&&!P(e.kind)&&r(`${t}.kind`,"marker.kind must be a non-empty string when present"),e.tags!=null&&(Array.isArray(e.tags)?e.tags.forEach((n,i)=>{typeof n!="string"&&r(`${t}.tags[${i}]`,"marker tag must be a string")}):r(`${t}.tags`,"marker.tags must be an array when present")),e.note!=null&&typeof e.note!="string"&&r(`${t}.note`,"marker.note must be a string when present"),e.color!=null&&ns(e.color,`${t}.color`,r),e.target!=null&&hr(e.target,`${t}.target`,r),e.semanticFrame!=null&&ts(e.semanticFrame,`${t}.semanticFrame`,r),rs(e.geometry,`${t}.geometry`,r),e.metadata!=null&&!E(e.metadata)&&r(`${t}.metadata`,"marker.metadata must be an object when present")}function es(e,t,r,n,i,o){if(!E(e))return;let a=[];e.target!=null&&a.push({value:e.target,path:`${i}.target`}),E(e.geometry)&&e.geometry.target!=null&&a.push({value:e.geometry.target,path:`${i}.geometry.target`});for(let s of a)E(s.value)&&(s.value.kind!=="scene-object"&&s.value.kind!=="marker"&&o(`${s.path}.kind`,"runtime marker target kind must be scene-object or marker"),P(s.value.id)&&(s.value.id===t?o(`${s.path}.id`,"runtime marker target must not reference its marker node"):r.has(s.value.id)?s.value.kind==="marker"&&!n.has(s.value.id)?o(`${s.path}.id`,`runtime marker target must reference a marker node: ${s.value.id}`):s.value.kind==="scene-object"&&n.has(s.value.id)&&o(`${s.path}.id`,`runtime scene-object target must not reference a marker node: ${s.value.id}`):o(`${s.path}.id`,`runtime marker target must reference scene.nodes: ${s.value.id}`)))}function hr(e,t,r){if(!E(e)){r(t,"marker target must be an object");return}he(e,["kind","id","label","path","metadata"],t,r),P(e.kind)||r(`${t}.kind`,"marker target kind must be a non-empty string"),P(e.id)||r(`${t}.id`,"marker target id must be a non-empty string");for(let n of["label","path"])e[n]!=null&&typeof e[n]!="string"&&r(`${t}.${n}`,`marker target ${n} must be a string when present`);e.metadata!=null&&!E(e.metadata)&&r(`${t}.metadata`,"marker target metadata must be an object when present")}function ts(e,t,r){if(!E(e)){r(t,"marker semanticFrame must be an object");return}he(e,["origin","forward","right","up","label","description"],t,r),E(e.origin)?se(e.origin,`${t}.origin`,r):r(`${t}.origin`,"marker semanticFrame.origin must be a vector object");for(let n of["forward","right","up"])e[n]!=null&&se(e[n],`${t}.${n}`,r);for(let n of["label","description"])e[n]!=null&&typeof e[n]!="string"&&r(`${t}.${n}`,`marker semanticFrame ${n} must be a string when present`)}function rs(e,t,r){if(!E(e)){r(t,"marker.geometry must be an object");return}if(e.kind==="box"){he(e,["kind"],t,r);return}if(e.kind==="point"){he(e,["kind","coordinateSpace","position","offset","target"],t,r),e.coordinateSpace!=null&&e.coordinateSpace!=="world"&&e.coordinateSpace!=="local"&&r(`${t}.coordinateSpace`,"point marker coordinateSpace must be world or local"),e.position!=null&&se(e.position,`${t}.position`,r),e.offset!=null&&se(e.offset,`${t}.offset`,r),e.target!=null&&hr(e.target,`${t}.target`,r);return}if(e.kind==="object-bounds"){he(e,["kind","target"],t,r),hr(e.target,`${t}.target`,r);return}if(e.kind==="polyhedron"){he(e,["kind","coordinateSpace","vertices","faces"],t,r),e.coordinateSpace!=null&&e.coordinateSpace!=="world"&&r(`${t}.coordinateSpace`,"polyhedron marker coordinateSpace must be world"),Array.isArray(e.vertices)?e.vertices.forEach((n,i)=>{let o=`${t}.vertices[${i}]`;E(n)?se(n,o,r):r(o,"polyhedron marker vertex must be a vector object")}):r(`${t}.vertices`,"polyhedron marker vertices must be an array"),e.faces!=null&&(Array.isArray(e.faces)?e.faces.forEach((n,i)=>{Array.isArray(n)?n.forEach((o,a)=>{(!Number.isInteger(o)||o<0)&&r(`${t}.faces[${i}][${a}]`,"polyhedron marker index must be a non-negative integer")}):r(`${t}.faces[${i}]`,"polyhedron marker face must be an array")}):r(`${t}.faces`,"polyhedron marker faces must be an array when present"));return}r(`${t}.kind`,"marker.geometry.kind must be box, point, object-bounds, or polyhedron")}function ns(e,t,r){if(!E(e)){r(t,"marker color must be an object");return}he(e,["r","g","b"],t,r);for(let n of["r","g","b"])Cn(e[n])||r(`${t}.${n}`,"marker color component must be between 0 and 1")}function he(e,t,r,n){let i=new Set(t);for(let o of Object.keys(e))i.has(o)||n(`${r}.${o}`,`field is not allowed: ${o}`)}function se(e,t,r){if(e!=null){if(!E(e)){r(t,"value must be a vector object");return}for(let n of["x","y","z"])(typeof e[n]!="number"||!Number.isFinite(e[n]))&&r(`${t}.${n}`,"vector component must be a finite number")}}function is(e,t,r){if(e!=null){if(!E(e)){r(t,"value must be a vector object");return}for(let n of["x","y"])(typeof e[n]!="number"||!Number.isFinite(e[n]))&&r(`${t}.${n}`,"vector component must be a finite number")}}function K(e){return typeof e=="number"&&Number.isFinite(e)}function De(e){return K(e)&&e>0}function Cn(e){return K(e)&&e>=0&&e<=1}function $t(e,t,r){if(e!=null){if(!E(e)){r(t,"color must be an object");return}for(let n of["r","g","b"])(typeof e[n]!="number"||!Number.isFinite(e[n]))&&r(`${t}.${n}`,"color component must be a finite number")}}function os(e,t,r){if(e!=null){if(!E(e)){r(t,"camera must be an object");return}e.projection!=null&&e.projection!=="orthographic"&&e.projection!=="perspective"&&r(`${t}.projection`,"camera projection must be orthographic or perspective");for(let n of["alpha","beta"])e[n]!=null&&!K(e[n])&&r(`${t}.${n}`,"camera property must be a finite number when present");for(let n of["radius","orthoSize"])e[n]!=null&&!De(e[n])&&r(`${t}.${n}`,"camera property must be a positive finite number when present");e.fov!=null&&!De(e.fov)&&r(`${t}.fov`,"camera fov must be a positive finite number"),se(e.targetOffset,`${t}.targetOffset`,r),is(e.targetScreenOffset,`${t}.targetScreenOffset`,r);for(let n of["minZ","maxZ","lowerRadiusLimit","upperRadiusLimit"])e[n]!=null&&!De(e[n])&&r(`${t}.${n}`,"camera property must be a positive finite number");for(let n of["lowerBetaLimit","upperBetaLimit"])e[n]!=null&&!K(e[n])&&r(`${t}.${n}`,"camera property must be a finite number");e.inertia!=null&&!Cn(e.inertia)&&r(`${t}.inertia`,"camera inertia must be between 0 and 1"),De(e.minZ)&&De(e.maxZ)&&e.maxZ<=e.minZ&&r(`${t}.maxZ`,"camera maxZ must be greater than minZ"),K(e.lowerBetaLimit)&&K(e.upperBetaLimit)&&e.upperBetaLimit<e.lowerBetaLimit&&r(`${t}.upperBetaLimit`,"camera upperBetaLimit must be greater than or equal to lowerBetaLimit"),De(e.lowerRadiusLimit)&&De(e.upperRadiusLimit)&&e.upperRadiusLimit<e.lowerRadiusLimit&&r(`${t}.upperRadiusLimit`,"camera upperRadiusLimit must be greater than or equal to lowerRadiusLimit")}}function as(e){let t=e.meta?.generatedFrom;return E(t)&&t.compilerId===Da&&t.compilerVersion===Ma}function ss(e,t,r,n=!1){if(e==null)return;let i=n&&E(e)&&!Object.prototype.hasOwnProperty.call(e,"schemaVersion")?ds(e,t):e;try{ve(i,t)}catch(o){let a=o;r(typeof a.path=="string"?a.path:t,typeof a.reason=="string"?a.reason:typeof a.message=="string"?a.message:"light does not satisfy the Engine Runtime Light contract")}}function ds(e,t){let r={...e,schemaVersion:1};if(e.type!=="directional"||!E(e.direction))return r;let{x:n,y:i,z:o}=e.direction;if(![n,i,o].every(s=>typeof s=="number"&&Number.isFinite(s)))return r;let a=Math.hypot(n,i,o);return a<=0||Math.abs(a-1)>ka?r:{...r,direction:Je(e.direction,`${t}.direction`)}}function Pn(e,t,r){if(e!=null){if(!E(e)){r(t,"outline must be an object");return}e.renderOutline!=null&&typeof e.renderOutline!="boolean"&&r(`${t}.renderOutline`,"renderOutline must be boolean"),e.outlineWidth!=null&&(typeof e.outlineWidth!="number"||!Number.isFinite(e.outlineWidth))&&r(`${t}.outlineWidth`,"outlineWidth must be a finite number"),$t(e.outlineColor,`${t}.outlineColor`,r)}}function ls(e,t,r){if(e==null){r(t,"groundDecal is required when transformType is groundDecal");return}if(!E(e)){r(t,"groundDecal must be an object");return}cs(e,t,r)}function cs(e,t,r){if(P(e.uiKind)||r(`${t}.uiKind`,"groundDecal UI kind must be non-empty"),!E(e.size))r(`${t}.size`,"groundDecal.size must be an object");else for(let n of["width","depth"])(typeof e.size[n]!="number"||!Number.isFinite(e.size[n])||e.size[n]<=0)&&r(`${t}.size.${n}`,"groundDecal size must be a positive finite number");if(e.aspectSourceLayerId!=null&&!P(e.aspectSourceLayerId)&&r(`${t}.aspectSourceLayerId`,"aspectSourceLayerId must be non-empty when present"),e.lockAspectToBorder!=null&&typeof e.lockAspectToBorder!="boolean"&&r(`${t}.lockAspectToBorder`,"lockAspectToBorder must be boolean when present"),e.editorPreviewActive!=null&&r(`${t}.editorPreviewActive`,"editorPreviewActive is editor-only and must not appear in runtime scene data"),us(e.mask,`${t}.mask`,r),fs(e.rendering,`${t}.rendering`,r),!Array.isArray(e.layers)){r(`${t}.layers`,"groundDecal UI layers must be an array");return}e.layers.forEach((n,i)=>ms(n,`${t}.layers[${i}]`,r)),gs(e.layers,`${t}.layers`,r)}function us(e,t,r){if(e!=null){if(!E(e)){r(t,"groundDecal UI mask must be an object");return}e.enabled!=null&&typeof e.enabled!="boolean"&&r(`${t}.enabled`,"mask.enabled must be boolean"),e.source!=null&&e.source!=="roundedRect"&&e.source!=="borderAlpha"&&e.source!=="texture"&&r(`${t}.source`,"mask.source must be roundedRect, borderAlpha, or texture"),e.textureId!=null&&!P(e.textureId)&&r(`${t}.textureId`,"mask.textureId must be non-empty when present");for(let n of["cornerRadius","padding"])e[n]!=null&&(typeof e[n]!="number"||!Number.isFinite(e[n])||e[n]<0)&&r(`${t}.${n}`,`${n} must be a non-negative finite number`)}}function fs(e,t,r){if(e!=null){if(!E(e)){r(t,"groundDecal UI rendering must be an object");return}for(let n of["textureWidth","textureHeight"])e[n]!=null&&(!Number.isInteger(e[n])||e[n]<=0)&&r(`${t}.${n}`,`${n} must be a positive integer`);for(let n of["alphaIndex","diffuseTextureLevel","emissiveTextureLevel"])e[n]!=null&&(typeof e[n]!="number"||!Number.isFinite(e[n]))&&r(`${t}.${n}`,`${n} must be a finite number`)}}function ms(e,t,r){if(!E(e)){r(t,"groundDecal UI layer must be an object");return}P(e.id)||r(`${t}.id`,"layer.id must be non-empty"),P(e.role)||r(`${t}.role`,"layer.role must be non-empty"),e.editorPreviewPercent!=null&&r(`${t}.editorPreviewPercent`,"editorPreviewPercent is editor-only and must not appear in runtime scene data"),e.enabled!=null&&typeof e.enabled!="boolean"&&r(`${t}.enabled`,"layer.enabled must be boolean"),(typeof e.zOrder!="number"||!Number.isFinite(e.zOrder))&&r(`${t}.zOrder`,"layer.zOrder must be a finite number"),e.opacity!=null&&(typeof e.opacity!="number"||!Number.isFinite(e.opacity))&&r(`${t}.opacity`,"layer.opacity must be finite"),e.rotationDeg!=null&&(typeof e.rotationDeg!="number"||!Number.isFinite(e.rotationDeg)||e.rotationDeg<=-180||e.rotationDeg>180)&&r(`${t}.rotationDeg`,"layer.rotationDeg must be in the range (-180, 180]"),ps(e.rect,`${t}.rect`,r),e.kind==="texture"?(e.textureId!=null&&!P(e.textureId)&&r(`${t}.textureId`,"texture layer textureId must be non-empty when present"),e.imageFit!=null&&e.imageFit!=="contain"&&e.imageFit!=="stretch"&&r(`${t}.imageFit`,"texture layer imageFit must be contain or stretch"),je(e.tint,`${t}.tint`,r)):e.kind==="textureProgress"?(e.textureId!=null&&!P(e.textureId)&&r(`${t}.textureId`,"texture progress layer textureId must be non-empty when present"),e.imageFit!=null&&e.imageFit!=="contain"&&e.imageFit!=="stretch"&&r(`${t}.imageFit`,"texture progress layer imageFit must be contain or stretch"),(typeof e.value!="number"||!Number.isFinite(e.value)||e.value<0||e.value>1)&&r(`${t}.value`,"texture progress value must be between 0 and 1"),e.direction!=null&&!["leftToRight","rightToLeft","bottomToTop","topToBottom"].includes(String(e.direction))&&r(`${t}.direction`,"texture progress direction is invalid"),je(e.tint,`${t}.tint`,r)):e.kind==="color"?je(e.color,`${t}.color`,r):e.kind==="progress"?((typeof e.value!="number"||!Number.isFinite(e.value)||e.value<0||e.value>1)&&r(`${t}.value`,"progress value must be between 0 and 1"),e.direction!=null&&!["leftToRight","rightToLeft","bottomToTop","topToBottom"].includes(String(e.direction))&&r(`${t}.direction`,"progress direction is invalid"),je(e.color,`${t}.color`,r)):e.kind==="text"?bs(e.text,`${t}.text`,r):r(`${t}.kind`,"layer.kind must be texture, textureProgress, color, progress, or text")}function gs(e,t,r){let n=new Map;e.forEach((i,o)=>{if(!E(i)||!P(i.id))return;let a=n.get(i.id);if(a!=null){r(`${t}[${o}].id`,`layer.id must be unique; duplicate of layers[${a}]`);return}n.set(i.id,o)})}function ps(e,t,r){if(!E(e)){r(t,"layer.rect must be an object");return}for(let n of["x","z","width","depth"])(typeof e[n]!="number"||!Number.isFinite(e[n]))&&r(`${t}.${n}`,`rect.${n} must be a finite number`);for(let n of["width","depth"])typeof e[n]=="number"&&e[n]<=0&&r(`${t}.${n}`,`rect.${n} must be positive`)}function bs(e,t,r){if(!E(e)){r(t,"text layer text must be an object");return}typeof e.value!="string"&&r(`${t}.value`,"text.value must be a string"),e.fontFamily!=null&&typeof e.fontFamily!="string"&&r(`${t}.fontFamily`,"fontFamily must be a string"),e.fontSize!=null&&(typeof e.fontSize!="number"||!Number.isFinite(e.fontSize)||e.fontSize<=0)&&r(`${t}.fontSize`,"fontSize must be a positive finite number"),e.fontWeight!=null&&typeof e.fontWeight!="string"&&r(`${t}.fontWeight`,"fontWeight must be a string"),je(e.color,`${t}.color`,r),je(e.strokeColor,`${t}.strokeColor`,r),e.strokeWidth!=null&&(typeof e.strokeWidth!="number"||!Number.isFinite(e.strokeWidth)||e.strokeWidth<0)&&r(`${t}.strokeWidth`,"strokeWidth must be a non-negative finite number")}function je(e,t,r){if(e!=null){if(!E(e)){r(t,"color must be an object");return}for(let n of["r","g","b"])(typeof e[n]!="number"||!Number.isFinite(e[n]))&&r(`${t}.${n}`,`color.${n} must be finite`);e.a!=null&&(typeof e.a!="number"||!Number.isFinite(e.a))&&r(`${t}.a`,"color.a must be finite")}}function ys(e,t,r){if(e!=null){if(!E(e)){r(t,"rendering must be an object");return}e.renderingGroupId!=null&&e.renderingGroupId!==0&&e.renderingGroupId!==1&&e.renderingGroupId!==2&&e.renderingGroupId!==3&&r(`${t}.renderingGroupId`,"renderingGroupId must be 0, 1, 2, or 3"),e.alphaIndex!=null&&(typeof e.alphaIndex!="number"||!Number.isFinite(e.alphaIndex))&&r(`${t}.alphaIndex`,"alphaIndex must be a finite number")}}function In(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function Rn(e,t,r){for(let[n,i]of Object.entries(e)){let o=`${t}.${n}`;["albedoColor","diffuseColor","emissiveColor","outlineColor"].includes(n)&&$t(i,o,r),["metallic","roughness","contrast","brightness","saturation","hue","colorDensity","alpha","alphaCutOff","transparencyMode"].includes(n)&&(typeof i!="number"||!Number.isFinite(i))&&r(o,`${n} must be a finite number`),n==="backFaceCulling"&&typeof i!="boolean"&&r(o,"backFaceCulling must be boolean"),["albedoTexture","normalTexture","metallicTexture"].includes(n)&&(E(i)?i.url!=null&&!P(i.url)&&r(`${o}.url`,"texture url must be non-empty when present"):r(o,`${n} must be an object`)),["pbr","standard"].includes(n)&&(E(i)?Rn(i,o,r):r(o,`${n} must be an object`))}}function An(e,t,r){let n=JSON.stringify(e),i=_a.filter(o=>n.includes(o));i.length>0&&r(t,`contains runtime-only asset fields: ${i.join(", ")}`)}function On(e,t,r){let n=Nn(e)??512,i=Nn(t)??512;if(!Number.isFinite(r)||r<=0)return{width:n,height:i};let o=n,a=Math.max(1,Math.round(o/r));return a>i&&(a=i,o=Math.max(1,Math.round(a*r))),{width:o,height:a}}function Er(e){let t=e.rendering?.textureWidth??512,r=e.rendering?.textureHeight??512,n=e.size.width>0&&e.size.depth>0?e.size.width/e.size.depth:t/r;return On(t,r,n)}function Nn(e){return typeof e!="number"||!Number.isFinite(e)||e<=0?null:Math.max(64,Math.min(2048,Math.round(e)))}var Q=(e,t)=>({kind:"number",...e!=null?{min:e}:{},...t!=null?{max:t}:{}}),Me={kind:"texture"},$n={kind:"color"},hs={kind:"enum",values:["lit","unlit"]},Ss={kind:"enum",values:["opaque","mask","blend"]},_n={lightingModel:hs,baseColor:{kind:"object",properties:{color:$n,texture:Me,brightness:Q(0),saturation:Q(0),contrast:Q(0),hue:Q(-180,180)}},normal:{kind:"object",properties:{texture:Me,strength:Q(0)}},emission:{kind:"object",properties:{color:$n,intensity:Q(0),texture:Me,maskTexture:Me}},alpha:{kind:"object",properties:{mode:Ss,opacity:Q(0,1),cutoff:Q(0,1),texture:Me}}},Es={kind:"object",properties:{..._n,metallic:Q(0,1),roughness:Q(0,1),metallicRoughness:{kind:"object",properties:{texture:Me}},occlusion:{kind:"object",properties:{texture:Me,strength:Q(0)}}}},xs={kind:"object",properties:_n},Ps={lightingModel:"lit",baseColor:{color:{r:1,g:1,b:1},brightness:1,saturation:1,contrast:1,hue:0},metallic:0,roughness:1,emission:{color:{r:0,g:0,b:0},intensity:0}},Is={lightingModel:"lit",baseColor:{color:{r:1,g:1,b:1},brightness:1,saturation:1,contrast:1,hue:0},emission:{color:{r:0,g:0,b:0},intensity:0}},vn=[{id:"surface",title:"Surface",order:40},{id:"geometry",title:"Geometry",order:50},{id:"emission",title:"Emission",order:60},{id:"alpha",title:"Alpha",order:70}],ke={path:"properties.lightingModel",operator:"equals",value:"lit",inactiveReasonKey:"litMaterial"},jn=[Fe("properties.lightingModel","surface",1,"enum","assetLightingModel","lightingModel","lit",{options:[{value:"lit",labelKey:"assetLightingModelLit"},{value:"unlit",labelKey:"assetLightingModelUnlit"}],binding:"lightingModel",updateClass:"define"}),Fe("properties.baseColor.color","surface",2,"color","assetBaseColor","baseColor",{r:1,g:1,b:1},{binding:"baseColor.color"}),Ue("properties.baseColor.texture.textureAssetId","properties.baseColor.texture","surface",3,"assetBaseTexture","baseTexture","baseColor.texture"),ee("properties.baseColor.brightness","surface",4,"assetBrightness","brightness",1,{softMin:0,softMax:4,step:.05,conditions:[Le("properties.baseColor.texture.textureAssetId","baseTexture")]}),ee("properties.baseColor.saturation","surface",5,"assetSaturation","saturation",1,{softMin:0,softMax:2,step:.05,conditions:[Le("properties.baseColor.texture.textureAssetId","baseTexture")]}),ee("properties.baseColor.contrast","surface",6,"assetContrast","contrast",1,{softMin:0,softMax:2,step:.05,conditions:[Le("properties.baseColor.texture.textureAssetId","baseTexture")]}),ee("properties.baseColor.hue","surface",7,"assetHue","hue",0,{step:1,conditions:[Le("properties.baseColor.texture.textureAssetId","baseTexture")]}),Ue("properties.normal.texture.textureAssetId","properties.normal.texture","geometry",10,"assetNormalTexture","normalTexture","normal.texture",[ke]),ee("properties.normal.strength","geometry",11,"assetNormalStrength","normalStrength",1,{softMin:0,softMax:4,step:.05,conditions:[ke,Le("properties.normal.texture.textureAssetId","normalTexture")]}),Fe("properties.emission.color","emission",50,"color","assetEmissionColor","emissionColor",{r:0,g:0,b:0},{binding:"emission.color"}),ee("properties.emission.intensity","emission",51,"assetEmissionIntensity","emissionIntensity",0,{softMin:0,softMax:8,step:.05}),Ue("properties.emission.texture.textureAssetId","properties.emission.texture","emission",52,"assetEmissionTexture","emissionTexture","emission.texture"),Fe("properties.alpha.mode","alpha",60,"enum","assetAlphaMode","alphaMode","opaque",{options:[{value:"opaque",labelKey:"assetAlphaModeOpaque"},{value:"mask",labelKey:"assetAlphaModeMask"},{value:"blend",labelKey:"assetAlphaModeBlend"}],binding:"alpha.mode",updateClass:"pipeline"}),ee("properties.alpha.opacity","alpha",61,"assetAlphaOpacity","alphaOpacity",1,{step:.05,conditions:[{path:"properties.alpha.mode",operator:"equals",value:"blend",inactiveReasonKey:"alphaBlend"}]}),ee("properties.alpha.cutoff","alpha",62,"assetAlphaCutoff","alphaCutoff",.5,{step:.01,conditions:[{path:"properties.alpha.mode",operator:"equals",value:"mask",inactiveReasonKey:"alphaMask"}]}),Ue("properties.alpha.texture.textureAssetId","properties.alpha.texture","alpha",63,"assetAlphaTexture","alphaTexture","alpha.texture",[{path:"properties.alpha.mode",operator:"not-equals",value:"opaque",inactiveReasonKey:"alphaTransparency"}])],As=[...jn,ee("properties.metallic","geometry",20,"assetMetallic","metallic",0,{step:.05,conditions:[ke]}),ee("properties.roughness","geometry",21,"assetRoughness","roughness",1,{step:.05,conditions:[ke]}),Ue("properties.metallicRoughness.texture.textureAssetId","properties.metallicRoughness.texture","geometry",22,"assetMetallicRoughnessTexture","metallicRoughnessTexture","metallicRoughness.texture",[ke]),Ue("properties.occlusion.texture.textureAssetId","properties.occlusion.texture","geometry",23,"assetOcclusionTexture","occlusionTexture","occlusion.texture",[ke]),ee("properties.occlusion.strength","geometry",24,"assetOcclusionStrength","occlusionStrength",1,{softMin:0,softMax:4,step:.05,conditions:[ke,Le("properties.occlusion.texture.textureAssetId","occlusionTexture")]})],ws=[{shaderId:"fps.builtin.pbr",version:1,runtimeKind:"pbr",displayName:"PBR",propertiesSchema:Es,defaultProperties:Ps,inspector:{sections:vn,fields:As}},{shaderId:"fps.builtin.standard",version:1,runtimeKind:"standard",displayName:"Standard",propertiesSchema:xs,defaultProperties:Is,inspector:{sections:vn,fields:jn}}],Ln=Ts(ws);function Ts(e){let t=new Map;for(let n of e){Ds(n,t);let i=Ms(n);t.set(n.shaderId,Kn(i))}let r=Object.freeze([...t.values()]);return Object.freeze({get(n){return typeof n=="string"?t.get(n)??null:null},list(){return r}})}function Fn(e,t=Ln){return t.get(e)}function Un(e){return Fn(e)}function zn(e,t,r="properties",n=Ln){let i=Fn(e,n);if(!i)return[{path:"shaderId",message:`Unknown material shader: ${String(e)}`}];let o=[];return Pr(i.propertiesSchema,t,r,o),o}function Fe(e,t,r,n,i,o,a,s){return{path:e,sectionId:t,order:r,control:n,labelKey:i,tooltipKey:o,defaultValue:a,updateClass:"uniform",...s}}function ee(e,t,r,n,i,o,a={}){return Fe(e,t,r,"number",n,i,o,{binding:e.replace(/^properties\./,""),step:a.step??.05,displayPrecision:2,precision:2,...a})}function Ue(e,t,r,n,i,o,a,s){return Fe(e,r,n,"texture",i,o,"",{schemaPath:t,binding:a,updateClass:"texture",conditions:s})}function Le(e,t){return{path:e,operator:"truthy",inactiveReasonKey:t}}function Ds(e,t){if(!e.shaderId.trim())throw new Error("Material Shader Definition shaderId must not be empty.");if(!Number.isInteger(e.version)||e.version<=0)throw new Error(`Material Shader Definition ${e.shaderId} must use a positive integer version.`);if(t.has(e.shaderId))throw new Error(`Duplicate Material Shader Definition: ${e.shaderId}`);if(e.sourceFile!=null&&!Cs(e.sourceFile))throw new Error(`Material Shader Definition ${e.shaderId} sourceFile must be a safe project-relative path.`);Bn(e.shaderId,e.propertiesSchema,"properties");let r=[];if(Pr(e.propertiesSchema,e.defaultProperties,"properties",r),r.length>0){let o=r[0];throw new Error(`Material Shader Definition ${e.shaderId} default ${o.path} ${o.message}.`)}let n=new Set;for(let o of e.inspector.sections){if(!o.id.trim()||n.has(o.id))throw new Error(`Material Shader Definition ${e.shaderId} contains an invalid or duplicate section: ${o.id}`);n.add(o.id)}let i=new Set;for(let o of e.inspector.fields){if(!o.path.startsWith("properties.")||i.has(o.path))throw new Error(`Material Shader Definition ${e.shaderId} contains an invalid or duplicate field: ${o.path}`);if(!n.has(o.sectionId))throw new Error(`Material Shader Definition ${e.shaderId} field ${o.path} references an unknown section.`);ks(e,o),i.add(o.path)}}function Ms(e){let t=structuredClone(e);return{...t,inspector:{...t.inspector,fields:t.inspector.fields.map(r=>{if(r.control!=="number")return r;let n=Vn(t.propertiesSchema,r.schemaPath??r.path);return n?.kind!=="number"?r:{...r,...n.min!=null?{min:n.min}:{},...n.max!=null?{max:n.max}:{}}})}}}function ks(e,t){let r=[["min",t.min],["max",t.max],["softMin",t.softMin],["softMax",t.softMax]];for(let[i,o]of r)if(o!=null&&!Number.isFinite(o))throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} ${i} must be finite.`);if(t.control!=="number"){if(r.some(([,i])=>i!=null))throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} uses numeric ranges with a non-number control.`);return}let n=Vn(e.propertiesSchema,t.schemaPath??t.path);if(n?.kind!=="number")throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} must reference a number schema.`);for(let[i,o,a]of[["min",t.min,n.min],["max",t.max,n.max]])if(o!=null&&o!==a)throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} ${i} must match propertiesSchema.`);if(t.softMin!=null&&t.softMax!=null&&t.softMin>t.softMax)throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} softMin must not exceed softMax.`);if(n.min!=null&&t.softMin!=null&&t.softMin<n.min)throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} softMin must not be below the schema minimum.`);if(n.max!=null&&t.softMax!=null&&t.softMax>n.max)throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} softMax must not exceed the schema maximum.`)}function Bn(e,t,r){if(t.kind==="object"){for(let[n,i]of Object.entries(t.properties))Bn(e,i,`${r}.${n}`);return}if(t.kind==="number"){if(t.min!=null&&!Number.isFinite(t.min))throw new Error(`Material Shader Definition ${e} number field ${r} min must be finite.`);if(t.max!=null&&!Number.isFinite(t.max))throw new Error(`Material Shader Definition ${e} number field ${r} max must be finite.`);if(t.min!=null&&t.max!=null&&t.min>t.max)throw new Error(`Material Shader Definition ${e} number field ${r} min must not exceed max.`);return}if(t.kind==="color"&&t.channels!=null&&t.channels!==3&&t.channels!==4)throw new Error(`Material Shader Definition ${e} color field ${r} channels must be 3 or 4.`)}function Cs(e){let t=e.trim();return!t||t.startsWith("/")||t.includes("\\")||t.includes(":")?!1:!t.split("/").includes("..")}function Rs(e){let t=e.trim();return t.startsWith("properties.")?t:`properties.${t}`}function Vn(e,t){let r=Rs(t).replace(/^properties\./,"").split(".").filter(Boolean);if(r.length===0)return null;let n=e;for(let i of r){if(n.kind!=="object")return null;let o=n.properties[i];if(!o)return null;n=o}return n}function Pr(e,t,r,n){if(e.kind==="object"){if(!xr(t)){n.push({path:r,message:"must be an object"});return}for(let o of Object.keys(t))Object.prototype.hasOwnProperty.call(e.properties,o)||n.push({path:`${r}.${o}`,message:"is not supported by the selected shader"});for(let[o,a]of Object.entries(e.properties))t[o]!==void 0&&Pr(a,t[o],`${r}.${o}`,n);return}if(e.kind==="number"){if(typeof t!="number"||!Number.isFinite(t)){n.push({path:r,message:"must be a finite number"});return}e.min!=null&&t<e.min&&n.push({path:r,message:`must be greater than or equal to ${e.min}`}),e.max!=null&&t>e.max&&n.push({path:r,message:`must be less than or equal to ${e.max}`});return}if(e.kind==="boolean"){typeof t!="boolean"&&n.push({path:r,message:"must be a boolean"});return}if(e.kind==="string"){t!==null&&typeof t!="string"?n.push({path:r,message:"must be a string"}):t===null&&!e.nullable&&n.push({path:r,message:"must not be null"});return}if(e.kind==="enum"){(typeof t!="string"||!e.values.includes(t))&&n.push({path:r,message:`must be one of: ${e.values.join(", ")}`});return}if(e.kind==="color"){let o=e.channels===4?["r","g","b","a"]:["r","g","b"];Gn(t,r,o,n,e.channels===4?"an RGBA object":"an RGB object");return}if(e.kind==="vec2"||e.kind==="vec3"){Gn(t,r,e.kind==="vec2"?["x","y"]:["x","y","z"],n,`a ${e.kind} object`);return}if(t===null)return;if(!xr(t)){n.push({path:r,message:"must be a texture reference object or null"});return}Object.keys(t).some(o=>o!=="url"&&o!=="textureAssetId")&&n.push({path:r,message:"must contain only url or textureAssetId"});for(let o of["url","textureAssetId"]){let a=t[o];a!==void 0&&(typeof a!="string"||!a.trim())&&n.push({path:`${r}.${o}`,message:"must be a non-empty string"})}}function Gn(e,t,r,n,i){if(!xr(e)){n.push({path:t,message:`must be ${i}`});return}Object.keys(e).some(o=>!r.includes(o))&&n.push({path:t,message:`must contain only ${r.join(", ")}`});for(let o of r)(typeof e[o]!="number"||!Number.isFinite(e[o]))&&n.push({path:`${t}.${o}`,message:"must be a finite number"})}function Kn(e){if(e&&typeof e=="object"&&!Object.isFrozen(e)){Object.freeze(e);for(let t of Object.values(e))Kn(t)}return e}function xr(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Hn(e){return e.trim().replace(/^\/+|\/+$/g,"")}function Ns(e){let t=[],r=new Map(e.assets.map(n=>[n.id,n]));for(let n of e.scene.gameObjects){let i=Bs(n),o=vt(n.overrides?.materialBinding);o&&t.push({kind:"root",scope:"scene",gameObjectId:n.id,gameObjectName:n.name,materialAssetId:o,bindingPath:"overrides.materialBinding.materialAssetId",label:i});let a=Os(e,n,r),s=new Map(a.filter(d=>!!d.slotId).map(d=>[d.slotId,d])),l=n.overrides?.materialSlotBindings??{};for(let[d,u]of Object.entries(l)){let c=vt(u);if(!c)continue;let m=s.get(d),p=Vs(m,d);t.push({kind:"slot",scope:"scene",gameObjectId:n.id,gameObjectName:n.name,materialAssetId:c,bindingPath:`overrides.materialSlotBindings.${d}.materialAssetId`,label:`${i} / ${p}`,slotId:d,ownerNodePath:Jn(m)??d})}}for(let n of e.assets)if(!(n.type!=="prefab"||!n.prefab)){Wn(t,{ownerId:n.id,ownerName:n.displayName??n.id,prefabAssetId:n.id,path:`assets.${n.id}.prefab.overrides`,overrides:n.prefab.overrides});for(let i of n.prefab.nodes??[])Wn(t,{ownerId:`${n.id}:${i.id}`,ownerName:`${n.displayName??n.id} / ${i.name??i.id}`,prefabAssetId:n.id,prefabNodeId:i.id,path:`assets.${n.id}.prefab.nodes.${i.id}.overrides`,overrides:i.overrides})}return t}function Wn(e,t){let r=vt(t.overrides?.materialBinding);r&&e.push({kind:"root",scope:"prefab",gameObjectId:t.ownerId,gameObjectName:t.ownerName,materialAssetId:r,bindingPath:`${t.path}.materialBinding.materialAssetId`,label:t.ownerName,prefabAssetId:t.prefabAssetId,...t.prefabNodeId?{prefabNodeId:t.prefabNodeId}:{}});for(let[n,i]of Object.entries(t.overrides?.materialSlotBindings??{})){let o=vt(i);o&&e.push({kind:"slot",scope:"prefab",gameObjectId:t.ownerId,gameObjectName:t.ownerName,materialAssetId:o,bindingPath:`${t.path}.materialSlotBindings.${n}.materialAssetId`,label:`${t.ownerName} / ${n}`,slotId:n,ownerNodePath:n,prefabAssetId:t.prefabAssetId,...t.prefabNodeId?{prefabNodeId:t.prefabNodeId}:{}})}}function Gt(e){let t=[...new Set((e.scene.materialAssets??[]).map(s=>s.id?.trim()).filter(s=>!!s))],r=new Set(t),n=Ns(e),i=n.filter(s=>!r.has(s.materialAssetId)),o=new Map;for(let s of i){let l=o.get(s.materialAssetId)??[];l.push(s),o.set(s.materialAssetId,l)}let a=[...o.entries()].map(([s,l])=>({kind:"missing-material-asset",materialAssetId:s,usages:l}));return{ok:a.length===0,materialAssetIds:t,references:n,missingMaterialAssetIds:a.map(s=>s.materialAssetId),missingReferences:i,issues:a}}function Os(e,t,r){let n=new Map;for(let i of $s(e,t,r))n.set(i.slotId,i);return[...n.values()].sort((i,o)=>(i.label??i.slotId).localeCompare(o.label??o.slotId)||i.slotId.localeCompare(o.slotId))}function Jn(e){return e?.sourceSurfaces[0]?.ownerNodePath??null}function $s(e,t,r){let n=ge(t);if(!n)return[];let o=(r?.get(n.assetId)??e.assets.find(s=>s.id===n.assetId))?.metadata?.materialSlots;if(!Array.isArray(o))return[];let a=[];for(let s of o){let l=vs(s);l&&a.push(l)}return a}function vs(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,r=typeof t.slotId=="string"&&t.slotId.trim()?t.slotId.trim():"",n=Array.isArray(t.sourceSurfaces)?t.sourceSurfaces:null,i=Gs(n);if(!r||!n||i.length===0||i.length!==n.length)return null;let o=typeof t.label=="string"&&t.label.trim()?t.label.trim():i[0].ownerNodePath,a=typeof t.materialName=="string"&&t.materialName.trim()?t.materialName.trim():"",s=Array.isArray(t.materialNames)?t.materialNames.filter(d=>typeof d=="string"&&!!d.trim()).map(d=>d.trim()):void 0,l=js(t.sourceMaterialProfiles);return{slotId:r,label:o,sourceSurfaces:i,...a?{materialName:a}:{},...s&&s.length>0?{materialNames:s}:{},...l&&l.length>0?{sourceMaterialProfiles:l}:{}}}function Gs(e){return Array.isArray(e)?e.flatMap(t=>{let r=zs(t);if(!r)return[];let n=Hn(typeof r.ownerNodePath=="string"?r.ownerNodePath:""),i=Number.isInteger(r.meshIndex)&&r.meshIndex>=0?r.meshIndex:void 0,o=Number.isInteger(r.primitiveIndex)&&r.primitiveIndex>=0?r.primitiveIndex:void 0;if(!n||i==null||o==null)return[];let a=Number.isInteger(r.nodeIndex)&&r.nodeIndex>=0?r.nodeIndex:void 0,s=Array.isArray(r.nodeIndexPath)?r.nodeIndexPath.filter(m=>Number.isInteger(m)&&m>=0):void 0,l=Number.isInteger(r.sourceMaterialIndex)&&r.sourceMaterialIndex>=0?r.sourceMaterialIndex:void 0,d=typeof r.sourceMeshName=="string"&&r.sourceMeshName.trim()?r.sourceMeshName.trim():void 0,u=typeof r.triangleCount=="number"&&Number.isFinite(r.triangleCount)&&r.triangleCount>=0?r.triangleCount:void 0,c=_s(r.boundingBox);return[{ownerNodePath:n,...a!=null?{nodeIndex:a}:{},...s&&s.length>0?{nodeIndexPath:s}:{},meshIndex:i,primitiveIndex:o,...l!=null?{sourceMaterialIndex:l}:{},...d?{sourceMeshName:d}:{},...u!=null?{triangleCount:u}:{},...c?{boundingBox:c}:{}}]}):[]}function _s(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,r=qn(t.min),n=qn(t.max);if(!(!r&&!n))return{...r?{min:r}:{},...n?{max:n}:{}}}function qn(e){if(!Array.isArray(e)||e.length<3)return null;let[t,r,n]=e;return typeof t=="number"&&Number.isFinite(t)&&typeof r=="number"&&Number.isFinite(r)&&typeof n=="number"&&Number.isFinite(n)?[t,r,n]:null}function js(e){if(!Array.isArray(e))return;let t=e.map(Ls).filter(r=>!!r);return t.length>0?t:void 0}function Ls(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e;if(!Number.isInteger(t.sourceMaterialIndex))return null;let r=typeof t.materialName=="string"&&t.materialName.trim()?t.materialName.trim():"",n=t.profile&&typeof t.profile=="object"&&!Array.isArray(t.profile)?t.profile:void 0,i=Fs(t.textureHints);return{sourceMaterialIndex:t.sourceMaterialIndex,...r?{materialName:r}:{},...n?{profile:n}:{},...i&&i.length>0?{textureHints:i}:{}}}function Fs(e){if(!Array.isArray(e))return;let t=e.map(Us).filter(r=>!!r);return t.length>0?t:void 0}function Us(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,r=typeof t.profilePath=="string"&&t.profilePath.trim()?t.profilePath.trim():"",n=typeof t.reason=="string"&&t.reason.trim()?t.reason.trim():"";return!r||!n?null:{profilePath:r,reason:n,...Number.isInteger(t.textureIndex)?{textureIndex:t.textureIndex}:{},...Number.isInteger(t.imageIndex)?{imageIndex:t.imageIndex}:{},...Number.isInteger(t.bufferView)?{bufferView:t.bufferView}:{},...typeof t.mimeType=="string"&&t.mimeType.trim()?{mimeType:t.mimeType.trim()}:{},...typeof t.uri=="string"&&t.uri.trim()?{uri:t.uri.trim()}:{}}}function zs(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Bs(e){return e.name?.trim()||e.id}function vt(e){return typeof e?.materialAssetId=="string"?e.materialAssetId.trim():""}function Vs(e,t){return e?.label?.trim()||Jn(e)?.trim()||e?.slotId?.trim()||t}var jt=1;var mf=Symbol("unsupported-editor-scene-authored-clone-value");function Ir(e){return e.components.find(qs)??null}function ge(e){return e.components.find(Js)??null}function Ar(e){return e.components.find(Ys)??null}function _t(e){return e?.type==="prefab"&&_(e.prefab?.sourceAssetId)!=null}function Xn(e){return _(e?.prefab?.prefabId)!=null}function Yn(e){return _(e?.prefab?.sourceAssetId)}function at(e){if(!e?.prefab)return null;let t=Zn(e.prefab),r=_(e.prefab.rootNodeId);if(r&&t.some(i=>i.id===r))return r;let n=t.find(i=>i.kind==="root"&&!i.parentId);return n?n.id:null}function wr(e){return e?.prefab?Zn(e.prefab):[]}function Zn(e){if(!Array.isArray(e.nodes))return[];let t=[];for(let r of e.nodes){let n=Ks(r);n&&!t.some(i=>i.id===n.id)&&t.push(n)}return structuredClone(t)}function Ks(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,r=_(t.id);return!r||!Hs(t.kind)?null:{id:r,..._(t.guid)?{guid:_(t.guid)}:{},..._(t.name)?{name:_(t.name)}:{},..._(t.parentId)?{parentId:_(t.parentId)}:{},kind:t.kind,...t.transform?{transform:structuredClone(t.transform)}:{},..._(t.sourceAssetId)?{sourceAssetId:_(t.sourceAssetId)}:{},..._(t.sourceNodePath)?{sourceNodePath:_(t.sourceNodePath)}:{},..._(t.childPrefabId)?{childPrefabId:_(t.childPrefabId)}:{},...t.primitive?{primitive:structuredClone(t.primitive)}:{},...t.light?{light:structuredClone(t.light)}:{},...t.marker?{marker:structuredClone(t.marker)}:{},...t.defaults?{defaults:structuredClone(t.defaults)}:{},...t.overrides?{overrides:structuredClone(t.overrides)}:{},...t.metadata?{metadata:structuredClone(t.metadata)}:{}}}function Hs(e){return e==="root"||e==="group"||e==="model"||e==="primitive"||e==="light"||e==="prefabInstance"||e==="marker"||e==="collision"}function Qn(e,t){let r=_(e?.materialAssetId),n=_(t?.materialAssetId),i=kt(e?.override,t?.override);return Qs({...n??r?{materialAssetId:n??r}:{},...ot(i)?{override:i}:{}})}function ei(e,t){let r={},n=Qn(e?.materialBinding,t?.materialBinding);n&&(r.materialBinding=n);let i=ed(e?.materialSlotBindings,t?.materialSlotBindings);return i&&(r.materialSlotBindings=i),ot(r)?r:void 0}function st(e,t){let r=typeof t=="string"?Zs(e,t):t,n=typeof t=="string"?t:t.id,i=[],o=Xn(r)?r.prefab:null;if(!r||!o)return i.push({code:"not-prefab-instance",severity:"info",message:r?`GameObject "${r.id}" is not a prefab instance.`:`GameObject "${n}" was not found.`}),{gameObject:r,prefab:null,definition:null,sourceAsset:null,diagnostics:i};let a=e.assets.find(d=>d.id===o.prefabId&&_t(d));a||i.push({code:"missing-prefab-definition",severity:"error",message:`Prefab definition "${o.prefabId}" was not found.`,prefabId:o.prefabId});let s=Yn(a)??_(o.sourceAssetId);a&&o.sourceAssetId&&s&&o.sourceAssetId!==s&&i.push({code:"source-asset-mismatch",severity:"warning",message:`Prefab instance source "${o.sourceAssetId}" does not match definition source "${s}".`,prefabId:o.prefabId,expectedSourceAssetId:s,actualSourceAssetId:o.sourceAssetId});let l=s?e.assets.find(d=>d.id===s):void 0;if(s&&!l&&i.push({code:"missing-source-asset",severity:"error",message:`Prefab source asset "${s}" was not found.`,prefabId:o.prefabId,sourceAssetId:s}),s){let d=e.assets.filter(u=>_t(u)&&Yn(u)===s).map(u=>u.id);d.length>1&&i.push({code:"duplicate-source-prefab",severity:"info",message:`Source asset "${s}" is referenced by ${d.length} prefab definitions.`,prefabId:o.prefabId,sourceAssetId:s})}return{gameObject:r,prefab:o,definition:a??null,sourceAsset:l??null,diagnostics:i}}function Ce(e){return e.kind==="group"||e.kind==="instance"||e.kind==="transform"||e.kind==="primitive"?e.kind:Xn(e)?"instance":e.primitive?"primitive":ge(e)?"instance":Ar(e)||e.transformType?"transform":"group"}function ti(e){let t=e.rendering&&typeof e.rendering=="object"&&!Array.isArray(e.rendering)?e.rendering:void 0,r=Ws(t?.renderingGroupId),n=Xs(t?.alphaIndex),i={};return r!=null&&(i.renderingGroupId=r),n!=null&&(i.alphaIndex=n),Object.keys(i).length>0?i:void 0}function Ws(e){return e===0||e===1||e===2||e===3?e:null}function qs(e){return e.type==="Transform"}function Js(e){return e.type==="ModelRenderer"}function Ys(e){return e.type==="ImageRenderer"}function Xs(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function _(e){return typeof e=="string"&&e.trim().length>0?e.trim():null}function Zs(e,t){return e.scene.gameObjects.find(r=>r.id===t)??null}function Qs(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,r=_(t.materialAssetId),n=kt(t.override),i={...r?{materialAssetId:r}:{},...ot(n)?{override:n}:{}};return ot(i)?i:void 0}function ed(e,t){let r=new Set([...Object.keys(e??{}),...Object.keys(t??{})]),n={};for(let i of r){let o=Qn(e?.[i],t?.[i]);o&&(n[i]=o)}return ot(n)?n:void 0}function ot(e){return!!e&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length>0}var td=new Set(["id","guid","name","parentId","kind","transform","marker","metadata"]);function ri(e,t,r){if(e.kind!=="marker"){Object.prototype.hasOwnProperty.call(e,"marker")&&T("schema.invalidValue",`${r}.marker`);return}for(let s of Object.keys(e))td.has(s)||T("schema.invalidValue",`${r}.${s}`);dt(e.parentId)||T("schema.invalidReference",`${r}.parentId`),od(e.transform,`${r}.transform`),rd(e.marker,`${r}.marker`);let n=dt(e.id),i=e.marker,o=nd(i,`${r}.marker`),a=o[0]??null;for(let s of o){s.target.id===n&&T("schema.invalidReference",`${s.path}.id`),a&&(s.target.kind!==a.target.kind||s.target.id!==a.target.id)&&T("schema.invalidReference",s.path);let l=t.get(s.target.id);l&&(s.target.kind==="marker"&&l.kind!=="marker"&&T("schema.invalidReference",`${s.path}.kind`),s.target.kind==="scene-object"&&l.kind==="marker"&&T("schema.invalidReference",`${s.path}.kind`))}}function rd(e,t){let r=Ee(e);r||T("schema.invalidType",t),te(r,["schemaVersion","type","kind","tags","note","color","target","semanticFrame","geometry","metadata"],t),r.schemaVersion!==1&&T("schema.unsupportedVersion",`${t}.schemaVersion`),dt(r.type)||T("schema.invalidValue",`${t}.type`),r.kind!==void 0&&!dt(r.kind)&&T("schema.invalidValue",`${t}.kind`),r.tags!==void 0&&dd(r.tags,`${t}.tags`),r.note!==void 0&&typeof r.note!="string"&&T("schema.invalidType",`${t}.note`),r.color!==void 0&&sd(r.color,`${t}.color`),r.target!==void 0&&Tr(r.target,`${t}.target`),r.semanticFrame!==void 0&&ad(r.semanticFrame,`${t}.semanticFrame`),id(r.geometry,`${t}.geometry`),r.metadata!==void 0&&ld(r.metadata,`${t}.metadata`)}function nd(e,t){let r=[];return e.target&&r.push({target:e.target,path:`${t}.target`}),e.geometry.kind==="point"&&e.geometry.target&&r.push({target:e.geometry.target,path:`${t}.geometry.target`}),e.geometry.kind==="object-bounds"&&r.push({target:e.geometry.target,path:`${t}.geometry.target`}),r}function id(e,t){let r=Ee(e);if(r||T("schema.invalidType",t),r.kind==="box"){te(r,["kind"],t);return}if(r.kind==="point"){te(r,["kind","coordinateSpace","position","offset","target"],t),r.coordinateSpace!==void 0&&r.coordinateSpace!=="world"&&r.coordinateSpace!=="local"&&T("schema.invalidValue",`${t}.coordinateSpace`),r.position!==void 0&&Se(r.position,`${t}.position`),r.offset!==void 0&&Se(r.offset,`${t}.offset`),r.target!==void 0&&Tr(r.target,`${t}.target`);return}if(r.kind==="object-bounds"){te(r,["kind","target"],t),Tr(r.target,`${t}.target`);return}if(r.kind==="polyhedron"){te(r,["kind","coordinateSpace","vertices","faces"],t),r.coordinateSpace!==void 0&&r.coordinateSpace!=="world"&&T("schema.invalidValue",`${t}.coordinateSpace`),Array.isArray(r.vertices)||T("schema.invalidType",`${t}.vertices`),r.vertices.forEach((n,i)=>Se(n,`${t}.vertices[${i}]`)),r.faces!==void 0&&(Array.isArray(r.faces)||T("schema.invalidType",`${t}.faces`),r.faces.forEach((n,i)=>{Array.isArray(n)||T("schema.invalidType",`${t}.faces[${i}]`),n.forEach((o,a)=>{(!Number.isInteger(o)||o<0)&&T("schema.invalidValue",`${t}.faces[${i}][${a}]`)})}));return}T("schema.invalidValue",`${t}.kind`)}function Tr(e,t){let r=Ee(e);r||T("schema.invalidType",t),te(r,["kind","id","label"],t),r.kind!=="marker"&&r.kind!=="scene-object"&&T("schema.invalidValue",`${t}.kind`),dt(r.id)||T("schema.invalidValue",`${t}.id`),r.label!==void 0&&typeof r.label!="string"&&T("schema.invalidType",`${t}.label`)}function od(e,t){let r=Ee(e);if(r||T("schema.invalidType",t),r.type!=="Transform"&&T("schema.invalidValue",`${t}.type`),r.mode==="matrix"){te(r,["type","mode","matrix"],t),(!Array.isArray(r.matrix)||r.matrix.length!==16)&&T("schema.invalidType",`${t}.matrix`),r.matrix.forEach((n,i)=>Lt(n,`${t}.matrix[${i}]`));return}te(r,["type","mode","position","rotation","scale"],t),r.mode!==void 0&&r.mode!=="trs"&&T("schema.invalidValue",`${t}.mode`),Se(r.position,`${t}.position`),Se(r.rotation,`${t}.rotation`),r.scale!==void 0&&Se(r.scale,`${t}.scale`)}function ad(e,t){let r=Ee(e);r||T("schema.invalidType",t),te(r,["origin","forward","right","up","label","description"],t),Se(r.origin,`${t}.origin`);for(let n of["forward","right","up"])r[n]!==void 0&&Se(r[n],`${t}.${n}`);for(let n of["label","description"])r[n]!==void 0&&typeof r[n]!="string"&&T("schema.invalidType",`${t}.${n}`)}function sd(e,t){let r=Ee(e);r||T("schema.invalidType",t),te(r,["r","g","b"],t);for(let n of["r","g","b"])Lt(r[n],`${t}.${n}`),(r[n]<0||r[n]>1)&&T("schema.invalidValue",`${t}.${n}`)}function Se(e,t){let r=Ee(e);r||T("schema.invalidType",t),te(r,["x","y","z"],t);for(let n of["x","y","z"])Lt(r[n],`${t}.${n}`)}function dd(e,t){Array.isArray(e)||T("schema.invalidType",t),e.forEach((r,n)=>{typeof r!="string"&&T("schema.invalidType",`${t}[${n}]`)})}function ld(e,t){let r=Ee(e);r||T("schema.invalidType",t),Dr(r,t,new Set)}function Dr(e,t,r){if(e===null||typeof e=="string"||typeof e=="boolean")return;if(typeof e=="number"){Lt(e,t);return}(!e||typeof e!="object")&&T("schema.invalidType",t),r.has(e)&&T("schema.invalidValue",t);let n=Object.getPrototypeOf(e);Array.isArray(e)?n!==Array.prototype&&T("schema.invalidType",t):n!==Object.prototype&&n!==null&&T("schema.invalidType",t),r.add(e);try{if(Array.isArray(e))e.forEach((i,o)=>Dr(i,`${t}[${o}]`,r));else for(let[i,o]of Object.entries(e))Dr(o,`${t}.${i}`,r)}finally{r.delete(e)}}function te(e,t,r){let n=new Set(t);for(let i of Object.keys(e))n.has(i)||T("schema.invalidValue",`${r}.${i}`)}function Lt(e,t){(typeof e!="number"||!Number.isFinite(e))&&T("schema.invalidValue",t)}function Ee(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function dt(e){return typeof e=="string"&&e.trim()?e.trim():null}function T(e,t){throw new Error(`${e}: ${t}`)}function kr(e,t){return t===e.rootNodeId?e.instanceId:`${e.instanceId}:${cd(t)}`}function cd(e){return encodeURIComponent(e)}function Mr(e,t){return{...structuredClone(e),id:kr(t,e.id)}}function ni(e,t){let r=structuredClone(e);return r.target&&(r.target=Mr(r.target,t)),r.geometry.kind==="point"&&r.geometry.target&&(r.geometry.target=Mr(r.geometry.target,t)),r.geometry.kind==="object-bounds"&&(r.geometry.target=Mr(r.geometry.target,t)),r}var ii={x:-.3,y:-1,z:-.2};var oi="scene.main",ai="scene";function si(e){let t=e.meta?.authoringSource;return{sourceId:t?.sourceId||oi,sourceType:t?.sourceType||ai,revision:typeof t?.revision=="number"?t.revision:1}}var di={type:"directional",intensity:2,direction:{...ii},diffuseColor:{r:1,g:1,b:1},inspectorLanguage:"zh"},Cr={type:"hemispheric",intensity:.8,diffuseColor:{r:1,g:1,b:1},groundColor:{r:.48,g:.52,b:.62},inspectorLanguage:"zh"};function ci(e){return e.filter(t=>t.kind==="model"||t.kind==="texture").map(ud).sort(gd)}function ud(e){let t=e.kind==="texture"?"texture":e.kind==="prefab"?"prefab":"glb",r=Re(e.guid),n=bd(e);return{id:e.assetId,...r?{guid:r}:{},assetId:e.assetId,type:t,kind:e.kind==="texture"?"texture":e.kind==="prefab"?"prefab":"model",displayName:e.displayName,category:e.category??pd(e),warmupCount:e.warmupCount,singleton:e.singleton,materialMode:e.materialMode,defaults:Ut(e.defaults),prefab:Ut(e.prefab),external:Ut(e.external),metadata:n,origin:e.origin??"project",dedupeKey:e.dedupeKey??r??Sd(e.external)??e.assetId,placeable:md(e)}}function fd(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.kind==="texture"||t.type==="texture"}function md(e){return fd(e)?!0:!e||typeof e!="object"||Array.isArray(e)||e.placeable!==!1}function gd(e,t){return(e.category??"").localeCompare(t.category??"")||e.displayName.localeCompare(t.displayName)||e.assetId.localeCompare(t.assetId)||e.type.localeCompare(t.type)}function pd(e){return e.kind==="prefab"?"Prefab":e.kind==="texture"?"Texture":e.kind==="image"?"Image":e.kind==="sound"?"Sound":"Model"}function bd(e){return yd({originalFileName:e.originalFileName,relativePath:e.relativePath,codeKey:e.codeKey,contentHash:e.contentHash,byteSize:e.byteSize,...Ut(e.metadata)})}function yd(e){if(!Array.isArray(e.materialSlots))return e;let t=Ft(e.assetAnalysis),r=Array.isArray(t?.meshes)?t.meshes:[],n=Array.isArray(t?.nodes)?t.nodes:[],i=new Map(r.flatMap(l=>{let d=Ft(l),u=lt(d?.meshIndex),c=Re(d?.name);return u==null||!c?[]:[[u,c]]})),o=new Map(n.flatMap(l=>{let d=Ft(l),u=lt(d?.nodeIndex),c=Re(d?.meshName);return u==null||!c?[]:[[u,c]]})),a=li(t,"meshCount",r.length)||li(t,"nodeCount",n.length),s=e.materialSlots.map(l=>{let d=Ft(l);if(!d||Re(d.sourceMeshName))return l;let u=lt(d.meshIndex);if(u==null)return l;let c=lt(d.nodeIndex),m=i.get(u)??(c==null?void 0:o.get(c))??(a?hd(d):void 0);return m?{...d,sourceMeshName:m}:l});return{...e,materialSlots:s}}function hd(e){let t=Re(e.label);if(t){let r=t.replace(/\s+\/\s+Primitive\s+\d+$/,"").trim();if(r)return r}return Re(e.ownerNodePath)?.split("/").filter(Boolean).pop()}function li(e,t,r){let n=lt(e?.[t]);return n!=null&&n>r}function Sd(e){return!e||typeof e!="object"||Array.isArray(e)?null:Re(e.platformAssetId)}function Re(e){return typeof e=="string"&&e.trim()?e.trim():null}function lt(e){return Number.isInteger(e)&&e>=0?e:null}function Ft(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function Ut(e){return e==null?void 0:structuredClone(e)}function mi(e,t){let r=new Map(t.filter(o=>o.type==="glb").map(o=>[o.assetId,o])),n=e.assets.map(o=>{if(o.type!=="glb")return o;let a=r.get(o.id);return a?ui(o,a):o}),i=new Set(e.assets.map(o=>o.id));for(let o of Ed(e)){if(i.has(o))continue;let a=r.get(o);a&&(n.push(ui({id:o,type:"glb"},a)),i.add(o))}return{...e,assets:n}}function Ed(e){let t=[],r=new Set,n=i=>{let o=xd(i);!o||r.has(o)||(r.add(o),t.push(o))};for(let i of e.assets)if(i.type==="prefab"){n(i.prefab?.sourceAssetId);for(let o of i.prefab?.nodes??[])n(o.sourceAssetId)}for(let i of e.scene.gameObjects){for(let a of i.components)a.type==="ModelRenderer"&&n(a.assetId);n(i.prefab?.sourceAssetId);let o=fi(fi(i)?.instance);n(o?.assetId)}return t}function ui(e,t){return{...e,guid:t.guid??e.guid,displayName:t.displayName||e.displayName,category:t.category??e.category,warmupCount:t.warmupCount??e.warmupCount,singleton:t.singleton??e.singleton,materialMode:t.materialMode??e.materialMode,defaults:zt(t.defaults??e.defaults),prefab:zt(t.prefab??e.prefab),external:zt(t.external??e.external),metadata:zt(t.metadata??e.metadata)}}function zt(e){return e==null?void 0:structuredClone(e)}function fi(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function xd(e){return(typeof e=="string"?e.trim():"")||void 0}function gi(e){let t=Gt(e);if(t.ok)return;let r=new Error(`editor_scene_material_assets_missing: ${t.missingMaterialAssetIds.join(", ")}`);throw r.details={missingMaterialAssetIds:t.missingMaterialAssetIds,missingReferences:t.missingReferences.map(n=>({materialAssetId:n.materialAssetId,gameObjectId:n.gameObjectId,bindingPath:n.bindingPath,label:n.label,kind:n.kind,...n.slotId?{slotId:n.slotId}:{},...n.ownerNodePath?{ownerNodePath:n.ownerNodePath}:{}}))},r}var Pd="sun_light";function Id(e,t,r={}){let n=Td(kd(e,t)),i=Dd(e,t),o=Md(t,"instance"),a=[...n.diagnostics,...i.diagnostics,...o.diagnostics];return{settings:ce(r.project,n.settings,i.settings,r.node,o.settings),diagnostics:a}}function Ad(e){let t=new Map,r=e.casterId;for(let n of e.explicitReceiverIds??[]){let i=Vt(e.document,n);!i||i.id===r||i.active===!1||t.set(i.id,{receiverId:i.id,source:"explicit",score:120,...ct(i,"explicit",120,["explicit receiver id"])})}for(let n of e.document.scene.gameObjects){if(n.id===r||n.active===!1)continue;let o=ne(n.shadow).shadow?.receive;if(o!=="none"){if(o==="enabled"){Rr(t,{receiverId:n.id,source:"explicit",score:100,...ct(n,"explicit",100,["shadow.receive enabled"])});continue}if(o==="auto"){Rr(t,{receiverId:n.id,source:"auto",score:70,...ct(n,"auto",70,["shadow.receive auto"])});continue}Od(n)&&Rr(t,{receiverId:n.id,source:"auto",score:40,...ct(n,"auto",40,["plane primitive auto receiver"])})}}return[...t.values()].sort((n,i)=>i.score-n.score||n.receiverId.localeCompare(i.receiverId))}function Bt(e){let t=e.caster?.id===e.casterId?e.caster:Vt(e.document,e.casterId),r=[];if(!t)return{casterId:e.casterId,receiverIds:[],backend:"none",mode:"none",quality:e.fallbackQuality??"medium",params:xt(e.fallbackQuality??"medium"),diagnostics:[{code:"shadow.invalidTarget",severity:"error",message:`Shadow caster "${e.casterId}" was not found.`,casterId:e.casterId}]};let n=e.settings?{settings:ce(e.settings.project,e.settings.source,e.settings.prefab,e.settings.node,e.settings.instance),diagnostics:[]}:Id(e.document,t);r.push(...n.diagnostics);let o=n.settings?.cast==="none"?"none":or(n.settings,e.fallbackMode??"none"),a=ar(n.settings,e.fallbackQuality??"medium"),s=xt(a,n.settings?.params),l=wd(o),d=Rd(e.explicitReceiverIds),u=l==="none"?{candidates:[],diagnostics:[]}:d.length>0&&e.strictExplicitReceivers===!0?Nd(e.document,t.id,d):{candidates:Ad({document:e.document,casterId:t.id,explicitReceiverIds:d.length>0?d:void 0}),diagnostics:[]};r.push(...u.diagnostics);let c=u.candidates;l!=="none"&&c.length===0&&r.push({code:"shadow.receiverNotFound",severity:"warning",message:`No shadow receiver was found for caster "${t.id}".`,casterId:t.id});let m=l==="none"?null:Cd(e.document,n.settings,e.defaultLightId);return m?.diagnostic&&r.push(m.diagnostic),{casterId:t.id,receiverIds:c.map(p=>p.receiverId),...m?.lightId?{lightId:m.lightId}:{},backend:l,mode:o,quality:a,params:s,diagnostics:r}}function wd(e){return e==="dynamic"?"dynamic-map":e==="static"?"static-baked":e==="blob"?"blob":e==="projected"?"projected":"none"}function Td(e){if(!e)return{diagnostics:[]};let t=e.defaults&&typeof e.defaults=="object"&&!Array.isArray(e.defaults)?e.defaults:void 0;if(!t)return{diagnostics:[]};let r=ne(t.shadow);return{settings:r.shadow,diagnostics:r.diagnostics.map(n=>({...n,details:{...n.details??{},source:"asset",assetId:e.id}}))}}function Dd(e,t){let r=typeof t.prefab?.prefabId=="string"?t.prefab.prefabId:null;if(!r)return{diagnostics:[]};let n=e.assets.find(o=>o.id===r);if(!n?.prefab?.defaults)return{diagnostics:[]};let i=ne(n.prefab.defaults.shadow);return{settings:i.shadow,diagnostics:i.diagnostics.map(o=>({...o,details:{...o.details??{},source:"prefab",prefabId:r}}))}}function Md(e,t){let r=ne(e.shadow);return{settings:r.shadow,diagnostics:r.diagnostics.map(n=>({...n,casterId:e.id,details:{...n.details??{},source:t}}))}}function kd(e,t){let n=ge(t)?.assetId??t.prefab?.sourceAssetId;return n?e.assets.find(i=>i.id===n)??null:null}function Cd(e,t,r){if((t?.light?.mode??"inherit")==="explicit"){let a=t?.light?.lightId;return a&&pi(e,a)?{lightId:a}:{diagnostic:{code:"shadow.lightNotFound",severity:"warning",message:a?`Explicit shadow light "${a}" was not found.`:"Shadow light mode is explicit, but no lightId was configured.",...a?{lightId:a}:{}}}}let i=r??Pd;if(pi(e,i))return{lightId:i};let o=e.scene.gameObjects.find(a=>bi(a)&&a.active!==!1);return o?{lightId:o.id}:{diagnostic:{code:"shadow.lightNotFound",severity:"warning",message:"No directional shadow light was found."}}}function pi(e,t){let r=Vt(e,t);return!!r&&r.active!==!1&&bi(r)}function bi(e){return Ce(e)==="transform"&&e.light?.type==="directional"}function Rr(e,t){let r=e.get(t.receiverId);(!r||t.score>r.score)&&e.set(t.receiverId,t)}function Rd(e){let t=new Set,r=[];for(let n of e??[]){let i=typeof n=="string"?n.trim():"";!i||t.has(i)||(t.add(i),r.push(i))}return r}function Nd(e,t,r){let n=[],i=[];for(let o of r){let a=Vt(e,o);if(!a){i.push({code:"shadow.receiverNotFound",severity:"warning",message:`Explicit shadow receiver "${o}" was not found.`,casterId:t,receiverId:o,details:{source:"explicit"}});continue}if(a.id===t){i.push({code:"shadow.receiverNotFound",severity:"warning",message:`Shadow caster "${t}" cannot be used as its own receiver.`,casterId:t,receiverId:o,details:{source:"explicit",reason:"self"}});continue}if(a.active===!1){i.push({code:"shadow.receiverNotFound",severity:"warning",message:`Explicit shadow receiver "${o}" is inactive.`,casterId:t,receiverId:o,details:{source:"explicit",reason:"inactive"}});continue}n.push({receiverId:a.id,source:"explicit",score:120,...ct(a,"explicit",120,["explicit receiver id"])})}return{candidates:n,diagnostics:i}}function ct(e,t,r,n){let i=ne(e.shadow).shadow;return{active:e.active!==!1,visible:e.active!==!1,...i?.receive?{receive:i.receive}:{},suitability:{score:r,material:Ce(e)==="primitive"?"primitive":t,reasons:n}}}function Od(e){return Ce(e)==="primitive"&&e.primitive?.shape==="plane"}function Vt(e,t){return e.scene.gameObjects.find(r=>r.id===t)??null}var xi="@fps-games/editor.playable-sdk.scene-compiler",Pi="3",$d=new Set(["shadowMode","childMaterialBindings","childMaterials"]),vd=new Set(["coordinateSpace","center","size","rotation"]),yi=new Set(["root","group","model","primitive","light","prefabInstance","marker","collision"]);function Ii(e){Gd(e,!0)}function Gd(e,t){let r=I(e);if(!r)throw new Error("editor_scene_must_be_object");if(r.schemaVersion!==1)throw h("schema.unsupportedVersion","$.schemaVersion");if(!Array.isArray(r.assets))throw new Error("editor_scene_assets_must_be_array");let n=I(r.scene);if(!Array.isArray(n?.gameObjects))throw new Error("editor_scene_game_objects_must_be_array");if(n.materialAssets!=null&&!Array.isArray(n.materialAssets))throw new Error("editor_scene_material_assets_must_be_array");n.shadowMapExperiment!==void 0&&mr(n.shadowMapExperiment),n.gameObjects.forEach((i,o)=>{let a=I(i);a?.shadowMapExperiment!==void 0&&tt(a.shadowMapExperiment,`$.scene.gameObjects[${o}].shadowMapExperiment`)}),Ld(r.assets,n.gameObjects),$r(r,"$"),Fd(r.assets),jd(r.assets,n.gameObjects),Ud(n.gameObjects,r.assets),zd(n.gameObjects),_d(n.materialAssets??[]),t&&Bd(r.assets,n.gameObjects),gi(r)}function _d(e){for(let t=0;t<e.length;t+=1){let r=I(e[t]),n=`$.scene.materialAssets[${t}]`;if(!r)throw h("schema.invalidType",n);if(Object.prototype.hasOwnProperty.call(r,"materialKind"))throw h("schema.deprecatedField",`${n}.materialKind`);if(Object.prototype.hasOwnProperty.call(r,"profile"))throw h("schema.deprecatedField",`${n}.profile`);if(!A(r.id))throw h("schema.invalidType",`${n}.id`);if(!A(r.name))throw h("schema.invalidType",`${n}.name`);let i=A(r.shaderId);if(!i)throw h("schema.invalidValue",`${n}.shaderId`);if(Un(i)){let a=zn(i,r.properties,`${n}.properties`);if(a[0])throw h("schema.invalidValue",a[0].path)}else if(!I(r.properties))throw h("schema.invalidType",`${n}.properties`);for(let a of Object.keys(r))if(!["id","guid","name","shaderId","properties","system","origin"].includes(a))throw h("schema.unknownField",`${n}.${a}`)}}function jd(e,t){let r=new Set(e.map(I).filter(o=>o?.type==="glb").map(o=>A(o?.id)).filter(o=>!!o)),n=new Set(e.map(I).filter(o=>o?.type==="texture").map(o=>A(o?.id)).filter(o=>!!o)),i=new Map;for(let o of e.map(I)){if(o?.type!=="prefab")continue;let a=A(o.id),s=A(I(o.prefab)?.sourceAssetId);a&&s&&i.set(a,s)}for(let o=0;o<e.length;o+=1){let a=I(e[o]);if(a?.type!=="prefab")continue;let s=I(a.prefab),l=A(s?.sourceAssetId),d=A(s?.rootNodeId);if(!l||!r.has(l))throw h("schema.invalidReference",`$.assets[${o}].prefab.sourceAssetId`);let u=Array.isArray(s?.nodes)?s.nodes:[];for(let c=0;c<u.length;c+=1){let m=I(u[c]),p=A(m?.sourceAssetId);if(m?.kind==="model"&&(!p||!r.has(p)))throw h("schema.invalidReference",`$.assets[${o}].prefab.nodes[${c}].sourceAssetId`);if(m?.kind==="prefabInstance"){let g=A(m.childPrefabId),b=g?i.get(g):null;if(A(m.id)===d&&l!==b)throw h("schema.invalidReference",`$.assets[${o}].prefab.sourceAssetId`);if(p&&p!==b)throw h("schema.invalidReference",`$.assets[${o}].prefab.nodes[${c}].sourceAssetId`)}}}for(let o=0;o<t.length;o+=1){let a=I(t[o]),s=A(I(a?.instance)?.assetId);if(s&&!r.has(s))throw h("schema.invalidReference",`$.scene.gameObjects[${o}].instance.assetId`);let l=Array.isArray(a?.components)?a.components:[];for(let d=0;d<l.length;d+=1){let u=I(l[d]);if(u?.type!=="ModelRenderer")continue;let c=A(u.assetId);if(!c||!r.has(c))throw h("schema.invalidReference",`$.scene.gameObjects[${o}].components[${d}].assetId`)}for(let d=0;d<l.length;d+=1){let u=I(l[d]);if(u?.type!=="ImageRenderer")continue;let c=A(u.assetId);if(!c||!n.has(c))throw h("schema.invalidReference",`$.scene.gameObjects[${o}].components[${d}].assetId`);let m=I(u.size);if(!m||!Ei(m.width)||!Ei(m.height))throw h("schema.invalidValue",`$.scene.gameObjects[${o}].components[${d}].size`)}}}function Ld(e,t){let r=new Set;e.forEach((o,a)=>{let s=I(o);if(!s)throw h("schema.invalidType",`$.assets[${a}]`);let l=A(s.id);if(!l||!A(s.type))throw h("schema.invalidValue",`$.assets[${a}]`);if(r.has(l))throw h("schema.invalidValue",`$.assets[${a}].id`);r.add(l);let d=I(s.defaults);d?.shadowMapExperiment!==void 0&&tt(d.shadowMapExperiment,`$.assets[${a}].defaults.shadowMapExperiment`)});let n=new Set,i=new Map;t.forEach((o,a)=>{let s=I(o);if(!s)throw h("schema.invalidType",`$.scene.gameObjects[${a}]`);let l=A(s.id);if(!l)throw h("schema.invalidValue",`$.scene.gameObjects[${a}].id`);if(n.has(l))throw h("schema.invalidValue",`$.scene.gameObjects[${a}].id`);if(n.add(l),i.set(l,{value:s,index:a}),!Array.isArray(s.components))throw h("schema.invalidType",`$.scene.gameObjects[${a}].components`);s.components.forEach((d,u)=>{let c=I(d);if(!c)throw h("schema.invalidType",`$.scene.gameObjects[${a}].components[${u}]`);if(!A(c.type))throw h("schema.invalidValue",`$.scene.gameObjects[${a}].components[${u}].type`)})});for(let[o,a]of i){if(!("parentId"in a.value))continue;let s=A(a.value.parentId);if(!s||!i.has(s))throw h("schema.invalidReference",`$.scene.gameObjects[${a.index}].parentId`);let l=new Set([o]),d=s;for(;d;){if(l.has(d))throw h("schema.invalidReference",`$.scene.gameObjects[${a.index}].parentId`);l.add(d);let u=i.get(d)?.value;d=u&&u.parentId!=null?A(u.parentId):null}}}function $r(e,t){if(Array.isArray(e)){e.forEach((n,i)=>$r(n,`${t}[${i}]`));return}let r=I(e);if(r)for(let[n,i]of Object.entries(r)){let o=`${t}.${n}`;if($d.has(n))throw h("schema.deprecatedField",o);n==="shadow"&&Ze(i,o),!(n==="metadata"||n==="shadowMapExperiment")&&$r(i,o)}}function Fd(e){let t=new Set(e.map(I).filter(a=>a?.type==="prefab").map(a=>A(a?.id)).filter(a=>!!a)),r=new Map;for(let a=0;a<e.length;a+=1){let s=I(e[a]);if(s?.type!=="prefab")continue;let l=I(s.prefab);if(!Array.isArray(l?.nodes))throw h("schema.unsupportedVersion",`$.assets[${a}].prefab.nodes`);hi(l.defaults,`$.assets[${a}].prefab.defaults`);let d=[],u=new Set;for(let g=0;g<l.nodes.length;g+=1){let b=`$.assets[${a}].prefab.nodes[${g}]`,S=I(l.nodes[g]);if(!S)throw h("schema.invalidType",b);hi(S.defaults,`${b}.defaults`);let x=A(S.id);if(!x||!yi.has(String(S.kind)))throw h("schema.invalidValue",b);if(u.has(x))throw h("schema.invalidValue",`${b}.id`);u.add(x),d.push(S)}let c=A(l?.rootNodeId),m=c?d.find(g=>A(g?.id)===c):null,p=!!m&&yi.has(String(m.kind))&&!Object.prototype.hasOwnProperty.call(m,"parentId");if(l?.compositionVersion!==jt||d.length===0||!p)throw h("schema.unsupportedVersion",`$.assets[${a}].prefab`);r.set(A(s.id),d.flatMap((g,b)=>{let S=A(g.childPrefabId);return S?[{prefabId:S,path:`$.assets[${a}].prefab.nodes[${b}].childPrefabId`}]:[]}));for(let g=0;g<d.length;g+=1){let b=d[g];ri(b,new Map(d.map(M=>[A(M.id),M])),`$.assets[${a}].prefab.nodes[${g}]`);let S=A(b.id),x=A(b.parentId);if(S!==c&&(!x||!u.has(x)))throw h("schema.invalidReference",`$.assets[${a}].prefab.nodes[${g}].parentId`);if(b.kind==="prefabInstance"){let M=A(b.childPrefabId);if(!M||!t.has(M))throw h("schema.invalidReference",`$.assets[${a}].prefab.nodes[${g}].childPrefabId`)}let D=new Set([S]),w=x;for(;w;){if(D.has(w))throw h("schema.invalidReference",`$.assets[${a}].prefab.nodes[${g}].parentId`);D.add(w);let M=d.find(O=>A(O.id)===w);w=M?A(M.parentId):null}}}let n=new Set,i=new Set,o=a=>{if(!i.has(a)){n.add(a);for(let s of r.get(a)??[]){if(n.has(s.prefabId))throw h("schema.invalidReference",s.path);o(s.prefabId)}n.delete(a),i.add(a)}};for(let a of r.keys())o(a)}function hi(e,t){if(e==null)return;let r=I(e);if(!r)throw h("schema.invalidType",t);if(Object.prototype.hasOwnProperty.call(r,"active")&&typeof r.active!="boolean")throw h("schema.invalidType",`${t}.active`);r.shadowMapExperiment!==void 0&&tt(r.shadowMapExperiment,`${t}.shadowMapExperiment`)}function Ud(e,t){let r=new Map;for(let n of t.map(I)){if(n?.type!=="prefab")continue;let i=A(n.id),o=A(I(n.prefab)?.sourceAssetId);i&&o&&r.set(i,o)}for(let n=0;n<e.length;n+=1){let i=I(e[n]);if(!i||i.prefab==null)continue;let o=I(i.prefab),a=A(o?.prefabId),s=a?r.get(a):null;if(!a||!s)throw h("schema.unsupportedVersion",`$.scene.gameObjects[${n}].prefab`);if(A(o?.sourceAssetId)!==s)throw h("schema.invalidReference",`$.scene.gameObjects[${n}].prefab.sourceAssetId`);let l=A(I(i.instance)?.assetId);if(l&&l!==s)throw h("schema.invalidReference",`$.scene.gameObjects[${n}].instance.assetId`);let d=Array.isArray(i.components)?i.components:[];for(let u=0;u<d.length;u+=1){let c=I(d[u]);if(c?.type==="ModelRenderer"&&A(c.assetId)!==s)throw h("schema.invalidReference",`$.scene.gameObjects[${n}].components[${u}].assetId`)}}}function zd(e){for(let t=0;t<e.length;t+=1){let r=I(I(I(e[t])?.marker)?.geometry);if(r?.kind!=="box")continue;for(let i of vd)if(Object.prototype.hasOwnProperty.call(r,i))throw h("schema.deprecatedField",`$.scene.gameObjects[${t}].marker.geometry.${i}`);if(!(Array.isArray(I(e[t])?.components)?I(e[t]).components:[]).some(i=>I(i)?.type==="Transform"))throw h("schema.invalidValue",`$.scene.gameObjects[${t}].components`)}}function Bd(e,t){let r=new Map,n=new Map;for(let i=0;i<e.length;i+=1){let o=I(e[i]),a=A(o?.id);if(!o||!a)continue;if(o.type==="prefab"){let c=A(I(o.prefab)?.sourceAssetId);c&&n.set(a,c)}let s=I(o.metadata),l=s?.materialSlots;if(l==null){r.set(a,new Set);continue}if(!Array.isArray(l))throw h("schema.invalidType",`$.assets[${i}].metadata.materialSlots`);let d=Vd(s?.assetAnalysis),u=new Set;for(let c=0;c<l.length;c+=1){let m=I(l[c]),p=A(m?.slotId);if(!m||!p)throw h("schema.invalidValue",`$.assets[${i}].metadata.materialSlots[${c}]`);let g=`$.assets[${i}].metadata.materialSlots[${c}]`;for(let b of["ownerNodePath","nodeIndex","nodeIndexPath","meshIndex","primitiveIndex","sourceMaterialIndex","sourceMaterialIndices","sourceMeshName","triangleCount","boundingBox"])if(Object.prototype.hasOwnProperty.call(m,b))throw h("schema.deprecatedField",`${g}.${b}`);if(!Array.isArray(m.sourceSurfaces))throw h("schema.invalidType",`${g}.sourceSurfaces`);if(m.sourceSurfaces.length===0)throw h("schema.invalidValue",`${g}.sourceSurfaces`);for(let b=0;b<m.sourceSurfaces.length;b+=1){let S=`${g}.sourceSurfaces[${b}]`,x=I(m.sourceSurfaces[b]);if(!x||!A(x.ownerNodePath))throw h("schema.invalidValue",S);Si(x,"nodeIndex",S),Si(x,"sourceMaterialIndex",S);for(let w of["meshIndex","primitiveIndex"])if(!Number.isInteger(x[w])||x[w]<0)throw h("schema.invalidValue",`${S}.${w}`);if(x.nodeIndexPath!=null&&(!Array.isArray(x.nodeIndexPath)||x.nodeIndexPath.some(w=>!Number.isInteger(w)||w<0)))throw h("schema.invalidValue",`${S}.nodeIndexPath`);let D=x.meshIndex;if(!A(x.sourceMeshName)&&!d.has(D))throw h("schema.invalidValue",`${S}.sourceMeshName`)}if(u.has(p))throw h("schema.invalidValue",`$.assets[${i}].metadata.materialSlots[${c}].slotId`);u.add(p)}r.set(a,u)}for(let i=0;i<e.length;i+=1){let o=I(e[i]);if(o?.type!=="prefab")continue;let a=I(o.prefab),s=A(a?.sourceAssetId);Nr(a?.overrides,s?r.get(s):void 0,`$.assets[${i}].prefab.overrides`);let l=Array.isArray(a?.nodes)?a.nodes:[];for(let d=0;d<l.length;d+=1){let u=I(l[d]),c=A(u?.childPrefabId),m=A(u?.sourceAssetId)??(c?n.get(c)??null:null);Nr(u?.overrides,m?r.get(m):void 0,`$.assets[${i}].prefab.nodes[${d}].overrides`)}}for(let i=0;i<t.length;i+=1){let o=I(t[i]),s=(Array.isArray(o?.components)?o.components:[]).map(I).find(d=>d?.type==="ModelRenderer"),l=A(s?.assetId);Nr(o?.overrides,l?r.get(l):void 0,`$.scene.gameObjects[${i}].overrides`)}}function Nr(e,t,r){let n=I(e);if(!n||n.materialSlotBindings==null)return;let i=I(n.materialSlotBindings);if(!i)throw h("schema.invalidType",`${r}.materialSlotBindings`);for(let[o,a]of Object.entries(i)){if(!t?.has(o))throw h("schema.invalidReference",`${r}.materialSlotBindings.${o}`);let s=`${r}.materialSlotBindings.${o}`,l=I(a);if(!l)throw h("schema.invalidType",s);for(let d of Object.keys(l))if(d!=="materialAssetId"&&d!=="override")throw h("schema.deprecatedField",`${s}.${d}`);if("materialAssetId"in l&&l.materialAssetId!=null&&!A(l.materialAssetId))throw h("schema.invalidValue",`${s}.materialAssetId`);if("override"in l&&!I(l.override))throw h("schema.invalidType",`${s}.override`);"override"in l&&Kd(l.override,`${s}.override`)}}function Si(e,t,r){let n=e[t];if(n!=null&&(!Number.isInteger(n)||n<0))throw h("schema.invalidValue",`${r}.${t}`)}function Vd(e){let t=I(e),r=Array.isArray(t?.meshes)?t.meshes:[];return new Set(r.flatMap(n=>{let i=I(n),o=i?.meshIndex,a=Number.isInteger(o)?o:null;return a!=null&&A(i?.name)?[a]:[]}))}function Kd(e,t){let r=I(e);if(!r)throw h("schema.invalidType",t);if(ze(r,["lightingModel","baseColor","normal","metallic","roughness","metallicRoughness","occlusion","emission","alpha"],t),"lightingModel"in r&&!["lit","unlit"].includes(String(r.lightingModel)))throw h("schema.invalidValue",`${t}.lightingModel`);for(let n of["metallic","roughness"])ft(r,n,t);Hd(r.baseColor,`${t}.baseColor`),Or(r.normal,`${t}.normal`,["texture","strength"]),Or(r.metallicRoughness,`${t}.metallicRoughness`,["texture"]),Or(r.occlusion,`${t}.occlusion`,["texture","strength"]),Wd(r.emission,`${t}.emission`),qd(r.alpha,`${t}.alpha`)}function Hd(e,t){if(e==null)return;let r=Be(e,t);ze(r,["color","texture","brightness","saturation","contrast","hue"],t),Ai(r.color,`${t}.color`),ut(r.texture,`${t}.texture`);for(let n of["brightness","saturation","contrast","hue"])ft(r,n,t)}function Or(e,t,r){if(e==null)return;let n=Be(e,t);ze(n,r,t),ut(n.texture,`${t}.texture`),r.includes("strength")&&ft(n,"strength",t)}function Wd(e,t){if(e==null)return;let r=Be(e,t);ze(r,["color","intensity","texture","maskTexture"],t),Ai(r.color,`${t}.color`),ft(r,"intensity",t),ut(r.texture,`${t}.texture`),ut(r.maskTexture,`${t}.maskTexture`)}function qd(e,t){if(e==null)return;let r=Be(e,t);if(ze(r,["mode","opacity","cutoff","texture"],t),"mode"in r&&!["opaque","mask","blend"].includes(String(r.mode)))throw h("schema.invalidValue",`${t}.mode`);for(let n of["opacity","cutoff"])ft(r,n,t);ut(r.texture,`${t}.texture`)}function ut(e,t){if(e==null)return;let r=Be(e,t);ze(r,["url","textureAssetId"],t);for(let n of["url","textureAssetId"])if(n in r&&r[n]!=null&&!A(r[n]))throw h("schema.invalidValue",`${t}.${n}`)}function Ai(e,t){if(e==null)return;let r=Be(e,t);for(let n of["r","g","b"])Jd(r,n,t)}function ze(e,t,r){let n=new Set(t);for(let i of Object.keys(e))if(!n.has(i))throw h("schema.deprecatedField",`${r}.${i}`)}function ft(e,t,r){if(t in e&&e[t]!=null&&(typeof e[t]!="number"||!Number.isFinite(e[t])))throw h("schema.invalidType",`${r}.${t}`)}function Jd(e,t,r){if(!(t in e)||typeof e[t]!="number"||!Number.isFinite(e[t]))throw h("schema.invalidValue",`${r}.${t}`)}function Be(e,t){let r=I(e);if(!r)throw h("schema.invalidType",t);return r}function h(e,t){let r=new Error(`${e}: ${t}`);return Object.assign(r,{code:e,path:t}),r}function I(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function A(e){return typeof e=="string"&&e.length>0&&e===e.trim()?e:null}function Ei(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function Ti(e,t,r={}){Ii(e);let n=t;Object.prototype.hasOwnProperty.call(n,"staticShadows")&&n.staticShadows!=null&&rt(n.staticShadows,"$.staticShadows");let{scene:i,...o}=t,a=structuredClone(o),s=U(i)?i:void 0,l=si(e),d={...l,compilerId:xi,compilerVersion:Pi,compiledAt:new Date().toISOString()};a.schemaVersion=3,a.meta={...a.meta??{},generatedFrom:d};let u=s?.rootId||"root",c=e.scene.gameObjects.filter(x=>x.id!==u),m=el(e),p={...e,scene:{...e.scene,materialAssets:m}},g=c.flatMap(x=>ul(x,l,p,r)),b=g.map(Di);Xd(u,b),Zd(u,b);let S={rootId:u,assets:p.assets.filter(nl).map(il),nodes:b,materialAssets:m,materials:structuredClone(s?.materials??[]),textures:structuredClone(s?.textures??[])};return a.scene=S,a.plugins=ml(a.plugins,r.shadowMapExperimentConfig,p.scene.shadowMapExperiment,g,u,l.revision),Sr(a),{sceneConfig:a,summary:{assetCount:S.assets.length,gameObjectCount:e.scene.gameObjects.length,nodeCount:S.nodes.length}}}function Di(e){if(!Object.prototype.hasOwnProperty.call(e,"shadowMapExperiment")&&!Object.prototype.hasOwnProperty.call(e,"shadowMapExperimentInferredUpdateClass")&&!Object.prototype.hasOwnProperty.call(e,"shadowMapExperimentAuthoredShadow"))return e;let{shadowMapExperiment:t,shadowMapExperimentInferredUpdateClass:r,shadowMapExperimentAuthoredShadow:n,...i}=e;return i}function Xd(e,t){let r=new Set([e]);for(let n=0;n<t.length;n+=1){let i=t[n].id;if(r.has(i)){let o=new Error(`schema.invalidReference: $.scene.nodes[${n}].id`);throw Object.assign(o,{code:"schema.invalidReference",path:`$.scene.nodes[${n}].id`,nodeId:i}),o}r.add(i)}}function Zd(e,t){let r=new Map(t.map(n=>[n.id,n]));for(let n=0;n<t.length;n+=1){let i=t[n];if(!(i.source?.component!=="PrefabMarker"||!("marker"in i)||!i.marker))for(let o of Qd(i.marker)){let a=r.get(o.target.id);if(o.target.id!==e&&(!a||a.source?.objectId===i.source.objectId))continue;let s=`$.scene.nodes[${n}].marker.${o.path}.id`,l=new Error(`schema.invalidReference: ${s}`);throw Object.assign(l,{code:"schema.invalidReference",path:s,nodeId:i.id,targetId:o.target.id}),l}}}function Qd(e){let t=[];return e.target&&t.push({path:"target",target:e.target}),e.geometry.kind==="point"&&e.geometry.target&&t.push({path:"geometry.target",target:e.geometry.target}),e.geometry.kind==="object-bounds"&&t.push({path:"geometry.target",target:e.geometry.target}),t}function el(e){let t=structuredClone(e.scene.materialAssets??[]),r=Gt(tl(e,t));if(!r.ok)throw new Error(`editor_scene_material_assets_missing: ${r.missingMaterialAssetIds.join(", ")}`);return t}function tl(e,t){let r={...e,scene:{...e.scene,materialAssets:t}};return{...r,scene:{...r.scene,gameObjects:[...r.scene.gameObjects.map(n=>{let i=_i(n,r);if(i)return{...n,overrides:i};if(!("overrides"in n))return n;let o={...n};return delete o.overrides,o}),...rl(r)]}}}function rl(e){let t=[];for(let r of e.scene.gameObjects){let n=st(e,r);!n.definition||!Ht(n.definition)||t.push(...Mi({editorDocument:e,prefabAsset:n.definition,hostGameObject:r,instanceOverrides:r.overrides,visitedPrefabIds:new Set}))}return t}function Mi(e){if(e.visitedPrefabIds.has(e.prefabAsset.id))return[];e.visitedPrefabIds.add(e.prefabAsset.id);let t=vi(wr(e.prefabAsset),at(e.prefabAsset)??""),r=t.find(o=>o.id===at(e.prefabAsset));if(!r)return e.visitedPrefabIds.delete(e.prefabAsset.id),[];let n=Gi(t,e.prefabAsset),i=[];for(let o of t){if(o.kind==="prefabInstance"&&o.childPrefabId){let d=e.editorDocument.assets.find(u=>u.id===o.childPrefabId);if(d&&Ht(d)){i.push(...Mi({editorDocument:e.editorDocument,prefabAsset:d,hostGameObject:e.hostGameObject,instanceOverrides:o.overrides,visitedPrefabIds:new Set(e.visitedPrefabIds)}));continue}continue}let a=Ml(e.hostGameObject,o);if(!a)continue;let s=o.kind==="model"&&o.sourceAssetId?e.editorDocument.assets.find(d=>d.id===o.sourceAssetId):void 0,l=jr({hostGameObject:a,prefabAsset:e.prefabAsset,rootNode:r,node:o,asset:s,editorDocument:e.editorDocument,instanceOverrides:o.id===n?e.instanceOverrides:void 0});l&&i.push({...a,overrides:l})}return e.visitedPrefabIds.delete(e.prefabAsset.id),i}function nl(e){return e.type==="glb"||e.type==="texture"}function il(e){let t=sl(e),r=e.type==="glb"?dl(e):[],n=al(e.external),i=ol(e.defaults);return{id:e.id,type:e.type,...e.guid?{guid:e.guid}:{},...t?{url:t}:{},...typeof e.warmupCount=="number"&&Number.isInteger(e.warmupCount)&&e.warmupCount>=0?{warmupCount:e.warmupCount}:{},...typeof e.singleton=="boolean"?{singleton:e.singleton}:{},...typeof e.materialMode=="string"?{materialMode:e.materialMode}:{},...i!==void 0?{defaults:i}:{},...n?{external:n}:{},...r.length>0?{materialSlots:r}:{}}}function ol(e){if(!e)return;let t=structuredClone(e);return U(t)?(delete t.shadowMapExperiment,Object.keys(t).length>0?t:void 0):t}function al(e){let t=U(e)?e:void 0,r=pe(t?.platformAssetId),n=pe(t?.assetUrl);if(!(!r&&!n))return{...r?{platformAssetId:r}:{},...n?{assetUrl:n}:{}}}function sl(e){let t=U(e.metadata)?e.metadata:void 0,r=U(e.external)?e.external:void 0;return pe(t?.url)??pe(r?.assetUrl)??void 0}function dl(e){let t=U(e.metadata)?e.metadata:void 0,r=Array.isArray(t?.materialSlots)?t.materialSlots:[],n=ll(t?.assetAnalysis);return r.flatMap(i=>{if(!U(i))return[];let o=pe(i.slotId);if(!o)return[];let a=pe(i.label),s=(Array.isArray(i.sourceSurfaces)?i.sourceSurfaces:[]).flatMap(l=>{if(!U(l))return[];let d=pe(l.ownerNodePath),u=mt(l.meshIndex),c=mt(l.primitiveIndex);if(!d||u==null||c==null)return[];let m=mt(l.nodeIndex),p=cl(Array.isArray(l.nodeIndexPath)?l.nodeIndexPath:[]),g=mt(l.sourceMaterialIndex),b=pe(l.sourceMeshName)??n.get(u);return[{ownerNodePath:d,...m==null?{}:{nodeIndex:m},...p.length>0?{nodeIndexPath:p}:{},meshIndex:u,primitiveIndex:c,...g==null?{}:{sourceMaterialIndex:g},...b?{sourceMeshName:b}:{}}]});return s.length===0?[]:[{slotId:o,...a?{label:a}:{},sourceSurfaces:s}]})}function ll(e){let t=U(e)?e:void 0,r=Array.isArray(t?.meshes)?t.meshes:[];return new Map(r.flatMap(n=>{if(!U(n))return[];let i=mt(n.meshIndex),o=pe(n.name);return i==null||!o?[]:[[i,o]]}))}function cl(e){return[...new Set(e.filter(t=>typeof t=="number"&&Number.isInteger(t)&&t>=0))]}function mt(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0?e:void 0}function ul(e,t,r,n){let i=st(r,e);return(i.definition&&Ht(i.definition)?hl(e,i.definition,t,r,new Set):[fl(e,t,r,n)]).map(a=>{let s=a.kind==="instance"?r.assets.find(d=>d.id===a.instance.assetId):void 0,l=n.inferShadowMapExperimentUpdateClass?.({gameObject:e,runtimeNode:Di(a),...s?{asset:s}:{}})??bl(s);return{...a,shadowMapExperimentInferredUpdateClass:l,...Object.prototype.hasOwnProperty.call(a,"shadowMapExperimentAuthoredShadow")?{}:pl(a,r)}})}function fl(e,t,r,n={}){let i=Ir(e),o=ge(e),a=Ar(e),s=Cl(e),l=Ce(e),d=_i(e,r),u=ti(e),c=yl(r,e),m={sourceId:t.sourceId,sourceType:t.sourceType,revision:t.revision,...e.guid?{objectGuid:e.guid}:{},objectId:e.id,component:o?"ModelRenderer":a?"ImageRenderer":s||l==="primitive"?"PrimitiveRenderer":l==="transform"?"Transform":"GameObject"},p={id:e.id,...e.name?{name:e.name}:{},...e.parentId?{parentId:e.parentId}:{},...e.active===!1?{enabled:!1}:{},...e.shadow?{shadow:structuredClone(e.shadow)}:{},...c?{shadowMapExperiment:structuredClone(c)}:{},...Il(r,e),...u?{rendering:u}:{},source:m,...i&&"position"in i?{transform:{position:i.position,rotation:i.rotation,...i.scale?{scale:i.scale}:{}}}:{}};if(l==="primitive")return{...p,kind:"primitive",primitive:{shape:s?.shape??"cube"},...d?{overrides:d}:{}};if(a)return{...p,kind:"image",image:{assetId:a.assetId,size:{width:a.size.width,height:a.size.height}},...d?{overrides:d}:{}};if(!o){if(l==="transform"){let g=Pl(e,n),b=g.transformType;delete g.transformType;let S=wi(b)??wi(e.transformType);return{...p,kind:"transform",...S?{transformType:S}:{},...e.camera?{camera:Ol(e.camera)}:{},...e.light?{light:ji(e.light)}:{},...e.marker?{marker:{label:e.name||e.id,...structuredClone(e.marker)}}:{},...g,...d?{overrides:d}:{}}}return{...p,kind:"group"}}return{...p,kind:"instance",instance:{assetId:o.assetId},...d?{overrides:d}:{}}}function ml(e,t,r,n,i,o){let a=(e??[]).filter(m=>m.pluginId!==fr);if(!t)return a;let s=r,l=n.find(m=>m.id===t.lightRef),d=l?.kind==="transform"&&l.light?.type==="directional"?l:void 0;if(!l&&t.enabled)throw new Error(`shadowMapExperiment.lightMissing:${t.lightRef}`);if(l&&!d&&t.enabled)throw new Error(`shadowMapExperiment.lightUnsupported:${t.lightRef}`);let u=d?.kind==="transform"&&d.light?.type==="directional"?[d.light.direction.x,d.light.direction.y,d.light.direction.z]:[0,-1,0],c=yn({revision:typeof o=="number"&&Number.isInteger(o)&&o>=0?o:0,scopeId:i,config:t,settings:s,lightDirection:u,objects:n.filter(m=>m.kind==="instance"||m.kind==="primitive").map(m=>({entityId:m.id,renderableIds:[m.id],...m.shadowMapExperiment?{override:m.shadowMapExperiment}:{},...gl(m.shadowMapExperimentAuthoredShadow),inferredUpdateClass:m.shadowMapExperimentInferredUpdateClass??"static"}))});return[...a,{pluginId:fr,schemaVersion:3,data:c}]}function gl(e){return{...e?.cast==="none"?{cast:!1}:e?.cast==="enabled"?{cast:!0}:{},...e?.receive==="none"?{receive:!1}:e?.receive==="enabled"?{receive:!0}:{}}}function pl(e,t){let r=e.kind==="instance"?t.assets.find(i=>i.id===e.instance.assetId):void 0,n=ki(Lr(r).shadow,e.shadow);return n?{shadowMapExperimentAuthoredShadow:n}:{}}function ki(...e){let t=ce(...e),r=t?.cast,n=t?.receive;return r||n?{...r?{cast:r}:{},...n?{receive:n}:{}}:void 0}function bl(e){let t=U(e?.metadata?.assetAnalysis)?e.metadata.assetAnalysis:void 0;if(!t)return"static";let r=vr(t.skinCount),n=vr(t.morphTargetCount);return r>0||n>0?"skinned":vr(t.animationCount)>0?"dynamic":"static"}function vr(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:0}function Kt(...e){for(let t=e.length-1;t>=0;t-=1)if(e[t])return e[t]}function yl(e,t){let r=ge(t),n=st(e,t),i=n.sourceAsset??(r?e.assets.find(o=>o.id===r.assetId):void 0);return Kt(Ci(i),n.definition?.prefab?.defaults?.shadowMapExperiment,t.shadowMapExperiment)}function Ci(e){if(!e||!U(e.defaults))return;let t=e.defaults.shadowMapExperiment;return U(t)?t:void 0}function hl(e,t,r,n,i){return Ri({prefabAsset:t,sourceRef:r,editorDocument:n,hostGameObject:e,rootRuntimeId:e.id,rootParentId:e.parentId,rootName:e.name??t.displayName??t.id,rootTransform:Ir(e)??void 0,rootActive:e.active,rootShadow:e.shadow,sceneInstanceShadow:e.shadow,rootShadowMapExperiment:e.shadowMapExperiment,instanceOverrides:e.overrides,propertyPathPrefix:`assets.${t.id}.prefab.nodes`,visitedPrefabIds:i})}function Ri(e){if(e.visitedPrefabIds.has(e.prefabAsset.id))return[Gr({id:e.rootRuntimeId,name:e.rootName??e.prefabAsset.displayName??e.prefabAsset.id,parentId:e.rootParentId,transform:e.rootTransform,editorDocument:e.editorDocument,sourceRef:e.sourceRef,hostGameObject:e.hostGameObject,component:"PrefabCycle",propertyPath:e.propertyPathPrefix})];e.visitedPrefabIds.add(e.prefabAsset.id);let t=wr(e.prefabAsset),r=at(e.prefabAsset),n=r?t.find(d=>d.id===r):null;if(!n||t.length===0)return e.visitedPrefabIds.delete(e.prefabAsset.id),[Gr({id:e.rootRuntimeId,name:e.rootName??e.prefabAsset.displayName??e.prefabAsset.id,parentId:e.rootParentId,transform:e.rootTransform,editorDocument:e.editorDocument,sourceRef:e.sourceRef,hostGameObject:e.hostGameObject,component:"Prefab",propertyPath:e.propertyPathPrefix})];let i={instanceId:e.rootRuntimeId,rootNodeId:n.id},o=d=>kr(i,d.id),a=vi(t,n.id),s=Gi(a,e.prefabAsset),l=[];for(let d of a){let u=o(d),c=d.id===n.id?e.rootParentId:o(t.find(g=>g.id===d.parentId)??n),m=El(t,d),p=xl(t,d);if(d.kind==="prefabInstance"&&d.childPrefabId){let g=e.editorDocument.assets.find(b=>b.id===d.childPrefabId);if(g&&Ht(g)){let b=d.id===n.id;l.push(...Ri({prefabAsset:g,sourceRef:e.sourceRef,editorDocument:e.editorDocument,hostGameObject:e.hostGameObject,rootRuntimeId:u,rootParentId:c,rootName:b?e.rootName??d.name??g.displayName??g.id:d.name??g.displayName??g.id,rootTransform:b?e.rootTransform??d.transform:d.transform,rootActive:b?e.rootActive??d.defaults?.active??e.prefabAsset.prefab?.defaults?.active:d.defaults?.active,rootShadow:b?ce(e.prefabAsset.prefab?.defaults?.shadow,d.defaults?.shadow,e.rootShadow):d.defaults?.shadow,inheritedShadowParticipationLayers:[e.prefabAsset.prefab?.defaults?.shadow,...p,d.defaults?.shadow,...e.inheritedShadowParticipationLayers??[]],sceneInstanceShadow:e.sceneInstanceShadow,inheritedShadowMapExperiment:Kt(e.prefabAsset.prefab?.defaults?.shadowMapExperiment,e.inheritedShadowMapExperiment,m,d.defaults?.shadowMapExperiment),rootShadowMapExperiment:e.rootShadowMapExperiment,instanceOverrides:b?gt(gt(de(e.prefabAsset.prefab?.overrides),de(d.overrides)),de(e.instanceOverrides)):d.overrides,propertyPathPrefix:`${e.propertyPathPrefix}.${d.id}.childPrefab.nodes`,visitedPrefabIds:new Set(e.visitedPrefabIds)}));continue}l.push(Gr({id:u,name:d.name??d.childPrefabId??"Prefab Instance",parentId:c,transform:d.transform,sourceRef:e.sourceRef,editorDocument:e.editorDocument,hostGameObject:e.hostGameObject,component:"UnsupportedPrefabInstance",propertyPath:`${e.propertyPathPrefix}.${d.id}`}));continue}l.push(Sl({node:d,rootNode:n,identityScope:i,prefabAsset:e.prefabAsset,runtimeId:u,parentId:c,sourceRef:e.sourceRef,editorDocument:e.editorDocument,hostGameObject:e.hostGameObject,rootRuntimeName:e.rootName,rootRuntimeTransform:e.rootTransform,rootRuntimeActive:e.rootActive,rootRuntimeShadow:e.rootShadow,inheritedShadowParticipationLayers:e.inheritedShadowParticipationLayers,compositionAncestorShadowParticipationLayers:p,sceneInstanceShadow:e.sceneInstanceShadow,inheritedShadowMapExperiment:e.inheritedShadowMapExperiment,compositionAncestorShadowMapExperiment:m,rootRuntimeShadowMapExperiment:e.rootShadowMapExperiment,instanceOverrides:d.id===s?e.instanceOverrides:void 0,propertyPath:`${e.propertyPathPrefix}.${d.id}`}))}return e.visitedPrefabIds.delete(e.prefabAsset.id),wl({compiledNodes:l,editorDocument:e.editorDocument,hostGameObject:e.hostGameObject})}function Sl(e){let t=e.node.id===e.rootNode.id,r=t?e.rootRuntimeTransform??e.node.transform:e.node.transform,n=e.node.kind==="model"&&e.node.sourceAssetId?e.editorDocument.assets.find(o=>o.id===e.node.sourceAssetId):void 0,i=Ni({id:e.runtimeId,name:t?e.rootRuntimeName??e.node.name??e.prefabAsset.displayName??e.prefabAsset.id:e.node.name,parentId:e.parentId,transform:r,active:t?e.rootRuntimeActive??e.node.defaults?.active??e.prefabAsset.prefab?.defaults?.active:e.node.defaults?.active,shadow:t?ce(e.prefabAsset.prefab?.defaults?.shadow,e.node.defaults?.shadow,e.rootRuntimeShadow):ce(e.prefabAsset.prefab?.defaults?.shadow,e.node.defaults?.shadow),shadowMapExperimentAuthoredShadow:ki(Lr(n).shadow,e.prefabAsset.prefab?.defaults?.shadow,...e.compositionAncestorShadowParticipationLayers??[],e.node.defaults?.shadow,...e.inheritedShadowParticipationLayers??[],e.sceneInstanceShadow)??{},shadowMapExperiment:Kt(Ci(n),e.prefabAsset.prefab?.defaults?.shadowMapExperiment,e.inheritedShadowMapExperiment,e.compositionAncestorShadowMapExperiment,e.node.defaults?.shadowMapExperiment,e.rootRuntimeShadowMapExperiment),sourceAsset:n,editorDocument:e.editorDocument,sourceRef:e.sourceRef,hostGameObject:e.hostGameObject,component:e.node.kind==="model"?"PrefabModel":e.node.kind==="primitive"?"PrefabPrimitive":e.node.kind==="light"?"PrefabLight":e.node.kind==="marker"?"PrefabMarker":"PrefabNode",propertyPath:e.propertyPath});if(e.node.kind==="model"&&e.node.sourceAssetId){let o=jr({hostGameObject:e.hostGameObject,prefabAsset:e.prefabAsset,rootNode:e.rootNode,node:e.node,asset:n,editorDocument:e.editorDocument,instanceOverrides:e.instanceOverrides});return{...i,kind:"instance",instance:{assetId:e.node.sourceAssetId},...o?{overrides:o}:{}}}if(e.node.kind==="primitive"){let o=jr({hostGameObject:e.hostGameObject,prefabAsset:e.prefabAsset,rootNode:e.rootNode,node:e.node,asset:void 0,editorDocument:e.editorDocument,instanceOverrides:e.instanceOverrides});return{...i,kind:"primitive",primitive:{shape:e.node.primitive?.shape??"cube"},...o?{overrides:o}:{}}}return e.node.kind==="light"?{...i,kind:"transform",transformType:"light",...e.node.light?{light:ji(e.node.light)}:{}}:e.node.kind==="marker"&&e.node.marker?{...i,kind:"transform",marker:{label:e.node.name??e.node.id,...ni(e.node.marker,e.identityScope)}}:{...i,kind:"group"}}function El(e,t){let r=new Map(e.map(o=>[o.id,o])),n=[],i=t.parentId?r.get(t.parentId):void 0;for(;i;)n.unshift(i),i=i.parentId?r.get(i.parentId):void 0;return Kt(...n.map(o=>o.defaults?.shadowMapExperiment))}function xl(e,t){let r=new Map(e.map(o=>[o.id,o])),n=[],i=t.parentId?r.get(t.parentId):void 0;for(;i;)n.unshift(i),i=i.parentId?r.get(i.parentId):void 0;return n.map(o=>o.defaults?.shadow)}function Gr(e){return{...Ni({id:e.id,name:e.name,parentId:e.parentId,transform:e.transform,editorDocument:e.editorDocument,sourceRef:e.sourceRef,hostGameObject:e.hostGameObject,component:e.component,propertyPath:e.propertyPath}),kind:"group"}}function Pl(e,t){let r=t.readCustomTransformRuntimeData?.(e);return r&&typeof r=="object"&&!Array.isArray(r)?structuredClone(r):{}}function Ni(e){return{id:e.id,...e.name?{name:e.name}:{},...e.parentId?{parentId:e.parentId}:{},...e.active===!1?{enabled:!1}:{},...e.shadow?{shadow:structuredClone(e.shadow)}:{},...Object.prototype.hasOwnProperty.call(e,"shadowMapExperimentAuthoredShadow")?{shadowMapExperimentAuthoredShadow:structuredClone(e.shadowMapExperimentAuthoredShadow??{})}:{},...e.shadowMapExperiment?{shadowMapExperiment:structuredClone(e.shadowMapExperiment)}:{},...Al(e),source:{sourceId:e.sourceRef.sourceId,sourceType:e.sourceRef.sourceType,revision:e.sourceRef.revision,...e.hostGameObject.guid?{objectGuid:e.hostGameObject.guid}:{},objectId:e.hostGameObject.id,component:e.component,propertyPath:e.propertyPath},...e.transform&&"position"in e.transform?{transform:{position:e.transform.position,rotation:e.transform.rotation,...e.transform.scale?{scale:e.transform.scale}:{}}}:{}}}function Il(e,t){let r=Bt({document:e,casterId:t.id,caster:t});return Fr(r,!!t.shadow)?{shadowPlan:r}:{}}function Al(e){if(!e.editorDocument)return{};let t=ne(e.shadow),r=Lr(e.sourceAsset),n=!!e.shadow||!!t.shadow||!!r.shadow;if(!n&&t.diagnostics.length===0&&r.diagnostics.length===0)return{};let i=Bt({document:e.editorDocument,casterId:e.hostGameObject.id,caster:e.hostGameObject,settings:{source:r.shadow,instance:t.shadow}}),o={...i,casterId:e.id,diagnostics:[...r.diagnostics,...t.diagnostics,...i.diagnostics].map(a=>({...a,casterId:a.casterId===e.hostGameObject.id||!a.casterId?e.id:a.casterId}))};return Fr(o,n)?{shadowPlan:o}:{}}function Lr(e){if(!e)return{diagnostics:[]};let t=e?.defaults&&typeof e.defaults=="object"&&!Array.isArray(e.defaults)?e.defaults:void 0;if(!t)return{diagnostics:[]};let r=ne(t.shadow);return{shadow:r.shadow,diagnostics:r.diagnostics.map(n=>({...n,details:{...n.details??{},source:"asset",assetId:e.id}}))}}function Fr(e,t){return t||e.backend!=="none"||e.diagnostics.length>0}function wl(e){if(e.compiledNodes.length===0)return e.compiledNodes;let t=new Set(e.compiledNodes.map(a=>a.id)),r=e.compiledNodes.map(a=>Tl(a)),n={...e.editorDocument,scene:{...e.editorDocument.scene,gameObjects:[...e.editorDocument.scene.gameObjects.filter(a=>!t.has(a.id)),...r]}},i=e.compiledNodes.filter(a=>a.shadow?.receive==="enabled").map(a=>a.id),o=r.find(a=>a.light?.type==="directional"&&a.active!==!1)?.id;return e.compiledNodes.map((a,s)=>{let l=r[s],d=Bt({document:n,casterId:a.id,caster:l,explicitReceiverIds:i,...o?{defaultLightId:o}:{}}),u=!!a.shadow;if(!Fr(d,u)){if(!a.shadowPlan)return a;let c={...a};return delete c.shadowPlan,c}return{...a,shadowPlan:d}})}function Tl(e){let t=[];return e.transform&&t.push({type:"Transform",position:e.transform.position,rotation:e.transform.rotation,...e.transform.scale?{scale:e.transform.scale}:{}}),e.kind==="instance"&&t.push({type:"ModelRenderer",assetId:e.instance.assetId}),e.kind==="image"&&t.push({type:"ImageRenderer",assetId:e.image.assetId,size:structuredClone(e.image.size)}),{id:e.id,...e.name?{name:e.name}:{},kind:e.kind==="image"?"transform":e.kind,...e.parentId?{parentId:e.parentId}:{},...e.enabled===!1?{active:!1}:{},...e.shadow?{shadow:structuredClone(e.shadow)}:{},...e.kind==="primitive"?{primitive:{shape:e.primitive.shape}}:{},...e.kind==="transform"&&e.transformType?{transformType:e.transformType}:{},...e.kind==="transform"&&e.light?{light:e.light}:{},...e.kind==="transform"&&e.camera?{camera:e.camera}:{},...e.kind==="transform"&&e.marker?{marker:structuredClone(e.marker)}:{},components:t}}function jr(e){let t=e.node.kind==="model"&&e.node.sourceAssetId?$i(e.hostGameObject,e.node,e.node.sourceAssetId):e.hostGameObject,r=e.asset?.id,n=kl([_r(de(e.prefabAsset.prefab?.overrides),e.prefabAsset.prefab?.sourceAssetId,e.asset),_r(de(e.rootNode.overrides),e.rootNode.kind==="model"?e.rootNode.sourceAssetId:e.prefabAsset.prefab?.sourceAssetId,e.asset),e.node.id===e.rootNode.id?void 0:_r(de(e.node.overrides),e.node.kind==="model"?e.node.sourceAssetId:r,e.asset)]),i=de(e.instanceOverrides);return Oi(gt(n,i),e.asset)}function _r(e,t,r){return Oi(e,t&&t===r?.id?r:void 0)}function Oi(e,t){if(!e?.materialSlotBindings)return e;let r=U(t?.metadata)&&Array.isArray(t.metadata.materialSlots)?t.metadata.materialSlots:[],n=new Set(r.flatMap(a=>{let s=U(a)&&typeof a.slotId=="string"?a.slotId.trim():"";return s?[s]:[]})),i=Object.fromEntries(Object.entries(e.materialSlotBindings).filter(([a])=>n.has(a))),o=structuredClone(e);return Object.keys(i).length>0?o.materialSlotBindings=i:delete o.materialSlotBindings,Object.keys(o).length>0?o:void 0}function $i(e,t,r){return{id:`${e.id}:${t.id}`,...t.name?{name:t.name}:{},kind:"instance",components:[...t.transform?[t.transform]:[],{type:"ModelRenderer",assetId:r}]}}function Dl(e,t){return{id:`${e.id}:${t.id}`,...t.name?{name:t.name}:{},kind:"primitive",primitive:{shape:t.primitive?.shape??"cube"},components:[...t.transform?[t.transform]:[]]}}function Ml(e,t){return t.kind==="model"&&t.sourceAssetId?$i(e,t,t.sourceAssetId):t.kind==="primitive"?Dl(e,t):null}function kl(e){let t;for(let r of e){let n=de(r);n&&(t=gt(t,n))}return t}function vi(e,t){let r=new Map;for(let s of e){if(!s.parentId)continue;let l=r.get(s.parentId)??[];l.push(s),r.set(s.parentId,l)}let n=[],i=new Set,o=s=>{if(!i.has(s.id)){i.add(s.id),n.push(s);for(let l of r.get(s.id)??[])o(l)}},a=e.find(s=>s.id===t);a&&o(a);for(let s of e)o(s);return n}function Gi(e,t){let r=t.prefab?.sourceAssetId;return e.find(n=>n.kind==="model"&&n.sourceAssetId===r)?.id??e.find(n=>n.kind==="model")?.id}function Ht(e){return _t(e)&&e.prefab.compositionVersion===jt&&Array.isArray(e.prefab.nodes)&&e.prefab.nodes.length>0&&!!at(e)}function Cl(e){return e.primitive??null}function _i(e,t){let r=Ce(e);if(r!=="instance"&&r!=="transform"&&r!=="primitive")return;let n=ge(e),i=n?t.assets.find(o=>o.id===n.assetId):void 0;return Rl(e,t,i)}function Rl(e,t,r){let n=de(e.overrides),i=st(t,e),o=de(i.definition?.prefab?.overrides);return gt(o,n)}function gt(e,t){let r=ei(e,t);for(let n of[e,t])if(n)for(let[i,o]of Object.entries(n))Nl(i)||o===void 0||(r??={},r[i]=structuredClone(o));return r&&Object.keys(r).length>0?r:void 0}function de(e){if(!U(e))return;let t=structuredClone(e);return Object.keys(t).length>0?t:void 0}function Nl(e){return e==="materialBinding"||e==="materialSlotBindings"}function U(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function pe(e){return(typeof e=="string"?e.trim():"")||void 0}function wi(e){return typeof e=="string"?e:void 0}function Ol(e){let t=structuredClone(e);return delete t.inspectorLanguage,t}function ji(e){return e.type==="directional"?ve({schemaVersion:1,type:"directional",intensity:e.intensity,direction:Je(e.direction),diffuseColor:e.diffuseColor??di.diffuseColor}):ve({schemaVersion:1,type:"hemispheric",intensity:e.intensity,diffuseColor:e.diffuseColor??Cr.diffuseColor,groundColor:e.groundColor??Cr.groundColor})}function $l(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Li(e){let t=$l(e);if(t==null)return null;let r=t%360;r>180&&(r-=360),r<=-180&&(r+=360);let n=vl(r);return Object.is(n,-0)?0:n}function vl(e){return Math.round(e*1e3)/1e3}var Gl=new Set(["leftToRight","rightToLeft","bottomToTop","topToBottom"]);function zi(e){let t=Er(e),r={uiKind:e.uiKind,size:{width:e.size.width,depth:e.size.depth},layers:e.layers.map((n,i)=>_l(n,i)),rendering:{textureWidth:t.width,textureHeight:t.height}};return e.aspectSourceLayerId&&(r.aspectSourceLayerId=e.aspectSourceLayerId),typeof e.lockAspectToBorder=="boolean"&&(r.lockAspectToBorder=e.lockAspectToBorder),e.mask&&(r.mask={...typeof e.mask.enabled=="boolean"?{enabled:e.mask.enabled}:{},...e.mask.source==="roundedRect"||e.mask.source==="borderAlpha"||e.mask.source==="texture"?{source:e.mask.source}:{},...e.mask.textureId?{textureId:e.mask.textureId}:{},...typeof e.mask.cornerRadius=="number"&&Number.isFinite(e.mask.cornerRadius)?{cornerRadius:e.mask.cornerRadius}:{},...typeof e.mask.padding=="number"&&Number.isFinite(e.mask.padding)?{padding:e.mask.padding}:{}}),e.rendering&&(r.rendering={...r.rendering,...typeof e.rendering.alphaIndex=="number"&&Number.isFinite(e.rendering.alphaIndex)?{alphaIndex:e.rendering.alphaIndex}:{},...typeof e.rendering.diffuseTextureLevel=="number"&&Number.isFinite(e.rendering.diffuseTextureLevel)?{diffuseTextureLevel:e.rendering.diffuseTextureLevel}:{},...typeof e.rendering.emissiveTextureLevel=="number"&&Number.isFinite(e.rendering.emissiveTextureLevel)?{emissiveTextureLevel:e.rendering.emissiveTextureLevel}:{}}),r}function _l(e,t){let r=Li(e.rotationDeg??0)??0,n={id:e.id,role:e.role,zOrder:typeof e.zOrder=="number"&&Number.isFinite(e.zOrder)?e.zOrder:t,rect:jl(e.rect),...r!==0?{rotationDeg:r}:{},...typeof e.enabled=="boolean"?{enabled:e.enabled}:{},...typeof e.opacity=="number"&&Number.isFinite(e.opacity)?{opacity:e.opacity}:{}};return e.kind==="texture"?{...n,kind:"texture",...e.textureId?{textureId:e.textureId}:{},...e.tint?{tint:Ve(e.tint)}:{},...e.imageFit?{imageFit:e.imageFit}:{}}:e.kind==="textureProgress"?{...n,kind:"textureProgress",...e.textureId?{textureId:e.textureId}:{},value:Ui(e.value),...e.tint?{tint:Ve(e.tint)}:{},...e.imageFit?{imageFit:e.imageFit}:{},...Fi(e.direction)?{direction:e.direction}:{}}:e.kind==="color"?{...n,kind:"color",color:Ve(e.color)}:e.kind==="progress"?{...n,kind:"progress",value:Ui(e.value??0),color:Ve(e.color),...Fi(e.direction)?{direction:e.direction}:{}}:{...n,kind:"text",text:{value:e.text.value,color:Ve(e.text.color),...e.text.fontFamily?{fontFamily:e.text.fontFamily}:{},...typeof e.text.fontSize=="number"&&Number.isFinite(e.text.fontSize)?{fontSize:e.text.fontSize}:{},...e.text.fontWeight!=null?{fontWeight:String(e.text.fontWeight)}:{},...e.text.strokeColor?{strokeColor:Ve(e.text.strokeColor)}:{},...typeof e.text.strokeWidth=="number"&&Number.isFinite(e.text.strokeWidth)?{strokeWidth:e.text.strokeWidth}:{},...e.text.align==="left"||e.text.align==="center"||e.text.align==="right"?{align:e.text.align}:{},...e.text.baseline==="top"||e.text.baseline==="middle"||e.text.baseline==="bottom"?{baseline:e.text.baseline}:{}}}}function jl(e){return{x:e.x,z:e.z,width:e.width,depth:e.depth}}function Ve(e){return{r:e.r,g:e.g,b:e.b,...typeof e.a=="number"?{a:e.a}:{}}}function Fi(e){return typeof e=="string"&&Gl.has(e)}function Ui(e){return Number.isFinite(e)?Math.max(0,Math.min(1,e)):0}var Bi=["model","texture","image","sound"],Ur=[".glb",".gltf"],Vi=[".png",".jpg",".jpeg",".webp"],Ll=[".env",".hdr",".dds",".ktx",".ktx2"],zr=[...Vi,...Ll],Br=[".mp3",".wav",".ogg",".flac",".aac",".m4a"],Vr=[...Ur,...zr,...Br];function Fl(e){return String(e??"").trim().toLowerCase().replace(/-/g,"")}function Kr(e,t){let r=Fl(t);return`${e==="model"?"asset":e==="texture"?"texture":e==="sound"?"sound":"image"}_${r}`}function Hr(e){let i=String(e??"").trim().split(/[^a-zA-Z0-9_$]+/).filter(Boolean).map((o,a)=>a===0?o:`${o.charAt(0).toUpperCase()}${o.slice(1)}`).join("").replace(/[^a-zA-Z0-9_$]/g,"")||"assetUrl";return/^[a-zA-Z_$]/.test(i)?i:`asset${i}`}function Wr(e,t=""){let r=String(e??"").trim().toLowerCase();if(r==="glb"||r==="gltf"||r==="model")return"model";if(r==="groundtexture"||r==="ground-texture"||r==="texture")return"texture";if(r==="ui"||r==="image"||r==="img")return"image";if(r==="audio"||r==="sound")return"sound";let n=Ul(t);return Ur.includes(n)?"model":Br.includes(n)?"sound":zr.includes(n)?"texture":null}function Ul(e){let t=e.split(/[?#]/,1)[0]??"",r=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\")),n=t.slice(r+1),i=n.lastIndexOf(".");return i>=0?n.slice(i).toLowerCase():""}function Ki(e){let t=String(e??"").trim(),r=t.toLowerCase();for(let n of[...Vr].sort((i,o)=>o.length-i.length))if(r.endsWith(n)){t=t.slice(0,-n.length);break}return t}function Hi(e,t){return String(e??"").trim()||Ki(t)||"Asset"}function Wi(e,t){return Ki(e||t).trim().toLowerCase().normalize("NFKD").replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"").replace(/_{2,}/g,"_")||null}function qi(e){return e==="model"?Ur:e==="sound"?Br:e==="texture"?zr:e==="image"?Vi:[]}function Ji(e){let t=typeof e=="string"&&e.trim()?e.trim():void 0;if(!t)return;if(t.includes("\0"))throw new Error("external_asset_path_must_be_portable");let r=t.replace(/\\/g,"/");if(r.startsWith("/")||/^[a-z]:\//i.test(r)||/^[a-z][a-z0-9+.-]*:/i.test(r))throw new Error("external_asset_path_must_be_portable");let n=[];for(let i of r.split("/"))if(!(!i||i===".")){if(i==="..")throw new Error("external_asset_path_must_be_portable");n.push(i)}if(n.length===0)throw new Error("external_asset_path_must_be_portable");return n.join("/")}function Wt(e,t={}){let r=t.generatedBy??"scripts/register-asset.mjs",n=t.codeKeyPolicy??"legacy",i=e.filter(d=>d.codeKey);if(n==="disabled"&&i.length>0){let d=i[0];throw Object.assign(new Error("manifest_code_key_disabled"),{name:"PlayableEditorAssetCatalogGenerationError",details:{codeKeyPolicy:n,assetId:d.assetId,codeKey:d.codeKey}})}let o=e.map(d=>`import ${Hr(d.assetId)} from ${JSON.stringify(`${d.relativePath}?url`)};`).join(`
4
+ `),a=e.map(d=>{let u=gr(d.relativePath);if(!u)throw new Error(`Generated asset catalog entry has no file extension: ${d.assetId}`);if(!pr(u))throw new Error(`Generated asset catalog entry has unsupported format: ${d.assetId} (${u})`);let c=[`guid: ${JSON.stringify(d.guid)}`,`assetId: ${JSON.stringify(d.assetId)}`,`kind: ${JSON.stringify(d.kind)}`,`displayName: ${JSON.stringify(d.displayName)}`,`url: ${Hr(d.assetId)}`,`format: ${JSON.stringify(u)}`,`relativePath: ${JSON.stringify(d.relativePath)}`,d.originalFileName?`originalFileName: ${JSON.stringify(d.originalFileName)}`:"",d.codeKey?`codeKey: ${JSON.stringify(d.codeKey)}`:"",d.category?`category: ${JSON.stringify(d.category)}`:"",typeof d.placeable=="boolean"?`placeable: ${JSON.stringify(d.placeable)}`:"",typeof d.warmupCount=="number"?`warmupCount: ${JSON.stringify(d.warmupCount)}`:"",typeof d.singleton=="boolean"?`singleton: ${JSON.stringify(d.singleton)}`:"",d.materialMode?`materialMode: ${JSON.stringify(d.materialMode)}`:"",d.defaults?`defaults: ${JSON.stringify(d.defaults)}`:"",d.contentHash?`contentHash: ${JSON.stringify(d.contentHash)}`:"",typeof d.byteSize=="number"?`byteSize: ${JSON.stringify(d.byteSize)}`:"",d.external?`external: ${JSON.stringify(d.external)}`:"",d.metadata?`metadata: ${JSON.stringify(d.metadata)}`:"",d.createdAt?`createdAt: ${JSON.stringify(d.createdAt)}`:"",d.updatedAt?`updatedAt: ${JSON.stringify(d.updatedAt)}`:""].filter(Boolean).join(", ");return` ${JSON.stringify(d.assetId)}: { ${c} },`}).join(`
5
+ `),s=new Map;for(let d of i)s.set(d.codeKey,d.assetId);let l=[...s].map(([d,u])=>` ${JSON.stringify(d)}: ${JSON.stringify(u)},`).join(`
6
+ `);return[`// This file is generated by ${r}.`,"// Do not edit by hand.","",o,"",'export type GeneratedAssetCatalogKind = "model" | "texture" | "image" | "sound";',"","export interface GeneratedAssetCatalogEntry {"," guid: string;"," assetId: string;"," kind: GeneratedAssetCatalogKind;"," displayName: string;"," url: string;"," format: `.${string}`;"," relativePath: string;"," originalFileName?: string;",...n==="legacy"?[" /** @deprecated Use the canonical assetId for persisted and runtime identity. */"," codeKey?: string;"]:[]," category?: string;"," placeable?: boolean;"," warmupCount?: number;"," singleton?: boolean;"," materialMode?: string;"," defaults?: Record<string, unknown>;"," contentHash?: string;"," byteSize?: number;"," external?: { platformAssetId?: string; assetPath?: string; assetUrl?: string };"," metadata?: Record<string, unknown>;"," createdAt?: string;"," updatedAt?: string;","}","","export const GENERATED_ASSET_CATALOG: Record<string, GeneratedAssetCatalogEntry> = {",a,"};","","export const GENERATED_ASSET_URL_MAP = Object.fromEntries("," Object.entries(GENERATED_ASSET_CATALOG).map(([assetId, entry]) => [assetId, entry.url]),",") as Record<string, string>;","","export const GENERATED_MODEL_ASSET_URL_MAP = Object.fromEntries(",' Object.entries(GENERATED_ASSET_CATALOG).filter(([, entry]) => entry.kind === "model").map(([assetId, entry]) => [assetId, entry.url]),',") as Record<string, string>;","","export const GENERATED_TEXTURE_ASSET_URL_MAP = Object.fromEntries(",' Object.entries(GENERATED_ASSET_CATALOG).filter(([, entry]) => entry.kind === "texture").map(([assetId, entry]) => [assetId, entry.url]),',") as Record<string, string>;","","export const GENERATED_IMAGE_ASSET_URL_MAP = Object.fromEntries(",' Object.entries(GENERATED_ASSET_CATALOG).filter(([, entry]) => entry.kind === "image").map(([assetId, entry]) => [assetId, entry.url]),',") as Record<string, string>;","","export const GENERATED_SOUND_ASSET_URL_MAP = Object.fromEntries(",' Object.entries(GENERATED_ASSET_CATALOG).filter(([, entry]) => entry.kind === "sound").map(([assetId, entry]) => [assetId, entry.url]),',") as Record<string, string>;","","/** @deprecated Resolve assets by canonical assetId through GENERATED_ASSET_CATALOG. */","export const ASSET_IDS = {",l,"} as const satisfies Record<string, string>;"].join(`
7
+ `)+`
8
+ `}import nn from"node:crypto";import N from"node:fs/promises";import R from"node:path";import qr from"node:fs/promises";import W from"node:path";var Jr=5;async function qt(e){let t={...e.existingMetadata??{},...e.payloadMetadata??{}},r=await zl(e);if(r?(t.assetAnalysis=r,t.assetAnalysisStatus="complete"):(delete t.assetAnalysis,t.assetAnalysisStatus="unavailable"),e.kind==="texture"||e.kind==="image"){let i=fc(e.sourcePath,t);return i&&(t.textureUsage=i.usage,t.capabilities={...F(t.capabilities)?t.capabilities:{},materialTexture:i.materialTexture,environmentTexture:i.environmentTexture}),Object.keys(t).length>0?t:null}if(e.kind!=="model")return Object.keys(t).length>0?t:null;t.assetMetadataVersion=Jr;let n=await Bl(e.sourcePath,{assetGuid:e.guid,assetId:e.assetId,cwd:e.cwd,assetsDir:e.assetsDir,existingMaterialSlots:t.materialSlots});return n.length===0?delete t.materialSlots:t.materialSlots=n,Object.keys(t).length>0?t:null}async function zl(e){return e.kind==="model"?Vl(e.sourcePath):e.kind==="texture"||e.kind==="image"?Kl(e.sourcePath):null}async function Bl(e,t={}){try{let r=await Qi(e);return rc(r,{...t,sourcePath:e})}catch{return[]}}async function Qi(e){let t=W.extname(e).toLowerCase();if(t===".gltf")return JSON.parse(await qr.readFile(e,"utf8"));if(t!==".glb")return null;let r=await qr.readFile(e);if(r.length<20||r.toString("utf8",0,4)!=="glTF"||r.readUInt32LE(4)!==2||r.readUInt32LE(8)>r.length)return null;let o=12;for(;o+8<=r.length;){let a=r.readUInt32LE(o),s=r.readUInt32LE(o+4);if(o+=8,o+a>r.length)return null;if(s===1313821514){let l=r.toString("utf8",o,o+a).replace(/\0+$/g,"");return JSON.parse(l)}o+=a}return null}async function Vl(e){try{let t=await Qi(e);if(!t||typeof t!="object")return null;let r=Array.isArray(t.scenes)?t.scenes:[],n=Array.isArray(t.nodes)?t.nodes:[],i=Array.isArray(t.meshes)?t.meshes:[],o=Array.isArray(t.materials)?t.materials:[],a=Array.isArray(t.textures)?t.textures:[],s=Array.isArray(t.images)?t.images:[],l=Array.isArray(t.animations)?t.animations:[],d=Array.isArray(t.skins)?t.skins:[],u=Array.isArray(t.accessors)?t.accessors:[],c=io(t),m=oo(n),p=new Set(c),g=i.reduce((w,M)=>w+(Array.isArray(M?.primitives)?M.primitives.length:0),0),b=i.reduce((w,M)=>w+(Array.isArray(M?.primitives)?M.primitives.reduce((O,z)=>O+(Array.isArray(z?.targets)?z.targets.length:0),0):0),0),S=Yl({nodeCount:n.length,meshCount:i.length,primitiveCount:g,materialCount:o.length,textureCount:a.length,imageCount:s.length}),x=Xl({nodeCount:n.length,meshCount:i.length,primitiveCount:g,materialCount:o.length,textureCount:a.length,imageCount:s.length,animationCount:l.length,skinCount:d.length,morphTargetCount:b,complexity:S});return{kind:"gltf",format:W.extname(e).toLowerCase()===".gltf"?"gltf":"glb",summary:`${n.length} nodes, ${i.length} meshes, ${g} primitives, ${o.length} materials`,complexity:S,sceneCount:r.length,nodeCount:n.length,meshCount:i.length,primitiveCount:g,materialCount:o.length,textureCount:a.length,imageCount:s.length,animationCount:l.length,skinCount:d.length,morphTargetCount:b,nodes:Hl(n,i,o,u,m,p),meshes:Wl(i,o,u),materials:ql(t),diagnostics:x}}catch{return null}}async function Kl(e){try{let t=await qr.readFile(e),r=W.extname(e).toLowerCase(),n=r===".png"?Zl(t):r===".jpg"||r===".jpeg"?Ql(t):r===".webp"?ec(t):null;if(!n)return null;let i=tc(n);return{kind:"image",format:n.format,summary:`${n.width}x${n.height} ${n.mime}`,complexity:n.estimatedPixels>=4096*4096?"high":n.estimatedPixels>=2048*2048?"medium":"low",width:n.width,height:n.height,mime:n.mime,bitDepth:n.bitDepth,hasAlpha:n.hasAlpha,estimatedPixels:n.estimatedPixels,diagnostics:i}}catch{return null}}function Hl(e,t,r,n,i,o){return e.slice(0,100).map((a,s)=>{let l=Number.isInteger(a?.mesh)?a.mesh:-1,d=l>=0&&l<t.length?t[l]:null,u=Array.isArray(a?.children)?a.children.filter(p=>Number.isInteger(p)):[],c=ao(e,i,o,s),m={nodeIndex:s,nodeIndexPath:lo(i,s),...typeof a?.name=="string"&&a.name.trim()?{name:a.name.trim()}:{},...c?{ownerNodePath:c}:{},...u.length>0?{children:u}:{}};if(d){let p=eo(d,r,n);Object.assign(m,{meshIndex:l,...typeof d?.name=="string"&&d.name.trim()?{meshName:d.name.trim()}:{},primitiveCount:p.length,...p.length>0?{primitives:p}:{}})}return m})}function Wl(e,t,r){return e.slice(0,50).map((n,i)=>{let o=Array.isArray(n?.primitives)?n.primitives:[],a=[...new Set(o.map(l=>Number.isInteger(l?.material)?l.material:-1).filter(l=>l>=0))],s=eo(n,t,r);return{meshIndex:i,...typeof n?.name=="string"&&n.name.trim()?{name:n.name.trim()}:{},primitiveCount:o.length,...s.length>0?{primitives:s}:{},...a.length>0?{materialIndices:a}:{},...a.length>0?{materialNames:a.map(l=>{let d=t[l];return typeof d?.name=="string"?d.name.trim():""}).filter(Boolean)}:{}}})}function eo(e,t,r){let n=F(e)?e:{};return(Array.isArray(n.primitives)?n.primitives:[]).map((o,a)=>{let s=Number.isInteger(o?.material)?o.material:-1,l=s>=0?t[s]:null,d=typeof l?.name=="string"&&l.name.trim()?l.name.trim():"",u=co(o,r),c=uo(o,r);return{primitiveIndex:a,...Number.isInteger(o?.mode)?{mode:o.mode}:{},...s>=0?{sourceMaterialIndex:s}:{},...d?{materialName:d}:{},...Number.isFinite(u)?{triangleCount:u}:{},...c?{boundingBox:c}:{}}})}function ql(e){return(Array.isArray(e?.materials)?e.materials:[]).slice(0,50).map((r,n)=>{let i=r?.pbrMetallicRoughness&&typeof r.pbrMetallicRoughness=="object"?r.pbrMetallicRoughness:{},o=Jl(r,i);return{sourceMaterialIndex:n,...typeof r?.name=="string"&&r.name.trim()?{materialName:r.name.trim()}:{},...Array.isArray(i.baseColorFactor)?{baseColorFactor:i.baseColorFactor.slice(0,4)}:{},metallicFactor:Number.isFinite(i.metallicFactor)?i.metallicFactor:1,roughnessFactor:Number.isFinite(i.roughnessFactor)?i.roughnessFactor:1,alphaMode:ro(r?.alphaMode)??"opaque",...Number.isFinite(r?.alphaCutoff)?{alphaCutoff:r.alphaCutoff}:{},...o.length>0?{textureSlots:o}:{}}})}function Jl(e,t){let r=[];return pt(r,"baseColor",t?.baseColorTexture),pt(r,"metallicRoughness",t?.metallicRoughnessTexture),pt(r,"normal",e?.normalTexture),pt(r,"occlusion",e?.occlusionTexture),pt(r,"emissive",e?.emissiveTexture),r}function pt(e,t,r){!F(r)||!Number.isInteger(r.index)||e.push({slot:t,textureIndex:r.index,...Number.isFinite(r.texCoord)?{texCoord:r.texCoord}:{}})}function Yl(e){return e.nodeCount>=300||e.meshCount>=250||e.primitiveCount>=300||e.materialCount>=200||e.textureCount>=80||e.imageCount>=80?"high":e.nodeCount>=100||e.meshCount>=80||e.primitiveCount>=100||e.materialCount>=50||e.textureCount>=24||e.imageCount>=24?"medium":"low"}function Xl(e){let t=[];return e.complexity==="high"&&t.push({severity:"warning",source:"asset",code:"asset.analysis.highComplexity",message:"GLTF asset is structurally complex; agent should place and inspect it before duplicating or using dense shadows.",details:{nodeCount:e.nodeCount,meshCount:e.meshCount,primitiveCount:e.primitiveCount,materialCount:e.materialCount,textureCount:e.textureCount,imageCount:e.imageCount}}),(e.animationCount>0||e.skinCount>0||e.morphTargetCount>0)&&t.push({severity:"info",source:"asset",code:"asset.analysis.riggedOrAnimated",message:"GLTF asset contains animation, skin, or morph target data.",details:{animationCount:e.animationCount,skinCount:e.skinCount,morphTargetCount:e.morphTargetCount}}),t}function Zl(e){if(e.length<33||e[0]!==137||e.toString("ascii",1,4)!=="PNG"||e[4]!==13||e[5]!==10||e[6]!==26||e[7]!==10||e.toString("ascii",12,16)!=="IHDR")return null;let r=e.readUInt32BE(16),n=e.readUInt32BE(20),i=e[24],o=e[25];return{format:"png",mime:"image/png",width:r,height:n,bitDepth:i,hasAlpha:o===4||o===6,estimatedPixels:r*n}}function Ql(e){if(e.length<4||e[0]!==255||e[1]!==216)return null;let t=2;for(;t+9<e.length;){if(e[t]!==255){t+=1;continue}let r=e[t+1],n=e.readUInt16BE(t+2);if(n<2)return null;if(r>=192&&r<=207&&![196,200,204].includes(r)&&t+8<e.length){let o=e[t+4],a=e.readUInt16BE(t+5),s=e.readUInt16BE(t+7);return{format:"jpeg",mime:"image/jpeg",width:s,height:a,bitDepth:o,hasAlpha:!1,estimatedPixels:s*a}}t+=2+n}return null}function ec(e){if(e.length<30||e.toString("ascii",0,4)!=="RIFF"||e.toString("ascii",8,12)!=="WEBP")return null;let t=e.toString("ascii",12,16);if(t==="VP8X"&&e.length>=30){let r=e[20],n=Yi(e,24)+1,i=Yi(e,27)+1;return{format:"webp",mime:"image/webp",width:n,height:i,hasAlpha:(r&16)!==0,estimatedPixels:n*i}}if(t==="VP8 "&&e.length>=30){let r=e.readUInt16LE(26)&16383,n=e.readUInt16LE(28)&16383;return{format:"webp",mime:"image/webp",width:r,height:n,hasAlpha:!1,estimatedPixels:r*n}}if(t==="VP8L"&&e.length>=25&&e[20]===47){let r=e.readUInt32LE(21),n=(r&16383)+1,i=(r>>14&16383)+1;return{format:"webp",mime:"image/webp",width:n,height:i,hasAlpha:!0,estimatedPixels:n*i}}return null}function Yi(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16}function tc(e){let t=[];return e.estimatedPixels>=4096*4096&&t.push({severity:"warning",source:"asset",code:"asset.analysis.largeImage",message:"Image asset is large; agent should inspect texture usage before assigning it broadly.",details:{width:e.width,height:e.height,estimatedPixels:e.estimatedPixels}}),t}function rc(e,t={}){if(!e||typeof e!="object")return[];let r=Array.isArray(e.nodes)?e.nodes:[],n=Array.isArray(e.meshes)?e.meshes:[],i=Array.isArray(e.materials)?e.materials:[],o=ic(e,t),a=io(e),s=oo(r),l=new Set(a),d=Array.isArray(e.accessors)?e.accessors:[],u=lc(t.existingMaterialSlots),c=[],m=new Map;for(let p=0;p<r.length;p+=1){let g=r[p],b=Number.isInteger(g?.mesh)?g.mesh:-1;if(b<0||b>=n.length)continue;let S=ao(r,s,l,p);if(!S)continue;let x=n[b],D=Array.isArray(x?.primitives)?x.primitives:[],w=gc(g,x,S),M=so(x),O=lo(s,p);for(let z=0;z<D.length;z+=1){let Pe=D[z],f=pc(Pe,i),v=no({ownerNodePath:S,nodeIndex:p,meshIndex:b,primitiveIndex:z}),y=co(Pe,d),G=uo(Pe,d),J=D.length>1?`${w} / Primitive ${z}`:w,Y={ownerNodePath:S,nodeIndex:p,nodeIndexPath:O,meshIndex:b,primitiveIndex:z,...M?{sourceMeshName:M}:{},...f.index>=0?{sourceMaterialIndex:f.index}:{},...Number.isFinite(y)?{triangleCount:y}:{},...G?{boundingBox:G}:{}};if(f.index>=0){let j=m.get(f.index)??{label:J,materialName:f.name,sourceSurfaces:[]};j.sourceSurfaces.push(Y),m.set(f.index,j);continue}c.push({slotId:u.byExactSource.get(v)??cc({assetGuid:t.assetGuid,assetId:t.assetId,nodeIndex:p,meshIndex:b,primitiveIndex:D.length>1?z:void 0}),label:J,sourceSurfaces:[Y]})}}for(let[p,g]of m){let b=g.sourceSurfaces.sort(to);c.push({slotId:u.bySourceMaterialIndex.get(p)??uc({assetGuid:t.assetGuid,assetId:t.assetId,sourceMaterialIndex:p}),label:g.label,sourceSurfaces:b,...g.materialName?{materialName:g.materialName,materialNames:[g.materialName]}:{},...oc(o,[p])})}return c.sort(nc)}function nc(e,t){let r=Array.isArray(e.sourceSurfaces)?e.sourceSurfaces[0]:void 0,n=Array.isArray(t.sourceSurfaces)?t.sourceSurfaces[0]:void 0;return to(r,n)}function to(e,t){let r=String(e?.ownerNodePath??"").localeCompare(String(t?.ownerNodePath??""));if(r!==0)return r;let n=Number.isInteger(e?.nodeIndex)?e.nodeIndex:-1,i=Number.isInteger(t?.nodeIndex)?t.nodeIndex:-1;if(n!==i)return n-i;let o=Number.isInteger(e?.meshIndex)?e.meshIndex:-1,a=Number.isInteger(t?.meshIndex)?t.meshIndex:-1;if(o!==a)return o-a;let s=Number.isInteger(e?.primitiveIndex)?e.primitiveIndex:-1,l=Number.isInteger(t?.primitiveIndex)?t.primitiveIndex:-1;return s-l}function ic(e,t={}){let r=Array.isArray(e?.materials)?e.materials:[],n=[];for(let i=0;i<r.length;i+=1){let o=ac(e,i,t);o&&n.push(o)}return n}function oc(e,t){if(!t.length||!e.length)return{};let r=new Map(e.map(i=>[i.sourceMaterialIndex,i])),n=t.map(i=>r.get(i)).filter(Boolean);return n.length>0?{sourceMaterialProfiles:n}:{}}function ac(e,t,r={}){let n=Array.isArray(e?.materials)?e.materials[t]:null;if(!n||typeof n!="object")return null;let i={},o=[],a=n.pbrMetallicRoughness&&typeof n.pbrMetallicRoughness=="object"?n.pbrMetallicRoughness:{},s={},l=Array.isArray(a.baseColorFactor)?a.baseColorFactor:null,d=Xi(l);d&&(s.color=d);let u=bt(e,a.baseColorTexture,r,"baseColor.texture",s,"texture",o);Object.keys(s).length>0&&(i.baseColor={...s,brightness:1,saturation:1,contrast:1,hue:0});let c={};bt(e,n.normalTexture,r,"normal.texture",c,"texture",o),Number.isFinite(n.normalTexture?.scale)?c.strength=n.normalTexture.scale:c.texture&&(c.strength=1),Object.keys(c).length>0&&(i.normal=c),i.metallic=Number.isFinite(a.metallicFactor)?a.metallicFactor:1,i.roughness=Number.isFinite(a.roughnessFactor)?a.roughnessFactor:1;let m={};bt(e,a.metallicRoughnessTexture,r,"metallicRoughness.texture",m,"texture",o),Object.keys(m).length>0&&(i.metallicRoughness=m);let p={};bt(e,n.occlusionTexture,r,"occlusion.texture",p,"texture",o),Number.isFinite(n.occlusionTexture?.strength)?p.strength=n.occlusionTexture.strength:p.texture&&(p.strength=1),Object.keys(p).length>0&&(i.occlusion=p);let g={},b=Xi(Array.isArray(n.emissiveFactor)?n.emissiveFactor:null),S=b&&(b.r!==0||b.g!==0||b.b!==0);S&&(g.color=b),bt(e,n.emissiveTexture,r,"emission.texture",g,"texture",o),S&&(g.intensity=1),Object.keys(g).length>0&&(i.emission=g);let x={},D=ro(n.alphaMode);if(D&&(x.mode=D),(D==="mask"||D==="blend")&&(l&&Number.isFinite(l[3])&&l[3]!==1&&(x.opacity=l[3]),Number.isFinite(n.alphaCutoff)?x.cutoff=n.alphaCutoff:D==="mask"&&(x.cutoff=.5),u.texture&&(x.texture=structuredClone(u.texture)),u.hint&&o.push({...u.hint,profilePath:"alpha.texture"})),Object.keys(x).length>0&&(i.alpha=x),Object.keys(i).length===0&&o.length===0)return null;let w=typeof n.name=="string"&&n.name.trim()?n.name.trim():"";return{sourceMaterialIndex:t,...w?{materialName:w}:{},...Object.keys(i).length>0?{profile:i}:{},...o.length>0?{textureHints:o}:{}}}function Xi(e){if(!Array.isArray(e)||e.length<3)return null;let[t,r,n]=e;return Number.isFinite(t)&&Number.isFinite(r)&&Number.isFinite(n)?{r:t,g:r,b:n}:null}function ro(e){return e==="MASK"?"mask":e==="BLEND"?"blend":e==="OPAQUE"?"opaque":null}function bt(e,t,r,n,i,o,a){let s=sc(e,t,r,n);return s.texture&&(i[o]=s.texture),s.hint&&a.push(s.hint),s}function sc(e,t,r,n){let i=F(t)?t:{},o=Number.isInteger(i.index)?i.index:-1;if(o<0)return{};let a=Array.isArray(e?.textures)?e.textures:[],s=Array.isArray(e?.images)?e.images:[],l=a[o],d=dc(l),u=d.imageIndex,c=u>=0?s[u]:null,m=typeof c?.uri=="string"?c.uri.trim():"",p=/^data:/i.test(m),g={profilePath:n,textureIndex:o,...u>=0?{imageIndex:u}:{},...d.previewImageIndex>=0?{previewImageIndex:d.previewImageIndex}:{},...m&&!p?{uri:m}:{},...Number.isInteger(c?.bufferView)?{bufferView:c.bufferView}:{},...typeof c?.mimeType=="string"&&c.mimeType.trim()?{mimeType:c.mimeType.trim()}:{}};if(c?.bufferView!=null)return{hint:{...g,reason:"embedded-texture"}};if(!m)return{hint:{...g,reason:"missing-image-uri"}};if(p)return{hint:{...g,reason:"embedded-texture"}};if(/^https?:\/\//i.test(m)||m.startsWith("/"))return{texture:{url:m}};let b=m;try{b=decodeURIComponent(m)}catch{return{hint:{...g,reason:"unresolved-external-texture"}}}let S=W.dirname(String(r.sourcePath??"")),x=W.resolve(S,b),D=r.assetsDir?W.resolve(r.assetsDir):"",w=r.cwd?W.resolve(r.cwd):"",M=D?W.relative(D,x):"../";return D&&w&&M&&!M.startsWith("..")&&!W.isAbsolute(M)?{texture:{url:`/${W.relative(w,x).split(W.sep).join("/")}`},hint:{...g,reason:"external-texture"}}:{hint:{...g,reason:"external-texture"}}}function dc(e){let t=F(e)?e:{},r=F(t.extensions)?t.extensions:{},n=Number.isInteger(t.source)?t.source:-1,i=F(r.KHR_texture_basisu)?r.KHR_texture_basisu:{};if(Number.isInteger(i.source))return{imageIndex:i.source,previewImageIndex:n>=0&&n!==i.source?n:-1};let o=F(r.EXT_texture_webp)?r.EXT_texture_webp:{};return Number.isInteger(o.source)?{imageIndex:o.source,previewImageIndex:-1}:{imageIndex:n,previewImageIndex:-1}}function lc(e){let t=new Map,r=new Map;if(!Array.isArray(e))return{byExactSource:t,bySourceMaterialIndex:new Map};for(let i of e){if(!F(i))continue;let o=Array.isArray(i.sourceSurfaces)?i.sourceSurfaces:[],a=typeof i.slotId=="string"?i.slotId.trim():"";if(!a)continue;let s=new Set;for(let l of o){if(!F(l))continue;let d=typeof l.ownerNodePath=="string"?l.ownerNodePath.trim().replace(/^\/+|\/+$/g,""):"",u=Number.isInteger(l.nodeIndex)?l.nodeIndex:-1,c=Number.isInteger(l.meshIndex)?l.meshIndex:-1,m=Number.isInteger(l.primitiveIndex)?l.primitiveIndex:-1;o.length===1&&d&&u>=0&&c>=0&&m>=0&&t.set(no({ownerNodePath:d,nodeIndex:u,meshIndex:c,primitiveIndex:m}),a),Number.isInteger(l.sourceMaterialIndex)&&l.sourceMaterialIndex>=0&&s.add(l.sourceMaterialIndex)}if(s.size===1){let[l]=s,d=r.get(l)??[];d.push(a),r.set(l,d)}}let n=new Map;for(let[i,o]of r)o.length===1&&n.set(i,o[0]);return{byExactSource:t,bySourceMaterialIndex:n}}function no(e){return[e.ownerNodePath,e.nodeIndex,e.meshIndex,e.primitiveIndex].join("\0")}function cc(e){let t=Number.isInteger(e.primitiveIndex)?`:${e.primitiveIndex}`:"",r=`${e.assetGuid||e.assetId||"asset"}:${e.nodeIndex}:${e.meshIndex}${t}`;return`slot_${mo(r)}`}function uc(e){let t=`${e.assetGuid||e.assetId||"asset"}:material:${e.sourceMaterialIndex}`;return`slot_${mo(t)}`}function fc(e,t){if(t.textureUsage==="material"||t.usage==="material")return{usage:"material",materialTexture:!0,environmentTexture:!1};if(F(t.capabilities)&&t.capabilities.materialTexture===!0)return{usage:"material",materialTexture:!0,environmentTexture:!1};if(t.textureUsage==="environment"||t.usage==="environment")return{usage:"environment",materialTexture:!1,environmentTexture:!0};if(F(t.capabilities)&&t.capabilities.environmentTexture===!0)return{usage:"environment",materialTexture:!1,environmentTexture:!0};let r=W.extname(e).toLowerCase();return[".env",".hdr",".dds",".ktx",".ktx2"].includes(r)?{usage:"environment",materialTexture:!1,environmentTexture:!0}:[".png",".jpg",".jpeg",".webp"].includes(r)?{usage:"material",materialTexture:!0,environmentTexture:!1}:null}function io(e){let t=Array.isArray(e.scenes)?e.scenes:[],r=Number.isInteger(e.scene)?e.scene:0,n=t[r]??t[0];return Array.isArray(n?.nodes)?n.nodes.filter(Number.isInteger):[]}function oo(e){let t=new Map;for(let r=0;r<e.length;r+=1){let n=Array.isArray(e[r]?.children)?e[r].children:[];for(let i of n)Number.isInteger(i)&&!t.has(i)&&t.set(i,r)}return t}function ao(e,t,r,n){let i=[],o=n,a=new Set;for(;Number.isInteger(o)&&o>=0&&o<e.length;){if(a.has(o))return"";a.add(o),i.push(mc(e[o],o));let s=t.get(o);if(typeof s!="number"||!Number.isInteger(s))break;o=s}return i.reverse(),i.length>1&&r.has(o)&&i.shift(),i.filter(Boolean).join("/")}function mc(e,t){return(F(e)&&typeof e.name=="string"?e.name.trim():"")||`node_${t}`}function gc(e,t,r){let n=F(e)&&typeof e.name=="string"?e.name.trim():"",i=so(t);return n||i||r.split("/").filter(Boolean).pop()||r}function so(e){return F(e)&&typeof e.name=="string"?e.name.trim():""}function lo(e,t){let r=[],n=t,i=new Set;for(;Number.isInteger(n)&&n>=0;){if(i.has(n))return[];i.add(n),r.push(n);let o=e.get(n);if(!Number.isInteger(o))break;n=o}return r.reverse(),r}function pc(e,t){let r=F(e)?e:{},n=Number.isInteger(r.material)?r.material:-1,i=n>=0?t[n]:null,o=typeof i?.name=="string"&&i.name.trim()?i.name.trim():"";return{index:n,name:o}}function co(e,t){let r=F(e)?e:{},n=Number.isInteger(r.indices)?r.indices:-1,i=fo(r),o=n>=0?t[n]:null,a=i>=0?t[i]:null,s=Number.isFinite(o?.count)?Number(o.count):Number.isFinite(a?.count)?Number(a.count):null;if(s==null)return null;let l=Number.isInteger(r.mode)?r.mode:4;return l===4?Math.floor(s/3):l===5||l===6?Math.max(0,s-2):0}function uo(e,t){let r=F(e)?e:{},n=fo(r),i=n>=0?t[n]:null,o=Zi(i?.min),a=Zi(i?.max);return o&&a?{min:o,max:a}:null}function fo(e){let t=F(e.attributes)?e.attributes:{};return Number.isInteger(t.POSITION)?t.POSITION:-1}function Zi(e){if(!Array.isArray(e)||e.length<3)return null;let t=Number(e[0]),r=Number(e[1]),n=Number(e[2]);return Number.isFinite(t)&&Number.isFinite(r)&&Number.isFinite(n)?[t,r,n]:null}function F(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function mo(e){let t=String(e??""),r=2166136261;for(let n=0;n<t.length;n+=1)r^=t.charCodeAt(n),r=Math.imul(r,16777619);return(r>>>0).toString(16).padStart(8,"0")}import yt from"node:fs/promises";import re from"node:path";async function po(e,t={}){try{let r=await bc(e);if(!r)return[];let n=Array.isArray(r.gltf.images)?r.gltf.images:[],i=t.imageIndexes?new Set(t.imageIndexes.filter(a=>Number.isInteger(a)&&a>=0)):null,o=[];for(let a=0;a<n.length;a+=1){if(i&&!i.has(a))continue;let s=q(n[a]);if(!s)continue;let l=await yc(e,r,s);if(!l)continue;let d=ht(s.name)??(l.originalFileName?re.parse(l.originalFileName).name:null)??void 0;o.push({imageIndex:a,bytes:l.bytes,extension:l.extension,mimeType:l.mimeType,...d?{displayName:d}:{},...l.originalFileName?{originalFileName:l.originalFileName}:{}})}return o}catch{return[]}}function bo(e){let t=new Set;for(let r of ho(e)){let n=be(r.imageIndex),i=be(r.previewImageIndex);n!=null&&t.add(n),i!=null&&t.add(i)}return[...t].sort((r,n)=>r-n)}function yo(e){let t=new Map;for(let r of ho(e)){let n=be(r.imageIndex),i=be(r.previewImageIndex);n==null||i==null||n===i||t.set(`${n}:${i}`,{imageIndex:n,previewImageIndex:i})}return[...t.values()].sort((r,n)=>r.imageIndex-n.imageIndex||r.previewImageIndex-n.previewImageIndex)}function ho(e){if(!e)return[];let t=[],r=Array.isArray(e.materialSlots)?e.materialSlots:[];for(let n of r){let i=q(n),o=Array.isArray(i?.sourceMaterialProfiles)?i.sourceMaterialProfiles:[];for(let a of o){let s=q(a),l=Array.isArray(s?.textureHints)?s.textureHints:[];for(let d of l){let u=q(d);u&&t.push(u)}}}return t}function So(e,t){if(!e||t.length===0)return e;let r=new Map(t.map(a=>[a.imageIndex,a.textureAssetId])),n=structuredClone(e),i=Array.isArray(n.materialSlots)?n.materialSlots:[],o=!1;for(let a of i){let s=q(a),l=Array.isArray(s?.sourceMaterialProfiles)?s.sourceMaterialProfiles:[];for(let d of l){let u=q(d);if(!u)continue;let c=Array.isArray(u.textureHints)?u.textureHints:[];if(c.length===0)continue;let m=[];for(let p of c){let g=q(p),b=be(g?.imageIndex),S=ht(g?.profilePath),x=b==null?null:r.get(b)??null;if(!x||!S||!Sc(S)){m.push(p);continue}let D=q(u.profile)??{};Ec(D,S,{textureAssetId:x}),u.profile=D,o=!0}m.length>0?u.textureHints=m:delete u.textureHints}}return o?n:e}async function bc(e){let t=re.extname(e).toLowerCase();if(t===".gltf"){let l=JSON.parse(await yt.readFile(e,"utf8")),d=await Promise.all((Array.isArray(l.buffers)?l.buffers:[]).map(u=>go(e,q(u))));return{gltf:l,buffers:d}}if(t!==".glb")return null;let r=await yt.readFile(e);if(r.length<20||r.toString("utf8",0,4)!=="glTF"||r.readUInt32LE(4)!==2||r.readUInt32LE(8)>r.length)return null;let n=null,i=[],o=12;for(;o+8<=r.length;){let l=r.readUInt32LE(o),d=r.readUInt32LE(o+4);if(o+=8,o+l>r.length)return null;let u=r.subarray(o,o+l);d===1313821514?n=JSON.parse(u.toString("utf8").replace(/\0+$/g,"")):d===5130562&&i.push(Buffer.from(u)),o+=l}if(!n)return null;let a=Array.isArray(n.buffers)?n.buffers:[],s=await Promise.all(a.map(async(l,d)=>{let u=q(l);return ht(u?.uri)?go(e,u):i[d]??(d===0?i[0]??null:null)}));return s.length===0&&i.length>0&&s.push(i[0]),{gltf:n,buffers:s}}async function go(e,t){let r=ht(t?.uri);if(!r)return null;let n=Po(r);if(n)return n.bytes;if(Xr(r))return null;let i=xo(r);return i?Eo(e,i):null}async function yc(e,t,r){let n=ht(r.uri);if(n){let p=Po(n);if(p){let D=Yr(p.bytes);return D?{bytes:p.bytes,...D}:null}if(Xr(n))return null;let g=xo(n);if(!g)return null;let b=await Eo(e,g);if(!b)return null;let S=re.basename(g),x=Yr(b);return x?{bytes:b,...x,originalFileName:S}:null}let i=be(r.bufferView);if(i==null)return null;let o=Array.isArray(t.gltf.bufferViews)?t.gltf.bufferViews:[],a=q(o[i]),s=be(a?.buffer)??0,l=t.buffers[s],d=be(a?.byteOffset)??0,u=be(a?.byteLength);if(!l||u==null||d+u>l.length)return null;let c=Buffer.from(l.subarray(d,d+u)),m=Yr(c);return m?{bytes:c,...m}:null}async function Eo(e,t){if(re.isAbsolute(t)||re.win32.isAbsolute(t)||t.includes("\0"))return null;try{let r=await yt.realpath(re.dirname(e)),n=re.resolve(r,t),i=await yt.realpath(n);return hc(r,i)?await yt.readFile(i):null}catch{return null}}function xo(e){if(Xr(e))return null;try{return decodeURIComponent(e)}catch{return null}}function hc(e,t){let r=re.relative(e,t);return r===""||!r.startsWith(`..${re.sep}`)&&r!==".."&&!re.isAbsolute(r)}function Po(e){let t=/^data:([^;,]+)?(?:;[^,]*)?,(.*)$/is.exec(e);if(!t)return null;let r=e.slice(0,e.indexOf(","));try{return{bytes:r.toLowerCase().includes(";base64")?Buffer.from(t[2]??"","base64"):Buffer.from(decodeURIComponent(t[2]??""),"utf8")}}catch{return null}}function Yr(e){return e.length>=8&&e.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10]))?{extension:".png",mimeType:"image/png"}:e.length>=3&&e[0]===255&&e[1]===216&&e[2]===255?{extension:".jpg",mimeType:"image/jpeg"}:e.length>=12&&e.toString("ascii",0,4)==="RIFF"&&e.toString("ascii",8,12)==="WEBP"?{extension:".webp",mimeType:"image/webp"}:e.length>=12&&e.subarray(0,12).equals(Buffer.from([171,75,84,88,32,50,48,187,13,10,26,10]))?{extension:".ktx2",mimeType:"image/ktx2"}:null}function Sc(e){return["baseColor.texture","normal.texture","metallicRoughness.texture","occlusion.texture","emission.texture","emission.maskTexture","alpha.texture"].includes(e)}function Ec(e,t,r){let n=t.split("."),i=e;for(let o=0;o<n.length-1;o+=1){let a=n[o],s=q(i[a])??{};i[a]=s,i=s}i[n[n.length-1]]=r}function Xr(e){return/^[a-z][a-z0-9+.-]*:/i.test(e)||e.startsWith("/")||re.win32.isAbsolute(e)}function q(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function ht(e){return typeof e=="string"&&e.trim()?e.trim():null}function be(e){return Number.isInteger(e)&&e>=0?e:null}function Qr(e){if(typeof e=="number"&&Number.isFinite(e)&&e>0)return e;if(!e||typeof e!="object")return;let t=e,r=Zr(t.x),n=Zr(t.y),i=Zr(t.z);if(!(r==null||n==null||i==null||r<=0||n<=0||i<=0))return{x:r,y:n,z:i}}function Zr(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function en(e){return e==="shared"||e==="instance"?e:void 0}function tn(e){return Number.isInteger(e)&&e>=0?e:void 0}var C=class extends Error{constructor(t,r={}){super(t),this.name="PlayableEditorAssetRegistryError",this.details=r}};function xc(e){let t={};for(let r=0;r<e.length;r+=1){let n=e[r];if(n==="--unregister"){t.unregister=!0;continue}if(n==="--payload"){t.payload=e[r+1],r+=1;continue}if(n==="--asset-id"){t.assetId=e[r+1],r+=1;continue}if(n==="--guid"){t.guid=e[r+1],r+=1;continue}if(n==="--delete-file"){t.deleteFile=!0;continue}if(n==="--keep-file"){t.deleteFile=!1;continue}if(n==="--force"){t.force=!0;continue}(n==="--help"||n==="-h")&&(t.help=!0)}return t}async function To(e,t=process.argv.slice(2)){let r=xc(t),n=await wc(e),i=le(n.errorCodes),o=(a,s={})=>{let l={ok:!1,error:a,...s};process.stderr.write(`${JSON.stringify(l,null,2)}
9
+ `),process.exit(1)};try{if(r.help){process.stdout.write(["Usage:",` ${e.commands?.register??"npm run asset:register"} -- --payload /path/to/payload.json`,` ${e.commands?.unregister??"npm run asset:unregister"} -- --payload /path/to/payload.json`,` ${e.commands?.unregister??"npm run asset:unregister"} -- --asset-id asset_xxx [--keep-file] [--force]`,` ${e.commands?.unregister??"npm run asset:unregister"} -- --guid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx [--keep-file] [--force]`,""].join(`
10
+ `));return}if(r.unregister){let s=await Ac(e,r,i);process.stdout.write(`${JSON.stringify(s)}
11
+ `);return}let a=await Yt(e,r,i);process.stdout.write(`${JSON.stringify(a)}
12
+ `)}catch(a){a instanceof C&&o(a.message,a.details),o("asset_register_failed",{message:a instanceof Error?a.message:String(a)})}}async function Yt(e,t,r={}){if(!t.payload&&!t.payloadData)throw new C("missing_payload_arg");let n=await Co(e,t),i=e.codeKeyPolicy??"legacy";if(i==="disabled"&&Object.prototype.hasOwnProperty.call(n,"codeKey"))throw new C("payload_code_key_disabled",{codeKeyPolicy:i,codeKey:n.codeKey});let o=R.resolve(e.cwd,String(n.sourcePath??n.assetPath??"")),a=Tc(e,o);if(!a)throw new C(e.unsupportedSourceErrorCode??r.sourceMustBeSupportedAsset??"source_must_be_supported_asset",{sourcePath:o,supportedExtensions:Mo(e)});try{await N.access(o)}catch{throw new C(r.sourceFileNotFound??"source_file_not_found",{sourcePath:o})}let s=vc(n);await N.mkdir(e.generatedDir,{recursive:!0});let l=await Oe(e),d=await dn(o),u=Wr(n.kind??n.assetKind??n.assetType,o);if(!u)throw new C("unsupported_asset_kind",{sourcePath:o,assetType:n.assetType});on(u,o,"source_path");let c=$c(l,n,s,o,d,u,e),m=$(n.assetName)??c?.originalFileName??R.basename(o),p=$(n.guid);if(c&&p&&c.guid!==p)throw new C("payload_guid_must_match_existing_asset",{guid:p,existingGuid:c.guid,existingAssetId:c.assetId});let g=c?.guid??p??nn.randomUUID(),b=$(n.projectAssetId),S=Kr(u,g);if(c?.assetId&&c.assetId!==S)throw new C("manifest_asset_id_must_match_guid",{guid:g,assetId:c.assetId,expectedAssetId:S});if(b&&b!==S)throw new C("project_asset_id_must_match_guid",{guid:g,projectAssetId:b,expectedAssetId:S});let x=`${S}${a}`,D=Dc(e,{existing:c,sourcePath:o,kind:u,targetFileName:x}),w=Ke(e,D,u,"target_path"),M=new Date().toISOString(),O=Hi($(n.displayName)??c?.displayName,m),z=Jt({...Jt(c?.external)??{},...s??{}}),Pe=!1,f=[],v=null;try{await N.mkdir(R.dirname(w),{recursive:!0});let y=kc(o,w),G=y||await Oo(w),J=!c||c.contentHash!==d.contentHash||!G;!y&&J&&(await N.copyFile(o,w),Pe=!c);let j=await Ro(e,{existing:c,payload:n,sourcePath:o,targetPath:w,kind:u,guid:g,assetId:S});if(u==="model"){let We=await Pc({config:e,manifest:l,metadata:j,sourcePath:o,sourceAssetId:S,sourceAssetGuid:g,sourceDisplayName:O,now:M});f=We.createdPaths,j=So(j,We.references)}let $e=an({...c??{},guid:g,assetId:S,kind:u,displayName:O,relativePath:D,originalFileName:m,...i==="legacy"?{codeKey:Wi($(n.codeKey)??$(n.assetName)??c?.codeKey,m)}:{},...$(n.category)?{category:$(n.category)}:{},placeable:u==="texture"?!0:typeof n.placeable=="boolean"?n.placeable:c?.placeable??u==="model",...tn(n.warmupCount)!=null?{warmupCount:tn(n.warmupCount)}:{},...typeof n.singleton=="boolean"?{singleton:n.singleton}:{},...en(n.materialMode)?{materialMode:en(n.materialMode)}:{},...Qr(n.scale)?{defaults:{transform:{scale:Qr(n.scale)}}}:{},contentHash:d.contentHash,byteSize:d.byteSize,external:z,metadata:j,createdAt:c?.createdAt??M,updatedAt:J?M:c?.updatedAt??M});if(!$e)throw new C("invalid_manifest_entry",{assetId:S,guid:g});v=$e;let Ie=l.findIndex(We=>We.guid===g||We.assetId===S);Ie>=0?l[Ie]=$e:l.push($e),l.sort(jc),await $o(e,l)}catch(y){Pe&&await N.rm(w,{force:!0}).catch(()=>{});for(let G of f)await N.rm(G,{force:!0}).catch(()=>{});throw y}return{ok:!0,guid:g,assetId:S,kind:u,...v?.contentHash?{contentHash:v.contentHash}:{},...v?.external?{external:v.external}:{},displayName:v?.displayName,originalFileName:v?.originalFileName,assetUrl:Nc(e,D,u),targetPath:w,manifestPath:e.manifestPath,registryPath:e.registryPath}}async function Pc(e){let t=bo(e.metadata),r=yo(e.metadata),n=await po(e.sourcePath,{imageIndexes:t}),i=[],o=new Map,a=[];try{for(let d of n){let u=No(d.bytes),c=e.manifest.find(O=>O.kind==="texture"&&O.contentHash===u.contentHash&&le(le(O.metadata).capabilities).materialTexture!==!1&&le(O.metadata).textureUsage!=="environment");if(c){o.set(d.imageIndex,c),i.push({imageIndex:d.imageIndex,textureAssetId:c.assetId});continue}let m=Fc(u.contentHash),p=Kr("texture",m),g=e.manifest.find(O=>O.guid===m||O.assetId===p);if(g)throw new C("derived_texture_identity_conflict",{sourceAssetId:e.sourceAssetId,imageIndex:d.imageIndex,assetId:p,contentHash:u.contentHash,conflictingAssetId:g.assetId,conflictingContentHash:g.contentHash});let b=`${p}${d.extension}`,S=ko(e.config,"texture",b),x=Ke(e.config,S,"texture","derived_texture_target_path");if(await N.mkdir(R.dirname(x),{recursive:!0}),await Oo(x)){let O=await dn(x);if(O.contentHash!==u.contentHash)throw new C("derived_texture_target_conflict",{sourceAssetId:e.sourceAssetId,imageIndex:d.imageIndex,assetId:p,targetPath:x,contentHash:u.contentHash,existingContentHash:O.contentHash})}else await Lc(x,d.bytes),a.push(x);let D=d.displayName?`${e.sourceDisplayName} / ${d.displayName}`:`${e.sourceDisplayName} Texture ${d.imageIndex+1}`,w=await Ro(e.config,{existing:null,payload:{metadata:{textureUsage:"material",capabilities:{materialTexture:!0,environmentTexture:!1},derivedFrom:{kind:"gltf-image",sourceAssetId:e.sourceAssetId,sourceAssetGuid:e.sourceAssetGuid,imageIndex:d.imageIndex,mimeType:d.mimeType}}},sourcePath:x,targetPath:x,kind:"texture",guid:m,assetId:p}),M=an({guid:m,assetId:p,kind:"texture",displayName:D,relativePath:S,originalFileName:d.originalFileName??`${Uc(D)}${d.extension}`,category:"Texture",placeable:!0,contentHash:u.contentHash,byteSize:u.byteSize,metadata:w,createdAt:e.now,updatedAt:e.now});if(!M)throw new C("invalid_derived_texture_manifest_entry",{sourceAssetId:e.sourceAssetId,imageIndex:d.imageIndex,assetId:p});e.manifest.push(M),o.set(d.imageIndex,M),i.push({imageIndex:d.imageIndex,textureAssetId:p})}let s=new Map,l=new Map;for(let d of o.values())R.extname(d.relativePath).toLowerCase()===".ktx2"&&s.set(d.assetId,d);for(let d of r){let u=o.get(d.imageIndex),c=o.get(d.previewImageIndex);!u||!c||R.extname(u.relativePath).toLowerCase()!==".ktx2"||l.set(u.assetId,c.assetId)}for(let d of s.values()){let u=le(d.metadata),c=Ic(u);delete c[e.sourceAssetId];let m=l.get(d.assetId);m&&(c[e.sourceAssetId]=m);let p=Object.fromEntries(Object.entries(c).sort(([S],[x])=>S.localeCompare(x))),g=Object.values(p)[0],b={...u};g?(b.previewTextureAssetId=g,b.previewTextureAssetIdsBySourceAssetId=p):(delete b.previewTextureAssetId,delete b.previewTextureAssetIdsBySourceAssetId),d.metadata=b}return{references:i,createdPaths:a}}catch(s){for(let l of a)await N.rm(l,{force:!0}).catch(()=>{});throw s}}function Ic(e){let t={},r=le(e.previewTextureAssetIdsBySourceAssetId);for(let[o,a]of Object.entries(r)){let s=$(o),l=$(a);s&&l&&(t[s]=l)}if(Object.keys(t).length>0)return t;let n=$(e.previewTextureAssetId),i=$(le(e.derivedFrom).sourceAssetId);return n&&i&&(t[i]=n),t}async function Do(e,t={}){let r=await Oe(e),n=[];for(let i of r){let o=Ke(e,i.relativePath,i.kind,"refresh_source_path"),a;try{a=await dn(o)}catch(u){throw Zt(u)&&u.code==="ENOENT"?new C(t.sourceFileNotFound??"source_file_not_found",{assetId:i.assetId,guid:i.guid,sourcePath:o}):u}let s=i.kind==="model"&&le(i.metadata).assetMetadataVersion!==Jr,l=i.kind==="texture"&&i.placeable===!1;if(i.contentHash===a.contentHash&&i.byteSize===a.byteSize&&!s&&!l)continue;let d=await Yt(e,{payloadData:{sourcePath:o,guid:i.guid,projectAssetId:i.assetId,kind:i.kind}},t);if(!d.contentHash)throw new C("asset_refresh_missing_content_hash",{assetId:i.assetId,guid:i.guid,sourcePath:o});n.push({guid:i.guid,assetId:i.assetId,kind:i.kind,...i.contentHash?{previousContentHash:i.contentHash}:{},contentHash:d.contentHash})}return{ok:!0,scannedAssetCount:r.length,refreshedAssets:n}}async function Ac(e,t,r={}){let n=await Co(e,t),i=$(t.assetId??n?.assetId),o=$(t.guid??n?.guid);if(!i&&!o)throw new C(r.missingAssetId??"missing_asset_id");let a=Bc(t,n),s=Vc(t,n);await N.mkdir(e.generatedDir,{recursive:!0});let l=await Oe(e),d=l.findIndex(p=>i&&p.assetId===i||o&&p.guid===o);if(d<0)throw new C(r.manifestEntryNotFound??"manifest_entry_not_found",{assetId:i,guid:o,manifestPath:e.manifestPath});let u=l[d];if(!u)throw new C("manifest_entry_not_found",{assetId:i,guid:o});await Kc(e,u.assetId,s,r),l.splice(d,1);let c=!1,m=null;return a&&(m=Ke(e,u.relativePath,u.kind,"unregister_target_path"),await N.rm(m,{force:!0}),c=!0),await $o(e,l),{ok:!0,guid:u.guid,assetId:u.assetId,kind:u.kind,removed:!0,deleteFile:a,force:s,deletedFile:c,targetPath:m,manifestPath:e.manifestPath,registryPath:e.registryPath}}async function Oe(e){let t=await Xt(e.manifestPath,[]);if(!Array.isArray(t))throw new C("manifest_invalid_root",{manifestPath:e.manifestPath});let r=t.map((a,s)=>{let l=an(a,!0);if(!l)throw new C("manifest_invalid_entry",{index:s,manifestPath:e.manifestPath});return l}),n=new Set,i=new Set,o=e.codeKeyPolicy??"legacy";for(let a of r){if(o==="disabled"&&a.codeKey)throw new C("manifest_code_key_disabled",{manifestPath:e.manifestPath,codeKeyPolicy:o,assetId:a.assetId,codeKey:a.codeKey});if(n.has(a.assetId))throw new C("manifest_duplicate_asset_id",{assetId:a.assetId});if(i.has(a.guid))throw new C("manifest_duplicate_guid",{guid:a.guid});n.add(a.assetId),i.add(a.guid)}return r}async function wc(e){return e.loadRules?e.loadRules():e.rulesPath?Xt(e.rulesPath,{}):{}}function Io(e){return(Array.isArray(e)?e:[e]).filter(r=>typeof r=="string"&&!!r.trim()).map(r=>{let n=r.trim().toLowerCase();return n.startsWith(".")?n:`.${n}`})}function Mo(e){let t=Io(e.supportedExtensions??e.supportedExtension);return t.length>0?t:Io(Vr)}function Tc(e,t){let r=t.toLowerCase();return Mo(e).find(n=>r.endsWith(n))??null}function Dc(e,t){return t.existing?.relativePath?t.existing.relativePath:Mc(e,t.sourcePath,t.kind)??ko(e,t.kind,t.targetFileName)}function ko(e,t,r){let n=e.relativeImportedPath;return n.length>=2?n(t,r):n({kind:t,fileName:r})}function Mc(e,t,r){let n=e.assetRootDir??e.assetsDir;if(!n)return null;let i=R.resolve(t);return!Ao(R.resolve(n),i)||Ao(R.resolve(e.generatedDir),i)?null:(on(r,i,"source_path"),R.relative(e.generatedDir,i).split(R.sep).join("/"))}function Ao(e,t){let r=R.relative(e,t);return r===""||!r.startsWith("..")&&!R.isAbsolute(r)}function kc(e,t){return R.relative(R.resolve(e),R.resolve(t))===""}function Cc(e,t,r){let n=R.relative(e,t);if(n.startsWith("..")||R.isAbsolute(n))throw new C(`${r}_outside_allowed_directory`,{parent:e,child:t})}function Rc(e,t,r){let n=R.relative(e,t);if(!n.startsWith("..")&&!R.isAbsolute(n))throw new C(`${r}_inside_forbidden_directory`,{parent:e,child:t})}function Ke(e,t,r,n){let i=R.resolve(e.generatedDir,t),o=R.resolve(e.assetRootDir??e.assetsDir??e.importedDir??e.generatedDir);return Cc(o,i,n),Rc(R.resolve(e.generatedDir),i,n),on(r,i,n),i}function Nc(e,t,r){let n=Ke(e,t,r,"asset_url_path");return typeof e.publicUrlForCatalogRelativePath=="function"?e.publicUrlForCatalogRelativePath(t):typeof e.publicUrlForRelativePath=="function"?e.publicUrlForRelativePath(t):`/${R.relative(e.cwd,n).split(R.sep).join("/")}`}function on(e,t,r){let n=R.extname(t).toLowerCase(),i=qi(e);if(!i.includes(n))throw new C(`${r}_unsupported_extension`,{kind:e,filePath:t,extension:n,supportedExtensions:i})}async function Xt(e,t){try{return JSON.parse(await N.readFile(e,"utf8"))}catch(r){if(Zt(r)&&r.code==="ENOENT")return t;throw r}}async function Co(e,t){if(t.payloadData)return structuredClone(t.payloadData);if(!t.payload)return{};let r=R.resolve(e.cwd,t.payload),n=await Xt(r,null);if(!n||typeof n!="object"||Array.isArray(n))throw new C("invalid_payload_json",{payloadPath:r});return n}function an(e,t=!1){if(!e||typeof e!="object"||Array.isArray(e))return null;let r=e,n=t?sn:$,i=n(r.guid),o=n(r.assetId),a=n(r.kind);if(t&&(!a||"assetKind"in r||"assetType"in r))return null;let s=t?Bi.includes(a)?a:null:Wr(r.kind??r.assetKind??r.assetType,r.relativePath),l=n(r.displayName),d=n(r.relativePath);if(!i||!o||!s||!l||!d||t&&(!Ne(r,"originalFileName")||!Ne(r,"codeKey")||!Ne(r,"category")||!Ne(r,"materialMode")||!Ne(r,"contentHash")||!Ne(r,"createdAt")||!Ne(r,"updatedAt")||"placeable"in r&&typeof r.placeable!="boolean"||"warmupCount"in r&&(!Number.isInteger(r.warmupCount)||r.warmupCount<0)||"singleton"in r&&typeof r.singleton!="boolean"||"defaults"in r&&xe(r.defaults)==null||"byteSize"in r&&(!Number.isFinite(r.byteSize)||r.byteSize<0)||"metadata"in r&&xe(r.metadata)==null||"external"in r&&!Oc(r.external)))return null;let u=xe(r.metadata),c=n(r.originalFileName),m=n(r.codeKey),p=n(r.category),g=n(r.materialMode),b=xe(r.defaults),S=n(r.contentHash),x=Jt(r.external),D=n(r.createdAt),w=n(r.updatedAt);return{guid:i,assetId:o,kind:s,displayName:l,relativePath:d,...c?{originalFileName:c}:{},...m?{codeKey:m}:{},...p?{category:p}:{},...typeof r.placeable=="boolean"?{placeable:r.placeable}:{},...typeof r.warmupCount=="number"?{warmupCount:r.warmupCount}:{},...typeof r.singleton=="boolean"?{singleton:r.singleton}:{},...g?{materialMode:g}:{},...b?{defaults:b}:{},...S?{contentHash:S}:{},...typeof r.byteSize=="number"?{byteSize:r.byteSize}:{},...x?{external:x}:{},...u?{metadata:u}:{},...D?{createdAt:D}:{},...w?{updatedAt:w}:{}}}function sn(e){return typeof e=="string"&&e.length>0&&e===e.trim()?e:null}function Ne(e,t){return!(t in e)||sn(e[t])!=null}function Oc(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e,r=["platformAssetId","assetPath","assetUrl"],n=Object.keys(t);return n.length>0&&n.every(i=>r.includes(i)&&sn(t[i])!=null)}function Jt(e,t=!1){if(!e||typeof e!="object"||Array.isArray(e))return null;let r=e,n=$(r.platformAssetId),i;try{if(i=Ji(r.assetPath),t&&Object.prototype.hasOwnProperty.call(r,"assetPath")&&!i)throw new Error("external_asset_path_must_be_portable")}catch{if(t)throw new C("external_asset_path_must_be_portable",{assetPath:$(r.assetPath)})}let o=$(r.assetUrl);return!n&&!i&&!o?null:{...n?{platformAssetId:n}:{},...i?{assetPath:i}:{},...o?{assetUrl:o}:{}}}function xe(e){return!e||typeof e!="object"||Array.isArray(e)?null:structuredClone(e)}async function Ro(e,t){let r=xe(t.payload?.metadata);if(typeof e.resolveAssetMetadata=="function"){let n=await e.resolveAssetMetadata({...t,existingMetadata:xe(t.existing?.metadata),payloadMetadata:r}),i=xe(n);return i||null}return qt({kind:t.kind,sourcePath:t.sourcePath,existingMetadata:xe(t.existing?.metadata),payloadMetadata:r,guid:t.guid,assetId:t.assetId,cwd:e.cwd,assetsDir:e.assetsDir})}function $c(e,t,r,n,i,o,a){let s=$(t.guid),l=$(t.projectAssetId);if(s){let c=e.find(m=>m.guid===s);if(c)return c}if(l){let c=e.find(m=>m.assetId===l);if(c)return c}if(r?.platformAssetId){let c=e.find(m=>m.kind===o&&Gc(m.external)===r.platformAssetId);if(c)return c}if(r?.assetPath){let c=e.find(m=>m.kind===o&&_c(m.external)===r.assetPath);if(c)return c}let d=R.resolve(n),u=e.find(c=>{if(c.kind!==o)return!1;try{return R.resolve(Ke(a,c.relativePath,c.kind,"manifest_asset_path"))===d}catch{return!1}});if(u)return u;if(i.contentHash){let c=e.find(m=>m.kind===o&&m.contentHash===i.contentHash);if(c)return c}return null}function vc(e){return Jt({...e.external&&typeof e.external=="object"&&!Array.isArray(e.external)?e.external:{},platformAssetId:e.external?.platformAssetId??e.platformAssetId??e.assetId,assetUrl:e.external?.assetUrl??e.assetUrl},!0)}function Gc(e){return $(le(e).platformAssetId)}function _c(e){return $(le(e).assetPath)}function jc(e,t){return e.kind.localeCompare(t.kind)||e.displayName.localeCompare(t.displayName)||e.assetId.localeCompare(t.assetId)}async function rn(e,t){try{if(await N.readFile(e,"utf8")===t)return!1}catch(n){if(!Zt(n)||n.code!=="ENOENT")throw n}let r=`${e}.tmp-${process.pid}-${Date.now()}`;try{return await N.writeFile(r,t),await N.rename(r,e),!0}catch(n){throw await N.rm(r,{force:!0}).catch(()=>{}),n}}async function Lc(e,t){let r=`${e}.tmp-${process.pid}-${Date.now()}`;try{await N.writeFile(r,t),await N.rename(r,e)}catch(n){throw await N.rm(r,{force:!0}).catch(()=>{}),n}}async function dn(e){let t=await N.readFile(e),r=await N.stat(e);return{...No(t),byteSize:r.size}}function No(e){return{contentHash:`sha256:${nn.createHash("sha256").update(e).digest("hex")}`,byteSize:e.byteLength}}function Fc(e){let t=nn.createHash("sha256").update(`material-texture\0${e}`).digest("hex");return`${t.slice(0,8)}-${t.slice(8,12)}-5${t.slice(13,16)}-8${t.slice(17,20)}-${t.slice(20,32)}`}function Uc(e){return e.trim().replace(/[^\p{L}\p{N}._-]+/gu,"_").replace(/^_+|_+$/g,"")||"Imported_Texture"}async function Oo(e){try{return await N.access(e),!0}catch{return!1}}async function $o(e,t){let r=Wt(t,{codeKeyPolicy:e.codeKeyPolicy??"legacy"});await N.mkdir(R.dirname(e.manifestPath),{recursive:!0}),await N.mkdir(R.dirname(e.registryPath),{recursive:!0});let n=await wo(e.manifestPath),i=await wo(e.registryPath);try{await rn(e.manifestPath,`${JSON.stringify(t,null,2)}
13
+ `),await rn(e.registryPath,r)}catch(o){let a=[];for(let[s,l]of[[e.manifestPath,n],[e.registryPath,i]])try{await zc(s,l)}catch(d){a.push(d)}if(a.length>0){let s=new Error("generated_registry_transaction_rollback_failed");throw s.cause=o,s.rollbackErrors=a,s}throw o}}async function wo(e){try{return(await N.lstat(e)).isFile()?{kind:"file",content:await N.readFile(e,"utf8")}:{kind:"other"}}catch(t){if(Zt(t)&&t.code==="ENOENT")return{kind:"missing"};throw t}}async function zc(e,t){if(t.kind!=="other"){if(t.kind==="missing"){await N.rm(e,{force:!0});return}await rn(e,t.content)}}function Bc(e,t){return typeof e.deleteFile=="boolean"?e.deleteFile:t&&typeof t.deleteFile=="boolean"?t.deleteFile:!0}function Vc(e,t){return!!(e.force||t?.force===!0)}async function Kc(e,t,r,n){if(r||!e.scenePath)return;let i=await Xt(e.scenePath,null),a=(Array.isArray(i?.scene?.nodes)?i.scene.nodes:[]).filter(s=>s?.kind==="instance"&&s?.instance?.assetId===t||s?.kind==="image"&&s?.image?.assetId===t).map(s=>s.id).filter(Boolean);if(a.length!==0)throw new C(n.assetStillReferenced??"asset_still_referenced",{assetId:t,scenePath:e.scenePath,nodeIds:a})}function $(e){return typeof e=="string"&&e.trim()?e.trim():null}function le(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function Zt(e){return e instanceof Error&&"code"in e}var Hc=[".glb",".gltf"],Wc=[".png",".jpg",".jpeg",".webp"],qc=[".env",".hdr",".dds",".ktx",".ktx2"],Jc=[...Wc,...qc],Yc=[".mp3",".wav",".ogg",".flac",".aac",".m4a"],vo=[...Hc,...Jc,...Yc];import Xc from"node:path";function Go(e){let t=[],r;for(let n=0;n<e.length;n+=1){let i=e[n];if(i!=="--project-root"&&!i.startsWith("--project-root=")){t.push(i);continue}if(r!==void 0)throw new Error("--project-root may only be provided once.");let o=i==="--project-root"?e[++n]:i.slice(15);if(o===void 0||!o.trim()||o.startsWith("--"))throw new Error("--project-root requires a non-empty path.");r=o}return{argv:t,projectRoot:Xc.resolve(process.cwd(),r??"."),explicit:r!==void 0}}var jo=Go(process.argv.slice(2)),un=jo.projectRoot,Qc=await eu(un),Lo=tu(Qc),Qt=ru(un,Lo),[er,He,..._o]=jo.argv;er==="asset"&&(He==="register"||He==="unregister")?await To(Qt,He==="unregister"?["--unregister",..._o]:_o):er==="asset"&&He==="refresh-metadata"?await nu(Qt):er==="asset"&&He==="regenerate-catalog"?await iu(Qt):er==="scene"&&He==="recompile"?await ou(un,Lo,Qt):(process.stderr.write(["Usage:"," fps-editor-project --project-root /path/to/project asset register --payload /path/to/payload.json"," fps-editor-project --project-root /path/to/project asset unregister --asset-id asset_xxx [--keep-file] [--force]"," fps-editor-project --project-root /path/to/project asset refresh-metadata"," fps-editor-project --project-root /path/to/project asset regenerate-catalog"," fps-editor-project --project-root /path/to/project scene recompile",""].join(`
14
+ `)),process.exitCode=1);async function eu(e){let t=V.join(e,"fps.config.ts"),r=await import(`${Zc(t).href}?fps-editor-project=${Date.now()}`),n=r.default??r.fpsConfig;if(!n||typeof n!="object"||n.schemaVersion!==1)throw new Error("fps.config.ts must default-export a valid defineFpsProject() definition.");return n}function tu(e){let t=e.authoring?.source,r=e.authoring?.assets;if(!t||!r)throw new Error("fps.config.ts is missing authoring source/assets.");return{source:{editorScene:t.document,runtimeScene:t.runtimeArtifact,rendering:t.rendering,shadows:t.shadows},assets:r}}function ru(e,t){let r=V.resolve(e,t.assets.importedDir),n=V.resolve(e,t.assets.generatedDir),i=V.dirname(r);return{cwd:e,codeKeyPolicy:"disabled",assetsDir:i,importedDir:r,generatedDir:n,manifestPath:V.join(n,"asset-catalog.manifest.json"),registryPath:V.join(n,"asset-catalog.generated.ts"),scenePath:V.resolve(e,t.source.runtimeScene),supportedExtensions:vo,commands:{register:"asset:register",unregister:"asset:unregister"},relativeImportedPath(o,a){let s=o==="sound"?"sounds":o==="model"?"":"textures";return V.relative(n,V.join(r,s,a)).split(V.sep).join("/")},resolveAssetMetadata(o){return qt({kind:o.kind,sourcePath:o.sourcePath,existingMetadata:o.existingMetadata,payloadMetadata:o.payloadMetadata,guid:o.guid,assetId:o.assetId,cwd:e,assetsDir:i})}}}async function nu(e){let t=await Oe(e),r=0;for(let n of t){if(!n.relativePath)continue;let i=V.resolve(e.generatedDir,n.relativePath);await Yt(e,{payloadData:{sourcePath:i,kind:n.kind,guid:n.guid,projectAssetId:n.assetId,assetName:n.originalFileName,displayName:n.displayName,category:n.category,placeable:n.placeable,warmupCount:n.warmupCount,singleton:n.singleton,materialMode:n.materialMode,metadata:n.metadata}}),r+=1}process.stdout.write(`Refreshed metadata for ${r} canonical asset entries.
15
+ `)}async function iu(e){let t=await Do(e),r=await Oe(e),n=Wt(r,{codeKeyPolicy:e.codeKeyPolicy,generatedBy:"fps-editor-project asset regenerate-catalog"});await cn.writeFile(e.registryPath,n),process.stdout.write(`Regenerated ${e.registryPath} from ${r.length} canonical asset entries after refreshing ${t.refreshedAssets.length} asset(s).
16
+ `)}async function ou(e,t,r){let n=V.resolve(e,t.source.editorScene),i=V.resolve(e,t.source.runtimeScene),o=t.source.shadows?V.resolve(e,t.source.shadows):null,[a,s,l,d]=await Promise.all([ln(n),ln(i),o?ln(o):null,Oe(r)]),u=mi(a,ci(d)),c=Ti(u,s,{...l?{shadowMapExperimentConfig:l}:{},readCustomTransformRuntimeData:m=>m?.transformType==="groundDecal"&&m.groundDecal?{groundDecal:zi(m.groundDecal)}:null});await cn.writeFile(i,`${JSON.stringify(c.sceneConfig,null,2)}
17
+ `),process.stdout.write(`Runtime scene recompiled from the authoritative Editor document.
18
+ `)}async function ln(e){return JSON.parse(await cn.readFile(e,"utf8"))}
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{once as p}from"node:events";import{readFile as a}from"node:fs/promises";import{spawn as d}from"node:child_process";import r from"node:path";var t=r.resolve(process.cwd()),l=r.join(t,".fps-editor/current.json"),s=JSON.parse(await a(l,"utf8").catch(e=>{throw new Error("Editor deployment is not prepared. Run npm run prepare:server first.",{cause:e})}));if(s.schemaVersion!==2||typeof s.serverEntry!="string")throw new Error("Editor deployment state is invalid. Run npm run prepare:server again.");var i=r.resolve(t,s.serverEntry),o=r.relative(t,i);if(!o||o===".."||o.startsWith(`..${r.sep}`)||r.isAbsolute(o))throw new Error("Prepared Editor server entry escapes the project root.");var c=d(process.execPath,[i],{cwd:t,env:process.env,stdio:"inherit"});for(let e of["SIGINT","SIGTERM"])process.once(e,()=>c.kill(e));var[f,n]=await p(c,"exit");n?process.kill(process.pid,n):process.exitCode=f??1;
2
+ import{once as u}from"node:events";import{readFile as w}from"node:fs/promises";import{spawn as v}from"node:child_process";import o from"node:path";import j from"node:path";function l(r){let d=[],t;for(let n=0;n<r.length;n+=1){let e=r[n];if(e!=="--project-root"&&!e.startsWith("--project-root=")){d.push(e);continue}if(t!==void 0)throw new Error("--project-root may only be provided once.");let s=e==="--project-root"?r[++n]:e.slice(15);if(s===void 0||!s.trim()||s.startsWith("--"))throw new Error("--project-root requires a non-empty path.");t=s}return{argv:d,projectRoot:j.resolve(process.cwd(),t??"."),explicit:t!==void 0}}var p=l(process.argv.slice(2));if(p.argv.length>0)throw new Error(`Unexpected argument: ${p.argv[0]}`);var c=p.projectRoot,E=o.join(c,".fps-editor/current.json"),a=JSON.parse(await w(E,"utf8").catch(r=>{throw new Error("Editor deployment is not prepared. Run fps-editor-prepare --project-root <project> first.",{cause:r})}));if(a.schemaVersion!==3||typeof a.serverEntry!="string")throw new Error("Editor deployment state is invalid. Run fps-editor-prepare --project-root <project> again.");var h=o.resolve(c,a.serverEntry),i=o.relative(c,h);if(!i||i===".."||i.startsWith(`..${o.sep}`)||o.isAbsolute(i))throw new Error("Prepared Editor server entry escapes the project root.");var m=v(process.execPath,[h],{cwd:c,env:process.env,stdio:"inherit"});for(let r of["SIGINT","SIGTERM"])process.once(r,()=>m.kill(r));var[g,f]=await u(m,"exit");f?process.kill(process.pid,f):process.exitCode=g??1;
@@ -1,6 +1,6 @@
1
1
  FPS Game Editor deployment npm package
2
- Version: 0.2.3-beta.4
3
- Commit: c0529ec1837b53a88ed1bc10be84676f44164608
2
+ Version: 0.2.3-beta.6
3
+ Commit: 1107b0ff693a1b286d85cb0388e513436063c934
4
4
 
5
5
  This package contains compiled third-party dependencies declared by the source repository.
6
6
  The authoritative dependency names, versions, notices, and license metadata are recorded in