@volter/game-editor 0.5.124 → 0.5.126
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.
- package/BUNDLED_NOTICES +45 -45
- package/catalog/entries/blender.json +2 -2
- package/catalog/entries/music.json +2 -2
- package/dist/.vite/manifest.json +2227 -2226
- package/dist/assets/{AssetBudgetPanel-B0O4X50L.js → AssetBudgetPanel-Dw0mwjRj.js} +3 -3
- package/dist/assets/{AudioViewer-CH3LcfRR.js → AudioViewer-g6DZTip3.js} +1 -1
- package/dist/assets/{CanvasBoardDocument-D5uztuKW.js → CanvasBoardDocument-CYfvZZhs.js} +1 -1
- package/dist/assets/{CanvasSceneViewport-BrZbAOTB.js → CanvasSceneViewport-_ujBC0Hb.js} +1 -1
- package/dist/assets/{ColorInput-C1jlj79L.js → ColorInput-Dbt7qyP_.js} +1 -1
- package/dist/assets/{ColorPicker-CBibp1DV.js → ColorPicker-BQqtP05Z.js} +1 -1
- package/dist/assets/{EntityModelDocument-Dl5SDGuZ.js → EntityModelDocument-Bd5HLKGv.js} +1 -1
- package/dist/assets/{EnvironmentAssetDocument-dzKoo8zA.js → EnvironmentAssetDocument-CbN5978S.js} +1 -1
- package/dist/assets/{Fbo-BwAOPGSM.js → Fbo-Biv6Lrhl.js} +1 -1
- package/dist/assets/{GameplaySessionTimeline-2Gap_anR.js → GameplaySessionTimeline-CYTcpGtI.js} +1 -1
- package/dist/assets/{Gltf-GjdUJfpn.js → Gltf-CRUmmFxv.js} +1 -1
- package/dist/assets/{ImageViewer-CcnWPIVb.js → ImageViewer-ZP-vqYrn.js} +1 -1
- package/dist/assets/InspectorObjectPreview-C9LL7i9-.js +1 -0
- package/dist/assets/{JsonAssetDocument-C3Cf9pic.js → JsonAssetDocument-mYrrRpaO.js} +1 -1
- package/dist/assets/{LiveModuleDocument-DD-R-kge.js → LiveModuleDocument-cKhhscAn.js} +1 -1
- package/dist/assets/{LutAssetDocument-av3nNdEP.js → LutAssetDocument-D8NoS7X3.js} +1 -1
- package/dist/assets/{ModelAssetDocument-aG_p2ipB.js → ModelAssetDocument-D1DSC4Iu.js} +1 -1
- package/dist/assets/{NonThreeAuthoringBootstrap-uodaC2WY.js → NonThreeAuthoringBootstrap-B16sst3N.js} +1 -1
- package/dist/assets/{Object3DDocumentToolbar-CjeNBjn2.js → Object3DDocumentToolbar-HpLpBnxB.js} +1 -1
- package/dist/assets/Object3DDocumentViewport-Dutf8dw1.js +2 -0
- package/dist/assets/{Object3DPreview-Dwv8fjtP.js → Object3DPreview-BDcnPwtN.js} +1 -1
- package/dist/assets/{OnlineAssetDetail-BAODYjE0.js → OnlineAssetDetail-CmsuIyHO.js} +1 -1
- package/dist/assets/{OrbitControls-DqeA2OK1.js → OrbitControls-C6LQ4Pxi.js} +1 -1
- package/dist/assets/{OrthographicCamera-QGDXU8-_.js → OrthographicCamera-Bv8_A2mi.js} +1 -1
- package/dist/assets/{PerspectiveCamera-CzyDwUe8.js → PerspectiveCamera-D3r6Hnc8.js} +1 -1
- package/dist/assets/{PlayBar-C9H-JvF6.js → PlayBar-B-wzdW50.js} +1 -1
- package/dist/assets/{QuarksAssetDocument-HgCY79lp.js → QuarksAssetDocument-BdQ1jC4o.js} +1 -1
- package/dist/assets/{ReactCanvasControls-6R1ScchS.js → ReactCanvasControls-ktCc-GId.js} +1 -1
- package/dist/assets/{RootSelectionOverlay-wNtt8YyE.js → RootSelectionOverlay-FbwqJC6K.js} +1 -1
- package/dist/assets/{ShaderAssetDocument-Do-plAfD.js → ShaderAssetDocument-BhlIcpVE.js} +1 -1
- package/dist/assets/{ShadowEditor-DMgF4NoN.js → ShadowEditor-B7VnLK5D.js} +1 -1
- package/dist/assets/{SourceAssetViewer-DSdUCfmU.js → SourceAssetViewer-CIy0LlGq.js} +1 -1
- package/dist/assets/{StageHost-VS7M7pym.js → StageHost-BnK5_8Ju.js} +2 -2
- package/dist/assets/{StoryPreviewMount-OXr1OeeL.js → StoryPreviewMount-BT3EF_bY.js} +1 -1
- package/dist/assets/{ThreeBoardDocument-Bq7TytUs.js → ThreeBoardDocument-C6MAwwMT.js} +2 -2
- package/dist/assets/{ThreeIsolationSceneContent-DuHBrWac.js → ThreeIsolationSceneContent-Jb-BiqBy.js} +1 -1
- package/dist/assets/{ToolObject3DPreview-CRc9srZH.js → ToolObject3DPreview-CWoW5Ykt.js} +1 -1
- package/dist/assets/{Toolbar-DFgq79Yg.js → Toolbar-DQehpz2z.js} +1 -1
- package/dist/assets/{TransientHint-D5xrC8KP.js → TransientHint-I9gc0jbe.js} +1 -1
- package/dist/assets/{VideoViewer-YNCtduO8.js → VideoViewer-DnhtA-uQ.js} +1 -1
- package/dist/assets/{ViewportShadingMenu-BeIhuPja.js → ViewportShadingMenu-DhHBsvZ2.js} +1 -1
- package/dist/assets/{active-ingest-rGPsqtCJ.js → active-ingest-BX03j5HF.js} +2 -2
- package/dist/assets/{animation-clock-BuKpx6Ub.js → animation-clock-B_14wv8o.js} +1 -1
- package/dist/assets/{animation-mixers.service-DaQR3pvX.js → animation-mixers.service-YA_zc7aC.js} +1 -1
- package/dist/assets/{animation-timeline.utility-sJ2CwY0X.js → animation-timeline.utility-BaheZJ4K.js} +1 -1
- package/dist/assets/{asset-budget-asset.menu-JPrb1L8L.js → asset-budget-asset.menu-7kNgi_NN.js} +1 -1
- package/dist/assets/{asset-budget.action-F91DJTa3.js → asset-budget.action-CHnj-0Hk.js} +1 -1
- package/dist/assets/{asset-budget.document-DSGV-5Wa.js → asset-budget.document-BX2-n5L5.js} +1 -1
- package/dist/assets/{asset-budget.menu-DVNRW3Wn.js → asset-budget.menu-5kkY86aK.js} +1 -1
- package/dist/assets/{asset-editor-persistence-POe48l3H.js → asset-editor-persistence-Bd6-j3nh.js} +1 -1
- package/dist/assets/{asset-loaders-BbjS1Q2p.js → asset-loaders-BX593_Lm.js} +1 -1
- package/dist/assets/{asset-preview-CojPwXU7.js → asset-preview-BRUzjkTl.js} +1 -1
- package/dist/assets/{audio-unlock.service-xc9YJk6l.js → audio-unlock.service-DUHq3Djy.js} +1 -1
- package/dist/assets/{audio.utility-CzIS9L1U.js → audio.utility-NVAVahkr.js} +1 -1
- package/dist/assets/autoplay.service-DFxFVLHJ.js +1 -0
- package/dist/assets/{babylon-authoring-adapter-BOdV9IVz.js → babylon-authoring-adapter-DPAz8ZAn.js} +1 -1
- package/dist/assets/binding-resolver-rLWZKbdA.js +2 -0
- package/dist/assets/blender-emscripten-engine-DYUe8C3o.js +2 -0
- package/dist/assets/{blender-node-editor.document-DX7X-mD5.js → blender-node-editor.document-AOzDk-zF.js} +1 -1
- package/dist/assets/{blender-properties-tab-wAwcH1J0.js → blender-properties-tab-htkOP2E1.js} +1 -1
- package/dist/assets/blender-runtime-host-Djtuf_84.js +7 -0
- package/dist/assets/{blender-runtime-skin-D9Z09c8r.js → blender-runtime-skin-DAOfR9wP.js} +1 -1
- package/dist/assets/{blender-runtime.document-Dmlo0Tqj.js → blender-runtime.document-CLPXAqOY.js} +1 -1
- package/dist/assets/{blender-screenshot.menu-9_GeTlzZ.js → blender-screenshot.menu-D-Wh9nrx.js} +1 -1
- package/dist/assets/{blender-timeline.document-L_ECbjBc.js → blender-timeline.document-D92ZF7GS.js} +1 -1
- package/dist/assets/{blender-uv-editor.document-CWBVB8ai.js → blender-uv-editor.document-RIzCN8r6.js} +1 -1
- package/dist/assets/{blender-version.status-C2u7rhEI.js → blender-version.status-DHM5-hy2.js} +1 -1
- package/dist/assets/{blender-wali-engine-B0Yilx8j.js → blender-wali-engine-CJZJEcgn.js} +1 -1
- package/dist/assets/{blender.command-CPTl-D7J.js → blender.command-BrxSr8fh.js} +1 -1
- package/dist/assets/{board-guides-DuaCoboI.js → board-guides-DM_vAo0C.js} +1 -1
- package/dist/assets/{bridge.command-BfbrsEvl.js → bridge.command-Cf8O6nG3.js} +3 -3
- package/dist/assets/{browserAll-C931ZRn1.js → browserAll-Bk80CK14.js} +1 -1
- package/dist/assets/{build-player.document-Bn285rSJ.js → build-player.document-jcpog-l6.js} +1 -1
- package/dist/assets/{build-profiles.document-Hasnuif3.js → build-profiles.document-DOJRDJTc.js} +1 -1
- package/dist/assets/{build-progress.status-C2vrS84F.js → build-progress.status-DIseL3Fj.js} +1 -1
- package/dist/assets/{build-session-BVUihA82.js → build-session-DZ4UD5Tu.js} +1 -1
- package/dist/assets/{build.action-BFt1yc7Y.js → build.action-DlevnO2E.js} +1 -1
- package/dist/assets/{build.command-BMS75Kvs.js → build.command-BDNgR4X1.js} +1 -1
- package/dist/assets/{build.header-DtdCilfp.js → build.header-CwUIPMW3.js} +1 -1
- package/dist/assets/{build.menu-Df0MdXcp.js → build.menu-Cdi2l3SN.js} +1 -1
- package/dist/assets/{build.service-Dj0locS3.js → build.service-xdhMVVqg.js} +1 -1
- package/dist/assets/{camera-DyPZsiH_.js → camera-GR-fO2IE.js} +1 -1
- package/dist/assets/{camera-runtime.inspector-CvAPKLjp.js → camera-runtime.inspector-RPVKn6vT.js} +1 -1
- package/dist/assets/{canvas-design-mount-DBtNr3vr.js → canvas-design-mount-B3FNDE7x.js} +3 -3
- package/dist/assets/{canvas-entry-runtime-DmsNFyOt.js → canvas-entry-runtime-Cux0NSyO.js} +2 -2
- package/dist/assets/{canvas-preview-frames--kYqZOMu.js → canvas-preview-frames-CmraLAxc.js} +1 -1
- package/dist/assets/{canvas-story-capture.service-Ch1ahMx7.js → canvas-story-capture.service-5ZvfS8si.js} +2 -2
- package/dist/assets/{capability-coverage-Ddy6R19w.js → capability-coverage-9jbjkC7w.js} +1 -1
- package/dist/assets/{collaboration-presence-juktnRj2.js → collaboration-presence-CTV15flX.js} +1 -1
- package/dist/assets/{collider-BpD9ycFA.js → collider-Di0qr3hq.js} +1 -1
- package/dist/assets/{component-board.service-cYkHp_ne.js → component-board.service-CEq7FpJ7.js} +2 -2
- package/dist/assets/{component-board.service-BOMMhcLg.js → component-board.service-CbNgdTIL.js} +2 -2
- package/dist/assets/{component-board.service-CLEfyjiS.js → component-board.service-CkPxbdFE.js} +2 -2
- package/dist/assets/{component-contracts.service-k3ZryC2G.js → component-contracts.service-BLE-me7t.js} +1 -1
- package/dist/assets/{component-instance-root-BJUVF1TY.js → component-instance-root-6vlZ9amU.js} +1 -1
- package/dist/assets/{component-verbs.command-geVfzjXi.js → component-verbs.command-DJ9tpbm_.js} +1 -1
- package/dist/assets/{component-verbs.service-3hV8UDAl.js → component-verbs.service-DOO6ltFy.js} +1 -1
- package/dist/assets/{config-Cmu1-EAr.js → config-SpOmE1ZF.js} +2 -2
- package/dist/assets/{configurations-D9E81S0v.js → configurations-v9B1hzPx.js} +1 -1
- package/dist/assets/{connection.status-BS9CPzvH.js → connection.status-D273cCfw.js} +1 -1
- package/dist/assets/{constraints.inspector-CZXllCwC.js → constraints.inspector-CTDm_yw6.js} +1 -1
- package/dist/assets/{content-bounds-CNjwljYK.js → content-bounds-SMMmDnR9.js} +1 -1
- package/dist/assets/{contract-system-adapters-DeaxSRVh.js → contract-system-adapters-Dx3-ZI4N.js} +1 -1
- package/dist/assets/{coverage.service-BkNc_82z.js → coverage.service-QEYdDNJf.js} +1 -1
- package/dist/assets/{create-runtime-MnU3_1YC.js → create-runtime-S5Je5FVD.js} +1 -1
- package/dist/assets/{curve-C20E8K-d.js → curve-Dna3Q4Rl.js} +1 -1
- package/dist/assets/{data-asset-Cq5035BP.js → data-asset-Do7MzBwx.js} +1 -1
- package/dist/assets/{data-ref-CmU-w4K9.js → data-ref-Dbulgqez.js} +1 -1
- package/dist/assets/{debug-bridge-D0KifvRF.js → debug-bridge-B1HF0efX.js} +1 -1
- package/dist/assets/{debug-registry-CrAEEu1t.js → debug-registry-CurxbdJb.js} +1 -1
- package/dist/assets/{deferred-ingest-play-Bym43Wm2.js → deferred-ingest-play-04UYeDFI.js} +2 -2
- package/dist/assets/{design-time-canvas-mount-wpvG2O4A.js → design-time-canvas-mount-CcBiI7BU.js} +2 -2
- package/dist/assets/{design-time-layers-DyfNnhb4.js → design-time-layers-DHbs4Bar.js} +1 -1
- package/dist/assets/{design-time-mount.service-DmTmEFaC.js → design-time-mount.service-BTJtrJB4.js} +2 -2
- package/dist/assets/{design-time-mount.service-BHpfSbPG.js → design-time-mount.service-DxQYWBtW.js} +2 -2
- package/dist/assets/{design-time-react-mount-BSFpSV7G.js → design-time-react-mount-CaMPhDB5.js} +1 -1
- package/dist/assets/{document-preview-three-Cf1yj989.js → document-preview-three-BE-UtLOm.js} +1 -1
- package/dist/assets/{dom-authoring-adapter-BjVuBu0V.js → dom-authoring-adapter-BCJi5KPk.js} +1 -1
- package/dist/assets/{draco3d-CqAqM9zE.js → draco3d-D-9gDYvZ.js} +1 -1
- package/dist/assets/{edit-mode-audio.service-BzZg_XCB.js → edit-mode-audio.service-aYQF0kbI.js} +1 -1
- package/dist/assets/{edit-mode-authoring-kt0XnEMW.js → edit-mode-authoring-Bm31X1cT.js} +1 -1
- package/dist/assets/{edit-mode-networking.service-DWUWwnZW.js → edit-mode-networking.service-DII_DaVN.js} +1 -1
- package/dist/assets/{editor-api-CkXT5Jq7.js → editor-api-Dae4rOeq.js} +1 -1
- package/dist/assets/{editor-layers-BmorFEFR.js → editor-layers-DvKAawE7.js} +1 -1
- package/dist/assets/{editor-shell-store-Drz4ZM7p.js → editor-shell-store-sESsCCic.js} +1 -1
- package/dist/assets/{entity-object-CgFEglVK.js → entity-object-CR7fCzb1.js} +1 -1
- package/dist/assets/{events-156d8d12.esm-CYeuVCYr.js → events-156d8d12.esm-DmeaOP4r.js} +1 -1
- package/dist/assets/{extend-cGAhLngC.js → extend-BeHPp0pO.js} +1 -1
- package/dist/assets/{fork-menu-Cf3qnnsT.js → fork-menu-BLV4klro.js} +1 -1
- package/dist/assets/{frame-debugger-store-VhNU-TC3.js → frame-debugger-store-CzfMAFm8.js} +1 -1
- package/dist/assets/{game-contract-seams-DhQC7xCo.js → game-contract-seams-FFGgxMOq.js} +1 -1
- package/dist/assets/{game-css-scope-transform-C1IhC3Rm.js → game-css-scope-transform-CpH5gRrU.js} +1 -1
- package/dist/assets/{game-document.service-C2IRi4U-.js → game-document.service-BaWJoY3b.js} +1 -1
- package/dist/assets/{game-eval.command-TLlFTk-D.js → game-eval.command-DimBNXZh.js} +1 -1
- package/dist/assets/{game-module-access-BeoA-_qL.js → game-module-access-INT7uWVq.js} +1 -1
- package/dist/assets/{game-network-CP6KmSOP.js → game-network-D6iKU3Wc.js} +3 -3
- package/dist/assets/{gameplay-export-Bli_oRMZ.js → gameplay-export-CA8Cj_Ya.js} +1 -1
- package/dist/assets/{gameplay-replay-CeZFaWnu.js → gameplay-replay-BaOK1PHn.js} +1 -1
- package/dist/assets/{gameplay.command-EzhRPPs8.js → gameplay.command-CNZVmVoY.js} +1 -1
- package/dist/assets/{generation-jobs-BiCGhDdc.js → generation-jobs-CrR2awmo.js} +1 -1
- package/dist/assets/{generation.service-NEEzKB59.js → generation.service-DYXXqp6a.js} +1 -1
- package/dist/assets/{generations-DjdqICIE.js → generations-BmTovCQz.js} +1 -1
- package/dist/assets/{generations.status-Cd8k344v.js → generations.status-CPANXPOQ.js} +1 -1
- package/dist/assets/{hierarchy-marks-Be_ZEspV.js → hierarchy-marks-QDNP7a91.js} +1 -1
- package/dist/assets/{hosted-asset-materialization-D_Sb5VxN.js → hosted-asset-materialization-DAbhyLRe.js} +1 -1
- package/dist/assets/{index-CuCtYjF9.js → index-2lrANwoO.js} +1 -1
- package/dist/assets/{index-ZqllDIaT.js → index-B3jjiaMn.js} +1 -1
- package/dist/assets/{index-pnygNcJO.js → index-BMYvLvi0.js} +1 -1
- package/dist/assets/{index-BY3zr1RM.js → index-BStQTwLR.js} +2 -2
- package/dist/assets/{index-BdKd5E97.js → index-BTQxFFqF.js} +1 -1
- package/dist/assets/{index-BR2HjNxF.js → index-C7p_QQ7P.js} +7 -7
- package/dist/assets/{index-CHOWw6ix.js → index-DSGUQ614.js} +1 -1
- package/dist/assets/{index-B20Aydom.js → index-DTBK2UM6.js} +1 -1
- package/dist/assets/{index-CCI0d6Fn.js → index-DWoS4rs9.js} +1 -1
- package/dist/assets/index-DzuOGwVB.js +1 -0
- package/dist/assets/{inference-diagnostics-D89tIA2a.js → inference-diagnostics-C6_Z4_8a.js} +1 -1
- package/dist/assets/{ingest-boot-viewport-BDVmUV6O.js → ingest-boot-viewport-V0jgUOLv.js} +1 -1
- package/dist/assets/{ingest-siblings-BPdzot9M.js → ingest-siblings-CilJDzwT.js} +1 -1
- package/dist/assets/{ingest-source-persistence-CHF8xlGY.js → ingest-source-persistence-CsqPDVx6.js} +1 -1
- package/dist/assets/{ingest.service-CzF3zUN9.js → ingest.service-2Lk_9rjD.js} +1 -1
- package/dist/assets/{inspect-BTQ0bXD6.js → inspect-B4sqdFaU.js} +1 -1
- package/dist/assets/instances.command-mIr5Ujz9.js +1 -0
- package/dist/assets/{json-history-resource-BZHGKITu.js → json-history-resource-QtpzKzwO.js} +1 -1
- package/dist/assets/{layered-pick-Bas4zv2o.js → layered-pick-BDMgzWjy.js} +1 -1
- package/dist/assets/{light-DnyO82pX.js → light-18unOAF2.js} +1 -1
- package/dist/assets/{live-project-verbs-C7Q7IPgx.js → live-project-verbs-CgDrfITj.js} +1 -1
- package/dist/assets/{machine.document-BUYjFCX0.js → machine.document-zxyIZAJ0.js} +1 -1
- package/dist/assets/{machines.finder-BZSGOFIF.js → machines.finder-DIvktqio.js} +1 -1
- package/dist/assets/{material-jrJ1ErMf.js → material-D8WYnLCY.js} +1 -1
- package/dist/assets/{material-factory-BlDmosGl.js → material-factory-4rh5Wqux.js} +1 -1
- package/dist/assets/{mesh-Bj8VKYZs.js → mesh-_D58fKg5.js} +1 -1
- package/dist/assets/{model-asset-sections.service-CYzX_AOC.js → model-asset-sections.service--50j12QT.js} +1 -1
- package/dist/assets/{model-inspection-Ch4jvrJM.js → model-inspection-CJLzpxRV.js} +1 -1
- package/dist/assets/{model-thumbnail-DM9Eok1P.js → model-thumbnail-Cj3_XSnl.js} +1 -1
- package/dist/assets/{models.finder-7Bmf4lGX.js → models.finder-BrngxQWo.js} +1 -1
- package/dist/assets/{module-mode-CrvKP_1s.js → module-mode-DPX0apH8.js} +2 -2
- package/dist/assets/{mount-canvas-ingest-root-BdhyhcUL.js → mount-canvas-ingest-root-BgMvNvBB.js} +2 -2
- package/dist/assets/{mount-dom-ingest-root-BL1loiDq.js → mount-dom-ingest-root-DjdlRVDm.js} +2 -2
- package/dist/assets/{mount-ingest-root-B-VHYzME.js → mount-ingest-root-CjOWFsbq.js} +2 -2
- package/dist/assets/{mount-manifest-CHydm694.js → mount-manifest-BKLx3Qv1.js} +1 -1
- package/dist/assets/{mount-three-ingest-root-DVLp5Lye.js → mount-three-ingest-root-CpEBMdDE.js} +1 -1
- package/dist/assets/{mounted-authoring-uQ2VcHyg.js → mounted-authoring-BAll64vX.js} +1 -1
- package/dist/assets/{mounted-story-viewport-source-Y1IC9959.js → mounted-story-viewport-source-lYU11-92.js} +1 -1
- package/dist/assets/{native-debug-module-DrKVpM6-.js → native-debug-module-_hzBkCZ7.js} +1 -1
- package/dist/assets/{navigation-7Lz6ryJG.js → navigation-DOw2VRQ4.js} +1 -1
- package/dist/assets/{navmesh.menu-DfqTOQVu.js → navmesh.menu-CHyJEJcS.js} +1 -1
- package/dist/assets/{navmesh.service-Dq9yQqId.js → navmesh.service-DBlMQ-d7.js} +1 -1
- package/dist/assets/network-observer.service-C7vOkn3z.js +1 -0
- package/dist/assets/{network.utility-DUQVCtVd.js → network.utility-B3ULXw0c.js} +1 -1
- package/dist/assets/{object3d-document-session-registry-DBQQbyJf.js → object3d-document-session-registry-DHi4wjTF.js} +2 -2
- package/dist/assets/{oid-transform-Cbq2YEQg.js → oid-transform-Cb40tUcA.js} +1 -1
- package/dist/assets/{particles-DNVVODUp.js → particles-CJYPIK4T.js} +1 -1
- package/dist/assets/{pixi-authoring-adapter-DM8WBAoj.js → pixi-authoring-adapter-zLm6t32A.js} +1 -1
- package/dist/assets/{pixi-live-write-target-VDqHcTXi.js → pixi-live-write-target-gqB1Bns4.js} +1 -1
- package/dist/assets/{play.command-B3RshoRj.js → play.command-BX18gQb-.js} +2 -2
- package/dist/assets/{presentation-hXHVmN-x.js → presentation-DN_Gulux.js} +1 -1
- package/dist/assets/{product-DBJljJY1.js → product-BNmDRhyK.js} +1 -1
- package/dist/assets/{profiler.action-B8IiTyYF.js → profiler.action-BcXQPser.js} +1 -1
- package/dist/assets/{profiler.menu-CUhYUh1u.js → profiler.menu-DLSKDlYC.js} +1 -1
- package/dist/assets/{profiler.utility-BunUmES5.js → profiler.utility-XfyJ4Ybb.js} +1 -1
- package/dist/assets/{project-authoring-session-BUfCu5Nd.js → project-authoring-session-CV-InH5U.js} +2 -2
- package/dist/assets/{properties-bone-constraints.inspector-DTI8zoOy.js → properties-bone-constraints.inspector-DjtLF07E.js} +1 -1
- package/dist/assets/{properties-bone.inspector-BAdS6YOJ.js → properties-bone.inspector-BTrLviuO.js} +1 -1
- package/dist/assets/{properties-collection.inspector-BlRoTRFa.js → properties-collection.inspector-4pRJXdHP.js} +1 -1
- package/dist/assets/{properties-constraints.inspector-BYm-VRCu.js → properties-constraints.inspector-CGMjJ9yI.js} +1 -1
- package/dist/assets/{properties-data.inspector-CiPVHnvq.js → properties-data.inspector-BYWXnz6t.js} +1 -1
- package/dist/assets/{properties-material.inspector-BelRMPaR.js → properties-material.inspector-DW3L9_Nu.js} +1 -1
- package/dist/assets/{properties-modifiers.inspector-DRPMvgYf.js → properties-modifiers.inspector-CIGm19LV.js} +1 -1
- package/dist/assets/{properties-object.inspector-eYbQUgXB.js → properties-object.inspector-C-D5tyP4.js} +1 -1
- package/dist/assets/{properties-output.inspector-BVdcW2hG.js → properties-output.inspector-BFNleHzM.js} +1 -1
- package/dist/assets/{properties-particles.inspector-DqquvZgw.js → properties-particles.inspector-DUhLpScH.js} +1 -1
- package/dist/assets/{properties-physics.inspector-BnlzMqSW.js → properties-physics.inspector-BFz_SKxd.js} +1 -1
- package/dist/assets/{properties-render.inspector-wAAPhhmw.js → properties-render.inspector-DYyK4VAO.js} +1 -1
- package/dist/assets/{properties-scene.inspector-CYAxDx_8.js → properties-scene.inspector-BOJ7o61b.js} +1 -1
- package/dist/assets/{properties-texture.inspector-C45k5mVR.js → properties-texture.inspector-BV23RX7J.js} +1 -1
- package/dist/assets/{properties-view-layer.inspector-CUdYJnWF.js → properties-view-layer.inspector-DYVpXCR8.js} +1 -1
- package/dist/assets/{properties-world.inspector-BEMN3cyx.js → properties-world.inspector-DpihGfpS.js} +1 -1
- package/dist/assets/{r3f-design-session-DdPndtRL.js → r3f-design-session--1XRftri.js} +2 -2
- package/dist/assets/{r3f-physics-binding-BM-M3X5T.js → r3f-physics-binding-D7H8JaW0.js} +1 -1
- package/dist/assets/{r3f-source-authoring-adapter-BqKAz966.js → r3f-source-authoring-adapter-zqECAe05.js} +1 -1
- package/dist/assets/{react-canvas-navigation-CkzSul87.js → react-canvas-navigation-DVpD_2D0.js} +1 -1
- package/dist/assets/{react-inspector.service-OfRjM4t-.js → react-inspector.service-Bv1vBrOj.js} +1 -1
- package/dist/assets/{react-story-board-BJUS3WvS.js → react-story-board-rd1U6EAp.js} +1 -1
- package/dist/assets/{react-three-fiber.esm-BrmmnfPq.js → react-three-fiber.esm-Z3njhfMT.js} +1 -1
- package/dist/assets/{react-three-rapier.esm-ySZdOcfD.js → react-three-rapier.esm-DsRg66Ch.js} +1 -1
- package/dist/assets/{react-world-authoring-adapter-WSIX3gQb.js → react-world-authoring-adapter-D7x1fQ49.js} +1 -1
- package/dist/assets/{realm-services-ClHhmlzn.js → realm-services-CN-61eEJ.js} +1 -1
- package/dist/assets/{reflection-probe-capture.inspector-Bc5zk8XY.js → reflection-probe-capture.inspector-BVMieLLF.js} +1 -1
- package/dist/assets/{registry-BccmTU1H.js → registry-CyI6Aq11.js} +1 -1
- package/dist/assets/{relative-import-specifier-jIJKLACX.js → relative-import-specifier-DcxN-Zbr.js} +1 -1
- package/dist/assets/{render-env-CF72WHzB.js → render-env-h5HERQrH.js} +1 -1
- package/dist/assets/{render-features-C7wJW5To.js → render-features-Cfvq_SBW.js} +1 -1
- package/dist/assets/{render-settings-BFaRAdCN.js → render-settings-hwYf1wv5.js} +1 -1
- package/dist/assets/{resolve-three-BgvhOML0.js → resolve-three-CJkvlUWq.js} +3 -3
- package/dist/assets/{root-seam-contract-bRaTnGQW.js → root-seam-contract-MifQoZQ4.js} +1 -1
- package/dist/assets/{run-selection-BEZMm19D.js → run-selection-C1AZsBxI.js} +1 -1
- package/dist/assets/{scene-capture-DGYsAG8B.js → scene-capture-DfdNSDuT.js} +1 -1
- package/dist/assets/{scene-document.service-CVm-pDFQ.js → scene-document.service-COEvhB25.js} +2 -2
- package/dist/assets/{scene-framing-DmFcSExk.js → scene-framing-BFUJz9EH.js} +1 -1
- package/dist/assets/{seeded-random-CeGLHu9l.js → seeded-random-CT60Vm0v.js} +1 -1
- package/dist/assets/{setup-renderer-DH4wbhtK.js → setup-renderer-FkSOtbK8.js} +1 -1
- package/dist/assets/{source-object3d-authoring-adapter-BqvuaSER.js → source-object3d-authoring-adapter-D_g43IL2.js} +1 -1
- package/dist/assets/{source-persistence-backend-C6lvBO--.js → source-persistence-backend-DXhXbcHd.js} +1 -1
- package/dist/assets/{stage-keyboard-DQyT8YQg.js → stage-keyboard-BavlReN0.js} +1 -1
- package/dist/assets/{stage-overlay-set-b2EbWPyl.js → stage-overlay-set-DaSD-kEP.js} +1 -1
- package/dist/assets/{stage-presence-markers-DG3NLqKH.js → stage-presence-markers-DABeYLFZ.js} +1 -1
- package/dist/assets/{stage-transform-tools-BLbVuvri.js → stage-transform-tools-CVwbVaHl.js} +1 -1
- package/dist/assets/{standard-viewport-dressing-CGx3OUK2.js → standard-viewport-dressing-CcvhGvJG.js} +1 -1
- package/dist/assets/{state-watch.action-DyUuJ9rh.js → state-watch.action-DfpZv7d7.js} +1 -1
- package/dist/assets/{state-watch.menu-Be1DVP0z.js → state-watch.menu-SvJhuJTF.js} +1 -1
- package/dist/assets/{state-watch.utility-RQ3uY8o2.js → state-watch.utility-DKnGsJtm.js} +1 -1
- package/dist/assets/{story-capture-CXIMEn9y.js → story-capture-BFK_ID-Q.js} +1 -1
- package/dist/assets/{story-documents-CqEVlWX1.js → story-documents-B6VxM549.js} +1 -1
- package/dist/assets/{story-documents.service-CdYIcl5M.js → story-documents.service-0yUb4nhf.js} +1 -1
- package/dist/assets/{story-documents.service-BfY2iy1r.js → story-documents.service-BfIRLgjz.js} +1 -1
- package/dist/assets/{story-media-presence-CxOooELC.js → story-media-presence-CFQCHxFo.js} +1 -1
- package/dist/assets/{story-pixi-preview-BiW_-zpL.js → story-pixi-preview-CATuprki.js} +1 -1
- package/dist/assets/{story-presentation-TzjBKB8Q.js → story-presentation-BRdH0ChD.js} +1 -1
- package/dist/assets/{story-three-preview-Bf016Ico.js → story-three-preview-D4pZqkMA.js} +2 -2
- package/dist/assets/{studio-environment-C1W4jRBx.js → studio-environment-CRvNlLp8.js} +1 -1
- package/dist/assets/{surface-state-BUepmWi8.js → surface-state-B9DGFy51.js} +1 -1
- package/dist/assets/{syntactic-prop-specs-CkXyZZvH.js → syntactic-prop-specs-DBT6-vHl.js} +1 -1
- package/dist/assets/{team-playtest.service-CGyLGxlx.js → team-playtest.service-Duj1NZFc.js} +1 -1
- package/dist/assets/{three-CTr1zHRF.js → three-BJsmD65U.js} +1 -1
- package/dist/assets/{three-authoring-adapter-CT32pMhI.js → three-authoring-adapter-Cz8KDuKR.js} +1 -1
- package/dist/assets/three-authoring.service-CZVY51US.js +2 -0
- package/dist/assets/{three-ingest-runtime-D26g_KuC.js → three-ingest-runtime-CAdElDuH.js} +1 -1
- package/dist/assets/{three-integration-BkH5M9mR.js → three-integration-CFjtFUU-.js} +2 -2
- package/dist/assets/three-integration.service-7jqoQp_l.js +1 -0
- package/dist/assets/{three-projection-core-CzBhCGr9.js → three-projection-core-EmUNeP2k.js} +1 -1
- package/dist/assets/{three-state-DyhSwJ9s.js → three-state-Cs7Th7ur.js} +1 -1
- package/dist/assets/{three-story-capture.service-D42ADhP2.js → three-story-capture.service-CTBiiaXF.js} +2 -2
- package/dist/assets/{three-story-model-Bf7K9YvH.js → three-story-model-D0gr0vkG.js} +1 -1
- package/dist/assets/{three-viewport-presentation-B1_tvT5K.js → three-viewport-presentation-CzDAAyFp.js} +1 -1
- package/dist/assets/{transform-mode-request-DCPtie-Z.js → transform-mode-request-B9w1y_hg.js} +1 -1
- package/dist/assets/{transport-strip-B8E6zP4u.js → transport-strip-DfMRjRNy.js} +1 -1
- package/dist/assets/transport.header-utCIDL4y.js +1 -0
- package/dist/assets/{tuples-Dxy_B7ga.js → tuples-Bzhmrl2c.js} +1 -1
- package/dist/assets/{ui-board-document-pGv5btVt.js → ui-board-document-CNL8bnU7.js} +2 -2
- package/dist/assets/{user-data-UBmue2QG.js → user-data-UxjaQvdx.js} +1 -1
- package/dist/assets/{utility-view-state-BL8RLlOj.js → utility-view-state-CLA8-L1t.js} +1 -1
- package/dist/assets/{viewport-door-CfQU7NZa.js → viewport-door-BN90Ep9y.js} +1 -1
- package/dist/assets/{viewport-root-presentation-BSZznGBP.js → viewport-root-presentation-jsbbPD59.js} +1 -1
- package/dist/assets/{viewport-surface-status-BlZ9B_xC.js → viewport-surface-status-DdHGQbHo.js} +1 -1
- package/dist/assets/{webworkerAll-Cf3hZGXD.js → webworkerAll-BZ2bj2zd.js} +1 -1
- package/dist/assets/worker-CdXe6YZE.js +2 -0
- package/dist/assets/{workspace-arrangement-DG7NGG24.js → workspace-arrangement-Bf-W4FYD.js} +1 -1
- package/dist/assets/{world-documents-8RXrQgsj.js → world-documents-DnzG3hVS.js} +1 -1
- package/dist/assets/{world-root-stage-binding-CzDmxlMc.js → world-root-stage-binding-M6fr2Vev.js} +1 -1
- package/dist/assets/{xstate-animation-binding-DH2xF5KM.js → xstate-animation-binding-Jeid46sG.js} +1 -1
- package/dist/assets/{xstate-animation-meta-BYUuvHvG.js → xstate-animation-meta-aAafJ1M9.js} +1 -1
- package/dist-node/cli.js +16 -16
- package/package.json +16 -16
- package/template/vite.config.ts +1 -1
- package/dist/assets/InspectorObjectPreview-DlMllCD3.js +0 -1
- package/dist/assets/Object3DDocumentViewport-Cgxt9iG3.js +0 -2
- package/dist/assets/autoplay.service-D-I96sDb.js +0 -1
- package/dist/assets/binding-resolver-mPfdzOBN.js +0 -2
- package/dist/assets/blender-emscripten-engine-CXPkPSST.js +0 -2
- package/dist/assets/blender-runtime-host-BWcM_-8X.js +0 -7
- package/dist/assets/index-bQE2NA0D.js +0 -1
- package/dist/assets/instances.command-BaLgbeZ9.js +0 -1
- package/dist/assets/network-observer.service-BWcIm1eL.js +0 -1
- package/dist/assets/three-authoring.service-BMDQYPuU.js +0 -2
- package/dist/assets/three-integration.service-D9Pd9N4r.js +0 -1
- package/dist/assets/transport.header-CdYx_49a.js +0 -1
- package/dist/assets/worker-rn-I3H2b.js +0 -2
package/dist/assets/{xstate-animation-binding-DH2xF5KM.js → xstate-animation-binding-Jeid46sG.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{collectMachineAnimationMeta as V,clipNamesOf as L,isBlendTreeAnimationMeta as S,asBlendTreeDef as z}from"./xstate-animation-meta-
|
|
1
|
+
import{collectMachineAnimationMeta as V,clipNamesOf as L,isBlendTreeAnimationMeta as S,asBlendTreeDef as z}from"./xstate-animation-meta-aAafJ1M9.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-C7p_QQ7P.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{dZ as b,d_ as u,u as o,v as c,w as n,x as l,c6 as r,c5 as m,c4 as f}from"./index-
|
|
1
|
+
import{dZ as b,d_ as u,u as o,v as c,w as n,x as l,c6 as r,c5 as m,c4 as f}from"./index-C7p_QQ7P.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:l("1D").describe("Interpolates linearly between sorted children by threshold"),parameter:n().min(1).describe("Context/selector value driving the blend"),children:c(d).min(2,"1D blend tree needs at least 2 children to interpolate between")}).strict(),v=o({type:l("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:c(d.extend({thresholdY:r()})).min(1,"2D blend tree needs at least 1 child")}).strict(),g=o({type:l("direct").describe("Each child has an explicit weight, normalized to sum to 1"),parameter:n().default(""),children:c(d.extend({weight:r().min(0)})).min(1,"direct blend tree needs at least 1 child")}).strict(),A=b("type",[y,v,g]);function Y(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:c(n().min(1)).min(1).optional().describe("Bone/object names whose complete descendant subtrees are retained"),exclude:c(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:A.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 H(e){return M(e)?[e.clip]:e.blendTree.children.map(a=>a.clip)}export{A as AnimationBlendTreeSchema,T as AnimationMetaValidationError,D as StateAnimationMetaSchema,Y as asBlendTreeDef,H as clipNamesOf,R as collectMachineAnimationMeta,$ as isBlendTreeAnimationMeta,M as isClipAnimationMeta,B as parseStateAnimationMeta};
|
package/dist-node/cli.js
CHANGED
|
@@ -2316,7 +2316,7 @@ import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
|
2316
2316
|
var package_default = {
|
|
2317
2317
|
name: "@volter/game-editor",
|
|
2318
2318
|
author: "Volter AI, Inc.",
|
|
2319
|
-
version: "0.5.
|
|
2319
|
+
version: "0.5.126",
|
|
2320
2320
|
publishConfig: {
|
|
2321
2321
|
access: "public"
|
|
2322
2322
|
},
|
|
@@ -2365,22 +2365,22 @@ var package_default = {
|
|
|
2365
2365
|
}
|
|
2366
2366
|
},
|
|
2367
2367
|
dependencies: {
|
|
2368
|
-
"@volter/editor-core": "0.5.
|
|
2369
|
-
"@volter/editor-game": "0.5.
|
|
2370
|
-
"@volter/editor-react": "0.5.
|
|
2371
|
-
"@volter/editor-threejs": "0.5.
|
|
2372
|
-
"@volter/editor-xstate": "0.5.
|
|
2373
|
-
"@volter/editor-blender": "0.1.
|
|
2374
|
-
"@volter/dawproject": "0.5.
|
|
2375
|
-
"@volter/editor-dawproject": "0.5.
|
|
2376
|
-
"@volter/blender-engine": "0.1.
|
|
2377
|
-
"@volter/editor-project": "0.5.
|
|
2378
|
-
"@volter/editor-sdk": "0.5.
|
|
2379
|
-
"@volter/editor-live": "0.5.
|
|
2380
|
-
"@volter/game-live": "0.5.
|
|
2368
|
+
"@volter/editor-core": "0.5.126",
|
|
2369
|
+
"@volter/editor-game": "0.5.126",
|
|
2370
|
+
"@volter/editor-react": "0.5.126",
|
|
2371
|
+
"@volter/editor-threejs": "0.5.126",
|
|
2372
|
+
"@volter/editor-xstate": "0.5.126",
|
|
2373
|
+
"@volter/editor-blender": "0.1.66",
|
|
2374
|
+
"@volter/dawproject": "0.5.126",
|
|
2375
|
+
"@volter/editor-dawproject": "0.5.126",
|
|
2376
|
+
"@volter/blender-engine": "0.1.64",
|
|
2377
|
+
"@volter/editor-project": "0.5.126",
|
|
2378
|
+
"@volter/editor-sdk": "0.5.126",
|
|
2379
|
+
"@volter/editor-live": "0.5.126",
|
|
2380
|
+
"@volter/game-live": "0.5.126",
|
|
2381
2381
|
"@modelcontextprotocol/sdk": "1.30.0",
|
|
2382
|
-
"@volter/game-runtime": "0.5.
|
|
2383
|
-
"@volter/threejs-runtime": "0.5.
|
|
2382
|
+
"@volter/game-runtime": "0.5.126",
|
|
2383
|
+
"@volter/threejs-runtime": "0.5.126",
|
|
2384
2384
|
undici: "7.29.1",
|
|
2385
2385
|
typescript: "5.9.3",
|
|
2386
2386
|
"@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.
|
|
4
|
+
"version": "0.5.126",
|
|
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.
|
|
54
|
-
"@volter/editor-game": "0.5.
|
|
55
|
-
"@volter/editor-react": "0.5.
|
|
56
|
-
"@volter/editor-threejs": "0.5.
|
|
57
|
-
"@volter/editor-xstate": "0.5.
|
|
58
|
-
"@volter/editor-blender": "0.1.
|
|
59
|
-
"@volter/dawproject": "0.5.
|
|
60
|
-
"@volter/editor-dawproject": "0.5.
|
|
61
|
-
"@volter/blender-engine": "0.1.
|
|
62
|
-
"@volter/editor-project": "0.5.
|
|
63
|
-
"@volter/editor-sdk": "0.5.
|
|
64
|
-
"@volter/editor-live": "0.5.
|
|
65
|
-
"@volter/game-live": "0.5.
|
|
53
|
+
"@volter/editor-core": "0.5.126",
|
|
54
|
+
"@volter/editor-game": "0.5.126",
|
|
55
|
+
"@volter/editor-react": "0.5.126",
|
|
56
|
+
"@volter/editor-threejs": "0.5.126",
|
|
57
|
+
"@volter/editor-xstate": "0.5.126",
|
|
58
|
+
"@volter/editor-blender": "0.1.66",
|
|
59
|
+
"@volter/dawproject": "0.5.126",
|
|
60
|
+
"@volter/editor-dawproject": "0.5.126",
|
|
61
|
+
"@volter/blender-engine": "0.1.64",
|
|
62
|
+
"@volter/editor-project": "0.5.126",
|
|
63
|
+
"@volter/editor-sdk": "0.5.126",
|
|
64
|
+
"@volter/editor-live": "0.5.126",
|
|
65
|
+
"@volter/game-live": "0.5.126",
|
|
66
66
|
"@modelcontextprotocol/sdk": "1.30.0",
|
|
67
|
-
"@volter/game-runtime": "0.5.
|
|
68
|
-
"@volter/threejs-runtime": "0.5.
|
|
67
|
+
"@volter/game-runtime": "0.5.126",
|
|
68
|
+
"@volter/threejs-runtime": "0.5.126",
|
|
69
69
|
"undici": "7.29.1",
|
|
70
70
|
"typescript": "5.9.3",
|
|
71
71
|
"@colyseus/schema": "^4.0.14",
|
package/template/vite.config.ts
CHANGED
|
@@ -86,7 +86,7 @@ export default defineConfig({
|
|
|
86
86
|
// page split React context ("Invalid hook call", drei's "Hooks can only be
|
|
87
87
|
// used within the Canvas component!") and three's class identity, so
|
|
88
88
|
// `dedupe` collapses every import onto this project's copy.
|
|
89
|
-
dedupe: ['react', 'react-dom', 'three', '@react-three/fiber', 'pixi.js', '@pixi/react'],
|
|
89
|
+
dedupe: ['react', 'react-dom', 'three', '@react-three/fiber', 'its-fine', 'pixi.js', '@pixi/react'],
|
|
90
90
|
},
|
|
91
91
|
optimizeDeps: {
|
|
92
92
|
// Top-level `esbuild.jsx` does not govern dependency optimization. The
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as t}from"./jsx-runtime-DPjLkJKQ.js";import{Object3DSnapshotDocument as m}from"./EntityModelDocument-Dl5SDGuZ.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./editor-shell-store-Drz4ZM7p.js";import"./output-pass-HurwNl0G.js";import"./three.module-BLhyNg0e.js";import"./three.core-3arARmh6.js";import"./Pass-D1MRT672.js";import"./editor-layers-BmorFEFR.js";import"./workspace-arrangement-DG7NGG24.js";import"./index-BR2HjNxF.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-UBmue2QG.js";import"./entity-object-CgFEglVK.js";import"./three-contract-Dkt6PmWY.js";import"./live-mixers-B-bwLZ7c.js";import"./asset-preview-CojPwXU7.js";import"./renderer-ownership-BovSEcLv.js";import"./hierarchy-marks-Be_ZEspV.js";import"./studio-environment-C1W4jRBx.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-VS7M7pym.js";import"./three-state-DyhSwJ9s.js";import"./standard-viewport-dressing-CGx3OUK2.js";import"./content-bounds-CNjwljYK.js";import"./preview-renderer-BrYNFV1p.js";import"./live-gesture-lock-DJbrjOqf.js";import"./three-integration-BkH5M9mR.js";import"./host-hierarchy-objects-BV3WqU2w.js";import"./layered-pick-Bas4zv2o.js";import"./root-stacking-BEd9ZvxC.js";import"./model-thumbnail-DM9Eok1P.js";import"./object3d-document-session-registry-DBQQbyJf.js";import"./component-instance-root-BJUVF1TY.js";import"./viewport-door-CfQU7NZa.js";import"./model-inspection-Ch4jvrJM.js";import"./three-viewport-presentation-B1_tvT5K.js";import"./clip-planes-CnAI6DZn.js";import"./three-CTr1zHRF.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./OrbitControls-B13MKuwC.js";import"./LineSegments2-DN9pUfWA.js";import"./three.quarks.esm-C_HmSKXo.js";import"./scene-framing-DmFcSExk.js";import"./source-object3d-authoring-adapter-BqvuaSER.js";import"./three-projection-core-CzBhCGr9.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./transport-strip-B8E6zP4u.js";import"./viewport-surface-status-BlZ9B_xC.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-VS7M7pym.js","assets/index-BR2HjNxF.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-DyhSwJ9s.js","assets/editor-shell-store-Drz4ZM7p.js","assets/output-pass-HurwNl0G.js","assets/three.module-BLhyNg0e.js","assets/three.core-3arARmh6.js","assets/Pass-D1MRT672.js","assets/editor-layers-BmorFEFR.js","assets/workspace-arrangement-DG7NGG24.js","assets/user-data-UBmue2QG.js","assets/entity-object-CgFEglVK.js","assets/three-contract-Dkt6PmWY.js","assets/standard-viewport-dressing-CGx3OUK2.js","assets/content-bounds-CNjwljYK.js","assets/hierarchy-marks-Be_ZEspV.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/three-integration-BkH5M9mR.js","assets/host-hierarchy-objects-BV3WqU2w.js","assets/layered-pick-Bas4zv2o.js","assets/root-stacking-BEd9ZvxC.js","assets/model-thumbnail-DM9Eok1P.js","assets/studio-environment-C1W4jRBx.js","assets/KTX2Loader-CaqVE6nY.js","assets/GLTFLoader-KeoruJgS.js","assets/BufferGeometryUtils-B22h7jo4.js","assets/object3d-document-session-registry-DBQQbyJf.js","assets/component-instance-root-BJUVF1TY.js","assets/viewport-door-CfQU7NZa.js","assets/asset-preview-CojPwXU7.js","assets/bitmap-label-Ct4k6ehY.js","assets/model-inspection-Ch4jvrJM.js","assets/three-viewport-presentation-B1_tvT5K.js","assets/clip-planes-CnAI6DZn.js","assets/three-CTr1zHRF.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/OrbitControls-B13MKuwC.js","assets/LineSegments2-DN9pUfWA.js","assets/three.quarks.esm-C_HmSKXo.js","assets/scene-framing-DmFcSExk.js","assets/source-object3d-authoring-adapter-BqvuaSER.js","assets/three-projection-core-CzBhCGr9.js","assets/editor-presentation-activity-CqJH4G9t.js","assets/transport-strip-B8E6zP4u.js","assets/viewport-surface-status-BlZ9B_xC.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{ak as r,_ as a}from"./index-BR2HjNxF.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-BlZ9B_xC.js";const s=n.lazy(async()=>({default:(await a(()=>import("./StageHost-VS7M7pym.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{T as i,r as m}from"./index-BR2HjNxF.js";import{e as p}from"./game-network-CP6KmSOP.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-DrKVpM6-.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-CrAEEu1t.js";import"./contract-system-adapters-DeaxSRVh.js";import"./game-contract-seams-DhQC7xCo.js";import"./seeded-random-CeGLHu9l.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-C7Q7IPgx.js";import"./capability-coverage-Ddy6R19w.js";import"./edit-mode-authoring-kt0XnEMW.js";import"./json-history-resource-BZHGKITu.js";import"./binding-resolver-mPfdzOBN.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-ClHhmlzn.js";import"./canvas-entry-runtime-DmsNFyOt.js";import"./three-ingest-runtime-D26g_KuC.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-rGPsqtCJ.js";import"./ingest-source-persistence-CHF8xlGY.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-BSZznGBP.js";import"./mounted-authoring-uQ2VcHyg.js";import"./entity-object-CgFEglVK.js";import"./user-data-UBmue2QG.js";import"./workspace-arrangement-DG7NGG24.js";import"./three-contract-Dkt6PmWY.js";import"./three-CTr1zHRF.js";import"./editor-layers-BmorFEFR.js";import"./component-instance-root-BJUVF1TY.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-CT32pMhI.js";import"./source-persistence-backend-C6lvBO--.js";import"./three-projection-core-CzBhCGr9.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-BM-M3X5T.js";import"./deferred-ingest-play-Bym43Wm2.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-WSIX3gQb.js";import"./board-guides-DuaCoboI.js";import"./relative-import-specifier-jIJKLACX.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BTQ0bXD6.js";import"./inference-diagnostics-D89tIA2a.js";import"./writer-tw6EcuVO.js";import"./three-state-DyhSwJ9s.js";import"./editor-shell-store-Drz4ZM7p.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-CfQU7NZa.js";import"./game-surface-defaults-D8S4cRxi.js";const Ut="workspace.service";function e(o){p().catch(t=>{m().console.error(`${o}: ${t instanceof Error?t.message:String(t)}`,"play")})}function bt(){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{Ut as point,bt as start};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BR2HjNxF.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"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{e2 as P,w as X,c6 as ce,X as ue,h6 as fe,ea as me,_ as pe,dw as he,k_ as ge,ag as we}from"./index-BR2HjNxF.js";import{n as ve,a as ye}from"./native-debug-module-DrKVpM6-.js";import{assertNever as V}from"./adapter-surface-Y37Nzcyw.js";import{r as x}from"./index-nmcBqr7Y.js";import{staticBatchSkipReason as be,materialMergeSignature as Ee}from"./structural-signature-Dc7skRiy.js";import{fd as Re}from"./three.core-3arARmh6.js";import{f as Me,c as Se,a as Ce,b as Ae}from"./webgl-frame-capture-DdJkM2mi.js";import{g as _e}from"./debug-registry-CrAEEu1t.js";import{y as Pe,f as xe,e as Te,n as Fe,g as $e}from"./events-156d8d12.esm-CYeuVCYr.js";import{a as De}from"./realm-services-ClHhmlzn.js";import{r as ke}from"./relative-path-guard-GiM7Lsz8.js";import{b as Ie,m as je}from"./capability-coverage-Ddy6R19w.js";import{a as Oe,b as Be}from"./react-root-BHA-cdrW.js";const ee=40,te=30;function re(e){const t=e;return t.isMesh||t.isSkinnedMesh?t:null}function F(e){const t=e.geometry;if(!t)return 0;const r=t.getIndex?.()??null,n=t.getAttribute?.("position")??null,s=r?r.count:n?.count??0,o=e.isInstancedMesh?e.count??1:1;return Math.round(s/3)*o}function U(e,t){if(!e.visible)return;const r=re(e);r&&t(r);for(const n of e.children)U(n,t)}const R="(unnamed)";function j(e,t="(scene)"){const r=new Map;let n=0,s=0;if(!e.visible)return{root:t,totalMeshes:0,totalTriangles:0,subtreeCount:0,subtrees:[]};const o=(d,u)=>{U(u,f=>{const p=F(f),a=r.get(d)??{meshes:0,triangles:0};a.meshes+=1,a.triangles+=p,r.set(d,a),n+=1,s+=p})},l=re(e);if(l){const d=F(l);r.set(e.name||t,{meshes:1,triangles:d}),n+=1,s+=d}for(const d of e.children)o(d.name||R,d);const i=[...r.entries()].map(([d,u])=>({name:d,meshes:u.meshes,triangles:u.triangles})).sort((d,u)=>u.triangles-d.triangles||u.meshes-d.meshes);return{root:t,totalMeshes:n,totalTriangles:s,subtreeCount:i.length,subtrees:i.slice(0,ee)}}function H(e,t){if(e.name===t)return e;for(const r of e.children){const n=H(r,t);if(n)return n}return null}function Le(e){const t=new Map;let r=0;U(e,o=>{if(o.isInstancedMesh)return;const l=o.geometry;if(!l)return;const i=o.material,d=Array.isArray(i)?i.map(p=>p.uuid).join("+"):i?.uuid??"none",u=`${l.uuid}/${d}`;r+=1;const f=t.get(u);if(f){f.meshes+=1;return}t.set(u,{meshes:1,triangles:F(o),example:`${o.parent?.name||R}/${o.name||R}`})});const n=[...t.values()].sort((o,l)=>l.meshes-o.meshes),s=n.slice(0,te);return{plainMeshes:r,familyCount:n.length,top:s,meshesInTop:s.reduce((o,l)=>o+l.meshes,0)}}function Y(e){const t=new Map,r={},n=[];let s=0;const o=(a,c)=>{if(!a.visible)return!1;const m=be(a);if(m==="opted-out")return r["opted-out"]=(r["opted-out"]??0)+1,!1;if(m===null){const w=a,A=w.material,M=`${Ee(A)}|${a.castShadow?1:0}${a.receiveShadow?1:0}`;s+=1,n.push({key:M,subtree:c});const S=t.get(M);S?S.meshes+=1:t.set(M,{meshes:1,triangles:F(w),example:`${a.parent?.name||R}/${a.name||R}`})}else m!=="not-a-mesh"&&(r[m]=(r[m]??0)+1);return!0},l=(a,c)=>{if(o(a,c))for(const m of a.children)l(m,c)};if(o(e,e.name||R))for(const a of e.children)l(a,a.name||R);const i=new Set([...t.entries()].filter(([,a])=>a.meshes>=2).map(([a])=>a)),d=new Map;let u=0;for(const a of n)i.has(a.key)&&(u+=1,d.set(a.subtree,(d.get(a.subtree)??0)+1));const f=[...t.values()].sort((a,c)=>c.meshes-a.meshes),p=f.slice(0,te);return{plainMeshes:s,familyCount:f.length,top:p,meshesInTop:p.reduce((a,c)=>a+c.meshes,0),collapsible:u,skipped:r,bySubtree:[...d.entries()].map(([a,c])=>({name:a,collapsible:c})).sort((a,c)=>c.collapsible-a.collapsible).slice(0,ee)}}const ne="render.submit",Ne=["input","prePhysics","physics","postPhysics","gameLogic","animation"],We=300,He=50,Ve=.05,Ue=.1;function ze(e,t,r){const n=e-t-r;return{totalMs:e,renderMs:t,simMs:r,otherMs:n,text:`${e.toFixed(0)}ms = render ${t.toFixed(0)} + sim ${r.toFixed(0)} + other ${n.toFixed(0)}`}}function Ge(){return{lastFrameId:0,lastPresentAt:null,pendingSimMs:0,frameTimeMs:null,renderCpuMs:null,drawCalls:null,triangles:null,renderPasses:null,worstCurrentMs:0,worstPreviousMs:0,worstWindowFrames:0,lastHitch:null,presentedFrames:0}}function Ke(e,t){let r=0;for(const n of e.phases)t.includes(n.name)&&(r+=n.ms);return r}function Xe(e){for(const t of e.phases)if(t.name===ne)return t.ms;return null}function J(e,t,r){return e===null?t:e*(1-r)+t*r}function Ye(e,t){if(t.id<=e.lastFrameId)return!1;e.lastFrameId=t.id,t.render.renderPasses!==null&&(e.drawCalls=t.render.drawCalls,e.triangles=t.render.triangles,e.renderPasses=t.render.renderPasses),e.pendingSimMs+=Ke(t,Ne);const r=Xe(t);if(r===null)return!1;const n=e.pendingSimMs;e.pendingSimMs=0,e.presentedFrames+=1,e.renderCpuMs=J(e.renderCpuMs,r,Ue);const s=e.lastPresentAt;if(e.lastPresentAt=t.timestamp,s===null)return!0;const o=t.timestamp-s;return e.frameTimeMs=J(e.frameTimeMs,o,Ve),o>e.worstCurrentMs&&(e.worstCurrentMs=o),e.worstWindowFrames+=1,e.worstWindowFrames>=We&&(e.worstPreviousMs=e.worstCurrentMs,e.worstCurrentMs=0,e.worstWindowFrames=0),o>=He&&(e.lastHitch=ze(o,r,n)),!0}function T(e,t){if(e===null)return null;const r=10**t;return Math.round(e*r)/r}function Je(e){const t=T(e.frameTimeMs,2),r=Math.max(e.worstCurrentMs,e.worstPreviousMs);return{frameTimeMs:t,fps:t!==null&&t>0?T(1e3/t,1):null,drawCalls:e.drawCalls,triangles:e.triangles,renderCpuMs:T(e.renderCpuMs,2),renderPasses:e.renderPasses,worstFrameMs:e.frameTimeMs===null?null:T(r,2),lastHitch:e.lastHitch,presentedFrames:e.presentedFrames}}function Qe(e){const t=Ge(),r=e.subscribe(()=>{const s=e.getSnapshot().frames.at(-1);s&&Ye(t,s)});let n=!1;return{read:()=>Je(t),dispose(){n||(n=!0,r())}}}const qe=500,Ze=.5,et=.4,tt=120;function O(e){return e.toLocaleString("en-US")}function rt(e){const{drawCalls:t,census:r,structural:n}=e;if(t===null||t<qe)return null;const{collapsible:s}=n;if(s<t*Ze)return null;const o=new Set(r.subtrees.map(p=>p.name)),l=n.bySubtree[0],i=l&&l.collapsible>=s*et&&o.has(l.name)?l.name:null,d=i===null?"<Frozen>":`<Frozen name="${i}">`,u=i===null?"spread across the scene":`mostly under "${i}"`,f=`[static-batch] ${O(t)} draw calls this frame; ~${O(s)} meshes are repeats of ${O(n.familyCount)} structural families, ${u}. If that scenery is mount-static — nothing under it moves, re-colours or unmounts after mount — one wrapper collapses it to a few draws: wrap it in ${d}…</Frozen> (volter-game-editor add static-batch). Reactive scenery goes outside the wrapper, and a subtree that must stay unbatched declares it: userData={{ staticBatch: false }}.`;return{drawCalls:t,collapsible:s,subtree:i,fix:d,message:f}}const se="__volterStaticBatchAdvised";function nt(){return globalThis[se]===!0}function st(e){console.warn(e)}function ot(e,t=st){return nt()?!1:(globalThis[se]=!0,t(e.message),!0)}const B="render.vitals",at="render.census",it="render.families",lt="render.toggle",dt="render.dpr",ct="render.dpr: this world has no WebGL renderer (headless mount), so there is no pixel ratio to change. The other render.* commands still work — they read the scene graph.";function ut(e){const{registry:t,worldId:r,profiler:n,scene:s,renderer:o}=e;if(t.adapter.providers().some(c=>c.name===B))return console.warn(`[render-vitals] world "${r}" did not get the ${B} door: another live world already owns it (the names are fixed, so the first three root to mount wins). Its draws still fold into the readings — the profiler is game-scoped — but render.census/families/toggle address the owning root. If this world IS the current one, the previous mount was torn down AFTER this one seeded and its strip() took the door with it.`),null;const i=Qe(n),d=t.forRoot(r);d.registerStateProvider(B,()=>i.read()),d.registerCommand(at,{description:"Visible meshes and triangles per subtree — the address book behind the draw-call reading. Pass a subtree name (as listed by a previous census) to drill into it.",args:P([X().optional()]),locus:"client"},c=>{if(c===void 0||c==="")return j(s);const m=H(s,c);if(!m)throw new Error(`render.census: no node named "${c}" in this world. Run render.census with no argument to list the addressable subtrees.`);return j(m,c)}),d.registerCommand(it,{description:"Meshes grouped by shared (geometry, material) identity, largest group first — the instancing shortlist for a draw-call diet. `structural` is the same scan keyed by VALUE instead of object identity: what would collapse under a <Frozen> wrapper (volter-game-editor add static-batch) even when every mesh carries its own inline material.",args:P([]),locus:"client"},()=>({...Le(s),structural:Y(s)})),d.registerCommand(lt,{description:"Show/hide a named subtree (as listed by render.census) and read render.vitals again — the difference is what that subtree costs.",args:P([X()]),locus:"client"},c=>{const m=H(s,c);if(!m)throw new Error(`render.toggle: no node named "${c}" in this world. Run render.census to list the addressable subtrees.`);return m.visible=!m.visible,{name:c,visible:m.visible}}),d.registerCommand(dt,{description:"Set the renderer pixel ratio (retina default is ~2) to probe GPU fill cost — render CPU that does not move when the drawing buffer shrinks was never fill-bound.",args:P([ce().positive().max(8)]),locus:"client"},c=>{if(!o)throw new Error(ct);const m=o.getSize(new Re);return o.setPixelRatio(c),o.setSize(m.x,m.y,!1),{pixelRatio:o.getPixelRatio(),drawingBuffer:{width:o.domElement.width,height:o.domElement.height}}});let u=null,f=!1;const p=()=>{if(f||i.read().presentedFrames<tt)return;f=!0,u?.(),u=null;const c=rt({drawCalls:i.read().drawCalls,census:j(s),structural:Y(s)});c&&ot(c)};u=n.subscribe(p);let a=!1;return{vitals:i,dispose(){a||(a=!0,u?.(),u=null,i.dispose())}}}const ft={};function mt(e){return ft?.VITE_VOLTER_DEV_BUILD==="true"}const Q=new WeakMap;function pt(e){const t=Q.get(e.Component);if(t)return t;class r extends e.Component{state={failed:!1};static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(s){this.props.onError(s)}render(){return this.state.failed?null:this.props.children}}return Q.set(e.Component,r),r}function ht(e,t,r){const{createElement:n,Fragment:s,useEffect:o,createRoot:l,extend:i,advance:d,flushSync:u}=r,f=pt(r),p=n(t);return{id:e,async mount(a){i(a.three);const c=a.game?_e(a.game):null,m=a.surface.canvas,w=l(m);let A;const M=new Promise(h=>{A=h});let S;const ae=new Promise(h=>{S=h});function ie(){return o(S,[]),null}await w.configure({gl:a.renderer,shadows:a.renderer.shadowMap?.enabled??!1,frameloop:"never",size:{width:a.surface.width,height:a.surface.height,top:0,left:0},...a.headless?{}:{events:r.events},onCreated:h=>A(h)});const le=n(s,null,p,n(ie,{key:"volter-mount-effects-ready"})),_=await new Promise((h,y)=>{const b=E=>{I(),w.unmount(),c?.strip(e),y(new Error(`three world "${e}": fiber crashed before its first commit — ${E}`))},g=E=>{b(E.message)},k=setTimeout(()=>{I(),w.unmount(),c?.strip(e),y(new Error(`three world "${e}": onCreated did not fire within 10s — the R3F tree never reached its first commit (mount() fails loudly instead of hanging)`))},1e4),I=()=>{clearTimeout(k),typeof window<"u"&&window.removeEventListener("error",g)};typeof window<"u"&&window.addEventListener("error",g),w.render(n(f,{onError:E=>b(E.message)},le)),Promise.all([M,ae]).then(([E])=>{I(),h(E)})});_.clock.autoStart=!1,_.clock.stop();const v=()=>_.get();let $=null;if(!a.headless&&a.game&&mt()){if(a.game.profiler.enabled=!0,!c)throw new Error(`three world "${e}": mounted Game has no debug registry.`);$=ut({registry:c,worldId:e,profiler:a.game.profiler,scene:v().scene,renderer:a.renderer})}const de=typeof a.renderer.getContext=="function"?a.renderer.getContext():void 0,z=Me(a.headless??!1,de),G=z?Se(z):null,C=G?Ce({capture:G,scene:_.scene,memory:()=>Ae(v().scene,a.renderer.info)}):null,K=c?{debug:c.adapter}:{};C&&(K.renderDebug=C.adapter);let D=0;return{kind:"three",get scene(){return v().scene},get camera(){return v().camera},drivesOwnLoop:!1,updateCadence:"display",systems:K,systemScope:v().scene,update(h){D+=h;const y=v();try{C?.beforeRender();const b=a.game?.profiler;if(!b?.enabled){d(D,!0,y);return}const g=a.renderer.info,k=g?.render.frame??0;b.beginPhase();try{d(D,!0,y)}finally{b.endPhase(ne)}g&&b.reportRender({gpuMs:null,drawCalls:g.render.calls,triangles:g.render.triangles,geometries:g.memory.geometries,textures:g.memory.textures,renderPasses:g.render.frame-k})}finally{C?.afterRender()}},resize(h,y){v().setSize(h,y)},dispose(){C?.dispose(),u(()=>w.unmount()),$?.dispose(),$=null,c?.strip(e)}}}}}function q(e,t,r){const n=e;return typeof n?.default=="function"?ht(t,n.default,r):null}const gt={createElement:x.createElement,Fragment:x.Fragment,Component:x.Component,useEffect:x.useEffect,createRoot:xe,extend:Te,advance:Fe,flushSync:Pe,events:$e};let L=null;const wt=["createElement","Fragment","Component","useEffect","createR3FRoot","extendThree","advance","flushSync","events"];async function vt(){const e=await import(fe),t=wt.filter(r=>e[r]===void 0);if(t.length>0||typeof e.projectThree!="object"||e.projectThree===null)throw new Error(`The packaged runtime's synthetic R3F module did not export ${[...t,...e.projectThree?[]:["projectThree"]].join(", ")} — see R3F_DOORWAY in vite-plugin-module-doorways.ts.`);return{runtime:{createElement:e.createElement,Fragment:e.Fragment,Component:e.Component,useEffect:e.useEffect,createRoot:e.createR3FRoot,extend:e.extendThree,advance:e.advance,flushSync:e.flushSync,events:e.events},projectThree:e.projectThree}}function yt(e,t){return{id:e.id,mount(r){return e.mount({...r,three:t})}}}async function Z(e,t){if(!await ue())return q(e,t,gt);L||(L=vt());const{runtime:r,projectThree:n}=await L,s=q(e,t,r);return s?yt(s,n):null}function bt(e){if(e===null||typeof e!="object")return!1;const t=e;return typeof t.id=="string"&&t.id.length>0&&typeof t.mount=="function"}async function Et(e,t,r){const n=r?.namedExport;if(n!==void 0){const s=e[n];if(typeof s!="function")throw new Error(`three root "${t}": ${r?.entryPath??"the entry module"} has no exported component "${n}" (manifest \`world.export\`) — it exports ${Object.keys(e).join(", ")||"(nothing)"}.`);return Z({default:s},t)}return bt(e.adapter)?e.adapter:Z(e,t)}function Rt(e,t){const r=o=>{throw new Error(`resolveRootBinding: world "${e.id}" declares { module: "${t}" } — ${o} (the module path must be game-folder-relative, normalized, with no \`..\` escape).`)},n=ke(t);n==="empty"&&r("the module path is empty"),n==="nul"&&r("the module path contains a NUL byte"),n==="absolute"&&r("the module path is absolute, not game-folder-relative"),n==="traversal"&&r("the module path contains a `..` segment and would escape the game folder"),t.includes("\\")&&r("the module path contains a backslash (not POSIX-relative)");const s=t.split("/").filter(o=>o.length>0&&o!==".").join("/");return s===""&&r("the module path resolves to nothing (empty after normalization)"),s}function N(e,t,r){const n=o=>{throw new Error(`resolveRootBinding: world "${e.id}"'s custom adapter module "${t}" ${o} — a { module } adapter must default-export an object shaped like \`RootAdapter\`: \`{ id: string, mount(host): Promise<MountedThreeRoot> }\`.`)};(r===null||typeof r!="object")&&n("has no default export (or it is not an object)");const s=r;(typeof s.id!="string"||s.id.length===0)&&n("default-exports an object with no non-empty string `id`"),typeof s.mount!="function"&&n("default-exports an object with no `mount` function")}const Mt="this world mounts through the project’s own adapter module, so every capability the editor has here is one that module hands it";function W(e,t){return{id:t.id,async mount(r){const n=await t.mount(r),s=Ie(e.id,je(n),Mt,n.kind);if(s){const{editorConsole:o}=await pe(async()=>{const{editorConsole:l}=await import("./index-BR2HjNxF.js").then(i=>i.tQ);return{editorConsole:l}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]));o.warn(s,"adapter")}return n}}}async function St(e,t,r){const{adapter:n}=e;if(n.type!=="module")throw new Error(`resolveModuleAdapter: world "${e.id}" is not a { module } world.`);const s=Rt(e,n.module),l=await import(me(t,s,r)),i=l.default;switch(e.surface){case"three":return N(e,n.module,i),{resolved:{surface:"three",adapter:W(e,i)},module:l};case"canvas":return N(e,n.module,i),{resolved:{surface:"canvas",adapter:W(e,i)},module:l};case"dom":return N(e,n.module,i),{resolved:{surface:"dom",adapter:W(e,i)},module:l};default:return V(e.surface,"resolveModuleAdapter")}}async function Ct(e,t,r,n){const{adapter:s,module:o}=await _t(e,t,n);return{adapter:s,declaration:At(e,r,o)}}function At(e,t,r){const n=ve(e.id,r),s=ye(e.id,r,e.surface);return{root:e,definition:t,entry:{reach:"full",module:r},...n?{entryDebug:n}:{},...s?{entrySystems:s}:{}}}async function _t(e,t,r){const{adapter:n}=e;switch(n.identity){case"three":return Pt(e,t,r);case"canvas":return xt(e,t,r);case"dom":{let s={};return{adapter:{surface:"dom",adapter:await Be(e,t,l=>{s=l})},module:s}}case"module":{const{resolved:s,module:o}=await St(e,t.projectRoot,t.epoch);return{adapter:s,module:o}}case"ingest-react":{const{adapter:s,module:o}=await Oe(e,t);return{adapter:{surface:"dom",adapter:s},module:o}}case"ingest-pixi":case"ingest-three":return Tt(e);default:{const s=n;throw new Error(`resolveRootBinding: unhandled adapter identity ${JSON.stringify(s)}`)}}}async function Pt(e,t,r){if(e.entry===void 0)throw new Error(`resolveRootBinding: world "${e.id}" is a three root with no \`entry\` — this should have been rejected by manifest validation. A three root is authored as a TSX/R3F world module.`);const n=await t.loadEntryModule(e.entry,e.id,"three",r?.selectionOverride),s=await Et(n,e.id,{entryPath:e.entry});if(!s)throw new Error(`Project script at ${e.entry} neither exports \`adapter\` nor default-exports a React world component — every explicit first-party entry module satisfies one of the two (\`export default function World() { … }\`, or an \`adapter\` export for full control).`);return{adapter:{surface:"three",adapter:s},module:n}}async function xt(e,t,r){if(e.entry===void 0)throw new Error(`resolveRootBinding: world "${e.id}" is a canvas root with no \`entry\` — this should have been rejected by manifest validation. A canvas root is authored as a TSX world module; point \`entry\` at it.`);const n=await t.loadEntryModule(e.entry,e.id,"canvas",r?.selectionOverride),s=await t.pixiRuntime(n,e.id);if(!s)throw new Error(`Project script at ${e.entry} (canvas root "${e.id}") must default-export a React component (\`export default function World() { … }\`) — or export an \`adapter\` for full control.`);return{adapter:{surface:"canvas",adapter:s},module:n}}function Tt(e){const t=e.adapter.identity==="ingest-pixi"?"resolveIngest2DDescriptor + mountCanvasIngestRootFromManifest":"resolveIngestDescriptor + mountThreeIngestRootFromManifest";throw new Error(`resolveRootBinding: world "${e.id}" (${e.adapter.identity}) is a captured foreign runtime, not a host-mounted RootAdapter; dispatch it through ${t}`)}async function oe(e,t,r){const n=he(),s=await De(t,n),o=await ge(),l=[];for(const i of we(e)){const d=r?.selectionOverride,u=await Ct(i,s,o,{...d&&i.id===d.regionId?{selectionOverride:{selection:d.selection,key:d.key}}:{}});l.push({world:i,resolved:u})}return{roots:l,mountId:String(n)}}async function Ut(e,t){const{roots:r}=await oe(e,t),n=[];for(const{world:s,resolved:o}of r){const l={id:s.id,zOrder:s.zOrder,pausable:s.pausable,declaration:o.declaration},i=o.adapter;switch(i.surface){case"canvas":n.push({...l,kind:"canvas",adapter:i.adapter});break;case"dom":n.push({...l,kind:"dom",adapter:i.adapter});break;case"three":n.push({...l,kind:"three",adapter:i.adapter});break;default:V(i,"resolveAllRoots")}}return n}async function zt(e,t,r){const{roots:n,mountId:s}=await oe(e,t,r),o={};for(const{world:l,resolved:i}of n){const{root:d,...u}=i.declaration,f=i.adapter;switch(f.surface){case"canvas":o[l.id]={kind:"canvas",adapter:f.adapter,declaration:u};break;case"dom":o[l.id]={kind:"dom",adapter:f.adapter,declaration:u};break;case"three":o[l.id]={kind:"three",adapter:f.adapter,declaration:u};break;default:V(f,"resolveAllRootEntries")}}return{entries:o,mountId:s}}export{Et as a,zt as b,Ut as r};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as h,b as B,S as p,P as $,s as F,c as I,o as M}from"./worker-rn-I3H2b.js";import{s as v}from"./session-B6eyWDVn.js";async function L(o,s,t,e){if(!Number.isSafeInteger(e)||e<0)throw new Error(`${s}: invalid file size ${e}`);const n=`${s}.volter-stage-${crypto.randomUUID()}`,c=t.getReader();let i,a=!1;try{i=o.open(n,"w"),o.truncate(n,e);let l=0;for(;;){const{done:w,value:y}=await c.read();if(w)break;if(l+y.byteLength>e)throw new Error(`${s}: file grew during import`);for(let u=0;u<y.byteLength;){const m=Math.min(1048576,y.byteLength-u),d=o.write(i,y,u,m,l);if(d<=0||d>m)throw new Error(`${s}: invalid file write (${d})`);u+=d,l+=d}}if(l!==e)throw new Error(`${s}: expected ${e} bytes, received ${l}`);o.close(i),i=void 0,o.rename(n,s),a=!0}finally{if(a||await c.cancel().catch(()=>{}),c.releaseLock(),i&&o.close(i),!a)try{o.unlink(n)}catch{}}}async function D(o){const s=await fetch(o);if(!s.ok)throw new Error(`${o}: HTTP ${s.status}`);const t=await s.text(),e={exports:{}},c=new Function("module","exports","define",`${t}
|
|
2
|
-
return typeof createBlenderModule === 'function' ? createBlenderModule : module.exports;`)(e,e.exports,void 0);if(typeof c!="function")throw new Error("blender_browser.js did not produce a module factory");return c}const N=new TextEncoder;function x(o,s){let t="";for(const e of s.split("/").filter(Boolean))o.FS_createPath(t||"/",e,!0,!0),t+=`/${e}`}function j(o){const s=o.FS;return{readFile:async t=>s.readFile(t),writeFile:(t,e)=>(s.writeFile(t,e),Promise.resolve()),writeFileStream:(t,e,n)=>L(s,t,e,n),mkdirTree:async t=>s.mkdirTree(t),readdir:async t=>s.readdir(t),stat:async t=>{let e;try{e=s.stat(t)}catch{return null}const n=e.mtime;return{size:e.size,mode:e.mode??0,mtimeMs:typeof n=="number"?n:n?.getTime()??0}},unlink:async t=>s.unlink(t)}}const C="volter-blender-artifacts";async function S(o,s){const t=h(o);if(!s||typeof caches>"u")return fetch(t);const e=`${t}?sha256=${s}`,n=await caches.open(C),c=await n.match(e);if(c)return c;const i=await fetch(t);if(!i.ok)return i;for(const l of await n.keys())l.url.startsWith(`${t}?sha256=`)&&l.url!==e&&await n.delete(l);const a=new Response(await i.blob(),{headers:{"content-type":i.headers.get("content-type")??"application/octet-stream"}});return await n.put(e,a.clone()),a}async function Y(o,s){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 t=h("blender_browser.js"),e=s.digests??{},[n,c]=await Promise.all([D(t),S("blender_browser.data",e["blender_browser.data"]).then(async r=>{if(!r.ok)throw new Error(`blender_browser.data: HTTP ${r.status}`);return r.arrayBuffer()})]);let i=null;const a=performance.now();let l=null;const w=(r,f)=>{f.startsWith("@@VOLTER-READY ")&&(l=f.slice(15)),o.log(I(f),f)},y=WebAssembly.Memory;let u=null;WebAssembly.Memory=function(r){const f=new y(r);return u??=f,f};const m=()=>u?new Uint8Array(u.buffer):d.HEAPU8,d=await n({arguments:["--background","--factory-startup","--python",B],locateFile:r=>h(r),getPreloadedPackage:()=>c,instantiateWasm:(r,f)=>((async()=>{const b=await S("blender_browser.wasm",e["blender_browser.wasm"]);if(!b.ok)throw new Error(`blender_browser.wasm: HTTP ${b.status}`);const{instance:P,module:A}=await WebAssembly.instantiateStreaming(b,r);f(P,A)})().catch(b=>{i=b}),{}),mainScriptUrlOrBlob:t,print:r=>w("log",r),printErr:r=>w("error",r),preRun:[r=>{r.ENV??={},Object.assign(r.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])x(r,f);r.FS_createDataFile(p,"session.py",N.encode(v),!0,!0,!0)}]}).finally(()=>{WebAssembly.Memory=y});for(;l===null;){if(i)throw i instanceof Error?i:new Error(String(i));await F(5)}const k=performance.now()-a,O=JSON.parse(l);let _=null;if(typeof d.releasePreloadedFileData=="function"){const r=d.releasePreloadedFileData();_=r.bytes,o.log("log",`blender: released the preloaded ${(r.bytes/1048576).toFixed(0)} MB payload (${r.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 E=d.FS;let T="";for(const r of`${o.project}`.split("/").filter(Boolean)){T+=`/${r}`;try{E.chmod(T,511)}catch{}}for(const r of["/work","/tmp","/root",p,...$])try{E.chmod(r,511)}catch{}const g=j(d);E.chmod("/bw/datafiles",493),await W(g,e["essentials.bin"]);const{request:R}=M(g,o);return{skew:"emscripten",banner:O,files:g,request:R,readArena:async()=>{const r=d._blender_web_export_buffer();return r===0?m():m().subarray(r,r+d._blender_web_export_buffer_size())},bootMs:k,memoryBytes:()=>m().length,releasedPayloadBytes:_}}async function W(o,s){const[t,e]=await Promise.all([fetch(h("essentials.json")),S("essentials.bin",s)]);if(!t.ok||!e.ok)throw new Error(`Blender Essentials assets are missing (${t.status}/${e.status})`);const n=await t.json(),c=await e.arrayBuffer(),i=Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256",c)),a=>a.toString(16).padStart(2,"0")).join("");if(c.byteLength!==n.bytes||i!==n.sha256)throw new Error("Blender Essentials payload does not match its source manifest");for(const a of n.files){if(!a.path||a.path.includes("\\")||a.path.split("/").some(w=>!w||w==="."||w==="..")||!Number.isInteger(a.offset)||!Number.isInteger(a.bytes)||a.offset<0||a.bytes<0||a.offset+a.bytes>c.byteLength)throw new Error(`Invalid Blender Essentials file: ${a.path}`);const l=`/bw/datafiles/assets/${a.path}`;await o.mkdirTree(l.slice(0,l.lastIndexOf("/"))),await o.writeFile(l,new Uint8Array(c,a.offset,a.bytes))}}export{Y as startEmscriptenBlenderEngine};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import{r as E,ls as yt}from"./index-BR2HjNxF.js";import{a as bt}from"./preview-renderer-BrYNFV1p.js";import{v as Mt}from"./output-pass-HurwNl0G.js";import{_ as vt,fx as Ue,bi as De,aC as xt,d7 as Et,ej as St,cP as ye,el as kt,cm as Bt,cl as Ve,fo as ce,ex as At,d5 as Ct,d9 as It,cJ as jt,e as We}from"./three.core-3arARmh6.js";import{f as Tt}from"./clip-planes-CnAI6DZn.js";import{a as Lt}from"./content-bounds-CNjwljYK.js";const Ft=1024*1024,Ge={Uint8Array,Int8Array,Uint16Array,Int16Array,Uint32Array,Int32Array,Float32Array,Float64Array},_t=async t=>Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256",t)),e=>e.toString(16).padStart(2,"0")).join("");class $t{constructor(){this.buffers=null,this.offsets=[]}reset(){this.buffers=null,this.offsets=[]}async accept(e){try{if(e.kind==="begin"){if(this.buffers)throw new Error("A frame value is already arriving");if(!e.lengths.length||e.lengths.length>4096||e.lengths.reduce((s,o)=>s+o,0)>2*1024**3||e.lengths.some(s=>!Number.isSafeInteger(s)||s<0||s>1024**3))throw new Error("Invalid frame buffer lengths");this.buffers=e.lengths.map(s=>new Uint8Array(s)),this.offsets=e.lengths.map(()=>0);return}if(!this.buffers)throw new Error("Frame chunk arrived without its manifest");if(e.kind==="bytes"){const s=this.buffers[e.slot];if(!s||!Number.isSafeInteger(e.offset)||e.offset!==this.offsets[e.slot]||e.bytes.byteLength>Ft||!e.bytes.byteLength||e.offset+e.bytes.byteLength>s.byteLength)throw new Error("Frame chunk is out of order or exceeds its bound");if(await _t(e.bytes)!==e.sha256)throw new Error("Frame chunk digest mismatch");s.set(e.bytes,e.offset),this.offsets[e.slot]=e.offset+e.bytes.byteLength;return}if(e.kind!=="end")throw new Error("Unknown frame chunk");const n=this.buffers;if(n.some((s,o)=>s.length!==this.offsets[o]))throw new Error("Frame value is incomplete");const r=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(n[0]),(s,o)=>{if(!o||typeof o!="object"||!("$frameColumn"in o))return o;const a=n[o.$frameColumn],i=Ge[o.type];if(!Number.isSafeInteger(o.$frameColumn)||o.$frameColumn<1||!a||!Object.hasOwn(Ge,o.type)||!i||a.byteLength%i.BYTES_PER_ELEMENT)throw new Error("Invalid frame column descriptor");return new i(a.buffer)});return this.reset(),{value:r}}catch(n){throw this.reset(),n}}}const ze=4096;class Rt{#r;#o;#a=[];#n=new Map;#_=0;#h=null;#i=null;#l=!1;#S=!1;#k=e=>{!this.#S&&this.#x===0||(e.preventDefault(),e.returnValue="")};#f=new Map;#p=new Map;#b="engine-start";#B=null;#M=new Map;#w=null;#v=0;#A=0;#C=0;#c=null;#I=null;#u=null;constructor(e){this.#o=e,this.#r=new Worker(new URL("/assets/worker-rn-I3H2b.js",import.meta.url),{type:"module",name:"blender"}),globalThis.addEventListener?.("beforeunload",this.#k),this.#r.onmessage=n=>void this.#F(n.data),this.#r.onerror=n=>{const r=n.error,s=n.filename?` at ${n.filename}:${n.lineno}:${n.colno}`:"",o=r?.stack??r?.message??n.message,a=this.#a.length>0?`
|
|
2
|
-
Blender's last output:
|
|
3
|
-
${this.#a.join(`
|
|
4
|
-
`)}`:"",i=this.#u===null?null:Math.round(this.#u/1048576),c=i!==null&&i>=ze-16?`Blender ran out of memory: its heap reached ${i} MB of the in-tab engine's ${ze} MB, and this scene needs more. `:"",u=new Error(`${c}Blender worker failed: ${o||"the worker script did not load"}${s}${a}`);console.error(u.message);for(const l of[...this.#n.keys()])this.#g(l);for(const l of this.#n.values())l.reject(u);this.#n.clear()}}#s=null;#d=null;get project(){return this.#s}get document(){return this.#d}get lastOutput(){return[...this.#a]}start(e,n){return this.#s!==null&&this.#s!==e?Promise.reject(new Error(`The Blender session is bound to ${this.#s}, not ${e}`)):n!==void 0&&this.#d!==null&&this.#d!==n?Promise.reject(new Error(`Blender resource conflict: the session holds ${this.#d}; cannot open ${n}`)):(this.#s=e,this.#d??=n??"models/model.blend",this.#h??=this.#e({op:"start",project:e,...n===void 0?{}:{document:n}}),this.#h)}#t(){return this.#s===null?Promise.reject(new Error("The Blender session has not been started with a project (blender-start)")):this.start(this.#s)}async execute(e,n=!0,r="Blender Python"){return await this.#t(),await this.#e({op:"execute",code:e,history:n,label:r})}async historyGesture(e){await this.#t(),await this.#e({op:e})}async historyStep(e,n){return await this.#t(),(await this.#e({op:"history-step",token:e,direction:n})).moved}async sceneInfo(){return await this.#t(),await this.#e({op:"scene-info"})}async objectInfo(e){return await this.#t(),await this.#e({op:"object-info",name:e})}async rna(e,n){return await this.#t(),await this.#e({op:"rna",path:e,...n===void 0?{}:{names:n}})}async rnaContext(e,n){return await this.#t(),await this.#e({op:"rna-context",...e===void 0?{}:{object:e},...n===void 0?{}:{collection:n}})}async rnaSet(e,n,r,s,o=!0){return await this.#t(),await this.#e({op:"rna-set",history:o,path:e,property:n,value:r,...s===void 0?{}:{index:s}})}async viewShading(e){await this.#t(),await this.#e({op:"view-shading",shading:e})}async outliner(e){return await this.#t(),await this.#e({op:"outliner",...e===void 0?{}:{selected:e}})}async nodeTree(e){return await this.#t(),await this.#e({op:"node-tree",...e?.path===void 0?{}:{path:e.path},...e?.material===void 0?{}:{material:e.material}})}async uvLayout(e){return await this.#t(),await this.#e({op:"uv-layout",...e?.object===void 0?{}:{object:e.object},...e?.uvLayer===void 0?{}:{uvLayer:e.uvLayer}})}async rig(e){return await this.#t(),await this.#e({op:"rig",...e?.object===void 0?{}:{object:e.object}})}async actionClip(e){return await this.#t(),await this.#e({op:"action-clip",...e?.object===void 0?{}:{object:e.object},...e?.bake===void 0?{}:{bake:e.bake}})}async outlinerSet(e,n,r){return await this.#t(),await this.#e({op:"outliner-set",path:e,column:n,value:r})}async present(){await this.#t(),await this.#e({op:"present"})}async screenshotView(e){return await this.#t(),await this.#e({op:"screenshot-view",maxSize:e})}async readFile(e){return await this.#t(),await this.#e({op:"read-file",path:e})}async writeFile(e,n){await this.#t(),await this.#e({op:"write-file",path:e,bytes:n})}async listFiles(e){return await this.#t(),await this.#e({op:"list-files",path:e})}get presented(){return this.#I}stop(){return this.#l?Promise.resolve():this.#i?this.#i:(this.#i=(async()=>{(this.#h?await this.#h.then(()=>!0,()=>!1):!1)&&await this.#e({op:"flush-document"},!0),this.terminate()})().catch(e=>{throw this.#i=null,e}),this.#i)}terminate(){if(this.#y(),this.#l)return;this.#l=!0,globalThis.removeEventListener?.("beforeunload",this.#k);const e=this.#E("terminating worker");try{this.#r.terminate()}finally{e()}const n=new Error("The Blender session was terminated");for(const r of[...this.#n.keys()])this.#g(r);for(const r of this.#n.values())r.reject(n);this.#n.clear()}metrics(e=performance.now()){let n=null,r=this.#v,s=this.#B,o=this.#A,a=this.#C;for(const[i,c]of this.#f){const u=e-c;(n===null||u>n)&&(n=u),u>r&&(r=u,s=this.#p.get(i)??null),u>=5e3&&(o+=1),u>=3e4&&(a+=1)}return{inFlightMs:n===null?null:Math.round(n),lastCallMs:this.#w===null?null:Math.round(this.#w),maxCallMs:this.#w===null&&n===null?null:Math.round(r),maxCallLabel:s,callsOver5s:o,callsOver30s:a,lastCallWindow:this.#c,wasmMemoryMB:this.#u===null?null:Math.round(this.#u/1048576)}}#g(e){this.#M.get(e)?.(),this.#M.delete(e);const n=this.#f.get(e);if(n===void 0)return;this.#f.delete(e);const r=this.#p.get(e)??null;this.#p.delete(e);const s=performance.now()-n;this.#w=s,s>this.#v&&(this.#v=s,this.#B=r),s>=5e3&&(this.#A+=1),s>=3e4&&(this.#C+=1),this.#c!==null&&this.#c.start===n&&(this.#c={start:n,end:n+s})}#x=0;#j=Promise.resolve();#e(e,n=!1){if(this.#l||this.#i&&!n)return Promise.reject(new Error("The Blender session is stopping or terminated"));const r=performance.now();this.#x++;const s=this.#j.then(async()=>{this.#b=e.op;let o=await this.#T(e);for(;o?.load==="continue";)this.#b=o.phase,o=await this.#T({op:"load-next",token:o.token});return o?.load==="done"?o.value:o}).finally(()=>{this.#x--;const o=Math.round(performance.now()-r);try{o>=1e3&&this.#o.log?.("log",`@@VOLTER-WORK op=${e.op} totalMs=${o}`)}catch{}});return this.#j=s.then(()=>{},()=>{}),s}#T(e){if(this.#l)return Promise.reject(new Error("The Blender session is terminated"));const n=++this.#_;return new Promise((r,s)=>{this.#n.set(n,{resolve:r,reject:s});const o=performance.now();this.#f.set(n,o),this.#p.set(n,e.op==="load-next"?`load-next after ${this.#b}`:e.op),this.#c={start:o,end:null},this.#M.set(n,this.#E(`waiting for worker ${e.op}`));try{this.#r.postMessage({...e,id:n})}catch(a){this.#n.delete(n),this.#g(n),s(a instanceof Error?a:new Error(String(a)))}})}#E(e){try{const n=this.#o.work?.(e);return()=>{try{n?.()}catch{}}}catch{return()=>{}}}#L=new $t;#m=null;#y(){this.#L.reset();const e=this.#m;if(this.#m=null,e)try{Promise.resolve(this.#o.stage?.({...e,abort:!0})).catch(()=>{})}catch{}}async#F(e){if("op"in e){if(e.op==="frame-stream"){try{const o=await this.#L.accept(e.chunk);if(o){const a=o.value;if(a.op==="present"){await this.#F({...a,id:e.id});return}if(a.op!=="stage"||!this.#o.stage)throw new Error("The presenter does not support staged Blender frames");this.#m={session:a.session,revision:a.revision},await this.#o.stage(a)}this.#r.postMessage({op:"present-result",id:e.id})}catch(o){this.#y(),this.#r.postMessage({op:"present-result",id:e.id,error:o instanceof Error?o.message:String(o)})}return}if(e.op==="document-dirty"){this.#S=e.dirty;return}if(e.op==="history"){this.#o.history?.(e.entries);return}if(e.op==="log"){this.#a.push(e.text),this.#a.length>12&&this.#a.shift(),this.#o.log?.(e.level,e.text);return}if(e.op==="memory"){this.#u=e.bytes;return}const r=e.frame;typeof r?.session=="string"&&typeof r.revision=="number"&&(this.#I={session:r.session,revision:r.revision});const s=this.#E("presenting worker frame");try{const o=await this.#o.present(e.frame,e.description,e.capture);this.#m=null,this.#r.postMessage({op:"present-result",id:e.id,...o?.capture===void 0?{}:{capture:o.capture},...o!=null&&"held"in o?{held:o.held}:{}})}catch(o){this.#y(),this.#r.postMessage({op:"present-result",id:e.id,error:o instanceof Error?o.message:String(o)})}finally{s()}return}"error"in e&&this.#y();const n=this.#n.get(e.id);n&&(this.#n.delete(e.id),this.#g(e.id),"error"in e?n.reject(new Error(e.error)):n.resolve(e.result))}}const Ot="/assets/agx-base-srgb-BjWZJgrZ.lut",Nt="/assets/agx-look-medium-high-contrast-D5F_ob1L.lut",Pt="/assets/agx-look-punchy-dxsnycNs.lut",Ut="/assets/filmic-srgb-Ct35FIH6.lut",L=new Float64Array(12),qe=[0,0,0],O=new Float64Array(3),H=new Float64Array(3),F=new Int8Array([1,0,0,1,1,0,0,1,2,1,0,0,1,0,1,0,2,1,0,0,1,1,0,1,2,0,1,0,0,1,0,1,1,2,1,0,0,1,0,0,1,1,1,2,0,0,1,0,1,1,0,1,0,2]);function Dt(t,e,n){return t>e?e>n?0:t>n?1:2:n>e?3:n>t?4:5}function Je(t,e,n,r,s){const o=e*e,a=Math.min(1,Math.max(0,n))*(e-1),i=Math.min(1,Math.max(0,r))*(e-1),c=Math.min(1,Math.max(0,s))*(e-1),u=Math.min(Math.floor(a),e-2),l=Math.min(Math.floor(i),e-2),d=Math.min(Math.floor(c),e-2),S=a-u,m=i-l,k=c-d,y=(h,g,T,I)=>{const w=(u+g+(l+T)*e+(d+I)*o)*3;L[h]=t[w]/65535,L[h+1]=t[w+1]/65535,L[h+2]=t[w+2]/65535};y(0,0,0,0),y(9,1,1,1),O[0]=S,O[1]=m,O[2]=k;const p=Dt(S,m,k)*9;y(3,F[p],F[p+1],F[p+2]),y(6,F[p+3],F[p+4],F[p+5]);const C=O[F[p+6]],v=O[F[p+7]],f=O[F[p+8]];for(let h=0;h<3;h++){const g=L[h];qe[h]=g+C*(L[3+h]-g)+v*(L[6+h]-L[3+h])+f*(L[9+h]-L[6+h])}return qe}function X(t){const e=t&32768?-1:1,n=t>>10&31,r=t&1023;return n===0?e*2**-24*r:n===31?r?Number.NaN:e*Number.POSITIVE_INFINITY:e*2**(n-15)*(1+r/1024)}function je(t,e,n,r){const s=new Uint8ClampedArray(e*4);for(let o=0;o<e;o++){const a=o*4,i=X(t[a+3]),c=i===0?n:n/i;H[0]=X(t[a])*c,H[1]=X(t[a+1])*c,H[2]=X(t[a+2])*c;const u=r(H);s[a]=Math.round(u[0]*255),s[a+1]=Math.round(u[1]*255),s[a+2]=Math.round(u[2]*255),s[a+3]=Math.round(Math.min(1,Math.max(0,i))*255)}return s}function Vt(t){return new URL(Object.assign({"./agx-base-srgb.lut":Ot,"./agx-look-medium-high-contrast.lut":Nt,"./agx-look-punchy.lut":Pt,"./filmic-srgb.lut":Ut})[`./${t.replace(/\.lut$/,"")}.lut`],import.meta.url)}const Wt=57,_=-12.47393,Qe=12.5260688117,Gt=[[.4123908,.3575843,.1804808],[.212639,.7151687,.0721923],[.0193308,.1191948,.9505322]],zt=[[1.5250528,-.3159135,-.1226583],[-.5091526,1.3333274,.1382844],[.0957153,.0508974,.7879558]];function He(t,e,n){const r=e[0],s=e[1],o=e[2];n[0]=t[0][0]*r+t[0][1]*s+t[0][2]*o,n[1]=t[1][0]*r+t[1][1]*s+t[1][2]*o,n[2]=t[2][0]*r+t[2][1]*s+t[2][2]*o}const K=new Float64Array(3),Xe=new Float64Array(3),Y=[0,0,0];function ue(t){const e=Math.min(1,Math.max(0,t));return e<=.0031308?12.92*e:1.055*e**(1/2.4)-.055}function et(t,e,n,r){return Je(t,Wt,e,n,r)}function qt(t,e){He(Gt,e,Xe),He(zt,Xe,K);const n=Qe-_,r=et(t,(Math.log2(Math.max(K[0],1e-10))-_)/n,(Math.log2(Math.max(K[1],1e-10))-_)/n,(Math.log2(Math.max(K[2],1e-10))-_)/n);return Y[0]=ue(Math.max(0,r[0])**2.4),Y[1]=ue(Math.max(0,r[1])**2.4),Y[2]=ue(Math.max(0,r[2])**2.4),Y}const Ht={"AgX - Medium High Contrast":"agx-look-medium-high-contrast.lut","AgX - Punchy":"agx-look-punchy.lut"};function Xt(t,e){const n=Qe-_;return et(t,(Math.log2(Math.max(e[0],1e-10))-_)/n,(Math.log2(Math.max(e[1],1e-10))-_)/n,(Math.log2(Math.max(e[2],1e-10))-_)/n)}function Kt(t,e,n,r={}){const s=r.exposure??1,o=r.composedLook===!0?Xt:qt;return je(e,n,s,a=>o(t,a))}const tt=33,be=tt**3*3,Me=4096,de=-12.473931188,he=25;function fe(t,e){const n=Math.min(1,Math.max(0,e))*(Me-1),r=Math.min(Math.floor(n),Me-2),s=n-r;return((1-s)*t[be+r]+s*t[be+r+1])/65535}const Z=[0,0,0];function Yt(t,e){const n=Je(t,tt,(Math.log2(Math.max(e[0],1e-10))-de)/he,(Math.log2(Math.max(e[1],1e-10))-de)/he,(Math.log2(Math.max(e[2],1e-10))-de)/he);return Z[0]=fe(t,n[0]/.66),Z[1]=fe(t,n[1]/.66),Z[2]=fe(t,n[2]/.66),Z}function Zt(t,e,n,r){if(t.length!==be+Me)throw new Error("Invalid Blender Filmic display table");return je(e,n,r,s=>Yt(t,s))}const W=2.4,$=.055,nt=$/(W-1),Jt=1/(W/(1+$)*((nt+$)/(1+$))**(W-1)),Qt=((nt+$)/(1+$))**W;function pe(t){return t>0?t<Qt?t*Jt:(1+$)*t**(1/W)-$:0}const J=[0,0,0];function en(t){return J[0]=pe(t[0]),J[1]=pe(t[1]),J[2]=pe(t[2]),J}function tn(t,e,n){return je(t,e,n,en)}function rt(t,e,n,r){if(!Number.isFinite(n.width)||!Number.isFinite(n.height)||n.width<1||n.height<1)throw new Error("Scene capture requires finite positive dimensions");const s=Math.min(2048,Math.round(n.width)),o=Math.min(2048,Math.round(n.height)),a=r?1:2,i=s*a,c=o*a,u=bt(),l=u.renderer,d={target:l.getRenderTarget(),toneMapping:l.toneMapping,exposure:l.toneMappingExposure,colorSpace:l.outputColorSpace,shadows:l.shadowMap.enabled,shadowType:l.shadowMap.type,clearColor:l.getClearColor(new vt),clearAlpha:l.getClearAlpha(),background:t.background};let S,m,k=!1;try{S=new Ue(i,c,{type:De}),n.effect&&(S.depthTexture=new xt(i,c)),l.shadowMap.enabled=!0,l.shadowMap.type=Et,l.outputColorSpace=St,l.toneMapping=n.toneMapping??ye,l.toneMappingExposure=n.exposure??1,l.setClearColor(0,n.transparent?0:1),n.transparent&&(t.background=null),l.setRenderTarget(S),l.clear(),l.render(t,e);const y=n.effect?.render(l,S,t,e)??S;if(y.texture.type!==De||y.width!==i||y.height!==c)throw new Error("Scene capture effect must return a same-size half-float target");if(r){const w=new Uint16Array(i*c*4);return l.readRenderTargetPixels(y,0,0,i,c,w),k=!0,{pixels:w,width:s,height:o}}m=new Ue(i,c),Mt(n.transparent===!0).render(l,m,y,0,!1);const p=new Uint8Array(i*c*4);l.readRenderTargetPixels(m,0,0,i,c,p);const C=document.createElement("canvas");C.width=i,C.height=c;const v=C.getContext("2d");if(!v)throw new Error("Scene capture could not create an image canvas");const f=v.createImageData(i,c),h=i*4;for(let w=0;w<c;w++)f.data.set(p.subarray((c-1-w)*h,(c-w)*h),w*h);v.putImageData(f,0,0);const g=document.createElement("canvas");g.width=s,g.height=o;const T=g.getContext("2d");if(!T)throw new Error("Scene capture could not create an output canvas");T.drawImage(C,0,0,s,o);const I=g.toDataURL("image/png");return k=!0,I}finally{t.background=d.background,l.setRenderTarget(d.target),l.toneMapping=d.toneMapping,l.toneMappingExposure=d.exposure,l.outputColorSpace=d.colorSpace,l.shadowMap.enabled=d.shadows,l.shadowMap.type=d.shadowType,l.setClearColor(d.clearColor,d.clearAlpha),m?.dispose(),S?.dispose(),u.release({discard:!k})}}function nn(t,e,n){return rt(t,e,n,!0)}function rn(t,e,n){return rt(t,e,n,!1)}const on=t=>typeof t=="object"&&t!==null&&typeof t.subscribeFrames=="function"&&typeof t.objectForBlenderName=="function"&&typeof t.blenderObjectName=="function"&&typeof t.blenderSelection=="function"&&typeof t.setStageMode=="function";function Te(){const t=E().documents.context(ct());return on(t)?t:null}function sn(){return Te()?.blenderSelection()??{selected:[],active:null}}const an={tree:null,byId:new Map,parentOf:new Map,error:null,loading:!1};let ve=an,ot=0;const xe=new Set;let U=null,se=null,Le="",D=null;function ln(t){const e=new Map,n=new Map,r=(s,o)=>{e.set(s.id,s),n.set(s.id,o);for(const a of s.children)r(a,s.id)};for(const s of t?.rows??[])r(s,null);return{byId:e,parentOf:n}}function ee(t){ve={...ve,...t},ot+=1;for(const e of[...xe])e()}function Ln(t){return xe.add(t),()=>{xe.delete(t)}}function Fn(){return ot}function _n(){return ve}function Fe(t){D!==t&&(D=t,setTimeout(()=>{D===t&&(D=null,st(t===""?[]:t.split("\0")))},0))}let we=0,Ee=Promise.resolve();function st(t){const e=cn(t);return Ee=e,e}async function cn(t){const e=t.join("\0"),n=++we;se=e,Le=e,ee({loading:!0});try{const r=await Mn(t);if(n!==we)return;Te()?.setStageMode(r?.mode??null),ee({tree:r,...ln(r),loading:!1,error:null})}catch(r){if(n!==we)return;ee({loading:!1,error:at(r)})}}function un(){se=null,Fe(Le);for(const t of[...Se])t()}const Se=new Set;function $n(t){return _e(),Se.add(t),()=>{Se.delete(t)}}let Q=!1,ge=null;function _e(){const t=Te();if(U!==null&&ge===t)return;U!==null&&(U(),U=null,ge=null);const e=t;if(e!==null){U=e.subscribeFrames(un),ge=e;return}Q||(Q=!0,E().documents.waitForContext(ct()).then(()=>{Q=!1,_e()}).catch(()=>{Q=!1}))}function Rn(t){if(!A())return;_e();const e=[...t].sort().join("\0");se!==e&&Fe(e)}async function dn(t){if(!A())return;D=null;let e=st([...t].sort());for(;;){if(await e,Ee===e)return;e=Ee}}async function On(t,e,n){try{return await dt(t,e,n),se=null,Fe(Le),!0}catch(r){return ee({error:at(r)}),!1}}function at(t){return t instanceof Error?t.message:String(t)}const hn={transform:{cx:0,cy:0,zoom:1},looked:null,refusal:null,size:{w:0,h:0},framedAt:0,drawn:[]};let ke=hn,$e=0;const oe=new Set;let it=0;function me(){return ke}function Nn(){return $e}function Pn(t){return oe.add(t),()=>{oe.delete(t)}}function V(t){ke={...ke,...t},$e+=1;for(const e of[...oe])e()}function fn(){it+=1,$e+=1;for(const t of[...oe])t()}function Un(){return it}function N(t){V({refusal:t})}const Ke=new Map;function pn(t){let e=Ke.get(t);return e||(e=fetch(Vt(t)).then(async n=>{if(!n.ok)throw new Error(`Blender display table ${t}: ${n.status} ${n.statusText}`);return new Uint16Array(await n.arrayBuffer())}),Ke.set(t,e)),e}function wn(t){const e=atob(t),n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return new Uint16Array(n.buffer,n.byteOffset,n.byteLength>>1)}async function lt(t,e){const n=e.look??"None",r=e.toneMapping==="filmic",s=e.toneMapping==="none";if(!s&&e.toneMapping!=="agx"&&!r)throw new Error("Blender's Khronos PBR Neutral view transform has no scene-linear implementation in the browser, so it cannot resolve a composited or scene-referred frame (implemented: Standard, AgX, Filmic)");const o=s?null:r?"filmic-srgb.lut":n==="None"?"agx-base-srgb.lut":Ht[n];if(o===void 0)throw new Error(`Blender display transform has no table for look ${n}`);const a=o?await pn(o):null,i=e.linearInput,c=i?{pixels:wn(i.base64),width:i.width,height:i.height}:t;if(!c)throw new Error("Blender display transform requires a linear capture");const{pixels:u,width:l,height:d}=c,S=s?tn(u,l*d,e.exposure):r?Zt(a,u,l*d,e.exposure):Kt(a,u,l*d,{exposure:e.exposure,composedLook:n!=="None"}),m=document.createElement("canvas");m.width=l,m.height=d;const k=m.getContext("2d");if(!k)throw new Error("Blender display transform could not create its image canvas");const y=k.createImageData(l,d),p=l*4;for(let f=0;f<d;f++){const h=(d-1-f)*p;y.data.set(S.subarray(h,h+p),f*p)}k.putImageData(y,0,0);const C=m.toDataURL("image/png"),v={base64:C.slice(C.indexOf(",")+1),mimeType:"image/png"};if(e.linear===!0){const f=new Uint8Array(u.buffer,u.byteOffset,u.byteLength);let h="";for(let g=0;g<f.length;g+=32768)h+=String.fromCharCode(...f.subarray(g,g+32768));v.linearBase64=btoa(h),v.linearWidth=l,v.linearHeight=d}return v}async function gn(t,e,n,r,s=()=>{}){const o={none:ye,agx:We,neutral:jt,filmic:ye};await n.prepare(e),s();const a={effect:n.effect,width:r.width,height:r.height,transparent:r.transparent===!0,toneMapping:o[r.toneMapping]??We,exposure:r.exposure},i=r.toneMapping==="agx"||r.toneMapping==="filmic"||r.linear===!0?await lt(nn(t,e,a),r):null;if(s(),i)return i;const c=rn(t,e,a);if(!c)throw new Error("Blender render could not capture its image");return{base64:c.slice(c.indexOf(",")+1),mimeType:"image/png"}}const mn="document:blender:runtime";let x=null,Ye=0;function Dn(t){const e=++Ye;return x=t,P(),()=>{Ye===e&&(x=null,P())}}function te(){const t=b?.document,e=E().documents.activeId(),n=e?.startsWith("document:model:")?e.slice(15):x?.blend;return!n||!t||n===t?null:`Blender is editing ${t}; ${n} is not open. Return to ${t} before editing.`}function j(){return x?.documentId??mn}function ct(){return j()}async function Vn(t,e){const n=E();if(!n.session.open())throw new Error("Opening a model requires an open project session.");const r=n.projectLocalState.projectRootPath();if(r===null)throw new Error("Opening a model requires a project path.");if(x!==t||n.documents.activeId()!==t.documentId)return!1;const s=M(),o=s.start(r,t.blend);if(e(),await o,x!==t)return!1;const a=(await Ie()).snapshot();if(x!==t)return!1;const i=s.presented;return(!a||!i||a.session!==i.session||a.revision!==i.revision)&&await s.present(),x===t}function A(){return b?.project!=null&&te()===null}let ut=0;const Be=new Set;function Wn(){return ut}function Gn(t){return Be.add(t),()=>{Be.delete(t)}}function P(){ut+=1;for(const t of[...Be])t()}async function zn(t,e){return A()?M().rna(t,e):null}async function qn(t,e){return A()?M().rnaContext(t,e):null}async function yn(t,e,n,r,s=!0){if(!A())return null;const o=await M().rnaSet(t,e,n,r,s);return P(),o}async function Hn(t){A()&&await M().viewShading(t)}async function bn(t,e=!0,n="Blender Python"){const r=await M().execute(t,e,n);P();const s=/^Error executing code:/.exec(r);return{text:r,executed:s===null,result:s===null?r.replace(/^Code executed successfully: ?/,""):"",error:s===null?null:r.replace(/^Error executing code: ?/,"")}}function Xn(){M().historyGesture("history-begin").catch(t=>E().console.error(`Could not begin Blender undo gesture: ${String(t)}`,"blender-history"))}async function Kn(){await M().historyGesture("history-end")}async function Mn(t){return A()?M().outliner(t):null}async function Yn(t){return A()?M().nodeTree(t):null}async function Zn(t){return A()?M().uvLayout(t):null}async function Jn(t){return A()?M().rig(t):null}async function Qn(t){return A()?M().actionClip(t):null}async function dt(t,e,n){if(!A())return null;const r=await M().outlinerSet(t,e,n);return P(),r}const vn={view:"blender-node-view",title:"Node Editor",verbs:[["state",void 0],["look",void 0],["view-all","Node Editor: Frame All"],["zoom",void 0],["pan",void 0],["move",void 0],["link",void 0],["set-value",void 0],["use-nodes",void 0],["collapse-panel",void 0]].map(([t,e])=>({id:t,...e?{title:e}:{},run:n=>ht({...n,action:t})}))};function ht(t){const e=typeof t.action=="string"?t.action:"state";switch(e){case"state":break;case"look":V({looked:typeof t.node=="string"?t.node:null,refusal:null});break;case"view-all":fn(),V({refusal:null});break;case"zoom":{const n=typeof t.zoom=="number"?t.zoom:1;V({transform:{...me().transform,zoom:n},refusal:null});break}case"pan":{const n=me().transform;V({transform:{...n,cx:typeof t.cx=="number"?t.cx:n.cx,cy:typeof t.cy=="number"?t.cy:n.cy},refusal:null});break}case"move":N(`Moving "${String(t.node??"a node")}" writes Node.location — editing parity is not the program.`);break;case"link":N("Dragging between sockets would make a link — editing parity is not the program.");break;case"set-value":N(`Changing "${String(t.socket??"a socket")}" writes the socket's default_value — editing parity is not the program.`);break;case"use-nodes":N("Use Nodes writes Material.use_nodes — editing parity is not the program.");break;case"collapse-panel":N(`Collapsing "${String(t.panel??"a panel")}" writes the panel's is_collapsed — editing parity is not the program.`);break;default:N(`blender-node-view: no action "${e}" — state, look, view-all, zoom, pan, and the refusals move, link, set-value, use-nodes, collapse-panel.`)}return me()}let b=null;const ne=new Set;function ft(){ne.size&&E().history.invalidate([...ne]),ne.clear()}let Ae=null,Ze=!1;function re(t){try{const e=E().session.beginWork(`Blender: ${t}`);return()=>{try{e()}catch{}}}catch{return()=>{}}}function Ce(){const t=re("invalidating history and releasing runtime");try{ft(),Ae?.abort(),Ae=null,b?.terminate(),b=null,pt=null}finally{t()}}function xn(){Ze||(Ze=!0,E().session.onBeforeClose(async()=>{await b?.stop(),Ce()}),E().session.onEnded(Ce))}let pt=null;const En=t=>typeof t=="object"&&t!==null&&typeof t.applyFrame=="function"&&typeof t.stageFrame=="function"&&typeof t.snapshot=="function"&&typeof t.captureSnapshot=="function"&&typeof t.recordPresentation=="function"&&typeof t.recordPhotograph=="function";async function Ie(){const{documents:t}=E(),e=Date.now()+15e3;let n=j();for(;;){n=j();const r=await t.waitForContext(n,Math.max(0,Math.min(250,e-Date.now())));if(En(r))return r;if(Date.now()>=e)break}throw new Error(`The Blender Model document is not open, or the open one is not a Model this engine can present to (it must answer stageFrame, applyFrame, captureSnapshot, recordPresentation and recordPhotograph): nothing published a presentable view as ${n} within 15 s (bound model: ${x?.documentId??"none"}). Open the Model document first (\`volter blender-mcp\` opens it before its first call).`)}function M(){const t=te();if(t)throw new Error(t);if(b!==null)return b;xn();const e=new AbortController;Ae=e;let n=!1,r=null;b=new Rt({work:re,history:o=>{const a=b;if(!a)throw new Error("Blender history arrived before its runtime");for(const i of o){if("reset"in i){ft();continue}if(!i.resource)throw new Error("A Blender edit has no document resource");ne.add(i.resource);const c=async u=>{if(b!==a)throw new Error("This Blender history belongs to a closed worker");const l=await a.historyStep(i.id,u);return P(),await dn(sn().selected),l};E().history.record({id:i.id,label:i.label,resources:[i.resource],document:j(),undo:()=>c("undo"),redo:()=>c("redo")})}},stage:async o=>{if(o.abort){r?.stageFrame(o),r=null;return}const a=te();if(a)throw new Error(a);if(x===null)return;const i=j(),c=await Ie();if(e.signal.throwIfAborted(),j()!==i)throw new Error("Blender document changed during frame transfer");r=c,c.stageFrame(o)},present:async(o,a,i)=>{const c=te();if(c)throw new Error(c);if(x===null){if(i?.render)throw new Error("Rendering a Blender frame needs the Model document open; nothing is presenting.");return{}}const u=j(),l=re("waiting for Model presenter");let d;try{d=await Ie()}finally{l()}if(e.signal.throwIfAborted(),j()!==u)throw new Error("Blender document changed before its frame could be presented");const S=re("applying frame to Model"),m=(()=>{try{return d.applyFrame(o)}finally{S()}})(),k=typeof m=="object"&&m!==null&&"held"in m,y=k?m.held:null,p=w=>({...w===void 0?{}:{capture:w},...k?{held:y}:{}});if(d.recordPresentation(a),!i||(pt=i,!i.render))return p(void 0);const C=d.snapshot(),v=()=>{if(e.signal.throwIfAborted(),j()!==u||d.snapshot()!==C)throw new Error("Blender capture document or source revision changed before completion")};if(i.render.linearInput){const w=await lt(null,i.render);return v(),p(w)}const{render:f,position:h,target:g,up:T}=i;if(!h||!g||!T)throw new Error("A Blender render capture must carry the scene camera position, target and up");if(n)throw new Error("A Blender render capture is already in progress");const I=d.captureSnapshot();n=!0,e.signal.addEventListener("abort",I.dispose,{once:!0});try{v();const w=new kt;w.add(I.root),w.updateMatrixWorld(!0);const G=I.root.matrixWorld,ae=new Bt().copy(G).invert(),wt=new Ve().setFromMatrix4(G),gt=new Ve().setFromMatrix4(ae),ie=new ce(h[0],h[1],h[2]).applyMatrix4(G),Re=new ce(g[0],g[1],g[2]).applyMatrix4(G),Oe=new ce(T[0],T[1],T[2]).applyMatrix3(wt),le=Math.min(2048,Math.round(f.width))/Math.min(2048,Math.round(f.height)),Ne=Lt(I.root).getBoundingSphere(new At),z=Tt(ie.distanceTo(Ne.center),Ne.radius);let R;if(f.orthographic){const q=f.fov/2;R=new Ct(-q*le,q*le,q,-q,z.near,z.far)}else R=new It(f.fov,le,z.near,z.far);R.up.copy(Oe),R.position.copy(ie),R.lookAt(Re),R.updateMatrixWorld(!0);const Pe={position:ie.clone().applyMatrix4(ae).toArray(),target:Re.clone().applyMatrix4(ae).toArray(),up:Oe.clone().applyMatrix3(gt).toArray()};d.recordPhotograph({sent:{position:h,target:g,up:T},photographed:Pe,render:{width:f.width,height:f.height,fov:f.fov,orthographic:f.orthographic}});const mt=await gn(w,R,I,f,v);return p({...mt,camera:Pe})}finally{n=!1,e.signal.removeEventListener("abort",I.dispose),I.dispose()}},log:(o,a)=>console[o](`[blender] ${a}`)});const s=b;return E().session.reportWorkerCallMeter("Blender",()=>s.metrics()),b}const Sn="models/model.blend",B=(t,e)=>{const n=t[e];if(typeof n!="string")throw new Error(`${String(t.type)} requires a string "${e}"`);return n};async function kn(t){const e=E().projectLocalState.projectRootPath();if(e===null)return{};let n;try{n=await t.execute(`import bpy
|
|
5
|
-
print(bpy.data.filepath)
|
|
6
|
-
`,!1)}catch{return{}}if(/^Error executing code:/m.test(n))return{};const r=n.replace(/^Code executed successfully:/,"").split(`
|
|
7
|
-
`).map(o=>o.trim()).filter(o=>o.startsWith("/")).pop()??"";if(r==="")return{};const s=e.endsWith("/")?e:`${e}/`;return r.startsWith(s)?{document:r.slice(s.length)}:{}}async function er(t){const e=E();if(t.type==="blender-status")return{ok:!0,data:{started:b?.project!=null,document:e.documents.context(j())!==void 0,lastOutput:b?.lastOutput??[]}};if(!e.session.open())return{ok:!1,error:`${t.type} needs an open project session; this editor page has none.`};try{const n=t.type==="blender-start"?B(t,"project"):null;let r=typeof t.document=="string"?t.document:void 0;if((t.type==="blender-stop"||t.type==="blender-start"&&t.fresh===!0)&&(await b?.stop(),Ce(),t.type==="blender-stop"))return{ok:!0,data:{stopped:!0}};if(t.type==="blender-start"&&!e.documents.context(j())){const o=await e.project.documentTable(),a=o.entries.filter(l=>l.kind==="model"),i=r!==void 0?a.find(l=>l.source?.path===r):a.find(l=>l.id===(x?.entryId??o.default))??(a.length===1?a[0]:void 0);if(!i)return{ok:!1,error:r!==void 0?`No declared Model document names ${r}.`:`Choose a Model document before starting Blender. Available: ${a.map(l=>l.id).join(", ")||"(none)"}.`};const c=i.id;if(r=i.source?.path,!await e.workspace.open({kind:"document",id:c}))return{ok:!1,error:`blender-start could not open the Blender Model document ${c}: nothing in this editor opens that document (the Model document ships with @volter/editor-blender).`}}const s=M();switch(t.type){case"blender-start":{const o=r!==void 0?r:x?.blend??Sn;return{ok:!0,data:{...await s.start(n,o)}}}case"blender-execute":return{ok:!0,data:{result:(await bn(B(t,"code"))).text}};case"blender-scene-info":return{ok:!0,data:{result:await s.sceneInfo()}};case"blender-object-info":return{ok:!0,data:{result:await s.objectInfo(B(t,"name"))}};case"blender-rna":{const o=typeof t.names=="number"?t.names:void 0;return{ok:!0,data:{result:await s.rna(B(t,"path"),o)}}}case"blender-rna-context":{const o=typeof t.object=="string"?t.object:void 0,a=typeof t.collection=="string"?t.collection:void 0;return{ok:!0,data:{result:await s.rnaContext(o,a)}}}case"blender-rna-set":{const o=typeof t.index=="number"?t.index:void 0;return{ok:!0,data:{result:await yn(B(t,"path"),B(t,"property"),t.value,o)}}}case"blender-outliner":{const o=Array.isArray(t.selected)?t.selected.filter(a=>typeof a=="string"):void 0;return{ok:!0,data:{result:await s.outliner(o)}}}case"blender-node-tree":return{ok:!0,data:{result:await s.nodeTree({...typeof t.path=="string"?{path:t.path}:{},...typeof t.material=="string"?{material:t.material}:{}})}};case"blender-uv-layout":return{ok:!0,data:{result:await s.uvLayout({...typeof t.object=="string"?{object:t.object}:{},...typeof t.uvLayer=="string"?{uvLayer:t.uvLayer}:{}})}};case"blender-rig":return{ok:!0,data:{result:await s.rig({...typeof t.object=="string"?{object:t.object}:{}})}};case"blender-action-clip":return{ok:!0,data:{result:await s.actionClip({...typeof t.object=="string"?{object:t.object}:{},...typeof t.bake=="boolean"?{bake:t.bake}:{}})}};case"blender-node-view":{const o=typeof t.action=="string"?t.action:"state";return{ok:!0,data:{result:vn.verbs.some(i=>i.id===o)?yt("blender-node-view",o,t):ht(t)}}}case"blender-outliner-set":return{ok:!0,data:{result:await dt(B(t,"path"),B(t,"column"),t.value!==!1)}};case"blender-screenshot-view":{const o=typeof t.maxSize=="number"?t.maxSize:1e3,a={kind:"document",id:x?.entryId??"blender:runtime"};return{ok:!0,data:{...await s.screenshotView(o),document:a}}}case"blender-read-file":{const o=await s.readFile(B(t,"path")),a=B(t,"transferId"),i=await fetch(`/__editor/blender-file?id=${encodeURIComponent(a)}`,{method:"POST",headers:{"content-type":"application/octet-stream"},body:new Blob([o])});return i.ok?{ok:!0,data:{bytes:o.length}}:{ok:!1,error:`Transfer ${a} was refused: ${i.status}`}}case"blender-write-file":{const o=atob(B(t,"base64")),a=Uint8Array.from(o,i=>i.charCodeAt(0));return await s.writeFile(B(t,"path"),a),{ok:!0,data:{written:a.length}}}case"blender-list-files":{const o=await s.listFiles(B(t,"path")),a=s.presented;return{ok:!0,data:{entries:o,...a?{session:a.session,revision:a.revision}:{},...await kn(s)}}}}return{ok:!1,error:`Unknown Blender command ${t.type}`}}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}}export{Xn as A,On as B,Rn as C,bn as D,Te as E,Dn as F,Vn as G,Hn as H,vn as N,Pn as a,Wn as b,V as c,me as d,Yn as e,Un as f,Qn as g,er as h,Jn as i,Zn as j,_n as k,ct as l,A as m,Nn as n,P as o,qn as p,zn as q,N as r,Gn as s,yn as t,$n as u,Ln as v,dn as w,sn as x,Fn as y,Kn as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as o}from"./index-nmcBqr7Y.js";function s(e,t,n){if(!e)return;if(n(e)===!0)return e;let r=t?e.return:e.child;for(;r;){const u=s(r,t,n);if(u)return u;r=t?null:r.sibling}}function i(e){try{return Object.defineProperties(e,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return e}}const l=i(o.createContext(null));class a extends o.Component{render(){return o.createElement(l.Provider,{value:this._reactInternals},this.props.children)}}function f(){const e=o.useContext(l);if(e===null)throw new Error("its-fine: useFiber must be called within a <FiberProvider />!");const t=o.useId();return o.useMemo(()=>{for(const n of[e,e?.alternate]){if(!n)continue;const r=s(n,!1,u=>{let c=u.memoizedState;for(;c;){if(c.memoizedState===t)return!0;c=c.next}});if(r)return r}},[e,t])}const m=Symbol.for("react.context"),d=e=>e!==null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===m;function p(){const e=f(),[t]=o.useState(()=>new Map);t.clear();let n=e;for(;n;){const r=n.type;d(r)&&r!==l&&!t.has(r)&&t.set(r,o.use(i(r))),n=n.return}return t}function b(){const e=p();return o.useMemo(()=>Array.from(e.keys()).reduce((t,n)=>r=>o.createElement(t,null,o.createElement(n.Provider,{...r,value:e.get(n)})),t=>o.createElement(a,{...t})),[e])}export{f as c,s as i,a as m,b as x};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ah as m}from"./index-BR2HjNxF.js";import{b as p,a as e,c as n,s}from"./game-network-CP6KmSOP.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-DrKVpM6-.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-CrAEEu1t.js";import"./contract-system-adapters-DeaxSRVh.js";import"./game-contract-seams-DhQC7xCo.js";import"./seeded-random-CeGLHu9l.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-C7Q7IPgx.js";import"./capability-coverage-Ddy6R19w.js";import"./edit-mode-authoring-kt0XnEMW.js";import"./json-history-resource-BZHGKITu.js";import"./binding-resolver-mPfdzOBN.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-ClHhmlzn.js";import"./canvas-entry-runtime-DmsNFyOt.js";import"./three-ingest-runtime-D26g_KuC.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-rGPsqtCJ.js";import"./ingest-source-persistence-CHF8xlGY.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-BSZznGBP.js";import"./mounted-authoring-uQ2VcHyg.js";import"./entity-object-CgFEglVK.js";import"./user-data-UBmue2QG.js";import"./workspace-arrangement-DG7NGG24.js";import"./three-contract-Dkt6PmWY.js";import"./three-CTr1zHRF.js";import"./editor-layers-BmorFEFR.js";import"./component-instance-root-BJUVF1TY.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-CT32pMhI.js";import"./source-persistence-backend-C6lvBO--.js";import"./three-projection-core-CzBhCGr9.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-BM-M3X5T.js";import"./deferred-ingest-play-Bym43Wm2.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-WSIX3gQb.js";import"./board-guides-DuaCoboI.js";import"./relative-import-specifier-jIJKLACX.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BTQ0bXD6.js";import"./inference-diagnostics-D89tIA2a.js";import"./writer-tw6EcuVO.js";import"./three-state-DyhSwJ9s.js";import"./editor-shell-store-Drz4ZM7p.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-CfQU7NZa.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-CP6KmSOP.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./index-BR2HjNxF.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-DrKVpM6-.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-CrAEEu1t.js";import"./contract-system-adapters-DeaxSRVh.js";import"./game-contract-seams-DhQC7xCo.js";import"./seeded-random-CeGLHu9l.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-C7Q7IPgx.js";import"./capability-coverage-Ddy6R19w.js";import"./edit-mode-authoring-kt0XnEMW.js";import"./json-history-resource-BZHGKITu.js";import"./binding-resolver-mPfdzOBN.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-ClHhmlzn.js";import"./canvas-entry-runtime-DmsNFyOt.js";import"./three-ingest-runtime-D26g_KuC.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-rGPsqtCJ.js";import"./ingest-source-persistence-CHF8xlGY.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-BSZznGBP.js";import"./mounted-authoring-uQ2VcHyg.js";import"./entity-object-CgFEglVK.js";import"./user-data-UBmue2QG.js";import"./workspace-arrangement-DG7NGG24.js";import"./three-contract-Dkt6PmWY.js";import"./three-CTr1zHRF.js";import"./editor-layers-BmorFEFR.js";import"./component-instance-root-BJUVF1TY.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-CT32pMhI.js";import"./source-persistence-backend-C6lvBO--.js";import"./three-projection-core-CzBhCGr9.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-BM-M3X5T.js";import"./deferred-ingest-play-Bym43Wm2.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-WSIX3gQb.js";import"./board-guides-DuaCoboI.js";import"./relative-import-specifier-jIJKLACX.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BTQ0bXD6.js";import"./inference-diagnostics-D89tIA2a.js";import"./writer-tw6EcuVO.js";import"./three-state-DyhSwJ9s.js";import"./editor-shell-store-Drz4ZM7p.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-CfQU7NZa.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-DdPndtRL.js","assets/index-BR2HjNxF.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-kt0XnEMW.js","assets/game-network-CP6KmSOP.js","assets/index-OZVqp6xS.js","assets/index-Da9JhEvW.js","assets/native-debug-module-DrKVpM6-.js","assets/native-entry-surface-BE8LJNdu.js","assets/debug-registry-CrAEEu1t.js","assets/contract-system-adapters-DeaxSRVh.js","assets/game-contract-seams-DhQC7xCo.js","assets/seeded-random-CeGLHu9l.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-C7Q7IPgx.js","assets/capability-coverage-Ddy6R19w.js","assets/json-history-resource-BZHGKITu.js","assets/binding-resolver-mPfdzOBN.js","assets/adapter-surface-Y37Nzcyw.js","assets/structural-signature-Dc7skRiy.js","assets/webgl-frame-capture-DdJkM2mi.js","assets/realm-services-ClHhmlzn.js","assets/canvas-entry-runtime-DmsNFyOt.js","assets/three-ingest-runtime-D26g_KuC.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-rGPsqtCJ.js","assets/ingest-source-persistence-CHF8xlGY.js","assets/pixi-story-model-DNkfnWUV.js","assets/surface-content-Dg9Kkazf.js","assets/viewport-root-presentation-BSZznGBP.js","assets/mounted-authoring-uQ2VcHyg.js","assets/entity-object-CgFEglVK.js","assets/user-data-UBmue2QG.js","assets/workspace-arrangement-DG7NGG24.js","assets/three-contract-Dkt6PmWY.js","assets/three-CTr1zHRF.js","assets/editor-layers-BmorFEFR.js","assets/component-instance-root-BJUVF1TY.js","assets/viewport-editor-controls-BYaAZ_Ku.js","assets/three-authoring-adapter-CT32pMhI.js","assets/source-persistence-backend-C6lvBO--.js","assets/three-projection-core-CzBhCGr9.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-BM-M3X5T.js","assets/deferred-ingest-play-Bym43Wm2.js","assets/rrweb-Cd2ifIRP.js","assets/react-world-authoring-adapter-WSIX3gQb.js","assets/board-guides-DuaCoboI.js","assets/relative-import-specifier-jIJKLACX.js","assets/story-arg-descriptors-Ek86ExX7.js","assets/inspect-BTQ0bXD6.js","assets/inference-diagnostics-D89tIA2a.js","assets/writer-tw6EcuVO.js","assets/three-state-DyhSwJ9s.js","assets/editor-shell-store-Drz4ZM7p.js","assets/output-pass-HurwNl0G.js","assets/viewport-door-CfQU7NZa.js","assets/game-surface-defaults-D8S4cRxi.js","assets/scene-framing-DmFcSExk.js","assets/assets-BcrMQHRv.js","assets/loader-BTUKnX5Q.js","assets/KTX2Loader-CaqVE6nY.js","assets/GLTFLoader-KeoruJgS.js","assets/BufferGeometryUtils-B22h7jo4.js","assets/create-runtime-MnU3_1YC.js","assets/binding-Bmxqznjk.js","assets/root-stacking-BEd9ZvxC.js","assets/setup-renderer-DH4wbhtK.js","assets/index-DHhMOs_s.js","assets/defaults-DKiBJCPN.js","assets/render-settings-BFaRAdCN.js","assets/render-features-C7wJW5To.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,aF as n}from"./index-BR2HjNxF.js";import{r as a}from"./design-time-mount-registry-DUpXCg1U.js";import{q as c}from"./edit-mode-authoring-kt0XnEMW.js";import{a as u}from"./json-history-resource-BZHGKITu.js";import{o as h}from"./three-authoring-adapter-CT32pMhI.js";import{t as i}from"./editor-shell-store-Drz4ZM7p.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-BJUVF1TY.js";import"./user-data-UBmue2QG.js";import"./workspace-arrangement-DG7NGG24.js";import"./source-persistence-backend-C6lvBO--.js";import"./ingest-source-persistence-CHF8xlGY.js";import"./three-projection-core-CzBhCGr9.js";import"./editor-layers-BmorFEFR.js";import"./three-CTr1zHRF.js";import"./entity-object-CgFEglVK.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-BM-M3X5T.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-DdPndtRL.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-BkH5M9mR.js";import"./index-BR2HjNxF.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-Bas4zv2o.js";import"./root-stacking-BEd9ZvxC.js";import"./user-data-UBmue2QG.js";import"./workspace-arrangement-DG7NGG24.js";import"./model-thumbnail-DM9Eok1P.js";import"./studio-environment-C1W4jRBx.js";import"./KTX2Loader-CaqVE6nY.js";import"./GLTFLoader-KeoruJgS.js";import"./BufferGeometryUtils-B22h7jo4.js";import"./object3d-document-session-registry-DBQQbyJf.js";import"./three-state-DyhSwJ9s.js";import"./editor-shell-store-Drz4ZM7p.js";import"./output-pass-HurwNl0G.js";import"./Pass-D1MRT672.js";import"./editor-layers-BmorFEFR.js";import"./entity-object-CgFEglVK.js";import"./three-contract-Dkt6PmWY.js";import"./hierarchy-marks-Be_ZEspV.js";import"./component-instance-root-BJUVF1TY.js";import"./viewport-door-CfQU7NZa.js";import"./content-bounds-CNjwljYK.js";import"./asset-preview-CojPwXU7.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-BR2HjNxF.js";import{r as m}from"./index-nmcBqr7Y.js";import{P as p}from"./PlayBar-C9H-JvF6.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-D9E81S0v.js";import"./run-selection-BEZMm19D.js";import"./game-network-CP6KmSOP.js";import"./index-OZVqp6xS.js";import"./index-Da9JhEvW.js";import"./native-debug-module-DrKVpM6-.js";import"./native-entry-surface-BE8LJNdu.js";import"./debug-registry-CrAEEu1t.js";import"./contract-system-adapters-DeaxSRVh.js";import"./game-contract-seams-DhQC7xCo.js";import"./seeded-random-CeGLHu9l.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-C7Q7IPgx.js";import"./capability-coverage-Ddy6R19w.js";import"./edit-mode-authoring-kt0XnEMW.js";import"./json-history-resource-BZHGKITu.js";import"./binding-resolver-mPfdzOBN.js";import"./adapter-surface-Y37Nzcyw.js";import"./structural-signature-Dc7skRiy.js";import"./webgl-frame-capture-DdJkM2mi.js";import"./realm-services-ClHhmlzn.js";import"./canvas-entry-runtime-DmsNFyOt.js";import"./three-ingest-runtime-D26g_KuC.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-rGPsqtCJ.js";import"./ingest-source-persistence-CHF8xlGY.js";import"./pixi-story-model-DNkfnWUV.js";import"./surface-content-Dg9Kkazf.js";import"./viewport-root-presentation-BSZznGBP.js";import"./mounted-authoring-uQ2VcHyg.js";import"./entity-object-CgFEglVK.js";import"./user-data-UBmue2QG.js";import"./workspace-arrangement-DG7NGG24.js";import"./three-contract-Dkt6PmWY.js";import"./three-CTr1zHRF.js";import"./editor-layers-BmorFEFR.js";import"./component-instance-root-BJUVF1TY.js";import"./viewport-editor-controls-BYaAZ_Ku.js";import"./three-authoring-adapter-CT32pMhI.js";import"./source-persistence-backend-C6lvBO--.js";import"./three-projection-core-CzBhCGr9.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-BM-M3X5T.js";import"./deferred-ingest-play-Bym43Wm2.js";import"./rrweb-Cd2ifIRP.js";import"./react-world-authoring-adapter-WSIX3gQb.js";import"./board-guides-DuaCoboI.js";import"./relative-import-specifier-jIJKLACX.js";import"./story-arg-descriptors-Ek86ExX7.js";import"./inspect-BTQ0bXD6.js";import"./inference-diagnostics-D89tIA2a.js";import"./writer-tw6EcuVO.js";import"./three-state-DyhSwJ9s.js";import"./editor-shell-store-Drz4ZM7p.js";import"./output-pass-HurwNl0G.js";import"./viewport-door-CfQU7NZa.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
|
-
let re=0;class oe{constructor(t){this.work=t,this.job=++re,this.started=!1,this.finished=!1,this.sequence=0,this.expected=null,this.resume=null,this.waiter=null}step(t){if(this.finished||this.waiter||(this.started?t!==this.expected||!this.resume:t!==void 0))return Promise.reject(new Error("Invalid or replayed load continuation"));const n=new Promise((r,s)=>{this.waiter={resolve:r,reject:s}});if(!this.started)this.started=!0,Promise.resolve().then(()=>this.work(r=>new Promise(s=>{this.resume=s,this.expected=`load:${this.job}:${++this.sequence}`;const o=this.waiter;this.waiter=null,o.resolve({load:"continue",token:this.expected,phase:r})}))).then(r=>{this.finished=!0;const s=this.waiter;this.waiter=null,s.resolve({load:"done",value:r})},r=>{this.finished=!0;const s=this.waiter;this.waiter=null,s.reject(r)});else{const r=this.resume;this.resume=null,this.expected=null,r()}return n}}function se(e,t){const n=e.getReader();let r,s=0;return new ReadableStream({async pull(o){try{if(!r||s===r.length){const a=await n.read();if(a.done){n.releaseLock(),o.close();return}r=a.value,s=0}await t();const i=Math.min(r.length,s+1024*1024);o.enqueue(r.subarray(s,i)),s=i}catch(i){await n.cancel(i).catch(()=>{}),o.error(i)}},async cancel(o){await n.cancel(o),n.releaseLock()}},{highWaterMark:0})}const W=1024*1024,ie={Uint8Array,Int8Array,Uint16Array,Int16Array,Uint32Array,Int32Array,Float32Array,Float64Array},ae=async e=>Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256",e)),t=>t.toString(16).padStart(2,"0")).join("");async function ce(e,t){const n=[],r=JSON.stringify(e,(s,o)=>{if(!ArrayBuffer.isView(o))return o;const i=o.constructor.name;if(!Object.hasOwn(ie,i))throw new Error(`Unsupported frame column ${i}`);return n.push(new Uint8Array(o.buffer,o.byteOffset,o.byteLength)),{$frameColumn:n.length,type:i}});n.unshift(new TextEncoder().encode(r)),await t({kind:"begin",lengths:n.map(s=>s.byteLength)});for(const[s,o]of n.entries())for(let i=0;i<o.byteLength;i+=W){const a=o.slice(i,i+W),c=await ae(a);await t({kind:"bytes",slot:s,offset:i,bytes:a,sha256:c})}return t({kind:"end"})}const w="/work/.volter-session",Ie=`${w}/session.py`,_e=[`${w}/in`,`${w}/reply`],G="/__editor/blender-wasm";function Fe(e){return e.startsWith("@@VOLTER-ERROR")?"error":e.startsWith("@@VOLTER-WARN")?"warn":"log"}function le(e){return new URL(`${G}/${e}`,import.meta.url).href}async function de(){const e=await fetch(le("status"));return e.ok?await e.json():{available:!1,skew:null,dir:null,sizes:{},encoded:{},missing:[`${G}/status answered ${e.status}`]}}async function fe(e){const t=await de();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:r}=await import("./blender-wali-engine-B0Yilx8j.js");return r(e,t)}const{startEmscriptenBlenderEngine:n}=await import("./blender-emscripten-engine-CXPkPSST.js");return n(e,t)}function ue(e){return e<200?1:e<5e3?5:25}const he=e=>new Promise(t=>setTimeout(t,e)),H=new TextDecoder;function Ue(e,t,n){let r=0,s=0;const o=new Set;async function i(d){for(const l of o)d.has(`${l}.done`)||(await e.unlink(`${w}/reply/${l}.json`),await e.unlink(`${w}/reply/${l}.done`),o.delete(l))}async function a(){let d;try{d=await e.readdir(`${w}/ask`)}catch{return!1}const l=new Set(d.filter(u=>u.endsWith(".done")));await i(l);let h=!1;for(const u of l){const y=u.slice(0,-5);if(Number(y)<=s)continue;s=Number(y);const f=JSON.parse(H.decode(await e.readFile(`${w}/ask/${y}.json`)));let p;try{p=await t.ask(f)}catch(E){p={error:E instanceof Error?E.message:String(E)}}await Promise.all([e.writeFile(`${w}/reply/${y}.json`,JSON.stringify(p??null)),e.writeFile(`${w}/reply/${y}.done`,"1")]),o.add(y),h=!0}return h}async function c(d){const l=String(++r);await Promise.all([e.writeFile(`${w}/in/${l}.json`,JSON.stringify(d)),e.writeFile(`${w}/in/${l}.done`,"1")]);let h=performance.now();for(;;){if(await a()&&(h=performance.now()),await e.stat(`${w}/out/${l}.done`)){const f=JSON.parse(H.decode(await e.readFile(`${w}/out/${l}.json`)));if(await e.unlink(`${w}/in/${l}.json`),await e.unlink(`${w}/in/${l}.done`),f.error)throw new Error(f.error);return f.result}const u=n?.();if(u)throw new Error(`Blender is gone, so this call will never be answered: ${u}. 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).`);const y=ue(performance.now()-h);await(e.changed?e.changed(y):he(y))}}return{request:c}}const we=256*1024,ye=4*1024*1024,pe=(1<<20)-1,me=(()=>{const e=new Uint32Array(256);let t=2654435769;for(let n=0;n<256;n+=1)t^=t<<13,t^=t>>>17,t^=t<<5,e[n]=t>>>0;return e})();function be(e){const t=[];let n=0;for(;n<e.length;){const r=Math.min(e.length,n+ye);let s=r,o=0;for(let i=n+Math.min(we,r-n);i<r;i+=1)if(o=(o<<1)+me[e[i]]>>>0,(o&pe)===0){s=i+1;break}t.push(s),n=s}return t}async function ge(e){const t=[];let n=0;for(const r of be(e)){const s=new Uint8Array(await crypto.subtle.digest("SHA-256",e.slice(n,r)));t.push({hash:Array.from(s,o=>o.toString(16).padStart(2,"0")).join(""),start:n,end:r}),n=r}return t}const P=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",$e={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 Ee(e,t,n){const r=$e[n.dtype];if(!r)throw new Error(`Blender frame column ${t}: unknown dtype ${n.dtype}`);const{offset:s,length:o}=n;if(s<0||o<0||s+o>e.byteLength)throw new Error(`Blender frame column ${t}: bytes ${s}..${s+o} lie outside the ${e.byteLength}-byte export arena`);const i=e.subarray(s,s+o).slice(),a=r(i),c=n.count*n.stride;if(a.length!==c)throw new Error(`Blender frame column ${t}: ${a.length} values, ${c} declared (${n.count} x ${n.stride})`);return a}function N(e,t){const n=(r,s)=>{if(P(r))return Ee(e,s,r);if(Array.isArray(r))return r.map(o=>n(o,s));if(typeof r=="object"&&r!==null){const o={};for(const[i,a]of Object.entries(r))o[i]=n(a,i);return o}return r};return n(t,"")}async function I(e,t){const n=async(r,s)=>{if(P(r)){const{offset:o,length:i,dtype:a}=r;if(o<0||i<0||o+i>e.byteLength)throw new Error(`Blender frame column ${s}: bytes ${o}..${o+i} lie outside the ${e.byteLength}-byte export arena`);const c=e.subarray(o,o+i).slice(),d=await crypto.subtle.digest("SHA-256",c),l=[...new Uint8Array(d)].map(h=>h.toString(16).padStart(2,"0")).join("");return{dtype:a,length:i,sha256:l}}if(Array.isArray(r))return Promise.all(r.map(o=>n(o,s)));if(typeof r=="object"&&r!==null){const o={};for(const[i,a]of Object.entries(r))o[i]=await n(a,i);return o}return r};return n(t,"")}const j=e=>self.postMessage(e),R=(e,t)=>j({op:"log",level:e,text:t});let S=null,_=null,ke=0;const B=new Map;async function F(e){return await ce(e,async t=>{const n=e;await b?.(`frame-transfer/${n.op??"unknown"}/${n.mesh!==void 0?"mesh":n.image!==void 0?"image":"manifest"}/${t.kind}`);const r=++ke;return new Promise((s,o)=>{B.set(r,{resolve:s,reject:o});try{self.postMessage({op:"frame-stream",id:r,chunk:t},t.kind==="bytes"?[t.bytes.buffer]:[])}catch(i){B.delete(r),o(i)}})})}function Se(e,t,n){return F({op:"present",frame:e,description:t,...n?{capture:n}:{}})}let m=null,T=null,b=null,x=null,C=!1,V=Promise.resolve();function ve(e){const t=V.then(e);return V=t.catch(()=>{}),t}let g=null;async function je(e,t){const n=new Map,r=async(s,o)=>{if(P(s)){n.set(s.offset,{typed:N(e,{[o]:s})[o],description:await I(e,s)});return}if(Array.isArray(s))for(const i of s)await r(i,o);else if(typeof s=="object"&&s!==null)for(const[i,a]of Object.entries(s))await r(a,i)};return await r(t,""),n}function Ae(e,t){const n=r=>{const s=(o,i)=>{if(P(o)){const c=e.columns.get(o.offset);if(!c)throw new Error(`Blender frame column ${i.join(".")}: not in the held frame`);return c[r]}if(Array.isArray(o))return o.map(c=>s(c,i));if(typeof o!="object"||o===null)return o;if(o.deferred===!0){const[c,d]=i.slice(-2),l=(c==="meshes"?e.meshes:e.images).get(d);if(!l)throw new Error(`Blender frame ${c} ${d}: deferred and never pulled`);return l[r]}const a={};for(const[c,d]of Object.entries(o)){const l=s(d,[...i,c]);l!==void 0&&(a[c]=l)}return a};return s(t,[])};return{typed:n("typed"),description:n("description")}}function X(e){C=e,j({op:"document-dirty",dirty:e})}async function Y(){if(!m||x===null)return;const e=x,t={};let n=performance.now();const r=a=>{const c=performance.now();t[a]=Math.round(c-n),n=c};let s;try{s=await m.request({op:"save-document"}),r("save")}catch(a){throw new Error(`The Blender document ${e} could not be saved: ${O(a)}`)}if(!s?.saved||typeof s.path!="string")throw new Error(`Blender did not save the document ${e}`);let o;try{o=await m.files.readFile(s.path),r("read")}catch(a){throw new Error(`The Blender document ${e} could not be read back out of the engine: ${O(a)}`)}$.delete(s.path);let i=0;try{const a=await ge(o);r("chunk");const c=`path=${encodeURIComponent(e)}`,d=JSON.stringify({chunks:a.map(({hash:l,start:h,end:u})=>[l,u-h])});for(let l=0;;l+=1){const h=await fetch(`/__editor/blender-document?${c}`,{method:"POST",headers:{"content-type":"application/json"},body:d}),u=await h.json().catch(()=>null);if(r(`manifest${l}`),!h.ok)throw new Error(`HTTP ${h.status} ${u?.error??""}`);if(u?.ok){for(const[f,p]of Object.entries(u.ms??{}))t[`server.${f}`]=p;break}if(l===2||!Array.isArray(u?.missing))throw new Error(`the server still lacks ${u?.missing?.length??"?"} chunks`);const y=new Set(u.missing);for(const f of a){if(!y.delete(f.hash))continue;const p=await fetch(`/__editor/blender-document-chunk?${c}&hash=${f.hash}`,{method:"POST",headers:{"content-type":"application/octet-stream"},body:new Blob([o.subarray(f.start,f.end)])});if(!p.ok)throw new Error(`HTTP ${p.status} ${await p.text().catch(()=>"")}`);i+=f.end-f.start}r(`send${l}`)}}catch(a){throw new Error(`The Blender document ${e} was not written to the project: ${O(a)}`)}X(!1),R("log",`@@VOLTER-DOCUMENT ${JSON.stringify({path:e,bytes:o.length,sent:i,ms:t})}`)}async function Te(e,t){const n={engine:null},r=await fe({project:e,log:R,ask:async({frame:o,hold:i,mesh:a,image:c,piece:d,present:l,capture:h,saveDue:u,checkpoint:y})=>{if(typeof y=="string")return await b?.(y),{};if(!n.engine)throw new Error("The Blender session presented before it started");u&&x!==null&&X(!0);const f=await n.engine.readArena();if(i!==void 0){const k=i;return g={session:k.session,revision:k.revision,columns:await je(f,i),meshes:new Map,images:new Map},await F({op:"stage",session:k.session,revision:k.revision}),{}}if(a!==void 0||c!==void 0){if(!g)throw new Error(`The Blender session sent ${a??c} before its frame`);const k=d?.encodedPath;let v;if(c!==void 0&&typeof k=="string"){const{encodedPath:J,...D}=d,L=(await n.engine.files.readFile(k)).slice(),ee=new Uint8Array(await crypto.subtle.digest("SHA-256",L)),te=Array.from(ee,ne=>ne.toString(16).padStart(2,"0")).join("");v={typed:{...D,encoded:L},description:{...D,encoded:{dtype:"u8",length:L.length,sha256:te}}}}else v={typed:N(f,d),description:await I(f,d)};if(await F({op:"stage",session:g.session,revision:g.revision,...a!==void 0?{mesh:a}:{image:c},piece:v.typed}),a!==void 0){const J=v.typed;g.meshes.set(a,{typed:{revision:J.revision,unchanged:!0},description:v.description})}else g.images.set(c,{typed:void 0,description:v.description});return{}}let p,E;if(l){if(!g)throw new Error("The Blender session presented a frame it never sent");({typed:p,description:E}=Ae(g,o)),g=null}else p=N(f,o),E=await I(f,o);const A=await Se(p,E,h);return{...typeof A.capture=="object"&&A.capture!==null?A.capture:{},..."held"in A?{held:A.held}:{}}}});n.engine=r,await b?.("engine-ready"),m=r,t&&await Q(r.files,e),await b?.("project-imported");const s=await r.request({op:"start",project:e,...t?{document:t}:{}});return t&&(x=t),S={start:async()=>s,execute:async o=>{const i=await r.request({op:"execute",code:o});return i.error?`Error executing code: ${i.error}`:`Code executed successfully: ${i.result}`},sceneInfo:async()=>JSON.stringify(await r.request({op:"scene-info"}),null,2),objectInfo:async o=>JSON.stringify(await r.request({op:"object-info",name:o}),null,2),screenshotView:async o=>(await r.request({op:"present",capture:{size:o}}),JSON.stringify({view:{size:o}}))},{...s,engine:"blender-wasm",skew:r.skew,bootMs:Math.round(r.bootMs),releasedPayloadMB:r.releasedPayloadBytes===null?null:Math.round(r.releasedPayloadBytes/1048576)}}async function Oe(){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 Be(e,t){if(S)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&&!xe(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 n=await Oe();if(!n.available)throw new Error(`Headless Blender is not served by this editor, so there is no modeling engine: ${n.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 _=e,Te(e,t)}function xe(e){return!e.endsWith(".blend")||e.startsWith("/")||e.includes("\\")?!1:e.split("/").every(n=>n!==""&&n!=="."&&n!=="..")}const z=new Set;function U(e){z.has(e)||(z.add(e),R("error",e))}async function Pe(e){const t=i=>(U(`The project's files are not readable from Python: ${i}`),null);let n;try{n=await fetch("/__editor/blender-project-index")}catch(i){return t(String(i))}if(!n.ok)return t(`/__editor/blender-project-index answered ${n.status}`);let r;try{if(r=await n.json(),typeof r?.root!="string"||!Array.isArray(r.files))return t("invalid project index")}catch(i){return t(String(i))}const{root:s,files:o}=r;return s!==e&&U(`The editor serving this tab has ${s} open, not ${e}; its files are mounted at ${e}, which is where Python is looking.`),o}const $=new Map;async function Re(e,t){const n=await e.stat(t);return n?`${n.size}:${n.mtimeMs}`:""}async function Q(e,t){const n=await Pe(t);if(!n)return;const r=new Set(n.map(s=>`${t}/${s.path}`));for(const s of[...$.keys()])if(!r.has(s)){try{await e.unlink(s)}catch{}$.delete(s)}for(const s of n){const o=`${t}/${s.path}`,i=`${s.size}:${s.mtime}`;if($.get(o)?.host===i||!$.has(o)&&await e.stat(o)!==null)continue;const a=await fetch(`/__editor/blender-project-file?path=${encodeURIComponent(s.path)}`);if(!a.ok){U(`${s.path}: HTTP ${a.status}`);continue}const c=o.slice(0,o.lastIndexOf("/"));c&&await e.mkdirTree(c),e.writeFileStream&&a.body?await e.writeFileStream(o,b?se(a.body,()=>b("file-import")):a.body,s.size):await e.writeFile(o,new Uint8Array(await a.arrayBuffer())),$.set(o,{host:i,engine:await Re(e,o)})}}async function Le(e,t){const n=[],r=async s=>{let o;try{o=await e.readdir(s)}catch{return}for(const i of o){if(i==="."||i==="..")continue;const a=`${s.replace(/\/$/,"")}/${i}`,c=await e.stat(a);if(c){if((c.mode&61440)===16384){await r(a);continue}$.get(a)?.engine!==`${c.size}:${c.mtimeMs}`&&n.push({path:a,size:c.size,mtime:c.mtimeMs})}}};return await r(t),n}function M(e,t){if(b)throw new Error("The current Blender operation must finish first");return T=new oe(async n=>{b=n;const r=performance.now();try{return await t()}finally{b=null,R("log",`@@VOLTER-WORK op=${e} totalMs=${Math.round(performance.now()-r)}`)}}),T.step()}async function Z(e){switch(e.op){case"start":{if(T)throw new Error("The Blender load has already started");return M("start",()=>Be(e.project,e.document))}case"load-next":if(!T)throw new Error("No Blender load to continue");return T.step(e.token);case"present-result":{const r=B.get(e.id);B.delete(e.id),r&&(e.error?r.reject(new Error(e.error)):r.resolve({...e.capture===void 0?{}:{capture:e.capture},..."held"in e?{held:e.held}:{}}));return}}if(b)throw new Error("The Blender load must finish before another command");if(!S||!_||!m)throw new Error("The Blender session has not started");const t=m.files,n=m.request.bind(m);switch(e.op){case"flush-document":return C?(await Y(),{saved:!0}):{saved:!1};case"history-begin":case"history-end":return n({op:e.op});case"history-step":return n({op:"history-step",token:e.token,direction:e.direction});case"execute":await Q(t,_);{const r=await n({op:"execute",code:e.code,history:e.history??!0,label:e.label??"Blender Python"});return r.error?`Error executing code: ${r.error}`:`Code executed successfully: ${r.result}`}case"present":return M("present",()=>n({op:"present"}));case"scene-info":return S.sceneInfo();case"object-info":return S.objectInfo(e.name);case"rna":return n({op:"rna",path:e.path,...e.names===void 0?{}:{names:e.names}});case"rna-context":return n({op:"rna-context",...e.object===void 0?{}:{object:e.object},...e.collection===void 0?{}:{collection:e.collection}});case"view-shading":return n({op:"view-shading",shading:e.shading});case"rna-set":return n({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 n({op:"outliner",...e.selected===void 0?{}:{selected:[...e.selected]}});case"node-tree":return n({op:"node-tree",...e.path===void 0?{}:{path:e.path},...e.material===void 0?{}:{material:e.material}});case"uv-layout":return n({op:"uv-layout",...e.object===void 0?{}:{object:e.object},...e.uvLayer===void 0?{}:{uvLayer:e.uvLayer}});case"rig":return M("rig",()=>n({op:"rig",...e.object===void 0?{}:{object:e.object}}));case"action-clip":return n({op:"action-clip",...e.object===void 0?{}:{object:e.object},...e.bake===void 0?{}:{bake:e.bake}});case"outliner-set":return n({op:"outliner-set",path:e.path,column:e.column,value:e.value});case"screenshot-view":return JSON.parse(await S.screenshotView(e.maxSize));case"read-file":return t.readFile(e.path);case"write-file":{const r=e.path.slice(0,e.path.lastIndexOf("/"));r&&await t.mkdirTree(r),await t.writeFile(e.path,e.bytes),$.delete(e.path);return}case"list-files":return Le(t,e.path)}throw new Error(`Unknown Blender worker request ${e.op}`)}function O(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 q(){if(!m)return;const e=m.memoryBytes();e!==null&&j({op:"memory",bytes:e})}self.addEventListener("error",q);self.onmessage=e=>{const t=e.data;if(t.op==="present-result"){Z(t);return}ve(()=>Me(t))};async function Me(e){try{const t=await Z(e);!b&&C&&await Y(),await K(),j({id:e.id,result:t})}catch(t){let n=O(t);try{await K()}catch(r){n+=`
|
|
2
|
-
Unable to deliver Blender history: ${O(r)}`}j({id:e.id,error:n})}q()}async function K(){if(b||!m||!S)return;const e=await m.request({op:"history-events"});e.length&&j({op:"history",entries:e})}export{G as A,_e as P,w as S,le as a,Ie as b,Fe as c,Ue as o,he as s};
|