@volter/game-editor 0.5.77 → 0.5.78

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 (299) hide show
  1. package/BUNDLED_NOTICES +22 -22
  2. package/catalog/entries/blender.json +2 -2
  3. package/catalog/entries/music.json +2 -2
  4. package/dist/.vite/manifest.json +2123 -2123
  5. package/dist/assets/{AssetBudgetPanel-Dwpm-iyO.js → AssetBudgetPanel-jnnJrNiB.js} +3 -3
  6. package/dist/assets/{AudioViewer-CN_WyuPP.js → AudioViewer-BKjWQwHF.js} +1 -1
  7. package/dist/assets/{CanvasBoardDocument--eRnJA3d.js → CanvasBoardDocument-BxaYC_Jz.js} +1 -1
  8. package/dist/assets/{CanvasSceneViewport-BwwYOosQ.js → CanvasSceneViewport-BI-EikMC.js} +1 -1
  9. package/dist/assets/{ColorInput-fP6gD8GQ.js → ColorInput-B-OejNng.js} +1 -1
  10. package/dist/assets/{EntityModelDocument--Mnf5gfu.js → EntityModelDocument-BoQBOjdw.js} +1 -1
  11. package/dist/assets/{EnvironmentAssetDocument-JioL9Pmv.js → EnvironmentAssetDocument-BOpdqZTU.js} +1 -1
  12. package/dist/assets/{GameplaySessionTimeline-BRl0PIim.js → GameplaySessionTimeline-BluA8QYW.js} +1 -1
  13. package/dist/assets/{ImageViewer-ET4Bwjzp.js → ImageViewer-BirVv4d6.js} +1 -1
  14. package/dist/assets/InspectorObjectPreview-gKOWUWjk.js +1 -0
  15. package/dist/assets/{JsonAssetDocument-CVkHqdUd.js → JsonAssetDocument-CEgJ43VT.js} +1 -1
  16. package/dist/assets/{LiveModuleDocument-DLwna0kt.js → LiveModuleDocument-vjkqdjFx.js} +1 -1
  17. package/dist/assets/{LutAssetDocument-BdG_i8hr.js → LutAssetDocument-C_oAeHsv.js} +1 -1
  18. package/dist/assets/{ModelAssetDocument-DTxbDhA6.js → ModelAssetDocument-DE883aJ9.js} +1 -1
  19. package/dist/assets/{NonThreeAuthoringBootstrap-BZ4A6rPs.js → NonThreeAuthoringBootstrap-DQwT77vx.js} +1 -1
  20. package/dist/assets/{Object3DDocumentToolbar-COuKq3sB.js → Object3DDocumentToolbar-BmWUB7YS.js} +1 -1
  21. package/dist/assets/Object3DDocumentViewport-uabnovqE.js +2 -0
  22. package/dist/assets/{Object3DPreview-D_1vkB4L.js → Object3DPreview-DTy6HPi6.js} +1 -1
  23. package/dist/assets/{OnlineAssetDetail-DvKNu8aC.js → OnlineAssetDetail-CgYgrBuu.js} +1 -1
  24. package/dist/assets/{PlayBar-DknzqPEC.js → PlayBar-D__0uoFU.js} +1 -1
  25. package/dist/assets/{QuarksAssetDocument-Dc5JDyxV.js → QuarksAssetDocument-DVz8Fops.js} +1 -1
  26. package/dist/assets/{ReactCanvasControls-DircULTK.js → ReactCanvasControls-NwZ3ERZn.js} +1 -1
  27. package/dist/assets/{RootSelectionOverlay-D--07KbL.js → RootSelectionOverlay-CpjNd-WW.js} +1 -1
  28. package/dist/assets/{ShaderAssetDocument-D05qJkAZ.js → ShaderAssetDocument-BgqIVYPq.js} +1 -1
  29. package/dist/assets/{ShadowEditor-BQ_4yLgQ.js → ShadowEditor-DpyHEAdW.js} +1 -1
  30. package/dist/assets/{SourceAssetViewer-ubsXVAPL.js → SourceAssetViewer-BT1411ax.js} +1 -1
  31. package/dist/assets/{StageHost-eSViLdbz.js → StageHost-BTBHJxSE.js} +2 -2
  32. package/dist/assets/{StoryPreviewMount-Befs2jpi.js → StoryPreviewMount-B0nqhsEp.js} +1 -1
  33. package/dist/assets/{ThreeBoardDocument-5MeNfCGF.js → ThreeBoardDocument-thEKw19m.js} +2 -2
  34. package/dist/assets/{ThreeIsolationSceneContent-B1xdrbgO.js → ThreeIsolationSceneContent-DPQoX7q2.js} +1 -1
  35. package/dist/assets/{ToolObject3DPreview-D3D8hMNA.js → ToolObject3DPreview-AbiZm8WL.js} +1 -1
  36. package/dist/assets/{Toolbar-BTun9j-K.js → Toolbar-vVR3O4FU.js} +1 -1
  37. package/dist/assets/{TransientHint-BjG5QZ7w.js → TransientHint-6ZAWyosH.js} +1 -1
  38. package/dist/assets/{VideoViewer-CbsogTc0.js → VideoViewer-BCTZ2NTl.js} +1 -1
  39. package/dist/assets/{ViewportShadingMenu-DXfHXJZb.js → ViewportShadingMenu-CsURi5uc.js} +1 -1
  40. package/dist/assets/{active-ingest-B0RHbDkD.js → active-ingest-ThDWVuxw.js} +2 -2
  41. package/dist/assets/{animation-clock-Dkfj-UNQ.js → animation-clock-vpMCe3NR.js} +1 -1
  42. package/dist/assets/{animation-mixers.service-BTbinFit.js → animation-mixers.service-BnoUiHZX.js} +1 -1
  43. package/dist/assets/{animation-timeline.utility-BKZvFUv7.js → animation-timeline.utility-_fumd12s.js} +1 -1
  44. package/dist/assets/{asset-budget-asset.menu-CPLl16u9.js → asset-budget-asset.menu-BZAydAX3.js} +1 -1
  45. package/dist/assets/{asset-budget.action-BDDyOQkl.js → asset-budget.action--Fbmf0UJ.js} +1 -1
  46. package/dist/assets/{asset-budget.document-CX7bz50G.js → asset-budget.document-B7sYgF5D.js} +1 -1
  47. package/dist/assets/{asset-budget.menu-5S1Zzll8.js → asset-budget.menu-KrJgzmb8.js} +1 -1
  48. package/dist/assets/{asset-editor-persistence-AKvUtcfg.js → asset-editor-persistence-CtoTTS7a.js} +1 -1
  49. package/dist/assets/{asset-loaders-BoVVLGeW.js → asset-loaders-Y8f3QiXz.js} +1 -1
  50. package/dist/assets/{asset-preview-C-SzfMmZ.js → asset-preview-DekZ4wVq.js} +1 -1
  51. package/dist/assets/{audio-unlock.service-Cu-KaqcU.js → audio-unlock.service-Dcg3sVfv.js} +1 -1
  52. package/dist/assets/{audio.utility-BdMr9Tg8.js → audio.utility-CdV1zar0.js} +1 -1
  53. package/dist/assets/autoplay.service-eeOjCzdb.js +1 -0
  54. package/dist/assets/{babylon-authoring-adapter-qNNPjc8Z.js → babylon-authoring-adapter-DPmLl5f_.js} +1 -1
  55. package/dist/assets/{binding-resolver-CGsJLZOI.js → binding-resolver-YYyOPJYp.js} +2 -2
  56. package/dist/assets/blender-emscripten-engine-CieQeF-r.js +2 -0
  57. package/dist/assets/{blender-node-editor.document-BdR4Vvi3.js → blender-node-editor.document-jyyv3ppW.js} +1 -1
  58. package/dist/assets/{blender-properties-tab-CCNa2VxG.js → blender-properties-tab-hi3MVaab.js} +1 -1
  59. package/dist/assets/{blender-runtime-host-D_r3dBBg.js → blender-runtime-host-BSi6Kax2.js} +2 -2
  60. package/dist/assets/{blender-runtime-skin-CbrjFtVl.js → blender-runtime-skin-CXcqgnOH.js} +1 -1
  61. package/dist/assets/{blender-runtime.document-BeQ1ylTU.js → blender-runtime.document-DjIxtPzX.js} +1 -1
  62. package/dist/assets/{blender-timeline.document-BQ6r2Eit.js → blender-timeline.document-BnRM53nq.js} +1 -1
  63. package/dist/assets/{blender-uv-editor.document-CP9yR9fd.js → blender-uv-editor.document-Bz9N_c_P.js} +1 -1
  64. package/dist/assets/{blender-version.status-Bu35OikW.js → blender-version.status-DeNkSYj2.js} +1 -1
  65. package/dist/assets/blender-wali-engine-KWIxfB_o.js +2 -0
  66. package/dist/assets/{blender.command-ClhAHbhS.js → blender.command-DAu0RN1N.js} +1 -1
  67. package/dist/assets/{board-guides-DUTllrm6.js → board-guides-nMyh5TOo.js} +1 -1
  68. package/dist/assets/{bridge.command-CFCb73nA.js → bridge.command-B5N5vlrv.js} +3 -3
  69. package/dist/assets/{browserAll-CcEbt8pP.js → browserAll-B4vTNf7l.js} +1 -1
  70. package/dist/assets/{build-player.document-CHNcytS3.js → build-player.document-C5j2rLfU.js} +1 -1
  71. package/dist/assets/{build-profiles.document-CfftHZEt.js → build-profiles.document-B02-0E9_.js} +1 -1
  72. package/dist/assets/{build-progress.status-Ba7TtK8C.js → build-progress.status-DlfLUEPz.js} +1 -1
  73. package/dist/assets/{build-session-BVAVoaAo.js → build-session-CGkCqUX8.js} +1 -1
  74. package/dist/assets/{build.action-C4v62OGp.js → build.action-CVwUqqM2.js} +1 -1
  75. package/dist/assets/{build.command-DiOf0gsd.js → build.command-Bm0vSOEZ.js} +1 -1
  76. package/dist/assets/{build.header-Cc9F3_tw.js → build.header-jLMld2Mg.js} +1 -1
  77. package/dist/assets/{build.menu-C6m7wAB0.js → build.menu-CLGMn0iC.js} +1 -1
  78. package/dist/assets/{build.service-BD9CuqZ1.js → build.service-CyQ5OIkh.js} +1 -1
  79. package/dist/assets/{camera-QoF2qQn9.js → camera-CzOSAW-c.js} +1 -1
  80. package/dist/assets/{camera-runtime.inspector-BPmJd9CX.js → camera-runtime.inspector-B0ctaadd.js} +1 -1
  81. package/dist/assets/{canvas-design-mount-QoLQihbE.js → canvas-design-mount-CcYATV1C.js} +3 -3
  82. package/dist/assets/{canvas-entry-runtime-cJsqLXEp.js → canvas-entry-runtime-BAkYrX3t.js} +2 -2
  83. package/dist/assets/{canvas-preview-frames-CxHRaajp.js → canvas-preview-frames-CHU5LqEd.js} +1 -1
  84. package/dist/assets/{canvas-story-capture.service-DUSsBMnw.js → canvas-story-capture.service-BKm-Ger3.js} +2 -2
  85. package/dist/assets/{capability-coverage-DiBzUjdM.js → capability-coverage-77Cr3Ulm.js} +1 -1
  86. package/dist/assets/{collaboration-presence-Bj9ev5mU.js → collaboration-presence-HbJp4-U8.js} +1 -1
  87. package/dist/assets/{collider-CE-VI_rc.js → collider-Cwcf2Zom.js} +1 -1
  88. package/dist/assets/{component-board.service-Hbl9EZl9.js → component-board.service-BFBUphXB.js} +2 -2
  89. package/dist/assets/{component-board.service-Bi8VA3L0.js → component-board.service-C1ol1cKb.js} +2 -2
  90. package/dist/assets/{component-board.service-CzROar7A.js → component-board.service-Clf2stt0.js} +2 -2
  91. package/dist/assets/{component-contracts.service-CCaAPGw2.js → component-contracts.service-pQ7IX5cl.js} +1 -1
  92. package/dist/assets/{component-instance-root-BZXekKMG.js → component-instance-root-DNkkU6je.js} +1 -1
  93. package/dist/assets/{component-verbs.command-Db0sUk65.js → component-verbs.command-jY7-iDyF.js} +1 -1
  94. package/dist/assets/{component-verbs.service-DuEY_Ofq.js → component-verbs.service-DokE0T1V.js} +1 -1
  95. package/dist/assets/{config-DApMxCjE.js → config-TWuGOv6R.js} +2 -2
  96. package/dist/assets/{configurations-B4fNBX4_.js → configurations-vJZm6C5B.js} +1 -1
  97. package/dist/assets/{connection.status-D7URFwNX.js → connection.status-KJx5swGf.js} +1 -1
  98. package/dist/assets/{constraints.inspector-C-rz7qm2.js → constraints.inspector-YOK3hbgf.js} +1 -1
  99. package/dist/assets/{content-bounds-IMXYkN3x.js → content-bounds-C7j7h9Az.js} +1 -1
  100. package/dist/assets/{contract-system-adapters-DAgN02qJ.js → contract-system-adapters-CNSZM1a_.js} +1 -1
  101. package/dist/assets/{coverage.service-BWYLFkJZ.js → coverage.service-BLYQJdpO.js} +1 -1
  102. package/dist/assets/{create-runtime-B4VUkWmh.js → create-runtime-n9K8UEYe.js} +1 -1
  103. package/dist/assets/{curve-nsmv7c1I.js → curve-UFodTxel.js} +1 -1
  104. package/dist/assets/{data-asset-BQCPKu13.js → data-asset-C8T4Zac1.js} +1 -1
  105. package/dist/assets/{data-ref-CeTcnM3h.js → data-ref-ZqTEfvOS.js} +1 -1
  106. package/dist/assets/{debug-bridge-Cjo3HKqn.js → debug-bridge-BCa1Boz-.js} +1 -1
  107. package/dist/assets/{debug-registry-D4XNZdHk.js → debug-registry-B4_5ivc5.js} +1 -1
  108. package/dist/assets/{deferred-ingest-play-CrBHt1VV.js → deferred-ingest-play-CXcvGSx4.js} +2 -2
  109. package/dist/assets/{design-time-canvas-mount-Dzu7gMRL.js → design-time-canvas-mount-BI3Xlb-Z.js} +2 -2
  110. package/dist/assets/{design-time-layers-BJZJy_6E.js → design-time-layers-C9Bqv8Bg.js} +1 -1
  111. package/dist/assets/{design-time-mount.service-Bzs3PQ3q.js → design-time-mount.service-Cec0Fgg7.js} +2 -2
  112. package/dist/assets/{design-time-mount.service-BZMMh_B1.js → design-time-mount.service-DslfPvv2.js} +2 -2
  113. package/dist/assets/{design-time-react-mount-C2ychNs2.js → design-time-react-mount-CkLqn_IK.js} +1 -1
  114. package/dist/assets/{document-preview-three-BxNY0561.js → document-preview-three-CGocROzm.js} +1 -1
  115. package/dist/assets/{dom-authoring-adapter-BZtIjxmP.js → dom-authoring-adapter-CVgYwLJC.js} +1 -1
  116. package/dist/assets/{draco3d-j0uDqveB.js → draco3d-CCThltjS.js} +1 -1
  117. package/dist/assets/{edit-mode-audio.service-cDUTJL37.js → edit-mode-audio.service-CUGepqjA.js} +1 -1
  118. package/dist/assets/{edit-mode-authoring-BGGW26LN.js → edit-mode-authoring-sVhMylk9.js} +1 -1
  119. package/dist/assets/{edit-mode-networking.service-DBB67UkE.js → edit-mode-networking.service-9lj2mixd.js} +1 -1
  120. package/dist/assets/{editor-api-NUTZNRyn.js → editor-api-DJL2HBQ6.js} +1 -1
  121. package/dist/assets/{editor-layers-BpAhxn0P.js → editor-layers-CLVnI3iG.js} +1 -1
  122. package/dist/assets/{editor-shell-store-C04XLLU-.js → editor-shell-store-DcEC9ah3.js} +1 -1
  123. package/dist/assets/{entity-object-DsAYI3gJ.js → entity-object-CWtH9RjW.js} +1 -1
  124. package/dist/assets/{extend-BvNGT6qQ.js → extend-CCIGivXw.js} +1 -1
  125. package/dist/assets/{fork-menu-B3qakgix.js → fork-menu-CsXFm59h.js} +1 -1
  126. package/dist/assets/{frame-debugger-store-BQ7OaD2z.js → frame-debugger-store-BDosWMfv.js} +1 -1
  127. package/dist/assets/{game-contract-seams-Kcb8YGio.js → game-contract-seams-DeEWqg9D.js} +1 -1
  128. package/dist/assets/{game-css-scope-transform-CHdOIM_x.js → game-css-scope-transform-5XN-sstX.js} +1 -1
  129. package/dist/assets/{game-document.service-CAx5m7Ne.js → game-document.service-C1_-9aA1.js} +1 -1
  130. package/dist/assets/{game-eval.command-CHg0bsCV.js → game-eval.command-Cty_uWjA.js} +1 -1
  131. package/dist/assets/{game-module-access-zqg58xYk.js → game-module-access-Dh7mAsNt.js} +1 -1
  132. package/dist/assets/{game-network-C3D1ib_r.js → game-network-B55RY3Kt.js} +3 -3
  133. package/dist/assets/{gameplay-export-DiUUF7OL.js → gameplay-export-_4vit-9V.js} +1 -1
  134. package/dist/assets/{gameplay-replay-BOpWtguL.js → gameplay-replay-DH0P9r05.js} +1 -1
  135. package/dist/assets/{gameplay.command-eG5IvOZD.js → gameplay.command-_iVZaFXh.js} +1 -1
  136. package/dist/assets/{generation-jobs-DCZm-7-c.js → generation-jobs-By523STy.js} +1 -1
  137. package/dist/assets/{generation.service-DcF_tuiA.js → generation.service-CHdhnFg9.js} +1 -1
  138. package/dist/assets/{generations-Cij1e8K5.js → generations-CQFQ9LfH.js} +1 -1
  139. package/dist/assets/{generations.status-D6Xkxwnu.js → generations.status-CAQogunQ.js} +1 -1
  140. package/dist/assets/{hierarchy-marks-MeNgbwiP.js → hierarchy-marks-DxZhDpw2.js} +1 -1
  141. package/dist/assets/{hosted-asset-materialization-PWF6teYQ.js → hosted-asset-materialization-8Xbv2qUY.js} +1 -1
  142. package/dist/assets/{index-2B6cj0iP.js → index-2cdM3maY.js} +1 -1
  143. package/dist/assets/{index-i3_nCWlL.js → index-BcPv5r8o.js} +2 -2
  144. package/dist/assets/{index-BV0Qqo83.js → index-Cd8ipMQq.js} +1 -1
  145. package/dist/assets/{index-DvO8W-nn.js → index-D7P1gXiX.js} +1 -1
  146. package/dist/assets/{index-C2Ir9SpE.js → index-DDTcyXrs.js} +1 -1
  147. package/dist/assets/{index-s_IF6Bxe.js → index-DgJ03XKc.js} +1 -1
  148. package/dist/assets/{index-GyJvVDDT.js → index-Ds5X7FEj.js} +1 -1
  149. package/dist/assets/{index-GOaZz_UJ.js → index-P_W_cZmi.js} +7 -7
  150. package/dist/assets/{index-BFwx6NRh.js → index-m7NDCH3E.js} +1 -1
  151. package/dist/assets/{inference-diagnostics-DH6OpJZI.js → inference-diagnostics-DzjDys1l.js} +1 -1
  152. package/dist/assets/{ingest-boot-viewport-BnE3u7YT.js → ingest-boot-viewport-B8o8Q1Yp.js} +1 -1
  153. package/dist/assets/{ingest-siblings-B_5SsNEz.js → ingest-siblings-9Woggplq.js} +1 -1
  154. package/dist/assets/{ingest-source-persistence-DM9T5S4m.js → ingest-source-persistence-CCFIO3aL.js} +1 -1
  155. package/dist/assets/{ingest.service-COWbKrQI.js → ingest.service-gZfkUKfp.js} +1 -1
  156. package/dist/assets/{inspect-CD61yjth.js → inspect-DVNZ_a7S.js} +1 -1
  157. package/dist/assets/instances.command-DV87hAWH.js +1 -0
  158. package/dist/assets/{json-history-resource-Cby5jKsw.js → json-history-resource-y7Ij4Q8y.js} +1 -1
  159. package/dist/assets/{layered-pick-B3AjYd-G.js → layered-pick-Ci9qlAyv.js} +1 -1
  160. package/dist/assets/{light-B7BXFfR-.js → light-Bz4LVD36.js} +1 -1
  161. package/dist/assets/{live-project-verbs-DR_q7RK-.js → live-project-verbs-B8xb3ELQ.js} +1 -1
  162. package/dist/assets/{machine.document-DPYrwmW6.js → machine.document-Bi_O59yn.js} +1 -1
  163. package/dist/assets/{machines.finder-CwpvHTlH.js → machines.finder-BOUHOHUc.js} +1 -1
  164. package/dist/assets/{material-XjlLI_f7.js → material-15FaGc_W.js} +1 -1
  165. package/dist/assets/{material-factory-CsiepVqC.js → material-factory-BvjfHKXl.js} +1 -1
  166. package/dist/assets/{mesh-2zwQAuCC.js → mesh-C8KtiWf6.js} +1 -1
  167. package/dist/assets/{model-asset-sections.service-9-sm-NaU.js → model-asset-sections.service-D9XzySDF.js} +1 -1
  168. package/dist/assets/{model-inspection-B0GymTL8.js → model-inspection-VkTYHm5t.js} +1 -1
  169. package/dist/assets/{model-thumbnail-C6xWKVgL.js → model-thumbnail-Bg8zc_fW.js} +1 -1
  170. package/dist/assets/{models.finder-4xaZ_CWd.js → models.finder-Bd0ySSrb.js} +1 -1
  171. package/dist/assets/{module-mode-QCybxWRW.js → module-mode-HBhpW7ua.js} +2 -2
  172. package/dist/assets/{mount-canvas-ingest-root-C4nQ82CG.js → mount-canvas-ingest-root-RWdQs1Iu.js} +2 -2
  173. package/dist/assets/{mount-dom-ingest-root-CyJlqUpj.js → mount-dom-ingest-root-Do4XgUm8.js} +2 -2
  174. package/dist/assets/{mount-ingest-root-C8dDNkUg.js → mount-ingest-root-V6TW9DZ2.js} +2 -2
  175. package/dist/assets/{mount-manifest-z3xK0qgx.js → mount-manifest-CqeWB7Ee.js} +1 -1
  176. package/dist/assets/{mount-three-ingest-root-CHZLDOUt.js → mount-three-ingest-root-t2Wui3vt.js} +1 -1
  177. package/dist/assets/{mounted-authoring-CZw66UYV.js → mounted-authoring-KHG82NX1.js} +1 -1
  178. package/dist/assets/{mounted-story-viewport-source-DP4yrSoT.js → mounted-story-viewport-source-CxAxDBsa.js} +1 -1
  179. package/dist/assets/{native-debug-module-qMZlzFCw.js → native-debug-module-DwlRvzkF.js} +1 -1
  180. package/dist/assets/{navigation-BneGZzZt.js → navigation-28Ep45c7.js} +1 -1
  181. package/dist/assets/{navmesh.menu-Bh4FuG-U.js → navmesh.menu-BrJWsbjl.js} +1 -1
  182. package/dist/assets/{navmesh.service-BB71x7KW.js → navmesh.service-DVbMEjTE.js} +1 -1
  183. package/dist/assets/network-observer.service-CEa29yrk.js +1 -0
  184. package/dist/assets/{network.utility-DBva0eo8.js → network.utility-BRhLmp80.js} +1 -1
  185. package/dist/assets/{object3d-document-session-registry-q7c_gezv.js → object3d-document-session-registry-KdwbvotY.js} +2 -2
  186. package/dist/assets/{oid-transform-tKqLhlWg.js → oid-transform-CsrSC89v.js} +1 -1
  187. package/dist/assets/{particles-gUgFtSRY.js → particles-CmZGGF8w.js} +1 -1
  188. package/dist/assets/{pixi-authoring-adapter-Cd5O2LTH.js → pixi-authoring-adapter-D40Z8i2g.js} +1 -1
  189. package/dist/assets/{pixi-live-write-target-DHzgc22z.js → pixi-live-write-target-SP1J_Z2u.js} +1 -1
  190. package/dist/assets/{play.command-BxgvkWfL.js → play.command-vooZ9-ey.js} +2 -2
  191. package/dist/assets/{presentation-C5hzwpZR.js → presentation-DEKF5-uq.js} +1 -1
  192. package/dist/assets/{product-CKGKSgsU.js → product-BR_0EunR.js} +1 -1
  193. package/dist/assets/{profiler.action-S08Up0JS.js → profiler.action-C6FQKIZp.js} +1 -1
  194. package/dist/assets/{profiler.menu-Dy4i7lwO.js → profiler.menu-BP9RwbU1.js} +1 -1
  195. package/dist/assets/{profiler.utility-CC8CJLy8.js → profiler.utility-DvjunIf8.js} +1 -1
  196. package/dist/assets/{project-authoring-session-BXLqBDUm.js → project-authoring-session-_COIP71G.js} +2 -2
  197. package/dist/assets/{properties-bone-constraints.inspector-BX2GxZq2.js → properties-bone-constraints.inspector-OzttqvWB.js} +1 -1
  198. package/dist/assets/{properties-bone.inspector-CCLVVUtG.js → properties-bone.inspector-kInoyt85.js} +1 -1
  199. package/dist/assets/{properties-collection.inspector-CKbzSvCC.js → properties-collection.inspector-nm7jQja-.js} +1 -1
  200. package/dist/assets/{properties-constraints.inspector-DV1P6hUd.js → properties-constraints.inspector-DkV8Jikj.js} +1 -1
  201. package/dist/assets/{properties-data.inspector-BMaGtE_w.js → properties-data.inspector-hKbGamLI.js} +1 -1
  202. package/dist/assets/{properties-material.inspector-BtesjppG.js → properties-material.inspector-BjgT_KgY.js} +1 -1
  203. package/dist/assets/{properties-modifiers.inspector-MiHOsiuf.js → properties-modifiers.inspector-v4Mbx8Xz.js} +1 -1
  204. package/dist/assets/{properties-object.inspector-Ct8masbP.js → properties-object.inspector-CWbTsWCw.js} +1 -1
  205. package/dist/assets/{properties-output.inspector-CVNr0tSt.js → properties-output.inspector-DQZALPse.js} +1 -1
  206. package/dist/assets/{properties-particles.inspector-EMFa11PY.js → properties-particles.inspector-weWPpL_A.js} +1 -1
  207. package/dist/assets/{properties-physics.inspector-CACxDEwm.js → properties-physics.inspector-C7IG77NL.js} +1 -1
  208. package/dist/assets/{properties-render.inspector-CtijIdsj.js → properties-render.inspector-DSl9EDnL.js} +1 -1
  209. package/dist/assets/{properties-scene.inspector-oEdDyqg4.js → properties-scene.inspector-PuE3GVf0.js} +1 -1
  210. package/dist/assets/{properties-texture.inspector-C_gpMJPm.js → properties-texture.inspector-CDJvmcMo.js} +1 -1
  211. package/dist/assets/{properties-view-layer.inspector-iXXhbErN.js → properties-view-layer.inspector-CIzHouzX.js} +1 -1
  212. package/dist/assets/{properties-world.inspector-BTG_6enJ.js → properties-world.inspector-DQ405ga3.js} +1 -1
  213. package/dist/assets/{r3f-design-session-BpFmOBy3.js → r3f-design-session--AwFLkqS.js} +2 -2
  214. package/dist/assets/{r3f-physics-binding-Dc4KkqeK.js → r3f-physics-binding-C367f3es.js} +1 -1
  215. package/dist/assets/{r3f-source-authoring-adapter-Bqqwlt5P.js → r3f-source-authoring-adapter-rY4oUsiw.js} +1 -1
  216. package/dist/assets/{react-canvas-navigation-CHqEpva-.js → react-canvas-navigation-B2T6Ex7v.js} +1 -1
  217. package/dist/assets/{react-inspector.service-BofSBcrA.js → react-inspector.service-Dtx0bS4m.js} +1 -1
  218. package/dist/assets/{react-story-board-DA2YLI8m.js → react-story-board-DK2gCLDM.js} +1 -1
  219. package/dist/assets/{react-three-rapier.esm-CQZa_73g.js → react-three-rapier.esm-ZuuHJ5TA.js} +1 -1
  220. package/dist/assets/{react-world-authoring-adapter-4sStON8E.js → react-world-authoring-adapter-BfTa6po4.js} +1 -1
  221. package/dist/assets/{realm-services-DbZYHQSf.js → realm-services-DAxxPTgw.js} +1 -1
  222. package/dist/assets/{reflection-probe-capture.inspector-DNvA6bnY.js → reflection-probe-capture.inspector-oK4Y13Sr.js} +1 -1
  223. package/dist/assets/{registry-DBlUxvdQ.js → registry-C5f5aZAs.js} +1 -1
  224. package/dist/assets/{relative-import-specifier-B0yhWWcj.js → relative-import-specifier-NeaT58-U.js} +1 -1
  225. package/dist/assets/{render-env-DdFrpGB_.js → render-env-MILcoGR5.js} +1 -1
  226. package/dist/assets/{render-features-B35P-in2.js → render-features-Cz08v8GA.js} +1 -1
  227. package/dist/assets/{render-settings-C81L61oc.js → render-settings-BaDAZZ5m.js} +1 -1
  228. package/dist/assets/{resolve-three-CM8Cg4vF.js → resolve-three-DBHa7nY7.js} +3 -3
  229. package/dist/assets/{root-seam-contract-BUz-MUf1.js → root-seam-contract-CyLVcHYX.js} +1 -1
  230. package/dist/assets/{run-selection-BdiLPzVf.js → run-selection-ChEny_0a.js} +1 -1
  231. package/dist/assets/{scene-capture-Diz1G192.js → scene-capture-3eoT50fi.js} +1 -1
  232. package/dist/assets/{scene-document.service-DfXZsaKM.js → scene-document.service-CLsVmYz5.js} +2 -2
  233. package/dist/assets/{scene-framing-B5dto0bO.js → scene-framing-DqnnEUQr.js} +1 -1
  234. package/dist/assets/{seeded-random-WDTtjPze.js → seeded-random-Bym-G8VS.js} +1 -1
  235. package/dist/assets/{session-CeyQA0Dv.js → session-BMie6EFt.js} +19 -2
  236. package/dist/assets/{setup-renderer-D9SD_Wht.js → setup-renderer-BRr_FO9v.js} +1 -1
  237. package/dist/assets/{source-object3d-authoring-adapter-D6uGhge2.js → source-object3d-authoring-adapter-BJfxzBm-.js} +1 -1
  238. package/dist/assets/{source-persistence-backend-CxVBXGoQ.js → source-persistence-backend-fM7c14og.js} +1 -1
  239. package/dist/assets/{stage-keyboard-BPb1swaM.js → stage-keyboard-B7FFvLAt.js} +1 -1
  240. package/dist/assets/{stage-overlay-set-DRa6xB93.js → stage-overlay-set-b3YtjPUK.js} +1 -1
  241. package/dist/assets/{stage-presence-markers-CGxHoE5g.js → stage-presence-markers-DupmdE5J.js} +1 -1
  242. package/dist/assets/{stage-transform-tools-CQuG66LW.js → stage-transform-tools-G301IZLz.js} +1 -1
  243. package/dist/assets/{standard-viewport-dressing-D4bfoK0I.js → standard-viewport-dressing-iw1YiKLl.js} +1 -1
  244. package/dist/assets/{state-watch.action-DPVKmPwL.js → state-watch.action-ZyISJd3P.js} +1 -1
  245. package/dist/assets/{state-watch.menu-DpISV21j.js → state-watch.menu-5Jmmf4KU.js} +1 -1
  246. package/dist/assets/{state-watch.utility-DwKoTnVp.js → state-watch.utility-DE1_5uQu.js} +1 -1
  247. package/dist/assets/{story-capture-Bzwbk_mv.js → story-capture-CUOYMnKE.js} +1 -1
  248. package/dist/assets/{story-documents-De1zQ6Qz.js → story-documents-B-7wheax.js} +1 -1
  249. package/dist/assets/{story-documents.service-6eOlV6NP.js → story-documents.service-B7yoy-p3.js} +1 -1
  250. package/dist/assets/{story-documents.service-8XTTuO7s.js → story-documents.service-DpyGPm2t.js} +1 -1
  251. package/dist/assets/{story-media-presence-DpEeszWv.js → story-media-presence-Dzckug4Q.js} +1 -1
  252. package/dist/assets/{story-pixi-preview-BEyaPLy0.js → story-pixi-preview-BIxZYIRj.js} +1 -1
  253. package/dist/assets/{story-presentation-CjTxyaxs.js → story-presentation-FyJUnwn-.js} +1 -1
  254. package/dist/assets/{story-three-preview-abAavxSh.js → story-three-preview-B5ugRQMT.js} +2 -2
  255. package/dist/assets/{studio-environment-BiC6OVkT.js → studio-environment-_CFFf1qZ.js} +1 -1
  256. package/dist/assets/{surface-state-CUfqJeMb.js → surface-state-CekhoCtq.js} +1 -1
  257. package/dist/assets/{syntactic-prop-specs-DTioDasF.js → syntactic-prop-specs-DVQnEcgk.js} +1 -1
  258. package/dist/assets/{team-playtest.service-GRj4yKy4.js → team-playtest.service-DI-ze_sL.js} +1 -1
  259. package/dist/assets/{three-authoring-adapter-D3qfWIRk.js → three-authoring-adapter-B4acyr5V.js} +1 -1
  260. package/dist/assets/three-authoring.service-DWlGRzck.js +2 -0
  261. package/dist/assets/{three-CQcV_QdT.js → three-iB6lh-87.js} +1 -1
  262. package/dist/assets/{three-ingest-runtime-E3dJH9KF.js → three-ingest-runtime-BApYh4sI.js} +1 -1
  263. package/dist/assets/{three-integration-BjEyDiTB.js → three-integration-CUPcCAS0.js} +2 -2
  264. package/dist/assets/three-integration.service-BmuTfd1l.js +1 -0
  265. package/dist/assets/{three-projection-core-CkmVzWhv.js → three-projection-core--t6W_82k.js} +1 -1
  266. package/dist/assets/{three-state-CzjS3Z7g.js → three-state-3H5P7gh-.js} +1 -1
  267. package/dist/assets/{three-story-capture.service-D-1pij9x.js → three-story-capture.service-xgzcWKlT.js} +2 -2
  268. package/dist/assets/{three-story-model-B1sz0NKf.js → three-story-model-Ba4xpWVd.js} +1 -1
  269. package/dist/assets/{three-viewport-presentation-OxBEdgIP.js → three-viewport-presentation-DVHqHSnD.js} +1 -1
  270. package/dist/assets/{transform-mode-request-DO67Jvcm.js → transform-mode-request-CMO69wNw.js} +1 -1
  271. package/dist/assets/{transport-strip-D55r6FTk.js → transport-strip-ByKA31mv.js} +1 -1
  272. package/dist/assets/transport.header-DIUcizgL.js +1 -0
  273. package/dist/assets/{tuples-CJ18T3dX.js → tuples-9u_AJ1B2.js} +1 -1
  274. package/dist/assets/{ui-board-document-DEx342dp.js → ui-board-document-B78RXlo-.js} +2 -2
  275. package/dist/assets/{user-data-BDBZj06-.js → user-data-BOLOr3Ni.js} +1 -1
  276. package/dist/assets/{utility-view-state-B7prGtP-.js → utility-view-state-C1a2PQ1Q.js} +1 -1
  277. package/dist/assets/{viewport-door-Slxb_SvE.js → viewport-door-BntKRlmZ.js} +1 -1
  278. package/dist/assets/{viewport-root-presentation-B6vzusDX.js → viewport-root-presentation-C_kg4roh.js} +1 -1
  279. package/dist/assets/{viewport-surface-status-C4UZ_Uq4.js → viewport-surface-status-kJEWe53R.js} +1 -1
  280. package/dist/assets/{webworkerAll-DO15AziI.js → webworkerAll-B7fnMdO1.js} +1 -1
  281. package/dist/assets/worker-Gtu-EAm9.js +2 -0
  282. package/dist/assets/{workspace-arrangement-BjHQJUoD.js → workspace-arrangement-QrXNZ_Sw.js} +1 -1
  283. package/dist/assets/{world-documents-CuBxaDZx.js → world-documents-Dj88bL-j.js} +1 -1
  284. package/dist/assets/{world-root-stage-binding-Bn0b7XsL.js → world-root-stage-binding-CwMrB1ug.js} +1 -1
  285. package/dist/assets/{xstate-animation-binding-I-GEhYkk.js → xstate-animation-binding-BivSx7AQ.js} +1 -1
  286. package/dist/assets/{xstate-animation-meta-Io__GNze.js → xstate-animation-meta-bn7lly3Z.js} +1 -1
  287. package/dist-node/cli.js +16 -16
  288. package/package.json +16 -16
  289. package/dist/assets/InspectorObjectPreview-BvYcwQTS.js +0 -1
  290. package/dist/assets/Object3DDocumentViewport-DcX529Vg.js +0 -2
  291. package/dist/assets/autoplay.service-CclAhFII.js +0 -1
  292. package/dist/assets/blender-emscripten-engine-Cd6az4pU.js +0 -2
  293. package/dist/assets/blender-wali-engine-CZcS3eAd.js +0 -2
  294. package/dist/assets/instances.command-CxgGOKUm.js +0 -1
  295. package/dist/assets/network-observer.service-BKOQ_E--.js +0 -1
  296. package/dist/assets/three-authoring.service-C2oNRt7a.js +0 -2
  297. package/dist/assets/three-integration.service-n5uKl57k.js +0 -1
  298. package/dist/assets/transport.header-hkELPlfF.js +0 -1
  299. package/dist/assets/worker-jepHAPPr.js +0 -2
