@volter/cyclotron 0.5.201 → 0.5.203
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 +956 -924
- package/LICENSE-BLENDER +11 -0
- package/README.md +16 -10
- package/dist/.vite/manifest.json +2316 -2307
- package/dist/assets/EntityModelDocument-CTq_jwpe.js +1 -0
- package/dist/assets/EnvironmentAssetDocument-CaSQc1HY.js +1 -0
- package/dist/assets/InspectorObjectPreview-P6pJxnGB.js +1 -0
- package/dist/assets/LiveModuleDocument-B6Iw2YIE.js +2 -0
- package/dist/assets/LutAssetDocument-C7Tc5hRu.js +1 -0
- package/dist/assets/ModelAssetDocument-BUOK0YzX.js +1 -0
- package/dist/assets/NonThreeAuthoringBootstrap-Bbtz8I0R.js +1 -0
- package/dist/assets/Object3DDocumentToolbar-GjvQOSkS.js +1 -0
- package/dist/assets/Object3DPreview-BUogCxPt.js +2 -0
- package/dist/assets/QuarksAssetDocument-Cxg3fT6D.js +2 -0
- package/dist/assets/ShaderAssetDocument-BbXBHSY3.js +1 -0
- package/dist/assets/StageHost-BtQd8CQk.js +1179 -0
- package/dist/assets/ToolObject3DPreview-imwBjs0O.js +1 -0
- package/dist/assets/ViewportShadingMenu-Dx1gY8Op.js +1 -0
- package/dist/assets/animation-mixers.service-fNXcr-Vc.js +1 -0
- package/dist/assets/animation-timeline.utility-Dzab5JgT.js +1 -0
- package/dist/assets/asset-preview-BEzZu4j-.js +4 -0
- package/dist/assets/blender-emscripten-engine-BFUuajuh.js +2 -0
- package/dist/assets/blender-node-editor.document-Cu3LXipe.js +1 -0
- package/dist/assets/blender-properties-model-BrD2rboW.js +1 -0
- package/dist/assets/blender-properties-tab-CkbWamuD.js +3 -0
- package/dist/assets/blender-runtime-host-7Wv16WQe.js +7221 -0
- package/dist/assets/blender-runtime.document-CSHvDIaD.js +13 -0
- package/dist/assets/blender-screenshot.menu-CELFKP08.js +1 -0
- package/dist/assets/blender-timeline.document-BvHkPBTZ.js +1 -0
- package/dist/assets/blender-uv-editor.document-DVsbsG0P.js +1 -0
- package/dist/assets/blender-version.status-D_YQqOVz.js +1 -0
- package/dist/assets/blender-wali-engine-C6WYYJ9a.js +2 -0
- package/dist/assets/blender.command-M9NTZ04b.js +1 -0
- package/dist/assets/blender.status-H7PL8qIV.js +1 -0
- package/dist/assets/model-inspection-DAugZuDb.js +1 -0
- package/dist/assets/models.finder-C37d1CqG.js +1 -0
- package/dist/assets/object3d-document-session-registry-Nly7qqyW.js +2 -0
- package/dist/assets/play-live-nju-LbTd.js +1 -0
- package/dist/assets/product-B76VmSfR.js +14 -0
- package/dist/assets/properties-bone-constraints.inspector-CICws11L.js +1 -0
- package/dist/assets/properties-bone.inspector-BTh8HMja.js +1 -0
- package/dist/assets/properties-collection.inspector-CdxnUdEY.js +1 -0
- package/dist/assets/properties-constraints.inspector-CgLm__aq.js +1 -0
- package/dist/assets/properties-data.inspector-CPGohY4g.js +1 -0
- package/dist/assets/properties-material.inspector-BBmS0pWg.js +1 -0
- package/dist/assets/properties-modifiers.inspector-DmwrZuck.js +1 -0
- package/dist/assets/properties-object.inspector-CcLxRnp2.js +1 -0
- package/dist/assets/properties-output.inspector-B21rsdeE.js +1 -0
- package/dist/assets/properties-particles.inspector-3oYMCgFh.js +1 -0
- package/dist/assets/properties-physics.inspector-CXHZdBQv.js +1 -0
- package/dist/assets/properties-render.inspector-BgQVOySW.js +1 -0
- package/dist/assets/properties-scene.inspector-BvJsraNi.js +1 -0
- package/dist/assets/properties-texture.inspector-DPHw4ryw.js +1 -0
- package/dist/assets/properties-view-layer.inspector-MBifnnqO.js +1 -0
- package/dist/assets/properties-world.inspector-DOOIqcDX.js +1 -0
- package/dist/assets/react-18-Ceee8kSy.js +1 -0
- package/dist/assets/session-B_EkWp0b.js +6047 -0
- package/dist/assets/stage-keyboard-CfcRPwij.js +1 -0
- package/dist/assets/stage-overlay-set-B8PO_8GO.js +1 -0
- package/dist/assets/stage-presence-markers-CheQj0g2.js +1 -0
- package/dist/assets/stage-transform-tools-B3kiH81y.js +1 -0
- package/dist/assets/standard-viewport-dressing-4szt4iVE.js +24 -0
- package/dist/assets/three-integration.service-BRF8px1l.js +2 -0
- package/dist/assets/volter-sdk-BKodmrby.js +2363 -0
- package/dist/assets/volter-sdk-account-LQPzi3UZ.js +1 -0
- package/dist/assets/volter-sdk-client-DgRgxfuo.js +1 -0
- package/dist/assets/volter-sdk-contributions-Di1uSPw_.js +1 -0
- package/dist/assets/volter-sdk-css-numeric-style-Gy-GyM9Y.js +1 -0
- package/dist/assets/volter-sdk-document-probe-kPNnaNGr.js +1 -0
- package/dist/assets/volter-sdk-editor-view-g0uNyGJC.js +1 -0
- package/dist/assets/volter-sdk-host-CXSewq8M.js +1 -0
- package/dist/assets/volter-sdk-http-transport.browser-B3TdfhI7.js +1 -0
- package/dist/assets/volter-sdk-index-4Kp3lnTd.js +1 -0
- package/dist/assets/volter-sdk-kit-CapabilityCoverageSection-CjXSPJIo.js +1 -0
- package/dist/assets/volter-sdk-kit-account-client-ByTVy6-o.js +1 -0
- package/dist/assets/volter-sdk-kit-action-registry-D1kqJ80f.js +1 -0
- package/dist/assets/volter-sdk-kit-active-product-CEEc_Nk5.js +1 -0
- package/dist/assets/volter-sdk-kit-active-project-BrcrV5ab.js +1 -0
- package/dist/assets/volter-sdk-kit-adapter-editor-config-DqJAYMZM.js +1 -0
- package/dist/assets/volter-sdk-kit-adapter-module-Cm1FKR3D.js +1 -0
- package/dist/assets/volter-sdk-kit-adapter-observation-DNCkd2d_.js +1 -0
- package/dist/assets/volter-sdk-kit-animation-animation-clock-0FXkaCv-.js +1 -0
- package/dist/assets/volter-sdk-kit-animation-stage-transport-C7MuqkhX.js +1 -0
- package/dist/assets/volter-sdk-kit-api-assets-DC5mYDg9.js +1 -0
- package/dist/assets/volter-sdk-kit-api-base-Jd4izSaw.js +1 -0
- package/dist/assets/volter-sdk-kit-api-build-CXv7iVa0.js +1 -0
- package/dist/assets/volter-sdk-kit-api-logs-BJS5qQS0.js +1 -0
- package/dist/assets/volter-sdk-kit-api-project-identity-BTbrDP21.js +1 -0
- package/dist/assets/volter-sdk-kit-api-project-open-B2xmn-LQ.js +1 -0
- package/dist/assets/volter-sdk-kit-api-project-source-B8I05SPp.js +1 -0
- package/dist/assets/volter-sdk-kit-api-project-state-b7drJlZm.js +1 -0
- package/dist/assets/volter-sdk-kit-api-relay-CXoYAGag.js +1 -0
- package/dist/assets/volter-sdk-kit-api-settings-Ooohukfm.js +1 -0
- package/dist/assets/volter-sdk-kit-api-themes-DWL43Vk4.js +1 -0
- package/dist/assets/volter-sdk-kit-api-worktrees-36I3L3ep.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-capabilities-B_JHyPEo.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-compare-core-k1g4sfK4.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-editor-context-BtXkPrch.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-events-DNL9sOD1.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-inspector-actions-CIyFU73p.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-selection-YBxUZh2F.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-selection-viewer-registry-BP6LhiLy.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-thumbnails-cVPLoYS6.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-viewers-D4Nn4_BR.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-import-jobs-BSMDOcaj.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-ledger-Ce2VXJ2Z.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-ledger-backend-BUyAOAr6.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-materialization-report-BItOpEbd.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-pack-manifest-BBeCjirT.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-workflow-audio-preview-player-UfPQty9g.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-workflow-audio-waveform-DDRruLeu.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-workflow-cloud-asset-client-T_DLL58P.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-workflow-hosted-asset-materialization-BjuMcGvJ.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-workflow-image-view-scale-Ciewiory.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-workflow-ledger-write-lock-DNMc3Uhr.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-workflow-pixi-spritesheet-BTZveIZ2.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-workflow-preview-resource-lifetime-CGdTixEp.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-workflow-project-asset-commands-0cIEsyFV.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-workflow-project-content-B883NWEX.js +1 -0
- package/dist/assets/volter-sdk-kit-asset-workflow-thumbnail-system-udhK_bK8.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-active-adapter-CaV79Zym.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-active-systems-D-sRD1JD.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-adapter-key-4m95v2b2.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-authoring-asset-url-CHBNmukT.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-bootstrap-state-Dz5hKatn.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-boundary-authoring-adapter-BHValVeR.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-canvas-scene-guides-RexSF-J2.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-composite-authoring-adapter-CbcNeoQ9.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-consumer-actions-CnMS-_cD.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-design-time-layers-Zg9zdDef.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-design-time-mount-registry-DKLgadwc.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-edit-mode-authoring-M81xEMIH.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-empty-project-authoring-DIwvGeWZ.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-instance-source-menu-EmOGzQA_.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-layered-pick-DmtPQOEU.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-mounted-root-subjects-CEz93V3J.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-no-authoring-adapter-mfK9FD-y.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-object3d-document-persistence-R2pfEtvy.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-panel-authoring-VEFAXYyu.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-project-authoring-session-B2qmlVET.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-provenance-CWNbjFfV.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-react-canvas-navigation-BkL1OUf3.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-react-design-canvas-style-DSJif289.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-react-story-board-DEtWuCdl.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-seam-evidence-yrcHmQZ9.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-selection-scope-DVHy1MNQ.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-shell-document-ops-CrTR4pdw.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-story-board-chrome-fit-CzDJyhVH.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-three-root-DGX0pTp1.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-viewport-tool-context-c-RZK1GX.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-viewport-tool-owner-Cea2wigf.js +1 -0
- package/dist/assets/volter-sdk-kit-authoring-world-session-state-N1az4tj8.js +1 -0
- package/dist/assets/volter-sdk-kit-availability-tick-B-AloCSv.js +1 -0
- package/dist/assets/volter-sdk-kit-bitmap-label-D5-Z31T5.js +1 -0
- package/dist/assets/volter-sdk-kit-boot-routing-XVOVyUc_.js +1 -0
- package/dist/assets/volter-sdk-kit-breakpoint-state-D-KEzzvG.js +1 -0
- package/dist/assets/volter-sdk-kit-build-identity-D-zdIjo6.js +1 -0
- package/dist/assets/volter-sdk-kit-bytes-codec-DVfFaFPs.js +1 -0
- package/dist/assets/volter-sdk-kit-cancellation-reason-DnCUNdRD.js +1 -0
- package/dist/assets/volter-sdk-kit-canvas-frames-BGh2p4Ce.js +1 -0
- package/dist/assets/volter-sdk-kit-capture-camera-pose-WspKGBnF.js +1 -0
- package/dist/assets/volter-sdk-kit-capture-size-DSdRe3ay.js +1 -0
- package/dist/assets/volter-sdk-kit-chrome-registry-D4L_4xEJ.js +1 -0
- package/dist/assets/volter-sdk-kit-chrome-slot-registry-Ce1SavKJ.js +1 -0
- package/dist/assets/volter-sdk-kit-collaboration-client-BklHxwDT.js +1 -0
- package/dist/assets/volter-sdk-kit-collaboration-presence-Cbx-Ojaw.js +1 -0
- package/dist/assets/volter-sdk-kit-command-dispatch-Dyhs6OSN.js +1 -0
- package/dist/assets/volter-sdk-kit-command-listener-CHEIOy3c.js +1 -0
- package/dist/assets/volter-sdk-kit-command-registry-CUKeDb9O.js +1 -0
- package/dist/assets/volter-sdk-kit-component-board-registry-BF8BzQDh.js +1 -0
- package/dist/assets/volter-sdk-kit-component-states-registry-RkljZ-Lm.js +1 -0
- package/dist/assets/volter-sdk-kit-components-AlignToolbar-L-1f9zZf.js +1 -0
- package/dist/assets/volter-sdk-kit-components-ApplicationMenus-BKxEMCFq.js +1 -0
- package/dist/assets/volter-sdk-kit-components-AssetEditorShell-ByYpeg3g.js +1 -0
- package/dist/assets/volter-sdk-kit-components-AssetInspectorToolSection-AzQ_b4hk.js +1 -0
- package/dist/assets/volter-sdk-kit-components-BoardRulers-Cjeqdfie.js +1 -0
- package/dist/assets/volter-sdk-kit-components-CanvasAddNodeDialogs-BOfMdh1M.js +1 -0
- package/dist/assets/volter-sdk-kit-components-CanvasSceneViewport-rZGGuOwh.js +1 -0
- package/dist/assets/volter-sdk-kit-components-ChromeSlot-CYRqS-XZ.js +1 -0
- package/dist/assets/volter-sdk-kit-components-CodeView-CZ4K-R4r.js +1 -0
- package/dist/assets/volter-sdk-kit-components-CompactInspectorShell-C0Jzb6sx.js +1 -0
- package/dist/assets/volter-sdk-kit-components-ConsolePanel-vTD-MnSe.js +1 -0
- package/dist/assets/volter-sdk-kit-components-GameplaySessionTimeline-fQY5p6rX.js +1 -0
- package/dist/assets/volter-sdk-kit-components-InspectionProjection-Dn7ly9U9.js +1 -0
- package/dist/assets/volter-sdk-kit-components-Inspector-DlXSsDRU.js +1 -0
- package/dist/assets/volter-sdk-kit-components-InspectorCanvasPreview-D2fHAo8Q.js +1 -0
- package/dist/assets/volter-sdk-kit-components-InspectorFieldsSection-BACKigHR.js +1 -0
- package/dist/assets/volter-sdk-kit-components-InspectorStoriesSection-C2tFcY5Z.js +1 -0
- package/dist/assets/volter-sdk-kit-components-InspectorToolSection-CKxWWFgq.js +1 -0
- package/dist/assets/volter-sdk-kit-components-InspectorTransformSection-BscOuHaz.js +1 -0
- package/dist/assets/volter-sdk-kit-components-LightExplorerPanel-Czgrsno8.js +1 -0
- package/dist/assets/volter-sdk-kit-components-MediaProperties-4JJy007U.js +1 -0
- package/dist/assets/volter-sdk-kit-components-ProjectHeader-CHXnXf4V.js +1 -0
- package/dist/assets/volter-sdk-kit-components-ReactCanvasControls-CjQh_ckk.js +1 -0
- package/dist/assets/volter-sdk-kit-components-RootSelectionOverlay-CIhN8hQt.js +1 -0
- package/dist/assets/volter-sdk-kit-components-RootTextEditor-Bh2YKApp.js +1 -0
- package/dist/assets/volter-sdk-kit-components-SaveStatus-BD-zOD-c.js +1 -0
- package/dist/assets/volter-sdk-kit-components-SurfaceCrashBoundary-BH1PNp8a.js +1 -0
- package/dist/assets/volter-sdk-kit-components-SurfaceStateOverlay-C4IvdpGQ.js +1 -0
- package/dist/assets/volter-sdk-kit-components-ToolContributionSurfaces-CtiZX-C_.js +1 -0
- package/dist/assets/volter-sdk-kit-components-ToolHost-DLj25ucp.js +1 -0
- package/dist/assets/volter-sdk-kit-components-Toolbar-DOHf2NES.js +1 -0
- package/dist/assets/volter-sdk-kit-components-TransientHint-zFA_MLx1.js +1 -0
- package/dist/assets/volter-sdk-kit-components-VersionControlSection-C9By_77E.js +1 -0
- package/dist/assets/volter-sdk-kit-components-ViewportOverlaysMenu-vr4do7lA.js +1 -0
- package/dist/assets/volter-sdk-kit-components-VolterLogo-DS8HqAPp.js +1 -0
- package/dist/assets/volter-sdk-kit-components-WorktreeSwitcher-DIEnM6m4.js +1 -0
- package/dist/assets/volter-sdk-kit-components-account-documents-C-kuLuRW.js +1 -0
- package/dist/assets/volter-sdk-kit-components-asset-documents-wvxuPzJN.js +1 -0
- package/dist/assets/volter-sdk-kit-components-asset-editor-persistence-DRbF9-yC.js +1 -0
- package/dist/assets/volter-sdk-kit-components-asset-selection-section-D-iE-RCy.js +1 -0
- package/dist/assets/volter-sdk-kit-components-asset-thumbnails-D3TyvHrp.js +1 -0
- package/dist/assets/volter-sdk-kit-components-asset-viewers-AudioViewer-Dk2jKOhT.js +1 -0
- package/dist/assets/volter-sdk-kit-components-asset-viewers-GenericJsonViewer-_nthvrZy.js +1 -0
- package/dist/assets/volter-sdk-kit-components-asset-viewers-ImageViewer-i-UhuMgF.js +1 -0
- package/dist/assets/volter-sdk-kit-components-asset-viewers-JsonAssetDocument-CzBAEr0C.js +1 -0
- package/dist/assets/volter-sdk-kit-components-asset-viewers-OnlineAssetDetail-CyV7UI3C.js +1 -0
- package/dist/assets/volter-sdk-kit-components-asset-viewers-SourceAssetViewer-Bd3a2_oA.js +1 -0
- package/dist/assets/volter-sdk-kit-components-asset-viewers-SpritesheetSpriteView-B0oBgcRW.js +1 -0
- package/dist/assets/volter-sdk-kit-components-asset-viewers-VideoViewer-Ad0PtQNX.js +1 -0
- package/dist/assets/volter-sdk-kit-components-asset-viewers-shader-source-BcRGAaa4.js +1 -0
- package/dist/assets/volter-sdk-kit-components-board-guides-DlFbMQZl.js +1 -0
- package/dist/assets/volter-sdk-kit-components-canvas-scene-hotkeys-C-WHgNDO.js +1 -0
- package/dist/assets/volter-sdk-kit-components-canvas-temporary-pivot-CqErnLHB.js +1 -0
- package/dist/assets/volter-sdk-kit-components-core-utilities-B339nXVW.js +1 -0
- package/dist/assets/volter-sdk-kit-components-inspector-preview-section-fv1kHl0P.js +1 -0
- package/dist/assets/volter-sdk-kit-components-inspector-revert-label-CGouljBF.js +1 -0
- package/dist/assets/volter-sdk-kit-components-inspector-selection-svwL5thP.js +1 -0
- package/dist/assets/volter-sdk-kit-components-inspector-stories-gating-CXI8Z8PL.js +1 -0
- package/dist/assets/volter-sdk-kit-components-inspector-transform-B6n6Cdof.js +1 -0
- package/dist/assets/volter-sdk-kit-components-inspector-transform-subject-C3qg6v_f.js +1 -0
- package/dist/assets/volter-sdk-kit-components-kind-documents-W8USaiPh.js +1 -0
- package/dist/assets/volter-sdk-kit-components-primitives-DraftColorInput-Dd4u-Wtm.js +1 -0
- package/dist/assets/volter-sdk-kit-components-project-tool-documents-DFq82d8o.js +1 -0
- package/dist/assets/volter-sdk-kit-components-scene-documents-B73lYyVv.js +1 -0
- package/dist/assets/volter-sdk-kit-components-status-contributions-FTso27Xh.js +1 -0
- package/dist/assets/volter-sdk-kit-components-tool-documents-BbGwfFpc.js +1 -0
- package/dist/assets/volter-sdk-kit-components-tool-schema-form-BIF8LmJV.js +1 -0
- package/dist/assets/volter-sdk-kit-components-use-after-paint-CtKNo2UU.js +1 -0
- package/dist/assets/volter-sdk-kit-components-use-project-image-assets-G7f6izdS.js +1 -0
- package/dist/assets/volter-sdk-kit-components-workspace-history-B2vo6Xx_.js +1 -0
- package/dist/assets/volter-sdk-kit-components-world-documents-B5tULKmS.js +1 -0
- package/dist/assets/volter-sdk-kit-components-world-overlay-gestures-DDEiWrz7.js +1 -0
- package/dist/assets/volter-sdk-kit-composite-screenshot-BMOK3iYM.js +1 -0
- package/dist/assets/volter-sdk-kit-content-entry-source-registry-B9eUIMgv.js +1 -0
- package/dist/assets/volter-sdk-kit-contribution-surfaces-DC-uHDQg.js +1 -0
- package/dist/assets/volter-sdk-kit-coverage-canvas-reveal-DiRNBVRN.js +1 -0
- package/dist/assets/volter-sdk-kit-coverage-design-time-surfaces-Csc86Z_f.js +1 -0
- package/dist/assets/volter-sdk-kit-coverage-ontology-invariants-Brd3w7kt.js +1 -0
- package/dist/assets/volter-sdk-kit-coverage-session-vitals-BoNy6hEZ.js +1 -0
- package/dist/assets/volter-sdk-kit-creation-site-registry-CdhSUaPD.js +1 -0
- package/dist/assets/volter-sdk-kit-delegate-harness-registry-CHNkXHhB.js +1 -0
- package/dist/assets/volter-sdk-kit-document-areas-7iD_pTF6.js +1 -0
- package/dist/assets/volter-sdk-kit-document-context-registry-6DcBS8uQ.js +1 -0
- package/dist/assets/volter-sdk-kit-document-open-registry-CS2V2rTe.js +1 -0
- package/dist/assets/volter-sdk-kit-document-play-extension-DyULINB5.js +1 -0
- package/dist/assets/volter-sdk-kit-document-preview-source-YxLsIauQ.js +1 -0
- package/dist/assets/volter-sdk-kit-document-renderer-session-IoKOp6Se.js +1 -0
- package/dist/assets/volter-sdk-kit-document-stage-sessions-DSmPpree.js +1 -0
- package/dist/assets/volter-sdk-kit-document-viewports-CvdifVJF.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-api-CB1FgcVg.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-chrome-capture-B-e-WKT4.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-commands-BYWHMTwS.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-console-jCw-ErXD.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-current-view-CbBqd-eR.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-document-probe-BC-zqNPD.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-git-client-BQQFtPz9.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-hotkeys-BzoxjaxK.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-lease-B_3921d6.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-lease-view-Dwm149iL.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-mode-DOBZoYnf.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-notifications-BfExd624.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-presence-DNnOAqPS.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-presentation-activity-CFp63FEl.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-presentation-notice-Df1-39oQ.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-runtime-CCziNuJh.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-server-response-DJiPWdEl.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-session-attribution-qdIqiRBe.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-session-mode-r0EdgfW4.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-state-facets-ChaCu38O.js +1 -0
- package/dist/assets/volter-sdk-kit-editor-view-presentation-Dp6RpQY2.js +1 -0
- package/dist/assets/volter-sdk-kit-environment-images-BUDsa8Yi.js +1 -0
- package/dist/assets/volter-sdk-kit-eyedropper-session-CuB0NOuY.js +1 -0
- package/dist/assets/volter-sdk-kit-files-file-provider-DIDQ2_uI.js +1 -0
- package/dist/assets/volter-sdk-kit-files-project-files-CQvJk0Gq.js +1 -0
- package/dist/assets/volter-sdk-kit-finders-index-DKfmE3QQ.js +1 -0
- package/dist/assets/volter-sdk-kit-finders-scenes-from-entrypoint-selection-CmiBcR6h.js +1 -0
- package/dist/assets/volter-sdk-kit-frame-frame-parts-Dva44YHz.js +1 -0
- package/dist/assets/volter-sdk-kit-framed-document-capture-DB3Ncfrz.js +1 -0
- package/dist/assets/volter-sdk-kit-game-surface-defaults-Cj-0v8BH.js +1 -0
- package/dist/assets/volter-sdk-kit-gameplay-export-state-Xf39gCAN.js +1 -0
- package/dist/assets/volter-sdk-kit-gameplay-replay-F8jJrsPf.js +1 -0
- package/dist/assets/volter-sdk-kit-gameplay-session-time-DTTj1olA.js +1 -0
- package/dist/assets/volter-sdk-kit-gameplay-sessions-CxKyk9Md.js +1 -0
- package/dist/assets/volter-sdk-kit-hierarchy-component-marks-BabNBUji.js +1 -0
- package/dist/assets/volter-sdk-kit-hierarchy-internals-CoK3Z_Xh.js +1 -0
- package/dist/assets/volter-sdk-kit-hierarchy-kind-icon-Cm6Wsuhy.js +1 -0
- package/dist/assets/volter-sdk-kit-hierarchy-menu-registry-DaGff9wa.js +1 -0
- package/dist/assets/volter-sdk-kit-hierarchy-node-rows-BcRUZUvZ.js +1 -0
- package/dist/assets/volter-sdk-kit-hierarchy-panel-view-BZoc7eJQ.js +1 -0
- package/dist/assets/volter-sdk-kit-hierarchy-projection-CHs2jgL8.js +1 -0
- package/dist/assets/volter-sdk-kit-hierarchy-row-media-PFIeRJqY.js +1 -0
- package/dist/assets/volter-sdk-kit-hierarchy-row-model-Cw1It5is.js +1 -0
- package/dist/assets/volter-sdk-kit-hierarchy-rows-Dssu1BMj.js +1 -0
- package/dist/assets/volter-sdk-kit-hierarchy-walk-B1L9eTXm.js +1 -0
- package/dist/assets/volter-sdk-kit-history-editor-session-BtVV5q7v.js +1 -0
- package/dist/assets/volter-sdk-kit-history-history-commands-TABAJNSR.js +1 -0
- package/dist/assets/volter-sdk-kit-history-history-delegate-DeK2Tm-B.js +1 -0
- package/dist/assets/volter-sdk-kit-history-history-limit-notices-BVoYaGBF.js +1 -0
- package/dist/assets/volter-sdk-kit-history-history-service-BHBRoss1.js +1 -0
- package/dist/assets/volter-sdk-kit-history-persistence-coordinator-n84--IYf.js +1 -0
- package/dist/assets/volter-sdk-kit-history-project-file-history-CcXjOv2P.js +1 -0
- package/dist/assets/volter-sdk-kit-history-project-root-history-backends-DTX8q5fG.js +1 -0
- package/dist/assets/volter-sdk-kit-history-resource-registry-CLkqOjdr.js +1 -0
- package/dist/assets/volter-sdk-kit-history-snapshot-store-DycW6GLB.js +1 -0
- package/dist/assets/volter-sdk-kit-history-source-history-backend-9xMoYlbd.js +1 -0
- package/dist/assets/volter-sdk-kit-hmr-registration-group-DmMHpNnB.js +1 -0
- package/dist/assets/volter-sdk-kit-hmr-stable-react-context-D-TLq4Hc.js +1 -0
- package/dist/assets/volter-sdk-kit-hotkeys-XirVHMg5.js +1 -0
- package/dist/assets/volter-sdk-kit-inference-diagnostics-CXk1gv7L.js +1 -0
- package/dist/assets/volter-sdk-kit-initial-project-Cbnj6h8K.js +1 -0
- package/dist/assets/volter-sdk-kit-inspection-active-subject-CZRJ1Iol.js +1 -0
- package/dist/assets/volter-sdk-kit-inspection-active-surface-gAahXjP2.js +1 -0
- package/dist/assets/volter-sdk-kit-inspection-compose-subject-BBlLRs6P.js +1 -0
- package/dist/assets/volter-sdk-kit-inspection-display-D546j-bp.js +1 -0
- package/dist/assets/volter-sdk-kit-inspection-document-subject-DDqyp_xw.js +1 -0
- package/dist/assets/volter-sdk-kit-inspection-game-subject-sQwCYXs1.js +1 -0
- package/dist/assets/volter-sdk-kit-inspection-model-DC9Hl3cj.js +1 -0
- package/dist/assets/volter-sdk-kit-inspection-node-media-DjPyEqvx.js +1 -0
- package/dist/assets/volter-sdk-kit-inspection-null-subject-Ct7EGK3P.js +1 -0
- package/dist/assets/volter-sdk-kit-inspection-serialize-Bq6tap3p.js +1 -0
- package/dist/assets/volter-sdk-kit-inspection-use-active-inspection-C_yp3gfW.js +1 -0
- package/dist/assets/volter-sdk-kit-inspector-presentation-Di1bDrzW.js +1 -0
- package/dist/assets/volter-sdk-kit-inspector-property-grouping-Hrg_OJm5.js +1 -0
- package/dist/assets/volter-sdk-kit-inspector-section-registry-CvrpGvES.js +1 -0
- package/dist/assets/volter-sdk-kit-instance-source-actions-BCuKBxGf.js +1 -0
- package/dist/assets/volter-sdk-kit-js-heap-KxSszS6k.js +1 -0
- package/dist/assets/volter-sdk-kit-key-actions-Wz9BljgB.js +1 -0
- package/dist/assets/volter-sdk-kit-keymap-presets-GXj7fO30.js +1 -0
- package/dist/assets/volter-sdk-kit-layout-policy-cFlperJi.js +1 -0
- package/dist/assets/volter-sdk-kit-light-explorer-model-CkrLkUUZ.js +1 -0
- package/dist/assets/volter-sdk-kit-live-canvas-frame-CIEkO3Ed.js +1 -0
- package/dist/assets/volter-sdk-kit-live-document-DhUo-Edg.js +1 -0
- package/dist/assets/volter-sdk-kit-live-gesture-lock-CMfHfSyJ.js +1 -0
- package/dist/assets/volter-sdk-kit-live-seam-evidence-BwAIj8fP.js +1 -0
- package/dist/assets/volter-sdk-kit-live-session-registry-DLpuZ5fm.js +1 -0
- package/dist/assets/volter-sdk-kit-live-transition-CzY_KNsh.js +1 -0
- package/dist/assets/volter-sdk-kit-manifest-project-D966gGPJ.js +1 -0
- package/dist/assets/volter-sdk-kit-module-fetch-diagnosis-BhBAOyzv.js +1 -0
- package/dist/assets/volter-sdk-kit-mount-failure-report-uZuQLIak.js +1 -0
- package/dist/assets/volter-sdk-kit-native-selection-style-DWR8dlSz.js +1 -0
- package/dist/assets/volter-sdk-kit-object3d-document-write-policy-Bj_jp-7_.js +1 -0
- package/dist/assets/volter-sdk-kit-packaged-runtime-iG7YMb12.js +1 -0
- package/dist/assets/volter-sdk-kit-performance-profiler-CNmFMe3k.js +1 -0
- package/dist/assets/volter-sdk-kit-performance-sources-Dn00aXW5.js +1 -0
- package/dist/assets/volter-sdk-kit-photograph-notice-Dfg0UxVZ.js +1 -0
- package/dist/assets/volter-sdk-kit-play-boot-phase-CXNgzv-J.js +1 -0
- package/dist/assets/volter-sdk-kit-play-camera-flight-DLwGfpJp.js +1 -0
- package/dist/assets/volter-sdk-kit-presentation-surface-cMmRpkGJ.js +1 -0
- package/dist/assets/volter-sdk-kit-product-command-Bu6DLKpE.js +1 -0
- package/dist/assets/volter-sdk-kit-project-adapter-BuzQScGI.js +1 -0
- package/dist/assets/volter-sdk-kit-project-asset-refresh-Bap7mqgb.js +1 -0
- package/dist/assets/volter-sdk-kit-project-asset-roots-By8xlXHl.js +1 -0
- package/dist/assets/volter-sdk-kit-project-local-state-ChdRwLow.js +1 -0
- package/dist/assets/volter-sdk-kit-project-manager-CLiEnNgu.js +1 -0
- package/dist/assets/volter-sdk-kit-project-module-changes-BDpD6OsB.js +1 -0
- package/dist/assets/volter-sdk-kit-project-module-split-CVNdzh8m.js +1 -0
- package/dist/assets/volter-sdk-kit-project-provenance-cp2gtKVj.js +1 -0
- package/dist/assets/volter-sdk-kit-project-ready-D8V6Kzge.js +1 -0
- package/dist/assets/volter-sdk-kit-project-shape-CClCrXxY.js +1 -0
- package/dist/assets/volter-sdk-kit-project-tools-CtP3bOpD.js +1 -0
- package/dist/assets/volter-sdk-kit-readiness-D0ouQROM.js +1 -0
- package/dist/assets/volter-sdk-kit-renderer-resource-counts-aXKN0rxR.js +1 -0
- package/dist/assets/volter-sdk-kit-reported-play-state-C-Mib-ba.js +1 -0
- package/dist/assets/volter-sdk-kit-resolve-contributed-command-BM8YcJz7.js +1 -0
- package/dist/assets/volter-sdk-kit-resolve-relative-specifier-CSTX2j7-.js +1 -0
- package/dist/assets/volter-sdk-kit-retained-document-states-QrHnyn4V.js +1 -0
- package/dist/assets/volter-sdk-kit-scene-document-plan-C9wHG6B7.js +1 -0
- package/dist/assets/volter-sdk-kit-scene-live-open-CXb4AskH.js +1 -0
- package/dist/assets/volter-sdk-kit-scoped-game-css-FdsRmDqV.js +1 -0
- package/dist/assets/volter-sdk-kit-served-url-DIf-qLum.js +1 -0
- package/dist/assets/volter-sdk-kit-session-close-COfy5ras.js +1 -0
- package/dist/assets/volter-sdk-kit-session-tombstone-BitY9Sdx.js +1 -0
- package/dist/assets/volter-sdk-kit-settings-settings-provider-BPuTDIxn.js +1 -0
- package/dist/assets/volter-sdk-kit-settings-store-BPOsFHZe.js +1 -0
- package/dist/assets/volter-sdk-kit-shell-store-DwHeZ5nQ.js +1 -0
- package/dist/assets/volter-sdk-kit-shell-store-door-BWHcu98B.js +1 -0
- package/dist/assets/volter-sdk-kit-source-conflict-CkxYCMk1.js +1 -0
- package/dist/assets/volter-sdk-kit-stage-context-CP-upNgr.js +1 -0
- package/dist/assets/volter-sdk-kit-stage-invalidation-CeDdEl0b.js +1 -0
- package/dist/assets/volter-sdk-kit-stage-store-registry-B2jyIREA.js +1 -0
- package/dist/assets/volter-sdk-kit-startup-failure-DWjZgwSJ.js +1 -0
- package/dist/assets/volter-sdk-kit-state-report-deferral-Dzam5Bu-.js +1 -0
- package/dist/assets/volter-sdk-kit-storage-host-files-storage-BxTEyrKN.js +1 -0
- package/dist/assets/volter-sdk-kit-storage-http-storage-T4fMC6Ww.js +1 -0
- package/dist/assets/volter-sdk-kit-storage-index-C2Gf9k45.js +1 -0
- package/dist/assets/volter-sdk-kit-storage-mem-storage-CcdOLba9.js +1 -0
- package/dist/assets/volter-sdk-kit-storage-path-lock-r7SjMxYI.js +1 -0
- package/dist/assets/volter-sdk-kit-storage-paths-BWI0b699.js +1 -0
- package/dist/assets/volter-sdk-kit-stories-StoryPreviewMount-DPyefE_s.js +1 -0
- package/dist/assets/volter-sdk-kit-stories-compose-project-stories-Dz_zorT8.js +1 -0
- package/dist/assets/volter-sdk-kit-stories-prefabs-finder-VOD4Fih8.js +1 -0
- package/dist/assets/volter-sdk-kit-stories-prefabs-from-stories-BbJ4drXs.js +1 -0
- package/dist/assets/volter-sdk-kit-stories-project-story-regions-CPPt7sAc.js +1 -0
- package/dist/assets/volter-sdk-kit-stories-scope-CIIL7T3O.js +1 -0
- package/dist/assets/volter-sdk-kit-stories-story-capture-DMWk2KXY.js +1 -0
- package/dist/assets/volter-sdk-kit-stories-story-declared-medium-Bx-ygbVe.js +1 -0
- package/dist/assets/volter-sdk-kit-stories-story-discovery-CafUDauh.js +1 -0
- package/dist/assets/volter-sdk-kit-stories-story-dom-runtime-CiCD8tr1.js +1 -0
- package/dist/assets/volter-sdk-kit-stories-story-grouping-BRGub3eG.js +1 -0
- package/dist/assets/volter-sdk-kit-stories-story-presentation-Bt3rB_N9.js +1 -0
- package/dist/assets/volter-sdk-kit-stories-story-registry-bF3ym9Kn.js +1 -0
- package/dist/assets/volter-sdk-kit-story-document-openers-R2-yxXGg.js +1 -0
- package/dist/assets/volter-sdk-kit-story-thumbnails-CI-p0jom.js +1 -0
- package/dist/assets/volter-sdk-kit-surface-keyboard-Bclcg_ZX.js +1 -0
- package/dist/assets/volter-sdk-kit-surface-state-OwSMnQPF.js +1 -0
- package/dist/assets/volter-sdk-kit-system-seam-evidence-mhKxMLF-.js +1 -0
- package/dist/assets/volter-sdk-kit-tab-census-BkucfkR2.js +1 -0
- package/dist/assets/volter-sdk-kit-tab-lifecycle-client-xPlJR_Is.js +1 -0
- package/dist/assets/volter-sdk-kit-theme-library-BmQiddws.js +1 -0
- package/dist/assets/volter-sdk-kit-theme-preference-CY62ohS6.js +1 -0
- package/dist/assets/volter-sdk-kit-three-viewport-presentation-C4zfYkP5.js +1 -0
- package/dist/assets/volter-sdk-kit-tool-contribution-play-D-X4TndA.js +1 -0
- package/dist/assets/volter-sdk-kit-tool-loader-Bppn2i0e.js +1 -0
- package/dist/assets/volter-sdk-kit-transform-mode-request-DVP6KCfG.js +1 -0
- package/dist/assets/volter-sdk-kit-transient-hint-znMlkMOz.js +1 -0
- package/dist/assets/volter-sdk-kit-transport-strip-dGQ-YoNm.js +1 -0
- package/dist/assets/volter-sdk-kit-ui-source-file-region-resolver-bA1RQVjN.js +1 -0
- package/dist/assets/volter-sdk-kit-ui-source-inspect-vbzR9DTw.js +1 -0
- package/dist/assets/volter-sdk-kit-ui-source-source-write-backend-jvrPvSXj.js +1 -0
- package/dist/assets/volter-sdk-kit-ui-source-tier-source-write-backend-_aDOX96f.js +1 -0
- package/dist/assets/volter-sdk-kit-user-local-state-C9PMe7ZC.js +1 -0
- package/dist/assets/volter-sdk-kit-viewport-activation-timings-Bl8_neTA.js +1 -0
- package/dist/assets/volter-sdk-kit-viewport-editor-controls-aUeFDe8t.js +1 -0
- package/dist/assets/volter-sdk-kit-viewport-presentation-IbDRhAjA.js +1 -0
- package/dist/assets/volter-sdk-kit-viewport-surface-status-B0m0crzV.js +1 -0
- package/dist/assets/volter-sdk-kit-wait-until-Bby0hAXq.js +1 -0
- package/dist/assets/volter-sdk-kit-worker-call-metrics-JG55IFWY.js +1 -0
- package/dist/assets/volter-sdk-kit-workspace-areas-D-wnNrv1.js +1 -0
- package/dist/assets/volter-sdk-kit-workspace-aux-commands-iFWD7R5b.js +1 -0
- package/dist/assets/volter-sdk-kit-workspace-available-documents-DEOtsr7U.js +1 -0
- package/dist/assets/volter-sdk-kit-workspace-core-utilities-Do_ivM3K.js +1 -0
- package/dist/assets/volter-sdk-kit-workspace-document-ids-CekfZZKH.js +1 -0
- package/dist/assets/volter-sdk-kit-workspace-document-registry-CtvIBYpT.js +1 -0
- package/dist/assets/volter-sdk-kit-workspace-document-restore-VAID48D1.js +1 -0
- package/dist/assets/volter-sdk-kit-workspace-host-commands-Ddx5Tgyl.js +1 -0
- package/dist/assets/volter-sdk-kit-workspace-persistence-gate-CXlifVZM.js +1 -0
- package/dist/assets/volter-sdk-kit-workspace-play-utilities-ByGVJzRW.js +1 -0
- package/dist/assets/volter-sdk-kit-workspace-presets-CjP5LvcE.js +1 -0
- package/dist/assets/volter-sdk-kit-workspace-regions-iau7y1g3.js +1 -0
- package/dist/assets/volter-sdk-kit-workspace-static-panels-B6jKhrp4.js +1 -0
- package/dist/assets/volter-sdk-kit-workspace-status-registry-g8wytHL5.js +1 -0
- package/dist/assets/volter-sdk-kit-workspace-storage-B5hTXq0f.js +1 -0
- package/dist/assets/volter-sdk-kit-workspace-style-LV2J3BUW.js +1 -0
- package/dist/assets/volter-sdk-kit-workspace-utility-commands-Ci_KJODl.js +1 -0
- package/dist/assets/volter-sdk-kit-workspace-utility-registry-BbjESGwy.js +1 -0
- package/dist/assets/volter-sdk-kit-world-adoption-DQ4KT5o5.js +1 -0
- package/dist/assets/volter-sdk-kit-world-canvas-viewport-state-r5rqWOVZ.js +1 -0
- package/dist/assets/volter-sdk-kit-world-document-routing-D-fYy4j5.js +1 -0
- package/dist/assets/volter-sdk-kit-world-pan-state-CMG7tsSx.js +1 -0
- package/dist/assets/volter-sdk-kit-write-pipe-DNEDBnz-.js +1 -0
- package/dist/assets/volter-sdk-layout-arrangements-CHD3ZMFe.js +1 -0
- package/dist/assets/volter-sdk-layouts-CCA7FuOC.js +1 -0
- package/dist/assets/volter-sdk-selection-D0kL_iDi.js +1 -0
- package/dist/assets/volter-sdk-session-command-table-DA_l3-71.js +1 -0
- package/dist/assets/volter-sdk-session-editor-brand-BF7c04d1.js +1 -0
- package/dist/assets/volter-sdk-session-editor-compatibility-DTohfZFv.js +1 -0
- package/dist/assets/volter-sdk-session-editor-control-protocol-BldcSvMF.js +1 -0
- package/dist/assets/volter-sdk-session-entrypoint-selection-readers-C5lBU-ru.js +1 -0
- package/dist/assets/volter-sdk-session-game-css-scope-BU2odzp5.js +1 -0
- package/dist/assets/volter-sdk-session-project-module-url-BXpMu1Rd.js +1 -0
- package/dist/assets/volter-sdk-session-relative-path-guard-QB40XSDf.js +1 -0
- package/dist/assets/volter-sdk-session-tool-contribution-convention-B_nVNyey.js +1 -0
- package/dist/assets/volter-sdk-types-CpvyGiQa.js +1 -0
- package/dist/assets/volter-sdk-views-DJ_MnaUh.js +1 -0
- package/dist/assets/volter-sdk-widgets-design-system-D7xN8pRO.js +1 -0
- package/dist/assets/volter-sdk-widgets-editor-appearance-Crp-pBLJ.js +1 -0
- package/dist/assets/volter-sdk-widgets-editor-material-MHO-HL-5.js +1 -0
- package/dist/assets/volter-sdk-widgets-icon-set-registry-BV2KyS5k.js +1 -0
- package/dist/assets/volter-sdk-widgets-index-Pv9HbBUF.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-AlignmentGrid-vPIEJ2AQ.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-AssetSlotPicker-0kpmltFh.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-BorderEditor-C1igd7oH.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ColorPicker-B2hEex_l.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-CurveEditor-cyhMzK5L.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-FilterEditor-DcQAkx63.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-FontPicker--uOgL4qW.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-GradientEditor-DTAtC77d.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ScrubbableInput-khJ7avew.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ShadowEditor-eiGFiwHP.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-color-utils-Cd-F281s.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-curve-utils-C7uJEWC0.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-index-B5TWzor-.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-shared-DEQKguQB.js +1 -0
- package/dist/assets/volter-sdk-widgets-interactive-edit-scope-Bl0RzyJQ.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Dialog-UyDjvCxC.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Fields-nF0yD3V1.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-List-D34mrQDy.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-StateSurface-CLSEwJ2u.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Surfaces-Bnz6CGdv.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Tabs-BGh2nrPU.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Toolbar-DD17mnjd.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Tree-CCzpKURV.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-AnchoredMenu-rAsZA766.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Button-B1Ppeaoa.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-ColorInput-CHAXdol_.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-DraftTextInput-CnNtxQXT.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-EditorIcon-Cimr9Mco.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-FormControls-CT_S601l.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-HoverPreview-B8HUvMqd.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-JsonInput-B4XDeGeD.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Layout-Bi7EShmW.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Menu-CKIw0gyB.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-NumberInput-Cm3QFgJj.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Panel-Bydp9OuQ.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-SectionHeader-CCux7aOb.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Text-CX8Zqrmp.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-ThemeRootPortal-9ZuvJNaQ.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Tooltip-DQ24NxRN.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Vec3Input-B8ydBBhm.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-banner-tones-DJXfSNS6.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-clamp-to-viewport-BzMgToKr.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-editor-icons-RjhVjrNt.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-panel-header-styles-CaqZYWvq.js +1 -0
- package/dist/assets/volter-sdk-widgets-theme-GZiAnowy.js +1 -0
- package/dist/assets/volter-sdk-widgets-z-index-CvywNZqF.js +1 -0
- package/dist/assets/volter-shared-fontawesome-D0om5i4C.js +1 -0
- package/dist/assets/volter-shared-jsx-dev-runtime-Nf2pZiIO.js +1 -0
- package/dist/assets/volter-shared-jsx-runtime-mOtwwECE.js +1 -0
- package/dist/assets/volter-shared-react-D-xjcqWm.js +1 -0
- package/dist/assets/volter-shared-react-dom-DdRTSMx8.js +1 -0
- package/dist/assets/volter-shared-react-dom-client-WSvYqY8Z.js +1 -0
- package/dist/assets/worker-CxcSX7C7.js +8 -0
- package/dist/volter-shared-react.json +6 -6
- package/dist/volter-shared-sdk.json +462 -461
- package/dist-node/cli.js +16100 -2176
- package/dist-node/create.js +42 -36
- package/package.json +11 -9
- package/starter/AGENTS.md +30 -7
- package/starter/add-play/game-state.ts +25 -0
- package/starter/add-play/game.tsx +16 -0
- package/starter/add-play/model.play.ts +77 -0
- package/starter/package.json +5 -0
- package/starter/playable/src/models/canyon.blend +0 -0
- package/starter/playable/src/models/canyon.play.ts +107 -0
- package/starter/playable/src/models/canyon.py +55 -0
- package/starter/playable/src/models/circuit.py +131 -0
- package/starter/playable/src/models/complete_environment.py +35 -0
- package/starter/playable/src/models/course.ts +12 -0
- package/starter/playable/src/models/detail.py +44 -0
- package/starter/playable/src/models/driver_details.py +25 -0
- package/starter/playable/src/models/environment.py +87 -0
- package/starter/playable/src/models/finish_scene.py +13 -0
- package/starter/playable/src/models/kart_finish.py +31 -0
- package/starter/playable/src/models/polish.py +75 -0
- package/starter/playable/src/models/race-state.ts +15 -0
- package/starter/playable/src/models/refine.py +69 -0
- package/starter/playable/src/models/scene_helpers.py +54 -0
- package/starter/playable/src/models/scenery_ao.py +114 -0
- package/starter/playable/src/textures/asphalt.png +0 -0
- package/starter/playable/src/textures/generate.py +16 -0
- package/starter/playable/src/textures/sandstone.png +0 -0
- package/starter/playable/src/ui/game.stories.tsx +16 -0
- package/starter/playable/src/ui/game.tsx +6 -0
- package/starter/playable/src/ui/race-hud.tsx +29 -0
- package/starter/playable/src/ui/race-widgets.tsx +29 -0
- package/dist/assets/EntityModelDocument-SFx7GJi9.js +0 -1
- package/dist/assets/EnvironmentAssetDocument-CpQnoQK7.js +0 -1
- package/dist/assets/InspectorObjectPreview-DhOKGE_h.js +0 -1
- package/dist/assets/LiveModuleDocument-eahaoeUi.js +0 -2
- package/dist/assets/LutAssetDocument-CTFpkbXP.js +0 -1
- package/dist/assets/ModelAssetDocument-qpaA8PMi.js +0 -1
- package/dist/assets/NonThreeAuthoringBootstrap-Cxat6HDi.js +0 -1
- package/dist/assets/Object3DDocumentToolbar-DAGo1TZr.js +0 -1
- package/dist/assets/Object3DPreview-f5xt7xae.js +0 -2
- package/dist/assets/QuarksAssetDocument-B4GuWtSi.js +0 -2
- package/dist/assets/ShaderAssetDocument-D6UrvTPz.js +0 -1
- package/dist/assets/StageHost-CCbIVhfB.js +0 -1179
- package/dist/assets/ToolObject3DPreview-nevU8Vmi.js +0 -1
- package/dist/assets/ViewportShadingMenu-rbW6zaze.js +0 -1
- package/dist/assets/animation-mixers.service-qLmPXMph.js +0 -1
- package/dist/assets/animation-timeline.utility-Cepgwl9G.js +0 -1
- package/dist/assets/asset-preview-C3dOTcRY.js +0 -4
- package/dist/assets/blender-emscripten-engine-DnJ85_-l.js +0 -2
- package/dist/assets/blender-node-editor.document-BjpzVLc9.js +0 -1
- package/dist/assets/blender-properties-model-BNV7uq3w.js +0 -1
- package/dist/assets/blender-properties-tab-BoiBE9VB.js +0 -3
- package/dist/assets/blender-runtime-host-DKW0D0Bb.js +0 -7221
- package/dist/assets/blender-runtime.document-xKuVNUX7.js +0 -13
- package/dist/assets/blender-screenshot.menu-c6UvFn7v.js +0 -1
- package/dist/assets/blender-timeline.document-_vgbH_K5.js +0 -1
- package/dist/assets/blender-uv-editor.document-CjOx4LD3.js +0 -1
- package/dist/assets/blender-version.status-GBqitUon.js +0 -1
- package/dist/assets/blender-wali-engine-x-OfFUGX.js +0 -2
- package/dist/assets/blender.command-CYOL3BTf.js +0 -1
- package/dist/assets/blender.status-BYUrfsCR.js +0 -1
- package/dist/assets/model-inspection-DGW_rNdi.js +0 -1
- package/dist/assets/models.finder-C2OdvWDn.js +0 -1
- package/dist/assets/object3d-document-session-registry-BkSfsQD9.js +0 -2
- package/dist/assets/play-mode-Bfa-EEKv.js +0 -1
- package/dist/assets/product-4XoIi8-H.js +0 -14
- package/dist/assets/properties-bone-constraints.inspector-De28M-3w.js +0 -1
- package/dist/assets/properties-bone.inspector-Dwl_8RHa.js +0 -1
- package/dist/assets/properties-collection.inspector-zgL35H1s.js +0 -1
- package/dist/assets/properties-constraints.inspector-C4HmYG4b.js +0 -1
- package/dist/assets/properties-data.inspector-C84mWYEx.js +0 -1
- package/dist/assets/properties-material.inspector-EXqO4JLk.js +0 -1
- package/dist/assets/properties-modifiers.inspector-B5-5UoW_.js +0 -1
- package/dist/assets/properties-object.inspector-CacLETan.js +0 -1
- package/dist/assets/properties-output.inspector-DpGmXWef.js +0 -1
- package/dist/assets/properties-particles.inspector-XTVoWTZq.js +0 -1
- package/dist/assets/properties-physics.inspector-DlhF0h-n.js +0 -1
- package/dist/assets/properties-render.inspector-Dpnfz8vA.js +0 -1
- package/dist/assets/properties-scene.inspector-DqOfknkg.js +0 -1
- package/dist/assets/properties-texture.inspector-WD0VfQaG.js +0 -1
- package/dist/assets/properties-view-layer.inspector-DWFckdDj.js +0 -1
- package/dist/assets/properties-world.inspector-DcqJkcHc.js +0 -1
- package/dist/assets/react-18-AEAPuaAj.js +0 -1
- package/dist/assets/session-rpZf0raD.js +0 -5972
- package/dist/assets/stage-keyboard-ChQ8dJ_y.js +0 -1
- package/dist/assets/stage-overlay-set-PfEXKWA6.js +0 -1
- package/dist/assets/stage-presence-markers-Dnxnhx_2.js +0 -1
- package/dist/assets/stage-transform-tools-mFUKm77V.js +0 -1
- package/dist/assets/standard-viewport-dressing-DChZYVlW.js +0 -24
- package/dist/assets/three-integration.service-C6HNczqS.js +0 -2
- package/dist/assets/volter-sdk-CjkJnQ6d.js +0 -2363
- package/dist/assets/volter-sdk-account-DZEQFuaU.js +0 -1
- package/dist/assets/volter-sdk-client-D6tlzH-t.js +0 -1
- package/dist/assets/volter-sdk-contributions-Cl4ThyFT.js +0 -1
- package/dist/assets/volter-sdk-css-numeric-style-BSayA78S.js +0 -1
- package/dist/assets/volter-sdk-document-probe-rU9NBzUS.js +0 -1
- package/dist/assets/volter-sdk-editor-view-DfxbbN7q.js +0 -1
- package/dist/assets/volter-sdk-host-Dy6XofbJ.js +0 -1
- package/dist/assets/volter-sdk-http-transport.browser-Co0YCwat.js +0 -1
- package/dist/assets/volter-sdk-index-B2ws1and.js +0 -1
- package/dist/assets/volter-sdk-kit-CapabilityCoverageSection-CBEHQx0y.js +0 -1
- package/dist/assets/volter-sdk-kit-account-client-CLa-z4XH.js +0 -1
- package/dist/assets/volter-sdk-kit-action-registry-ifQNLVPb.js +0 -1
- package/dist/assets/volter-sdk-kit-active-product-v7CkKfFz.js +0 -1
- package/dist/assets/volter-sdk-kit-active-project-Di0hQPIg.js +0 -1
- package/dist/assets/volter-sdk-kit-adapter-editor-config-fdw01apb.js +0 -1
- package/dist/assets/volter-sdk-kit-adapter-observation-CW92skZV.js +0 -1
- package/dist/assets/volter-sdk-kit-animation-animation-clock-B3sM2uit.js +0 -1
- package/dist/assets/volter-sdk-kit-animation-stage-transport-JvYidVYX.js +0 -1
- package/dist/assets/volter-sdk-kit-api-assets-D7VbukcI.js +0 -1
- package/dist/assets/volter-sdk-kit-api-base-DerHHtTE.js +0 -1
- package/dist/assets/volter-sdk-kit-api-build-CeuJY-Zz.js +0 -1
- package/dist/assets/volter-sdk-kit-api-logs-1pMi7TTm.js +0 -1
- package/dist/assets/volter-sdk-kit-api-project-identity-CBU8Hed0.js +0 -1
- package/dist/assets/volter-sdk-kit-api-project-open-D067PXCw.js +0 -1
- package/dist/assets/volter-sdk-kit-api-project-source-Bho3j6pZ.js +0 -1
- package/dist/assets/volter-sdk-kit-api-project-state-BKh_xLbJ.js +0 -1
- package/dist/assets/volter-sdk-kit-api-relay-CC-iWi7D.js +0 -1
- package/dist/assets/volter-sdk-kit-api-settings-sot6qLo3.js +0 -1
- package/dist/assets/volter-sdk-kit-api-themes-Cc-af_-d.js +0 -1
- package/dist/assets/volter-sdk-kit-api-worktrees-D1GTPFtv.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-capabilities-CNOHj_kb.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-compare-core-CXAda1bF.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-editor-context-DsUk8Th6.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-events-BL8DRoc8.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-inspector-actions-0o9QNJKn.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-selection-B3xjSJGy.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-selection-viewer-registry-SEv2CkwZ.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-thumbnails-Dljbgkxh.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-viewers-CxZRO5JV.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-import-jobs-DqIPpnfC.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-ledger-D1KEb0Ey.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-ledger-backend-D6HUnLJm.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-materialization-report-By1Yv3wm.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-pack-manifest-DisvezHH.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-audio-preview-player-BwwiLB40.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-audio-waveform-FrA-pulC.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-cloud-asset-client-DDI1Kwjv.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-hosted-asset-materialization-CzPpDfqY.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-image-view-scale-DdWpOH6e.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-ledger-write-lock-Cqtyka10.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-pixi-spritesheet-BUxJUIx-.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-preview-resource-lifetime-Dpvl0ufz.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-project-asset-commands-Clt-ftCc.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-project-content-BO7LgDmE.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-thumbnail-system-CCoxMBjk.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-active-adapter-Po4bB0Uj.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-active-systems-B1Bx10Aq.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-adapter-key-BlWE7I0N.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-authoring-asset-url-SOwAcp48.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-bootstrap-state-DnBU8nzt.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-boundary-authoring-adapter-BFAbj3pB.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-canvas-scene-guides-DOJYMXPn.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-composite-authoring-adapter-BoBcdwww.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-consumer-actions-DeU9WESz.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-design-time-layers-ZcfipFHX.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-design-time-mount-registry-4mdJO8W-.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-edit-mode-authoring-Bymo2_8C.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-empty-project-authoring-BeRaeFRT.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-instance-source-menu-De7LQ6t6.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-layered-pick-DMVOLo1B.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-mounted-root-subjects-CXLwIbEX.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-no-authoring-adapter-D_y8WcS6.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-object3d-document-persistence-B8wcp7IQ.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-panel-authoring-sbvO6626.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-project-authoring-session-Cykydx2J.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-provenance-D0b1PE71.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-react-canvas-navigation-CSwEgzI6.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-react-design-canvas-style-Cl2M3OV0.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-react-story-board-bTjtW2CO.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-seam-evidence-pkdnkJtV.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-selection-scope-DVgEaPQM.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-shell-document-ops-BbuK7pxG.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-story-board-chrome-fit-OFpXQxIF.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-three-root-BkH3AlEt.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-viewport-tool-context-Cr0fa0Hl.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-viewport-tool-owner-DTnGce_x.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-world-session-state-D5Aqfbm8.js +0 -1
- package/dist/assets/volter-sdk-kit-availability-tick-h3DHQ7AK.js +0 -1
- package/dist/assets/volter-sdk-kit-bitmap-label-nN7zK7TR.js +0 -1
- package/dist/assets/volter-sdk-kit-boot-routing-mm6XL4_m.js +0 -1
- package/dist/assets/volter-sdk-kit-breakpoint-state-BhIvquyw.js +0 -1
- package/dist/assets/volter-sdk-kit-build-identity-BUHMFgej.js +0 -1
- package/dist/assets/volter-sdk-kit-bytes-codec-j4IdoVn0.js +0 -1
- package/dist/assets/volter-sdk-kit-cancellation-reason-D-nMBP2I.js +0 -1
- package/dist/assets/volter-sdk-kit-canvas-frames-DEW6SW_n.js +0 -1
- package/dist/assets/volter-sdk-kit-capture-camera-pose-lHuE4-F1.js +0 -1
- package/dist/assets/volter-sdk-kit-capture-size-CfI__WD3.js +0 -1
- package/dist/assets/volter-sdk-kit-chrome-registry-DQC9TBMd.js +0 -1
- package/dist/assets/volter-sdk-kit-chrome-slot-registry-BaA2m-hW.js +0 -1
- package/dist/assets/volter-sdk-kit-collaboration-client-BgCs9YmN.js +0 -1
- package/dist/assets/volter-sdk-kit-collaboration-presence-zP8Qm_Wp.js +0 -1
- package/dist/assets/volter-sdk-kit-command-dispatch-DMN1cHQ0.js +0 -1
- package/dist/assets/volter-sdk-kit-command-listener-Bi6V9vZY.js +0 -1
- package/dist/assets/volter-sdk-kit-command-registry-CbwwOUlX.js +0 -1
- package/dist/assets/volter-sdk-kit-component-board-registry-DuKMXXDn.js +0 -1
- package/dist/assets/volter-sdk-kit-component-states-registry-C8fPwGac.js +0 -1
- package/dist/assets/volter-sdk-kit-components-AlignToolbar-DI9H0cLf.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ApplicationMenus-0EFLpJl3.js +0 -1
- package/dist/assets/volter-sdk-kit-components-AssetEditorShell-W9E9Idk3.js +0 -1
- package/dist/assets/volter-sdk-kit-components-AssetInspectorToolSection-B9C8g1u8.js +0 -1
- package/dist/assets/volter-sdk-kit-components-BoardRulers-TvtGoLvw.js +0 -1
- package/dist/assets/volter-sdk-kit-components-CanvasAddNodeDialogs-BbT71ZLs.js +0 -1
- package/dist/assets/volter-sdk-kit-components-CanvasSceneViewport-DMlRqvRX.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ChromeSlot-CBMhERxH.js +0 -1
- package/dist/assets/volter-sdk-kit-components-CodeView-DaFrODJ5.js +0 -1
- package/dist/assets/volter-sdk-kit-components-CompactInspectorShell-DAU9Rz8t.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ConsolePanel-DL9PRS8g.js +0 -1
- package/dist/assets/volter-sdk-kit-components-GameplaySessionTimeline-BQM829E_.js +0 -1
- package/dist/assets/volter-sdk-kit-components-InspectionProjection-ct5F1-5f.js +0 -1
- package/dist/assets/volter-sdk-kit-components-Inspector-D_LqAGkl.js +0 -1
- package/dist/assets/volter-sdk-kit-components-InspectorCanvasPreview-BE7YIVKr.js +0 -1
- package/dist/assets/volter-sdk-kit-components-InspectorFieldsSection-m9xPIIHr.js +0 -1
- package/dist/assets/volter-sdk-kit-components-InspectorStoriesSection-ZlS3c7i5.js +0 -1
- package/dist/assets/volter-sdk-kit-components-InspectorToolSection-B0nuZPLk.js +0 -1
- package/dist/assets/volter-sdk-kit-components-InspectorTransformSection-nkjme0st.js +0 -1
- package/dist/assets/volter-sdk-kit-components-LightExplorerPanel-BWEMMDqF.js +0 -1
- package/dist/assets/volter-sdk-kit-components-MediaProperties-D7iIz70v.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ProjectHeader-BGak497E.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ReactCanvasControls-DC8ly4DP.js +0 -1
- package/dist/assets/volter-sdk-kit-components-RootSelectionOverlay-BgFEsPuR.js +0 -1
- package/dist/assets/volter-sdk-kit-components-RootTextEditor-D5kNPJPO.js +0 -1
- package/dist/assets/volter-sdk-kit-components-SaveStatus-DUcBxh5_.js +0 -1
- package/dist/assets/volter-sdk-kit-components-SurfaceCrashBoundary-DS5fFxXL.js +0 -1
- package/dist/assets/volter-sdk-kit-components-SurfaceStateOverlay-LQ6wer_f.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ToolContributionSurfaces-CsA2zXqR.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ToolHost-CCgNWoYQ.js +0 -1
- package/dist/assets/volter-sdk-kit-components-Toolbar-BcFqLTKO.js +0 -1
- package/dist/assets/volter-sdk-kit-components-TransientHint-BJ8PYeZC.js +0 -1
- package/dist/assets/volter-sdk-kit-components-VersionControlSection-DmfeMks1.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ViewportOverlaysMenu-CgfsJe_1.js +0 -1
- package/dist/assets/volter-sdk-kit-components-VolterLogo-Bsb05O0W.js +0 -1
- package/dist/assets/volter-sdk-kit-components-WorktreeSwitcher-DHIF6Kg1.js +0 -1
- package/dist/assets/volter-sdk-kit-components-account-documents-CwYhcEZA.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-documents-DyPZbhVR.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-editor-persistence-DFyUUrtF.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-selection-section-CcmRV0Bv.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-thumbnails-CVmK39Vm.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-AudioViewer-C7t9xXsJ.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-GenericJsonViewer-DyOUPMrf.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-ImageViewer-BZVLIpzi.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-JsonAssetDocument-MFzv1JKl.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-OnlineAssetDetail-C1I6t0XF.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-SourceAssetViewer-TSnI0wjc.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-SpritesheetSpriteView-DisNEKau.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-VideoViewer-CT1gLpCM.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-shader-source-D-ByF1Z9.js +0 -1
- package/dist/assets/volter-sdk-kit-components-board-guides-C3ZEj1WY.js +0 -1
- package/dist/assets/volter-sdk-kit-components-canvas-scene-hotkeys-BQ9gavD1.js +0 -1
- package/dist/assets/volter-sdk-kit-components-canvas-temporary-pivot-DVB2TYkq.js +0 -1
- package/dist/assets/volter-sdk-kit-components-core-utilities-inT-Nle5.js +0 -1
- package/dist/assets/volter-sdk-kit-components-inspector-preview-section-vfZoaY5P.js +0 -1
- package/dist/assets/volter-sdk-kit-components-inspector-revert-label-DRRZSGIK.js +0 -1
- package/dist/assets/volter-sdk-kit-components-inspector-selection-Bv1ikayS.js +0 -1
- package/dist/assets/volter-sdk-kit-components-inspector-stories-gating-BpG3_W7U.js +0 -1
- package/dist/assets/volter-sdk-kit-components-inspector-transform-CP6nVKqd.js +0 -1
- package/dist/assets/volter-sdk-kit-components-inspector-transform-subject-Du0gXiav.js +0 -1
- package/dist/assets/volter-sdk-kit-components-kind-documents-B_HiV65O.js +0 -1
- package/dist/assets/volter-sdk-kit-components-primitives-DraftColorInput-7rauPX0T.js +0 -1
- package/dist/assets/volter-sdk-kit-components-project-tool-documents-3di65yH2.js +0 -1
- package/dist/assets/volter-sdk-kit-components-scene-documents-Bl1zTaDc.js +0 -1
- package/dist/assets/volter-sdk-kit-components-status-contributions-B8H0B8ft.js +0 -1
- package/dist/assets/volter-sdk-kit-components-tool-documents-C2PpEqP0.js +0 -1
- package/dist/assets/volter-sdk-kit-components-tool-schema-form-72_NOun0.js +0 -1
- package/dist/assets/volter-sdk-kit-components-use-after-paint-DrYvNkkp.js +0 -1
- package/dist/assets/volter-sdk-kit-components-use-project-image-assets-BqKEbF2g.js +0 -1
- package/dist/assets/volter-sdk-kit-components-workspace-history-xnZKFOcO.js +0 -1
- package/dist/assets/volter-sdk-kit-components-world-documents-B_l8OVFP.js +0 -1
- package/dist/assets/volter-sdk-kit-components-world-overlay-gestures-C0aE-brt.js +0 -1
- package/dist/assets/volter-sdk-kit-composite-screenshot-BcGNs7-k.js +0 -1
- package/dist/assets/volter-sdk-kit-content-entry-source-registry-CSDvBeHp.js +0 -1
- package/dist/assets/volter-sdk-kit-contribution-surfaces-CQ2rcWky.js +0 -1
- package/dist/assets/volter-sdk-kit-coverage-canvas-reveal-CaBb6Hfn.js +0 -1
- package/dist/assets/volter-sdk-kit-coverage-design-time-surfaces-BZvDlBew.js +0 -1
- package/dist/assets/volter-sdk-kit-coverage-ontology-invariants-CyWzK029.js +0 -1
- package/dist/assets/volter-sdk-kit-coverage-session-vitals-BSV6PDul.js +0 -1
- package/dist/assets/volter-sdk-kit-creation-site-registry-fCJv-VnD.js +0 -1
- package/dist/assets/volter-sdk-kit-delegate-harness-registry-0s32Ke4a.js +0 -1
- package/dist/assets/volter-sdk-kit-document-areas-d6o-fnVq.js +0 -1
- package/dist/assets/volter-sdk-kit-document-context-registry-C-rdTIZz.js +0 -1
- package/dist/assets/volter-sdk-kit-document-open-registry-VuPIF1dw.js +0 -1
- package/dist/assets/volter-sdk-kit-document-play-extension-CnbtQG5g.js +0 -1
- package/dist/assets/volter-sdk-kit-document-preview-source-BOuN3JP9.js +0 -1
- package/dist/assets/volter-sdk-kit-document-renderer-session-C4Y-LjCl.js +0 -1
- package/dist/assets/volter-sdk-kit-document-stage-sessions-DFQXt_Kt.js +0 -1
- package/dist/assets/volter-sdk-kit-document-viewports-Caa-nlVQ.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-api-C1nO5qN_.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-chrome-capture-Cyo9MOWB.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-commands-DgSsLdds.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-console-D1PH1xFg.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-current-view-Bset7Nwl.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-document-probe-Czf1syZL.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-git-client-CMFbof3B.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-hotkeys-_jIQrvhL.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-lease-CqLtzZdx.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-lease-view-B38iYVxe.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-mode-DhgTI0qH.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-notifications-Yta6jrTE.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-presence-CmU0c8nu.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-presentation-activity-Chb0_n3L.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-presentation-notice-CJJau7kX.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-runtime-C_0J-89o.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-server-response-AowGGRsX.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-session-attribution-CE3iHsa9.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-session-mode-DxwZ4UOE.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-state-facets-CrumZoYh.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-view-presentation-C-p2mMYG.js +0 -1
- package/dist/assets/volter-sdk-kit-environment-images-bVl6oO0J.js +0 -1
- package/dist/assets/volter-sdk-kit-eyedropper-session-xsFx5slJ.js +0 -1
- package/dist/assets/volter-sdk-kit-files-file-provider-BZr0PG4o.js +0 -1
- package/dist/assets/volter-sdk-kit-files-project-files-DlEfa4r5.js +0 -1
- package/dist/assets/volter-sdk-kit-finders-index-1Yh1UrN5.js +0 -1
- package/dist/assets/volter-sdk-kit-finders-scenes-from-entrypoint-selection-BdkJ-g9C.js +0 -1
- package/dist/assets/volter-sdk-kit-frame-frame-parts-DvbxUeaX.js +0 -1
- package/dist/assets/volter-sdk-kit-framed-document-capture-Doq07qaD.js +0 -1
- package/dist/assets/volter-sdk-kit-game-surface-defaults-Cco9xAIy.js +0 -1
- package/dist/assets/volter-sdk-kit-gameplay-export-state-Bh35kQUs.js +0 -1
- package/dist/assets/volter-sdk-kit-gameplay-replay-CJUXUO5Z.js +0 -1
- package/dist/assets/volter-sdk-kit-gameplay-session-time-xKMm2Bmw.js +0 -1
- package/dist/assets/volter-sdk-kit-gameplay-sessions-BtyPVYt1.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-component-marks-CMA_1E0Z.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-internals-C2mw6TEb.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-kind-icon-Uq5N3cYQ.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-menu-registry-BuUQH5-1.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-node-rows-DoIy_rr4.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-panel-view-C28YFK-D.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-projection-BlTrqGJP.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-row-media-Bi4TlkKq.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-row-model-B6Umqjy9.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-rows-LJpacUWB.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-walk-CUME5S0j.js +0 -1
- package/dist/assets/volter-sdk-kit-history-editor-session-vyoZV4Se.js +0 -1
- package/dist/assets/volter-sdk-kit-history-history-commands-BvP_RqsP.js +0 -1
- package/dist/assets/volter-sdk-kit-history-history-delegate-DilFGldE.js +0 -1
- package/dist/assets/volter-sdk-kit-history-history-limit-notices-Bl7qNsVW.js +0 -1
- package/dist/assets/volter-sdk-kit-history-history-service-CUwc9Oh1.js +0 -1
- package/dist/assets/volter-sdk-kit-history-persistence-coordinator-By_l7An0.js +0 -1
- package/dist/assets/volter-sdk-kit-history-project-file-history-stqJ4Wa9.js +0 -1
- package/dist/assets/volter-sdk-kit-history-project-root-history-backends-Dhihw3lO.js +0 -1
- package/dist/assets/volter-sdk-kit-history-resource-registry-BmWUO5On.js +0 -1
- package/dist/assets/volter-sdk-kit-history-snapshot-store-DpGm1CKT.js +0 -1
- package/dist/assets/volter-sdk-kit-history-source-history-backend-CWkNA5B8.js +0 -1
- package/dist/assets/volter-sdk-kit-hmr-registration-group-DXxPfV1d.js +0 -1
- package/dist/assets/volter-sdk-kit-hmr-stable-react-context-DTKg0yz7.js +0 -1
- package/dist/assets/volter-sdk-kit-hotkeys-B-DB4WDn.js +0 -1
- package/dist/assets/volter-sdk-kit-inference-diagnostics-Bg2RC291.js +0 -1
- package/dist/assets/volter-sdk-kit-initial-project-DcV4d4vU.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-active-subject-Dpg7lLaz.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-active-surface-CtXLz-UE.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-compose-subject-DPCLcleB.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-display-WcRFy6fP.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-document-subject-Dg6DIr4J.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-game-subject-CCU0bOnL.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-model-BHHq-F57.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-node-media-D3HHlQ-1.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-null-subject-CojoXu4j.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-serialize-BXTD5f5F.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-use-active-inspection-D0tMZbA8.js +0 -1
- package/dist/assets/volter-sdk-kit-inspector-presentation-DDTS4NPQ.js +0 -1
- package/dist/assets/volter-sdk-kit-inspector-property-grouping-C8gM67Ji.js +0 -1
- package/dist/assets/volter-sdk-kit-inspector-section-registry-C0bhf71P.js +0 -1
- package/dist/assets/volter-sdk-kit-instance-source-actions-DxsyQJOt.js +0 -1
- package/dist/assets/volter-sdk-kit-js-heap-COa0ZQO1.js +0 -1
- package/dist/assets/volter-sdk-kit-key-actions-DUdVok9i.js +0 -1
- package/dist/assets/volter-sdk-kit-keymap-presets-CtsgCBMq.js +0 -1
- package/dist/assets/volter-sdk-kit-layout-policy-B1UriNWB.js +0 -1
- package/dist/assets/volter-sdk-kit-light-explorer-model-DDrGjN_l.js +0 -1
- package/dist/assets/volter-sdk-kit-live-canvas-frame-Bx3mSipB.js +0 -1
- package/dist/assets/volter-sdk-kit-live-document-CPBTdxo0.js +0 -1
- package/dist/assets/volter-sdk-kit-live-gesture-lock-B4b9BM5c.js +0 -1
- package/dist/assets/volter-sdk-kit-live-seam-evidence-ByZ2Gf3m.js +0 -1
- package/dist/assets/volter-sdk-kit-live-session-registry-mxT-37yH.js +0 -1
- package/dist/assets/volter-sdk-kit-live-transition-CrRFP373.js +0 -1
- package/dist/assets/volter-sdk-kit-manifest-project-BCBSW7yn.js +0 -1
- package/dist/assets/volter-sdk-kit-module-fetch-diagnosis-ENr7r-oj.js +0 -1
- package/dist/assets/volter-sdk-kit-mount-failure-report-Diw3prSP.js +0 -1
- package/dist/assets/volter-sdk-kit-native-selection-style-D_oHLKGc.js +0 -1
- package/dist/assets/volter-sdk-kit-object3d-document-write-policy-Dq8rnb-h.js +0 -1
- package/dist/assets/volter-sdk-kit-packaged-runtime-2ZtSBw9e.js +0 -1
- package/dist/assets/volter-sdk-kit-performance-profiler-J1GcKurL.js +0 -1
- package/dist/assets/volter-sdk-kit-performance-sources-Dk3RIhPs.js +0 -1
- package/dist/assets/volter-sdk-kit-photograph-notice-CEVpX_yj.js +0 -1
- package/dist/assets/volter-sdk-kit-play-boot-phase-D22MvZjX.js +0 -1
- package/dist/assets/volter-sdk-kit-play-camera-flight-Dh3-SiG2.js +0 -1
- package/dist/assets/volter-sdk-kit-presentation-surface-DtvQ6uwm.js +0 -1
- package/dist/assets/volter-sdk-kit-product-command-DhQ2vGY7.js +0 -1
- package/dist/assets/volter-sdk-kit-project-adapter-lJsp7vSt.js +0 -1
- package/dist/assets/volter-sdk-kit-project-asset-refresh-D94Pa8-n.js +0 -1
- package/dist/assets/volter-sdk-kit-project-asset-roots-DkjE-H4P.js +0 -1
- package/dist/assets/volter-sdk-kit-project-local-state-C3dueXjj.js +0 -1
- package/dist/assets/volter-sdk-kit-project-manager-D8pSoBk5.js +0 -1
- package/dist/assets/volter-sdk-kit-project-module-changes-CmswawEd.js +0 -1
- package/dist/assets/volter-sdk-kit-project-module-split-BWSP4PC6.js +0 -1
- package/dist/assets/volter-sdk-kit-project-provenance-y2LiaenC.js +0 -1
- package/dist/assets/volter-sdk-kit-project-ready-5KOkgAie.js +0 -1
- package/dist/assets/volter-sdk-kit-project-shape-CRi6VMwW.js +0 -1
- package/dist/assets/volter-sdk-kit-project-tools-DefLgVW-.js +0 -1
- package/dist/assets/volter-sdk-kit-readiness-CFiVXonW.js +0 -1
- package/dist/assets/volter-sdk-kit-renderer-resource-counts-yv0wDv9Z.js +0 -1
- package/dist/assets/volter-sdk-kit-reported-play-state-CdBN7lgt.js +0 -1
- package/dist/assets/volter-sdk-kit-resolve-contributed-command-C-UnZAy2.js +0 -1
- package/dist/assets/volter-sdk-kit-resolve-relative-specifier-B0fBf47E.js +0 -1
- package/dist/assets/volter-sdk-kit-retained-document-states-BaHAJmNJ.js +0 -1
- package/dist/assets/volter-sdk-kit-scene-document-plan-ByPu78Ca.js +0 -1
- package/dist/assets/volter-sdk-kit-scene-live-open-WieSHU0m.js +0 -1
- package/dist/assets/volter-sdk-kit-scoped-game-css-Cl-iGkav.js +0 -1
- package/dist/assets/volter-sdk-kit-served-url-CvjRxXVY.js +0 -1
- package/dist/assets/volter-sdk-kit-session-close-Bj5v_SbU.js +0 -1
- package/dist/assets/volter-sdk-kit-session-tombstone-D1LTs2G4.js +0 -1
- package/dist/assets/volter-sdk-kit-settings-settings-provider-CdD8uh79.js +0 -1
- package/dist/assets/volter-sdk-kit-settings-store-CdCWpZpX.js +0 -1
- package/dist/assets/volter-sdk-kit-shell-store-BPMrMgto.js +0 -1
- package/dist/assets/volter-sdk-kit-shell-store-door-D5csR7L7.js +0 -1
- package/dist/assets/volter-sdk-kit-source-conflict-C1LAtXzO.js +0 -1
- package/dist/assets/volter-sdk-kit-stage-context-B5Ashsvr.js +0 -1
- package/dist/assets/volter-sdk-kit-stage-invalidation-DrB2GJkV.js +0 -1
- package/dist/assets/volter-sdk-kit-stage-store-registry-BBmIUDrH.js +0 -1
- package/dist/assets/volter-sdk-kit-startup-failure-B_1Us5LR.js +0 -1
- package/dist/assets/volter-sdk-kit-state-report-deferral-CadDAzqC.js +0 -1
- package/dist/assets/volter-sdk-kit-storage-host-files-storage-DlAZpF8O.js +0 -1
- package/dist/assets/volter-sdk-kit-storage-http-storage-BGzRT9Yh.js +0 -1
- package/dist/assets/volter-sdk-kit-storage-index-BRza5xQo.js +0 -1
- package/dist/assets/volter-sdk-kit-storage-mem-storage--iLg4qqC.js +0 -1
- package/dist/assets/volter-sdk-kit-storage-path-lock-DIiF0WD6.js +0 -1
- package/dist/assets/volter-sdk-kit-storage-paths-RUYTo3ty.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-StoryPreviewMount-CIWFkcHG.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-compose-project-stories-DwoDwmJU.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-prefabs-finder-1J_oByWW.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-prefabs-from-stories-BWzNS_pC.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-project-story-regions-Cmj0gYSU.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-scope-dbPpXRCQ.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-capture-3Y8Mr8qy.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-declared-medium-D3PDNDCy.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-discovery-lsLHfYGO.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-dom-runtime-Bcuc8WAV.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-grouping-iqNIaFLi.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-presentation-CK7iy9Ei.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-registry-BgeJ9s08.js +0 -1
- package/dist/assets/volter-sdk-kit-story-document-openers-cYEL6Hy6.js +0 -1
- package/dist/assets/volter-sdk-kit-story-thumbnails-CM9Z-bvM.js +0 -1
- package/dist/assets/volter-sdk-kit-surface-keyboard-DBn-R4RW.js +0 -1
- package/dist/assets/volter-sdk-kit-surface-state-lyZ-F89S.js +0 -1
- package/dist/assets/volter-sdk-kit-system-seam-evidence-M2PpGJaD.js +0 -1
- package/dist/assets/volter-sdk-kit-tab-census-D-cKQr53.js +0 -1
- package/dist/assets/volter-sdk-kit-tab-lifecycle-client-C9bdy1EQ.js +0 -1
- package/dist/assets/volter-sdk-kit-theme-library-C1SMcZX-.js +0 -1
- package/dist/assets/volter-sdk-kit-theme-preference-D7fq5Aos.js +0 -1
- package/dist/assets/volter-sdk-kit-three-viewport-presentation-C3jDpb-D.js +0 -1
- package/dist/assets/volter-sdk-kit-tool-contribution-play-BOVfgHO-.js +0 -1
- package/dist/assets/volter-sdk-kit-tool-loader-cdxKzGe5.js +0 -1
- package/dist/assets/volter-sdk-kit-transform-mode-request-BPBs33SD.js +0 -1
- package/dist/assets/volter-sdk-kit-transient-hint-DvRRSOfn.js +0 -1
- package/dist/assets/volter-sdk-kit-transport-strip-Dd6GTpZe.js +0 -1
- package/dist/assets/volter-sdk-kit-ui-source-file-region-resolver-BPLcvfGC.js +0 -1
- package/dist/assets/volter-sdk-kit-ui-source-inspect-Ckv_4nvy.js +0 -1
- package/dist/assets/volter-sdk-kit-ui-source-source-write-backend-CiReq_FI.js +0 -1
- package/dist/assets/volter-sdk-kit-ui-source-tier-source-write-backend-DZJqZvWO.js +0 -1
- package/dist/assets/volter-sdk-kit-user-local-state-9E2MdgX4.js +0 -1
- package/dist/assets/volter-sdk-kit-viewport-activation-timings-C7D8UOhh.js +0 -1
- package/dist/assets/volter-sdk-kit-viewport-editor-controls-D88BRUuu.js +0 -1
- package/dist/assets/volter-sdk-kit-viewport-presentation-Zb13u02P.js +0 -1
- package/dist/assets/volter-sdk-kit-viewport-surface-status-Ca85AZuU.js +0 -1
- package/dist/assets/volter-sdk-kit-wait-until-pqtZlaLI.js +0 -1
- package/dist/assets/volter-sdk-kit-worker-call-metrics-Cbz-2gPO.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-areas-B_i10_dm.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-aux-commands-DtGEjh20.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-available-documents-C8VSQ_mD.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-core-utilities-BiDneGhJ.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-document-ids-BWk99i3Z.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-document-registry-DS1fKB9K.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-document-restore-ZPSOlafH.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-host-commands-BLPz-3R_.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-persistence-gate-DaFEto7Y.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-play-utilities-DOoHAHVj.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-presets-DOs3QGh-.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-regions-wBvCVXKS.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-static-panels-ByMR68k-.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-status-registry-HAD_cNR4.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-storage-CqQ3PjCZ.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-style-BQcwaxYJ.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-utility-commands-et9TkyCh.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-utility-registry-rYY77c5M.js +0 -1
- package/dist/assets/volter-sdk-kit-world-adoption-Cdr7X1RK.js +0 -1
- package/dist/assets/volter-sdk-kit-world-canvas-viewport-state-CIToIMqL.js +0 -1
- package/dist/assets/volter-sdk-kit-world-document-routing-BZEtZVgX.js +0 -1
- package/dist/assets/volter-sdk-kit-world-pan-state-gNJklP8p.js +0 -1
- package/dist/assets/volter-sdk-kit-write-pipe-BADasoOU.js +0 -1
- package/dist/assets/volter-sdk-layout-arrangements-C2GnUWEf.js +0 -1
- package/dist/assets/volter-sdk-layouts-ai4Mr9iJ.js +0 -1
- package/dist/assets/volter-sdk-selection--L_yVThI.js +0 -1
- package/dist/assets/volter-sdk-session-command-table-HzFjzv-r.js +0 -1
- package/dist/assets/volter-sdk-session-editor-brand-DZQ6PWq1.js +0 -1
- package/dist/assets/volter-sdk-session-editor-compatibility-Dqc8l3ef.js +0 -1
- package/dist/assets/volter-sdk-session-editor-control-protocol-C9Ru_wUN.js +0 -1
- package/dist/assets/volter-sdk-session-entrypoint-selection-readers-zxVRreaL.js +0 -1
- package/dist/assets/volter-sdk-session-game-css-scope-Dqlihty_.js +0 -1
- package/dist/assets/volter-sdk-session-project-module-url-D83kzz0q.js +0 -1
- package/dist/assets/volter-sdk-session-relative-path-guard-CuR0WI9k.js +0 -1
- package/dist/assets/volter-sdk-session-tool-contribution-convention-BCFbkxzk.js +0 -1
- package/dist/assets/volter-sdk-types-CEnscS2I.js +0 -1
- package/dist/assets/volter-sdk-views-C5SjARB1.js +0 -1
- package/dist/assets/volter-sdk-widgets-design-system-CvoouaNJ.js +0 -1
- package/dist/assets/volter-sdk-widgets-editor-appearance-C7o2ovx9.js +0 -1
- package/dist/assets/volter-sdk-widgets-editor-material-DexUBcgV.js +0 -1
- package/dist/assets/volter-sdk-widgets-icon-set-registry-DlFlaNAF.js +0 -1
- package/dist/assets/volter-sdk-widgets-index-yq00_bNp.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-AlignmentGrid-BTgcU6jh.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-AssetSlotPicker-C2o3TwgU.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-BorderEditor-FDtHP3jG.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ColorPicker-BuPI_wXu.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-CurveEditor-DgzQ9479.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-FilterEditor-DAvp2mOL.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-FontPicker-D0qkPeCp.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-GradientEditor-CCsSB7GO.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ScrubbableInput-HX8HYQyz.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ShadowEditor-W6DD40ZY.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-color-utils-Da1Qassw.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-curve-utils-CubhrOnj.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-index-BfEw1ffU.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-shared-BHXdKcVo.js +0 -1
- package/dist/assets/volter-sdk-widgets-interactive-edit-scope-BN0E0Doa.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Dialog-BRrjlh-m.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Fields-DZH1odj7.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-List-C6d9TZjZ.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-StateSurface-Drk0tBrv.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Surfaces-DDRN7QIn.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Tabs-EjlJmcJW.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Toolbar-CFvWB8mN.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Tree-BuqeZDz5.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-AnchoredMenu-CTTEOeVU.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Button-C_0ZSSpT.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-ColorInput-CDSl_uTD.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-DraftTextInput-DkmxJEkt.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-EditorIcon-BBWNM0Qo.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-FormControls-BWxUJrgm.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-HoverPreview-DWhR7NPO.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-JsonInput-DT-JU62m.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Layout-DdGxhqhS.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Menu-DZZRIImg.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-NumberInput-BhCoXeub.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Panel-CBt-GWg4.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-SectionHeader-zNqJ43pZ.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Text-D5kMrfFl.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-ThemeRootPortal-C3qNx2NP.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Tooltip-BZa_2pgU.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Vec3Input-DHMZkNZm.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-banner-tones-B0Vu5nrN.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-clamp-to-viewport-gPoKdjpr.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-editor-icons-CzOo1YYK.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-panel-header-styles-L08FUXCP.js +0 -1
- package/dist/assets/volter-sdk-widgets-theme-3FhMTQQW.js +0 -1
- package/dist/assets/volter-sdk-widgets-z-index-BY332K7Z.js +0 -1
- package/dist/assets/volter-shared-fontawesome-DpCdukGW.js +0 -1
- package/dist/assets/volter-shared-jsx-dev-runtime-Dzhuy0jr.js +0 -1
- package/dist/assets/volter-shared-jsx-runtime-CZf-NxSP.js +0 -1
- package/dist/assets/volter-shared-react-B8I974G-.js +0 -1
- package/dist/assets/volter-shared-react-dom-BSKZma7T.js +0 -1
- package/dist/assets/volter-shared-react-dom-client-aO0ss-5e.js +0 -1
- package/dist/assets/worker-C7WcdPfy.js +0 -8
- package/starter/race-state.ts +0 -22
- package/starter/track.blend +0 -0
- package/starter/track.play.ts +0 -343
- package/starter/track.py +0 -324
- package/starter/ui/game.stories.tsx +0 -12
- package/starter/ui/game.tsx +0 -10
- package/starter/ui/race-hud.tsx +0 -29
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
# Copyright 2026 Volter AI, Inc.
|
|
3
|
+
# Milestone 1 of canyon.py: the circuit, six karts, sky, sun and chase camera.
|
|
4
|
+
import bpy, math, random, datetime
|
|
5
|
+
from mathutils import Vector
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
ROOT=str(Path(bpy.data.filepath).resolve().parents[2])
|
|
8
|
+
random.seed(71)
|
|
9
|
+
# Rebuild only owned scene content, preserving reference, notes and manual objects.
|
|
10
|
+
for o in list(bpy.data.objects):
|
|
11
|
+
if (o.get('canyon_owned') or o.name=='Cube') and not any(c.name in ['References','Notes'] for c in o.users_collection): bpy.data.objects.remove(o,do_unlink=True)
|
|
12
|
+
col=bpy.data.collections.get('Canyon Comet') or bpy.data.collections.new('Canyon Comet')
|
|
13
|
+
if col.name not in bpy.context.scene.collection.children: bpy.context.scene.collection.children.link(col)
|
|
14
|
+
def own(o): o['canyon_owned']=True; col.objects.link(o); return o
|
|
15
|
+
def lin(c): return c/12.92 if c<.04045 else ((c+.055)/1.055)**2.4
|
|
16
|
+
def mat(n,h,rough=.55,metal=0):
|
|
17
|
+
m=bpy.data.materials.get(n) or bpy.data.materials.new(n); m.use_nodes=True
|
|
18
|
+
rgb=[lin(int(h[i:i+2],16)/255) for i in (0,2,4)]; m.diffuse_color=(*rgb,1)
|
|
19
|
+
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
|
|
20
|
+
return m
|
|
21
|
+
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)
|
|
22
|
+
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
|
|
23
|
+
cache={}
|
|
24
|
+
def mesh(n,v,f,m):
|
|
25
|
+
d=bpy.data.meshes.new(n);d.from_pydata(v,[],f);d.materials.append(m);d.update();return d
|
|
26
|
+
def obj(n,d,loc=(0,0,0),scale=(1,1,1),parent=None):
|
|
27
|
+
o=own(bpy.data.objects.new(n,d));o.location=loc;o.scale=scale;o.parent=parent;return o
|
|
28
|
+
def sphere(n,loc,scale,m,parent=None):
|
|
29
|
+
key=('sphere',m.name)
|
|
30
|
+
if key not in cache:
|
|
31
|
+
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)]
|
|
32
|
+
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)]
|
|
33
|
+
# Sphere param runs north to south, winding outward.
|
|
34
|
+
d=mesh('Smooth '+m.name,v,[tuple(reversed(a)) for a in f],m)
|
|
35
|
+
for p in d.polygons:p.use_smooth=True
|
|
36
|
+
cache[key]=d
|
|
37
|
+
return obj(n,cache[key],loc,scale,parent)
|
|
38
|
+
def box(n,loc,s,m,parent=None):
|
|
39
|
+
key=('box',m.name)
|
|
40
|
+
if key not in cache:
|
|
41
|
+
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)]
|
|
42
|
+
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)
|
|
43
|
+
return obj(n,cache[key],loc,tuple(a/2 for a in s),parent)
|
|
44
|
+
def rod(n,a,b,r,m,parent=None):
|
|
45
|
+
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
|
|
46
|
+
def torus(n,loc,R,r,m,parent=None):
|
|
47
|
+
key=('torus',R,r,m.name)
|
|
48
|
+
if key not in cache:
|
|
49
|
+
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)]
|
|
50
|
+
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)]
|
|
51
|
+
d=mesh(n,v,f,m)
|
|
52
|
+
for p in d.polygons:p.use_smooth=True
|
|
53
|
+
cache[key]=d
|
|
54
|
+
return obj(n,cache[key],loc,parent=parent)
|
|
55
|
+
POINTS=[(0,0),(0,25),(12,55),(42,70),(68,45),(65,5),(40,-25),(8,-25)]
|
|
56
|
+
def center(t):
|
|
57
|
+
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)
|
|
58
|
+
def sample(t,offset=0):
|
|
59
|
+
p=center(t);d=(center(t+.001)-center(t-.001)).normalized();return p+Vector((d.y,-d.x))*offset
|
|
60
|
+
N=512
|
|
61
|
+
def ribbon(n,left,right,z,m):
|
|
62
|
+
v=[]
|
|
63
|
+
for i in range(N):
|
|
64
|
+
for off in [left,right]:
|
|
65
|
+
p=sample(i*8/N,off);v.append((p.x,p.y,z))
|
|
66
|
+
f=[(2*i,2*i+1,2*((i+1)%N)+1,2*((i+1)%N)) for i in range(N)]
|
|
67
|
+
return obj(n,mesh(n,v,f,m))
|
|
68
|
+
box('Desert floor',(30,20,-.3),(360,360,.5),sand)
|
|
69
|
+
ribbon('Circuit asphalt',-12,12,0,road)
|
|
70
|
+
for side in [-1,1]:
|
|
71
|
+
ribbon('Ivory shoulder '+str(side),side*12,side*12.5,.015,white)
|
|
72
|
+
ribbon('Turquoise racing edge '+str(side),side*11.45,side*12,.028,edge)
|
|
73
|
+
for i in range(90):
|
|
74
|
+
t=i*8/90;p=sample(t);q=sample(t+.015);d=q-p
|
|
75
|
+
o=box('Lane dash %03d'%i,(p.x,p.y,.035),(.28,2.1,.015),white);o.rotation_euler.z=-math.atan2(d.x,d.y)
|
|
76
|
+
def kart(index,pos,color,character):
|
|
77
|
+
root=own(bpy.data.objects.new('Kart.%d'%index,None));root.location=pos
|
|
78
|
+
sphere('K%d sculpted chassis'%index,(0,0,.64),(1.05,1.5,.52),color,root)
|
|
79
|
+
sphere('K%d cockpit'%index,(0,.12,1.01),(.73,.8,.19),tire,root)
|
|
80
|
+
sphere('K%d nose'%index,(0,1,.67),(.9,.75,.35),color,root)
|
|
81
|
+
for x in [-1,1]:
|
|
82
|
+
for y in [-.88,.88]:
|
|
83
|
+
o=torus('K%d tire'%index,(x,y,.46),.31,.16,tire,root);o.rotation_euler.y=math.pi/2
|
|
84
|
+
sphere('K%d gold wheel'%index,(x*1.145,y,.46),(.07,.28,.28),yellow,root)
|
|
85
|
+
sphere('K%d wheel hub'%index,(x*1.2,y,.46),(.025,.13,.13),tire,root)
|
|
86
|
+
sphere('K%d white rear pod'%index,(x*.8,-.85,.85),(.23,.53,.44),white,root)
|
|
87
|
+
sphere('K%d red lamp'%index,(x*.83,-1.28,.98),(.14,.065,.23),red,root)
|
|
88
|
+
sphere('K%d lamp glint'%index,(x*.8,-1.34,1.06),(.045,.017,.085),orange,root)
|
|
89
|
+
rod('K%d wing strut'%index,(x*.6,-.84,1.1),(x*.6,-.84,1.4),.055,metal,root)
|
|
90
|
+
sphere('K%d rounded wing'%index,(0,-.96,1.4),(.88,.18,.09),color,root)
|
|
91
|
+
box('K%d rear cream stripe'%index,(0,-1.46,.72),(.32,.018,.45),white,root)
|
|
92
|
+
sphere('K%d bumper'%index,(0,-1.43,.46),(.48,.16,.22),metal,root)
|
|
93
|
+
for x in [-.17,.17]:
|
|
94
|
+
o=torus('K%d exhaust rim'%index,(x,-1.66,.34),.12,.042,metal,root);o.rotation_euler.x=math.pi/2
|
|
95
|
+
sphere('K%d exhaust bore'%index,(x,-1.65,.34),(.105,.02,.105),tire,root)
|
|
96
|
+
sphere('K%d driver suit'%index,(0,.05,1.36),(.43,.34,.48),orange if index==0 else coral,root)
|
|
97
|
+
for x in [-.37,.37]:rod('K%d driver arm'%index,(x,0,1.49),(x,.55,1.18),.14,white,root)
|
|
98
|
+
if character=='helmet':
|
|
99
|
+
sphere('K%d helmet rim'%index,(0,.05,1.82),(.64,.6,.28),tire,root)
|
|
100
|
+
sphere('K%d helmet'%index,(0,.06,2.14),(.67,.61,.65),white,root)
|
|
101
|
+
sphere('K%d face visor'%index,(0,.55,2.11),(.5,.14,.32),dark,root)
|
|
102
|
+
# Orange stripe follows the curved helmet from brow to neck.
|
|
103
|
+
v=[];f=[]
|
|
104
|
+
for j in range(33):
|
|
105
|
+
a=-math.pi*.48+math.pi*1.05*j/32
|
|
106
|
+
for x in [-.115,.115]:v.append((x,.06+math.sin(a)*.623,2.14+math.cos(a)*.657))
|
|
107
|
+
for j in range(32):f.append((j*2,j*2+1,j*2+3,j*2+2))
|
|
108
|
+
obj('K%d helmet stripe'%index,mesh('Stripe',v,f,orange),parent=root)
|
|
109
|
+
sphere('K%d scarf'%index,(0,-.28,1.49),(.38,.12,.14),coral,root)
|
|
110
|
+
elif character=='miso':
|
|
111
|
+
sphere('K%d mint head'%index,(0,.06,2.03),(.77,.66,.65),mint,root)
|
|
112
|
+
for x in [-.73,.73]:sphere('K%d rounded ears'%index,(x,.05,2.17),(.28,.21,.28),mint,root)
|
|
113
|
+
for x in [-.28,.28]:sphere('K%d coral crest'%index,(x,.02,2.67),(.14,.25,.28),orange,root)
|
|
114
|
+
else:
|
|
115
|
+
sphere('K%d navy helmet'%index,(0,.06,2.1),(.68,.62,.64),dark,root)
|
|
116
|
+
for x in [-.66,.66]:
|
|
117
|
+
sphere('K%d orange earcup'%index,(x,0,2.04),(.15,.28,.3),orange,root)
|
|
118
|
+
sphere('K%d earcup metal'%index,(x*1.14,0,2.04),(.025,.17,.19),metal,root)
|
|
119
|
+
rod('K%d headband'%index,(-.52,.04,2.56),(.52,.04,2.56),.08,metal,root)
|
|
120
|
+
sphere('K%d visor'%index,(0,.6,2.12),(.48,.13,.28),teal,root)
|
|
121
|
+
return root
|
|
122
|
+
kart(0,(0,0,0),teal,'helmet');kart(1,(-5.4,1.3,0),yellow,'miso');kart(2,(4.8,4.4,0),purple,'nova');kart(3,(-1.5,17,0),green,'miso');kart(4,(1,23,0),blue,'helmet');kart(5,(7,30,0),coral,'nova')
|
|
123
|
+
# Sunlight and a sky dome use the actual authored scene in Edit and Play.
|
|
124
|
+
world=bpy.context.scene.world or bpy.data.worlds.new('Canyon sky');bpy.context.scene.world=world;world.use_nodes=True;world.node_tree.nodes['Background'].inputs[0].default_value=(.23,.65,.8,1);world.node_tree.nodes['Background'].inputs[1].default_value=.7
|
|
125
|
+
sky=mat('Cyan sky','6AD9ED',1);p=sky.node_tree.nodes.get('Principled BSDF');p.inputs['Emission Color'].default_value=(*[lin(a/255) for a in (106,217,237)],1);p.inputs['Emission Strength'].default_value=.8
|
|
126
|
+
light=bpy.data.lights.new('Afternoon sun','SUN');light.energy=3;light.angle=.08;l=own(bpy.data.objects.new('Afternoon sun',light));l.rotation_euler=(.5,-.5,-.5)
|
|
127
|
+
c=bpy.data.cameras.new('Chase camera');c.lens=24;c.sensor_width=36;cam=own(bpy.data.objects.new('Chase camera',c));cam.location=(0,-9,5.1);cam.rotation_euler=(Vector((0,18,1.6))-cam.location).to_track_quat('-Z','Y').to_euler();bpy.context.scene.camera=cam
|
|
128
|
+
bpy.context.scene.render.resolution_x=1672;bpy.context.scene.render.resolution_y=941
|
|
129
|
+
bpy.context.scene.view_settings.view_transform='Standard'
|
|
130
|
+
bpy.ops.wm.save_as_mainfile(filepath=ROOT+'/src/models/canyon.blend')
|
|
131
|
+
print('Milestone 1: circuit, six rounded karts and chase camera saved')
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
random.seed(38)
|
|
8
|
+
rock=bpy.data.materials['Continuous sandstone strata']
|
|
9
|
+
# Layered landforms on the return straight and inner island.
|
|
10
|
+
def mesa2(n,x,y,rx,ry,h):
|
|
11
|
+
v=[];count=18;rings=17
|
|
12
|
+
jitter=[random.uniform(.87,1.1)for _ in range(count)]
|
|
13
|
+
for j in range(rings):
|
|
14
|
+
z=h*j/(rings-1);s=1-(j//4)*.14
|
|
15
|
+
for i in range(count):
|
|
16
|
+
a=i*math.tau/count;r=s*jitter[i];v.append((x+rx*r*math.cos(a)+.16*math.sin(z+i),y+ry*r*math.sin(a),z))
|
|
17
|
+
f=[(j*count+i,j*count+(i+1)%count,(j+1)*count+(i+1)%count,(j+1)*count+i)for j in range(rings-1)for i in range(count)];f+=[tuple(range((rings-1)*count,rings*count))]
|
|
18
|
+
d=mesh(n,v,f,rock);o=obj(n,d);uv=d.uv_layers.new(name='Strata')
|
|
19
|
+
for p in d.polygons:
|
|
20
|
+
for li in p.loop_indices:
|
|
21
|
+
a=d.vertices[d.loops[li].vertex_index].co;uv.data[li].uv=((a.x+a.y*.61)/18,a.z/9)
|
|
22
|
+
b=o.modifiers.new('Weathered corners','BEVEL');b.width=.22;b.segments=2
|
|
23
|
+
return o
|
|
24
|
+
for i,(x,y,rx,ry,h)in enumerate([(-40,-32,15,22,23),(-14,-59,22,12,21),(22,-62,21,12,28),(57,-56,15,12,19),(90,-34,15,20,24),(112,0,16,22,29),(112,38,13,21,24),(104,76,15,18,27),(70,106,21,15,22),(32,26,10,14,8),(38,48,9,8,5)]):mesa2('Return canyon mesa '+str(i),x,y,rx,ry,h)
|
|
25
|
+
for ob in list(bpy.data.objects):
|
|
26
|
+
if ob.name.startswith('Distant eroded butte'):bpy.data.objects.remove(ob,do_unlink=True)
|
|
27
|
+
# Add fine puffs to the clouds, using one shared mesh.
|
|
28
|
+
cloud=bpy.data.materials['Soft cream clouds'];p=cloud.node_tree.nodes['Principled BSDF'];p.inputs['Emission Color'].default_value=(.45,.43,.38,1);p.inputs['Emission Strength'].default_value=.45
|
|
29
|
+
for x,y,z in [(-5,-140,40),(60,-140,42),(155,30,47)]:
|
|
30
|
+
for j in range(18):sphere('Return cloud puff',(x+random.uniform(-15,15),y+random.uniform(-3,3),z+random.uniform(-3,4)),(random.uniform(2,5),3,random.uniform(2,4)),cloud)
|
|
31
|
+
# Visible start/finish stripe lives just behind the grid, leaving the reference shot open.
|
|
32
|
+
for ix in range(20):
|
|
33
|
+
for iy in range(2):box('Finish line tile',(-11.4+ix*1.2,-2+iy*.6,.045),(1.2,.6,.018),white if (ix+iy)%2==0 else tire)
|
|
34
|
+
bpy.ops.wm.save_as_mainfile(filepath=ROOT+'/src/models/canyon.blend')
|
|
35
|
+
print('Return circuit scenery and finish line saved')
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copyright 2026 Volter AI, Inc.
|
|
3
|
+
export const points=[[0,0],[0,25],[12,55],[42,70],[68,45],[65,5],[40,-25],[8,-25]];
|
|
4
|
+
export function curve(t:number){const k=Math.floor(t),u=t-k;const p=[-1,0,1,2].map(d=>points[((k+d)%8+8)%8]);return [0,1].map(c=>.5*(2*p[1][c]+(-p[0][c]+p[2][c])*u+(2*p[0][c]-5*p[1][c]+4*p[2][c]-p[3][c])*u*u+(-p[0][c]+3*p[1][c]-3*p[2][c]+p[3][c])*u*u*u));}
|
|
5
|
+
export const course=Array.from({length:769},(_,i)=>{const p=curve(i*8/768);return {x:p[0],y:p[1],s:0,t:i*8/768}});
|
|
6
|
+
for(let i=1;i<course.length;i++)course[i].s=course[i-1].s+Math.hypot(course[i].x-course[i-1].x,course[i].y-course[i-1].y);
|
|
7
|
+
export const length=course.at(-1)!.s;
|
|
8
|
+
export const wrap=(v:number)=>((v%length)+length)%length;
|
|
9
|
+
export function at(s:number,lane=0){s=wrap(s);let lo=0,hi=768;while(hi-lo>1){const m=(lo+hi)>>1;if(course[m].s<s)lo=m;else hi=m;}const a=course[lo],b=course[hi],f=(s-a.s)/(b.s-a.s),dx=b.x-a.x,dy=b.y-a.y,h=Math.atan2(dx,dy);return {x:a.x+(b.x-a.x)*f+Math.cos(h)*lane,y:a.y+(b.y-a.y)*f-Math.sin(h)*lane,heading:h,t:a.t+(b.t-a.t)*f};}
|
|
10
|
+
export function nearest(x:number,y:number){let best=Infinity,res={s:0,x:0,y:0,d:0,lane:0,t:0,heading:0};for(let i=0;i<768;i++){const a=course[i],b=course[i+1],dx=b.x-a.x,dy=b.y-a.y,q=Math.max(0,Math.min(1,((x-a.x)*dx+(y-a.y)*dy)/(dx*dx+dy*dy))),px=a.x+dx*q,py=a.y+dy*q,d=(px-x)**2+(py-y)**2;if(d<best){best=d;const h=Math.atan2(dx,dy);res={x:px,y:py,s:a.s+q*(b.s-a.s),d:Math.sqrt(d),lane:(x-px)*Math.cos(h)-(y-py)*Math.sin(h),heading:h,t:a.t+(b.t-a.t)*q}}}return res;}
|
|
11
|
+
export const leftWidth=(t:number,y:number)=>12+((t<2.4||t>7.3)?17*Math.exp(-Math.max(0,y)/28):0);
|
|
12
|
+
export const angle=(v:number)=>Math.atan2(Math.sin(v),Math.cos(v));
|
|
@@ -0,0 +1,44 @@
|
|
|
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
|
+
for ob in list(bpy.data.objects):
|
|
8
|
+
if 'exhaust tube' in ob.name:bpy.data.objects.remove(ob,do_unlink=True)
|
|
9
|
+
# Wider, softer kart body with a rounded rectangular engine bumper.
|
|
10
|
+
for i in range(6):
|
|
11
|
+
rt=bpy.data.objects['Kart.'+str(i)]
|
|
12
|
+
for ob in rt.children:
|
|
13
|
+
if 'bumper' in ob.name:
|
|
14
|
+
ob.scale.z*=1.6;ob.scale.y*=.85
|
|
15
|
+
if 'helmet stripe' in ob.name:
|
|
16
|
+
for j in range(33):
|
|
17
|
+
a=-2.2+4.0*j/32
|
|
18
|
+
for k,x in enumerate([-.115,.115]):ob.data.vertices[j*2+k].co=(x,.06+math.sin(a)*.623,2.14+math.cos(a)*.657)
|
|
19
|
+
ob.data.update()
|
|
20
|
+
# Small amber brake studs and bolts provide scale and material contrast.
|
|
21
|
+
for x in [-.58,.58]:sphere('K%d wing bolt'%i,(x,-1.08,1.4),(.055,.035,.035),metal,rt)
|
|
22
|
+
# Broader lane dashes and a more open skyline.
|
|
23
|
+
for ob in bpy.data.objects:
|
|
24
|
+
if ob.name.startswith('Lane dash'):
|
|
25
|
+
ob.scale.x*=1.8;ob.scale.y*=.7
|
|
26
|
+
if ob.name.startswith('Cloud'):
|
|
27
|
+
ob.scale.z*=.65;ob.location.z+=5
|
|
28
|
+
# Raised sand terraces put the left signs above the distant rail like the reference.
|
|
29
|
+
for name in ['West ledge','West middle mesa']:
|
|
30
|
+
ob=bpy.data.objects[name];ob.scale.z*=.86
|
|
31
|
+
# Secondary sandstone shelves, forming broad irregular blocks rather than isolated cylinders.
|
|
32
|
+
rock=bpy.data.materials['Continuous sandstone strata']
|
|
33
|
+
for i,(x,y,z,sx,sy,sz) in enumerate([(-29,28,1.2,18,18,2.4),(-23,45,1.1,14,16,2.2),(28,37,.7,8,7,1.4)]):
|
|
34
|
+
ob=box('Low sandstone shelf '+str(i),(x,y,z),(sx,sy,sz),rock)
|
|
35
|
+
uv=ob.data.uv_layers.get('Strata') or ob.data.uv_layers.new(name='Strata')
|
|
36
|
+
for p in ob.data.polygons:
|
|
37
|
+
for li in p.loop_indices:
|
|
38
|
+
v=ob.data.vertices[ob.data.loops[li].vertex_index].co;uv.data[li].uv=((v.x+v.y)*.5,v.z*.25)
|
|
39
|
+
# Hazy distant formations fill the opening below the arch.
|
|
40
|
+
haze=mat('Distant rose sandstone','DBA188',1)
|
|
41
|
+
for x,y,z,sx,sy,sz in [(23,122,5,18,13,10),(29,123,11,13,11,5),(29,123,15,8,8,3),(-3,137,6,16,16,12)]:
|
|
42
|
+
sphere('Distant eroded butte',(x,y,z),(sx,sy,sz*.5),haze)
|
|
43
|
+
bpy.ops.wm.save_as_mainfile(filepath=ROOT+'/src/models/canyon.blend')
|
|
44
|
+
print('Final surface and silhouette detailing saved')
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
# Copyright 2026 Volter AI, Inc.
|
|
3
|
+
import bpy,math
|
|
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
|
+
for i in range(6):
|
|
8
|
+
root=bpy.data.objects['Kart.'+str(i)]
|
|
9
|
+
if bpy.data.objects.get('K%d steering wheel'%i):continue
|
|
10
|
+
wheel=torus('K%d steering wheel'%i,(0,.63,1.25),.24,.043,tire,root);wheel.rotation_euler.x=.9
|
|
11
|
+
rod('K%d steering column'%i,(0,.65,.9),(0,.63,1.25),.045,metal,root)
|
|
12
|
+
rod('K%d steering spoke'%i,(-.23,.63,1.25),(.23,.63,1.25),.025,metal,root)
|
|
13
|
+
for x in [-.54,.54]:
|
|
14
|
+
sphere('K%d headlight housing'%i,(x,1.53,.77),(.26,.17,.18),white,root)
|
|
15
|
+
sphere('K%d golden headlight'%i,(x,1.66,.77),(.17,.055,.115),yellow,root)
|
|
16
|
+
sphere('K%d front air intake'%i,(0,1.72,.52),(.34,.04,.09),tire,root)
|
|
17
|
+
if i in [1,3]:
|
|
18
|
+
for x in [-.27,.27]:
|
|
19
|
+
sphere('K%d creature eye'%i,(x,.637,2.2),(.18,.06,.22),white,root)
|
|
20
|
+
sphere('K%d creature pupil'%i,(x,.693,2.19),(.087,.035,.13),dark,root)
|
|
21
|
+
sphere('K%d eye sparkle'%i,(x-.025,.721,2.24),(.026,.015,.036),white,root)
|
|
22
|
+
sphere('K%d creature muzzle'%i,(0,.686,1.92),(.27,.11,.13),mint,root)
|
|
23
|
+
sphere('K%d creature nose'%i,(0,.783,1.98),(.075,.025,.047),dark,root)
|
|
24
|
+
bpy.ops.wm.save_as_mainfile(filepath=ROOT+'/src/models/canyon.blend')
|
|
25
|
+
print('Steering controls, headlights and original creature faces saved')
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
# Copyright 2026 Volter AI, Inc.
|
|
3
|
+
# Additive environment milestone; shares helpers from scene_helpers.py.
|
|
4
|
+
import bpy, math, random, datetime
|
|
5
|
+
exec(compile(open(str(__import__('pathlib').Path(bpy.data.filepath).resolve().parent / 'scene_helpers.py')).read(),"scene_helpers.py","exec"))
|
|
6
|
+
random.seed(178)
|
|
7
|
+
for o in list(bpy.data.objects):
|
|
8
|
+
if o.get('environment_owned'):bpy.data.objects.remove(o,do_unlink=True)
|
|
9
|
+
before=set(bpy.data.objects)
|
|
10
|
+
rocks=[mat('Sandstone band '+str(i),h,.95) for i,h in enumerate(['C8794E','D98654','B9603F','E49C61','BB6548','F3B576','D78457','A95A42'])]
|
|
11
|
+
def mesa(n,x,y,rx,ry,h):
|
|
12
|
+
count=14; rings=18;v=[]
|
|
13
|
+
angular=[random.uniform(.85,1.12) for i in range(count)]
|
|
14
|
+
for j in range(rings):
|
|
15
|
+
z=h*j/(rings-1);s=1-(j//4)*.12+random.uniform(-.015,.015)
|
|
16
|
+
for i in range(count):
|
|
17
|
+
a=i*math.tau/count;v.append((x+rx*s*angular[i]*math.cos(a),y+ry*s*angular[i]*math.sin(a),z))
|
|
18
|
+
f=[]
|
|
19
|
+
for j in range(rings-1):
|
|
20
|
+
for i in range(count):f.append((j*count+i,j*count+(i+1)%count,(j+1)*count+(i+1)%count,(j+1)*count+i))
|
|
21
|
+
f.append(tuple(range((rings-1)*count,rings*count)));f.append(tuple(reversed(range(count))))
|
|
22
|
+
d=mesh(n,v,f,rocks[0]);[d.materials.append(m) for m in rocks[1:]]
|
|
23
|
+
for p in d.polygons:p.material_index=(p.index//count)%len(rocks)
|
|
24
|
+
return obj(n,d)
|
|
25
|
+
# Main composition: left stepped escarpment and right arch buttress.
|
|
26
|
+
for args in [('West high mesa',-29,28,16,23,29),('West middle mesa',-22,42,12,22,18),('West ledge',-22,12,11,17,9),('Arch east tower',38,49,12,17,24),('East foreground cliff',43,27,15,15,17),('Arch west tower',-12,53,9,11,15),('Distant mesa',36,106,23,18,22),('Far left mesa',-31,102,21,24,25),('Far right mesa',95,85,21,27,30)]:mesa(*args)
|
|
27
|
+
# Uneven, layered voussoirs form a true open arch over the roadway.
|
|
28
|
+
for i in range(14):
|
|
29
|
+
a=i/14*math.pi;b=(i+1)/14*math.pi
|
|
30
|
+
inner=20;outer=25+random.uniform(-.5,.7);cx=13;cz=3
|
|
31
|
+
v=[]
|
|
32
|
+
for y in [46,55]:
|
|
33
|
+
for r,t in [(inner,a),(outer,a),(outer,b),(inner,b)]:v.append((cx+r*math.cos(t),y,cz+r*.65*math.sin(t)))
|
|
34
|
+
d=mesh('Arch stone',v,[(0,3,2,1),(4,5,6,7),(0,1,5,4),(1,2,6,5),(2,3,7,6),(3,0,4,7)],rocks[i%6]);obj('Natural arch span %02d'%i,d)
|
|
35
|
+
# Thin sediment seams across each major mesa, geometry preserves horizontal strata.
|
|
36
|
+
for o in list(bpy.data.objects):
|
|
37
|
+
if o.type=='MESH' and 'mesa' in o.name.lower() or o.name in ['West ledge','East foreground cliff','Arch east tower','Arch west tower']:
|
|
38
|
+
if not o.type=='MESH':continue
|
|
39
|
+
# add subtle surface noise as an image texture via shared materials later
|
|
40
|
+
# Guardrail wraps the outside bend.
|
|
41
|
+
for i in range(80):
|
|
42
|
+
t=-.28+i*.038;p=sample(t,-12.9);q=sample(t+.038,-12.9)
|
|
43
|
+
rod('Guardrail beam',(p.x,p.y,.97),(q.x,q.y,.97),.13,metal)
|
|
44
|
+
rod('Guardrail lower',(p.x,p.y,.73),(q.x,q.y,.73),.08,metal)
|
|
45
|
+
if i%2==0:box('Rail post',(p.x,p.y,.43),(.18,.2,.86),metal)
|
|
46
|
+
# Arrow panels are front facing and properly lit dot lamps.
|
|
47
|
+
for ix,(x,y,s) in enumerate([(-15,10,1.5),(-14,24,1.35),(-8,38,1.18)]):
|
|
48
|
+
box('Arrow panel frame '+str(ix),(x,y,4.1*s),(4.7*s,.25,2.5*s),metal)
|
|
49
|
+
box('Arrow panel face '+str(ix),(x,y-.15,4.1*s),(4.4*s,.07,2.25*s),black)
|
|
50
|
+
for cx in [-1.4,0,1.4]:
|
|
51
|
+
for j in range(9):
|
|
52
|
+
zz=(j-4)*.2;xx=cx+.65-abs(j-4)*.18
|
|
53
|
+
sphere('Arrow amber lamp',(x+xx*s,y-.22,4.1*s+zz*s),(.075*s,.05,.08*s),lamp)
|
|
54
|
+
for xx in [-1.65,1.65]:box('Arrow board post',(x+xx*s,y,1.8*s),(.19,.2,3.6*s),metal)
|
|
55
|
+
pole=rod('Flag pole',(x,y,5.3*s),(x,y,8.4*s),.06,metal)
|
|
56
|
+
obj('Sunrise racing pennant',mesh('Pennant',[(x,y,8.35*s),(x+1.4*s,y,7.8*s),(x,y,7.45*s)],[(0,1,2),(2,1,0)],green))
|
|
57
|
+
obj('Flag gold inset',mesh('Pennant gold',[(x+.15*s,y-.01,8.11*s),(x+1.05*s,y-.01,7.81*s),(x+.15*s,y-.01,7.63*s)],[(0,1,2),(2,1,0)],yellow))
|
|
58
|
+
cactus=mat('Saguaro green','529554',.85);rib=mat('Saguaro sunlit ribs','8CAC61',.85);thorn=mat('Cactus gold thorns','D4B66E',.9)
|
|
59
|
+
def cactus_at(x,y,h):
|
|
60
|
+
sphere('Saguaro trunk',(x,y,h*.5),(.36*h/4,.4*h/4,h*.5),cactus)
|
|
61
|
+
for j in range(7):
|
|
62
|
+
a=j*math.tau/7;rod('Cactus rib',(x+math.cos(a)*.33*h/4,y+math.sin(a)*.37*h/4,.3),(x+math.cos(a)*.28*h/4,y+math.sin(a)*.31*h/4,h*.9),.035*h/4,rib)
|
|
63
|
+
for s,z in [(-1,.48),(1,.66)]:
|
|
64
|
+
rod('Saguaro arm',(x,y,h*z),(x+s*h*.24,y,h*z),.22*h/4,cactus)
|
|
65
|
+
sphere('Saguaro arm tip',(x+s*h*.24,y,h*(z+.12)),(.23*h/4,.25*h/4,h*.22),cactus)
|
|
66
|
+
for i in range(int(h*3)):
|
|
67
|
+
a=random.random()*math.tau;z=random.uniform(.5,h*.92);sphere('Cactus thorn',(x+math.cos(a)*.39*h/4,y+math.sin(a)*.4*h/4,z),(.035,.035,.06),thorn)
|
|
68
|
+
for x,y,h in [(-19,14,6.8),(-16,23,4.2),(-16,34,3.7),(19,28,4.2),(27,39,6),(31,40,4.8),(-7,48,4),(43,75,6),(78,13,5),(-15,-15,6),(50,-42,5)]:cactus_at(x,y,h)
|
|
69
|
+
# Roadside stones and desert scrub, placed outside the drivable ribbon.
|
|
70
|
+
scrub=mat('Dry agave','8F9453',.95)
|
|
71
|
+
for i in range(90):
|
|
72
|
+
t=random.random()*8;p=sample(t,random.choice([-1,1])*random.uniform(14,23))
|
|
73
|
+
if i%4:
|
|
74
|
+
o=sphere('Tumbled sandstone',(p.x,p.y,.15),(random.uniform(.2,.7),random.uniform(.2,.65),random.uniform(.15,.4)),random.choice(rocks));o.rotation_euler.z=random.random()*6
|
|
75
|
+
else:
|
|
76
|
+
for j in range(9):
|
|
77
|
+
a=j*math.tau/9;b=(p.x,p.y,0);tip=(p.x+math.cos(a)*1.1,p.y+math.sin(a)*1.1,random.uniform(.4,1.5))
|
|
78
|
+
obj('Agave blade',mesh('Blade',[b,(p.x+.12,p.y+.12,.05),tip],[(0,1,2),(2,1,0)],scrub))
|
|
79
|
+
cloud=mat('Soft cream clouds','FCFCED',1)
|
|
80
|
+
# Puffy distant clouds remain beyond the cliffs, far from casting track shadows.
|
|
81
|
+
for x,y,z,sz in [(-65,165,47,9),(0,175,39,8),(65,170,45,12),(122,155,54,11),(-80,70,50,8)]:
|
|
82
|
+
for j in range(8):sphere('Cloud puff',(x+random.uniform(-sz,sz),y+random.uniform(-4,4),z+random.uniform(-3,4)),(random.uniform(3,7),4,random.uniform(2,5)),cloud)
|
|
83
|
+
for o in set(bpy.data.objects)-before:o['environment_owned']=True
|
|
84
|
+
# Avoid drawing camera wireframe over the intended shot.
|
|
85
|
+
bpy.data.objects['Chase camera'].hide_set(True)
|
|
86
|
+
bpy.ops.wm.save_as_mainfile(filepath=ROOT+'/src/models/canyon.blend')
|
|
87
|
+
print('Milestone 2: layered canyon, open rock arch, cacti, arrows, guardrails, cloud banks')
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
# Copyright 2026 Volter AI, Inc.
|
|
3
|
+
import bpy,math,datetime
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
ROOT=str(Path(bpy.data.filepath).resolve().parents[2])
|
|
6
|
+
for name in ['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','Natural sandstone arch']:
|
|
7
|
+
o=bpy.data.objects[name]
|
|
8
|
+
if not o.get('eroded'):
|
|
9
|
+
for v in o.data.vertices:
|
|
10
|
+
v.co.x+=.22*math.sin(v.co.z*1.3+v.co.y*.7);v.co.y+=.16*math.sin(v.co.z*2.1+v.co.x*.5)
|
|
11
|
+
b=o.modifiers.new('Weathered sandstone edges','BEVEL');b.width=.28;b.segments=3;o['eroded']=True
|
|
12
|
+
bpy.ops.wm.save_as_mainfile(filepath=ROOT+'/src/models/canyon.blend')
|
|
13
|
+
print('Weathered sandstone edges saved')
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
# Copyright 2026 Volter AI, Inc.
|
|
3
|
+
import bpy,math,bmesh
|
|
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
|
+
# Reusable rounded rear bumper and flat-tread racing tyre geometry.
|
|
8
|
+
verts=[];profile=[(-.225,.27),(-.225,.39),(-.18,.465),(.18,.465),(.225,.39),(.225,.27)]
|
|
9
|
+
for x,r in profile:
|
|
10
|
+
for i in range(32):a=i*math.tau/32;verts.append((x,r*math.cos(a),r*math.sin(a)))
|
|
11
|
+
faces=[]
|
|
12
|
+
for j in range(len(profile)):
|
|
13
|
+
for i in range(32):faces.append((j*32+i,j*32+(i+1)%32,((j+1)%len(profile))*32+(i+1)%32,((j+1)%len(profile))*32+i))
|
|
14
|
+
d=mesh('Rounded racing tire',verts,faces,tire);bm=bmesh.new();bm.from_mesh(d);bmesh.ops.recalc_face_normals(bm,faces=list(bm.faces));bm.to_mesh(d);bm.free()
|
|
15
|
+
for p in d.polygons:p.use_smooth=True
|
|
16
|
+
for i in range(6):
|
|
17
|
+
root=bpy.data.objects['Kart.'+str(i)]
|
|
18
|
+
for ob in root.children:
|
|
19
|
+
if ' tire' in ob.name:ob.data=d;ob.rotation_euler=(0,0,0)
|
|
20
|
+
if ' bumper' in ob.name and not ob.get('rounded_final'):
|
|
21
|
+
ob.data=box('Temporary bumper mesh',(0,0,0),(.88,.29,.48),white).data.copy()
|
|
22
|
+
temp=bpy.data.objects['Temporary bumper mesh'];bpy.data.objects.remove(temp,do_unlink=True)
|
|
23
|
+
# Box helper stores unit corners; bake its dimensions into the mesh.
|
|
24
|
+
for v in ob.data.vertices:v.co.x*=.44;v.co.y*=.145;v.co.z*=.24
|
|
25
|
+
ob.location=(0,-1.47,.48);ob.scale=(1,1,1)
|
|
26
|
+
m=ob.modifiers.new('Rounded bumper corners','BEVEL');m.width=.11;m.segments=4
|
|
27
|
+
ob['rounded_final']=True
|
|
28
|
+
# Tail reflector directly over the chrome pipes.
|
|
29
|
+
if not bpy.data.objects.get('K%d bumper reflector'%i):box('K%d bumper reflector'%i,(0,-1.622,.59),(.31,.012,.065),red,root)
|
|
30
|
+
bpy.ops.wm.save_as_mainfile(filepath=ROOT+'/src/models/canyon.blend')
|
|
31
|
+
print('Reusable flat-tread tyres and rounded rear bumpers saved')
|
|
@@ -0,0 +1,75 @@
|
|
|
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')
|
|
@@ -0,0 +1,15 @@
|
|
|
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);
|
|
@@ -0,0 +1,69 @@
|
|
|
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')
|
|
@@ -0,0 +1,54 @@
|
|
|
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
|