@volter/cyclotron 0.5.211 → 0.5.213
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 +232 -1964
- package/LICENSE +2 -3
- package/LICENSE-BLENDER +9 -8
- package/NOTICE +8 -3
- package/README.md +39 -30
- package/dist/.vite/manifest.json +1215 -4338
- package/dist/assets/AudioViewer-B5pkIGXS.js +1 -0
- package/dist/assets/ImageViewer-BPVLEEQ2.js +1 -0
- package/dist/assets/JsonAssetDocument-DuVW9del.js +2 -0
- package/dist/assets/ProjectAuthoringBootstrap-CZJz4Svb.js +2 -0
- package/dist/assets/SourceAssetViewer-LwHBW53R.js +1 -0
- package/dist/assets/VideoViewer-Bfjjp4zH.js +1 -0
- package/dist/assets/client-BLXKEWrR.js +25 -0
- package/dist/assets/index-BKjLHm6K.js +483 -0
- package/dist/assets/index-CJcVFJ-l.css +1 -0
- package/dist/assets/product-CaIfLQVS.js +1 -0
- package/dist/assets/story-capture-C3xmgE62.js +1 -0
- package/dist/assets/volter-sdk-DT0xmh2J.js +1407 -0
- package/dist/assets/volter-sdk-activation-events-B-WERmWU.js +1 -0
- package/dist/assets/volter-sdk-active-project-DvEsy8Q6.js +1 -0
- package/dist/assets/volter-sdk-adapter-editor-config-CQ5V6W-o.js +1 -0
- package/dist/assets/volter-sdk-animation-animation-clock-Cy7j_2qF.js +1 -0
- package/dist/assets/volter-sdk-animation-stage-transport-DoUDq6Gb.js +1 -0
- package/dist/assets/volter-sdk-api-base-Dr1bx5e0.js +1 -0
- package/dist/assets/volter-sdk-api-project-open-D4nPvIPU.js +1 -0
- package/dist/assets/volter-sdk-api-project-source-DoO7WBwQ.js +1 -0
- package/dist/assets/volter-sdk-api-settings-BEHgO5wf.js +1 -0
- package/dist/assets/volter-sdk-asset-capabilities-CGkNwaAe.js +1 -0
- package/dist/assets/volter-sdk-asset-document-write-policy-CzWM1HhK.js +1 -0
- package/dist/assets/volter-sdk-asset-editor-context-BkSK1vL1.js +1 -0
- package/dist/assets/volter-sdk-asset-thumbnails-zSmJgI_x.js +1 -0
- package/dist/assets/volter-sdk-asset-viewers-B-ICvlkR.js +1 -0
- package/dist/assets/volter-sdk-asset-workflow-project-content-C6Ow0R-F.js +1 -0
- package/dist/assets/volter-sdk-authoring-active-adapter-CKuWwxgH.js +1 -0
- package/dist/assets/volter-sdk-authoring-boundary-authoring-adapter-DTwFKBkS.js +1 -0
- package/dist/assets/volter-sdk-authoring-composite-authoring-adapter-iRSbSHpV.js +1 -0
- package/dist/assets/volter-sdk-authoring-consumer-actions-DK9-B-wg.js +1 -0
- package/dist/assets/volter-sdk-authoring-design-time-mount-registry-BQnWcBVe.js +1 -0
- package/dist/assets/volter-sdk-authoring-design-time-roots-BKSmkD7_.js +1 -0
- package/dist/assets/volter-sdk-authoring-layered-pick-C-YvuxEG.js +1 -0
- package/dist/assets/volter-sdk-authoring-no-authoring-adapter-Cv9DD6G0.js +1 -0
- package/dist/assets/volter-sdk-authoring-panel-authoring-BLOrFs8L.js +1 -0
- package/dist/assets/volter-sdk-authoring-react-design-canvas-style-Dr9i31o5.js +1 -0
- package/dist/assets/volter-sdk-authoring-react-story-board-BlCQQM-8.js +1 -0
- package/dist/assets/volter-sdk-authoring-seam-evidence-CjetY_ZG.js +1 -0
- package/dist/assets/volter-sdk-authoring-selection-scope-BxmbC71H.js +1 -0
- package/dist/assets/volter-sdk-authoring-shell-document-ops-DDb8oGx9.js +1 -0
- package/dist/assets/volter-sdk-authoring-stage-root-B50LLhnJ.js +1 -0
- package/dist/assets/volter-sdk-authoring-story-board-chrome-fit-BVV9fbcw.js +1 -0
- package/dist/assets/volter-sdk-authoring-viewport-tool-context-cQafPSkT.js +1 -0
- package/dist/assets/volter-sdk-authoring-viewport-tool-owner-BppqL4f_.js +1 -0
- package/dist/assets/volter-sdk-authoring-world-session-state-BlpdiKod.js +1 -0
- package/dist/assets/volter-sdk-bitmap-label-BbtGPWgP.js +1 -0
- package/dist/assets/volter-sdk-breakpoint-state-DCFuSvgm.js +1 -0
- package/dist/assets/volter-sdk-bytes-codec-CrNeVT4e.js +1 -0
- package/dist/assets/volter-sdk-cancellation-reason-ByOH3mlF.js +1 -0
- package/dist/assets/volter-sdk-canvas-frames-BU8Rqr4J.js +1 -0
- package/dist/assets/volter-sdk-capture-size-D4cNT2XC.js +1 -0
- package/dist/assets/volter-sdk-chrome-registry-qHUiDauw.js +1 -0
- package/dist/assets/volter-sdk-command-result-text-2wzEhQ5t.js +1 -0
- package/dist/assets/volter-sdk-commands-C4RgHEOa.js +1 -0
- package/dist/assets/volter-sdk-component-board-registry-6gFZBkTP.js +1 -0
- package/dist/assets/volter-sdk-components-AssetEditorShell-CQVLedvW.js +1 -0
- package/dist/assets/volter-sdk-components-InspectorCanvasPreview-CN5ROhNT.js +1 -0
- package/dist/assets/volter-sdk-components-SurfaceStateOverlay-Cc9Ov1Ol.js +1 -0
- package/dist/assets/volter-sdk-components-Toolbar-ZoV9Yq_A.js +1 -0
- package/dist/assets/volter-sdk-components-TransientHint-BML2V3uu.js +1 -0
- package/dist/assets/volter-sdk-components-inspector-preview-section-BhDjhUyz.js +1 -0
- package/dist/assets/volter-sdk-components-use-after-paint-BVSO4qjV.js +1 -0
- package/dist/assets/volter-sdk-components-workspace-history-CThvGfsY.js +1 -0
- package/dist/assets/volter-sdk-content-entry-source-registry-CJLVq3tC.js +1 -0
- package/dist/assets/volter-sdk-contribution-surfaces-CeEDmriM.js +1 -0
- package/dist/assets/volter-sdk-contributions-x6j41XZp.js +1 -0
- package/dist/assets/volter-sdk-coverage-design-time-surfaces-D-tNGazo.js +1 -0
- package/dist/assets/volter-sdk-creation-site-registry-64gyrZPD.js +1 -0
- package/dist/assets/volter-sdk-css-numeric-style-CXeWqAoG.js +1 -0
- package/dist/assets/volter-sdk-declared-tools-BAzHxyUW.js +1 -0
- package/dist/assets/volter-sdk-document-areas-4DXjy0el.js +1 -0
- package/dist/assets/volter-sdk-document-layer-B4VYMPZ9.js +1 -0
- package/dist/assets/volter-sdk-document-open-registry-BLDMaEoN.js +1 -0
- package/dist/assets/volter-sdk-document-play-extension-Dv3fyS6K.js +1 -0
- package/dist/assets/volter-sdk-document-probe-drBhAyza.js +1 -0
- package/dist/assets/volter-sdk-document-stage-sessions-CtI9anAf.js +1 -0
- package/dist/assets/volter-sdk-document-viewports-BO0N7VyN.js +1 -0
- package/dist/assets/volter-sdk-editor-commands-BJ9Otxzu.js +1 -0
- package/dist/assets/volter-sdk-editor-console-BaGgfWmH.js +1 -0
- package/dist/assets/volter-sdk-editor-document-probe-D0ZhaXHx.js +1 -0
- package/dist/assets/volter-sdk-editor-mode-B07FDozS.js +1 -0
- package/dist/assets/volter-sdk-editor-runtime-D00Du7hG.js +1 -0
- package/dist/assets/volter-sdk-editor-server-response-C6kOPAsW.js +1 -0
- package/dist/assets/volter-sdk-editor-session-attribution-CggpIFb4.js +1 -0
- package/dist/assets/volter-sdk-editor-view-DEMsxlaT.js +1 -0
- package/dist/assets/volter-sdk-environment-images-OQtFG1kA.js +1 -0
- package/dist/assets/volter-sdk-extension-script-DanTHcyo.js +1 -0
- package/dist/assets/volter-sdk-eyedropper-session-BfVXtjzc.js +1 -0
- package/dist/assets/volter-sdk-files-file-provider-CXL6oCMd.js +1 -0
- package/dist/assets/volter-sdk-files-project-files-SBAE37py.js +1 -0
- package/dist/assets/volter-sdk-framed-document-capture-7TnE8pn1.js +1 -0
- package/dist/assets/volter-sdk-framed-document-driver-C0K3-SRt.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-component-marks-BmJEMvvO.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-kind-icon-CrwdpecY.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-node-rows-FcK7_ULi.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-projection-CKzUOZUa.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-row-media-Czg40Ddi.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-row-model-BGzmcywF.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-rows-VAI0psTR.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-walk-CaVqG7v2.js +1 -0
- package/dist/assets/volter-sdk-history-history-delegate-DH_xBvdh.js +1 -0
- package/dist/assets/volter-sdk-history-history-service-D0n0Gl5Z.js +1 -0
- package/dist/assets/volter-sdk-history-persistence-coordinator-CcywAFdm.js +1 -0
- package/dist/assets/volter-sdk-history-resource-registry-DMTlnwGv.js +1 -0
- package/dist/assets/volter-sdk-history-snapshot-store-BVh1DtBp.js +1 -0
- package/dist/assets/volter-sdk-history-source-history-backend-ulJ-65tX.js +1 -0
- package/dist/assets/volter-sdk-hmr-registration-group-DvMQVKyO.js +1 -0
- package/dist/assets/volter-sdk-hmr-stable-react-context-BMVr5YVk.js +1 -0
- package/dist/assets/volter-sdk-host-D765Py2w.js +1 -0
- package/dist/assets/volter-sdk-hotkeys-TesTKdAZ.js +1 -0
- package/dist/assets/volter-sdk-index-BABXozHr.js +1 -0
- package/dist/assets/volter-sdk-inference-diagnostics-CsDbQ0M5.js +1 -0
- package/dist/assets/volter-sdk-inspection-document-subject-BMRD77Va.js +1 -0
- package/dist/assets/volter-sdk-inspection-group-icons-Wpz-YhkE.js +1 -0
- package/dist/assets/volter-sdk-inspection-model-BVOyStdc.js +1 -0
- package/dist/assets/volter-sdk-inspection-node-media-B8AL8_3F.js +1 -0
- package/dist/assets/volter-sdk-inspection-null-subject-d5bQZCbS.js +1 -0
- package/dist/assets/volter-sdk-inspector-property-grouping-BqrZkwo4.js +1 -0
- package/dist/assets/volter-sdk-inspector-section-registry-C6U15zvC.js +1 -0
- package/dist/assets/volter-sdk-js-heap-CcOnY0kf.js +1 -0
- package/dist/assets/volter-sdk-keymap-presets-CSM-jVcZ.js +1 -0
- package/dist/assets/volter-sdk-layout-arrangements-DHA3uifx.js +1 -0
- package/dist/assets/volter-sdk-layouts-4v9ECCn9.js +1 -0
- package/dist/assets/volter-sdk-light-explorer-model-CPuZjpiR.js +1 -0
- package/dist/assets/volter-sdk-live-seam-evidence-B_RyDaOp.js +1 -0
- package/dist/assets/volter-sdk-live-session-registry-C6gHroaH.js +1 -0
- package/dist/assets/volter-sdk-manifest-project-CVVUDDuL.js +1 -0
- package/dist/assets/volter-sdk-mount-css-scope-DaJoEo3v.js +1 -0
- package/dist/assets/volter-sdk-mount-failure-report-Cm92oiGJ.js +1 -0
- package/dist/assets/volter-sdk-native-selection-style-Bp4IBnA4.js +1 -0
- package/dist/assets/volter-sdk-photograph-notice-C6_gZGpW.js +1 -0
- package/dist/assets/volter-sdk-play-camera-flight-SwlYhOxW.js +1 -0
- package/dist/assets/volter-sdk-product-command-G8kKVJ-i.js +1 -0
- package/dist/assets/volter-sdk-progress-4GGmPvZn.js +1 -0
- package/dist/assets/volter-sdk-project-module-changes-DIrDIHeD.js +1 -0
- package/dist/assets/volter-sdk-project-module-url-BuAUWpus.js +1 -0
- package/dist/assets/volter-sdk-project-output-roots-BON7FOwQ.js +1 -0
- package/dist/assets/volter-sdk-project-tab-census-CO06UOh-.js +1 -0
- package/dist/assets/volter-sdk-renderer-resource-counts-2kLiD8_S.js +1 -0
- package/dist/assets/volter-sdk-scoped-project-css-DA63CYkM.js +1 -0
- package/dist/assets/volter-sdk-selection-CSUq7EiY.js +1 -0
- package/dist/assets/volter-sdk-served-url-B_MypeId.js +1 -0
- package/dist/assets/volter-sdk-settings-settings-provider-CJuWxTB5.js +1 -0
- package/dist/assets/volter-sdk-settings-store-CEFKDj0h.js +1 -0
- package/dist/assets/volter-sdk-shell-store-Cl4sX9p4.js +1 -0
- package/dist/assets/volter-sdk-shell-store-door-DGjybg0J.js +1 -0
- package/dist/assets/volter-sdk-source-conflict-CV8Gk053.js +1 -0
- package/dist/assets/volter-sdk-stage-context-Cb0SaYhi.js +1 -0
- package/dist/assets/volter-sdk-stage-invalidation-VlBciYA0.js +1 -0
- package/dist/assets/volter-sdk-stage-store-registry-BpIy_QKq.js +1 -0
- package/dist/assets/volter-sdk-startup-failure-C_8H4xuP.js +1 -0
- package/dist/assets/volter-sdk-stories-StoryPreviewMount-BUX42gIR.js +1 -0
- package/dist/assets/volter-sdk-stories-compose-project-stories-CkSd4Si5.js +1 -0
- package/dist/assets/volter-sdk-stories-scope-Dndn7MD8.js +1 -0
- package/dist/assets/volter-sdk-stories-story-declared-medium-Byi4XWeJ.js +1 -0
- package/dist/assets/volter-sdk-stories-story-dom-runtime-BS1VPvJ6.js +1 -0
- package/dist/assets/volter-sdk-stories-story-grouping-CpNh4cUf.js +1 -0
- package/dist/assets/volter-sdk-story-document-openers-Ba5jQqay.js +1 -0
- package/dist/assets/volter-sdk-surface-state-BhQ45ars.js +1 -0
- package/dist/assets/volter-sdk-tab-census-D0r0s37y.js +1 -0
- package/dist/assets/volter-sdk-tool-contribution-convention-JCXL6f2w.js +1 -0
- package/dist/assets/volter-sdk-transform-mode-request-Cwk_Kyty.js +1 -0
- package/dist/assets/volter-sdk-transient-hint-BOfFzAV8.js +1 -0
- package/dist/assets/volter-sdk-types-CkT8l5N_.js +1 -0
- package/dist/assets/volter-sdk-ui-source-file-region-resolver-Cfza3eEl.js +1 -0
- package/dist/assets/volter-sdk-ui-source-inspect-CEjmAN75.js +1 -0
- package/dist/assets/volter-sdk-ui-source-source-write-backend-0njgRdI6.js +1 -0
- package/dist/assets/volter-sdk-ui-source-tier-source-write-backend-CpsxorYU.js +1 -0
- package/dist/assets/volter-sdk-viewport-activation-timings-B3hRTu3A.js +1 -0
- package/dist/assets/volter-sdk-viewport-editor-controls-DDBd-VqO.js +1 -0
- package/dist/assets/volter-sdk-viewport-presentation-DRhiAH1h.js +1 -0
- package/dist/assets/volter-sdk-volter-contributions-nlGXjgJZ.js +1 -0
- package/dist/assets/volter-sdk-wait-until-CMvYQmO8.js +1 -0
- package/dist/assets/volter-sdk-widgets-design-system-BJOyO8sO.js +1 -0
- package/dist/assets/volter-sdk-widgets-editor-appearance-eVtkxsIm.js +1 -0
- package/dist/assets/volter-sdk-widgets-editor-material-BoQP_5SK.js +1 -0
- package/dist/assets/volter-sdk-widgets-icon-set-registry-CP0D74kc.js +1 -0
- package/dist/assets/volter-sdk-widgets-index-De34FpYu.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-AlignmentGrid-_GjMjIGb.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-AssetSlotPicker-B7vN7BEd.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-BorderEditor-E2J8cpyT.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ColorPicker-D6TERGKs.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-CurveEditor-CXR8n-CA.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-FilterEditor-CDvfWY4Q.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-FontPicker-BgpW8FW8.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-GradientEditor-DOOBkXjY.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ScrubbableInput-1NXWR_gB.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ShadowEditor-Cd2-HwFn.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-color-utils-C4HuSjFu.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-curve-utils-DUU2CCtc.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-index-D5kwrOUQ.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-shared-CkFN2SUn.js +1 -0
- package/dist/assets/volter-sdk-widgets-interactive-edit-scope-DynpKMMZ.js +1 -0
- package/dist/assets/volter-sdk-widgets-palette-colors-DhL1I42R.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Dialog-EUtcZi0Y.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Fields-Bl_eaBej.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-List--NE_1N5-.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-StateSurface-BHXpv7qi.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Surfaces-BdKa5HGV.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Tabs-sFV7f1UP.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Toolbar-CIr5Cs49.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Tree-C2YHfddf.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-AnchoredMenu-DCclspnW.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Button-B0YxR4ea.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-ColorInput-B1_SLTuc.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-DraftTextInput-CpHzPdt8.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-EditorIcon-Dw4knhya.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-FormControls-BAbRanmE.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-HoverPreview-Cj7jKNd4.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-JsonInput-C0DCI5bE.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Layout-gT4Z6mtt.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Menu-9EESAp9m.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-NumberInput-Dk-5zqJ8.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Panel-BQWJF-Pb.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-SectionHeader-DXvmafCK.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Text-yBrdWK2w.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-ThemeRootPortal-CRhefpUL.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Tooltip-D5Kcb-ZC.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Vec3Input-DiG6PEIe.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-clamp-to-viewport-DhnSxXVK.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-editor-icons-e65mgyAk.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-panel-header-styles-BVL0mN8g.js +1 -0
- package/dist/assets/volter-sdk-widgets-theme-C-_RU9Ov.js +1 -0
- package/dist/assets/volter-sdk-widgets-z-index-CrJJXeKL.js +1 -0
- package/dist/assets/volter-sdk-worker-call-metrics-BTfmngck.js +1 -0
- package/dist/assets/volter-sdk-workspace-core-utilities-DtHGK9PF.js +1 -0
- package/dist/assets/volter-sdk-workspace-document-ids-COULA7c6.js +1 -0
- package/dist/assets/volter-sdk-workspace-document-registry-6m5csVP7.js +1 -0
- package/dist/assets/volter-sdk-workspace-document-restore-M8ifJMou.js +1 -0
- package/dist/assets/volter-sdk-workspace-host-commands-8Qzej--P.js +1 -0
- package/dist/assets/volter-sdk-workspace-static-panels-Ckk7qUuS.js +1 -0
- package/dist/assets/volter-sdk-workspace-status-registry-BdU0dZAt.js +1 -0
- package/dist/assets/volter-sdk-workspace-utility-registry-BHxymD2l.js +1 -0
- package/dist/assets/volter-sdk-world-canvas-viewport-state-CHO8s9gE.js +1 -0
- package/dist/assets/volter-sdk-world-pan-state-C-9xgzAh.js +1 -0
- package/dist/assets/volter-sdk-write-pipe-CJHg7J4i.js +1 -0
- package/dist/assets/volter-shared-fontawesome-BEv9WEZj.js +1 -0
- package/dist/assets/volter-shared-jsx-dev-runtime-domcKDU3.js +1 -0
- package/dist/assets/volter-shared-jsx-runtime-Cu7pVW-1.js +1 -0
- package/dist/assets/volter-shared-react-BLHga76C.js +1 -0
- package/dist/assets/volter-shared-react-dom-client-vi6WsWu2.js +1 -0
- package/dist/assets/volter-shared-react-dom-kzJVGsQd.js +1 -0
- package/dist/assets/volter-shared-three-BWbOWtM5.js +4220 -0
- package/dist/assets/volter-shared-three-core-DEsIwtOu.js +9 -0
- package/dist/volter-shared-modules.json +227 -0
- package/dist/volter-shared-react.json +6 -6
- package/dist/volter-shared-three.json +2 -1
- package/dist-node/cli.js +2962 -6245
- package/dist-node/create.js +350 -278
- package/package.json +51 -31
- package/src/index.ts +4 -6
- package/src/product-id.d.ts +4 -0
- package/src/styles/maya.style.ts +14 -0
- package/src/styles/substance.style.ts +15 -0
- package/starter/AGENTS.md +216 -156
- package/starter/cube.py +3 -9
- package/starter/film/boards/title.png +0 -0
- package/starter/film/cut.json +12 -0
- package/starter/film/film.json +7 -0
- package/starter/film/music/.gitkeep +0 -0
- package/starter/film/music.json +4 -0
- package/starter/film/script.fountain +16 -0
- package/starter/film/shots.json +26 -0
- package/starter/film/sounds/whoosh.wav +0 -0
- package/starter/film/src/graphics/title.css +33 -0
- package/starter/film/src/graphics/title.stories.tsx +6 -0
- package/starter/film/src/graphics/title.tsx +14 -0
- package/starter/film/src/models/opening.blend +0 -0
- package/starter/film/src/models/opening.py +87 -0
- package/starter/film/story.md +14 -0
- package/starter/film/takes/.gitkeep +0 -0
- package/starter/film/takes.json +4 -0
- package/starter/film-skills/film-cut/SKILL.md +31 -0
- package/starter/film-skills/film-shots/SKILL.md +32 -0
- package/starter/film-skills/film-story/SKILL.md +19 -0
- package/starter/game/levels/MainLevel.tsx +24 -0
- package/starter/game/prefabs/ground/Ground.tsx +24 -0
- package/starter/game/prefabs/ground/ground.blend +0 -0
- package/starter/game/prefabs/ground/ground.glb +0 -0
- package/starter/game/prefabs/ground/ground.py +106 -0
- package/starter/package.json +3 -2
- package/starter/sounds/mix.json +10 -0
- package/dist/assets/BVHLoader-V9f-EnYd.js +0 -1
- package/dist/assets/ColladaLoader-Cp-E7iiV.js +0 -3
- package/dist/assets/EntityModelDocument-DxdGehCz.js +0 -1
- package/dist/assets/EnvironmentAssetDocument-DSTdQdSt.js +0 -1
- package/dist/assets/FBXLoader-CpZqH4xx.js +0 -1
- package/dist/assets/InspectorObjectPreview-De6zT2B7.js +0 -1
- package/dist/assets/LiveModuleDocument-Do5YRpzB.js +0 -2
- package/dist/assets/LutAssetDocument-BjZgLVjR.js +0 -1
- package/dist/assets/MTLLoader-JK_iLZsm.js +0 -2
- package/dist/assets/ModelAssetDocument-Bb5UYcrj.js +0 -1
- package/dist/assets/NonThreeAuthoringBootstrap-CVri610U.js +0 -1
- package/dist/assets/OBJLoader-eGO6iVw8.js +0 -5
- package/dist/assets/Object3DDocumentToolbar-C7HT5nHi.js +0 -1
- package/dist/assets/Object3DPreview-CaOEIIdC.js +0 -2
- package/dist/assets/OrbitControls-DrHRrSFA.js +0 -1
- package/dist/assets/PLYLoader-BCSN1tYw.js +0 -2
- package/dist/assets/QuarksAssetDocument-DzS5h2Bc.js +0 -2
- package/dist/assets/RectAreaLightUniformsLib-HqHjURQQ.js +0 -1
- package/dist/assets/STLLoader-vhCvZeOF.js +0 -1
- package/dist/assets/ShaderAssetDocument-DYXX7aw5.js +0 -1
- package/dist/assets/StageHost-DVnv4TcF.js +0 -1179
- package/dist/assets/TDSLoader-DbUHSEO9.js +0 -1
- package/dist/assets/ToolObject3DPreview-Dad57oap.js +0 -1
- package/dist/assets/ViewportShadingMenu-Bl8IlWGh.js +0 -1
- package/dist/assets/animation-mixers.service-qJ4SNabd.js +0 -1
- package/dist/assets/animation-timeline.utility-wNtZO_cS.js +0 -1
- package/dist/assets/anthropic-DwpKRVGM.svg +0 -1
- package/dist/assets/asset-preview-OYr2sUbO.js +0 -4
- package/dist/assets/blender-display-shaders-BpnqnkG8.lut +0 -0
- package/dist/assets/blender-emscripten-engine-CTeOMKcG.js +0 -2
- package/dist/assets/blender-motion-worker-CtT2cV3V.js +0 -1
- package/dist/assets/blender-node-editor.document-pEhp9MZH.js +0 -1
- package/dist/assets/blender-properties-model-B7O1AR0g.js +0 -1
- package/dist/assets/blender-properties-tab-CBdCQseg.js +0 -3
- package/dist/assets/blender-runtime-host-swgDAdoy.js +0 -7221
- package/dist/assets/blender-runtime.document-BbtLLRrN.js +0 -13
- package/dist/assets/blender-screenshot.menu-CD1Bg0Z-.js +0 -1
- package/dist/assets/blender-timeline.document-DT_mWXnn.js +0 -1
- package/dist/assets/blender-uv-editor.document-9j_SUkf7.js +0 -1
- package/dist/assets/blender-version.status-Z13Xgrj-.js +0 -1
- package/dist/assets/blender-wali-engine-kfyCxO_U.js +0 -2
- package/dist/assets/blender.command-zp1Oe3pY.js +0 -1
- package/dist/assets/blender.environment-CG-pC7sk.js +0 -1
- package/dist/assets/blender.keymap-BmOBRY7p.js +0 -1
- package/dist/assets/blender.status-MRiv-9Ju.js +0 -1
- package/dist/assets/blender.style--aBP5V1k.js +0 -1
- package/dist/assets/city-EkhAOo5s.exr +0 -0
- package/dist/assets/courtyard-DqlebbpC.exr +0 -0
- package/dist/assets/forest-P_CQY3b_.exr +0 -0
- package/dist/assets/icon-BkiLD9ed.png +0 -0
- package/dist/assets/index-C8BwtQGN.js +0 -952
- package/dist/assets/interior-Bo_lba15.exr +0 -0
- package/dist/assets/linear-resolve-Cuka7Ypb.js +0 -377
- package/dist/assets/live-mixers-B-bwLZ7c.js +0 -1
- package/dist/assets/model-inspection-DVE8f3Dj.js +0 -1
- package/dist/assets/model.layout-BpZE1W9V.js +0 -1
- package/dist/assets/models.finder-5z7xbsOu.js +0 -1
- package/dist/assets/night-CvV4Gybt.exr +0 -0
- package/dist/assets/object3d-document-session-registry-DDpmVmir.js +0 -2
- package/dist/assets/openai-DHNKzFtc.svg +0 -1
- package/dist/assets/output-pass-j4dAGrPY.js +0 -85
- package/dist/assets/play-live-BBkOuWQn.js +0 -1
- package/dist/assets/product-CUU4-nDZ.js +0 -14
- package/dist/assets/product-DPOIZgKM.css +0 -1
- package/dist/assets/properties-bone-constraints.inspector-D8CtPu9c.js +0 -1
- package/dist/assets/properties-bone.inspector-j9aNQrP9.js +0 -1
- package/dist/assets/properties-collection.inspector-CaMveBur.js +0 -1
- package/dist/assets/properties-constraints.inspector-DB9bBgqn.js +0 -1
- package/dist/assets/properties-data.inspector-C7dh_XTe.js +0 -1
- package/dist/assets/properties-material.inspector-DWC5NJkW.js +0 -1
- package/dist/assets/properties-modifiers.inspector-CBUxUSB0.js +0 -1
- package/dist/assets/properties-object.inspector-wvO8nuGD.js +0 -1
- package/dist/assets/properties-output.inspector-CFyAZn9F.js +0 -1
- package/dist/assets/properties-particles.inspector-zEaTW3U7.js +0 -1
- package/dist/assets/properties-physics.inspector-CO-4UZbX.js +0 -1
- package/dist/assets/properties-render.inspector-DoJ1BMKP.js +0 -1
- package/dist/assets/properties-scene.inspector-BOhaiC0_.js +0 -1
- package/dist/assets/properties-texture.inspector-1JoYUWiR.js +0 -1
- package/dist/assets/properties-view-layer.inspector-DuRkFWtq.js +0 -1
- package/dist/assets/properties-world.inspector-Csfv-x0A.js +0 -1
- package/dist/assets/react-18-Dh4gvPqw.js +0 -1
- package/dist/assets/regions-DWeEBnE2.js +0 -1
- package/dist/assets/sculpt.layout-D-K5cLw6.js +0 -1
- package/dist/assets/session-CvHLFvpx.js +0 -6056
- package/dist/assets/shading.layout-CZZHKBer.js +0 -1
- package/dist/assets/sky-precompute-worker-CPGW9t_C.js +0 -1
- package/dist/assets/spark.module-CTTm62aa.js +0 -12120
- package/dist/assets/stage-keyboard-BvTth28t.js +0 -1
- package/dist/assets/stage-overlay-set-Dt6IH1xC.js +0 -1
- package/dist/assets/stage-presence-markers-DszBO9B1.js +0 -1
- package/dist/assets/stage-transform-tools-D6H_SBLV.js +0 -1
- package/dist/assets/standard-viewport-dressing-BSYojdsQ.js +0 -24
- package/dist/assets/studio-CysTBGIb.exr +0 -0
- package/dist/assets/sunrise-Dj0psFrf.exr +0 -0
- package/dist/assets/sunset-Bw3x2Bot.exr +0 -0
- package/dist/assets/texture.layout-DASpHVht.js +0 -1
- package/dist/assets/three-integration.service-DvOyomjh.js +0 -2
- package/dist/assets/three.module-CtVjCPcj.js +0 -3840
- package/dist/assets/uv-editing.layout-A8RA-cbM.js +0 -1
- package/dist/assets/volter-sdk-account-fYMnFHfe.js +0 -1
- package/dist/assets/volter-sdk-client-JmBOIwGe.js +0 -1
- package/dist/assets/volter-sdk-contributions-l9HrPjwW.js +0 -1
- package/dist/assets/volter-sdk-css-numeric-style-ud28AcW3.js +0 -1
- package/dist/assets/volter-sdk-document-probe-C4RhslOI.js +0 -1
- package/dist/assets/volter-sdk-editor-view-B_mScT1w.js +0 -1
- package/dist/assets/volter-sdk-host-B9QOINsX.js +0 -1
- package/dist/assets/volter-sdk-http-transport.browser-6a_cUtge.js +0 -1
- package/dist/assets/volter-sdk-index-DDdgpWqc.js +0 -1
- package/dist/assets/volter-sdk-kit-CapabilityCoverageSection-CRc93EXv.js +0 -1
- package/dist/assets/volter-sdk-kit-account-client-ByjTbat7.js +0 -1
- package/dist/assets/volter-sdk-kit-action-registry-J5l20B9X.js +0 -1
- package/dist/assets/volter-sdk-kit-active-product-BTHzjkrh.js +0 -1
- package/dist/assets/volter-sdk-kit-active-project-CgXmYhKx.js +0 -1
- package/dist/assets/volter-sdk-kit-adapter-editor-config-CcSGBUF1.js +0 -1
- package/dist/assets/volter-sdk-kit-adapter-module-CqkP49hA.js +0 -1
- package/dist/assets/volter-sdk-kit-adapter-observation-MWNd8Bmj.js +0 -1
- package/dist/assets/volter-sdk-kit-animation-animation-clock-C5QhnLuY.js +0 -1
- package/dist/assets/volter-sdk-kit-animation-stage-transport-DFbbJ80P.js +0 -1
- package/dist/assets/volter-sdk-kit-api-assets-Dtg4_1jX.js +0 -1
- package/dist/assets/volter-sdk-kit-api-base-De8oXkY8.js +0 -1
- package/dist/assets/volter-sdk-kit-api-build-Cgmw35Ng.js +0 -1
- package/dist/assets/volter-sdk-kit-api-logs-B1mQlcPQ.js +0 -1
- package/dist/assets/volter-sdk-kit-api-project-identity-DEZz1U5_.js +0 -1
- package/dist/assets/volter-sdk-kit-api-project-open-DuXZ6vyn.js +0 -1
- package/dist/assets/volter-sdk-kit-api-project-source-DMnPoTP2.js +0 -1
- package/dist/assets/volter-sdk-kit-api-project-state-6Lu0Vxdr.js +0 -1
- package/dist/assets/volter-sdk-kit-api-relay-BuCkenvE.js +0 -1
- package/dist/assets/volter-sdk-kit-api-settings-CkFO_pMP.js +0 -1
- package/dist/assets/volter-sdk-kit-api-themes-D5J6TiAR.js +0 -1
- package/dist/assets/volter-sdk-kit-api-worktrees-de1U7-9B.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-capabilities-IBJRDoU_.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-compare-core-qeWQI0-1.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-editor-context-JZ2T8xhF.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-events-wfq-jH9_.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-inspector-actions-NlF3CeMC.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-selection-BUXGqut1.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-selection-viewer-registry-DNj4RggW.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-thumbnails-CPp1sS_w.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-viewers-PKilU3Lm.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-import-jobs-DHDfKVAJ.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-ledger-Ch0TDXil.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-ledger-backend-Cb0-daSo.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-materialization-report-Bznr7T6d.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-pack-manifest-BriZZqYC.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-audio-preview-player-5K3HN4kg.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-audio-waveform-F65PsmIZ.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-cloud-asset-client-DzxVbaeb.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-hosted-asset-materialization-B2Oxd31D.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-image-view-scale-BmPO24SY.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-ledger-write-lock-BPRq-xQf.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-pixi-spritesheet-CM64IwuA.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-preview-resource-lifetime-BIKxorKS.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-project-asset-commands-7CNTmzBZ.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-project-content-C3EJl866.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-thumbnail-system-CQrbYiAp.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-active-adapter-BC9Cf4yx.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-active-systems-GZm33tOS.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-adapter-key-C4-d6xt1.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-authoring-asset-url-CEEw_XEg.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-bootstrap-state-BJsS0bnj.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-boundary-authoring-adapter-1NA63Idp.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-canvas-scene-guides-BlbGyg38.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-composite-authoring-adapter-D0FSf6DM.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-consumer-actions-J7MnHWK3.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-design-time-layers-CnLS2erF.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-design-time-mount-registry-BrmHkPuP.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-edit-mode-authoring-HQAxbCiB.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-empty-project-authoring-CdLSRvO0.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-instance-source-menu-EWM45v6y.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-layered-pick-BX3K3GR7.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-mounted-root-subjects-BGatqFLR.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-no-authoring-adapter-CerY6qmy.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-object3d-document-persistence-DxZ-V-ys.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-panel-authoring-Bbv7lJc5.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-project-authoring-session-C5rP-I6e.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-provenance-BNVk0DFH.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-react-canvas-navigation-BqUskgSb.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-react-design-canvas-style-DB8S6Vfi.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-react-story-board-M-VqCWKu.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-seam-evidence-Qbbz8M6t.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-selection-scope-CkblMrR8.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-shell-document-ops-B9Y9p91j.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-story-board-chrome-fit-7umaPaVS.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-three-root-M5Gj55-Z.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-viewport-tool-context-CH5NA-YI.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-viewport-tool-owner-CzTEMmzx.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-world-session-state-BjKbimsg.js +0 -1
- package/dist/assets/volter-sdk-kit-availability-tick-C7I6Zrut.js +0 -1
- package/dist/assets/volter-sdk-kit-bitmap-label-DPmffd8g.js +0 -1
- package/dist/assets/volter-sdk-kit-boot-routing-CaKypcBx.js +0 -1
- package/dist/assets/volter-sdk-kit-breakpoint-state-5m0qTYvY.js +0 -1
- package/dist/assets/volter-sdk-kit-build-identity-HQ0VWGG8.js +0 -1
- package/dist/assets/volter-sdk-kit-bytes-codec-BJDqylNg.js +0 -1
- package/dist/assets/volter-sdk-kit-cancellation-reason-B0z-IzQ9.js +0 -1
- package/dist/assets/volter-sdk-kit-canvas-frames-BtkS3lNe.js +0 -1
- package/dist/assets/volter-sdk-kit-capture-camera-pose-CUejcTcV.js +0 -1
- package/dist/assets/volter-sdk-kit-capture-size-Uyb3uqXA.js +0 -1
- package/dist/assets/volter-sdk-kit-chrome-registry-cc3AZlnV.js +0 -1
- package/dist/assets/volter-sdk-kit-chrome-slot-registry-C4g-na11.js +0 -1
- package/dist/assets/volter-sdk-kit-collaboration-client-Cd6918QC.js +0 -1
- package/dist/assets/volter-sdk-kit-collaboration-presence-qXC7JfS2.js +0 -1
- package/dist/assets/volter-sdk-kit-command-dispatch-D07Pn7pe.js +0 -1
- package/dist/assets/volter-sdk-kit-command-listener-Bm2sgP0i.js +0 -1
- package/dist/assets/volter-sdk-kit-command-registry-CJoVRu6V.js +0 -1
- package/dist/assets/volter-sdk-kit-component-board-registry-D7xm8cFr.js +0 -1
- package/dist/assets/volter-sdk-kit-component-states-registry-DtippeT3.js +0 -1
- package/dist/assets/volter-sdk-kit-components-AlignToolbar-BporX2iz.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ApplicationMenus-DfmKRYtb.js +0 -1
- package/dist/assets/volter-sdk-kit-components-AssetEditorShell-B-_vx-Jb.js +0 -1
- package/dist/assets/volter-sdk-kit-components-AssetInspectorToolSection-CyEcoLKv.js +0 -1
- package/dist/assets/volter-sdk-kit-components-BoardRulers-CjoDr2Ak.js +0 -1
- package/dist/assets/volter-sdk-kit-components-CanvasAddNodeDialogs-Bz4W0Y2g.js +0 -1
- package/dist/assets/volter-sdk-kit-components-CanvasSceneViewport-Cyd5bYha.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ChromeSlot-q_wsahlZ.js +0 -1
- package/dist/assets/volter-sdk-kit-components-CodeView-COOHbFef.js +0 -1
- package/dist/assets/volter-sdk-kit-components-CompactInspectorShell-F5yS9e4v.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ConsolePanel-Dnnq15qj.js +0 -1
- package/dist/assets/volter-sdk-kit-components-GameplaySessionTimeline-CFCva8sQ.js +0 -1
- package/dist/assets/volter-sdk-kit-components-InspectionProjection-Cj0eqFPF.js +0 -1
- package/dist/assets/volter-sdk-kit-components-Inspector-DhnEEQ_5.js +0 -1
- package/dist/assets/volter-sdk-kit-components-InspectorCanvasPreview-ljsWq41X.js +0 -1
- package/dist/assets/volter-sdk-kit-components-InspectorFieldsSection-pUp0DKhG.js +0 -1
- package/dist/assets/volter-sdk-kit-components-InspectorStoriesSection-BJKmp0B3.js +0 -1
- package/dist/assets/volter-sdk-kit-components-InspectorToolSection-DBDxp3Ir.js +0 -1
- package/dist/assets/volter-sdk-kit-components-InspectorTransformSection-eGVZo2ph.js +0 -1
- package/dist/assets/volter-sdk-kit-components-LightExplorerPanel-jKqvAsdL.js +0 -1
- package/dist/assets/volter-sdk-kit-components-MediaProperties-DEn9gV9T.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ProjectHeader-CtsMXibh.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ReactCanvasControls-Bdu_gdRF.js +0 -1
- package/dist/assets/volter-sdk-kit-components-RootSelectionOverlay-8PYXBIYy.js +0 -1
- package/dist/assets/volter-sdk-kit-components-RootTextEditor-DFkpwNlX.js +0 -1
- package/dist/assets/volter-sdk-kit-components-SaveStatus-BP1Q1tfu.js +0 -1
- package/dist/assets/volter-sdk-kit-components-SurfaceCrashBoundary-C_FxlEvS.js +0 -1
- package/dist/assets/volter-sdk-kit-components-SurfaceStateOverlay-C_O4-zsY.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ToolContributionSurfaces-DAoNJ2KS.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ToolHost-z-CSuvra.js +0 -1
- package/dist/assets/volter-sdk-kit-components-Toolbar-CUsODOE2.js +0 -1
- package/dist/assets/volter-sdk-kit-components-TransientHint-BsejPKYD.js +0 -1
- package/dist/assets/volter-sdk-kit-components-VersionControlSection-ldwCuasW.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ViewportOverlaysMenu-DjfcwDPM.js +0 -1
- package/dist/assets/volter-sdk-kit-components-VolterLogo-wmAjAypV.js +0 -1
- package/dist/assets/volter-sdk-kit-components-WorktreeSwitcher-JN-eaFqo.js +0 -1
- package/dist/assets/volter-sdk-kit-components-account-documents-BcgknOsj.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-documents-B2W4TjZO.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-editor-persistence-NTgC5Ngq.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-selection-section-CLS4gJUE.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-thumbnails-CaYPgAtN.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-AudioViewer-DbLUYMKF.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-GenericJsonViewer-B3ieuK68.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-ImageViewer-DicJ06Cl.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-JsonAssetDocument-DRBY_95W.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-OnlineAssetDetail-BR14tR5R.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-SourceAssetViewer-BI9bFeTE.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-SpritesheetSpriteView-d7Wqtjxk.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-VideoViewer-Ykl90edA.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-shader-source-BmwRhUts.js +0 -1
- package/dist/assets/volter-sdk-kit-components-board-guides-Dw7AT-AY.js +0 -1
- package/dist/assets/volter-sdk-kit-components-canvas-scene-hotkeys-s3AK_b58.js +0 -1
- package/dist/assets/volter-sdk-kit-components-canvas-temporary-pivot-DKdXJcd9.js +0 -1
- package/dist/assets/volter-sdk-kit-components-core-utilities-C5ZKnxiW.js +0 -1
- package/dist/assets/volter-sdk-kit-components-inspector-preview-section-BHsR6Ljx.js +0 -1
- package/dist/assets/volter-sdk-kit-components-inspector-revert-label-BcItYP-3.js +0 -1
- package/dist/assets/volter-sdk-kit-components-inspector-selection-DnVCu9NI.js +0 -1
- package/dist/assets/volter-sdk-kit-components-inspector-stories-gating-BbWmsm9H.js +0 -1
- package/dist/assets/volter-sdk-kit-components-inspector-transform-BCj8sqj5.js +0 -1
- package/dist/assets/volter-sdk-kit-components-inspector-transform-subject-DmyQlGz0.js +0 -1
- package/dist/assets/volter-sdk-kit-components-kind-documents-BECHMIFC.js +0 -1
- package/dist/assets/volter-sdk-kit-components-primitives-DraftColorInput-BB28QlBb.js +0 -1
- package/dist/assets/volter-sdk-kit-components-project-tool-documents-CrMMOzM5.js +0 -1
- package/dist/assets/volter-sdk-kit-components-scene-documents-B3yfDsBz.js +0 -1
- package/dist/assets/volter-sdk-kit-components-status-contributions-CDzNj8Hu.js +0 -1
- package/dist/assets/volter-sdk-kit-components-tool-documents-BpEG-ABF.js +0 -1
- package/dist/assets/volter-sdk-kit-components-tool-schema-form-BOiPCwKc.js +0 -1
- package/dist/assets/volter-sdk-kit-components-use-after-paint-AcvAjLMf.js +0 -1
- package/dist/assets/volter-sdk-kit-components-use-project-image-assets-CRFbWY4e.js +0 -1
- package/dist/assets/volter-sdk-kit-components-workspace-history-DTgNtIrO.js +0 -1
- package/dist/assets/volter-sdk-kit-components-world-documents-N9ea5nLy.js +0 -1
- package/dist/assets/volter-sdk-kit-components-world-overlay-gestures-CvVXrTkV.js +0 -1
- package/dist/assets/volter-sdk-kit-composite-screenshot-BsiNQIxC.js +0 -1
- package/dist/assets/volter-sdk-kit-content-entry-source-registry-BX8YW40L.js +0 -1
- package/dist/assets/volter-sdk-kit-contribution-surfaces-CMblNYDG.js +0 -1
- package/dist/assets/volter-sdk-kit-coverage-canvas-reveal-BtPYs0AY.js +0 -1
- package/dist/assets/volter-sdk-kit-coverage-design-time-surfaces-BCRK-uUC.js +0 -1
- package/dist/assets/volter-sdk-kit-coverage-ontology-invariants-3YuOn0LN.js +0 -1
- package/dist/assets/volter-sdk-kit-coverage-session-vitals-BpsIwBM0.js +0 -1
- package/dist/assets/volter-sdk-kit-creation-site-registry-C1_mEFTL.js +0 -1
- package/dist/assets/volter-sdk-kit-delegate-harness-registry-V07K9odj.js +0 -1
- package/dist/assets/volter-sdk-kit-document-areas-TQELDKqa.js +0 -1
- package/dist/assets/volter-sdk-kit-document-context-registry-BaPLLOGQ.js +0 -1
- package/dist/assets/volter-sdk-kit-document-open-registry-D-zxkb7y.js +0 -1
- package/dist/assets/volter-sdk-kit-document-play-extension-F8i5xdiU.js +0 -1
- package/dist/assets/volter-sdk-kit-document-preview-source-DgDf2lpD.js +0 -1
- package/dist/assets/volter-sdk-kit-document-renderer-session-YWnbpDFE.js +0 -1
- package/dist/assets/volter-sdk-kit-document-stage-sessions-BKZBGbit.js +0 -1
- package/dist/assets/volter-sdk-kit-document-viewports-DNuE6MQl.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-api-DZDj3o86.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-chrome-capture-De6DmSgV.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-commands-CImZE1nE.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-console-nzCbsR0U.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-current-view-POB-DPkt.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-document-probe-B5tRXCfR.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-git-client-SsYoNC6J.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-hotkeys-B4ocILot.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-lease-CBvYmCsH.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-lease-view-DVuaJEec.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-mode-B2vWMS-_.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-notifications-DgsalU9q.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-presence-BQiXcYKf.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-presentation-activity-DO7YpI0H.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-presentation-notice-BZtrnX57.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-runtime-C8mqfYkM.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-server-response-qipqMDto.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-session-attribution-_PNhRyeQ.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-session-mode-BcDn3FZY.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-state-facets-3r455vYW.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-view-presentation-Dovw_-H_.js +0 -1
- package/dist/assets/volter-sdk-kit-environment-images-DNJU9lPC.js +0 -1
- package/dist/assets/volter-sdk-kit-eyedropper-session-DJMkT_IO.js +0 -1
- package/dist/assets/volter-sdk-kit-files-file-provider-BnmRHNTp.js +0 -1
- package/dist/assets/volter-sdk-kit-files-project-files-CiKUZlIY.js +0 -1
- package/dist/assets/volter-sdk-kit-finders-index-qZKU8xjn.js +0 -1
- package/dist/assets/volter-sdk-kit-finders-scenes-from-entrypoint-selection-DBTnLBhQ.js +0 -1
- package/dist/assets/volter-sdk-kit-frame-frame-parts-DY-_uCea.js +0 -1
- package/dist/assets/volter-sdk-kit-framed-document-capture-CsprF9Ct.js +0 -1
- package/dist/assets/volter-sdk-kit-game-surface-defaults-Dz1sExNZ.js +0 -1
- package/dist/assets/volter-sdk-kit-gameplay-export-state-BwkWHkY-.js +0 -1
- package/dist/assets/volter-sdk-kit-gameplay-replay-CgF6vM6H.js +0 -1
- package/dist/assets/volter-sdk-kit-gameplay-session-time-BrdLX9MN.js +0 -1
- package/dist/assets/volter-sdk-kit-gameplay-sessions-0YRBcIBD.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-component-marks-pwxcueeL.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-internals-qxAC9Yyz.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-kind-icon-Bguy3R2P.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-menu-registry-CQ_dm6ZG.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-node-rows-BJliwGW1.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-panel-view-C6zK-ewB.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-projection-q1LvhfSm.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-row-media-jZ989Tvr.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-row-model-BmrBiFlP.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-rows-BMI3XBi-.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-walk-oEWRF-Iz.js +0 -1
- package/dist/assets/volter-sdk-kit-history-editor-session-CdficO7Z.js +0 -1
- package/dist/assets/volter-sdk-kit-history-history-commands-D7VwYk3h.js +0 -1
- package/dist/assets/volter-sdk-kit-history-history-delegate-DgIAPV-4.js +0 -1
- package/dist/assets/volter-sdk-kit-history-history-limit-notices-Bu07tHVz.js +0 -1
- package/dist/assets/volter-sdk-kit-history-history-service-BzbUb6oV.js +0 -1
- package/dist/assets/volter-sdk-kit-history-persistence-coordinator-DuWeeacm.js +0 -1
- package/dist/assets/volter-sdk-kit-history-project-file-history-C7m0teYF.js +0 -1
- package/dist/assets/volter-sdk-kit-history-project-root-history-backends-mip7BKbu.js +0 -1
- package/dist/assets/volter-sdk-kit-history-resource-registry-CZoZX7pJ.js +0 -1
- package/dist/assets/volter-sdk-kit-history-snapshot-store-DFlmQKjf.js +0 -1
- package/dist/assets/volter-sdk-kit-history-source-history-backend-C1tXQx-3.js +0 -1
- package/dist/assets/volter-sdk-kit-hmr-registration-group-CdWSrJkL.js +0 -1
- package/dist/assets/volter-sdk-kit-hmr-stable-react-context-B_NNyLJr.js +0 -1
- package/dist/assets/volter-sdk-kit-hotkeys-9UuVecd2.js +0 -1
- package/dist/assets/volter-sdk-kit-inference-diagnostics-Bp6UhMrh.js +0 -1
- package/dist/assets/volter-sdk-kit-initial-project-mIrJ1z4F.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-active-subject-Ci13od8C.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-active-surface-BbND9Nn7.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-compose-subject-Cruyx55P.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-display-Ckb72SDN.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-document-subject-Dd7sTsiM.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-game-subject-Zye7SfKC.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-model-B6kt5U5M.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-node-media-3WYK4mrg.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-null-subject-j5MU6Bqp.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-serialize-C5ElmYGd.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-use-active-inspection-Dqr8YOfV.js +0 -1
- package/dist/assets/volter-sdk-kit-inspector-presentation-Bxm_mJug.js +0 -1
- package/dist/assets/volter-sdk-kit-inspector-property-grouping-DGsJwl0r.js +0 -1
- package/dist/assets/volter-sdk-kit-inspector-section-registry-BTw0xKeK.js +0 -1
- package/dist/assets/volter-sdk-kit-instance-source-actions-B_SYfHzK.js +0 -1
- package/dist/assets/volter-sdk-kit-js-heap-CMHIxDFc.js +0 -1
- package/dist/assets/volter-sdk-kit-key-actions-npGWeBwX.js +0 -1
- package/dist/assets/volter-sdk-kit-keymap-presets-Dgo5jMVc.js +0 -1
- package/dist/assets/volter-sdk-kit-layout-policy-D6cqDneT.js +0 -1
- package/dist/assets/volter-sdk-kit-light-explorer-model-D9220Fr3.js +0 -1
- package/dist/assets/volter-sdk-kit-live-canvas-frame-CQvRrTp5.js +0 -1
- package/dist/assets/volter-sdk-kit-live-document-StECWB5n.js +0 -1
- package/dist/assets/volter-sdk-kit-live-gesture-lock-DpKIl8Kh.js +0 -1
- package/dist/assets/volter-sdk-kit-live-seam-evidence-WkwVMDpm.js +0 -1
- package/dist/assets/volter-sdk-kit-live-session-registry-DmaGkq5x.js +0 -1
- package/dist/assets/volter-sdk-kit-live-transition-B5jM4iFM.js +0 -1
- package/dist/assets/volter-sdk-kit-manifest-project-amCdVxUh.js +0 -1
- package/dist/assets/volter-sdk-kit-module-fetch-diagnosis-CpTsYq8x.js +0 -1
- package/dist/assets/volter-sdk-kit-mount-failure-report-DcYXxWwN.js +0 -1
- package/dist/assets/volter-sdk-kit-native-selection-style-bMu0TkER.js +0 -1
- package/dist/assets/volter-sdk-kit-object3d-document-write-policy-DCtXUN3w.js +0 -1
- package/dist/assets/volter-sdk-kit-packaged-runtime-8FNZVNB9.js +0 -1
- package/dist/assets/volter-sdk-kit-performance-profiler-DKuyDNq0.js +0 -1
- package/dist/assets/volter-sdk-kit-performance-sources-CUq2AYlp.js +0 -1
- package/dist/assets/volter-sdk-kit-photograph-notice-CJC3RuIs.js +0 -1
- package/dist/assets/volter-sdk-kit-play-boot-phase-CvmjrYem.js +0 -1
- package/dist/assets/volter-sdk-kit-play-camera-flight-Dp3bYFl4.js +0 -1
- package/dist/assets/volter-sdk-kit-presentation-surface-DDAJLzOO.js +0 -1
- package/dist/assets/volter-sdk-kit-product-command-CevBP_kA.js +0 -1
- package/dist/assets/volter-sdk-kit-project-adapter-DZMJa9qO.js +0 -1
- package/dist/assets/volter-sdk-kit-project-asset-refresh-BlzSWFsZ.js +0 -1
- package/dist/assets/volter-sdk-kit-project-asset-roots-ByJUql0c.js +0 -1
- package/dist/assets/volter-sdk-kit-project-local-state-CzuDIgqm.js +0 -1
- package/dist/assets/volter-sdk-kit-project-manager-KiOTeJwI.js +0 -1
- package/dist/assets/volter-sdk-kit-project-module-changes-BDLfMwF6.js +0 -1
- package/dist/assets/volter-sdk-kit-project-module-split-DVZB3699.js +0 -1
- package/dist/assets/volter-sdk-kit-project-provenance-GZJY3tis.js +0 -1
- package/dist/assets/volter-sdk-kit-project-ready-EtjRqua9.js +0 -1
- package/dist/assets/volter-sdk-kit-project-shape-Jb91qwQJ.js +0 -1
- package/dist/assets/volter-sdk-kit-project-tools-n1IzvKJM.js +0 -1
- package/dist/assets/volter-sdk-kit-readiness-j18YadCv.js +0 -1
- package/dist/assets/volter-sdk-kit-renderer-resource-counts-BjvWDcz5.js +0 -1
- package/dist/assets/volter-sdk-kit-reported-play-state-BdYUBkLM.js +0 -1
- package/dist/assets/volter-sdk-kit-resolve-contributed-command-7ZIwPRlj.js +0 -1
- package/dist/assets/volter-sdk-kit-resolve-relative-specifier-BEqx2z44.js +0 -1
- package/dist/assets/volter-sdk-kit-retained-document-states-BWSvbm_C.js +0 -1
- package/dist/assets/volter-sdk-kit-scene-document-plan-B8Q6NbgU.js +0 -1
- package/dist/assets/volter-sdk-kit-scene-live-open-PVToaH1e.js +0 -1
- package/dist/assets/volter-sdk-kit-scoped-game-css-DOF-inf1.js +0 -1
- package/dist/assets/volter-sdk-kit-served-url-C3OFjtsJ.js +0 -1
- package/dist/assets/volter-sdk-kit-session-close-CfqKNfrE.js +0 -1
- package/dist/assets/volter-sdk-kit-session-tombstone-wgZaXyq-.js +0 -1
- package/dist/assets/volter-sdk-kit-settings-settings-provider-CkU3sFW7.js +0 -1
- package/dist/assets/volter-sdk-kit-settings-store-vv_SoMfR.js +0 -1
- package/dist/assets/volter-sdk-kit-shell-store-DTExcaKL.js +0 -1
- package/dist/assets/volter-sdk-kit-shell-store-door-Y-FBGkmI.js +0 -1
- package/dist/assets/volter-sdk-kit-source-conflict-CnIJpwkZ.js +0 -1
- package/dist/assets/volter-sdk-kit-stage-context-q9FWjN1-.js +0 -1
- package/dist/assets/volter-sdk-kit-stage-invalidation-43bhizXB.js +0 -1
- package/dist/assets/volter-sdk-kit-stage-store-registry-BQo-SIuU.js +0 -1
- package/dist/assets/volter-sdk-kit-startup-failure-B7USi1FF.js +0 -1
- package/dist/assets/volter-sdk-kit-state-report-deferral-Cur6y3FE.js +0 -1
- package/dist/assets/volter-sdk-kit-storage-host-files-storage-C9d8xXNc.js +0 -1
- package/dist/assets/volter-sdk-kit-storage-http-storage-MuV46OcN.js +0 -1
- package/dist/assets/volter-sdk-kit-storage-index-CcMXaj5N.js +0 -1
- package/dist/assets/volter-sdk-kit-storage-mem-storage-CaZsvmox.js +0 -1
- package/dist/assets/volter-sdk-kit-storage-path-lock-ClaJ7vSM.js +0 -1
- package/dist/assets/volter-sdk-kit-storage-paths-Ci2ZChlj.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-StoryPreviewMount-OjN0fncW.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-compose-project-stories-BlKWWJmk.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-prefabs-finder-CcmeyBzg.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-prefabs-from-stories-CA_oKZKb.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-project-story-regions-CFAyIdjW.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-scope-XvZpLAc5.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-capture-K4eH6MMa.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-declared-medium-e8MXBoO_.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-discovery-DViKEE-J.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-dom-runtime-DdlXu5tN.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-grouping-BbgkS2Kl.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-presentation-Bw39PGHN.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-registry-DpouLkjB.js +0 -1
- package/dist/assets/volter-sdk-kit-story-document-openers-DckbFGIr.js +0 -1
- package/dist/assets/volter-sdk-kit-story-thumbnails-ruZKvQPb.js +0 -1
- package/dist/assets/volter-sdk-kit-surface-keyboard-ChQta2gu.js +0 -1
- package/dist/assets/volter-sdk-kit-surface-state-CUbH0mE7.js +0 -1
- package/dist/assets/volter-sdk-kit-system-seam-evidence-hHuyimda.js +0 -1
- package/dist/assets/volter-sdk-kit-tab-census-BKO-Cotm.js +0 -1
- package/dist/assets/volter-sdk-kit-tab-lifecycle-client--HEzpfrP.js +0 -1
- package/dist/assets/volter-sdk-kit-theme-library-cooHZE2t.js +0 -1
- package/dist/assets/volter-sdk-kit-theme-preference-BfzIz8X4.js +0 -1
- package/dist/assets/volter-sdk-kit-three-viewport-presentation-DJQ6GD49.js +0 -1
- package/dist/assets/volter-sdk-kit-tool-contribution-play-B1vfLya9.js +0 -1
- package/dist/assets/volter-sdk-kit-tool-loader-C_B2N1As.js +0 -1
- package/dist/assets/volter-sdk-kit-transform-mode-request-tOzI-V8h.js +0 -1
- package/dist/assets/volter-sdk-kit-transient-hint-qly8UT5T.js +0 -1
- package/dist/assets/volter-sdk-kit-transport-strip-CrqMX70b.js +0 -1
- package/dist/assets/volter-sdk-kit-ui-source-file-region-resolver-CjFRrSBS.js +0 -1
- package/dist/assets/volter-sdk-kit-ui-source-inspect-CPbxbbEw.js +0 -1
- package/dist/assets/volter-sdk-kit-ui-source-source-write-backend-Ci45ai4Y.js +0 -1
- package/dist/assets/volter-sdk-kit-ui-source-tier-source-write-backend-B_pwEKI_.js +0 -1
- package/dist/assets/volter-sdk-kit-user-local-state-CZtLuAED.js +0 -1
- package/dist/assets/volter-sdk-kit-viewport-activation-timings-DtO34FL_.js +0 -1
- package/dist/assets/volter-sdk-kit-viewport-editor-controls-C4eYemqw.js +0 -1
- package/dist/assets/volter-sdk-kit-viewport-presentation-D1_lvqyl.js +0 -1
- package/dist/assets/volter-sdk-kit-viewport-surface-status-BsGJAuRu.js +0 -1
- package/dist/assets/volter-sdk-kit-wait-until-DlHFfLUu.js +0 -1
- package/dist/assets/volter-sdk-kit-worker-call-metrics-FsK4U-gz.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-areas-CvTSMn-H.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-aux-commands-CrxEUAQx.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-available-documents-Cl8CigSt.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-core-utilities-rQQcVO5n.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-document-ids-CisQDpex.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-document-registry-D4w40sGe.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-document-restore-B0s9617k.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-host-commands-DLqH47QQ.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-persistence-gate-eeXMeNbc.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-play-utilities-sGc6TcaG.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-presets-D-OZK4QQ.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-regions-CLU4KicA.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-static-panels-BtUQumTF.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-status-registry-BlOrc7aA.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-storage-B1cvxes9.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-style-Czyy_uk2.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-utility-commands-D7ToZCgr.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-utility-registry-Czk_iMpg.js +0 -1
- package/dist/assets/volter-sdk-kit-world-adoption-CvxzEI8V.js +0 -1
- package/dist/assets/volter-sdk-kit-world-canvas-viewport-state-CjG34H8g.js +0 -1
- package/dist/assets/volter-sdk-kit-world-document-routing-B3yT1rzx.js +0 -1
- package/dist/assets/volter-sdk-kit-world-pan-state-Co5VSMOo.js +0 -1
- package/dist/assets/volter-sdk-kit-write-pipe-GbyDlxkJ.js +0 -1
- package/dist/assets/volter-sdk-layout-arrangements-DmBix6Gx.js +0 -1
- package/dist/assets/volter-sdk-layouts-CQccgb8u.js +0 -1
- package/dist/assets/volter-sdk-mgLi8_Cw.js +0 -2364
- package/dist/assets/volter-sdk-selection-wggwzLen.js +0 -1
- package/dist/assets/volter-sdk-session-command-table-HilHgL7-.js +0 -1
- package/dist/assets/volter-sdk-session-editor-brand-CnZ3VbR-.js +0 -1
- package/dist/assets/volter-sdk-session-editor-compatibility-BOYTGttq.js +0 -1
- package/dist/assets/volter-sdk-session-editor-control-protocol-DG79HI_x.js +0 -1
- package/dist/assets/volter-sdk-session-entrypoint-selection-readers-D9FXlkS2.js +0 -1
- package/dist/assets/volter-sdk-session-game-css-scope-CZmonWfe.js +0 -1
- package/dist/assets/volter-sdk-session-limited-view-KNOq_tYc.js +0 -1
- package/dist/assets/volter-sdk-session-project-module-url-D7htWtkD.js +0 -1
- package/dist/assets/volter-sdk-session-relative-path-guard-DYa5PL0U.js +0 -1
- package/dist/assets/volter-sdk-session-tool-contribution-convention-GC2AWVch.js +0 -1
- package/dist/assets/volter-sdk-types-Couxbiwa.js +0 -1
- package/dist/assets/volter-sdk-views-D8qvTyCn.js +0 -1
- package/dist/assets/volter-sdk-widgets-design-system-DOW3sA7o.js +0 -1
- package/dist/assets/volter-sdk-widgets-editor-appearance-iH79zcxr.js +0 -1
- package/dist/assets/volter-sdk-widgets-editor-material-D-LB0zxr.js +0 -1
- package/dist/assets/volter-sdk-widgets-icon-set-registry-ylLmSwSr.js +0 -1
- package/dist/assets/volter-sdk-widgets-index-DMo0Rqvn.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-AlignmentGrid-DhdNVPDu.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-AssetSlotPicker-BEDX8viW.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-BorderEditor-9Vk3QrCy.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ColorPicker-rhGdxW0L.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-CurveEditor-BXu0Q3-y.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-FilterEditor-C49uoql_.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-FontPicker-BoRWZylN.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-GradientEditor-GxINOtYX.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ScrubbableInput-rvCzzMDI.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ShadowEditor-DG-MGXQX.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-color-utils-Cy4AI76M.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-curve-utils-ncKgVdwJ.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-index-BtW7A1an.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-shared-lOZ7oJLL.js +0 -1
- package/dist/assets/volter-sdk-widgets-interactive-edit-scope-BbS6qOlJ.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Dialog-BqcAE1N1.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Fields-CD2kSMcv.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-List-CZyrvaL-.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-StateSurface-D8L-se9D.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Surfaces-sW43gM3D.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Tabs-CTEQRAHE.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Toolbar-CF8cj2Xd.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Tree-KffO8vo1.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-AnchoredMenu-D2my2vjj.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Button-CiaR71jI.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-ColorInput-DAxGHgoQ.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-DraftTextInput-CCZYI-j9.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-EditorIcon-Fn9aFuF_.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-FormControls-BMxlOety.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-HoverPreview-BzwvyU3c.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-JsonInput-CTc6p9EQ.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Layout-CE-beP_c.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Menu-DfNc6W9I.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-NumberInput-Cyjw5Lzx.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Panel-LGno17LT.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-SectionHeader-Cljf9N48.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Text-B4gPva4d.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-ThemeRootPortal-CXqwIkjb.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Tooltip-DjwM-P34.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Vec3Input-DWMZJklN.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-banner-tones-bbpLeXlG.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-clamp-to-viewport-DB06CYVu.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-editor-icons-FxdDZA6W.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-panel-header-styles-CEiBBzGS.js +0 -1
- package/dist/assets/volter-sdk-widgets-theme-BysNs-Ha.js +0 -1
- package/dist/assets/volter-sdk-widgets-z-index-CQdgvLGF.js +0 -1
- package/dist/assets/volter-shared-fontawesome-BiNKLNA8.js +0 -1
- package/dist/assets/volter-shared-jsx-dev-runtime-BgDFKHr4.js +0 -1
- package/dist/assets/volter-shared-jsx-runtime-B6IXdFn7.js +0 -1
- package/dist/assets/volter-shared-react-dom-DOBDwT0W.js +0 -1
- package/dist/assets/volter-shared-react-dom-client-DxxNJanr.js +0 -1
- package/dist/assets/volter-shared-react-wgC9wOqr.js +0 -1
- package/dist/assets/volter-shared-three-CUSZKPWM.js +0 -1
- package/dist/assets/worker-DvJ796ja.js +0 -8
- package/dist/volter-shared-sdk.json +0 -465
- package/src/contributions.d.ts +0 -4
- package/starter/add-play/game-state.ts +0 -25
- package/starter/add-play/game.tsx +0 -16
- package/starter/add-play/model.play.ts +0 -77
- package/starter/playable/src/models/canyon.blend +0 -0
- package/starter/playable/src/models/canyon.play.ts +0 -107
- package/starter/playable/src/models/canyon.py +0 -55
- package/starter/playable/src/models/circuit.py +0 -131
- package/starter/playable/src/models/complete_environment.py +0 -35
- package/starter/playable/src/models/course.ts +0 -12
- package/starter/playable/src/models/detail.py +0 -44
- package/starter/playable/src/models/driver_details.py +0 -25
- package/starter/playable/src/models/environment.py +0 -87
- package/starter/playable/src/models/finish_scene.py +0 -13
- package/starter/playable/src/models/kart_finish.py +0 -31
- package/starter/playable/src/models/polish.py +0 -75
- package/starter/playable/src/models/race-state.ts +0 -15
- package/starter/playable/src/models/refine.py +0 -69
- package/starter/playable/src/models/scene_helpers.py +0 -54
- package/starter/playable/src/models/scenery_ao.py +0 -114
- package/starter/playable/src/textures/asphalt.png +0 -0
- package/starter/playable/src/textures/generate.py +0 -16
- package/starter/playable/src/textures/sandstone.png +0 -0
- package/starter/playable/src/ui/game.stories.tsx +0 -16
- package/starter/playable/src/ui/game.tsx +0 -6
- package/starter/playable/src/ui/race-hud.tsx +0 -29
- package/starter/playable/src/ui/race-widgets.tsx +0 -29
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
-
# Copyright 2026 Volter AI, Inc.
|
|
3
|
-
import bpy,math,random,datetime
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
ROOT=str(Path(bpy.data.filepath).resolve().parents[2])
|
|
6
|
-
exec(compile(open(ROOT+'/src/models/scene_helpers.py').read(),'scene_helpers.py','exec'))
|
|
7
|
-
# More road in the foreground and a distant outside verge, matching the open bend.
|
|
8
|
-
for ob in bpy.data.objects:
|
|
9
|
-
if ob.type!='MESH':continue
|
|
10
|
-
if ob.name=='Circuit asphalt':bounds=(-12,12)
|
|
11
|
-
elif ob.name.startswith('Ivory shoulder'):s=int(ob.name.rsplit(' ',1)[1]);bounds=(s*12,s*12.5)
|
|
12
|
-
elif ob.name.startswith('Turquoise racing edge'):s=int(ob.name.rsplit(' ',1)[1]);bounds=(s*11.45,s*12)
|
|
13
|
-
else:continue
|
|
14
|
-
for i in range(512):
|
|
15
|
-
t=i*8/512;p=center(t);wide=17*math.exp(-max(0,p.y)/28) if t<2.4 or t>7.3 else 0
|
|
16
|
-
for j,off in enumerate(bounds):
|
|
17
|
-
if off<0:off-=wide
|
|
18
|
-
q=sample(t,off);ob.data.vertices[i*2+j].co.x=q.x;ob.data.vertices[i*2+j].co.y=q.y
|
|
19
|
-
ob.data.update()
|
|
20
|
-
if ob.name=='Circuit asphalt':
|
|
21
|
-
uv=ob.data.uv_layers.active
|
|
22
|
-
for p in ob.data.polygons:
|
|
23
|
-
for li in p.loop_indices:
|
|
24
|
-
v=ob.data.vertices[ob.data.loops[li].vertex_index].co;uv.data[li].uv=(v.x/9,v.y/9)
|
|
25
|
-
for o in bpy.data.objects:
|
|
26
|
-
if o.name.startswith('Lane dash'):o.location.x-=4
|
|
27
|
-
# Remove nearby rail, leaving the broad distant guardrail seen in the target.
|
|
28
|
-
for ob in list(bpy.data.objects):
|
|
29
|
-
if ob.name.startswith(('Guardrail','Rail post')):bpy.data.objects.remove(ob,do_unlink=True)
|
|
30
|
-
for i in range(65):
|
|
31
|
-
if i<23:
|
|
32
|
-
p=Vector((-58+i*2,24));q=Vector((-56+i*2,24))
|
|
33
|
-
else:p=sample(.92+(i-23)*.04,-13);q=sample(.92+(i-22)*.04,-13)
|
|
34
|
-
rod('Guardrail beam',(p.x,p.y,.98),(q.x,q.y,.98),.14,metal)
|
|
35
|
-
rod('Guardrail lower',(p.x,p.y,.75),(q.x,q.y,.75),.08,metal)
|
|
36
|
-
if i%2==0:box('Rail post',(p.x,p.y,.43),(.18,.25,.86),metal)
|
|
37
|
-
# Move each complete sign assembly consistently according to original coordinates.
|
|
38
|
-
for ob in bpy.data.objects:
|
|
39
|
-
if ob.name.startswith(('Arrow','Flag','Sunrise racing pennant')):
|
|
40
|
-
# Flags store their absolute points in the mesh; all other parts have absolute locations.
|
|
41
|
-
if ob.name.startswith(('Flag gold','Sunrise')):
|
|
42
|
-
if ob.type=='MESH':
|
|
43
|
-
cx=sum(v.co.x for v in ob.data.vertices)/len(ob.data.vertices);cy=sum(v.co.y for v in ob.data.vertices)/len(ob.data.vertices)
|
|
44
|
-
else:continue
|
|
45
|
-
else:cx,cy=ob.location.x,ob.location.y
|
|
46
|
-
idx=min(range(3),key=lambda k:abs(cy-[10,24,38][k]))
|
|
47
|
-
dx,dy,dz=[(-4,12,2.1),(-3,10,.5),(-1,10,0)][idx]
|
|
48
|
-
ob.location.x+=dx;ob.location.y+=dy;ob.location.z+=dz
|
|
49
|
-
# The arch opening occupies the right half and leaves a broad cyan sky above it.
|
|
50
|
-
ob=bpy.data.objects['Natural sandstone arch'];ob.location.x+=6;ob.location.y+=9;ob.scale.z=.88
|
|
51
|
-
ob=bpy.data.objects['Arch east tower'];ob.location.x+=4
|
|
52
|
-
ob=bpy.data.objects['Distant mesa'];ob.location.x+=14;ob.scale.z=.8
|
|
53
|
-
# Directional afternoon shadows fall towards the camera's lower left.
|
|
54
|
-
bpy.data.objects['Afternoon sun'].rotation_euler=(-.52,.62,0)
|
|
55
|
-
bpy.data.lights['Afternoon sun'].color=(1,.91,.79)
|
|
56
|
-
bpy.data.lights['Afternoon sun'].energy=3.2
|
|
57
|
-
# Broader rear bodies, fitted lamps, twin chrome pipes and inset mechanical details.
|
|
58
|
-
for i in range(6):
|
|
59
|
-
rt=bpy.data.objects['Kart.'+str(i)]
|
|
60
|
-
for ob in list(rt.children):
|
|
61
|
-
if 'sculpted chassis' in ob.name:ob.scale.x*=1.08;ob.scale.z*=.92
|
|
62
|
-
if 'red lamp' in ob.name:ob.location.y=-1.37
|
|
63
|
-
if 'lamp glint' in ob.name:ob.location.y=-1.44
|
|
64
|
-
if 'white rear pod' in ob.name:ob.location.x*=1.02
|
|
65
|
-
if 'rear cream stripe' in ob.name:ob.scale.z*=1.2
|
|
66
|
-
# Decorative engine ventilation and lower diffuser behind the driver.
|
|
67
|
-
for x in [-.42,-.21,0,.21,.42]:box('K%d rear grille'%i,(x,-1.45,.55),(.11,.02,.08),tire,rt)
|
|
68
|
-
for x in [-.17,.17]:
|
|
69
|
-
rod('K%d exhaust tube'%i,(x,-1.4,.34),(x,-1.7,.34),.13,metal,rt)
|
|
70
|
-
# Add small cream cloud banks in the open sky.
|
|
71
|
-
cloud=bpy.data.materials['Soft cream clouds'];random.seed(821)
|
|
72
|
-
for x,y,z,s in [(-6,150,39,8),(40,170,40,12),(62,185,54,8),(-41,170,50,7)]:
|
|
73
|
-
for j in range(12):sphere('Cloud bank',(x+random.uniform(-s,s),y+random.uniform(-4,4),z+random.uniform(-2,4)),(random.uniform(2,5),3,random.uniform(2,4)),cloud)
|
|
74
|
-
bpy.ops.wm.save_as_mainfile(filepath=ROOT+'/src/models/canyon.blend')
|
|
75
|
-
print('Polished verge, signs, karts, shadows and clouds')
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
// Copyright 2026 Volter AI, Inc.
|
|
3
|
-
export type RacePhase='ready'|'countdown'|'racing'|'finished';
|
|
4
|
-
export interface Racer {id:number;name:string;x:number;y:number;heading:number;speed:number;progress:number;lap:number;finished:boolean;finishTime:number|null;coins:number;boost:number;parked:boolean;drifting:boolean;offroad:boolean;}
|
|
5
|
-
export interface RaceEvent {time:number;frame:number;kind:string;[key:string]:unknown}
|
|
6
|
-
export interface RaceState {phase:RacePhase;paused:boolean;autoplay:boolean;time:number;frame:number;countdown:number;speed:number;lap:number;coins:number;place:number;boost:number;racers:Racer[];events:RaceEvent[];message:string;}
|
|
7
|
-
export const initialState:RaceState={phase:'ready',paused:false,autoplay:false,time:0,frame:0,countdown:3,speed:0,lap:1,coins:8,place:6,boost:0,racers:[],events:[],message:'CANYON COMET'};
|
|
8
|
-
let state=initialState;const listeners=new Set<()=>void>();
|
|
9
|
-
export const getRaceState=()=>state;
|
|
10
|
-
export const subscribeRaceState=(fn:()=>void)=>{listeners.add(fn);return()=>{listeners.delete(fn)}};
|
|
11
|
-
export const publishRaceState=(s:RaceState)=>{state=s;for(const fn of listeners)fn()};
|
|
12
|
-
export type Command='start'|'auto'|'pause'|'restart'|'boost';
|
|
13
|
-
const commands:Command[]=[];
|
|
14
|
-
export const raceAction=(cmd:Command)=>commands.push(cmd);
|
|
15
|
-
export const consumeCommands=()=>commands.splice(0);
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
-
# Copyright 2026 Volter AI, Inc.
|
|
3
|
-
import bpy, math, datetime
|
|
4
|
-
from mathutils import Vector
|
|
5
|
-
from pathlib import Path
|
|
6
|
-
ROOT=str(Path(bpy.data.filepath).resolve().parents[2])
|
|
7
|
-
exec(compile(open(ROOT+'/src/models/scene_helpers.py').read(),'scene_helpers.py','exec'))
|
|
8
|
-
# One world for the camera, neutral diffuse illumination for the scene.
|
|
9
|
-
w=bpy.context.scene.world;ns=w.node_tree.nodes;ls=w.node_tree.links;ns.clear();out=ns.new('ShaderNodeOutputWorld');mix=ns.new('ShaderNodeMixShader');path=ns.new('ShaderNodeLightPath');ambient=ns.new('ShaderNodeBackground');back=ns.new('ShaderNodeBackground');ambient.inputs[0].default_value=(.72,.76,.79,1);ambient.inputs[1].default_value=.8;back.inputs[0].default_value=(.15,.70,.82,1);back.inputs[1].default_value=1
|
|
10
|
-
ls.new(path.outputs['Is Camera Ray'],mix.inputs[0]);ls.new(ambient.outputs[0],mix.inputs[1]);ls.new(back.outputs[0],mix.inputs[2]);ls.new(mix.outputs[0],out.inputs[0])
|
|
11
|
-
bpy.data.lights['Afternoon sun'].energy=3.0
|
|
12
|
-
# Correct signed wrapping of the closed spline at its seam.
|
|
13
|
-
for ob in bpy.data.objects:
|
|
14
|
-
if ob.type!='MESH':continue
|
|
15
|
-
if ob.name=='Circuit asphalt':bounds=(-12,12)
|
|
16
|
-
elif ob.name.startswith('Ivory shoulder'):s=int(ob.name.rsplit(' ',1)[1]);bounds=(s*12,s*12.5)
|
|
17
|
-
elif ob.name.startswith('Turquoise racing edge'):s=int(ob.name.rsplit(' ',1)[1]);bounds=(s*11.45,s*12)
|
|
18
|
-
else:continue
|
|
19
|
-
for i in range(512):
|
|
20
|
-
for j,off in enumerate(bounds):
|
|
21
|
-
p=sample(i*8/512,off);ob.data.vertices[i*2+j].co.x=p.x;ob.data.vertices[i*2+j].co.y=p.y
|
|
22
|
-
ob.data.update()
|
|
23
|
-
# Photo-like micrograin with UVs in metres, never screen-space decoration.
|
|
24
|
-
def texture(m,file):
|
|
25
|
-
# The textures stay files in src/textures/, referenced relative to the .blend rather than packed.
|
|
26
|
-
im=bpy.data.images.load(ROOT+'/src/textures/'+file,check_existing=True);im.filepath='//../textures/'+file;im.colorspace_settings.name='sRGB'
|
|
27
|
-
n=m.node_tree.nodes.new('ShaderNodeTexImage');n.image=im;m.node_tree.links.new(n.outputs['Color'],m.node_tree.nodes.get('Principled BSDF').inputs['Base Color'])
|
|
28
|
-
return n
|
|
29
|
-
texture(bpy.data.materials['Granular warm asphalt'],'asphalt.png')
|
|
30
|
-
o=bpy.data.objects['Circuit asphalt'];uv=o.data.uv_layers.new(name='Metre UV')
|
|
31
|
-
for poly in o.data.polygons:
|
|
32
|
-
for li in poly.loop_indices:
|
|
33
|
-
v=o.data.vertices[o.data.loops[li].vertex_index].co;uv.data[li].uv=(v.x/5,v.y/5)
|
|
34
|
-
rock=mat('Continuous sandstone strata','D58454',.95);texture(rock,'sandstone.png')
|
|
35
|
-
rocknames=['West high mesa','West middle mesa','West ledge','Arch east tower','East foreground cliff','Arch west tower','Distant mesa','Far left mesa','Far right mesa']
|
|
36
|
-
for name in rocknames:
|
|
37
|
-
ob=bpy.data.objects[name];ob.data.materials.clear();ob.data.materials.append(rock)
|
|
38
|
-
for p in ob.data.polygons:p.material_index=0
|
|
39
|
-
uv=ob.data.uv_layers.new(name='Sandstone strata')
|
|
40
|
-
for p in ob.data.polygons:
|
|
41
|
-
for li in p.loop_indices:
|
|
42
|
-
v=ob.data.vertices[ob.data.loops[li].vertex_index].co;uv.data[li].uv=((v.x+v.y*.61)/18,v.z/9)
|
|
43
|
-
for name,dx,dy,sz in [('West ledge',-12,6,.6),('West middle mesa',-9,8,1),('West high mesa',-11,8,1),('Arch west tower',-5,0,1)]:
|
|
44
|
-
ob=bpy.data.objects[name];ob.location.x+=dx;ob.location.y+=dy;ob.scale.z=sz
|
|
45
|
-
# A continuous naturally uneven arch, with no radial masonry pattern.
|
|
46
|
-
for ob in list(bpy.data.objects):
|
|
47
|
-
if ob.name.startswith('Natural arch span'):bpy.data.objects.remove(ob,do_unlink=True)
|
|
48
|
-
v=[];N=48
|
|
49
|
-
for i in range(N+1):
|
|
50
|
-
a=i*math.pi/N;outer=28+math.sin(i*1.7)*.7;inner=20+math.sin(i*2.3)*.35
|
|
51
|
-
for y,r in [(46,inner),(46,outer),(55,outer),(55,inner)]:v.append((13+r*math.cos(a),y,3+r*.65*math.sin(a)))
|
|
52
|
-
f=[]
|
|
53
|
-
for i in range(N):
|
|
54
|
-
for j in range(4):f.append((i*4+j,i*4+(j+1)%4,(i+1)*4+(j+1)%4,(i+1)*4+j))
|
|
55
|
-
f+=[(3,2,1,0),(N*4,N*4+1,N*4+2,N*4+3)]
|
|
56
|
-
d=mesh('Eroded arch strata',v,f,rock);o=obj('Natural sandstone arch',d);o['environment_owned']=True
|
|
57
|
-
uv=d.uv_layers.new(name='Arch strata')
|
|
58
|
-
for p in d.polygons:
|
|
59
|
-
for li in p.loop_indices:
|
|
60
|
-
a=d.vertices[d.loops[li].vertex_index].co;uv.data[li].uv=((a.x+a.y*.61)/18,a.z/9)
|
|
61
|
-
# Rear three-quarter silhouettes aligned to reference landmarks.
|
|
62
|
-
bpy.data.objects['Kart.1'].location=(-6.2,2.7,0)
|
|
63
|
-
bpy.data.objects['Kart.2'].location=(4.8,6,0)
|
|
64
|
-
bpy.data.objects['Kart.3'].location=(-1.5,24,0)
|
|
65
|
-
bpy.data.objects['Kart.4'].location=(1,31,0)
|
|
66
|
-
bpy.data.objects['Kart.5'].location=(7,41,0)
|
|
67
|
-
cam=bpy.data.objects['Chase camera'];cam.location=(0,-10.7,4.7);cam.rotation_euler=(Vector((0,18,.05))-cam.location).to_track_quat('-Z','Y').to_euler();cam.data.lens=23.25
|
|
68
|
-
bpy.ops.wm.save_as_mainfile(filepath=ROOT+'/src/models/canyon.blend')
|
|
69
|
-
print('Refined textures, neutral fill, arch, seam and chase framing')
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
-
# Copyright 2026 Volter AI, Inc.
|
|
3
|
-
# Shared by the milestone scripts after circuit.py: materials, mesh helpers and the circuit spline.
|
|
4
|
-
import bpy, math, random
|
|
5
|
-
from mathutils import Vector
|
|
6
|
-
from pathlib import Path
|
|
7
|
-
ROOT=str(Path(bpy.data.filepath).resolve().parents[2])
|
|
8
|
-
col=bpy.data.collections["Canyon Comet"]
|
|
9
|
-
def own(o): o['canyon_owned']=True; col.objects.link(o); return o
|
|
10
|
-
def lin(c): return c/12.92 if c<.04045 else ((c+.055)/1.055)**2.4
|
|
11
|
-
def mat(n,h,rough=.55,metal=0):
|
|
12
|
-
m=bpy.data.materials.get(n) or bpy.data.materials.new(n); m.use_nodes=True
|
|
13
|
-
rgb=[lin(int(h[i:i+2],16)/255) for i in (0,2,4)]; m.diffuse_color=(*rgb,1)
|
|
14
|
-
p=m.node_tree.nodes.get('Principled BSDF'); p.inputs['Base Color'].default_value=(*rgb,1); p.inputs['Roughness'].default_value=rough;p.inputs['Metallic'].default_value=metal
|
|
15
|
-
return m
|
|
16
|
-
sand=mat('Warm peach sand','EBA76B'); road=mat('Granular warm asphalt','777970',.98); white=mat('Ivory enamel','EDF1E7',.28); teal=mat('Lagoon turquoise','13C8CF',.25,.15); yellow=mat('Golden yellow','F5C62B',.3); purple=mat('Violet racer','773FDC',.28); green=mat('Apple racer','59BC37',.28); blue=mat('Sky racer','319BBE',.27); coral=mat('Coral racer','F05C33',.3); tire=mat('Graphite rubber','202A29',.9); metal=mat('Brushed aluminum','A3AFAA',.3,.55); dark=mat('Ink blue helmet','203D58',.28); red=mat('Ruby tail lamps','BA291D',.22); orange=mat('Tangerine trim','F68B25',.3); mint=mat('Mint creature','38CCAC',.4); edge=mat('Mint track paint','5AF1B9',.8); black=mat('Sign charcoal','343B32',.8); lamp=mat('Amber lamps','FFF399',.4)
|
|
17
|
-
lamp.node_tree.nodes.get('Principled BSDF').inputs['Emission Color'].default_value=(1,.72,.15,1);lamp.node_tree.nodes.get('Principled BSDF').inputs['Emission Strength'].default_value=1.2
|
|
18
|
-
cache={}
|
|
19
|
-
def mesh(n,v,f,m):
|
|
20
|
-
d=bpy.data.meshes.new(n);d.from_pydata(v,[],f);d.materials.append(m);d.update();return d
|
|
21
|
-
def obj(n,d,loc=(0,0,0),scale=(1,1,1),parent=None):
|
|
22
|
-
o=own(bpy.data.objects.new(n,d));o.location=loc;o.scale=scale;o.parent=parent;return o
|
|
23
|
-
def sphere(n,loc,scale,m,parent=None):
|
|
24
|
-
key=('sphere',m.name)
|
|
25
|
-
if key not in cache:
|
|
26
|
-
v=[(math.sin(math.pi*j/16)*math.cos(2*math.pi*i/28),math.sin(math.pi*j/16)*math.sin(2*math.pi*i/28),math.cos(math.pi*j/16)) for j in range(17) for i in range(28)]
|
|
27
|
-
f=[(j*28+i,j*28+(i+1)%28,(j+1)*28+(i+1)%28,(j+1)*28+i) for j in range(16) for i in range(28)]
|
|
28
|
-
# Sphere param runs north to south, winding outward.
|
|
29
|
-
d=mesh('Smooth '+m.name,v,[tuple(reversed(a)) for a in f],m)
|
|
30
|
-
for p in d.polygons:p.use_smooth=True
|
|
31
|
-
cache[key]=d
|
|
32
|
-
return obj(n,cache[key],loc,scale,parent)
|
|
33
|
-
def box(n,loc,s,m,parent=None):
|
|
34
|
-
key=('box',m.name)
|
|
35
|
-
if key not in cache:
|
|
36
|
-
v=[(-1,-1,-1),(1,-1,-1),(1,1,-1),(-1,1,-1),(-1,-1,1),(1,-1,1),(1,1,1),(-1,1,1)]
|
|
37
|
-
cache[key]=mesh(m.name+' block',v,[(0,3,2,1),(0,1,5,4),(1,2,6,5),(2,3,7,6),(3,0,4,7),(4,5,6,7)],m)
|
|
38
|
-
return obj(n,cache[key],loc,tuple(a/2 for a in s),parent)
|
|
39
|
-
def rod(n,a,b,r,m,parent=None):
|
|
40
|
-
mid=(Vector(a)+Vector(b))/2;o=sphere(n,mid,(r,r,(Vector(b)-Vector(a)).length/2+r),m,parent);o.rotation_euler=(Vector(b)-Vector(a)).to_track_quat('Z','Y').to_euler();return o
|
|
41
|
-
def torus(n,loc,R,r,m,parent=None):
|
|
42
|
-
key=('torus',R,r,m.name)
|
|
43
|
-
if key not in cache:
|
|
44
|
-
v=[((R+r*math.cos(j*math.tau/12))*math.cos(i*math.tau/28),(R+r*math.cos(j*math.tau/12))*math.sin(i*math.tau/28),r*math.sin(j*math.tau/12)) for i in range(28) for j in range(12)]
|
|
45
|
-
f=[(i*12+j,((i+1)%28)*12+j,((i+1)%28)*12+(j+1)%12,i*12+(j+1)%12) for i in range(28) for j in range(12)]
|
|
46
|
-
d=mesh(n,v,f,m)
|
|
47
|
-
for p in d.polygons:p.use_smooth=True
|
|
48
|
-
cache[key]=d
|
|
49
|
-
return obj(n,cache[key],loc,parent=parent)
|
|
50
|
-
POINTS=[(0,0),(0,25),(12,55),(42,70),(68,45),(65,5),(40,-25),(8,-25)]
|
|
51
|
-
def center(t):
|
|
52
|
-
k=math.floor(t)%8;u=t%1;p0=Vector(POINTS[(k-1)%8]);p1=Vector(POINTS[k]);p2=Vector(POINTS[(k+1)%8]);p3=Vector(POINTS[(k+2)%8]);return .5*((2*p1)+(-p0+p2)*u+(2*p0-5*p1+4*p2-p3)*u*u+(-p0+3*p1-3*p2+p3)*u*u*u)
|
|
53
|
-
def sample(t,offset=0):
|
|
54
|
-
p=center(t);d=(center(t+.001)-center(t-.001)).normalized();return p+Vector((d.y,-d.x))*offset
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
-
# Copyright 2026 Volter AI, Inc.
|
|
3
|
-
# Last step of canyon.py: ambient occlusion baked into the static scenery, for depth.
|
|
4
|
-
#
|
|
5
|
-
# Each receiver's vertices get a `scenery_ao` colour attribute: the share of a
|
|
6
|
-
# cosine-weighted hemisphere of rays that reach open sky within AO_DISTANCE, a
|
|
7
|
-
# hit nearer counting more. Its materials multiply Base Color by it. Nothing that
|
|
8
|
-
# moves is baked or casts into the bake: the karts and their drivers (and the
|
|
9
|
-
# coins and boost flames canyon.play.ts adds) are excluded, so the start grid
|
|
10
|
-
# carries no baked kart shadow. A material a kart shares is copied for the
|
|
11
|
-
# scenery, so no kart reads an attribute it lacks. Props (cacti, guardrails,
|
|
12
|
-
# signs, stones) occlude but are not baked themselves: they share instanced
|
|
13
|
-
# meshes, and baking them would need a copy of each. The three low shelves are
|
|
14
|
-
# left out too: eight-vertex boxes half inside the mesas, too coarse to shade.
|
|
15
|
-
# The desert floor's top face is split into a grid first, so it has vertices
|
|
16
|
-
# to carry the bake.
|
|
17
|
-
#
|
|
18
|
-
# Pure Python against mathutils' BVH, with fixed ray directions: the same file
|
|
19
|
-
# gives the same bake in native Blender and in the editor's.
|
|
20
|
-
import bpy, bmesh, math
|
|
21
|
-
from mathutils import Vector
|
|
22
|
-
from mathutils.bvhtree import BVHTree
|
|
23
|
-
from pathlib import Path
|
|
24
|
-
ROOT=str(Path(bpy.data.filepath).resolve().parents[2])
|
|
25
|
-
ATTRIBUTE='scenery_ao'
|
|
26
|
-
AO_DISTANCE=20.0 # metres; a hit at distance d occludes by 1 - d/AO_DISTANCE
|
|
27
|
-
RAYS=64
|
|
28
|
-
DARKEST=0.35
|
|
29
|
-
FLOOR_CELL=4.0 # metres between the desert floor's vertices
|
|
30
|
-
GROUND=('Desert floor','Circuit asphalt','Ivory shoulder','Turquoise racing edge','Lane dash','Finish line tile')
|
|
31
|
-
RECEIVERS=('Desert floor','Circuit asphalt','Ivory shoulder','Turquoise racing edge','Natural sandstone arch',
|
|
32
|
-
'West high mesa','West middle mesa','West ledge','Arch east tower','East foreground cliff','Arch west tower',
|
|
33
|
-
'Distant mesa','Far left mesa','Far right mesa','Return canyon mesa')
|
|
34
|
-
NOT_OCCLUDERS=('Cloud','Return cloud puff','Cactus thorn','Cactus rib','Arrow amber lamp')
|
|
35
|
-
|
|
36
|
-
col=bpy.data.collections['Canyon Comet']
|
|
37
|
-
def moving(o):
|
|
38
|
-
while o is not None:
|
|
39
|
-
if o.name.startswith('Kart.'):return True
|
|
40
|
-
o=o.parent
|
|
41
|
-
return False
|
|
42
|
-
scenery=[o for o in col.all_objects if o.type=='MESH' and not moving(o)]
|
|
43
|
-
receivers=[o for o in scenery if o.name.startswith(RECEIVERS)]
|
|
44
|
-
ground=[o for o in scenery if o.name.startswith(GROUND)]
|
|
45
|
-
|
|
46
|
-
# The floor is one 8-vertex box: give its top face a grid the bake can shade.
|
|
47
|
-
floor=bpy.data.objects['Desert floor']
|
|
48
|
-
if len(floor.data.vertices)<100:
|
|
49
|
-
if floor.data.users>1:floor.data=floor.data.copy()
|
|
50
|
-
bm=bmesh.new();bm.from_mesh(floor.data);bm.faces.ensure_lookup_table()
|
|
51
|
-
top=max(bm.faces,key=lambda f:f.normal.z)
|
|
52
|
-
cuts=max(1,round(floor.dimensions.x/FLOOR_CELL)-1)
|
|
53
|
-
bmesh.ops.subdivide_edges(bm,edges=list(top.edges),cuts=cuts,use_grid_fill=True)
|
|
54
|
-
bm.to_mesh(floor.data);bm.free();floor.data.update()
|
|
55
|
-
# A receiver needs its own vertices for its own colours.
|
|
56
|
-
for o in receivers:
|
|
57
|
-
if o.data.users>1:o.data=o.data.copy()
|
|
58
|
-
|
|
59
|
-
def triangles(objects):
|
|
60
|
-
depsgraph=bpy.context.evaluated_depsgraph_get();verts=[];tris=[]
|
|
61
|
-
for o in objects:
|
|
62
|
-
ev=o.evaluated_get(depsgraph);mesh=ev.to_mesh();mesh.calc_loop_triangles();m=ev.matrix_world;base=len(verts)
|
|
63
|
-
verts.extend(m@v.co for v in mesh.vertices);tris.extend(tuple(base+i for i in t.vertices) for t in mesh.loop_triangles)
|
|
64
|
-
ev.to_mesh_clear()
|
|
65
|
-
return BVHTree.FromPolygons(verts,tris)
|
|
66
|
-
occluders=[o for o in scenery if not o.name.startswith(NOT_OCCLUDERS)]
|
|
67
|
-
everything=triangles(occluders)
|
|
68
|
-
# Ground layers lie on one another: a ground receiver ignores them, or each would shade the next.
|
|
69
|
-
raised=triangles([o for o in occluders if o not in ground])
|
|
70
|
-
|
|
71
|
-
golden=math.pi*(3-math.sqrt(5))
|
|
72
|
-
hemisphere=[(math.sqrt((i+.5)/RAYS)*math.cos(i*golden),math.sqrt((i+.5)/RAYS)*math.sin(i*golden),math.sqrt(1-(i+.5)/RAYS)) for i in range(RAYS)]
|
|
73
|
-
def openness(tree,p,n):
|
|
74
|
-
t=(n.cross(Vector((0,0,1))) if abs(n.z)<.9 else n.cross(Vector((1,0,0)))).normalized();b=n.cross(t);origin=p+n*.03;hidden=0.0
|
|
75
|
-
for x,y,z in hemisphere:
|
|
76
|
-
hit=tree.ray_cast(origin,t*x+b*y+n*z,AO_DISTANCE)[0]
|
|
77
|
-
if hit is not None:hidden+=1-(hit-origin).length/AO_DISTANCE
|
|
78
|
-
return max(DARKEST,1-hidden/RAYS)
|
|
79
|
-
|
|
80
|
-
report={}
|
|
81
|
-
for o in receivers:
|
|
82
|
-
tree=raised if o in ground else everything;m=o.matrix_world;nm=m.to_3x3().inverted_safe().transposed();mesh=o.data
|
|
83
|
-
if ATTRIBUTE in mesh.color_attributes:mesh.color_attributes.remove(mesh.color_attributes[ATTRIBUTE])
|
|
84
|
-
layer=mesh.color_attributes.new(ATTRIBUTE,'FLOAT_COLOR','POINT');values=[]
|
|
85
|
-
for v in mesh.vertices:
|
|
86
|
-
n=(nm@v.normal).normalized()
|
|
87
|
-
# Half the track ribbons wind downward; a ground layer always faces the sky.
|
|
88
|
-
if o in ground and n.z<0:n=-n
|
|
89
|
-
a=openness(tree,m@v.co,n);values.append(a);layer.data[v.index].color=(a,a,a,1)
|
|
90
|
-
report[o.name]=(len(values),round(sum(values)/len(values),3),round(min(values),3))
|
|
91
|
-
|
|
92
|
-
# Multiply each receiver material's Base Color by the attribute; a material anything else also wears is copied.
|
|
93
|
-
receiving=set(receivers);copies={}
|
|
94
|
-
for o in receivers:
|
|
95
|
-
for slot in o.material_slots:
|
|
96
|
-
material=slot.material
|
|
97
|
-
if material is None:continue
|
|
98
|
-
shared=any(other not in receiving for other in bpy.data.objects if other.type=='MESH' and any(s.material==material for s in other.material_slots))
|
|
99
|
-
if shared:
|
|
100
|
-
if material.name not in copies:copies[material.name]=bpy.data.materials.get(material.name+' (scenery AO)') or material.copy()
|
|
101
|
-
copies[material.name].name=material.name+' (scenery AO)';slot.material=copies[material.name];material=copies[material.name]
|
|
102
|
-
nodes=material.node_tree.nodes;links=material.node_tree.links;bsdf=nodes.get('Principled BSDF')
|
|
103
|
-
if nodes.get('Scenery AO') is not None:continue
|
|
104
|
-
ao=nodes.new('ShaderNodeVertexColor');ao.name=ao.label='Scenery AO';ao.layer_name=ATTRIBUTE;ao.location=(bsdf.location.x-520,bsdf.location.y-260)
|
|
105
|
-
mix=nodes.new('ShaderNodeMix');mix.name=mix.label='Scenery AO multiply';mix.data_type='RGBA';mix.blend_type='MULTIPLY';mix.location=(bsdf.location.x-260,bsdf.location.y-120)
|
|
106
|
-
mix.inputs['Factor'].default_value=1.0;base=bsdf.inputs['Base Color']
|
|
107
|
-
if base.is_linked:
|
|
108
|
-
source=base.links[0].from_socket;links.remove(base.links[0]);links.new(source,mix.inputs[6])
|
|
109
|
-
else:mix.inputs[6].default_value=base.default_value
|
|
110
|
-
links.new(ao.outputs['Color'],mix.inputs[7]);links.new(mix.outputs[2],base)
|
|
111
|
-
for name,(count,mean,low) in sorted(report.items()):print('scenery AO',name,count,'vertices, mean',mean,'darkest',low)
|
|
112
|
-
print('scenery AO materials copied for the scenery:',sorted(copies))
|
|
113
|
-
bpy.ops.wm.save_as_mainfile(filepath=ROOT+'/src/models/canyon.blend')
|
|
114
|
-
print('Ambient occlusion baked into',len(receivers),'static scenery meshes')
|
|
Binary file
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# SPDX-License-Identifier: MIT
|
|
2
|
-
# Copyright 2026 Volter AI, Inc.
|
|
3
|
-
# Deterministic procedural surface textures; no reference pixels are used.
|
|
4
|
-
import numpy as np
|
|
5
|
-
from PIL import Image, ImageFilter
|
|
6
|
-
from pathlib import Path
|
|
7
|
-
rng=np.random.default_rng(19);root=Path(__file__).parent
|
|
8
|
-
N=1024
|
|
9
|
-
def noise(size,w,h):
|
|
10
|
-
a=rng.random((h,w)).astype('float32');im=Image.fromarray((a*255).astype('uint8')).resize((size,size),Image.Resampling.BICUBIC);return np.asarray(im)/255-.5
|
|
11
|
-
n=noise(N,256,256)*.20+noise(N,650,650)*.19+noise(N,30,30)*.06
|
|
12
|
-
base=np.array([104,104,96]);out=np.clip(base+n[:,:,None]*255,0,255).astype('uint8');Image.fromarray(out).save(root/'asphalt.png')
|
|
13
|
-
y=np.arange(N)[:,None];x=np.arange(N)[None,:];warp=np.sin(x*.009)*3+np.sin(x*.032)*1.2
|
|
14
|
-
bands=np.sin((y+warp)*.075)*.05+np.sin((y+warp)*.28)*.035+np.sin((y+warp)*1.1)*.02
|
|
15
|
-
n=noise(N,20,90)*.16+noise(N,150,500)*.11+bands
|
|
16
|
-
base=np.array([211,124,79]);out=np.clip(base+n[:,:,None]*np.array([220,180,120]),0,255).astype('uint8');Image.fromarray(out).save(root/'sandstone.png')
|
|
Binary file
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
// Copyright 2026 Volter AI, Inc.
|
|
3
|
-
import React, { useState } from 'react';
|
|
4
|
-
import GameUI from './game';
|
|
5
|
-
import { RaceHud } from './race-hud';
|
|
6
|
-
import { RaceButton, RaceCounters, RaceMenu, BoostMeter } from './race-widgets';
|
|
7
|
-
import { initialState, type RaceState } from '../models/race-state';
|
|
8
|
-
const racing = { ...initialState, phase: 'racing' as const, speed: 26, time: 38.2, lap: 2, place: 3, coins: 12 };
|
|
9
|
-
function Preview(args: RaceState) { const [state, set] = useState(args); return <RaceHud {...state} onAction={cmd => set(old => cmd === 'auto' ? { ...old, autoplay: !old.autoplay } : cmd === 'pause' ? { ...old, paused: !old.paused } : cmd === 'start' ? { ...old, phase: 'racing' } : cmd === 'restart' ? { ...initialState } : old)}/>; }
|
|
10
|
-
const background = { width: '100%', height: '100%', background: 'radial-gradient(ellipse at top,#496b6a,#253a3c)', position: 'relative' as const, overflow: 'hidden' };
|
|
11
|
-
function Buttons() { const [boost, set] = useState(false); return <div style={{ ...background, display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', gap: 25 }}><RaceButton onClick={() => set(!boost)}>{boost ? 'BOOST!' : 'LET’S RACE'}</RaceButton><RaceButton secondary>CHANGE KART</RaceButton><RaceButton disabled>LOCKED</RaceButton></div>; }
|
|
12
|
-
export default { title: 'Canyon Comet/Game interface', component: GameUI, render: (args: RaceState) => <div style={background}><Preview {...args}/></div>, parameters: { layout: 'fullscreen', viewport: { options: { game: { name: 'Game UI', styles: { width: '640px', height: '360px' } } } }, volter: { defaultStory: 'Race HUD' } }, globals: { viewport: { value: 'game' } }, args: racing };
|
|
13
|
-
export const RaceHUD = { name: 'Race HUD', parameters: { volter: { default: true } } };
|
|
14
|
-
export const PauseMenu = { name: 'Pause menu', render: () => { const [paused, set] = useState(true); return <div style={{ ...background, display: 'grid', placeItems: 'center' }}>{paused ? <RaceMenu state={{ ...racing, paused: true }} onAction={() => set(false)}/> : <RaceButton onClick={() => set(true)}>PAUSE</RaceButton>}</div>; } };
|
|
15
|
-
export const Counters = { name: 'Coins · laps · boost', render: () => <div style={{ ...background, display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', gap: 40 }}><RaceCounters coins={12} lap={2} place={3}/><BoostMeter value={5}/><BoostMeter value={8}/></div> };
|
|
16
|
-
export const ButtonsStates = { name: 'Button states', render: () => <Buttons /> };
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
// Copyright 2026 Volter AI, Inc.
|
|
3
|
-
import {useSyncExternalStore} from 'react';
|
|
4
|
-
import {getRaceState,subscribeRaceState} from '../models/race-state';
|
|
5
|
-
import {RaceHud} from './race-hud';
|
|
6
|
-
export default function GameUI(){const state=useSyncExternalStore(subscribeRaceState,getRaceState,getRaceState);return <RaceHud {...state}/>}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
// Copyright 2026 Volter AI, Inc.
|
|
3
|
-
import React from 'react';
|
|
4
|
-
import { RaceCounters, RaceControls, RaceMenu, BoostMeter } from './race-widgets';
|
|
5
|
-
import { course, at, length } from '../models/course';
|
|
6
|
-
import { raceAction, type Command, type RaceState } from '../models/race-state';
|
|
7
|
-
export function RaceHud(s: RaceState & {
|
|
8
|
-
onAction?: (cmd: Command) => void;
|
|
9
|
-
}) {
|
|
10
|
-
const act = s.onAction ?? raceAction;
|
|
11
|
-
const raceTime = s.racers[0]?.finishTime ?? s.time;
|
|
12
|
-
const mp = (x: number, y: number) => ({ x: 23 + (x + 3) * 1.95, y: 40 + (72 - y) * 4.8 });
|
|
13
|
-
const route = course.filter((_, i) => i % 8 === 0).map((p, i) => { const v = mp(p.x, p.y); return `${i ? 'L' : 'M'}${v.x} ${v.y}`; }).join(' ') + ' Z';
|
|
14
|
-
return <div data-testid="race-hud" style={{ position: 'absolute', inset: 0, fontFamily: 'Arial, sans-serif', lineHeight: 1.1, color: 'white', pointerEvents: 'none', containerType: 'size' }}>
|
|
15
|
-
<div style={{ position: 'absolute', left: '2.4%', bottom: '5%', transform: 'scale(.65)', transformOrigin: 'left bottom' }}><RaceCounters coins={s.coins} lap={s.lap} place={s.place}/></div>
|
|
16
|
-
<svg viewBox="0 0 200 580" style={{ position: 'absolute', right: '3.2%', top: '9%', height: '65%', width: '13%', overflow: 'visible' }} aria-label="Circuit map">
|
|
17
|
-
<path d={route} fill="none" stroke="#ffffffe0" strokeWidth="8" strokeLinecap="round" strokeLinejoin="round"/>
|
|
18
|
-
{(s.racers.length ? s.racers : [{ id: 0, progress: 0 }]).map(r => { const p = at(r.progress * length), v = mp(p.x, p.y); return <g key={r.id}><circle cx={v.x} cy={v.y} r={r.id === 0 ? 15 : 7} fill={['#f58a31', '#efc629', '#824fe4', '#64c33c', '#319bbe', '#e85d3a'][r.id]} stroke={r.id === 0 ? '#ffffff' : '#283e44'} strokeWidth={r.id === 0 ? 5 : 2}/>{r.id === 0 && <circle cx={v.x} cy={v.y} r="19" fill="none" stroke="#263d46" strokeWidth="2"/>}</g>; })}
|
|
19
|
-
</svg>
|
|
20
|
-
<div style={{ position: 'absolute', left: '2.6%', top: '2.7%', fontWeight: 900, letterSpacing: 2, fontSize: 'clamp(11px,1.15cqw,18px)', textShadow: '0 2px 4px #243537' }}>{s.phase === 'ready' ? 'CANYON COMET' : `${s.place} / 6 · ${Math.floor(raceTime / 60)}:${(raceTime % 60).toFixed(1).padStart(4, '0')}`}</div>
|
|
21
|
-
<div style={{ position: 'absolute', right: '2.5%', bottom: '3.4%' }}><RaceControls state={s} onAction={act}/></div>
|
|
22
|
-
<div style={{ position: 'absolute', left: '50%', bottom: '1%', transform: 'translateX(-50%)', font: '600 10px system-ui', textShadow: '0 1px 3px black', opacity: .88, whiteSpace: 'nowrap' }}>↑ W accelerate · ↓ S brake / reverse · ← → A D steer · Space drift · Shift boost · O auto</div>
|
|
23
|
-
{(s.paused || s.phase === 'finished') && <div style={{ position: 'absolute', inset: 0, display: 'grid', placeItems: 'center', background: '#253a3cbb' }}><RaceMenu state={s} onAction={act}/></div>}
|
|
24
|
-
{s.phase === 'countdown' && <div style={{ position: 'absolute', left: '50%', top: '38%', fontSize: '9cqw', fontWeight: 900, color: '#ffc92e' }}>{Math.ceil(s.countdown)}</div>}
|
|
25
|
-
<div style={{ position: 'absolute', left: '2.5%', top: '13%', transform: 'scale(.65)', transformOrigin: 'left top' }}><BoostMeter value={s.boost > 0 ? 8 : 5}/></div>
|
|
26
|
-
{s.boost > 0 && <div style={{ position: 'absolute', left: '45%', top: '13%', fontSize: '2cqw', fontWeight: 900, color: '#ffe77c' }}>BOOST</div>}
|
|
27
|
-
<output data-testid="race-state" style={{ display: 'none' }}>{JSON.stringify(s)}</output>
|
|
28
|
-
</div>;
|
|
29
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
// Copyright 2026 Volter AI, Inc.
|
|
3
|
-
import React from 'react';
|
|
4
|
-
import type { Command, RaceState } from '../models/race-state';
|
|
5
|
-
import { raceAction } from '../models/race-state';
|
|
6
|
-
const ink = '#253a3c', gold = '#ffc92e';
|
|
7
|
-
const type = { fontFamily: 'Arial, sans-serif', fontWeight: 900, fontStyle: 'italic' } as const;
|
|
8
|
-
export function RaceButton({ children, onClick, secondary = false, disabled = false }: {
|
|
9
|
-
children: React.ReactNode;
|
|
10
|
-
onClick?: () => void;
|
|
11
|
-
secondary?: boolean;
|
|
12
|
-
disabled?: boolean;
|
|
13
|
-
}) { return <button disabled={disabled} onClick={onClick} style={{ ...type, fontSize: 20, letterSpacing: '.01em', padding: '12px 25px', border: `3px solid ${ink}`, borderRadius: 15, color: secondary ? 'white' : ink, background: secondary ? ink : gold, boxShadow: `inset 0 3px 0 ${secondary ? '#ffffff38' : '#fff4b7'},0 4px 0 ${ink}`, transform: 'skew(-5deg)', cursor: disabled ? 'default' : 'pointer', opacity: disabled ? .4 : 1 }}>{children}</button>; }
|
|
14
|
-
export function RaceCounters({ coins, lap, place }: {
|
|
15
|
-
coins: number;
|
|
16
|
-
lap: number;
|
|
17
|
-
place: number;
|
|
18
|
-
}) { return <div style={{ ...type, display: 'flex', gap: 12, alignItems: 'center', color: 'white', fontSize: 36, textShadow: `0 3px 0 ${ink}` }}><span style={{ display: 'flex', alignItems: 'center', gap: 12, padding: '8px 16px', background: ink, borderRadius: 18, border: '3px solid #ffffff65' }}><b style={{ display: 'grid', placeItems: 'center', width: 31, height: 37, background: gold, borderRadius: '50%', color: '#ef9500', border: '3px solid #ffe77c', boxShadow: '0 0 0 2px #af6900', fontStyle: 'normal', fontSize: 24 }}>Ⅰ</b>{String(coins).padStart(2, '0')}</span><span style={{ padding: '8px 16px', background: ink, borderRadius: 18, border: '3px solid #ffffff65' }}><small style={{ fontSize: 13, verticalAlign: 'middle', marginRight: 8 }}>LAP</small>{lap}<small style={{ fontSize: 20 }}>/3</small></span><span style={{ fontSize: 64, color: gold, WebkitTextStroke: `2px ${ink}`, paintOrder: 'stroke fill' }}>{place}<sup style={{ fontSize: 20 }}>{place === 1 ? "ST" : place === 2 ? "ND" : place === 3 ? "RD" : "TH"}</sup></span></div>; }
|
|
19
|
-
export function BoostMeter({ value = 5 }: {
|
|
20
|
-
value?: number;
|
|
21
|
-
}) { return <div style={{ ...type, display: 'flex', gap: 13, alignItems: 'center', color: 'white', fontSize: 18, textShadow: `0 2px 0 ${ink}` }}><span>BOOST</span><div style={{ display: 'flex', gap: 4, background: ink, padding: 7, border: '2px solid #ffffff65', borderRadius: 8, transform: 'skew(-12deg)' }}>{Array.from({ length: 8 }, (_, i) => <span key={i} style={{ width: 20, height: 22, background: i < value ? gold : '#ffffff38', borderTop: '2px solid #ffffff38' }}/>)}</div></div>; }
|
|
22
|
-
export function RaceMenu({ state, onAction = raceAction }: {
|
|
23
|
-
state: RaceState;
|
|
24
|
-
onAction?: (cmd: Command) => void;
|
|
25
|
-
}) { const finished = state.phase === 'finished'; return <div style={{ ...type, display: 'flex', alignItems: 'center', flexDirection: 'column', gap: 20, color: 'white', pointerEvents: 'auto', textAlign: 'center' }}><strong style={{ fontSize: 55, lineHeight: 1, color: gold, WebkitTextStroke: `2px ${ink}`, paintOrder: 'stroke fill', textShadow: `0 5px 0 ${ink}` }}>{finished ? 'RACE COMPLETE!' : 'PAUSED'}</strong><span style={{ fontSize: 17, letterSpacing: 2, textShadow: `0 2px 0 ${ink}` }}>CANYON COMET · LAP {state.lap} / 3</span>{finished && <span style={{ fontSize: 22 }}>POSITION {state.place} / 6 · {state.time.toFixed(1)}s</span>}<RaceButton onClick={() => onAction(finished ? 'restart' : 'pause')}>{finished ? 'RACE AGAIN' : 'KEEP RACING'}</RaceButton><RaceButton secondary onClick={() => onAction('restart')}>RESTART RACE</RaceButton></div>; }
|
|
26
|
-
export function RaceControls({ state, onAction = raceAction }: {
|
|
27
|
-
state: RaceState;
|
|
28
|
-
onAction?: (cmd: Command) => void;
|
|
29
|
-
}) { return <div style={{ display: 'flex', gap: 12, alignItems: 'center', pointerEvents: 'auto', transformOrigin: 'right bottom', transform: 'scale(.7)' }}>{state.phase === 'ready' && <RaceButton onClick={() => onAction('start')}>RACE!</RaceButton>}<RaceButton secondary onClick={() => onAction('auto')}>{state.autoplay ? 'AUTO ON' : 'AUTO'}</RaceButton><RaceButton secondary onClick={() => onAction('pause')}>{state.paused ? 'RESUME' : 'PAUSE'}</RaceButton><RaceButton secondary onClick={() => onAction('restart')}>RESTART</RaceButton></div>; }
|