@@ -1 +1 @@
1
- import{collectMachineAnimationMeta as V,clipNamesOf as L,isBlendTreeAnimationMeta as S,asBlendTreeDef as z}from"./xstate-animation-meta-Io__GNze.js";import{cW as J,p as Z,c as _,cQ as ee,l as te,dk as ne,cf as ie,cd as oe}from"./three.core-3arARmh6.js";import"./index-GOaZz_UJ.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";class M extends Error{constructor(i,c){super(i),this.stateId=c,this.name="AnimationBindingError"}}function ae(n){const i=n.logic;if(i?.root)return i;const c=n.getSnapshot();if(c?.machine?.root)return c.machine;throw new M("[bindXStateAnimation] the actor exposes no state machine — only a state-machine actor carries the `meta.animation` this binder reads")}const W=n=>n.layer??"base",B=n=>n.weight??1,I=n=>n.blendMode??"override";function T(n){try{return ne.parseTrackName(n.name).nodeName??""}catch{const i=n.name.indexOf(".");return i<0?n.name:n.name.slice(0,i)}}function C(n,i,c){const o=new Set,l=[];for(const f of i){let u=!1;n.traverse(m=>{m.name===f&&(u=!0,m.traverse(d=>{d.name&&o.add(d.name)}))}),c.has(f)&&(u=!0,o.add(f)),u||l.push(f)}return{names:o,missing:l}}function se(n,i,c,o){const l=new Set(n.tracks.map(T)),f=i.include?C(c,i.include,l):void 0,u=i.exclude?C(c,i.exclude,l):void 0,m=[...f?.missing??[],...u?.missing??[]];if(m.length)throw new M(`[bindXStateAnimation] state "${o}" boneMask names unknown bones/objects: ${m.join(", ")}`,o);const d=n.tracks.filter(p=>{const w=T(p);return(!f||f.names.has(w))&&!u?.names.has(w)});if(d.length===0)throw new M(`[bindXStateAnimation] state "${o}" boneMask removes every track from clip "${n.name}"`,o);return new te(n.name,n.duration,d.map(p=>p.clone()))}function re(n){return n.reduce((i,c)=>c.weight>i.weight?c:i,n[0])}function Se(n,i,c,o={}){const l=i.getRoot(),f=o.root??(l instanceof J?l:void 0);if(!f)throw new M("[bindXStateAnimation] a THREE.Object3D `root` option is required when the mixer uses AnimationObjectGroup");const u=ae(n).root,m=V(u),d=new Map(m.map(t=>[t.stateId,t.meta]));for(const t of m)for(const e of L(t.meta))if(!c.has(e))throw new M(`[bindXStateAnimation] state "${t.stateId}" references clip "${e}", which is not present in the supplied clips map. Known clips: ${[...c.keys()].join(", ")||"(none)"}`,t.stateId);const p=new Map;function w(t,e,s){return W(e)!=="base"||!!e.boneMask||I(e)==="additive"?`${t}\0${s}`:s}for(const{stateId:t,meta:e}of m)for(const s of L(e)){const a=w(t,e,s);if(p.has(a))continue;const r=c.get(s);let h=e.boneMask?se(r,e.boneMask,f,t):r;(h!==r||a!==s)&&(h===r&&(h=r.clone()),h.name=`${r.name}@${W(e)}:${t}`),I(e)==="additive"?(Z.makeClipAdditive(h),h.blendMode=_):h.blendMode=ee,p.set(a,h)}const g=new Map;function K(t,e,s,a){let r=g.get(t);if(!r){const h=p.get(t);if(!h)throw new M(`[bindXStateAnimation] prepared clip "${t}" not found`);const v=i.clipAction(h);v.setEffectiveWeight(0),v.play(),r={action:v,clip:h},g.set(t,r)}return r.action.setLoop(e?ie:oe,1/0),r.action.clampWhenFinished=!e,r.action.timeScale=s,r.action.weight=a,r.action}function N(t){const e=o.selectParameters?o.selectParameters(t):t;return new Map(Object.entries(e??{}))}function D(t,e,s){return(S(e)?ce(z(e.blendTree),N(s)):[{clip:e.clip,weight:1}]).map(({clip:r,weight:h})=>({clip:r,weight:h,actionKey:w(t,e,r)}))}const y=new Map;let O=!1;function R(t,e,s){for(const a of t){if(a.actionKey===e)continue;const r=g.get(a.actionKey)?.action;r&&(s>0?r.fadeOut(s):r.setEffectiveWeight(0))}}function k(t,e){if(!S(t.meta))return;t.natural=D(t.stateId,t.meta,e);const s=B(t.meta);for(const a of t.natural)g.get(a.actionKey)?.action.setEffectiveWeight(a.weight*s)}function P(t,e,s){const a=W(e),r=y.get(a)??null,h=D(t,e,s),v=re(h),H=S(e)?!0:e.loop,Q=S(e)?1:e.speed,x=B(e);for(const b of h)K(b.actionKey,H,Q,x);const $=g.get(v.actionKey).action;$.reset().setEffectiveWeight(x);for(const b of h)b.actionKey!==v.actionKey&&g.get(b.actionKey).action.reset().setEffectiveWeight(0);const A=e.crossfade?.duration??0,U=e.crossfade?.warp??!1;if(!r)A>0&&$.fadeIn(A);else{R(r.natural,r.dominantActionKey,A);const b=g.get(r.dominantActionKey)?.action;b&&A>0?b.crossFadeTo($,A,U):(b?.setEffectiveWeight(0),$.setEffectiveWeight(x))}const j={layer:a,stateId:t,meta:e,natural:h,dominantActionKey:v.actionKey,crossfadeRemaining:A};y.set(a,j),S(e)&&A<=0&&k(j,s)}function q(t){return Object.keys(t.getMeta()).filter(e=>d.has(e))}function X(t){const e=new Map;for(const s of q(t)){const a=d.get(s),r=W(a),h=e.get(r);if(h)throw new M(`[bindXStateAnimation] animated states "${h}" and "${s}" are both active on layer "${r}". Give parallel regions distinct meta.animation.layer names.`,s);e.set(r,s)}for(const[s,a]of y)e.has(s)||(R(a.natural,void 0,0),y.delete(s));for(const[s,a]of e)y.get(s)?.stateId!==a&&P(a,d.get(a),t.context)}const F=n.getSnapshot();X(F);const G=n.subscribe(t=>{O||X(t)});function E(t){if(O)return;const e=t,s=n.getSnapshot().context;for(const a of y.values())a.crossfadeRemaining>0?(a.crossfadeRemaining=Math.max(0,a.crossfadeRemaining-e),a.crossfadeRemaining<=0&&k(a,s)):k(a,s);i.update(e)}const Y={tick:E,actor:n,getParameters:()=>N(n.getSnapshot().context),getActiveLayers:()=>[...y.values()].map(t=>({layer:t.layer,stateId:t.stateId,clips:t.natural.map(e=>e.clip),clipWeights:t.natural.map(e=>({clip:e.clip,weight:g.get(e.actionKey)?.action.getEffectiveWeight()??0})),weight:B(t.meta),blendMode:I(t.meta),...t.meta.boneMask?{boneMask:t.meta.boneMask}:{}})),dispose(){if(!O){O=!0,o.systems?.remove("animation",E),G.unsubscribe();for(const{action:t,clip:e}of g.values())t.stop(),i.uncacheAction(e,t.getRoot());g.clear(),y.clear()}}};return o.systems?.add("animation",E),Y}function ce(n,i){switch(n.type){case"1D":return le(n,i);case"2D":return fe(n,i);case"direct":return de(n);default:return n.children.map(c=>({clip:c.clip,weight:1/n.children.length}))}}function le(n,i){const c=Number(i.get(n.parameter)??0),o=[...n.children].sort((f,u)=>f.threshold-u.threshold),l=o.map(f=>({clip:f.clip,weight:0}));if(o.length===0)return l;if(o.length===1||c<=o[0].threshold)return l[0].weight=1,l;if(c>=o[o.length-1].threshold)return l[l.length-1].weight=1,l;for(let f=0;f<o.length-1;f++){const u=o[f],m=o[f+1];if(c>=u.threshold&&c<=m.threshold){const d=m.threshold-u.threshold,p=d>0?(c-u.threshold)/d:0;return l[f].weight=1-p,l[f+1].weight=p,l}}return l}function fe(n,i){const c=Number(i.get(n.parameter)??0),o=Number(i.get(n.parameterY??"")??0),l=n.children,f=l.map(d=>({clip:d.clip,weight:0}));let u=0;const m=[];for(const d of l){const p=c-d.threshold,w=o-(d.thresholdY??0),g=Math.sqrt(p*p+w*w),K=g<.001?1e3:1/g;m.push(K),u+=K}if(u>0)for(let d=0;d<f.length;d++)f[d].weight=m[d]/u;return f}function de(n){const i=n.children.map(o=>({clip:o.clip,weight:o.weight??0})),c=i.reduce((o,l)=>o+l.weight,0);if(c>0)for(const o of i)o.weight/=c;return i}export{M as AnimationBindingError,Se as bindXStateAnimation,ce as evaluateBlendTree,ae as machineOfXStateActor};
1
+ import{collectMachineAnimationMeta as V,clipNamesOf as L,isBlendTreeAnimationMeta as S,asBlendTreeDef as z}from"./xstate-animation-meta-bn7lly3Z.js";import{cW as J,p as Z,c as _,cQ as ee,l as te,dk as ne,cf as ie,cd as oe}from"./three.core-3arARmh6.js";import"./index-P_W_cZmi.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";class M extends Error{constructor(i,c){super(i),this.stateId=c,this.name="AnimationBindingError"}}function ae(n){const i=n.logic;if(i?.root)return i;const c=n.getSnapshot();if(c?.machine?.root)return c.machine;throw new M("[bindXStateAnimation] the actor exposes no state machine — only a state-machine actor carries the `meta.animation` this binder reads")}const W=n=>n.layer??"base",B=n=>n.weight??1,I=n=>n.blendMode??"override";function T(n){try{return ne.parseTrackName(n.name).nodeName??""}catch{const i=n.name.indexOf(".");return i<0?n.name:n.name.slice(0,i)}}function C(n,i,c){const o=new Set,l=[];for(const f of i){let u=!1;n.traverse(m=>{m.name===f&&(u=!0,m.traverse(d=>{d.name&&o.add(d.name)}))}),c.has(f)&&(u=!0,o.add(f)),u||l.push(f)}return{names:o,missing:l}}function se(n,i,c,o){const l=new Set(n.tracks.map(T)),f=i.include?C(c,i.include,l):void 0,u=i.exclude?C(c,i.exclude,l):void 0,m=[...f?.missing??[],...u?.missing??[]];if(m.length)throw new M(`[bindXStateAnimation] state "${o}" boneMask names unknown bones/objects: ${m.join(", ")}`,o);const d=n.tracks.filter(p=>{const w=T(p);return(!f||f.names.has(w))&&!u?.names.has(w)});if(d.length===0)throw new M(`[bindXStateAnimation] state "${o}" boneMask removes every track from clip "${n.name}"`,o);return new te(n.name,n.duration,d.map(p=>p.clone()))}function re(n){return n.reduce((i,c)=>c.weight>i.weight?c:i,n[0])}function Se(n,i,c,o={}){const l=i.getRoot(),f=o.root??(l instanceof J?l:void 0);if(!f)throw new M("[bindXStateAnimation] a THREE.Object3D `root` option is required when the mixer uses AnimationObjectGroup");const u=ae(n).root,m=V(u),d=new Map(m.map(t=>[t.stateId,t.meta]));for(const t of m)for(const e of L(t.meta))if(!c.has(e))throw new M(`[bindXStateAnimation] state "${t.stateId}" references clip "${e}", which is not present in the supplied clips map. Known clips: ${[...c.keys()].join(", ")||"(none)"}`,t.stateId);const p=new Map;function w(t,e,s){return W(e)!=="base"||!!e.boneMask||I(e)==="additive"?`${t}\0${s}`:s}for(const{stateId:t,meta:e}of m)for(const s of L(e)){const a=w(t,e,s);if(p.has(a))continue;const r=c.get(s);let h=e.boneMask?se(r,e.boneMask,f,t):r;(h!==r||a!==s)&&(h===r&&(h=r.clone()),h.name=`${r.name}@${W(e)}:${t}`),I(e)==="additive"?(Z.makeClipAdditive(h),h.blendMode=_):h.blendMode=ee,p.set(a,h)}const g=new Map;function K(t,e,s,a){let r=g.get(t);if(!r){const h=p.get(t);if(!h)throw new M(`[bindXStateAnimation] prepared clip "${t}" not found`);const v=i.clipAction(h);v.setEffectiveWeight(0),v.play(),r={action:v,clip:h},g.set(t,r)}return r.action.setLoop(e?ie:oe,1/0),r.action.clampWhenFinished=!e,r.action.timeScale=s,r.action.weight=a,r.action}function N(t){const e=o.selectParameters?o.selectParameters(t):t;return new Map(Object.entries(e??{}))}function D(t,e,s){return(S(e)?ce(z(e.blendTree),N(s)):[{clip:e.clip,weight:1}]).map(({clip:r,weight:h})=>({clip:r,weight:h,actionKey:w(t,e,r)}))}const y=new Map;let O=!1;function R(t,e,s){for(const a of t){if(a.actionKey===e)continue;const r=g.get(a.actionKey)?.action;r&&(s>0?r.fadeOut(s):r.setEffectiveWeight(0))}}function k(t,e){if(!S(t.meta))return;t.natural=D(t.stateId,t.meta,e);const s=B(t.meta);for(const a of t.natural)g.get(a.actionKey)?.action.setEffectiveWeight(a.weight*s)}function P(t,e,s){const a=W(e),r=y.get(a)??null,h=D(t,e,s),v=re(h),H=S(e)?!0:e.loop,Q=S(e)?1:e.speed,x=B(e);for(const b of h)K(b.actionKey,H,Q,x);const $=g.get(v.actionKey).action;$.reset().setEffectiveWeight(x);for(const b of h)b.actionKey!==v.actionKey&&g.get(b.actionKey).action.reset().setEffectiveWeight(0);const A=e.crossfade?.duration??0,U=e.crossfade?.warp??!1;if(!r)A>0&&$.fadeIn(A);else{R(r.natural,r.dominantActionKey,A);const b=g.get(r.dominantActionKey)?.action;b&&A>0?b.crossFadeTo($,A,U):(b?.setEffectiveWeight(0),$.setEffectiveWeight(x))}const j={layer:a,stateId:t,meta:e,natural:h,dominantActionKey:v.actionKey,crossfadeRemaining:A};y.set(a,j),S(e)&&A<=0&&k(j,s)}function q(t){return Object.keys(t.getMeta()).filter(e=>d.has(e))}function X(t){const e=new Map;for(const s of q(t)){const a=d.get(s),r=W(a),h=e.get(r);if(h)throw new M(`[bindXStateAnimation] animated states "${h}" and "${s}" are both active on layer "${r}". Give parallel regions distinct meta.animation.layer names.`,s);e.set(r,s)}for(const[s,a]of y)e.has(s)||(R(a.natural,void 0,0),y.delete(s));for(const[s,a]of e)y.get(s)?.stateId!==a&&P(a,d.get(a),t.context)}const F=n.getSnapshot();X(F);const G=n.subscribe(t=>{O||X(t)});function E(t){if(O)return;const e=t,s=n.getSnapshot().context;for(const a of y.values())a.crossfadeRemaining>0?(a.crossfadeRemaining=Math.max(0,a.crossfadeRemaining-e),a.crossfadeRemaining<=0&&k(a,s)):k(a,s);i.update(e)}const Y={tick:E,actor:n,getParameters:()=>N(n.getSnapshot().context),getActiveLayers:()=>[...y.values()].map(t=>({layer:t.layer,stateId:t.stateId,clips:t.natural.map(e=>e.clip),clipWeights:t.natural.map(e=>({clip:e.clip,weight:g.get(e.actionKey)?.action.getEffectiveWeight()??0})),weight:B(t.meta),blendMode:I(t.meta),...t.meta.boneMask?{boneMask:t.meta.boneMask}:{}})),dispose(){if(!O){O=!0,o.systems?.remove("animation",E),G.unsubscribe();for(const{action:t,clip:e}of g.values())t.stop(),i.uncacheAction(e,t.getRoot());g.clear(),y.clear()}}};return o.systems?.add("animation",E),Y}function ce(n,i){switch(n.type){case"1D":return le(n,i);case"2D":return fe(n,i);case"direct":return de(n);default:return n.children.map(c=>({clip:c.clip,weight:1/n.children.length}))}}function le(n,i){const c=Number(i.get(n.parameter)??0),o=[...n.children].sort((f,u)=>f.threshold-u.threshold),l=o.map(f=>({clip:f.clip,weight:0}));if(o.length===0)return l;if(o.length===1||c<=o[0].threshold)return l[0].weight=1,l;if(c>=o[o.length-1].threshold)return l[l.length-1].weight=1,l;for(let f=0;f<o.length-1;f++){const u=o[f],m=o[f+1];if(c>=u.threshold&&c<=m.threshold){const d=m.threshold-u.threshold,p=d>0?(c-u.threshold)/d:0;return l[f].weight=1-p,l[f+1].weight=p,l}}return l}function fe(n,i){const c=Number(i.get(n.parameter)??0),o=Number(i.get(n.parameterY??"")??0),l=n.children,f=l.map(d=>({clip:d.clip,weight:0}));let u=0;const m=[];for(const d of l){const p=c-d.threshold,w=o-(d.thresholdY??0),g=Math.sqrt(p*p+w*w),K=g<.001?1e3:1/g;m.push(K),u+=K}if(u>0)for(let d=0;d<f.length;d++)f[d].weight=m[d]/u;return f}function de(n){const i=n.children.map(o=>({clip:o.clip,weight:o.weight??0})),c=i.reduce((o,l)=>o+l.weight,0);if(c>0)for(const o of i)o.weight/=c;return i}export{M as AnimationBindingError,Se as bindXStateAnimation,ce as evaluateBlendTree,ae as machineOfXStateActor};
@@ -1 +1 @@
1
- import{dY as b,dZ as u,t as o,u as l,v as n,w as c,bA as r,bz as m,by as f}from"./index-GOaZz_UJ.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";const d=o({clip:n().min(1).describe("Animation clip name this child plays"),threshold:r().describe("1D/2D blend position on the primary parameter axis"),thresholdY:r().optional().describe("2D blend position on the secondary parameter axis (2D blend trees only)"),weight:r().min(0).optional().describe('Explicit weight for "direct" blend trees (ignored by 1D/2D)')}).strict(),y=o({type:c("1D").describe("Interpolates linearly between sorted children by threshold"),parameter:n().min(1).describe("Context/selector value driving the blend"),children:l(d).min(2,"1D blend tree needs at least 2 children to interpolate between")}).strict(),v=o({type:c("2D").describe("Inverse-distance-weights children by (parameter, parameterY) position"),parameter:n().min(1).describe("Primary axis context/selector value"),parameterY:n().min(1).describe("Secondary axis context/selector value"),children:l(d.extend({thresholdY:r()})).min(1,"2D blend tree needs at least 1 child")}).strict(),A=o({type:c("direct").describe("Each child has an explicit weight, normalized to sum to 1"),parameter:n().default(""),children:l(d.extend({weight:r().min(0)})).min(1,"direct blend tree needs at least 1 child")}).strict(),g=b("type",[y,v,A]);function P(e){return e}const p=o({duration:r().min(0).default(0).describe("Seconds to blend from the previously active clip into this state on entry, applied via native `AnimationAction.crossFadeTo`/`fadeIn` (E2). 0 = instant activation, no fade."),warp:m().default(!1).describe("Passed through to AnimationAction.crossFadeTo's `warp` param — linearly warps timeScale across the two clips during the blend so differing clip lengths line up. Default false.")}).strict().describe("Blend-in/out/crossfade timing for entering this state"),x=o({include:l(n().min(1)).min(1).optional().describe("Bone/object names whose complete descendant subtrees are retained"),exclude:l(n().min(1)).min(1).optional().describe("Bone/object names whose complete descendant subtrees are removed")}).strict().refine(e=>!!(e.include?.length||e.exclude?.length),{message:"boneMask needs at least one include or exclude bone name"}).describe("Filters animation tracks by named Object3D/Bone subtrees"),h={layer:n().min(1).optional().describe("Composition layer name; omitted means the single base layer"),weight:r().min(0).max(1).optional().describe("Layer weight multiplier from 0 to 1; defaults to 1"),blendMode:f(["override","additive"]).optional().describe("Native Three normal/override or additive action blending; defaults to override"),boneMask:x.optional().describe("Optional include/exclude filter applied to every clip track in this state")},w=o({clip:n().min(1).describe("Single clip to play while this XState state is active"),loop:m().default(!0).describe("Loop the clip (THREE.LoopRepeat) vs play once (THREE.LoopOnce, clamped on last frame)"),speed:r().positive().default(1).describe("Playback speed multiplier (AnimationAction.timeScale)"),crossfade:p.optional(),...h}).strict(),S=o({blendTree:g.describe("Multiple clips blended by a live context/selector-driven parameter"),crossfade:p.optional(),...h}).strict(),D=u([w,S]);function M(e){return"clip"in e}function $(e){return"blendTree"in e}class T extends Error{constructor(a,i,t){super(a),this.stateId=i,this.issues=t,this.name="AnimationMetaValidationError"}}function B(e,a){const i=D.safeParse(a);if(!i.success){const t=i.error.issues.map(s=>`${s.path.length?s.path.join("."):"(root)"}: ${s.message}`).join("; ");throw new T(`[xstate-animation] invalid meta.animation for state "${e}": ${t}`,e,i.error.issues)}return i.data}function R(e){const a=[],i=t=>{t.meta&&"animation"in t.meta&&t.meta.animation!==void 0&&a.push({stateId:t.id,meta:B(t.id,t.meta.animation)});for(const s of Object.values(t.states??{}))i(s)};return i(e),a}function z(e){return M(e)?[e.clip]:e.blendTree.children.map(a=>a.clip)}export{g as AnimationBlendTreeSchema,T as AnimationMetaValidationError,D as StateAnimationMetaSchema,P as asBlendTreeDef,z as clipNamesOf,R as collectMachineAnimationMeta,$ as isBlendTreeAnimationMeta,M as isClipAnimationMeta,B as parseStateAnimationMeta};
1
+ import{dY as b,dZ as u,t as o,u as l,v as n,w as c,bA as r,bz as m,by as f}from"./index-P_W_cZmi.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";const d=o({clip:n().min(1).describe("Animation clip name this child plays"),threshold:r().describe("1D/2D blend position on the primary parameter axis"),thresholdY:r().optional().describe("2D blend position on the secondary parameter axis (2D blend trees only)"),weight:r().min(0).optional().describe('Explicit weight for "direct" blend trees (ignored by 1D/2D)')}).strict(),y=o({type:c("1D").describe("Interpolates linearly between sorted children by threshold"),parameter:n().min(1).describe("Context/selector value driving the blend"),children:l(d).min(2,"1D blend tree needs at least 2 children to interpolate between")}).strict(),v=o({type:c("2D").describe("Inverse-distance-weights children by (parameter, parameterY) position"),parameter:n().min(1).describe("Primary axis context/selector value"),parameterY:n().min(1).describe("Secondary axis context/selector value"),children:l(d.extend({thresholdY:r()})).min(1,"2D blend tree needs at least 1 child")}).strict(),A=o({type:c("direct").describe("Each child has an explicit weight, normalized to sum to 1"),parameter:n().default(""),children:l(d.extend({weight:r().min(0)})).min(1,"direct blend tree needs at least 1 child")}).strict(),g=b("type",[y,v,A]);function P(e){return e}const p=o({duration:r().min(0).default(0).describe("Seconds to blend from the previously active clip into this state on entry, applied via native `AnimationAction.crossFadeTo`/`fadeIn` (E2). 0 = instant activation, no fade."),warp:m().default(!1).describe("Passed through to AnimationAction.crossFadeTo's `warp` param — linearly warps timeScale across the two clips during the blend so differing clip lengths line up. Default false.")}).strict().describe("Blend-in/out/crossfade timing for entering this state"),x=o({include:l(n().min(1)).min(1).optional().describe("Bone/object names whose complete descendant subtrees are retained"),exclude:l(n().min(1)).min(1).optional().describe("Bone/object names whose complete descendant subtrees are removed")}).strict().refine(e=>!!(e.include?.length||e.exclude?.length),{message:"boneMask needs at least one include or exclude bone name"}).describe("Filters animation tracks by named Object3D/Bone subtrees"),h={layer:n().min(1).optional().describe("Composition layer name; omitted means the single base layer"),weight:r().min(0).max(1).optional().describe("Layer weight multiplier from 0 to 1; defaults to 1"),blendMode:f(["override","additive"]).optional().describe("Native Three normal/override or additive action blending; defaults to override"),boneMask:x.optional().describe("Optional include/exclude filter applied to every clip track in this state")},w=o({clip:n().min(1).describe("Single clip to play while this XState state is active"),loop:m().default(!0).describe("Loop the clip (THREE.LoopRepeat) vs play once (THREE.LoopOnce, clamped on last frame)"),speed:r().positive().default(1).describe("Playback speed multiplier (AnimationAction.timeScale)"),crossfade:p.optional(),...h}).strict(),S=o({blendTree:g.describe("Multiple clips blended by a live context/selector-driven parameter"),crossfade:p.optional(),...h}).strict(),D=u([w,S]);function M(e){return"clip"in e}function $(e){return"blendTree"in e}class T extends Error{constructor(a,i,t){super(a),this.stateId=i,this.issues=t,this.name="AnimationMetaValidationError"}}function B(e,a){const i=D.safeParse(a);if(!i.success){const t=i.error.issues.map(s=>`${s.path.length?s.path.join("."):"(root)"}: ${s.message}`).join("; ");throw new T(`[xstate-animation] invalid meta.animation for state "${e}": ${t}`,e,i.error.issues)}return i.data}function R(e){const a=[],i=t=>{t.meta&&"animation"in t.meta&&t.meta.animation!==void 0&&a.push({stateId:t.id,meta:B(t.id,t.meta.animation)});for(const s of Object.values(t.states??{}))i(s)};return i(e),a}function z(e){return M(e)?[e.clip]:e.blendTree.children.map(a=>a.clip)}export{g as AnimationBlendTreeSchema,T as AnimationMetaValidationError,D as StateAnimationMetaSchema,P as asBlendTreeDef,z as clipNamesOf,R as collectMachineAnimationMeta,$ as isBlendTreeAnimationMeta,M as isClipAnimationMeta,B as parseStateAnimationMeta};
package/dist-node/cli.js CHANGED
@@ -2310,7 +2310,7 @@ import { fileURLToPath as fileURLToPath2 } from "node:url";
2310
2310
  var package_default = {
2311
2311
  name: "@volter/game-editor",
2312
2312
  author: "Volter AI, Inc.",
2313
- version: "0.5.77",
2313
+ version: "0.5.78",
2314
2314
  publishConfig: {
2315
2315
  access: "public"
2316
2316
  },
@@ -2359,22 +2359,22 @@ var package_default = {
2359
2359
  }
2360
2360
  },
