@volter/game-editor 0.5.68 → 0.5.70
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 +10941 -5080
- package/LICENSE +9 -10
- package/LICENSE-BLENDER +2 -2
- package/NOTICE +2 -2
- package/additions/canvas/package.json +8 -0
- package/additions/canvas/src/canvas-mount.ts +46 -0
- package/additions/canvas/src/scene2d.tsx +18 -0
- package/catalog/entries/bake.json +1 -1
- package/catalog/entries/blender.json +3 -3
- package/catalog/entries/music.json +5 -5
- package/catalog/project-source/LICENSE +6 -6
- package/catalog/project-source/src/contributions/bake.kind.ts +2 -2
- package/catalog/project-source/src/contributions/builder-document.tsx +1 -1
- package/catalog/project-source/src/contributions/builder-ui.tsx +3 -3
- package/catalog/project-source/src/contributions/module-source.ts +4 -4
- package/catalog/project-source/src/lib/reflections/volume-reflection-material.ts +59 -59
- package/catalog/project-source/src/lib/static-batch/Frozen.tsx +1 -1
- package/catalog/project-source/src/lib/static-batch/mutation-watch.ts +1 -1
- package/catalog/project-source/src/tools/bake-preview.tool.ts +9 -9
- package/dist/.vite/manifest.json +4026 -4026
- package/dist/assets/{AssetBudgetPanel-P2PeL_X5.js → AssetBudgetPanel-DpXsaQ6w.js} +4 -4
- package/dist/assets/AudioViewer-BdTHfNhD.js +1 -0
- package/dist/assets/{CanvasBoardDocument-BFJdTVGp.js → CanvasBoardDocument-DY-7zohc.js} +1 -1
- package/dist/assets/CanvasSceneViewport-57CEFqSM.js +1 -0
- package/dist/assets/ColorInput-Co6tCY9p.js +1 -0
- package/dist/assets/{EntityModelDocument-Du8wIbyK.js → EntityModelDocument-C-lhKrxv.js} +1 -1
- package/dist/assets/{EnvironmentAssetDocument-_SttfMY_.js → EnvironmentAssetDocument-BNe6ANTN.js} +1 -1
- package/dist/assets/{GameplaySessionTimeline-CWudWnfd.js → GameplaySessionTimeline-CryFYfYN.js} +1 -1
- package/dist/assets/ImageViewer-DiD2yIG4.js +1 -0
- package/dist/assets/{InspectorCanvasPreview-CEr_Kxna.js → InspectorCanvasPreview-BrFjhoiD.js} +1 -1
- package/dist/assets/InspectorObjectPreview-BBVO8bDT.js +1 -0
- package/dist/assets/JsonAssetDocument-xyXetSbl.js +2 -0
- package/dist/assets/{LiveModuleDocument-BWjOzO_6.js → LiveModuleDocument-BiAunjHS.js} +1 -1
- package/dist/assets/{LutAssetDocument-DIc6nsht.js → LutAssetDocument-5sW-5rb0.js} +1 -1
- package/dist/assets/{ModelAssetDocument-_CqTsX_A.js → ModelAssetDocument-Bdy7x47a.js} +1 -1
- package/dist/assets/{NonThreeAuthoringBootstrap-C-V23E1e.js → NonThreeAuthoringBootstrap-BP-1bVEr.js} +1 -1
- package/dist/assets/Object3DDocumentToolbar-CvnSLDPI.js +1 -0
- package/dist/assets/Object3DDocumentViewport-BE_OPc8T.js +2 -0
- package/dist/assets/{Object3DPreview-BPHEr3vI.js → Object3DPreview-D3w_dKrX.js} +1 -1
- package/dist/assets/OnlineAssetDetail-BnT8_p1W.js +1 -0
- package/dist/assets/PlayBar-C8Mn-EI0.js +1 -0
- package/dist/assets/{QuarksAssetDocument-4Dne3EHx.js → QuarksAssetDocument-DLMH5Csk.js} +1 -1
- package/dist/assets/ReactCanvasControls-rNz8syVB.js +1 -0
- package/dist/assets/RootSelectionOverlay-Cn2Rbr1N.js +1 -0
- package/dist/assets/{ShaderAssetDocument-W3ZjLCkt.js → ShaderAssetDocument-CsJCsNfA.js} +4 -4
- package/dist/assets/ShadowEditor-jB05hr1W.js +1 -0
- package/dist/assets/{SourceAssetViewer-BGUeDAEv.js → SourceAssetViewer-D0NgGrER.js} +1 -1
- package/dist/assets/StageHost-B3Yt4I7r.js +2 -0
- package/dist/assets/{StoryPreviewMount-Di8uMovM.js → StoryPreviewMount-CzzRn24c.js} +1 -1
- package/dist/assets/ThreeBoardDocument-BoHTN4Vl.js +2 -0
- package/dist/assets/{ThreeIsolationSceneContent-BAKurKW5.js → ThreeIsolationSceneContent-BM-0S6J5.js} +1 -1
- package/dist/assets/{ToolObject3DPreview-CffvGJ1h.js → ToolObject3DPreview-BeM_kx_u.js} +1 -1
- package/dist/assets/Toolbar-BZyog9MR.js +1 -0
- package/dist/assets/{TransientHint-CgmkrmKF.js → TransientHint-RJEkOJoy.js} +1 -1
- package/dist/assets/VideoViewer-CxajgKrf.js +1 -0
- package/dist/assets/ViewportShadingMenu-S2lADFJg.js +1 -0
- package/dist/assets/active-ingest-CjZtqL7Q.js +3 -0
- package/dist/assets/{animation-clock-fLmY_3--.js → animation-clock-CWVW-mqY.js} +1 -1
- package/dist/assets/animation-mixers.service-CpoYw8cs.js +1 -0
- package/dist/assets/animation-timeline.utility-CEerojaB.js +1 -0
- package/dist/assets/{asset-budget-asset.menu-BDRDWrvx.js → asset-budget-asset.menu-Bk6scVWQ.js} +1 -1
- package/dist/assets/{asset-budget.action-tQmNGQHC.js → asset-budget.action-DtBDSfDj.js} +1 -1
- package/dist/assets/{asset-budget.document-BthgX37Z.js → asset-budget.document-R2zyoJ8E.js} +1 -1
- package/dist/assets/{asset-budget.menu-DfyWVH6p.js → asset-budget.menu-D6jza5Bc.js} +1 -1
- package/dist/assets/asset-editor-persistence-DrgwOZIW.js +1 -0
- package/dist/assets/asset-loaders-CUeYIjeH.js +2 -0
- package/dist/assets/{asset-preview-Cv7tfD98.js → asset-preview-CQfnI2cX.js} +1 -1
- package/dist/assets/{audio-unlock.service-BvHvZjzx.js → audio-unlock.service-W3UBKsw9.js} +1 -1
- package/dist/assets/audio.utility-qrXBdGXg.js +1 -0
- package/dist/assets/autoplay.service-DQD3Swo9.js +1 -0
- package/dist/assets/{babylon-authoring-adapter-Cg5ALSpr.js → babylon-authoring-adapter-CS9LZNmz.js} +1 -1
- package/dist/assets/binding-resolver-B9VI52zt.js +2 -0
- package/dist/assets/blender-emscripten-engine-Cd6az4pU.js +2 -0
- package/dist/assets/{blender-node-editor.document-B92MO51u.js → blender-node-editor.document-BWLFvA2g.js} +1 -1
- package/dist/assets/{blender-properties-tab-CDVyDAbf.js → blender-properties-tab-BSmWG9d0.js} +1 -1
- package/dist/assets/{blender-runtime-host-CuniE0sy.js → blender-runtime-host-Cbkie7m4.js} +2 -2
- package/dist/assets/{blender-runtime-skin-B_tOz5j5.js → blender-runtime-skin-C_ATCb-z.js} +7 -7
- package/dist/assets/{blender-runtime.document-DxUwLiEW.js → blender-runtime.document-P9zdgwMt.js} +7 -7
- package/dist/assets/{blender-timeline.document-BdEEoQbK.js → blender-timeline.document-DRwySEJO.js} +1 -1
- package/dist/assets/{blender-uv-editor.document-EMSUlRh4.js → blender-uv-editor.document-CmLoL2Vo.js} +1 -1
- package/dist/assets/blender-version.status-CP4Jqkry.js +1 -0
- package/dist/assets/blender-wali-engine-CZcS3eAd.js +2 -0
- package/dist/assets/{blender.command-BkBML2SY.js → blender.command-BYGm0Q_s.js} +1 -1
- package/dist/assets/blender.status-BMETIbb2.js +1 -0
- package/dist/assets/board-guides-BG-MHK2G.js +1 -0
- package/dist/assets/body-marks-C1LxJtQb.js +1 -0
- package/dist/assets/{bridge.command-VnplZ81v.js → bridge.command-DpUNErKN.js} +3 -3
- package/dist/assets/{browserAll-BCmkqg8n.js → browserAll-DES3i79H.js} +1 -1
- package/dist/assets/{build-player.document-DV7YcJQt.js → build-player.document-B42HrdSU.js} +1 -1
- package/dist/assets/build-profiles.document-Di5CQoH9.js +2 -0
- package/dist/assets/build-progress.status-B4te7-3j.js +1 -0
- package/dist/assets/{build-session-BGe0eGrQ.js → build-session-Yw4JoE8T.js} +2 -2
- package/dist/assets/{build.action-Bdj4ZEL_.js → build.action-B-DBpUj6.js} +1 -1
- package/dist/assets/{build.command-DAWiYvPa.js → build.command-CfWoHNp0.js} +1 -1
- package/dist/assets/build.header-BaURztYD.js +1 -0
- package/dist/assets/{build.menu-BiRNC_xc.js → build.menu-BFBn-dPJ.js} +1 -1
- package/dist/assets/{build.service-Dw9K6VSF.js → build.service-D8gYWB3n.js} +1 -1
- package/dist/assets/{camera-C-qXzXFf.js → camera-C-uR_xQp.js} +1 -1
- package/dist/assets/{camera-runtime.inspector-BDrwWRlU.js → camera-runtime.inspector-BOGGEqVq.js} +1 -1
- package/dist/assets/{canvas-design-mount-DLn49Zle.js → canvas-design-mount-DamLAaWn.js} +4 -4
- package/dist/assets/canvas-entry-runtime-a6N7Rsrj.js +2 -0
- package/dist/assets/{canvas-preview-frames-B5xFRjhQ.js → canvas-preview-frames-XbrKuyJu.js} +1 -1
- package/dist/assets/{canvas-story-capture.service-DQ_leYyi.js → canvas-story-capture.service-DYRdEzkG.js} +2 -2
- package/dist/assets/capability-coverage-7wKVA3PF.js +7 -0
- package/dist/assets/{collaboration-presence-BOS1t8wI.js → collaboration-presence-DaVKEfxs.js} +1 -1
- package/dist/assets/{collider-Bf4Uk6LW.js → collider-BEwlgkG5.js} +1 -1
- package/dist/assets/component-board.service-BWSBM2Bb.js +2 -0
- package/dist/assets/{component-board.service-DFSSCaCf.js → component-board.service-C9ZouakC.js} +2 -2
- package/dist/assets/{component-board.service-CpVXGhz5.js → component-board.service-D2eGKqHf.js} +2 -2
- package/dist/assets/component-contracts.service-D0uElctD.js +1 -0
- package/dist/assets/component-instance-root-C1Xf4SwR.js +1 -0
- package/dist/assets/{component-verbs.command-DGzZAV_Z.js → component-verbs.command-N-Tj8KOS.js} +1 -1
- package/dist/assets/{component-verbs.service-D1rVRogp.js → component-verbs.service-CWh4mQ7X.js} +1 -1
- package/dist/assets/{config-D-EAAhqP.js → config-hmmj-QHZ.js} +4 -4
- package/dist/assets/{configurations-_HZOWZPy.js → configurations-B9Pi_eRN.js} +1 -1
- package/dist/assets/connection.status-C2HPxoww.js +1 -0
- package/dist/assets/{constraint-5KLYpGm7.js → constraint-Bp1l8hY-.js} +1 -1
- package/dist/assets/constraints.inspector-D-h1f3K2.js +1 -0
- package/dist/assets/{content-bounds-DKBD7nsv.js → content-bounds-7UyI42Vj.js} +1 -1
- package/dist/assets/{contract-system-adapters-h6OUBRYA.js → contract-system-adapters-Bq1LGdjs.js} +1 -1
- package/dist/assets/coverage.service-BiBikIsV.js +3 -0
- package/dist/assets/{create-runtime-Bg2uYMfh.js → create-runtime-Cx-q5z2y.js} +2 -2
- package/dist/assets/curve-Co_mro-I.js +1 -0
- package/dist/assets/{data-asset-7Nfmx-28.js → data-asset-Ckx4D_U_.js} +1 -1
- package/dist/assets/data-check-core-CHqar_E8.js +1 -0
- package/dist/assets/data-ref-70PUrMuT.js +1 -0
- package/dist/assets/debug-bridge-CarsgKpm.js +1 -0
- package/dist/assets/debug-registry-DgYNlhH_.js +1 -0
- package/dist/assets/{deferred-ingest-play-Bej67_y9.js → deferred-ingest-play-Bpdhu2i-.js} +2 -2
- package/dist/assets/{design-time-canvas-mount-CFW9ZWuk.js → design-time-canvas-mount-Ca9Q75Ui.js} +2 -2
- package/dist/assets/design-time-layers-BIb71snu.js +1 -0
- package/dist/assets/{design-time-mount.service-DJeAPUB_.js → design-time-mount.service-DL6ZK2TQ.js} +2 -2
- package/dist/assets/{design-time-mount.service-_R1UDCw3.js → design-time-mount.service-zKUVjKAu.js} +2 -2
- package/dist/assets/design-time-react-mount-NrWimSxY.js +1 -0
- package/dist/assets/{document-preview-three-5cbuuJMH.js → document-preview-three-DoDs6q1q.js} +1 -1
- package/dist/assets/{dom-authoring-adapter-CoESNvrM.js → dom-authoring-adapter-adLQog9l.js} +1 -1
- package/dist/assets/{draco3d-Sk9K4AUT.js → draco3d-aUvQF1Zx.js} +1 -1
- package/dist/assets/{edit-mode-audio.service-CH6J-8N7.js → edit-mode-audio.service-CHZ1ultu.js} +1 -1
- package/dist/assets/edit-mode-authoring-ZQuUwc6e.js +1 -0
- package/dist/assets/{edit-mode-networking.service-C4o2pGHX.js → edit-mode-networking.service-C7fk2fL1.js} +1 -1
- package/dist/assets/editor-api-C8MUOrwt.js +1 -0
- package/dist/assets/{editor-layers-B4oYfpj8.js → editor-layers-CGX7iCSP.js} +1 -1
- package/dist/assets/editor-presentation-activity-CqJH4G9t.js +1 -0
- package/dist/assets/{editor-shell-store-Bh1S7M54.js → editor-shell-store-BRqB1JZO.js} +1 -1
- package/dist/assets/{entity-object-B_5Gc0Ky.js → entity-object--ZpqIat7.js} +1 -1
- package/dist/assets/{extend-DcEyE5jI.js → extend-BZQIQ18F.js} +1 -1
- package/dist/assets/{fork-menu-CKjNh3MO.js → fork-menu-CziehkPx.js} +1 -1
- package/dist/assets/{frame-debugger-store-D5YViF_8.js → frame-debugger-store-BOQjrPsh.js} +1 -1
- package/dist/assets/game-audio-BeCyd0Ha.js +1 -0
- package/dist/assets/{game-contract-seams-C0AVYwvO.js → game-contract-seams-Dgqv6S8X.js} +1 -1
- package/dist/assets/{game-css-scope-transform-8GOvVu1s.js → game-css-scope-transform-anfk8vP_.js} +2 -2
- package/dist/assets/game-document.service-CqmgrRUA.js +1 -0
- package/dist/assets/game-eval.command-CoetFm6_.js +2 -0
- package/dist/assets/game-module-access-Cg1EB8Mx.js +1 -0
- package/dist/assets/game-network-BqI-Ehz0.js +22 -0
- package/dist/assets/{gameplay-export-K5AcStVC.js → gameplay-export-D0hZoeSg.js} +1 -1
- package/dist/assets/gameplay-replay-BHz6VAVa.js +1 -0
- package/dist/assets/{gameplay.command-DoWqBWhH.js → gameplay.command-CPc9GKuW.js} +1 -1
- package/dist/assets/generation-CdOATubd.css +1 -0
- package/dist/assets/{generation-jobs-CiabIfR0.js → generation-jobs-D-zXQNZI.js} +1 -1
- package/dist/assets/generation.service-Bwt9lQEG.js +1 -0
- package/dist/assets/{generations-DU9rCeQR.js → generations-d-U9lCVo.js} +1 -1
- package/dist/assets/generations.status-BQ8xhaLN.js +1 -0
- package/dist/assets/hierarchy-marks-CndAXtie.js +1 -0
- package/dist/assets/hierarchy-marks-CsTaTkc7.js +1 -0
- package/dist/assets/hosted-asset-materialization-r2vKfJGY.js +2 -0
- package/dist/assets/{ibl-override-material-CiKkaOTW.js → ibl-override-material-CMo_a49U.js} +1 -1
- package/dist/assets/index-BMxv2MNV.js +1 -0
- package/dist/assets/index-BPVnvJfX.js +1 -0
- package/dist/assets/{index-C4AUQbmq.js → index-BqzpzjSB.js} +1 -1
- package/dist/assets/{index-CC1puVjo.js → index-CMU7lnXk.js} +1 -1
- package/dist/assets/index-CPiRKiDC.css +1 -0
- package/dist/assets/{index-CaG87ZF-.js → index-Cr9NTnJp.js} +271 -270
- package/dist/assets/index-DSMLYme2.js +1 -0
- package/dist/assets/index-DoGlzvsX.js +1 -0
- package/dist/assets/{index-BsYc2Oyj.js → index-dlvCCB72.js} +1 -1
- package/dist/assets/{index-Kb9_s5aP.js → index-xjc_62Ha.js} +1 -1
- package/dist/assets/{index-C20Flc1s.js → index-z0_InXxO.js} +2 -2
- package/dist/assets/{inference-diagnostics-MGcIHEX6.js → inference-diagnostics-D5jfxI5p.js} +1 -1
- package/dist/assets/{ingest-boot-viewport-D2okO6JI.js → ingest-boot-viewport-Be0v44yf.js} +1 -1
- package/dist/assets/ingest-siblings-BowXSozE.js +1 -0
- package/dist/assets/ingest-source-persistence-BGIvThcv.js +1 -0
- package/dist/assets/ingest.service-wVm-ZcTI.js +1 -0
- package/dist/assets/{inspect-C8RP8G5F.js → inspect-CN92MgRT.js} +1 -1
- package/dist/assets/inspection-D8fZOHCM.js +1 -0
- package/dist/assets/instances.command-B6gJuL1Z.js +1 -0
- package/dist/assets/{json-history-resource-CTXRV4GD.js → json-history-resource-C9G_vCX9.js} +1 -1
- package/dist/assets/{layered-pick-B_-BRrRD.js → layered-pick-D9tIz_m7.js} +1 -1
- package/dist/assets/{light-CskDQ8gF.js → light-BGbl1a8K.js} +1 -1
- package/dist/assets/{live-project-verbs-BOAQN3ME.js → live-project-verbs-p1sdTwhF.js} +1 -1
- package/dist/assets/{machine.document-BxOoCOo9.js → machine.document-C1acXU7l.js} +1 -1
- package/dist/assets/{machines.finder-CqEceWzS.js → machines.finder-sOxNTYPx.js} +1 -1
- package/dist/assets/material-D7289cYI.js +1 -0
- package/dist/assets/{material-factory-qB9pzcQf.js → material-factory-D0T-DH8c.js} +1 -1
- package/dist/assets/{mesh-5--4qA-C.js → mesh-1A-HHxD6.js} +1 -1
- package/dist/assets/model-asset-sections-D1uxOu2v.css +1 -0
- package/dist/assets/model-asset-sections.service-DF-mllTL.js +1 -0
- package/dist/assets/{model-inspection-MrJY0U_-.js → model-inspection-CuVwNVvv.js} +1 -1
- package/dist/assets/{model-thumbnail-uk-2sblh.js → model-thumbnail-xm1Fabi2.js} +1 -1
- package/dist/assets/{models.finder-rk8dhgO8.js → models.finder-DrvU1qGk.js} +1 -1
- package/dist/assets/module-mode-BHOAAbgO.js +2 -0
- package/dist/assets/mount-canvas-ingest-root-aVZkVNh4.js +2 -0
- package/dist/assets/mount-dom-ingest-root-eOOGPaxi.js +2 -0
- package/dist/assets/{mount-ingest-root-BC3-1Cw1.js → mount-ingest-root-BsWbEvr_.js} +2 -2
- package/dist/assets/{mount-manifest-QJOB11Kv.js → mount-manifest-t6ipNsoF.js} +1 -1
- package/dist/assets/mount-readiness-DyAd17pe.js +4 -0
- package/dist/assets/mount-three-ingest-root-DIR0wKrN.js +1 -0
- package/dist/assets/{mounted-authoring-B7RL_V28.js → mounted-authoring-DX3DC9PJ.js} +1 -1
- package/dist/assets/{mounted-story-viewport-source-CnYhX3vW.js → mounted-story-viewport-source-D8FqGpci.js} +1 -1
- package/dist/assets/{native-debug-module-B-rWJfWE.js → native-debug-module-CB738yQu.js} +1 -1
- package/dist/assets/{navigation-BVu-aVmF.js → navigation-B9ihB0qU.js} +1 -1
- package/dist/assets/{navmesh.menu-C3M63eR4.js → navmesh.menu-CPxr9LPT.js} +1 -1
- package/dist/assets/{navmesh.service-B0H1fUfn.js → navmesh.service-BAtili_Y.js} +1 -1
- package/dist/assets/network-observer.service-CqTuZNtI.js +1 -0
- package/dist/assets/network.utility-CclYEmfV.js +1 -0
- package/dist/assets/object-marks-BnvSuCTt.js +1 -0
- package/dist/assets/{object3d-authoring-subject-BDrxd1GA.js → object3d-authoring-subject-XccsO0xG.js} +1 -1
- package/dist/assets/{object3d-document-session-registry-OjqzJ86S.js → object3d-document-session-registry-BWeuL0nf.js} +2 -2
- package/dist/assets/{oid-transform-Bzc2ZJSH.js → oid-transform-BYeAsBKI.js} +1 -1
- package/dist/assets/{particles-Be7AvO4c.js → particles-BXiQDiB-.js} +1 -1
- package/dist/assets/{performance-profiler-OwnXQX0M.js → performance-profiler-CMbwGBuk.js} +1 -1
- package/dist/assets/pixi-authoring-adapter-CPsN0Yk7.js +1 -0
- package/dist/assets/pixi-live-write-target-BUbt5ixX.js +1 -0
- package/dist/assets/{play.command-CIGRq8ow.js → play.command-Bz5Ra6Uj.js} +2 -2
- package/dist/assets/pose-guard-CLabLSzf.js +1 -0
- package/dist/assets/presentation-C7ZHYsKF.js +1 -0
- package/dist/assets/{product-BN31wSnB.js → product-MSpbAqgo.js} +1 -1
- package/dist/assets/{profiler.action-D57Kj9ym.js → profiler.action-1Jbc-7Q4.js} +1 -1
- package/dist/assets/{profiler.menu-Dh9Q5DDx.js → profiler.menu-C544DxWZ.js} +1 -1
- package/dist/assets/profiler.utility-QnzedS3X.js +1 -0
- package/dist/assets/{project-authoring-session-LCJAwGrD.js → project-authoring-session-BhNfg7TY.js} +2 -2
- package/dist/assets/project-provenance-BGnJXJwa.js +1 -0
- package/dist/assets/{properties-bone-constraints.inspector-CaIDq5nN.js → properties-bone-constraints.inspector-DRCPfugt.js} +1 -1
- package/dist/assets/{properties-bone.inspector-D2fcQGMF.js → properties-bone.inspector-CYHeZX0p.js} +1 -1
- package/dist/assets/{properties-collection.inspector-CF5AtTAd.js → properties-collection.inspector-DtGhPkiU.js} +1 -1
- package/dist/assets/{properties-constraints.inspector-Bj2itDrS.js → properties-constraints.inspector-TIyIV777.js} +1 -1
- package/dist/assets/{properties-data.inspector-BfRqk0Xo.js → properties-data.inspector-vA0MTaup.js} +1 -1
- package/dist/assets/{properties-material.inspector-Bf8H0mvu.js → properties-material.inspector-C73spBQh.js} +1 -1
- package/dist/assets/{properties-modifiers.inspector-BKShc1TH.js → properties-modifiers.inspector-9oyLBBE0.js} +1 -1
- package/dist/assets/{properties-object.inspector-YBh8ABnN.js → properties-object.inspector-7BuiUgbd.js} +1 -1
- package/dist/assets/{properties-output.inspector-CVkzfs-l.js → properties-output.inspector-CjYAggz2.js} +1 -1
- package/dist/assets/{properties-particles.inspector-ChDpAq-2.js → properties-particles.inspector-DpSfjykX.js} +1 -1
- package/dist/assets/{properties-physics.inspector-BLEM7aMj.js → properties-physics.inspector-BUTvmfU9.js} +1 -1
- package/dist/assets/{properties-render.inspector-vU4D9xLL.js → properties-render.inspector-CEdsDqbI.js} +1 -1
- package/dist/assets/{properties-scene.inspector-C-DoN-kL.js → properties-scene.inspector-4kp0sLNw.js} +1 -1
- package/dist/assets/{properties-texture.inspector-DySxy1oU.js → properties-texture.inspector-Ckpqy9eo.js} +1 -1
- package/dist/assets/{properties-view-layer.inspector-DEKxMahJ.js → properties-view-layer.inspector-CQIFbY8-.js} +1 -1
- package/dist/assets/{properties-world.inspector-m5qL_TQV.js → properties-world.inspector-xZgNV6rI.js} +1 -1
- package/dist/assets/r3f-design-session-D8VF-hty.js +2 -0
- package/dist/assets/{r3f-physics-binding-Bgzzd4ol.js → r3f-physics-binding-oippu1v_.js} +1 -1
- package/dist/assets/{r3f-source-authoring-adapter-C8oMjdTL.js → r3f-source-authoring-adapter-CZJX6VLM.js} +1 -1
- package/dist/assets/react-canvas-navigation-DuzvnFoN.js +1 -0
- package/dist/assets/react-inspector.service-CV4p6nrb.js +1 -0
- package/dist/assets/react-story-board-mhldts6w.js +1 -0
- package/dist/assets/{react-three-rapier.esm-BR2ttgLS.js → react-three-rapier.esm-Bo9LjrZe.js} +1 -1
- package/dist/assets/react-world-authoring-adapter-CuyruDfq.js +1 -0
- package/dist/assets/{realm-services-DefTrXnY.js → realm-services-BtiLE3a-.js} +1 -1
- package/dist/assets/reflection-probe-capture.inspector-mrrOHs-9.js +1 -0
- package/dist/assets/{reflection-probe-BHNGwVyz.js → reflection-probe-sIto9mh0.js} +1 -1
- package/dist/assets/registry-DpUr2YIM.js +1 -0
- package/dist/assets/{relative-import-specifier-DQzkawgj.js → relative-import-specifier-CyT6yU4l.js} +1 -1
- package/dist/assets/{render-env-BZ7LsGfk.js → render-env-C63BGT5v.js} +1 -1
- package/dist/assets/{render-features-C7QwmhCo.js → render-features-CBl6rom9.js} +1 -1
- package/dist/assets/{render-settings-BBvkacR3.js → render-settings-DjarlnjI.js} +1 -1
- package/dist/assets/resolve-three-OiswFiIS.js +702 -0
- package/dist/assets/root-seam-contract-BYLQx4CQ.js +1 -0
- package/dist/assets/{run-selection-BUeubtHj.js → run-selection-BMu0v3qC.js} +1 -1
- package/dist/assets/scene-capture-BLf3lJ44.js +1 -0
- package/dist/assets/scene-document.service-CjPDph5k.js +2 -0
- package/dist/assets/{scene-framing-PVMqGU8h.js → scene-framing-BhNk0WhI.js} +1 -1
- package/dist/assets/{scene-index--lRWLEmW.js → scene-index-DHeKmalD.js} +1 -1
- package/dist/assets/{scene-query-s1y04OVB.js → scene-query-ByZtXA2m.js} +1 -1
- package/dist/assets/seeded-random-DmdE0u-C.js +1 -0
- package/dist/assets/{session-CTXsU1lK.js → session-CeyQA0Dv.js} +35 -35
- package/dist/assets/{setup-renderer-OOw1SykJ.js → setup-renderer-Bf8g2S0f.js} +1 -1
- package/dist/assets/{source-object3d-authoring-adapter-RmutT5Dt.js → source-object3d-authoring-adapter-IDRws2Nk.js} +1 -1
- package/dist/assets/{source-persistence-backend-HviqjKZ2.js → source-persistence-backend-Dzc6MsmN.js} +1 -1
- package/dist/assets/{spark-renderer-lifecycle-DfYpvEJa.js → spark-renderer-lifecycle-B6Axb6jm.js} +1 -1
- package/dist/assets/{stage-keyboard-DDi7S27C.js → stage-keyboard-CpnIYiph.js} +1 -1
- package/dist/assets/stage-overlay-set-BrJzOTCe.js +1 -0
- package/dist/assets/stage-presence-markers-BFTl9Djp.js +1 -0
- package/dist/assets/stage-transform-tools-QaenmSrC.js +1 -0
- package/dist/assets/standard-viewport-dressing-DuKH01r4.js +24 -0
- package/dist/assets/{state-watch.action-DEdb1mNa.js → state-watch.action-BaRZ6YII.js} +1 -1
- package/dist/assets/{state-watch.menu-jWbUM3kw.js → state-watch.menu-DR2AtQ6r.js} +1 -1
- package/dist/assets/state-watch.utility-VW8H9Fgi.js +1 -0
- package/dist/assets/{story-capture-Dj1xkeKH.js → story-capture-BEVV48wm.js} +1 -1
- package/dist/assets/story-documents-DndjqJ7Y.js +3 -0
- package/dist/assets/{story-documents.service-BzQCuNBu.js → story-documents.service-CPrZ7gRM.js} +1 -1
- package/dist/assets/{story-documents.service-iNP-ORNr.js → story-documents.service-wCVmBPhh.js} +1 -1
- package/dist/assets/{story-media-presence-zTPlU9HR.js → story-media-presence-BSX78yVJ.js} +1 -1
- package/dist/assets/{story-pixi-preview-B7THvSl7.js → story-pixi-preview-D4FuH7lJ.js} +1 -1
- package/dist/assets/{story-presentation-BLXYPadR.js → story-presentation-2AxtnKGb.js} +1 -1
- package/dist/assets/story-three-preview-DjObHSAF.js +2 -0
- package/dist/assets/{structural-ids-Br2zjINh.js → structural-ids-BOo2BRoY.js} +1 -1
- package/dist/assets/studio-environment-B--4k2mN.js +2 -0
- package/dist/assets/{surface-state-D9j6qNu8.js → surface-state-CQHVfsma.js} +1 -1
- package/dist/assets/{syntactic-prop-specs-BTnsMOvH.js → syntactic-prop-specs-CewRyC4c.js} +1 -1
- package/dist/assets/team-playtest.service-B9m6CNk7.js +1 -0
- package/dist/assets/{three-oYrcK5SQ.js → three-B86IzdNg.js} +1 -1
- package/dist/assets/three-authoring-adapter-BD8_MtYK.js +1 -0
- package/dist/assets/three-authoring.service-BjJ9wetk.js +2 -0
- package/dist/assets/{three-ingest-runtime-CXKjNysA.js → three-ingest-runtime-CXySzulx.js} +1 -1
- package/dist/assets/{three-integration-CuAnYaTW.js → three-integration-nl5TC6EF.js} +2 -2
- package/dist/assets/three-integration.service-BEk5QkKM.js +1 -0
- package/dist/assets/three-projection-core-D4m8lsPU.js +1 -0
- package/dist/assets/{three-state-wXRU3rLr.js → three-state-C36FeFK4.js} +1 -1
- package/dist/assets/{three-story-capture.service-DMJRcqjr.js → three-story-capture.service-C0icETyL.js} +2 -2
- package/dist/assets/{three-story-model-DgiAP-oQ.js → three-story-model-CqWu9S2a.js} +1 -1
- package/dist/assets/three-viewport-presentation-CCMgGLI2.js +141 -0
- package/dist/assets/tools-BnE3UWVA.js +1 -0
- package/dist/assets/transform-mode-request-CIgYj1Qb.js +1 -0
- package/dist/assets/transport-strip-B1AJKpn-.js +1 -0
- package/dist/assets/transport.header-D-n6dQ5n.js +1 -0
- package/dist/assets/{trigger-volume-DP0G1VBe.js → trigger-volume-BLkHmfm9.js} +1 -1
- package/dist/assets/tuples-uyiMYXrv.js +1 -0
- package/dist/assets/ui-board-document-6e4w4a8B.js +2 -0
- package/dist/assets/{user-data-CqOoAowZ.js → user-data-BXFD1jg-.js} +1 -1
- package/dist/assets/user-data-CODoGZqA.js +1 -0
- package/dist/assets/{utility-view-state-Db97zwDz.js → utility-view-state-I_o0WThv.js} +1 -1
- package/dist/assets/viewport-door-AsLxGhLN.js +1 -0
- package/dist/assets/{viewport-root-presentation-B35t51xX.js → viewport-root-presentation-B1qtThOB.js} +1 -1
- package/dist/assets/{viewport-surface-status-D5kZtFW5.js → viewport-surface-status-CWmQeKTO.js} +1 -1
- package/dist/assets/{webworkerAll-CfKEb4Ao.js → webworkerAll-DC445ANd.js} +1 -1
- package/dist/assets/worker-jepHAPPr.js +2 -0
- package/dist/assets/workspace-arrangement-dkubzCff.js +1 -0
- package/dist/assets/world-documents-psBK5u_2.js +1 -0
- package/dist/assets/world-root-stage-binding-BrvO8VMz.js +1 -0
- package/dist/assets/{xstate-animation-binding-aQEmNSpm.js → xstate-animation-binding-ChVFHSlM.js} +1 -1
- package/dist/assets/{xstate-animation-meta-CnMX1Sc1.js → xstate-animation-meta-D7xnhyCE.js} +1 -1
- package/dist/volter-shared-react.json +10 -0
- package/dist/volter-shared-three.json +3 -0
- package/dist-node/cli.js +247 -209
- package/dist-node/create.js +90 -74
- package/package.json +20 -19
- package/src/contributions.d.ts +1 -1
- package/src/index.ts +10 -10
- package/starter/cube.py +1 -1
- package/template/.agents/references/project-manual.md +17 -18
- package/template/.agents/skills/editor/SKILL.md +6 -6
- package/template/.agents/skills/editor/agents/openai.yaml +3 -3
- package/template/.agents/skills/editor/references/editor-control.md +62 -62
- package/template/.agents/skills/{vgai-3d-models → volter-3d-models}/SKILL.md +3 -3
- package/template/.agents/skills/{vgai-ingest-existing-game → volter-ingest-existing-game}/SKILL.md +3 -3
- package/template/.agents/skills/{vgai-music → volter-music}/SKILL.md +7 -7
- package/template/{.github/skills/vgai-threejs-authoring → .agents/skills/volter-threejs-authoring}/SKILL.md +9 -9
- package/template/.agents/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
- package/template/{.claude/skills/vgai-threejs-authoring → .agents/skills/volter-threejs-authoring}/references/helper-catalog.md +1 -1
- package/template/.claude/skills/editor/SKILL.md +6 -6
- package/template/.claude/skills/editor/agents/openai.yaml +3 -3
- package/template/.claude/skills/editor/references/editor-control.md +62 -62
- package/template/{.github/skills/vgai-3d-models → .claude/skills/volter-3d-models}/SKILL.md +3 -3
- package/template/{.github/skills/vgai-ingest-existing-game → .claude/skills/volter-ingest-existing-game}/SKILL.md +3 -3
- package/template/.claude/skills/{vgai-threejs-authoring → volter-threejs-authoring}/SKILL.md +9 -9
- package/template/.claude/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
- package/template/{.agents/skills/vgai-threejs-authoring → .claude/skills/volter-threejs-authoring}/references/helper-catalog.md +1 -1
- package/template/.github/copilot-instructions.md +1 -1
- package/template/.github/skills/editor/SKILL.md +6 -6
- package/template/.github/skills/editor/agents/openai.yaml +3 -3
- package/template/.github/skills/editor/references/editor-control.md +62 -62
- package/template/{.claude/skills/vgai-3d-models → .github/skills/volter-3d-models}/SKILL.md +3 -3
- package/template/{.claude/skills/vgai-ingest-existing-game → .github/skills/volter-ingest-existing-game}/SKILL.md +3 -3
- package/template/{.agents/skills/vgai-threejs-authoring → .github/skills/volter-threejs-authoring}/SKILL.md +9 -9
- package/template/.github/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
- package/template/.github/skills/{vgai-threejs-authoring → volter-threejs-authoring}/references/helper-catalog.md +1 -1
- package/template/.mcp.json +3 -3
- package/template/AGENTS.md +25 -25
- package/template/DEVLOG.md +1 -1
- package/template/IDIOMS.md +3 -3
- package/template/LICENSE +3 -3
- package/template/README.md +12 -13
- package/template/check-idioms.ts +71 -95
- package/template/manifest-entry-modules-plugin.ts +17 -4
- package/template/package.json +13 -15
- package/template/server/colyseus-setup.ts +1 -9
- package/template/server/main.ts +4 -9
- package/template/server/rooms/arena-room.ts +10 -10
- package/template/server/rooms/game-room.ts +10 -10
- package/template/server/rooms.ts +3 -5
- package/template/src/bot/QaTester.tsx +1 -1
- package/template/src/bot/bot-station.ts +2 -2
- package/template/src/bot/tester-station.ts +1 -1
- package/template/src/contributions/README.md +1 -1
- package/template/src/contributions/analytics.analytics.tsx +1 -1
- package/template/src/contributions/data.document.tsx +2 -2
- package/template/src/contributions/pages.finder.ts +1 -1
- package/template/src/contributions/tester.inspector.tsx +2 -2
- package/template/src/contributions/use-game-modules.ts +1 -1
- package/template/src/input.ts +1 -1
- package/template/src/lib/reflections/volume-reflection-material.ts +59 -59
- package/template/src/lib/static-batch/Frozen.tsx +1 -1
- package/template/src/lib/static-batch/mutation-watch.ts +1 -1
- package/template/src/main.ts +19 -38
- package/template/src/manifest-entry-modules.d.ts +12 -1
- package/template/src/net/NetworkedPlayers.tsx +3 -3
- package/template/src/prefabs/HeroBox.stories.tsx +1 -1
- package/template/src/world.tsx +1 -1
- package/template/tsconfig.json +1 -1
- package/template/validate-manifest.ts +3 -3
- package/template/vite.config.ts +12 -12
- package/template/{vgai.adapter.ts → volter.adapter.ts} +1 -1
- package/template/{vgai.project.json → volter.project.json} +2 -2
- package/template-dotfiles/gitignore +27 -27
- package/workbench/src/media/game-cover.css +11 -11
- package/workbench/src/product.contribution.ts +28 -28
- package/workbench/src/{vgaiGameSkew.ts → volterGameSkew.ts} +16 -16
- package/dist/assets/AudioViewer-xFb5Wv7A.js +0 -1
- package/dist/assets/CanvasSceneViewport-vqBlOz8P.js +0 -1
- package/dist/assets/ColorInput-CX1UZjYO.js +0 -1
- package/dist/assets/ImageViewer-shZzMd91.js +0 -1
- package/dist/assets/InspectorObjectPreview-BMOvJaOw.js +0 -1
- package/dist/assets/JsonAssetDocument-D_HXneWE.js +0 -2
- package/dist/assets/Object3DDocumentToolbar-BfPH9jz5.js +0 -1
- package/dist/assets/Object3DDocumentViewport-BaXWtATg.js +0 -2
- package/dist/assets/OnlineAssetDetail-BxibUH6K.js +0 -1
- package/dist/assets/PlayBar-DRANyO01.js +0 -1
- package/dist/assets/ReactCanvasControls-K98jOX9b.js +0 -1
- package/dist/assets/RootSelectionOverlay-BQC12Gdd.js +0 -1
- package/dist/assets/ShadowEditor-DP1LWynl.js +0 -1
- package/dist/assets/StageHost-V_0opXFt.js +0 -2
- package/dist/assets/ThreeBoardDocument-tgcaZDqQ.js +0 -2
- package/dist/assets/Toolbar-uLgsrB2z.js +0 -1
- package/dist/assets/VideoViewer-ClUJ6_uy.js +0 -1
- package/dist/assets/ViewportShadingMenu-Bdkc6jcd.js +0 -1
- package/dist/assets/active-ingest-CnAeQcuQ.js +0 -3
- package/dist/assets/animation-mixers.service-DiecMX_A.js +0 -1
- package/dist/assets/animation-timeline.utility-C71vPJgs.js +0 -1
- package/dist/assets/asset-editor-persistence-BQgjOCrm.js +0 -1
- package/dist/assets/asset-loaders-5PIUVvmH.js +0 -2
- package/dist/assets/audio.utility-D9Vk_WYS.js +0 -1
- package/dist/assets/autoplay.service-CFJoLPLw.js +0 -1
- package/dist/assets/binding-resolver-C_9MBSMa.js +0 -2
- package/dist/assets/blender-emscripten-engine-BeWFjMn-.js +0 -2
- package/dist/assets/blender-version.status-DtfwUahB.js +0 -1
- package/dist/assets/blender-wali-engine-da698rDf.js +0 -2
- package/dist/assets/blender.status-ujwGU6dU.js +0 -1
- package/dist/assets/board-guides-_3R1t_-2.js +0 -1
- package/dist/assets/body-marks-RKb_LTwL.js +0 -1
- package/dist/assets/build-profiles.document-CZxDuhzz.js +0 -2
- package/dist/assets/build-progress.status-Dk5u3C67.js +0 -1
- package/dist/assets/build.header--xqH6uTP.js +0 -1
- package/dist/assets/canvas-entry-runtime-DVeh71nC.js +0 -2
- package/dist/assets/capability-coverage-DQgg6UJe.js +0 -7
- package/dist/assets/component-board.service-DgujG90T.js +0 -2
- package/dist/assets/component-contracts.service-Bc_2Xxh_.js +0 -1
- package/dist/assets/component-instance-root-df4ofoOR.js +0 -1
- package/dist/assets/connection.status-CCX-mgmr.js +0 -1
- package/dist/assets/constraints.inspector-CwEEREsf.js +0 -1
- package/dist/assets/coverage.service-CV7b5Sqn.js +0 -3
- package/dist/assets/curve-BKuiAPpj.js +0 -1
- package/dist/assets/data-check-core-CQEjuFyt.js +0 -1
- package/dist/assets/data-ref-DyFQqqX6.js +0 -1
- package/dist/assets/debug-bridge-CESAxmlz.js +0 -1
- package/dist/assets/debug-registry-l7k5Hjc8.js +0 -1
- package/dist/assets/design-time-layers-CQgnmqc8.js +0 -1
- package/dist/assets/design-time-react-mount-CFvIk_rV.js +0 -1
- package/dist/assets/edit-mode-authoring-DBjaBTxM.js +0 -1
- package/dist/assets/editor-api-D2azVray.js +0 -1
- package/dist/assets/editor-presentation-activity-C7SNSmTd.js +0 -1
- package/dist/assets/game-audio-CaGKzia4.js +0 -1
- package/dist/assets/game-document.service-FdG_gFPU.js +0 -1
- package/dist/assets/game-eval.command-4wa9vqWE.js +0 -2
- package/dist/assets/game-module-access-DulnT3NH.js +0 -1
- package/dist/assets/game-network-Bo_nlDR5.js +0 -22
- package/dist/assets/gameplay-replay-CnWnlogY.js +0 -1
- package/dist/assets/generation-DhwCUHPf.css +0 -1
- package/dist/assets/generation.service-D2yeZaJu.js +0 -1
- package/dist/assets/generations.status-3CrPw_n5.js +0 -1
- package/dist/assets/hierarchy-marks-BLPfSIym.js +0 -1
- package/dist/assets/hierarchy-marks-C25dY2fR.js +0 -1
- package/dist/assets/hosted-asset-materialization-DYdcFlDf.js +0 -2
- package/dist/assets/index-B5WjeCHm.css +0 -1
- package/dist/assets/index-BcH5GC3b.js +0 -1
- package/dist/assets/index-CwCDkEl1.js +0 -1
- package/dist/assets/index-n3QdTv-T.js +0 -1
- package/dist/assets/index.module-Ycad3DJq.js +0 -1
- package/dist/assets/ingest-siblings-CkxW__go.js +0 -1
- package/dist/assets/ingest-source-persistence-6peGfPAS.js +0 -1
- package/dist/assets/ingest.service-Cc73WMIW.js +0 -1
- package/dist/assets/inspection-CObLhnrs.js +0 -1
- package/dist/assets/instances.command-CxKGnrNl.js +0 -1
- package/dist/assets/material-BwFzKPi0.js +0 -1
- package/dist/assets/model-asset-sections-CFvvihfx.css +0 -1
- package/dist/assets/model-asset-sections.service-TZ2SaBmH.js +0 -1
- package/dist/assets/module-mode-B79jV5tQ.js +0 -2
- package/dist/assets/mount-canvas-ingest-root-BhaYNuhY.js +0 -2
- package/dist/assets/mount-dom-ingest-root-BQb1u0LX.js +0 -2
- package/dist/assets/mount-readiness-Ds0HvvLH.js +0 -4
- package/dist/assets/mount-three-ingest-root-DIDBfvIH.js +0 -1
- package/dist/assets/network-observer.service-CiR4Q9Q0.js +0 -1
- package/dist/assets/network.utility-CNG3eJ0E.js +0 -1
- package/dist/assets/object-marks-DwvIEBOK.js +0 -1
- package/dist/assets/pixi-authoring-adapter-B42K4md-.js +0 -1
- package/dist/assets/pixi-live-write-target-D56tQEe_.js +0 -1
- package/dist/assets/pose-guard-DILO6gGq.js +0 -1
- package/dist/assets/presentation-DGBuGP6i.js +0 -1
- package/dist/assets/profiler.utility-DLNySW3w.js +0 -1
- package/dist/assets/project-provenance-4ldz-EOG.js +0 -1
- package/dist/assets/r3f-design-session-C0DPEChS.js +0 -2
- package/dist/assets/react-canvas-navigation-Jowa_lJq.js +0 -1
- package/dist/assets/react-inspector.service-TfTdj_Qk.js +0 -1
- package/dist/assets/react-story-board-Bx7qYytV.js +0 -1
- package/dist/assets/react-world-authoring-adapter-C1jPW_cN.js +0 -1
- package/dist/assets/reflection-probe-capture.inspector-C-6zrzZb.js +0 -1
- package/dist/assets/registry-Z28XSZHF.js +0 -1
- package/dist/assets/resolve-three-C7zDbK29.js +0 -702
- package/dist/assets/root-seam-contract-rGNbiX6q.js +0 -1
- package/dist/assets/scene-capture-BTWgUzhI.js +0 -1
- package/dist/assets/scene-document.service-DJJp-la1.js +0 -2
- package/dist/assets/seeded-random-38To73fI.js +0 -1
- package/dist/assets/stage-overlay-set-olkNSZmq.js +0 -1
- package/dist/assets/stage-presence-markers-cznMN_qq.js +0 -1
- package/dist/assets/stage-transform-tools-BDUZqRIR.js +0 -1
- package/dist/assets/standard-viewport-dressing-BZyuxyVl.js +0 -24
- package/dist/assets/state-watch.utility-DDmn3G25.js +0 -1
- package/dist/assets/story-documents-8ehMyYHo.js +0 -3
- package/dist/assets/story-three-preview-B1nNiPwP.js +0 -2
- package/dist/assets/studio-environment-yaKaHPxH.js +0 -2
- package/dist/assets/team-playtest.service-Ds9tkO4q.js +0 -1
- package/dist/assets/three-authoring-adapter-BrkGH4cd.js +0 -1
- package/dist/assets/three-authoring.service-DoamZDMx.js +0 -2
- package/dist/assets/three-integration.service-Db-VabIm.js +0 -1
- package/dist/assets/three-projection-core-jBJVt6O0.js +0 -1
- package/dist/assets/three-viewport-presentation-CgO3eWJ-.js +0 -141
- package/dist/assets/tools-B_NJsk05.js +0 -1
- package/dist/assets/transform-mode-request-BnKpgRUW.js +0 -1
- package/dist/assets/transport-strip-a9yLoPsI.js +0 -1
- package/dist/assets/transport.header-CpfoppXc.js +0 -1
- package/dist/assets/tuples-CKsHOV9T.js +0 -1
- package/dist/assets/ui-board-document-DtTR_mBr.js +0 -2
- package/dist/assets/user-data-dHvLdpwM.js +0 -1
- package/dist/assets/viewport-door-DVkMQazS.js +0 -1
- package/dist/assets/worker-CC9Ug5Ei.js +0 -2
- package/dist/assets/workspace-arrangement-DIMM7ska.js +0 -1
- package/dist/assets/world-documents-C4t3iOD-.js +0 -1
- package/dist/assets/world-root-stage-binding-ydl3JN1a.js +0 -1
- package/dist/vgai-shared-react.json +0 -10
- package/dist/vgai-shared-three.json +0 -3
- package/template/.agents/skills/vgai-threejs-authoring/agents/openai.yaml +0 -4
- package/template/.claude/skills/vgai-threejs-authoring/agents/openai.yaml +0 -4
- package/template/.github/skills/vgai-threejs-authoring/agents/openai.yaml +0 -4
- package/template/server/loopback.ts +0 -76
- /package/dist/assets/{vgai-shared-fontawesome-CU65D4Ij.js → volter-shared-fontawesome-CU65D4Ij.js} +0 -0
- /package/dist/assets/{vgai-shared-jsx-dev-runtime-DFDKL7fx.js → volter-shared-jsx-dev-runtime-DFDKL7fx.js} +0 -0
- /package/dist/assets/{vgai-shared-jsx-runtime-DIqBpTut.js → volter-shared-jsx-runtime-DIqBpTut.js} +0 -0
- /package/dist/assets/{vgai-shared-react-BT7rMc2H.js → volter-shared-react-BT7rMc2H.js} +0 -0
- /package/dist/assets/{vgai-shared-react-dom-DFajMqMT.js → volter-shared-react-dom-DFajMqMT.js} +0 -0
- /package/dist/assets/{vgai-shared-react-dom-client-S0ozfl6_.js → volter-shared-react-dom-client-S0ozfl6_.js} +0 -0
- /package/dist/assets/{vgai-shared-three-DH4yxKwt.js → volter-shared-three-DH4yxKwt.js} +0 -0
- /package/template/{.vgai → .volter}/assets.json +0 -0
- /package/template/{.vgai → .volter}/provenance.json +0 -0
package/LICENSE
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
NOTICE — ONE SUBTREE IS EXCLUDED FROM THIS GRANT
|
|
2
2
|
|
|
3
|
-
`packages/editor` is licensed under the GNU Affero General Public License,
|
|
3
|
+
`packages/game-editor` is licensed under the GNU Affero General Public License,
|
|
4
4
|
version 3 only, whose text follows — with ONE exception, stated here because a
|
|
5
5
|
reader who finds our code inside their own MIT game needs to find this line.
|
|
6
|
-
`packages/editor/catalog/project-source/` IS NOT UNDER THE AGPL. It is
|
|
7
|
-
licensed MIT (`packages/editor/catalog/project-source/LICENSE`, the same
|
|
8
|
-
the starter template carries), and it is excluded from the grant below.
|
|
6
|
+
`packages/game-editor/catalog/project-source/` IS NOT UNDER THE AGPL. It is
|
|
7
|
+
licensed MIT (`packages/game-editor/catalog/project-source/LICENSE`, the same
|
|
8
|
+
text the starter template carries), and it is excluded from the grant below.
|
|
9
9
|
|
|
10
10
|
That subtree is the CAPABILITY DISTRIBUTION: source whose whole purpose is to
|
|
11
11
|
be copied, byte for byte, out of this package and into projects that are not
|
|
12
|
-
ours. `
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
`capabilities:sync -- --check` proves file by file. The copy becomes the
|
|
12
|
+
ours. `volter-game-editor add <id>` copies a capability's declared files into a
|
|
13
|
+
user's game, and the MIT starter template (`packages/game-editor/template/`)
|
|
14
|
+
carries the same bytes for the capabilities it starts with. The copy becomes the
|
|
16
15
|
project's, editing it is the entire point, and a person must be able to
|
|
17
16
|
relicense their game under any terms they choose. So the licence is attached at
|
|
18
17
|
the source: the file does not change licence on the way into a game, because it
|
|
19
18
|
was never AGPL to begin with.
|
|
20
19
|
|
|
21
|
-
Everything else in `packages/editor` — the editor application that does
|
|
22
|
-
copying — is governed by the AGPL text below.
|
|
20
|
+
Everything else in `packages/game-editor` — the editor application that does
|
|
21
|
+
the copying — is governed by the AGPL text below.
|
|
23
22
|
|
|
24
23
|
--------------------------------------------------------------------------
|
|
25
24
|
|
package/LICENSE-BLENDER
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
NOTICE — WHAT THIS PACKAGE IS, AND WHOSE IT IS
|
|
2
2
|
|
|
3
|
-
This package (`@
|
|
3
|
+
This package (`@volter/editor-blender`) is the EDITOR-SIDE half of Blender in the tab:
|
|
4
4
|
the Model document and its presenters, the Properties tabs, the outliner, the
|
|
5
5
|
node and UV editors, the display transforms, the sky, the status items, the
|
|
6
6
|
layouts, the finder and the Blender LOOK. Our code here is ours. Its ICON
|
|
@@ -57,7 +57,7 @@ package is:
|
|
|
57
57
|
that means the whole package must be conveyed under terms that satisfy both.
|
|
58
58
|
Both licence texts follow: the AGPL first, then the GPL.
|
|
59
59
|
|
|
60
|
-
This package is NOT `@
|
|
60
|
+
This package is NOT `@volter/blender-engine`, which is Blender ITSELF compiled to
|
|
61
61
|
WebAssembly and is GPL-3.0-or-later in whole (`packages/blender-engine/LICENSE`).
|
|
62
62
|
This package imports only that engine's wire TYPES plus the one tab-side handle
|
|
63
63
|
that owns the worker; the process boundary is the package boundary
|
package/NOTICE
CHANGED
|
@@ -6,10 +6,10 @@ LICENSE-BLENDER preserves the integration license and attribution. The
|
|
|
6
6
|
separately installed Blender engine has its own GPL license and
|
|
7
7
|
corresponding-source requirements.
|
|
8
8
|
|
|
9
|
-
Transferred from the AGPL-3.0-only
|
|
9
|
+
Transferred from the AGPL-3.0-only volter-engine repository at revision
|
|
10
10
|
09c2749ce:
|
|
11
11
|
- packages/game-editor (the product entry and its create presets)
|
|
12
|
-
-
|
|
12
|
+
- the project scaffolder package (now node/scaffold)
|
|
13
13
|
- packages/editor/template (template/)
|
|
14
14
|
- packages/editor/template-dotfiles (template-dotfiles/)
|
|
15
15
|
- packages/editor/catalog/project-source and catalog/entries (catalog/)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The standalone boot's `canvas` root mount: a `@pixi/react` `<Application>` with every `pixi.js`
|
|
3
|
+
* class registered first, as the editor's own canvas mount registers them (so a node the editor
|
|
4
|
+
* created, a TilingSprite or a BitmapText, mounts here too). Only a project with a `canvas` root
|
|
5
|
+
* carries this file and the two packages; `main.ts` reaches it through the manifest's generated
|
|
6
|
+
* module, so a game without a 2D scene imports no Pixi at all.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { Application, extend } from '@pixi/react';
|
|
10
|
+
import * as PIXI from 'pixi.js';
|
|
11
|
+
import { type ComponentType, createElement } from 'react';
|
|
12
|
+
import { createRoot } from 'react-dom/client';
|
|
13
|
+
|
|
14
|
+
extend(PIXI as unknown as Parameters<typeof extend>[0]);
|
|
15
|
+
|
|
16
|
+
export interface CanvasMountOptions {
|
|
17
|
+
/** The bottom world clears opaque; a world stacked above it clears transparent. */
|
|
18
|
+
readonly bottom: boolean;
|
|
19
|
+
/** Pixi's own hit test for interactive objects, handed to the boot's input routing. */
|
|
20
|
+
readonly onHitTest: (canvas: HTMLCanvasElement, hit: (x: number, y: number) => boolean) => void;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function mountCanvasRoot(layer: HTMLElement, Entry: ComponentType, options: CanvasMountOptions): void {
|
|
24
|
+
createRoot(layer).render(
|
|
25
|
+
createElement(
|
|
26
|
+
Application,
|
|
27
|
+
{
|
|
28
|
+
resizeTo: layer,
|
|
29
|
+
antialias: true,
|
|
30
|
+
resolution: globalThis.devicePixelRatio ?? 1,
|
|
31
|
+
autoDensity: true,
|
|
32
|
+
backgroundAlpha: options.bottom ? 1 : 0,
|
|
33
|
+
onInit: (app) => {
|
|
34
|
+
// Pixi points its boundary at the last rendered scene inside its own pointer handlers.
|
|
35
|
+
options.onHitTest(app.canvas, (x, y) => {
|
|
36
|
+
const rendered = app.renderer.lastObjectRendered;
|
|
37
|
+
if (!rendered) return false;
|
|
38
|
+
app.renderer.events.rootBoundary.rootTarget = rendered;
|
|
39
|
+
return app.renderer.events.rootBoundary.hitTest(x, y) !== null;
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
createElement(Entry),
|
|
44
|
+
),
|
|
45
|
+
);
|
|
46
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Graphics } from 'pixi.js';
|
|
2
|
+
import { useCallback } from 'react';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* This game's 2D scene: a `canvas` root, ordinary `@pixi/react` source, 2D game rendering (sprites,
|
|
6
|
+
* tilemaps, the 2D world). Not its UI: menus and the HUD are the React `dom` root.
|
|
7
|
+
*/
|
|
8
|
+
export default function Scene2D() {
|
|
9
|
+
const draw = useCallback((graphics: Graphics) => {
|
|
10
|
+
graphics.clear();
|
|
11
|
+
graphics.rect(-40, -40, 80, 80).fill({ color: 0x579eff });
|
|
12
|
+
}, []);
|
|
13
|
+
return (
|
|
14
|
+
<pixiContainer label="Scene">
|
|
15
|
+
<pixiGraphics label="Block" x={160} y={120} draw={draw} />
|
|
16
|
+
</pixiContainer>
|
|
17
|
+
);
|
|
18
|
+
}
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"three-bvh-csg": "^0.0.18",
|
|
27
27
|
"three-mesh-bvh": "^0.9.12"
|
|
28
28
|
},
|
|
29
|
-
"
|
|
29
|
+
"volterTools": ["./src/tools/bake-module.tool.ts", "./src/tools/bake-preview.tool.ts"]
|
|
30
30
|
},
|
|
31
31
|
"requires": [],
|
|
32
32
|
"skills": [],
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
|
-
"description": "Blender-style modeling \u2014 TWO PACKAGES. `@volter/blender-engine` is Blender itself, compiled to WebAssembly and running headless in the editor tab's worker (GPL-3.0-or-later, because Blender is); `@volter/editor-blender` is the editor-side half that drives it: the Model document (a `.blend` the engine opens, edits and saves), the `modelsFromBlendFiles` finder, the display transforms and the Blender look \u2014 style, keymap, palette, icons and the Model/Sculpt/Texture layouts (ARCHITECTURE-CORE \u00a7Blender north star). Adding this capability declares both dependencies and copies in the starter model: `src/models/cube.blend` \u2014 a real Blender document \u2014 and `src/models/cube.py`, the bpy script that authored it, which stays in the project as the asset's source. Select the finder in `
|
|
2
|
+
"description": "Blender-style modeling \u2014 TWO PACKAGES. `@volter/blender-engine` is Blender itself, compiled to WebAssembly and running headless in the editor tab's worker (GPL-3.0-or-later, because Blender is); `@volter/editor-blender` is the editor-side half that drives it: the Model document (a `.blend` the engine opens, edits and saves), the `modelsFromBlendFiles` finder, the display transforms and the Blender look \u2014 style, keymap, palette, icons and the Model/Sculpt/Texture layouts (ARCHITECTURE-CORE \u00a7Blender north star). Adding this capability declares both dependencies and copies in the starter model: `src/models/cube.blend` \u2014 a real Blender document \u2014 and `src/models/cube.py`, the bpy script that authored it, which stays in the project as the asset's source. Select the finder in `volter.adapter.ts`: `{ finder: 'modelsFromBlendFiles', include: ['src/models/**/*.blend'] }`.",
|
|
3
3
|
"files": [],
|
|
4
4
|
"id": "blender",
|
|
5
5
|
"packageJson": {
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@volter/editor-blender": "0.1.
|
|
8
|
-
"@volter/blender-engine": "0.1.
|
|
7
|
+
"@volter/editor-blender": "0.1.13",
|
|
8
|
+
"@volter/blender-engine": "0.1.11"
|
|
9
9
|
}
|
|
10
10
|
},
|
|
11
11
|
"requires": [
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"description": "Music composed as code with the editor's DAW, delivered as mastered audio. Adds @volter/dawproject (a piece is a React component of DAWproject elements) and @volter/editor-dawproject (the piece document, the renderer and the checks), the
|
|
2
|
+
"description": "Music composed as code with the editor's DAW, delivered as mastered audio. Adds @volter/dawproject (a piece is a React component of DAWproject elements) and @volter/editor-dawproject (the piece document, the renderer and the checks), the volter-music skill, and src/lib/music/music-player.ts, which plays a render's loops, section loops switched on the bar line, stems and stingers through the game's own Web Audio graph. Selects the piece finder (src/music/**/*.tsx) in volter.adapter.ts.",
|
|
3
3
|
"documents": [
|
|
4
4
|
{
|
|
5
5
|
"finder": "piecesFromModules",
|
|
@@ -15,16 +15,16 @@
|
|
|
15
15
|
"id": "music",
|
|
16
16
|
"packageJson": {
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@volter/dawproject": "0.5.
|
|
19
|
-
"@volter/editor-dawproject": "0.5.
|
|
18
|
+
"@volter/dawproject": "0.5.70",
|
|
19
|
+
"@volter/editor-dawproject": "0.5.70"
|
|
20
20
|
},
|
|
21
|
-
"
|
|
21
|
+
"volterTools": [
|
|
22
22
|
"./src/tools/music-render.tool.ts"
|
|
23
23
|
]
|
|
24
24
|
},
|
|
25
25
|
"requires": [],
|
|
26
26
|
"skills": [
|
|
27
|
-
"
|
|
27
|
+
"volter-music"
|
|
28
28
|
],
|
|
29
29
|
"title": "Music (rendered pieces)",
|
|
30
30
|
"version": "0.4.2"
|
|
@@ -2,20 +2,20 @@ MIT License
|
|
|
2
2
|
|
|
3
3
|
Copyright (c) 2026 Volter AI, Inc.
|
|
4
4
|
|
|
5
|
-
THIS SUBTREE IS NOT AGPL. It sits inside `packages/editor`, which is
|
|
5
|
+
THIS SUBTREE IS NOT AGPL. It sits inside `packages/game-editor`, which is
|
|
6
6
|
AGPL-3.0-only, and it is deliberately excluded from that grant and licensed MIT
|
|
7
7
|
instead — because every file here is COPIED, byte for byte, into projects that
|
|
8
|
-
are not ours. `
|
|
9
|
-
game
|
|
10
|
-
|
|
8
|
+
are not ours. `volter-game-editor add <id>` copies a capability's declared files into a user's
|
|
9
|
+
game, and the MIT starter template (`packages/game-editor/template/`) carries
|
|
10
|
+
the same bytes for the capabilities it starts with. The copy becomes the project's, editing
|
|
11
11
|
it is the entire point (the shadcn model), and the person who edits it must be
|
|
12
12
|
able to relicense their game under any terms they choose. Source that lands in
|
|
13
13
|
someone's game under the editor's copyleft would be a trap, so it is MIT at the
|
|
14
14
|
source: the licence of the file does not change on the way in.
|
|
15
15
|
|
|
16
|
-
The AGPL continues to govern the rest of `packages/editor` — the editor
|
|
16
|
+
The AGPL continues to govern the rest of `packages/game-editor` — the editor
|
|
17
17
|
application that does the copying. See LICENSE.md at the repository root for
|
|
18
|
-
the per-package map, and `packages/editor/template/LICENSE` for the template's
|
|
18
|
+
the per-package map, and `packages/game-editor/template/LICENSE` for the template's
|
|
19
19
|
own copy of this grant.
|
|
20
20
|
|
|
21
21
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
* The `bake` CONFIGURATION KIND (ARCHITECTURE-CORE §The project model): a
|
|
3
3
|
* build-role configuration that bakes one project-authored Object3D module
|
|
4
4
|
* into a GLB — the bake capability's own `project.bake.module` tool, run by
|
|
5
|
-
* the host as a build. Declare one in `
|
|
5
|
+
* the host as a build. Declare one in `volter.project.json`:
|
|
6
6
|
*
|
|
7
7
|
* { "id": "cube-glb", "kind": "bake", "modulePath": "src/models/cube.ts", "name": "cube" }
|
|
8
8
|
*
|
|
9
|
-
* and
|
|
9
|
+
* and Build Profiles (Export) bakes it. This module is a plain
|
|
10
10
|
* object the HOST registers; it mounts no UI.
|
|
11
11
|
*/
|
|
12
12
|
|
|
@@ -10,7 +10,7 @@ import type { BuilderState } from './builder-state';
|
|
|
10
10
|
*
|
|
11
11
|
* This is a plain helper with explicit inputs and outputs — NOT a registry, base
|
|
12
12
|
* class, or generator kind. Each lib still owns its own contribution file and
|
|
13
|
-
* its own `
|
|
13
|
+
* its own `volterTools` entry; the file just shrinks to the handful of facts that
|
|
14
14
|
* are genuinely its own (what to build, what it is called, and where its
|
|
15
15
|
* source lives).
|
|
16
16
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CSSProperties } from 'react';
|
|
2
2
|
|
|
3
|
-
export const hintStyle: CSSProperties = { color: 'var(--
|
|
3
|
+
export const hintStyle: CSSProperties = { color: 'var(--volter-content-muted)', fontSize: 11 };
|
|
4
4
|
export const fieldLabelStyle: CSSProperties = { fontSize: 12, fontWeight: 600 };
|
|
5
5
|
export const inputStyle: CSSProperties = { width: '100%', minWidth: 0, boxSizing: 'border-box' };
|
|
6
6
|
|
|
@@ -36,10 +36,10 @@ export function BuilderSliderRow({
|
|
|
36
36
|
step={step}
|
|
37
37
|
value={value}
|
|
38
38
|
onChange={(event) => onChange(Number(event.target.value))}
|
|
39
|
-
style={{ width: '100%', minWidth: 0, accentColor: 'var(--
|
|
39
|
+
style={{ width: '100%', minWidth: 0, accentColor: 'var(--volter-accent)' }}
|
|
40
40
|
/>
|
|
41
41
|
<input
|
|
42
|
-
className="
|
|
42
|
+
className="volter-input"
|
|
43
43
|
type="number"
|
|
44
44
|
min={min}
|
|
45
45
|
max={max}
|
|
@@ -115,8 +115,8 @@ export async function resolveProjectModule(
|
|
|
115
115
|
* from them). It is not a new convention invented here: `bakeObject3DSource`
|
|
116
116
|
* has always taken exactly `{ root, animations, dispose }` from its `build`
|
|
117
117
|
* callback, so the bake lane consumed this shape while the MODULE lane —
|
|
118
|
-
* `project.bake.module`, `project.bake.preview`, `
|
|
119
|
-
* — refused it. Measured (cold fox, 2026-08-29): `
|
|
118
|
+
* `project.bake.module`, `project.bake.preview`, `volter-game-editor screenshot <module>`
|
|
119
|
+
* — refused it. Measured (cold fox, 2026-08-29): `volter-game-editor screenshot
|
|
120
120
|
* src/lib/fox/generate.ts` died with "export 'createFox' must return a
|
|
121
121
|
* THREE.Object3D, got object", closing the fast look door to every
|
|
122
122
|
* parametric lib including the kit's own worked examples.
|
|
@@ -172,7 +172,7 @@ function asModuleBuild(built: unknown): ModuleBuild | undefined {
|
|
|
172
172
|
* editor server, and it is a ONE-SHOT door: Node's ESM cache keys on the URL
|
|
173
173
|
* and never invalidates, so inside a long-lived server it returned the first
|
|
174
174
|
* version of `src/models/barrel.ts` for every later look until the server was
|
|
175
|
-
* restarted (the blind modeling bench measured three `
|
|
175
|
+
* restarted (the blind modeling bench measured three `volter-game-editor restart`s in one
|
|
176
176
|
* barrel, 2026-09-05).
|
|
177
177
|
*/
|
|
178
178
|
export async function buildFromModule(
|
|
@@ -198,7 +198,7 @@ export async function buildFromModule(
|
|
|
198
198
|
}
|
|
199
199
|
// A MODEL MODULE's builder is `build` (`lib/mesh/geometry`'s contract), so a
|
|
200
200
|
// caller asking for the default export of a module that has none but has
|
|
201
|
-
// `build` gets the model — `
|
|
201
|
+
// `build` gets the model — `volter-game-editor screenshot src/models/cube.ts` needs no flag.
|
|
202
202
|
const exp = mod[exportName] ?? (exportName === 'default' ? mod['build'] : undefined);
|
|
203
203
|
if (exp === undefined) {
|
|
204
204
|
throw new ToolError(
|
|
@@ -81,13 +81,13 @@ function cubeUvSamplingFunctions(): string {
|
|
|
81
81
|
.replace(
|
|
82
82
|
/\b(textureCubeUV|bilinearCubeUV)\(([^)]*)\)/g,
|
|
83
83
|
(_match, name: string, args: string) =>
|
|
84
|
-
`${name === 'textureCubeUV' ? '
|
|
84
|
+
`${name === 'textureCubeUV' ? 'volterTextureCubeUV' : 'volterBilinearCubeUV'}(${args.trim()}, ${args.includes('sampler2D') ? 'vec3 ' : ''}volterAtlasSize)`,
|
|
85
85
|
)
|
|
86
|
-
.replace(/\b(getFace|getUV|roughnessToMip)\b/g, '
|
|
87
|
-
.replace(/\bcubeUV_(\w+)\b/g, '
|
|
88
|
-
.replaceAll('CUBEUV_MAX_MIP', '
|
|
89
|
-
.replaceAll('CUBEUV_TEXEL_WIDTH', '
|
|
90
|
-
.replaceAll('CUBEUV_TEXEL_HEIGHT', '
|
|
86
|
+
.replace(/\b(getFace|getUV|roughnessToMip)\b/g, 'volter$1')
|
|
87
|
+
.replace(/\bcubeUV_(\w+)\b/g, 'volterCubeUV_$1')
|
|
88
|
+
.replaceAll('CUBEUV_MAX_MIP', 'volterAtlasSize.z')
|
|
89
|
+
.replaceAll('CUBEUV_TEXEL_WIDTH', 'volterAtlasSize.x')
|
|
90
|
+
.replaceAll('CUBEUV_TEXEL_HEIGHT', 'volterAtlasSize.y');
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
/**
|
|
@@ -104,21 +104,21 @@ function atlasSizeOf(texture: Texture | null): Vector3 {
|
|
|
104
104
|
|
|
105
105
|
function probeWeight(index: number): string {
|
|
106
106
|
return `
|
|
107
|
-
vec3 lp = (
|
|
107
|
+
vec3 lp = (volterProbeWorldToLocal[${index}] * vec4(${IBL_WORLD_POSITION}, 1.0)).xyz;
|
|
108
108
|
float weight = 0.0;
|
|
109
|
-
if (
|
|
110
|
-
vec3 edge =
|
|
109
|
+
if (volterProbeShape[${index}] < 0.5) {
|
|
110
|
+
vec3 edge = volterProbeExtents[${index}] - abs(lp);
|
|
111
111
|
if (all(greaterThanEqual(edge, vec3(0.0)))) {
|
|
112
112
|
float nearest = min(edge.x, min(edge.y, edge.z));
|
|
113
|
-
weight =
|
|
114
|
-
? clamp(nearest /
|
|
113
|
+
weight = volterProbeBlendDistance[${index}] > 0.0001
|
|
114
|
+
? clamp(nearest / volterProbeBlendDistance[${index}], 0.0, 1.0)
|
|
115
115
|
: 1.0;
|
|
116
116
|
}
|
|
117
117
|
} else {
|
|
118
|
-
float edge =
|
|
118
|
+
float edge = volterProbeRadius[${index}] - length(lp);
|
|
119
119
|
if (edge >= 0.0) {
|
|
120
|
-
weight =
|
|
121
|
-
? clamp(edge /
|
|
120
|
+
weight = volterProbeBlendDistance[${index}] > 0.0001
|
|
121
|
+
? clamp(edge / volterProbeBlendDistance[${index}], 0.0, 1.0)
|
|
122
122
|
: 1.0;
|
|
123
123
|
}
|
|
124
124
|
}`;
|
|
@@ -126,29 +126,29 @@ function probeWeight(index: number): string {
|
|
|
126
126
|
|
|
127
127
|
function probeWeightBlock(index: number): string {
|
|
128
128
|
return `
|
|
129
|
-
if (
|
|
130
|
-
if (weight > 0.0) bestPriority = max(bestPriority,
|
|
129
|
+
if (volterProbeReady[${index}] > 0.5) {${probeWeight(index)}
|
|
130
|
+
if (weight > 0.0) bestPriority = max(bestPriority, volterProbePriority[${index}]);
|
|
131
131
|
}`;
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
function probeSampleBlock(index: number, roughness: string, direction: string): string {
|
|
135
135
|
return `
|
|
136
|
-
if (
|
|
136
|
+
if (volterProbeReady[${index}] > 0.5 && abs(volterProbePriority[${index}] - bestPriority) < 0.001) {${probeWeight(index)}
|
|
137
137
|
if (weight > 0.0) {
|
|
138
|
-
vec3 probeDirection = (
|
|
139
|
-
if (
|
|
140
|
-
vec3 boxPos = lp -
|
|
138
|
+
vec3 probeDirection = (volterProbeWorldToLocal[${index}] * vec4(${direction}, 0.0)).xyz;
|
|
139
|
+
if (volterProbeParallax[${index}] > 0.5) {
|
|
140
|
+
vec3 boxPos = lp - volterProbeParallaxOffset[${index}];
|
|
141
141
|
vec3 safeDirection = sign(probeDirection) * max(abs(probeDirection), vec3(0.00001));
|
|
142
|
-
vec3 rayMax = (
|
|
143
|
-
vec3 rayMin = (-
|
|
142
|
+
vec3 rayMax = (volterProbeParallaxExtents[${index}] - boxPos) / safeDirection;
|
|
143
|
+
vec3 rayMin = (-volterProbeParallaxExtents[${index}] - boxPos) / safeDirection;
|
|
144
144
|
vec3 rayDistance = mix(rayMin, rayMax, greaterThan(safeDirection, vec3(0.0)));
|
|
145
145
|
float nearestFace = min(rayDistance.x, min(rayDistance.y, rayDistance.z));
|
|
146
146
|
probeDirection = boxPos + safeDirection * nearestFace
|
|
147
|
-
+
|
|
147
|
+
+ volterProbeParallaxOffset[${index}] - volterProbeCaptureOffset[${index}];
|
|
148
148
|
}
|
|
149
|
-
accumulated +=
|
|
150
|
-
|
|
151
|
-
).rgb *
|
|
149
|
+
accumulated += volterTextureCubeUV(
|
|
150
|
+
volterProbeMap${index}, probeDirection, ${roughness}, volterProbeAtlasSize[${index}]
|
|
151
|
+
).rgb * volterProbeIntensity[${index}] * weight;
|
|
152
152
|
totalWeight += weight;
|
|
153
153
|
}
|
|
154
154
|
}`;
|
|
@@ -157,7 +157,7 @@ function probeSampleBlock(index: number, roughness: string, direction: string):
|
|
|
157
157
|
function volumeReflectionShader(probeCount: number): string {
|
|
158
158
|
const samplers = Array.from(
|
|
159
159
|
{ length: probeCount },
|
|
160
|
-
(_, index) => `uniform sampler2D
|
|
160
|
+
(_, index) => `uniform sampler2D volterProbeMap${index};`,
|
|
161
161
|
).join('\n');
|
|
162
162
|
const weights = Array.from({ length: probeCount }, (_, index) => probeWeightBlock(index)).join(
|
|
163
163
|
'\n',
|
|
@@ -171,25 +171,25 @@ function volumeReflectionShader(probeCount: number): string {
|
|
|
171
171
|
return `${baseIblFunctions()}
|
|
172
172
|
${cubeUvSamplingFunctions()}
|
|
173
173
|
#ifdef USE_ENVMAP
|
|
174
|
-
uniform float
|
|
175
|
-
uniform mat4
|
|
176
|
-
uniform vec3
|
|
177
|
-
uniform vec3
|
|
178
|
-
uniform vec3
|
|
179
|
-
uniform vec3
|
|
180
|
-
uniform vec3
|
|
181
|
-
uniform float
|
|
182
|
-
uniform float
|
|
183
|
-
uniform float
|
|
184
|
-
uniform float
|
|
185
|
-
uniform float
|
|
186
|
-
uniform float
|
|
187
|
-
uniform float
|
|
174
|
+
uniform float volterProbeReady[${probeCount}];
|
|
175
|
+
uniform mat4 volterProbeWorldToLocal[${probeCount}];
|
|
176
|
+
uniform vec3 volterProbeExtents[${probeCount}];
|
|
177
|
+
uniform vec3 volterProbeParallaxExtents[${probeCount}];
|
|
178
|
+
uniform vec3 volterProbeParallaxOffset[${probeCount}];
|
|
179
|
+
uniform vec3 volterProbeCaptureOffset[${probeCount}];
|
|
180
|
+
uniform vec3 volterProbeAtlasSize[${probeCount}];
|
|
181
|
+
uniform float volterProbeShape[${probeCount}];
|
|
182
|
+
uniform float volterProbeRadius[${probeCount}];
|
|
183
|
+
uniform float volterProbeBlendDistance[${probeCount}];
|
|
184
|
+
uniform float volterProbePriority[${probeCount}];
|
|
185
|
+
uniform float volterProbeIntensity[${probeCount}];
|
|
186
|
+
uniform float volterProbeParallax[${probeCount}];
|
|
187
|
+
uniform float volterBaseEnvironment;
|
|
188
188
|
${samplers}
|
|
189
189
|
|
|
190
190
|
vec3 getIBLIrradiance(const in vec3 normal) {
|
|
191
191
|
#ifdef ENVMAP_TYPE_CUBE_UV
|
|
192
|
-
vec3 baseIrradiance = getBaseIBLIrradiance(normal) *
|
|
192
|
+
vec3 baseIrradiance = getBaseIBLIrradiance(normal) * volterBaseEnvironment;
|
|
193
193
|
vec3 worldNormal = inverseTransformDirection(normal, viewMatrix);
|
|
194
194
|
float bestPriority = -1000000.0;
|
|
195
195
|
${weights}
|
|
@@ -206,7 +206,7 @@ ${irradiance}
|
|
|
206
206
|
|
|
207
207
|
vec3 getIBLRadiance(const in vec3 viewDir, const in vec3 normal, const in float roughness) {
|
|
208
208
|
#ifdef ENVMAP_TYPE_CUBE_UV
|
|
209
|
-
vec3 baseRadiance = getBaseIBLRadiance(viewDir, normal, roughness) *
|
|
209
|
+
vec3 baseRadiance = getBaseIBLRadiance(viewDir, normal, roughness) * volterBaseEnvironment;
|
|
210
210
|
vec3 reflected = reflect(-viewDir, normal);
|
|
211
211
|
reflected = normalize(mix(reflected, normal, roughness * roughness));
|
|
212
212
|
vec3 worldReflect = inverseTransformDirection(reflected, viewMatrix);
|
|
@@ -236,60 +236,60 @@ function writeProbeUniforms(
|
|
|
236
236
|
shader.uniforms[name] = { value };
|
|
237
237
|
};
|
|
238
238
|
values(
|
|
239
|
-
'
|
|
239
|
+
'volterProbeReady',
|
|
240
240
|
probes.map((probe) => Number(probe.ready && !capturing)),
|
|
241
241
|
);
|
|
242
242
|
values(
|
|
243
|
-
'
|
|
243
|
+
'volterProbeWorldToLocal',
|
|
244
244
|
probes.map((probe) => probe.worldToLocal),
|
|
245
245
|
);
|
|
246
246
|
values(
|
|
247
|
-
'
|
|
247
|
+
'volterProbeExtents',
|
|
248
248
|
probes.map((probe) => probe.extents),
|
|
249
249
|
);
|
|
250
250
|
values(
|
|
251
|
-
'
|
|
251
|
+
'volterProbeParallaxExtents',
|
|
252
252
|
probes.map((probe) => probe.parallaxExtents),
|
|
253
253
|
);
|
|
254
254
|
values(
|
|
255
|
-
'
|
|
255
|
+
'volterProbeParallaxOffset',
|
|
256
256
|
probes.map((probe) => probe.parallaxOffset),
|
|
257
257
|
);
|
|
258
258
|
values(
|
|
259
|
-
'
|
|
259
|
+
'volterProbeCaptureOffset',
|
|
260
260
|
probes.map((probe) => probe.captureOffset),
|
|
261
261
|
);
|
|
262
262
|
values(
|
|
263
|
-
'
|
|
263
|
+
'volterProbeAtlasSize',
|
|
264
264
|
probes.map((probe) => atlasSizeOf(probe.texture)),
|
|
265
265
|
);
|
|
266
266
|
values(
|
|
267
|
-
'
|
|
267
|
+
'volterProbeShape',
|
|
268
268
|
probes.map((probe) => Number(probe.mark.config.shape === 'sphere')),
|
|
269
269
|
);
|
|
270
270
|
values(
|
|
271
|
-
'
|
|
271
|
+
'volterProbeRadius',
|
|
272
272
|
probes.map((probe) => Math.max(0.01, probe.mark.config.radius)),
|
|
273
273
|
);
|
|
274
274
|
values(
|
|
275
|
-
'
|
|
275
|
+
'volterProbeBlendDistance',
|
|
276
276
|
probes.map((probe) => Math.max(0, probe.mark.config.blendDistance)),
|
|
277
277
|
);
|
|
278
278
|
values(
|
|
279
|
-
'
|
|
279
|
+
'volterProbePriority',
|
|
280
280
|
probes.map((probe) => probe.mark.config.priority),
|
|
281
281
|
);
|
|
282
282
|
values(
|
|
283
|
-
'
|
|
283
|
+
'volterProbeIntensity',
|
|
284
284
|
probes.map((probe) => Math.max(0, probe.mark.config.intensity)),
|
|
285
285
|
);
|
|
286
286
|
values(
|
|
287
|
-
'
|
|
287
|
+
'volterProbeParallax',
|
|
288
288
|
probes.map((probe) => Number(probe.mark.config.parallaxProjection)),
|
|
289
289
|
);
|
|
290
|
-
values('
|
|
290
|
+
values('volterBaseEnvironment', baseEnvironment ? 1 : 0);
|
|
291
291
|
probes.forEach((probe, index) => {
|
|
292
|
-
values(`
|
|
292
|
+
values(`volterProbeMap${index}`, probe.texture);
|
|
293
293
|
});
|
|
294
294
|
}
|
|
295
295
|
|
|
@@ -377,7 +377,7 @@ function ownVolumeReflectionMaterial<T extends MeshStandardMaterial>(
|
|
|
377
377
|
installedCount = count;
|
|
378
378
|
override = overrideMaterialIbl(material, {
|
|
379
379
|
fragment: () => volumeReflectionShader(count),
|
|
380
|
-
cacheKey: () => `
|
|
380
|
+
cacheKey: () => `volter-volume-reflections:${count}`,
|
|
381
381
|
onCompile: (shader) =>
|
|
382
382
|
writeProbeUniforms(shader, eligible, hasBaseEnvironment(), isCapturing),
|
|
383
383
|
});
|
|
@@ -64,7 +64,7 @@ export function Frozen({ name = 'Frozen', children, ...props }: FrozenProps) {
|
|
|
64
64
|
const batch = freezeSubtree(root, name);
|
|
65
65
|
// Degrade LOUDLY — a wrapper that silently declined most of its subtree
|
|
66
66
|
// looks identical to one that worked. Under the dev gate, though: this is
|
|
67
|
-
// an authoring signal (`
|
|
67
|
+
// an authoring signal (`volter-game-editor status` reports console warnings, which is
|
|
68
68
|
// where the building agent already looks), and a player's console is not
|
|
69
69
|
// where it belongs.
|
|
70
70
|
if (import.meta.env.DEV) {
|
|
@@ -82,7 +82,7 @@ export interface FrozenMutationWatch {
|
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
function warnOnConsole(message: string): void {
|
|
85
|
-
// biome-ignore lint/suspicious/noConsole: console is this tripwire's
|
|
85
|
+
// biome-ignore lint/suspicious/noConsole: console is this tripwire's volter-status channel.
|
|
86
86
|
console.warn(message);
|
|
87
87
|
}
|
|
88
88
|
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
* asset namespace is untouched — a look is not an export
|
|
11
11
|
* (ARCHITECTURE-CORE §Agent surface, the look-verb decision).
|
|
12
12
|
*
|
|
13
|
-
* The PNGs land under `<project>/.
|
|
14
|
-
* machine-written-evidence namespace `
|
|
13
|
+
* The PNGs land under `<project>/.volter/screenshots/` — the same
|
|
14
|
+
* machine-written-evidence namespace `volter-game-editor screenshot` already writes to,
|
|
15
15
|
* beside the run artifacts and the session file, and gitignored like the rest of
|
|
16
16
|
* it.
|
|
17
17
|
*
|
|
18
18
|
* A live session is REQUIRED and cannot be worked around: Node has no GPU, so
|
|
19
19
|
* "build the model here, photograph it there" is the whole shape of this
|
|
20
|
-
* tool. With no session it refuses by name and points at `
|
|
20
|
+
* tool. With no session it refuses by name and points at `volter-game-editor edit`, rather
|
|
21
21
|
* than building an Object3D nobody will ever see.
|
|
22
22
|
*/
|
|
23
23
|
|
|
@@ -47,7 +47,7 @@ export const NO_EDITOR_SESSION_ERROR: ToolErrorDefinition = {
|
|
|
47
47
|
code: 'NO_EDITOR_SESSION',
|
|
48
48
|
summary:
|
|
49
49
|
'No live editor session for this project — rasterization happens in the editor, so a look ' +
|
|
50
|
-
'is impossible without one. Run `
|
|
50
|
+
'is impossible without one. Run `volter-game-editor edit <project>`.',
|
|
51
51
|
data: z.object({ projectRoot: z.string(), reason: z.string() }),
|
|
52
52
|
};
|
|
53
53
|
|
|
@@ -155,7 +155,7 @@ export function orbitShotSet(frames: number): {
|
|
|
155
155
|
export const BakePreviewResultSchema = z.object({
|
|
156
156
|
directory: z
|
|
157
157
|
.string()
|
|
158
|
-
.describe('Project-relative directory the PNGs were written to, under .
|
|
158
|
+
.describe('Project-relative directory the PNGs were written to, under .volter/screenshots/.'),
|
|
159
159
|
files: z
|
|
160
160
|
.array(z.string())
|
|
161
161
|
.describe(
|
|
@@ -326,7 +326,7 @@ export const tool = defineTool({
|
|
|
326
326
|
'builder to get a native THREE.Object3D, exports it to an IN-MEMORY GLB, and hands those ' +
|
|
327
327
|
"bytes to the live editor session's Asset Lab for the standard four-view contact sheet — " +
|
|
328
328
|
'or, with `orbit`, for that many evenly spaced headings around the subject. ' +
|
|
329
|
-
'The PNGs are written under <project>/.
|
|
329
|
+
'The PNGs are written under <project>/.volter/screenshots/. Nothing is written under ' +
|
|
330
330
|
'public/, no provenance record is created, and no GLB reaches disk — this is the read-only ' +
|
|
331
331
|
'sibling of project.bake.module, for looking at a builder while iterating on it.',
|
|
332
332
|
input: BakePreviewInputSchema,
|
|
@@ -348,7 +348,7 @@ export const tool = defineTool({
|
|
|
348
348
|
permission: {
|
|
349
349
|
risk: 'read',
|
|
350
350
|
summary:
|
|
351
|
-
'Imports and runs a project module, then writes look-only PNGs under .
|
|
351
|
+
'Imports and runs a project module, then writes look-only PNGs under .volter/screenshots/. ' +
|
|
352
352
|
'Never touches the project asset namespace.',
|
|
353
353
|
},
|
|
354
354
|
async impl(input, ctx) {
|
|
@@ -371,7 +371,7 @@ export const tool = defineTool({
|
|
|
371
371
|
throw new ToolError(
|
|
372
372
|
NO_EDITOR_SESSION_ERROR.code,
|
|
373
373
|
'project.bake.preview renders through the live editor session (Node has no GPU), and ' +
|
|
374
|
-
`none is open for this project. Run \`
|
|
374
|
+
`none is open for this project. Run \`volter-game-editor edit ${projectRoot}\` first. (${reason})`,
|
|
375
375
|
{ projectRoot, reason },
|
|
376
376
|
);
|
|
377
377
|
}
|
|
@@ -424,7 +424,7 @@ export const tool = defineTool({
|
|
|
424
424
|
const capture = orbit ?? (await session.editor.assetPreview(source, options));
|
|
425
425
|
|
|
426
426
|
const directory = join(
|
|
427
|
-
'.
|
|
427
|
+
'.volter',
|
|
428
428
|
'screenshots',
|
|
429
429
|
`${bakePreviewSlug(input.modulePath, input.exportName)}-${new Date()
|
|
430
430
|
.toISOString()
|