2361
2361
  dependencies: {
2362
- "@volter/editor-core": "0.5.77",
2363
- "@volter/editor-game": "0.5.77",
2364
- "@volter/editor-react": "0.5.77",
2365
- "@volter/editor-threejs": "0.5.77",
2366
- "@volter/editor-xstate": "0.5.77",
2367
- "@volter/editor-blender": "0.1.17",
2368
- "@volter/dawproject": "0.5.77",
2369
- "@volter/editor-dawproject": "0.5.77",
2370
- "@volter/blender-engine": "0.1.15",
2371
- "@volter/editor-project": "0.5.77",
2372
- "@volter/editor-sdk": "0.5.77",
2373
- "@volter/editor-live": "0.5.77",
2374
- "@volter/game-live": "0.5.77",
2362
+ "@volter/editor-core": "0.5.78",
2363
+ "@volter/editor-game": "0.5.78",
2364
+ "@volter/editor-react": "0.5.78",
2365
+ "@volter/editor-threejs": "0.5.78",
2366
+ "@volter/editor-xstate": "0.5.78",
2367
+ "@volter/editor-blender": "0.1.18",
2368
+ "@volter/dawproject": "0.5.78",
2369
+ "@volter/editor-dawproject": "0.5.78",
2370
+ "@volter/blender-engine": "0.1.16",
2371
+ "@volter/editor-project": "0.5.78",
2372
+ "@volter/editor-sdk": "0.5.78",
2373
+ "@volter/editor-live": "0.5.78",
2374
+ "@volter/game-live": "0.5.78",
2375
2375
  "@modelcontextprotocol/sdk": "1.30.0",
2376
- "@volter/game-runtime": "0.5.77",
2377
- "@volter/threejs-runtime": "0.5.77",
2376
+ "@volter/game-runtime": "0.5.78",
2377
+ "@volter/threejs-runtime": "0.5.78",
2378
2378
  undici: "7.29.1",
2379
2379
  typescript: "5.9.3",
2380
2380
  "@colyseus/schema": "^4.0.14",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@volter/game-editor",
3
3
  "author": "Volter AI, Inc.",
4
- "version": "0.5.77",
4
+ "version": "0.5.78",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -50,22 +50,22 @@
50
50
  }
51
51
  },
52
52
  "dependencies": {
53
- "@volter/editor-core": "0.5.77",
54
- "@volter/editor-game": "0.5.77",
55
- "@volter/editor-react": "0.5.77",
56
- "@volter/editor-threejs": "0.5.77",
57
- "@volter/editor-xstate": "0.5.77",
58
- "@volter/editor-blender": "0.1.17",
59
- "@volter/dawproject": "0.5.77",
60
- "@volter/editor-dawproject": "0.5.77",
61
- "@volter/blender-engine": "0.1.15",
62
- "@volter/editor-project": "0.5.77",
63
- "@volter/editor-sdk": "0.5.77",
64
- "@volter/editor-live": "0.5.77",
65
- "@volter/game-live": "0.5.77",
53
+ "@volter/editor-core": "0.5.78",
54
+ "@volter/editor-game": "0.5.78",
55
+ "@volter/editor-react": "0.5.78",
56
+ "@volter/editor-threejs": "0.5.78",
57
+ "@volter/editor-xstate": "0.5.78",
58
+ "@volter/editor-blender": "0.1.18",
59
+ "@volter/dawproject": "0.5.78",
60
+ "@volter/editor-dawproject": "0.5.78",
61
+ "@volter/blender-engine": "0.1.16",
62
+ "@volter/editor-project": "0.5.78",
63
+ "@volter/editor-sdk": "0.5.78",
64
+ "@volter/editor-live": "0.5.78",
65
+ "@volter/game-live": "0.5.78",
66
66
  "@modelcontextprotocol/sdk": "1.30.0",
67
- "@volter/game-runtime": "0.5.77",
68
- "@volter/threejs-runtime": "0.5.77",
67
+ "@volter/game-runtime": "0.5.78",
68
+ "@volter/threejs-runtime": "0.5.78",
69
69
  "undici": "7.29.1",
70
70
  "typescript": "5.9.3",
71
71
  "@colyseus/schema": "^4.0.14",
@@ -1 +0,0 @@
1
- import{a as t}from"./jsx-runtime-DPjLkJKQ.js";import{Object3DSnapshotDocument as m}from"./EntityModelDocument--Mnf5gfu.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./editor-shell-store-C04XLLU-.js";import"./output-pass-HurwNl0G.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./Pass-D1MRT672.js";import"./editor-layers-BpAhxn0P.js";import"./workspace-arrangement-BjHQJUoD.js";import"./index-GOaZz_UJ.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./user-data-BDBZj06-.js";import"./entity-object-DsAYI3gJ.js";import"./three-contract-Dkt6PmWY.js";import"./live-mixers-B-bwLZ7c.js";import"./asset-preview-C-SzfMmZ.js";import"./renderer-ownership-BovSEcLv.js";import"./hierarchy-marks-MeNgbwiP.js";import"./studio-environment-BiC6OVkT.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./bitmap-label-Ct4k6ehY.js";import"./StageHost-eSViLdbz.js";import"./three-state-CzjS3Z7g.js";import"./standard-viewport-dressing-D4bfoK0I.js";import"./content-bounds-IMXYkN3x.js";import"./preview-renderer-BrYNFV1p.js";import"./live-gesture-lock-DJbrjOqf.js";import"./model-inspection-B0GymTL8.js";import"./three-viewport-presentation-OxBEdgIP.js";import"./clip-planes-CnAI6DZn.js";import"./three-CQcV_QdT.js";import"./component-instance-root-BZXekKMG.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./model-thumbnail-C6xWKVgL.js";import"./OrbitControls-B13MKuwC.js";import"./LineSegments2-DN9pUfWA.js";import"./three.quarks.esm-C_HmSKXo.js";import"./three-integration-BjEyDiTB.js";import"./host-hierarchy-objects-BV3WqU2w.js";import"./layered-pick-B3AjYd-G.js";import"./root-stacking-BEd9ZvxC.js";import"./object3d-document-session-registry-q7c_gezv.js";import"./viewport-door-Slxb_SvE.js";import"./scene-framing-B5dto0bO.js";import"./source-object3d-authoring-adapter-D6uGhge2.js";import"./three-projection-core-CkmVzWhv.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./transport-strip-D55r6FTk.js";import"./viewport-surface-status-C4UZ_Uq4.js";function ut({previewKey:o,object:r,displayName:i,fill:p=!1}){return t.jsx("div",{"data-testid":"inspector-object-preview",style:p?{position:"absolute",inset:0,overflow:"hidden"}:{width:"100%",height:220,minHeight:220,borderBottom:"1px solid var(--volter-structural-divider)",overflow:"hidden",position:"relative"},children:t.jsx(m,{documentId:`inspector-preview:${o}`,source:r,displayName:i,active:!0,chromeless:!0})})}export{ut as InspectorObjectPreview};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/StageHost-eSViLdbz.js","assets/index-GOaZz_UJ.js","assets/index-nmcBqr7Y.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/three-state-CzjS3Z7g.js","assets/editor-shell-store-C04XLLU-.js","assets/output-pass-HurwNl0G.js","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/Pass-D1MRT672.js","assets/editor-layers-BpAhxn0P.js","assets/workspace-arrangement-BjHQJUoD.js","assets/user-data-BDBZj06-.js","assets/entity-object-DsAYI3gJ.js","assets/three-contract-Dkt6PmWY.js","assets/standard-viewport-dressing-D4bfoK0I.js","assets/content-bounds-IMXYkN3x.js","assets/hierarchy-marks-MeNgbwiP.js","assets/environment-Dg-YaLsA.js","assets/RoomEnvironment-BkknvS_I.js","assets/EXRLoader-CITMBvGd.js","assets/HDRLoader-BTGuGhVo.js","assets/preview-renderer-BrYNFV1p.js","assets/renderer-ownership-BovSEcLv.js","assets/live-mixers-B-bwLZ7c.js","assets/live-gesture-lock-DJbrjOqf.js","assets/model-inspection-B0GymTL8.js","assets/three-viewport-presentation-OxBEdgIP.js","assets/clip-planes-CnAI6DZn.js","assets/three-CQcV_QdT.js","assets/component-instance-root-BZXekKMG.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/model-thumbnail-C6xWKVgL.js","assets/studio-environment-BiC6OVkT.js","assets/KTX2Loader-CaqVE6nY.js","assets/GLTFLoader-KeoruJgS.js","assets/BufferGeometryUtils-B22h7jo4.js","assets/OrbitControls-B13MKuwC.js","assets/LineSegments2-DN9pUfWA.js","assets/three.quarks.esm-C_HmSKXo.js","assets/three-integration-BjEyDiTB.js","assets/host-hierarchy-objects-BV3WqU2w.js","assets/layered-pick-B3AjYd-G.js","assets/root-stacking-BEd9ZvxC.js","assets/object3d-document-session-registry-q7c_gezv.js","assets/viewport-door-Slxb_SvE.js","assets/asset-preview-C-SzfMmZ.js","assets/bitmap-label-Ct4k6ehY.js","assets/scene-framing-B5dto0bO.js","assets/source-object3d-authoring-adapter-D6uGhge2.js","assets/three-projection-core-CkmVzWhv.js","assets/editor-presentation-activity-CqJH4G9t.js","assets/transport-strip-D55r6FTk.js","assets/viewport-surface-status-C4UZ_Uq4.js"])))=>i.map(i=>d[i]);
2
- import{ae as r,_ as a}from"./index-GOaZz_UJ.js";import{a as o}from"./jsx-runtime-DPjLkJKQ.js";import{r as n}from"./index-nmcBqr7Y.js";import{V as c,O as u}from"./viewport-surface-status-C4UZ_Uq4.js";const s=n.lazy(async()=>({default:(await a(()=>import("./StageHost-eSViLdbz.js").then(e=>e.S),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60]))).Object3DDocumentViewport}));function l(t){return i(t.documentId,t.chromeless),o.jsx(n.Suspense,{fallback:o.jsx(c,{testId:"object3d-document-loading",children:u}),children:o.jsx(s,{...t})})}function i(t,e=!1){n.useEffect(()=>{if(!e)return r(t)},[t,e])}export{l as O};
@@ -1 +0,0 @@
1
- import{J as i,r as m}from"./index-GOaZz_UJ.js";import{e as p}from"./game-network-C3D1ib_r.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-qMZlzFCw.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-D4XNZdHk.js";import"./contract-system-adapters-DAgN02qJ.js";import"./game-contract-seams-Kcb8YGio.js";import"./seeded-random-WDTtjPze.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-CYeuVCYr.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-bQE2NA0D.js";import"./live-project-verbs-DR_q7RK-.js";import"./capability-coverage-DiBzUjdM.js";import"./edit-mode-authoring-BGGW26LN.js";import"./json-history-resource-Cby5jKsw.js";import"./binding-resolver-CGsJLZOI.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-DbZYHQSf.js";import"./canvas-entry-runtime-cJsqLXEp.js";import"./three-ingest-runtime-E3dJH9KF.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./active-ingest-B0RHbDkD.js";import"./ingest-source-persistence-DM9T5S4m.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-B6vzusDX.js";import"./mounted-authoring-CZw66UYV.js";import"./entity-object-DsAYI3gJ.js";import"./user-data-BDBZj06-.js";import"./workspace-arrangement-BjHQJUoD.js";import"./three-contract-Dkt6PmWY.js";import"./three-CQcV_QdT.js";import"./editor-layers-BpAhxn0P.js";import"./component-instance-root-BZXekKMG.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-D3qfWIRk.js";import"./source-persistence-backend-CxVBXGoQ.js";import"./three-projection-core-CkmVzWhv.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-Dc4KkqeK.js";import"./deferred-ingest-play-CrBHt1VV.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-4sStON8E.js";import"./board-guides-DUTllrm6.js";import"./relative-import-specifier-B0yhWWcj.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-CD61yjth.js";import"./inference-diagnostics-DH6OpJZI.js";import"./writer-tw6EcuVO.js";import"./three-state-CzjS3Z7g.js";import"./editor-shell-store-C04XLLU-.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-Slxb_SvE.js";import"./game-surface-defaults-D8S4cRxi.js";const Rt="workspace.service";function e(o){p().catch(t=>{m().console.error(`${o}: ${t instanceof Error?t.message:String(t)}`,"play")})}function Ut(){let o,t=!1;const r=i(()=>{t||new URLSearchParams(window.location.search).get("play")==="1"&&(t=!0,o=window.setTimeout(()=>e("Could not enter requested Play mode"),0))});return()=>{o!==void 0&&window.clearTimeout(o),r()}}export{Rt as point,Ut as start};
@@ -1,2 +0,0 @@
1
- import{b as y,a as k,S as p,P as _,s as P,o as B}from"./worker-jepHAPPr.js";import{s as A}from"./session-CeyQA0Dv.js";async function $(o){const a=await fetch(o);if(!a.ok)throw new Error(`${o}: HTTP ${a.status}`);const e=await a.text(),r={exports:{}},i=new Function("module","exports","define",`${e}
2
- return typeof createBlenderModule === 'function' ? createBlenderModule : module.exports;`)(r,r.exports,void 0);if(typeof i!="function")throw new Error("blender_browser.js did not produce a module factory");return i}const I=new TextEncoder;function N(o,a){let e="";for(const r of a.split("/").filter(Boolean))o.FS_createPath(e||"/",r,!0,!0),e+=`/${r}`}function D(o){const a=o.FS;return{readFile:async e=>a.readFile(e),writeFile:async(e,r)=>a.writeFile(e,r),mkdirTree:async e=>a.mkdirTree(e),readdir:async e=>a.readdir(e),stat:async e=>{let r;try{r=a.stat(e)}catch{return null}const n=r.mtime;return{size:r.size,mode:r.mode??0,mtimeMs:typeof n=="number"?n:n?.getTime()??0}},unlink:async e=>a.unlink(e)}}const L="volter-blender-artifacts";async function m(o,a){const e=y(o);if(!a||typeof caches>"u")return fetch(e);const r=`${e}?sha256=${a}`,n=await caches.open(L),i=await n.match(r);if(i)return i;const l=await fetch(e);if(!l.ok)return l;for(const c of await n.keys())c.url.startsWith(`${e}?sha256=`)&&c.url!==r&&await n.delete(c);const s=new Response(await l.blob(),{headers:{"content-type":l.headers.get("content-type")??"application/octet-stream"}});return await n.put(r,s.clone()),s}async function C(o,a){if(!self.crossOriginIsolated)throw new Error("Headless Blender needs SharedArrayBuffer, so the editor page has to be cross-origin isolated (Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy on every response). This worker reports crossOriginIsolated=false.");const e=y("blender_browser.js"),r=a.digests??{},[n,i]=await Promise.all([$(e),m("blender_browser.data",r["blender_browser.data"]).then(async t=>{if(!t.ok)throw new Error(`blender_browser.data: HTTP ${t.status}`);return t.arrayBuffer()})]);let l=null;const s=performance.now();let c=null;const u=(t,f)=>{f.startsWith("@@VOLTER-READY ")&&(c=f.slice(15)),o.log(f.startsWith("@@VOLTER-WARN")||f.startsWith("@@VOLTER-ERROR")?"error":"log",f)},d=await n({arguments:["--background","--factory-startup","--python",k],locateFile:t=>y(t),getPreloadedPackage:()=>i,instantiateWasm:(t,f)=>((async()=>{const w=await m("blender_browser.wasm",r["blender_browser.wasm"]);if(!w.ok)throw new Error(`blender_browser.wasm: HTTP ${w.status}`);const{instance:O,module:F}=await WebAssembly.instantiateStreaming(w,t);f(O,F)})().catch(w=>{l=w}),{}),mainScriptUrlOrBlob:e,print:t=>u("log",t),printErr:t=>u("error",t),preRun:[t=>{t.ENV??={},Object.assign(t.ENV,{BLENDER_SYSTEM_RESOURCES:"/bw",BLENDER_SYSTEM_PYTHON:"/bw/python",BLENDER_SYSTEM_SCRIPTS:"/bw/scripts",BLENDER_SYSTEM_DATAFILES:"/bw/datafiles",VOLTER_SESSION_ROOT:p,HOME:"/root",TMPDIR:"/tmp"});for(const f of["/tmp","/root","/work",p,..._,o.project])N(t,f);t.FS_createDataFile(p,"session.py",I.encode(A),!0,!0,!0)}]});for(;c===null;){if(l)throw l instanceof Error?l:new Error(String(l));await P(5)}const g=performance.now()-s,T=JSON.parse(c);let E=null;if(typeof d.releasePreloadedFileData=="function"){const t=d.releasePreloadedFileData();E=t.bytes,o.log("log",`blender: released the preloaded ${(t.bytes/1048576).toFixed(0)} MB payload (${t.files} files); WasmFS already holds it`)}else o.log("error","blender: this bundle has no releasePreloadedFileData, so the ~55 MB packed .data payload stays resident beside the copy WasmFS made of it — relink with the recipe's --post-js (recipe/release-preloaded-file-data.js).");const h=d.FS;let S="";for(const t of`${o.project}`.split("/").filter(Boolean)){S+=`/${t}`;try{h.chmod(S,511)}catch{}}for(const t of["/work","/tmp","/root",p,..._])try{h.chmod(t,511)}catch{}const b=D(d);h.chmod("/bw/datafiles",493),await M(b,r["essentials.bin"]);const{request:R}=B(b,o);return{skew:"emscripten",banner:T,files:b,request:R,readArena:async()=>d.HEAPU8.subarray(d._blender_web_export_buffer(),d._blender_web_export_buffer()+d._blender_web_export_buffer_size()),bootMs:g,memoryBytes:()=>d.HEAPU8.length,releasedPayloadBytes:E}}async function M(o,a){const[e,r]=await Promise.all([fetch(y("essentials.json")),m("essentials.bin",a)]);if(!e.ok||!r.ok)throw new Error(`Blender Essentials assets are missing (${e.status}/${r.status})`);const n=await e.json(),i=await r.arrayBuffer(),l=Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256",i)),s=>s.toString(16).padStart(2,"0")).join("");if(i.byteLength!==n.bytes||l!==n.sha256)throw new Error("Blender Essentials payload does not match its source manifest");for(const s of n.files){if(!s.path||s.path.includes("\\")||s.path.split("/").some(u=>!u||u==="."||u==="..")||!Number.isInteger(s.offset)||!Number.isInteger(s.bytes)||s.offset<0||s.bytes<0||s.offset+s.bytes>i.byteLength)throw new Error(`Invalid Blender Essentials file: ${s.path}`);const c=`/bw/datafiles/assets/${s.path}`;await o.mkdirTree(c.slice(0,c.lastIndexOf("/"))),await o.writeFile(c,new Uint8Array(i,s.offset,s.bytes))}}export{C as startEmscriptenBlenderEngine};
@@ -1,2 +0,0 @@
1
- import{S as h,P as k,a as f,b as E,s as A,A as R,o as B}from"./worker-jepHAPPr.js";import{s as L}from"./session-CeyQA0Dv.js";const d="/bw",g=`${h}/frame.bin`;async function p(e){const r=E(`wali/${e}`);try{return await import(r)}catch(n){throw new Error(`The substrate skew needs ${e}, which this editor serves from the WALI pack directory beside blender.wasm (${r}): ${n instanceof Error?n.message:String(n)}`)}}async function P(e,r){const n=performance.now(),y=await fetch(E("runtime.idx"));if(!y.ok)throw new Error(`${R}/runtime.idx answered ${y.status}`);const m=await y.json(),w=await fetch(E("runtime.bin"));if(!w.ok)throw new Error(`${R}/runtime.bin answered ${w.status}`);const s=new Uint8Array(await w.arrayBuffer());let t=0;for(const i of m.files){if(t+i.size>s.byteLength)throw new Error(`Blender runtime ${i.path}: bytes ${t}..${t+i.size} lie outside the ${s.byteLength}-byte runtime blob`);const l=`${d}/${i.path}`;e.mkdirSync(l.slice(0,l.lastIndexOf("/")),{recursive:!0}),e.writeFileSync(l,s.subarray(t,t+i.size)),t+=i.size}if(t!==s.byteLength)throw new Error(`Blender runtime index accounts for ${t} of the ${s.byteLength} bytes served`);const a=Math.round(performance.now()-n);return r("log",`blender: staged Blender's ${m.files.length}-file runtime tree in ${a} ms`),{files:m.files.length,bytes:s.byteLength,ms:a}}function _(e){return{readFile:r=>e.readFile(r),writeFile:async(r,n)=>e.writeFileSync(r,n),mkdirTree:async r=>e.mkdirSync(r,{recursive:!0}),readdir:async r=>e.readdirSync(r),stat:async r=>{if(!e.existsSync(r))return null;const n=e.statSync(r);return{size:n.size,mode:n.mode&4095|(n.isDirectory()?16384:32768),mtimeMs:n.mtimeMs}},unlink:async r=>e.unlinkSync(r)}}async function N(e,r){const n=performance.now(),[y,m]=await Promise.all([p("browser-wali/worker-program.js"),p("browser-runtime/browser-memory-filesystem.js")]),w=y.BrowserWaliWorkerProgram,s=m.BrowserMemoryFileSystem;if(!w||!s)throw new Error("The substrate modules this editor served do not export BrowserWaliWorkerProgram and BrowserMemoryFileSystem; the WALI pack directory holds a browser-substrate this engine does not know.");const t=new s;for(const o of["/tmp","/root","/work",h,...k,e.project])t.mkdirSync(o,{recursive:!0});await P(t,e.log),t.writeFileSync(f,L);const a=r.workers??{pool:16,blender:4},i=new w(t,{url:E("blender.wasm"),...r.integrity?{integrity:r.integrity}:{},cwd:"/work",env:{HOME:"/root",TMPDIR:"/tmp",PATH:"/usr/bin:/bin",BLENDER_SYSTEM_RESOURCES:d,BLENDER_SYSTEM_SCRIPTS:`${d}/scripts`,BLENDER_SYSTEM_DATAFILES:`${d}/datafiles`,BLENDER_SYSTEM_PYTHON:`${d}/python`,PYTHONPATH:`${d}/python/lib/numpy313.zip:${d}/python/lib/wheels313.zip`,VOLTER_SESSION_ROOT:h,VOLTER_EXPORT_BUFFER_PATH:g},threadPoolSize:a.pool,network:{allowedHosts:[],maxConnections:0,maxBytes:0}});let l=null,c=null;const S=o=>{for(const u of o.split(`
2
- `))u!==""&&(u.startsWith("@@VOLTER-READY ")&&(l=u.slice(15)),e.log(u.startsWith("@@VOLTER-WARN")||u.startsWith("@@VOLTER-ERROR")?"error":"log",u))};for(i.run(["/blender","-b","--factory-startup","-noaudio","--python-use-system-env","-t",String(a.blender),"--python",f],{onStdout:S,onStderr:S,onDiagnostic:o=>e.log("error",`@@VOLTER-ERROR ${o}`)}).then(o=>{c=`Blender exited ${o.exitCode}`},o=>{c=o instanceof Error?o.message:String(o)}).finally(()=>{c!==null&&e.log("error",`@@VOLTER-ERROR the Blender program ended: ${c}`)});l===null;){if(c!==null)throw new Error(`Blender never reached its session: ${c}`);await A(5)}const T=performance.now()-n,$=JSON.parse(l);e.log("log",`blender: the substrate skew is up (${a.blender} Blender threads in a pool of ${a.pool}; Blender is SERIAL without -t N and says so)`);const b=_(t),{request:O}=B(b,e,()=>c);return{skew:"wali",banner:$,files:b,request:O,readArena:()=>t.readFile(g),bootMs:T,memoryBytes:()=>null,releasedPayloadBytes:null}}export{N as startWaliBlenderEngine};
@@ -1 +0,0 @@
1
- import{ab as m}from"./index-GOaZz_UJ.js";import{b as p,a as e,c as n,s}from"./game-network-C3D1ib_r.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-qMZlzFCw.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-D4XNZdHk.js";import"./contract-system-adapters-DAgN02qJ.js";import"./game-contract-seams-Kcb8YGio.js";import"./seeded-random-WDTtjPze.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-CYeuVCYr.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-bQE2NA0D.js";import"./live-project-verbs-DR_q7RK-.js";import"./capability-coverage-DiBzUjdM.js";import"./edit-mode-authoring-BGGW26LN.js";import"./json-history-resource-Cby5jKsw.js";import"./binding-resolver-CGsJLZOI.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-DbZYHQSf.js";import"./canvas-entry-runtime-cJsqLXEp.js";import"./three-ingest-runtime-E3dJH9KF.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./active-ingest-B0RHbDkD.js";import"./ingest-source-persistence-DM9T5S4m.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-B6vzusDX.js";import"./mounted-authoring-CZw66UYV.js";import"./entity-object-DsAYI3gJ.js";import"./user-data-BDBZj06-.js";import"./workspace-arrangement-BjHQJUoD.js";import"./three-contract-Dkt6PmWY.js";import"./three-CQcV_QdT.js";import"./editor-layers-BpAhxn0P.js";import"./component-instance-root-BZXekKMG.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-D3qfWIRk.js";import"./source-persistence-backend-CxVBXGoQ.js";import"./three-projection-core-CkmVzWhv.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-Dc4KkqeK.js";import"./deferred-ingest-play-CrBHt1VV.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-4sStON8E.js";import"./board-guides-DUTllrm6.js";import"./relative-import-specifier-B0yhWWcj.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-CD61yjth.js";import"./inference-diagnostics-DH6OpJZI.js";import"./writer-tw6EcuVO.js";import"./three-state-CzjS3Z7g.js";import"./editor-shell-store-C04XLLU-.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-Slxb_SvE.js";import"./game-surface-defaults-D8S4cRxi.js";const zt="workspace.command",a=()=>({ok:!1,error:"not in play mode — start play before using the debug seam"}),Bt={"set-instance-count":{derivedRefresh:"always",handle:o=>{if(!e())return a();const r=o.names;if(Array.isArray(r)&&r.every(i=>typeof i=="string"))return r.length<1?{ok:!1,error:'set-instance-count "names" must have at least one entry.'}:(n(r),{ok:!0});const t=o.count;return typeof t!="number"||!Number.isFinite(t)||t<1?{ok:!1,error:`set-instance-count requires a whole "count" >= 1 (or a "names" array), got ${String(t)}.`}:(s(Math.floor(t)-1),{ok:!0})}},"list-instances":{derivedRefresh:"if-content-changed",handle:()=>({ok:!0,data:{instances:m(),named:p()}})}};export{Bt as commands,zt as point};
@@ -1 +0,0 @@
1
- import{i as t}from"./game-network-C3D1ib_r.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-GOaZz_UJ.js";import"./index-nmcBqr7Y.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./native-debug-module-qMZlzFCw.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-D4XNZdHk.js";import"./contract-system-adapters-DAgN02qJ.js";import"./game-contract-seams-Kcb8YGio.js";import"./seeded-random-WDTtjPze.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-CYeuVCYr.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-bQE2NA0D.js";import"./live-project-verbs-DR_q7RK-.js";import"./capability-coverage-DiBzUjdM.js";import"./edit-mode-authoring-BGGW26LN.js";import"./json-history-resource-Cby5jKsw.js";import"./binding-resolver-CGsJLZOI.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-DbZYHQSf.js";import"./canvas-entry-runtime-cJsqLXEp.js";import"./three-ingest-runtime-E3dJH9KF.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./active-ingest-B0RHbDkD.js";import"./ingest-source-persistence-DM9T5S4m.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-B6vzusDX.js";import"./mounted-authoring-CZw66UYV.js";import"./entity-object-DsAYI3gJ.js";import"./user-data-BDBZj06-.js";import"./workspace-arrangement-BjHQJUoD.js";import"./three-contract-Dkt6PmWY.js";import"./three-CQcV_QdT.js";import"./editor-layers-BpAhxn0P.js";import"./component-instance-root-BZXekKMG.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-D3qfWIRk.js";import"./source-persistence-backend-CxVBXGoQ.js";import"./three-projection-core-CkmVzWhv.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-Dc4KkqeK.js";import"./deferred-ingest-play-CrBHt1VV.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-4sStON8E.js";import"./board-guides-DUTllrm6.js";import"./relative-import-specifier-B0yhWWcj.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-CD61yjth.js";import"./inference-diagnostics-DH6OpJZI.js";import"./writer-tw6EcuVO.js";import"./three-state-CzjS3Z7g.js";import"./editor-shell-store-C04XLLU-.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-Slxb_SvE.js";import"./game-surface-defaults-D8S4cRxi.js";const zt="workspace.service";function At(){t()}export{zt as point,At as start};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/r3f-design-session-BpFmOBy3.js","assets/index-GOaZz_UJ.js","assets/index-nmcBqr7Y.js","assets/_commonjsHelpers-D6-XlEtG.js","assets/index-D_NuPfjr.js","assets/jsx-runtime-DPjLkJKQ.js","assets/index-CtzuWnCS.js","assets/index-CinJrH5C.js","assets/index-FUuS4qwW.js","assets/client-DNXj_opT.js","assets/index-CPiRKiDC.css","assets/edit-mode-authoring-BGGW26LN.js","assets/game-network-C3D1ib_r.js","assets/index-OZVqp6xS.js","assets/index-Da9JhEvW.js","assets/native-debug-module-qMZlzFCw.js","assets/native-entry-surface-BE8LJNdu.js","assets/debug-registry-D4XNZdHk.js","assets/contract-system-adapters-DAgN02qJ.js","assets/game-contract-seams-Kcb8YGio.js","assets/seeded-random-WDTtjPze.js","assets/game-audio-BeCyd0Ha.js","assets/rapier-physics-adapter-CaZqWLu0.js","assets/events-156d8d12.esm-CYeuVCYr.js","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/index-bQE2NA0D.js","assets/live-project-verbs-DR_q7RK-.js","assets/capability-coverage-DiBzUjdM.js","assets/json-history-resource-Cby5jKsw.js","assets/binding-resolver-CGsJLZOI.js","assets/adapter-surface-Y37Nzcyw.js","assets/structural-signature-Dc7skRiy.js","assets/webgl-frame-capture-DdJkM2mi.js","assets/realm-services-DbZYHQSf.js","assets/canvas-entry-runtime-cJsqLXEp.js","assets/three-ingest-runtime-E3dJH9KF.js","assets/EffectComposer-BEAt0PtQ.js","assets/CopyShader-BzTUYzf6.js","assets/ShaderPass-DTnDQXm0.js","assets/Pass-D1MRT672.js","assets/CSS3DRenderer-BsAqfavI.js","assets/relative-path-guard-GiM7Lsz8.js","assets/react-root-BHA-cdrW.js","assets/editor-presentation-activity-CqJH4G9t.js","assets/active-ingest-B0RHbDkD.js","assets/ingest-source-persistence-DM9T5S4m.js","assets/pixi-story-model-DNkfnWUV.js","assets/surface-content-Dg9Kkazf.js","assets/viewport-root-presentation-B6vzusDX.js","assets/mounted-authoring-CZw66UYV.js","assets/entity-object-DsAYI3gJ.js","assets/user-data-BDBZj06-.js","assets/workspace-arrangement-BjHQJUoD.js","assets/three-contract-Dkt6PmWY.js","assets/three-CQcV_QdT.js","assets/editor-layers-BpAhxn0P.js","assets/component-instance-root-BZXekKMG.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/three-authoring-adapter-D3qfWIRk.js","assets/source-persistence-backend-CxVBXGoQ.js","assets/three-projection-core-CkmVzWhv.js","assets/body-marks-C1LxJtQb.js","assets/user-data-CODoGZqA.js","assets/object-marks-BnvSuCTt.js","assets/structural-ids-BOo2BRoY.js","assets/object3d-authoring-subject-XccsO0xG.js","assets/r3f-physics-binding-Dc4KkqeK.js","assets/deferred-ingest-play-CrBHt1VV.js","assets/rrweb-Cd2ifIRP.js","assets/react-world-authoring-adapter-4sStON8E.js","assets/board-guides-DUTllrm6.js","assets/relative-import-specifier-B0yhWWcj.js","assets/story-arg-descriptors-Ek86ExX7.js","assets/inspect-CD61yjth.js","assets/inference-diagnostics-DH6OpJZI.js","assets/writer-tw6EcuVO.js","assets/three-state-CzjS3Z7g.js","assets/editor-shell-store-C04XLLU-.js","assets/output-pass-HurwNl0G.js","assets/viewport-door-Slxb_SvE.js","assets/game-surface-defaults-D8S4cRxi.js","assets/scene-framing-B5dto0bO.js","assets/assets-BcrMQHRv.js","assets/loader-BTUKnX5Q.js","assets/KTX2Loader-CaqVE6nY.js","assets/GLTFLoader-KeoruJgS.js","assets/BufferGeometryUtils-B22h7jo4.js","assets/create-runtime-B4VUkWmh.js","assets/binding-Bmxqznjk.js","assets/root-stacking-BEd9ZvxC.js","assets/setup-renderer-D9SD_Wht.js","assets/index-DHhMOs_s.js","assets/defaults-DKiBJCPN.js","assets/render-settings-C81L61oc.js","assets/render-features-B35P-in2.js","assets/loop-gate-report-N52EWFGD.js","assets/system-slot-E2mEdiih.js","assets/performance-profiler-CMbwGBuk.js","assets/live-gesture-lock-DJbrjOqf.js"])))=>i.map(i=>d[i]);
2
- import{_ as s,az as n}from"./index-GOaZz_UJ.js";import{r as a}from"./design-time-mount-registry-DUpXCg1U.js";import{q as c}from"./edit-mode-authoring-BGGW26LN.js";import{a as u}from"./json-history-resource-Cby5jKsw.js";import{o as h}from"./three-authoring-adapter-D3qfWIRk.js";import{t as i}from"./editor-shell-store-C04XLLU-.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./component-instance-root-BZXekKMG.js";import"./user-data-BDBZj06-.js";import"./workspace-arrangement-BjHQJUoD.js";import"./source-persistence-backend-CxVBXGoQ.js";import"./ingest-source-persistence-DM9T5S4m.js";import"./three-projection-core-CkmVzWhv.js";import"./editor-layers-BpAhxn0P.js";import"./three-CQcV_QdT.js";import"./entity-object-DsAYI3gJ.js";import"./three-contract-Dkt6PmWY.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three.core-3arARmh6.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./r3f-physics-binding-Dc4KkqeK.js";import"./output-pass-HurwNl0G.js";import"./three.module-BLhyNg0e.js";import"./Pass-D1MRT672.js";const U="workspace.service";function X(){const r=s(()=>import("./r3f-design-session-BpFmOBy3.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99]));r.catch(()=>{});const m=n("three",(t,o)=>h(i(t),()=>i(t).scene,o,u(o))),e=a({kind:"three",owner:"@volter/editor-game/three/three-authoring",async mountWorldRootSession(t){const o=t,{mountR3FDesignSession:p}=await r;return p(o.store,o.composite,o.renderer)}});return c(),()=>{e(),m()}}export{U as point,X as start};
@@ -1 +0,0 @@
1
- import{e as r}from"./three-integration-BjEyDiTB.js";import"./index-GOaZz_UJ.js";import"./index-nmcBqr7Y.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-D_NuPfjr.js";import"./jsx-runtime-DPjLkJKQ.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./host-hierarchy-objects-BV3WqU2w.js";import"./renderer-ownership-BovSEcLv.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./preview-renderer-BrYNFV1p.js";import"./environment-Dg-YaLsA.js";import"./RoomEnvironment-BkknvS_I.js";import"./EXRLoader-CITMBvGd.js";import"./HDRLoader-BTGuGhVo.js";import"./layered-pick-B3AjYd-G.js";import"./root-stacking-BEd9ZvxC.js";import"./user-data-BDBZj06-.js";import"./workspace-arrangement-BjHQJUoD.js";import"./model-thumbnail-C6xWKVgL.js";import"./studio-environment-BiC6OVkT.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./object3d-document-session-registry-q7c_gezv.js";import"./three-state-CzjS3Z7g.js";import"./editor-shell-store-C04XLLU-.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./editor-layers-BpAhxn0P.js";import"./entity-object-DsAYI3gJ.js";import"./three-contract-Dkt6PmWY.js";import"./hierarchy-marks-MeNgbwiP.js";import"./component-instance-root-BZXekKMG.js";import"./viewport-door-Slxb_SvE.js";import"./content-bounds-IMXYkN3x.js";import"./asset-preview-C-SzfMmZ.js";import"./bitmap-label-Ct4k6ehY.js";const Q="workspace.service";function R(){return r()}export{Q as point,R as start};
@@ -1 +0,0 @@
1
- import{a as o}from"./jsx-runtime-DPjLkJKQ.js";import{r as t}from"./index-GOaZz_UJ.js";import{r as m}from"./index-nmcBqr7Y.js";import{P as p}from"./PlayBar-DknzqPEC.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-CtzuWnCS.js";import"./index-CinJrH5C.js";import"./index-D_NuPfjr.js";import"./index-FUuS4qwW.js";import"./client-DNXj_opT.js";import"./configurations-B4fNBX4_.js";import"./run-selection-BdiLPzVf.js";import"./game-network-C3D1ib_r.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-qMZlzFCw.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-D4XNZdHk.js";import"./contract-system-adapters-DAgN02qJ.js";import"./game-contract-seams-Kcb8YGio.js";import"./seeded-random-WDTtjPze.js";import"./game-audio-BeCyd0Ha.js";import"./rapier-physics-adapter-CaZqWLu0.js";import"./events-156d8d12.esm-CYeuVCYr.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./index-bQE2NA0D.js";import"./live-project-verbs-DR_q7RK-.js";import"./capability-coverage-DiBzUjdM.js";import"./edit-mode-authoring-BGGW26LN.js";import"./json-history-resource-Cby5jKsw.js";import"./binding-resolver-CGsJLZOI.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-DbZYHQSf.js";import"./canvas-entry-runtime-cJsqLXEp.js";import"./three-ingest-runtime-E3dJH9KF.js";import"./EffectComposer-BEAt0PtQ.js";import"./CopyShader-BzTUYzf6.js";import"./ShaderPass-DTnDQXm0.js";import"./Pass-D1MRT672.js";import"./CSS3DRenderer-BsAqfavI.js";import"./relative-path-guard-GiM7Lsz8.js";import"./react-root-BHA-cdrW.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./active-ingest-B0RHbDkD.js";import"./ingest-source-persistence-DM9T5S4m.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-B6vzusDX.js";import"./mounted-authoring-CZw66UYV.js";import"./entity-object-DsAYI3gJ.js";import"./user-data-BDBZj06-.js";import"./workspace-arrangement-BjHQJUoD.js";import"./three-contract-Dkt6PmWY.js";import"./three-CQcV_QdT.js";import"./editor-layers-BpAhxn0P.js";import"./component-instance-root-BZXekKMG.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-D3qfWIRk.js";import"./source-persistence-backend-CxVBXGoQ.js";import"./three-projection-core-CkmVzWhv.js";import"./body-marks-C1LxJtQb.js";import"./user-data-CODoGZqA.js";import"./object-marks-BnvSuCTt.js";import"./structural-ids-BOo2BRoY.js";import"./object3d-authoring-subject-XccsO0xG.js";import"./r3f-physics-binding-Dc4KkqeK.js";import"./deferred-ingest-play-CrBHt1VV.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-4sStON8E.js";import"./board-guides-DUTllrm6.js";import"./relative-import-specifier-B0yhWWcj.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-CD61yjth.js";import"./inference-diagnostics-DH6OpJZI.js";import"./writer-tw6EcuVO.js";import"./three-state-CzjS3Z7g.js";import"./editor-shell-store-C04XLLU-.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-Slxb_SvE.js";import"./game-surface-defaults-D8S4cRxi.js";const Dr="workspace.header",Fr=0;function Gr(){const{project:r}=t();return m.useSyncExternalStore(r.subscribe,r.mounts,r.mounts)?o.jsx(p,{}):null}export{Gr as default,Fr as order,Dr as point};
@@ -1,2 +0,0 @@
1
- const d="/work/.volter-session",ae=`${d}/session.py`,se=[`${d}/in`,`${d}/reply`],L="/__editor/blender-wasm";function D(e){return new URL(`${L}/${e}`,import.meta.url).href}async function M(){const e=await fetch(D("status"));return e.ok?await e.json():{available:!1,skew:null,dir:null,sizes:{},encoded:{},missing:[`${L}/status answered ${e.status}`]}}async function J(e){const t=await M();if(!t.available)throw new Error(`The headless Blender WebAssembly build is not served by this editor: ${t.missing.join("; ")}`);if(t.skew==="wali"){const{startWaliBlenderEngine:n}=await import("./blender-wali-engine-CZcS3eAd.js");return n(e,t)}const{startEmscriptenBlenderEngine:r}=await import("./blender-emscripten-engine-Cd6az4pU.js");return r(e,t)}function U(e){return e<200?1:e<5e3?5:25}const C=e=>new Promise(t=>setTimeout(t,e)),B=new TextDecoder;function ie(e,t,r){let n=0,a=0;const o=new Set;async function s(u){for(const l of o)u.has(`${l}.done`)||(await e.unlink(`${d}/reply/${l}.json`),await e.unlink(`${d}/reply/${l}.done`),o.delete(l))}async function i(){let u;try{u=await e.readdir(`${d}/ask`)}catch{return}const l=new Set(u.filter(h=>h.endsWith(".done")));await s(l);for(const h of l){const w=h.slice(0,-5);if(Number(w)<=a)continue;a=Number(w);const m=JSON.parse(B.decode(await e.readFile(`${d}/ask/${w}.json`)));let E;try{E=await t.ask(m)}catch(S){E={error:S instanceof Error?S.message:String(S)}}await e.writeFile(`${d}/reply/${w}.json`,JSON.stringify(E??null)),await e.writeFile(`${d}/reply/${w}.done`,"1"),o.add(w)}}async function c(u){const l=String(++n);await e.writeFile(`${d}/in/${l}.json`,JSON.stringify(u)),await e.writeFile(`${d}/in/${l}.done`,"1");const h=performance.now();for(;;){if(await i(),await e.stat(`${d}/out/${l}.done`)){const m=JSON.parse(B.decode(await e.readFile(`${d}/out/${l}.json`)));if(await e.unlink(`${d}/in/${l}.json`),await e.unlink(`${d}/in/${l}.done`),m.error)throw new Error(m.error);return m.result}const w=r?.();if(w)throw new Error(`Blender is gone, so this call will never be answered: ${w}. The session keeps its directory and its cached banner, so every later call would wait on the same missing answer; start a new program with \`blender-start {fresh: true}\` (\`VOLTER_BLENDER_FRESH_SESSION=1\` for the battery harness).`);await C(U(performance.now()-h))}}return{request:c}}const N=e=>typeof e=="object"&&e!==null&&typeof e.offset=="number"&&typeof e.length=="number"&&typeof e.dtype=="string"&&typeof e.count=="number"&&typeof e.stride=="number",W={f32:e=>new Float32Array(e.buffer,e.byteOffset,e.byteLength>>2),f64:e=>new Float64Array(e.buffer,e.byteOffset,e.byteLength>>3),u32:e=>new Uint32Array(e.buffer,e.byteOffset,e.byteLength>>2),i32:e=>new Int32Array(e.buffer,e.byteOffset,e.byteLength>>2),u16:e=>new Uint16Array(e.buffer,e.byteOffset,e.byteLength>>1),i16:e=>new Int16Array(e.buffer,e.byteOffset,e.byteLength>>1),u8:e=>e,i8:e=>new Int8Array(e.buffer,e.byteOffset,e.byteLength)};function z(e,t,r){const n=W[r.dtype];if(!n)throw new Error(`Blender frame column ${t}: unknown dtype ${r.dtype}`);const{offset:a,length:o}=r;if(a<0||o<0||a+o>e.byteLength)throw new Error(`Blender frame column ${t}: bytes ${a}..${a+o} lie outside the ${e.byteLength}-byte export arena`);const s=e.subarray(a,a+o).slice(),i=n(s),c=r.count*r.stride;if(i.length!==c)throw new Error(`Blender frame column ${t}: ${i.length} values, ${c} declared (${r.count} x ${r.stride})`);return i}function H(e,t){const r=(n,a)=>{if(N(n)){const o=z(e,a,n);return a==="co"?Float64Array.from(o):o}if(Array.isArray(n))return n.map(o=>r(o,a));if(typeof n=="object"&&n!==null){const o={};for(const[s,i]of Object.entries(n))o[s]=r(i,s);return o}return n};return r(t,"")}async function V(e,t){const r=async(n,a)=>{if(N(n)){const{offset:o,length:s,dtype:i}=n;if(o<0||s<0||o+s>e.byteLength)throw new Error(`Blender frame column ${a}: bytes ${o}..${o+s} lie outside the ${e.byteLength}-byte export arena`);const c=e.subarray(o,o+s).slice(),u=await crypto.subtle.digest("SHA-256",c),l=[...new Uint8Array(u)].map(h=>h.toString(16).padStart(2,"0")).join("");return{dtype:i,length:s,sha256:l}}if(Array.isArray(n))return Promise.all(n.map(o=>r(o,a)));if(typeof n=="object"&&n!==null){const o={};for(const[s,i]of Object.entries(n))o[s]=await r(i,s);return o}return n};return r(t,"")}const b=e=>self.postMessage(e),k=(e,t)=>b({op:"log",level:e,text:t});let p=null,v=null,G=0;const j=new Map;function K(e,t,r){const n=++G,a=[],o=e;for(const s of[o?.meshes??{},o?.images??{}])for(const i of Object.values(s))for(const c of Object.values(i))ArrayBuffer.isView(c)&&c.buffer instanceof ArrayBuffer&&!a.includes(c.buffer)&&a.push(c.buffer);return new Promise((s,i)=>{j.set(n,{resolve:s,reject:i}),self.postMessage({op:"present",id:n,frame:e,description:t,...r?{capture:r}:{}},a)})}let f=null,$=null,T=!1,A=Promise.resolve();function Q(e){const t=A.then(e);return A=t.catch(()=>{}),t}function P(e){T=e,b({op:"document-dirty",dirty:e})}async function R(){if(!f||$===null)return;const e=$;let t;try{t=await f.request({op:"save-document"})}catch(n){throw new Error(`The Blender document ${e} could not be saved: ${g(n)}`)}if(!t?.saved||typeof t.path!="string")throw new Error(`Blender did not save the document ${e}`);let r;try{r=await f.files.readFile(t.path)}catch(n){throw new Error(`The Blender document ${e} could not be read back out of the engine: ${g(n)}`)}y.delete(t.path);try{const n=await fetch(`/__editor/blender-document?path=${encodeURIComponent(e)}`,{method:"POST",headers:{"content-type":"application/octet-stream"},body:new Blob([r])});if(!n.ok){const a=await n.text().catch(()=>"");throw new Error(`HTTP ${n.status} ${a}`)}}catch(n){throw new Error(`The Blender document ${e} was not written to the project: ${g(n)}`)}P(!1),k("log",`@@VOLTER-DOCUMENT ${JSON.stringify({path:e,bytes:r.length})}`)}async function X(e,t){const r={engine:null},n=await J({project:e,log:k,ask:async({frame:o,capture:s,saveDue:i})=>{if(!r.engine)throw new Error("The Blender session presented before it started");i&&$!==null&&P(!0);const c=await r.engine.readArena(),u=await V(c,o),l=await K(H(c,o),u,s);return{...typeof l.capture=="object"&&l.capture!==null?l.capture:{},..."held"in l?{held:l.held}:{}}}});r.engine=n,f=n,t&&await _(n.files,e);const a=await n.request({op:"start",project:e,...t?{document:t}:{}});return t&&($=t),p={start:async()=>a,execute:async o=>{const s=await n.request({op:"execute",code:o});return s.error?`Error executing code: ${s.error}`:`Code executed successfully: ${s.result}`},sceneInfo:async()=>JSON.stringify(await n.request({op:"scene-info"}),null,2),objectInfo:async o=>JSON.stringify(await n.request({op:"object-info",name:o}),null,2),screenshotView:async o=>(await n.request({op:"present",capture:{size:o}}),JSON.stringify({view:{size:o}}))},{...a,engine:"blender-wasm",skew:n.skew,bootMs:Math.round(n.bootMs),releasedPayloadMB:n.releasedPayloadBytes===null?null:Math.round(n.releasedPayloadBytes/1048576)}}async function Y(){try{const e=await fetch("/__editor/blender-wasm/status");return e.ok?await e.json():{available:!1,missing:[`status answered ${e.status}`]}}catch(e){return{available:!1,missing:[String(e)]}}}async function Z(e,t){if(p)throw new Error("The Blender session is already started");if(!e.startsWith("/"))throw new Error("The Blender session needs the project's absolute path");if(t!==void 0&&!q(t))throw new Error(`The Blender document must be a project-relative .blend path with no traversal (models/model.blend); got ${JSON.stringify(t)}`);const r=await Y();if(!r.available)throw new Error(`Headless Blender is not served by this editor, so there is no modeling engine: ${r.missing.join("; ")}. The engine is Blender compiled to WebAssembly (packages/blender-engine/wasm, or the directory VOLTER_BLENDER_WASM_DIR names); nothing stands in for it.`);return v=e,X(e,t)}function q(e){return!e.endsWith(".blend")||e.startsWith("/")||e.includes("\\")?!1:e.split("/").every(r=>r!==""&&r!=="."&&r!=="..")}const x=new Set;function O(e){x.has(e)||(x.add(e),k("error",e))}async function ee(e){const t=s=>(O(`The project's files are not readable from Python: ${s}`),null);let r;try{r=await fetch("/__editor/blender-project-index")}catch(s){return t(String(s))}if(!r.ok)return t(`/__editor/blender-project-index answered ${r.status}`);let n;try{if(n=await r.json(),typeof n?.root!="string"||!Array.isArray(n.files))return t("invalid project index")}catch(s){return t(String(s))}const{root:a,files:o}=n;return a!==e&&O(`The editor serving this tab has ${a} open, not ${e}; its files are mounted at ${e}, which is where Python is looking.`),o}const y=new Map;async function te(e,t){const r=await e.stat(t);return r?`${r.size}:${r.mtimeMs}`:""}async function _(e,t){const r=await ee(t);if(!r)return;const n=new Set(r.map(a=>`${t}/${a.path}`));for(const a of[...y.keys()])if(!n.has(a)){try{await e.unlink(a)}catch{}y.delete(a)}for(const a of r){const o=`${t}/${a.path}`,s=`${a.size}:${a.mtime}`;if(y.get(o)?.host===s||!y.has(o)&&await e.stat(o)!==null)continue;const i=await fetch(`/__editor/blender-project-file?path=${encodeURIComponent(a.path)}`);if(!i.ok){O(`${a.path}: HTTP ${i.status}`);continue}const c=o.slice(0,o.lastIndexOf("/"));c&&await e.mkdirTree(c),await e.writeFile(o,new Uint8Array(await i.arrayBuffer())),y.set(o,{host:s,engine:await te(e,o)})}}async function ne(e,t){const r=[],n=async a=>{let o;try{o=await e.readdir(a)}catch{return}for(const s of o){if(s==="."||s==="..")continue;const i=`${a.replace(/\/$/,"")}/${s}`,c=await e.stat(i);if(c){if((c.mode&61440)===16384){await n(i);continue}y.get(i)?.engine!==`${c.size}:${c.mtimeMs}`&&r.push({path:i,size:c.size,mtime:c.mtimeMs})}}};return await n(t),r}async function F(e){switch(e.op){case"start":return Z(e.project,e.document);case"present-result":{const n=j.get(e.id);j.delete(e.id),n&&(e.error?n.reject(new Error(e.error)):n.resolve({...e.capture===void 0?{}:{capture:e.capture},..."held"in e?{held:e.held}:{}}));return}}if(!p||!v||!f)throw new Error("The Blender session has not started");const t=f.files,r=f.request.bind(f);switch(e.op){case"flush-document":return T?(await R(),{saved:!0}):{saved:!1};case"history-begin":case"history-end":return r({op:e.op});case"history-step":return r({op:"history-step",token:e.token,direction:e.direction});case"execute":await _(t,v);{const n=await r({op:"execute",code:e.code,history:e.history??!0,label:e.label??"Blender Python"});return n.error?`Error executing code: ${n.error}`:`Code executed successfully: ${n.result}`}case"present":return r({op:"present"});case"scene-info":return p.sceneInfo();case"object-info":return p.objectInfo(e.name);case"rna":return r({op:"rna",path:e.path,...e.names===void 0?{}:{names:e.names}});case"rna-context":return r({op:"rna-context",...e.object===void 0?{}:{object:e.object},...e.collection===void 0?{}:{collection:e.collection}});case"rna-set":return r({op:"rna-set",history:e.history!==!1,path:e.path,property:e.property,value:e.value,...e.index===void 0?{}:{index:e.index}});case"outliner":return r({op:"outliner",...e.selected===void 0?{}:{selected:[...e.selected]}});case"node-tree":return r({op:"node-tree",...e.path===void 0?{}:{path:e.path},...e.material===void 0?{}:{material:e.material}});case"uv-layout":return r({op:"uv-layout",...e.object===void 0?{}:{object:e.object},...e.uvLayer===void 0?{}:{uvLayer:e.uvLayer}});case"rig":return r({op:"rig",...e.object===void 0?{}:{object:e.object}});case"action-clip":return r({op:"action-clip",...e.object===void 0?{}:{object:e.object},...e.bake===void 0?{}:{bake:e.bake}});case"outliner-set":return r({op:"outliner-set",path:e.path,column:e.column,value:e.value});case"screenshot-view":return JSON.parse(await p.screenshotView(e.maxSize));case"read-file":return t.readFile(e.path);case"write-file":{const n=e.path.slice(0,e.path.lastIndexOf("/"));n&&await t.mkdirTree(n),await t.writeFile(e.path,e.bytes),y.delete(e.path);return}case"list-files":return ne(t,e.path)}throw new Error(`Unknown Blender worker request ${e.op}`)}function g(e){if(e instanceof Error)return e.stack??`${e.name}: ${e.message}`;if(typeof e=="object"&&e!==null){const t=e;if(typeof t.message=="string")return typeof t.name=="string"?`${t.name}: ${t.message}`:t.message;try{return JSON.stringify(e)??Object.prototype.toString.call(e)}catch{return Object.prototype.toString.call(e)}}return String(e)}function re(){if(!f)return;const e=f.memoryBytes();e!==null&&b({op:"memory",bytes:e})}self.onmessage=e=>{const t=e.data;if(t.op==="present-result"){F(t);return}Q(()=>oe(t))};async function oe(e){try{const t=await F(e);T&&await R(),await I(),b({id:e.id,result:t})}catch(t){let r=g(t);try{await I()}catch(n){r+=`
2
- Unable to deliver Blender history: ${g(n)}`}b({id:e.id,error:r})}re()}async function I(){if(!f||!p)return;const e=await f.request({op:"history-events"});e.length&&b({op:"history",entries:e})}export{L as A,se as P,d as S,ae as a,D as b,ie as o,C as s};