@volter/cyclotron 0.5.211 → 0.5.213
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BUNDLED_NOTICES +232 -1964
- package/LICENSE +2 -3
- package/LICENSE-BLENDER +9 -8
- package/NOTICE +8 -3
- package/README.md +39 -30
- package/dist/.vite/manifest.json +1215 -4338
- package/dist/assets/AudioViewer-B5pkIGXS.js +1 -0
- package/dist/assets/ImageViewer-BPVLEEQ2.js +1 -0
- package/dist/assets/JsonAssetDocument-DuVW9del.js +2 -0
- package/dist/assets/ProjectAuthoringBootstrap-CZJz4Svb.js +2 -0
- package/dist/assets/SourceAssetViewer-LwHBW53R.js +1 -0
- package/dist/assets/VideoViewer-Bfjjp4zH.js +1 -0
- package/dist/assets/client-BLXKEWrR.js +25 -0
- package/dist/assets/index-BKjLHm6K.js +483 -0
- package/dist/assets/index-CJcVFJ-l.css +1 -0
- package/dist/assets/product-CaIfLQVS.js +1 -0
- package/dist/assets/story-capture-C3xmgE62.js +1 -0
- package/dist/assets/volter-sdk-DT0xmh2J.js +1407 -0
- package/dist/assets/volter-sdk-activation-events-B-WERmWU.js +1 -0
- package/dist/assets/volter-sdk-active-project-DvEsy8Q6.js +1 -0
- package/dist/assets/volter-sdk-adapter-editor-config-CQ5V6W-o.js +1 -0
- package/dist/assets/volter-sdk-animation-animation-clock-Cy7j_2qF.js +1 -0
- package/dist/assets/volter-sdk-animation-stage-transport-DoUDq6Gb.js +1 -0
- package/dist/assets/volter-sdk-api-base-Dr1bx5e0.js +1 -0
- package/dist/assets/volter-sdk-api-project-open-D4nPvIPU.js +1 -0
- package/dist/assets/volter-sdk-api-project-source-DoO7WBwQ.js +1 -0
- package/dist/assets/volter-sdk-api-settings-BEHgO5wf.js +1 -0
- package/dist/assets/volter-sdk-asset-capabilities-CGkNwaAe.js +1 -0
- package/dist/assets/volter-sdk-asset-document-write-policy-CzWM1HhK.js +1 -0
- package/dist/assets/volter-sdk-asset-editor-context-BkSK1vL1.js +1 -0
- package/dist/assets/volter-sdk-asset-thumbnails-zSmJgI_x.js +1 -0
- package/dist/assets/volter-sdk-asset-viewers-B-ICvlkR.js +1 -0
- package/dist/assets/volter-sdk-asset-workflow-project-content-C6Ow0R-F.js +1 -0
- package/dist/assets/volter-sdk-authoring-active-adapter-CKuWwxgH.js +1 -0
- package/dist/assets/volter-sdk-authoring-boundary-authoring-adapter-DTwFKBkS.js +1 -0
- package/dist/assets/volter-sdk-authoring-composite-authoring-adapter-iRSbSHpV.js +1 -0
- package/dist/assets/volter-sdk-authoring-consumer-actions-DK9-B-wg.js +1 -0
- package/dist/assets/volter-sdk-authoring-design-time-mount-registry-BQnWcBVe.js +1 -0
- package/dist/assets/volter-sdk-authoring-design-time-roots-BKSmkD7_.js +1 -0
- package/dist/assets/volter-sdk-authoring-layered-pick-C-YvuxEG.js +1 -0
- package/dist/assets/volter-sdk-authoring-no-authoring-adapter-Cv9DD6G0.js +1 -0
- package/dist/assets/volter-sdk-authoring-panel-authoring-BLOrFs8L.js +1 -0
- package/dist/assets/volter-sdk-authoring-react-design-canvas-style-Dr9i31o5.js +1 -0
- package/dist/assets/volter-sdk-authoring-react-story-board-BlCQQM-8.js +1 -0
- package/dist/assets/volter-sdk-authoring-seam-evidence-CjetY_ZG.js +1 -0
- package/dist/assets/volter-sdk-authoring-selection-scope-BxmbC71H.js +1 -0
- package/dist/assets/volter-sdk-authoring-shell-document-ops-DDb8oGx9.js +1 -0
- package/dist/assets/volter-sdk-authoring-stage-root-B50LLhnJ.js +1 -0
- package/dist/assets/volter-sdk-authoring-story-board-chrome-fit-BVV9fbcw.js +1 -0
- package/dist/assets/volter-sdk-authoring-viewport-tool-context-cQafPSkT.js +1 -0
- package/dist/assets/volter-sdk-authoring-viewport-tool-owner-BppqL4f_.js +1 -0
- package/dist/assets/volter-sdk-authoring-world-session-state-BlpdiKod.js +1 -0
- package/dist/assets/volter-sdk-bitmap-label-BbtGPWgP.js +1 -0
- package/dist/assets/volter-sdk-breakpoint-state-DCFuSvgm.js +1 -0
- package/dist/assets/volter-sdk-bytes-codec-CrNeVT4e.js +1 -0
- package/dist/assets/volter-sdk-cancellation-reason-ByOH3mlF.js +1 -0
- package/dist/assets/volter-sdk-canvas-frames-BU8Rqr4J.js +1 -0
- package/dist/assets/volter-sdk-capture-size-D4cNT2XC.js +1 -0
- package/dist/assets/volter-sdk-chrome-registry-qHUiDauw.js +1 -0
- package/dist/assets/volter-sdk-command-result-text-2wzEhQ5t.js +1 -0
- package/dist/assets/volter-sdk-commands-C4RgHEOa.js +1 -0
- package/dist/assets/volter-sdk-component-board-registry-6gFZBkTP.js +1 -0
- package/dist/assets/volter-sdk-components-AssetEditorShell-CQVLedvW.js +1 -0
- package/dist/assets/volter-sdk-components-InspectorCanvasPreview-CN5ROhNT.js +1 -0
- package/dist/assets/volter-sdk-components-SurfaceStateOverlay-Cc9Ov1Ol.js +1 -0
- package/dist/assets/volter-sdk-components-Toolbar-ZoV9Yq_A.js +1 -0
- package/dist/assets/volter-sdk-components-TransientHint-BML2V3uu.js +1 -0
- package/dist/assets/volter-sdk-components-inspector-preview-section-BhDjhUyz.js +1 -0
- package/dist/assets/volter-sdk-components-use-after-paint-BVSO4qjV.js +1 -0
- package/dist/assets/volter-sdk-components-workspace-history-CThvGfsY.js +1 -0
- package/dist/assets/volter-sdk-content-entry-source-registry-CJLVq3tC.js +1 -0
- package/dist/assets/volter-sdk-contribution-surfaces-CeEDmriM.js +1 -0
- package/dist/assets/volter-sdk-contributions-x6j41XZp.js +1 -0
- package/dist/assets/volter-sdk-coverage-design-time-surfaces-D-tNGazo.js +1 -0
- package/dist/assets/volter-sdk-creation-site-registry-64gyrZPD.js +1 -0
- package/dist/assets/volter-sdk-css-numeric-style-CXeWqAoG.js +1 -0
- package/dist/assets/volter-sdk-declared-tools-BAzHxyUW.js +1 -0
- package/dist/assets/volter-sdk-document-areas-4DXjy0el.js +1 -0
- package/dist/assets/volter-sdk-document-layer-B4VYMPZ9.js +1 -0
- package/dist/assets/volter-sdk-document-open-registry-BLDMaEoN.js +1 -0
- package/dist/assets/volter-sdk-document-play-extension-Dv3fyS6K.js +1 -0
- package/dist/assets/volter-sdk-document-probe-drBhAyza.js +1 -0
- package/dist/assets/volter-sdk-document-stage-sessions-CtI9anAf.js +1 -0
- package/dist/assets/volter-sdk-document-viewports-BO0N7VyN.js +1 -0
- package/dist/assets/volter-sdk-editor-commands-BJ9Otxzu.js +1 -0
- package/dist/assets/volter-sdk-editor-console-BaGgfWmH.js +1 -0
- package/dist/assets/volter-sdk-editor-document-probe-D0ZhaXHx.js +1 -0
- package/dist/assets/volter-sdk-editor-mode-B07FDozS.js +1 -0
- package/dist/assets/volter-sdk-editor-runtime-D00Du7hG.js +1 -0
- package/dist/assets/volter-sdk-editor-server-response-C6kOPAsW.js +1 -0
- package/dist/assets/volter-sdk-editor-session-attribution-CggpIFb4.js +1 -0
- package/dist/assets/volter-sdk-editor-view-DEMsxlaT.js +1 -0
- package/dist/assets/volter-sdk-environment-images-OQtFG1kA.js +1 -0
- package/dist/assets/volter-sdk-extension-script-DanTHcyo.js +1 -0
- package/dist/assets/volter-sdk-eyedropper-session-BfVXtjzc.js +1 -0
- package/dist/assets/volter-sdk-files-file-provider-CXL6oCMd.js +1 -0
- package/dist/assets/volter-sdk-files-project-files-SBAE37py.js +1 -0
- package/dist/assets/volter-sdk-framed-document-capture-7TnE8pn1.js +1 -0
- package/dist/assets/volter-sdk-framed-document-driver-C0K3-SRt.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-component-marks-BmJEMvvO.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-kind-icon-CrwdpecY.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-node-rows-FcK7_ULi.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-projection-CKzUOZUa.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-row-media-Czg40Ddi.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-row-model-BGzmcywF.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-rows-VAI0psTR.js +1 -0
- package/dist/assets/volter-sdk-hierarchy-walk-CaVqG7v2.js +1 -0
- package/dist/assets/volter-sdk-history-history-delegate-DH_xBvdh.js +1 -0
- package/dist/assets/volter-sdk-history-history-service-D0n0Gl5Z.js +1 -0
- package/dist/assets/volter-sdk-history-persistence-coordinator-CcywAFdm.js +1 -0
- package/dist/assets/volter-sdk-history-resource-registry-DMTlnwGv.js +1 -0
- package/dist/assets/volter-sdk-history-snapshot-store-BVh1DtBp.js +1 -0
- package/dist/assets/volter-sdk-history-source-history-backend-ulJ-65tX.js +1 -0
- package/dist/assets/volter-sdk-hmr-registration-group-DvMQVKyO.js +1 -0
- package/dist/assets/volter-sdk-hmr-stable-react-context-BMVr5YVk.js +1 -0
- package/dist/assets/volter-sdk-host-D765Py2w.js +1 -0
- package/dist/assets/volter-sdk-hotkeys-TesTKdAZ.js +1 -0
- package/dist/assets/volter-sdk-index-BABXozHr.js +1 -0
- package/dist/assets/volter-sdk-inference-diagnostics-CsDbQ0M5.js +1 -0
- package/dist/assets/volter-sdk-inspection-document-subject-BMRD77Va.js +1 -0
- package/dist/assets/volter-sdk-inspection-group-icons-Wpz-YhkE.js +1 -0
- package/dist/assets/volter-sdk-inspection-model-BVOyStdc.js +1 -0
- package/dist/assets/volter-sdk-inspection-node-media-B8AL8_3F.js +1 -0
- package/dist/assets/volter-sdk-inspection-null-subject-d5bQZCbS.js +1 -0
- package/dist/assets/volter-sdk-inspector-property-grouping-BqrZkwo4.js +1 -0
- package/dist/assets/volter-sdk-inspector-section-registry-C6U15zvC.js +1 -0
- package/dist/assets/volter-sdk-js-heap-CcOnY0kf.js +1 -0
- package/dist/assets/volter-sdk-keymap-presets-CSM-jVcZ.js +1 -0
- package/dist/assets/volter-sdk-layout-arrangements-DHA3uifx.js +1 -0
- package/dist/assets/volter-sdk-layouts-4v9ECCn9.js +1 -0
- package/dist/assets/volter-sdk-light-explorer-model-CPuZjpiR.js +1 -0
- package/dist/assets/volter-sdk-live-seam-evidence-B_RyDaOp.js +1 -0
- package/dist/assets/volter-sdk-live-session-registry-C6gHroaH.js +1 -0
- package/dist/assets/volter-sdk-manifest-project-CVVUDDuL.js +1 -0
- package/dist/assets/volter-sdk-mount-css-scope-DaJoEo3v.js +1 -0
- package/dist/assets/volter-sdk-mount-failure-report-Cm92oiGJ.js +1 -0
- package/dist/assets/volter-sdk-native-selection-style-Bp4IBnA4.js +1 -0
- package/dist/assets/volter-sdk-photograph-notice-C6_gZGpW.js +1 -0
- package/dist/assets/volter-sdk-play-camera-flight-SwlYhOxW.js +1 -0
- package/dist/assets/volter-sdk-product-command-G8kKVJ-i.js +1 -0
- package/dist/assets/volter-sdk-progress-4GGmPvZn.js +1 -0
- package/dist/assets/volter-sdk-project-module-changes-DIrDIHeD.js +1 -0
- package/dist/assets/volter-sdk-project-module-url-BuAUWpus.js +1 -0
- package/dist/assets/volter-sdk-project-output-roots-BON7FOwQ.js +1 -0
- package/dist/assets/volter-sdk-project-tab-census-CO06UOh-.js +1 -0
- package/dist/assets/volter-sdk-renderer-resource-counts-2kLiD8_S.js +1 -0
- package/dist/assets/volter-sdk-scoped-project-css-DA63CYkM.js +1 -0
- package/dist/assets/volter-sdk-selection-CSUq7EiY.js +1 -0
- package/dist/assets/volter-sdk-served-url-B_MypeId.js +1 -0
- package/dist/assets/volter-sdk-settings-settings-provider-CJuWxTB5.js +1 -0
- package/dist/assets/volter-sdk-settings-store-CEFKDj0h.js +1 -0
- package/dist/assets/volter-sdk-shell-store-Cl4sX9p4.js +1 -0
- package/dist/assets/volter-sdk-shell-store-door-DGjybg0J.js +1 -0
- package/dist/assets/volter-sdk-source-conflict-CV8Gk053.js +1 -0
- package/dist/assets/volter-sdk-stage-context-Cb0SaYhi.js +1 -0
- package/dist/assets/volter-sdk-stage-invalidation-VlBciYA0.js +1 -0
- package/dist/assets/volter-sdk-stage-store-registry-BpIy_QKq.js +1 -0
- package/dist/assets/volter-sdk-startup-failure-C_8H4xuP.js +1 -0
- package/dist/assets/volter-sdk-stories-StoryPreviewMount-BUX42gIR.js +1 -0
- package/dist/assets/volter-sdk-stories-compose-project-stories-CkSd4Si5.js +1 -0
- package/dist/assets/volter-sdk-stories-scope-Dndn7MD8.js +1 -0
- package/dist/assets/volter-sdk-stories-story-declared-medium-Byi4XWeJ.js +1 -0
- package/dist/assets/volter-sdk-stories-story-dom-runtime-BS1VPvJ6.js +1 -0
- package/dist/assets/volter-sdk-stories-story-grouping-CpNh4cUf.js +1 -0
- package/dist/assets/volter-sdk-story-document-openers-Ba5jQqay.js +1 -0
- package/dist/assets/volter-sdk-surface-state-BhQ45ars.js +1 -0
- package/dist/assets/volter-sdk-tab-census-D0r0s37y.js +1 -0
- package/dist/assets/volter-sdk-tool-contribution-convention-JCXL6f2w.js +1 -0
- package/dist/assets/volter-sdk-transform-mode-request-Cwk_Kyty.js +1 -0
- package/dist/assets/volter-sdk-transient-hint-BOfFzAV8.js +1 -0
- package/dist/assets/volter-sdk-types-CkT8l5N_.js +1 -0
- package/dist/assets/volter-sdk-ui-source-file-region-resolver-Cfza3eEl.js +1 -0
- package/dist/assets/volter-sdk-ui-source-inspect-CEjmAN75.js +1 -0
- package/dist/assets/volter-sdk-ui-source-source-write-backend-0njgRdI6.js +1 -0
- package/dist/assets/volter-sdk-ui-source-tier-source-write-backend-CpsxorYU.js +1 -0
- package/dist/assets/volter-sdk-viewport-activation-timings-B3hRTu3A.js +1 -0
- package/dist/assets/volter-sdk-viewport-editor-controls-DDBd-VqO.js +1 -0
- package/dist/assets/volter-sdk-viewport-presentation-DRhiAH1h.js +1 -0
- package/dist/assets/volter-sdk-volter-contributions-nlGXjgJZ.js +1 -0
- package/dist/assets/volter-sdk-wait-until-CMvYQmO8.js +1 -0
- package/dist/assets/volter-sdk-widgets-design-system-BJOyO8sO.js +1 -0
- package/dist/assets/volter-sdk-widgets-editor-appearance-eVtkxsIm.js +1 -0
- package/dist/assets/volter-sdk-widgets-editor-material-BoQP_5SK.js +1 -0
- package/dist/assets/volter-sdk-widgets-icon-set-registry-CP0D74kc.js +1 -0
- package/dist/assets/volter-sdk-widgets-index-De34FpYu.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-AlignmentGrid-_GjMjIGb.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-AssetSlotPicker-B7vN7BEd.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-BorderEditor-E2J8cpyT.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ColorPicker-D6TERGKs.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-CurveEditor-CXR8n-CA.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-FilterEditor-CDvfWY4Q.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-FontPicker-BgpW8FW8.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-GradientEditor-DOOBkXjY.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ScrubbableInput-1NXWR_gB.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ShadowEditor-Cd2-HwFn.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-color-utils-C4HuSjFu.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-curve-utils-DUU2CCtc.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-index-D5kwrOUQ.js +1 -0
- package/dist/assets/volter-sdk-widgets-inspector-widgets-shared-CkFN2SUn.js +1 -0
- package/dist/assets/volter-sdk-widgets-interactive-edit-scope-DynpKMMZ.js +1 -0
- package/dist/assets/volter-sdk-widgets-palette-colors-DhL1I42R.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Dialog-EUtcZi0Y.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Fields-Bl_eaBej.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-List--NE_1N5-.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-StateSurface-BHXpv7qi.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Surfaces-BdKa5HGV.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Tabs-sFV7f1UP.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Toolbar-CIr5Cs49.js +1 -0
- package/dist/assets/volter-sdk-widgets-patterns-Tree-C2YHfddf.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-AnchoredMenu-DCclspnW.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Button-B0YxR4ea.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-ColorInput-B1_SLTuc.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-DraftTextInput-CpHzPdt8.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-EditorIcon-Dw4knhya.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-FormControls-BAbRanmE.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-HoverPreview-Cj7jKNd4.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-JsonInput-C0DCI5bE.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Layout-gT4Z6mtt.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Menu-9EESAp9m.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-NumberInput-Dk-5zqJ8.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Panel-BQWJF-Pb.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-SectionHeader-DXvmafCK.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Text-yBrdWK2w.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-ThemeRootPortal-CRhefpUL.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Tooltip-D5Kcb-ZC.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-Vec3Input-DiG6PEIe.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-clamp-to-viewport-DhnSxXVK.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-editor-icons-e65mgyAk.js +1 -0
- package/dist/assets/volter-sdk-widgets-primitives-panel-header-styles-BVL0mN8g.js +1 -0
- package/dist/assets/volter-sdk-widgets-theme-C-_RU9Ov.js +1 -0
- package/dist/assets/volter-sdk-widgets-z-index-CrJJXeKL.js +1 -0
- package/dist/assets/volter-sdk-worker-call-metrics-BTfmngck.js +1 -0
- package/dist/assets/volter-sdk-workspace-core-utilities-DtHGK9PF.js +1 -0
- package/dist/assets/volter-sdk-workspace-document-ids-COULA7c6.js +1 -0
- package/dist/assets/volter-sdk-workspace-document-registry-6m5csVP7.js +1 -0
- package/dist/assets/volter-sdk-workspace-document-restore-M8ifJMou.js +1 -0
- package/dist/assets/volter-sdk-workspace-host-commands-8Qzej--P.js +1 -0
- package/dist/assets/volter-sdk-workspace-static-panels-Ckk7qUuS.js +1 -0
- package/dist/assets/volter-sdk-workspace-status-registry-BdU0dZAt.js +1 -0
- package/dist/assets/volter-sdk-workspace-utility-registry-BHxymD2l.js +1 -0
- package/dist/assets/volter-sdk-world-canvas-viewport-state-CHO8s9gE.js +1 -0
- package/dist/assets/volter-sdk-world-pan-state-C-9xgzAh.js +1 -0
- package/dist/assets/volter-sdk-write-pipe-CJHg7J4i.js +1 -0
- package/dist/assets/volter-shared-fontawesome-BEv9WEZj.js +1 -0
- package/dist/assets/volter-shared-jsx-dev-runtime-domcKDU3.js +1 -0
- package/dist/assets/volter-shared-jsx-runtime-Cu7pVW-1.js +1 -0
- package/dist/assets/volter-shared-react-BLHga76C.js +1 -0
- package/dist/assets/volter-shared-react-dom-client-vi6WsWu2.js +1 -0
- package/dist/assets/volter-shared-react-dom-kzJVGsQd.js +1 -0
- package/dist/assets/volter-shared-three-BWbOWtM5.js +4220 -0
- package/dist/assets/volter-shared-three-core-DEsIwtOu.js +9 -0
- package/dist/volter-shared-modules.json +227 -0
- package/dist/volter-shared-react.json +6 -6
- package/dist/volter-shared-three.json +2 -1
- package/dist-node/cli.js +2962 -6245
- package/dist-node/create.js +350 -278
- package/package.json +51 -31
- package/src/index.ts +4 -6
- package/src/product-id.d.ts +4 -0
- package/src/styles/maya.style.ts +14 -0
- package/src/styles/substance.style.ts +15 -0
- package/starter/AGENTS.md +216 -156
- package/starter/cube.py +3 -9
- package/starter/film/boards/title.png +0 -0
- package/starter/film/cut.json +12 -0
- package/starter/film/film.json +7 -0
- package/starter/film/music/.gitkeep +0 -0
- package/starter/film/music.json +4 -0
- package/starter/film/script.fountain +16 -0
- package/starter/film/shots.json +26 -0
- package/starter/film/sounds/whoosh.wav +0 -0
- package/starter/film/src/graphics/title.css +33 -0
- package/starter/film/src/graphics/title.stories.tsx +6 -0
- package/starter/film/src/graphics/title.tsx +14 -0
- package/starter/film/src/models/opening.blend +0 -0
- package/starter/film/src/models/opening.py +87 -0
- package/starter/film/story.md +14 -0
- package/starter/film/takes/.gitkeep +0 -0
- package/starter/film/takes.json +4 -0
- package/starter/film-skills/film-cut/SKILL.md +31 -0
- package/starter/film-skills/film-shots/SKILL.md +32 -0
- package/starter/film-skills/film-story/SKILL.md +19 -0
- package/starter/game/levels/MainLevel.tsx +24 -0
- package/starter/game/prefabs/ground/Ground.tsx +24 -0
- package/starter/game/prefabs/ground/ground.blend +0 -0
- package/starter/game/prefabs/ground/ground.glb +0 -0
- package/starter/game/prefabs/ground/ground.py +106 -0
- package/starter/package.json +3 -2
- package/starter/sounds/mix.json +10 -0
- package/dist/assets/BVHLoader-V9f-EnYd.js +0 -1
- package/dist/assets/ColladaLoader-Cp-E7iiV.js +0 -3
- package/dist/assets/EntityModelDocument-DxdGehCz.js +0 -1
- package/dist/assets/EnvironmentAssetDocument-DSTdQdSt.js +0 -1
- package/dist/assets/FBXLoader-CpZqH4xx.js +0 -1
- package/dist/assets/InspectorObjectPreview-De6zT2B7.js +0 -1
- package/dist/assets/LiveModuleDocument-Do5YRpzB.js +0 -2
- package/dist/assets/LutAssetDocument-BjZgLVjR.js +0 -1
- package/dist/assets/MTLLoader-JK_iLZsm.js +0 -2
- package/dist/assets/ModelAssetDocument-Bb5UYcrj.js +0 -1
- package/dist/assets/NonThreeAuthoringBootstrap-CVri610U.js +0 -1
- package/dist/assets/OBJLoader-eGO6iVw8.js +0 -5
- package/dist/assets/Object3DDocumentToolbar-C7HT5nHi.js +0 -1
- package/dist/assets/Object3DPreview-CaOEIIdC.js +0 -2
- package/dist/assets/OrbitControls-DrHRrSFA.js +0 -1
- package/dist/assets/PLYLoader-BCSN1tYw.js +0 -2
- package/dist/assets/QuarksAssetDocument-DzS5h2Bc.js +0 -2
- package/dist/assets/RectAreaLightUniformsLib-HqHjURQQ.js +0 -1
- package/dist/assets/STLLoader-vhCvZeOF.js +0 -1
- package/dist/assets/ShaderAssetDocument-DYXX7aw5.js +0 -1
- package/dist/assets/StageHost-DVnv4TcF.js +0 -1179
- package/dist/assets/TDSLoader-DbUHSEO9.js +0 -1
- package/dist/assets/ToolObject3DPreview-Dad57oap.js +0 -1
- package/dist/assets/ViewportShadingMenu-Bl8IlWGh.js +0 -1
- package/dist/assets/animation-mixers.service-qJ4SNabd.js +0 -1
- package/dist/assets/animation-timeline.utility-wNtZO_cS.js +0 -1
- package/dist/assets/anthropic-DwpKRVGM.svg +0 -1
- package/dist/assets/asset-preview-OYr2sUbO.js +0 -4
- package/dist/assets/blender-display-shaders-BpnqnkG8.lut +0 -0
- package/dist/assets/blender-emscripten-engine-CTeOMKcG.js +0 -2
- package/dist/assets/blender-motion-worker-CtT2cV3V.js +0 -1
- package/dist/assets/blender-node-editor.document-pEhp9MZH.js +0 -1
- package/dist/assets/blender-properties-model-B7O1AR0g.js +0 -1
- package/dist/assets/blender-properties-tab-CBdCQseg.js +0 -3
- package/dist/assets/blender-runtime-host-swgDAdoy.js +0 -7221
- package/dist/assets/blender-runtime.document-BbtLLRrN.js +0 -13
- package/dist/assets/blender-screenshot.menu-CD1Bg0Z-.js +0 -1
- package/dist/assets/blender-timeline.document-DT_mWXnn.js +0 -1
- package/dist/assets/blender-uv-editor.document-9j_SUkf7.js +0 -1
- package/dist/assets/blender-version.status-Z13Xgrj-.js +0 -1
- package/dist/assets/blender-wali-engine-kfyCxO_U.js +0 -2
- package/dist/assets/blender.command-zp1Oe3pY.js +0 -1
- package/dist/assets/blender.environment-CG-pC7sk.js +0 -1
- package/dist/assets/blender.keymap-BmOBRY7p.js +0 -1
- package/dist/assets/blender.status-MRiv-9Ju.js +0 -1
- package/dist/assets/blender.style--aBP5V1k.js +0 -1
- package/dist/assets/city-EkhAOo5s.exr +0 -0
- package/dist/assets/courtyard-DqlebbpC.exr +0 -0
- package/dist/assets/forest-P_CQY3b_.exr +0 -0
- package/dist/assets/icon-BkiLD9ed.png +0 -0
- package/dist/assets/index-C8BwtQGN.js +0 -952
- package/dist/assets/interior-Bo_lba15.exr +0 -0
- package/dist/assets/linear-resolve-Cuka7Ypb.js +0 -377
- package/dist/assets/live-mixers-B-bwLZ7c.js +0 -1
- package/dist/assets/model-inspection-DVE8f3Dj.js +0 -1
- package/dist/assets/model.layout-BpZE1W9V.js +0 -1
- package/dist/assets/models.finder-5z7xbsOu.js +0 -1
- package/dist/assets/night-CvV4Gybt.exr +0 -0
- package/dist/assets/object3d-document-session-registry-DDpmVmir.js +0 -2
- package/dist/assets/openai-DHNKzFtc.svg +0 -1
- package/dist/assets/output-pass-j4dAGrPY.js +0 -85
- package/dist/assets/play-live-BBkOuWQn.js +0 -1
- package/dist/assets/product-CUU4-nDZ.js +0 -14
- package/dist/assets/product-DPOIZgKM.css +0 -1
- package/dist/assets/properties-bone-constraints.inspector-D8CtPu9c.js +0 -1
- package/dist/assets/properties-bone.inspector-j9aNQrP9.js +0 -1
- package/dist/assets/properties-collection.inspector-CaMveBur.js +0 -1
- package/dist/assets/properties-constraints.inspector-DB9bBgqn.js +0 -1
- package/dist/assets/properties-data.inspector-C7dh_XTe.js +0 -1
- package/dist/assets/properties-material.inspector-DWC5NJkW.js +0 -1
- package/dist/assets/properties-modifiers.inspector-CBUxUSB0.js +0 -1
- package/dist/assets/properties-object.inspector-wvO8nuGD.js +0 -1
- package/dist/assets/properties-output.inspector-CFyAZn9F.js +0 -1
- package/dist/assets/properties-particles.inspector-zEaTW3U7.js +0 -1
- package/dist/assets/properties-physics.inspector-CO-4UZbX.js +0 -1
- package/dist/assets/properties-render.inspector-DoJ1BMKP.js +0 -1
- package/dist/assets/properties-scene.inspector-BOhaiC0_.js +0 -1
- package/dist/assets/properties-texture.inspector-1JoYUWiR.js +0 -1
- package/dist/assets/properties-view-layer.inspector-DuRkFWtq.js +0 -1
- package/dist/assets/properties-world.inspector-Csfv-x0A.js +0 -1
- package/dist/assets/react-18-Dh4gvPqw.js +0 -1
- package/dist/assets/regions-DWeEBnE2.js +0 -1
- package/dist/assets/sculpt.layout-D-K5cLw6.js +0 -1
- package/dist/assets/session-CvHLFvpx.js +0 -6056
- package/dist/assets/shading.layout-CZZHKBer.js +0 -1
- package/dist/assets/sky-precompute-worker-CPGW9t_C.js +0 -1
- package/dist/assets/spark.module-CTTm62aa.js +0 -12120
- package/dist/assets/stage-keyboard-BvTth28t.js +0 -1
- package/dist/assets/stage-overlay-set-Dt6IH1xC.js +0 -1
- package/dist/assets/stage-presence-markers-DszBO9B1.js +0 -1
- package/dist/assets/stage-transform-tools-D6H_SBLV.js +0 -1
- package/dist/assets/standard-viewport-dressing-BSYojdsQ.js +0 -24
- package/dist/assets/studio-CysTBGIb.exr +0 -0
- package/dist/assets/sunrise-Dj0psFrf.exr +0 -0
- package/dist/assets/sunset-Bw3x2Bot.exr +0 -0
- package/dist/assets/texture.layout-DASpHVht.js +0 -1
- package/dist/assets/three-integration.service-DvOyomjh.js +0 -2
- package/dist/assets/three.module-CtVjCPcj.js +0 -3840
- package/dist/assets/uv-editing.layout-A8RA-cbM.js +0 -1
- package/dist/assets/volter-sdk-account-fYMnFHfe.js +0 -1
- package/dist/assets/volter-sdk-client-JmBOIwGe.js +0 -1
- package/dist/assets/volter-sdk-contributions-l9HrPjwW.js +0 -1
- package/dist/assets/volter-sdk-css-numeric-style-ud28AcW3.js +0 -1
- package/dist/assets/volter-sdk-document-probe-C4RhslOI.js +0 -1
- package/dist/assets/volter-sdk-editor-view-B_mScT1w.js +0 -1
- package/dist/assets/volter-sdk-host-B9QOINsX.js +0 -1
- package/dist/assets/volter-sdk-http-transport.browser-6a_cUtge.js +0 -1
- package/dist/assets/volter-sdk-index-DDdgpWqc.js +0 -1
- package/dist/assets/volter-sdk-kit-CapabilityCoverageSection-CRc93EXv.js +0 -1
- package/dist/assets/volter-sdk-kit-account-client-ByjTbat7.js +0 -1
- package/dist/assets/volter-sdk-kit-action-registry-J5l20B9X.js +0 -1
- package/dist/assets/volter-sdk-kit-active-product-BTHzjkrh.js +0 -1
- package/dist/assets/volter-sdk-kit-active-project-CgXmYhKx.js +0 -1
- package/dist/assets/volter-sdk-kit-adapter-editor-config-CcSGBUF1.js +0 -1
- package/dist/assets/volter-sdk-kit-adapter-module-CqkP49hA.js +0 -1
- package/dist/assets/volter-sdk-kit-adapter-observation-MWNd8Bmj.js +0 -1
- package/dist/assets/volter-sdk-kit-animation-animation-clock-C5QhnLuY.js +0 -1
- package/dist/assets/volter-sdk-kit-animation-stage-transport-DFbbJ80P.js +0 -1
- package/dist/assets/volter-sdk-kit-api-assets-Dtg4_1jX.js +0 -1
- package/dist/assets/volter-sdk-kit-api-base-De8oXkY8.js +0 -1
- package/dist/assets/volter-sdk-kit-api-build-Cgmw35Ng.js +0 -1
- package/dist/assets/volter-sdk-kit-api-logs-B1mQlcPQ.js +0 -1
- package/dist/assets/volter-sdk-kit-api-project-identity-DEZz1U5_.js +0 -1
- package/dist/assets/volter-sdk-kit-api-project-open-DuXZ6vyn.js +0 -1
- package/dist/assets/volter-sdk-kit-api-project-source-DMnPoTP2.js +0 -1
- package/dist/assets/volter-sdk-kit-api-project-state-6Lu0Vxdr.js +0 -1
- package/dist/assets/volter-sdk-kit-api-relay-BuCkenvE.js +0 -1
- package/dist/assets/volter-sdk-kit-api-settings-CkFO_pMP.js +0 -1
- package/dist/assets/volter-sdk-kit-api-themes-D5J6TiAR.js +0 -1
- package/dist/assets/volter-sdk-kit-api-worktrees-de1U7-9B.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-capabilities-IBJRDoU_.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-compare-core-qeWQI0-1.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-editor-context-JZ2T8xhF.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-events-wfq-jH9_.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-inspector-actions-NlF3CeMC.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-selection-BUXGqut1.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-selection-viewer-registry-DNj4RggW.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-thumbnails-CPp1sS_w.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-viewers-PKilU3Lm.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-import-jobs-DHDfKVAJ.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-ledger-Ch0TDXil.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-ledger-backend-Cb0-daSo.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-materialization-report-Bznr7T6d.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-asset-pack-manifest-BriZZqYC.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-audio-preview-player-5K3HN4kg.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-audio-waveform-F65PsmIZ.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-cloud-asset-client-DzxVbaeb.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-hosted-asset-materialization-B2Oxd31D.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-image-view-scale-BmPO24SY.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-ledger-write-lock-BPRq-xQf.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-pixi-spritesheet-CM64IwuA.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-preview-resource-lifetime-BIKxorKS.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-project-asset-commands-7CNTmzBZ.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-project-content-C3EJl866.js +0 -1
- package/dist/assets/volter-sdk-kit-asset-workflow-thumbnail-system-CQrbYiAp.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-active-adapter-BC9Cf4yx.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-active-systems-GZm33tOS.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-adapter-key-C4-d6xt1.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-authoring-asset-url-CEEw_XEg.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-bootstrap-state-BJsS0bnj.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-boundary-authoring-adapter-1NA63Idp.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-canvas-scene-guides-BlbGyg38.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-composite-authoring-adapter-D0FSf6DM.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-consumer-actions-J7MnHWK3.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-design-time-layers-CnLS2erF.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-design-time-mount-registry-BrmHkPuP.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-edit-mode-authoring-HQAxbCiB.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-empty-project-authoring-CdLSRvO0.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-instance-source-menu-EWM45v6y.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-layered-pick-BX3K3GR7.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-mounted-root-subjects-BGatqFLR.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-no-authoring-adapter-CerY6qmy.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-object3d-document-persistence-DxZ-V-ys.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-panel-authoring-Bbv7lJc5.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-project-authoring-session-C5rP-I6e.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-provenance-BNVk0DFH.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-react-canvas-navigation-BqUskgSb.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-react-design-canvas-style-DB8S6Vfi.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-react-story-board-M-VqCWKu.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-seam-evidence-Qbbz8M6t.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-selection-scope-CkblMrR8.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-shell-document-ops-B9Y9p91j.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-story-board-chrome-fit-7umaPaVS.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-three-root-M5Gj55-Z.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-viewport-tool-context-CH5NA-YI.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-viewport-tool-owner-CzTEMmzx.js +0 -1
- package/dist/assets/volter-sdk-kit-authoring-world-session-state-BjKbimsg.js +0 -1
- package/dist/assets/volter-sdk-kit-availability-tick-C7I6Zrut.js +0 -1
- package/dist/assets/volter-sdk-kit-bitmap-label-DPmffd8g.js +0 -1
- package/dist/assets/volter-sdk-kit-boot-routing-CaKypcBx.js +0 -1
- package/dist/assets/volter-sdk-kit-breakpoint-state-5m0qTYvY.js +0 -1
- package/dist/assets/volter-sdk-kit-build-identity-HQ0VWGG8.js +0 -1
- package/dist/assets/volter-sdk-kit-bytes-codec-BJDqylNg.js +0 -1
- package/dist/assets/volter-sdk-kit-cancellation-reason-B0z-IzQ9.js +0 -1
- package/dist/assets/volter-sdk-kit-canvas-frames-BtkS3lNe.js +0 -1
- package/dist/assets/volter-sdk-kit-capture-camera-pose-CUejcTcV.js +0 -1
- package/dist/assets/volter-sdk-kit-capture-size-Uyb3uqXA.js +0 -1
- package/dist/assets/volter-sdk-kit-chrome-registry-cc3AZlnV.js +0 -1
- package/dist/assets/volter-sdk-kit-chrome-slot-registry-C4g-na11.js +0 -1
- package/dist/assets/volter-sdk-kit-collaboration-client-Cd6918QC.js +0 -1
- package/dist/assets/volter-sdk-kit-collaboration-presence-qXC7JfS2.js +0 -1
- package/dist/assets/volter-sdk-kit-command-dispatch-D07Pn7pe.js +0 -1
- package/dist/assets/volter-sdk-kit-command-listener-Bm2sgP0i.js +0 -1
- package/dist/assets/volter-sdk-kit-command-registry-CJoVRu6V.js +0 -1
- package/dist/assets/volter-sdk-kit-component-board-registry-D7xm8cFr.js +0 -1
- package/dist/assets/volter-sdk-kit-component-states-registry-DtippeT3.js +0 -1
- package/dist/assets/volter-sdk-kit-components-AlignToolbar-BporX2iz.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ApplicationMenus-DfmKRYtb.js +0 -1
- package/dist/assets/volter-sdk-kit-components-AssetEditorShell-B-_vx-Jb.js +0 -1
- package/dist/assets/volter-sdk-kit-components-AssetInspectorToolSection-CyEcoLKv.js +0 -1
- package/dist/assets/volter-sdk-kit-components-BoardRulers-CjoDr2Ak.js +0 -1
- package/dist/assets/volter-sdk-kit-components-CanvasAddNodeDialogs-Bz4W0Y2g.js +0 -1
- package/dist/assets/volter-sdk-kit-components-CanvasSceneViewport-Cyd5bYha.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ChromeSlot-q_wsahlZ.js +0 -1
- package/dist/assets/volter-sdk-kit-components-CodeView-COOHbFef.js +0 -1
- package/dist/assets/volter-sdk-kit-components-CompactInspectorShell-F5yS9e4v.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ConsolePanel-Dnnq15qj.js +0 -1
- package/dist/assets/volter-sdk-kit-components-GameplaySessionTimeline-CFCva8sQ.js +0 -1
- package/dist/assets/volter-sdk-kit-components-InspectionProjection-Cj0eqFPF.js +0 -1
- package/dist/assets/volter-sdk-kit-components-Inspector-DhnEEQ_5.js +0 -1
- package/dist/assets/volter-sdk-kit-components-InspectorCanvasPreview-ljsWq41X.js +0 -1
- package/dist/assets/volter-sdk-kit-components-InspectorFieldsSection-pUp0DKhG.js +0 -1
- package/dist/assets/volter-sdk-kit-components-InspectorStoriesSection-BJKmp0B3.js +0 -1
- package/dist/assets/volter-sdk-kit-components-InspectorToolSection-DBDxp3Ir.js +0 -1
- package/dist/assets/volter-sdk-kit-components-InspectorTransformSection-eGVZo2ph.js +0 -1
- package/dist/assets/volter-sdk-kit-components-LightExplorerPanel-jKqvAsdL.js +0 -1
- package/dist/assets/volter-sdk-kit-components-MediaProperties-DEn9gV9T.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ProjectHeader-CtsMXibh.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ReactCanvasControls-Bdu_gdRF.js +0 -1
- package/dist/assets/volter-sdk-kit-components-RootSelectionOverlay-8PYXBIYy.js +0 -1
- package/dist/assets/volter-sdk-kit-components-RootTextEditor-DFkpwNlX.js +0 -1
- package/dist/assets/volter-sdk-kit-components-SaveStatus-BP1Q1tfu.js +0 -1
- package/dist/assets/volter-sdk-kit-components-SurfaceCrashBoundary-C_FxlEvS.js +0 -1
- package/dist/assets/volter-sdk-kit-components-SurfaceStateOverlay-C_O4-zsY.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ToolContributionSurfaces-DAoNJ2KS.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ToolHost-z-CSuvra.js +0 -1
- package/dist/assets/volter-sdk-kit-components-Toolbar-CUsODOE2.js +0 -1
- package/dist/assets/volter-sdk-kit-components-TransientHint-BsejPKYD.js +0 -1
- package/dist/assets/volter-sdk-kit-components-VersionControlSection-ldwCuasW.js +0 -1
- package/dist/assets/volter-sdk-kit-components-ViewportOverlaysMenu-DjfcwDPM.js +0 -1
- package/dist/assets/volter-sdk-kit-components-VolterLogo-wmAjAypV.js +0 -1
- package/dist/assets/volter-sdk-kit-components-WorktreeSwitcher-JN-eaFqo.js +0 -1
- package/dist/assets/volter-sdk-kit-components-account-documents-BcgknOsj.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-documents-B2W4TjZO.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-editor-persistence-NTgC5Ngq.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-selection-section-CLS4gJUE.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-thumbnails-CaYPgAtN.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-AudioViewer-DbLUYMKF.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-GenericJsonViewer-B3ieuK68.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-ImageViewer-DicJ06Cl.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-JsonAssetDocument-DRBY_95W.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-OnlineAssetDetail-BR14tR5R.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-SourceAssetViewer-BI9bFeTE.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-SpritesheetSpriteView-d7Wqtjxk.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-VideoViewer-Ykl90edA.js +0 -1
- package/dist/assets/volter-sdk-kit-components-asset-viewers-shader-source-BmwRhUts.js +0 -1
- package/dist/assets/volter-sdk-kit-components-board-guides-Dw7AT-AY.js +0 -1
- package/dist/assets/volter-sdk-kit-components-canvas-scene-hotkeys-s3AK_b58.js +0 -1
- package/dist/assets/volter-sdk-kit-components-canvas-temporary-pivot-DKdXJcd9.js +0 -1
- package/dist/assets/volter-sdk-kit-components-core-utilities-C5ZKnxiW.js +0 -1
- package/dist/assets/volter-sdk-kit-components-inspector-preview-section-BHsR6Ljx.js +0 -1
- package/dist/assets/volter-sdk-kit-components-inspector-revert-label-BcItYP-3.js +0 -1
- package/dist/assets/volter-sdk-kit-components-inspector-selection-DnVCu9NI.js +0 -1
- package/dist/assets/volter-sdk-kit-components-inspector-stories-gating-BbWmsm9H.js +0 -1
- package/dist/assets/volter-sdk-kit-components-inspector-transform-BCj8sqj5.js +0 -1
- package/dist/assets/volter-sdk-kit-components-inspector-transform-subject-DmyQlGz0.js +0 -1
- package/dist/assets/volter-sdk-kit-components-kind-documents-BECHMIFC.js +0 -1
- package/dist/assets/volter-sdk-kit-components-primitives-DraftColorInput-BB28QlBb.js +0 -1
- package/dist/assets/volter-sdk-kit-components-project-tool-documents-CrMMOzM5.js +0 -1
- package/dist/assets/volter-sdk-kit-components-scene-documents-B3yfDsBz.js +0 -1
- package/dist/assets/volter-sdk-kit-components-status-contributions-CDzNj8Hu.js +0 -1
- package/dist/assets/volter-sdk-kit-components-tool-documents-BpEG-ABF.js +0 -1
- package/dist/assets/volter-sdk-kit-components-tool-schema-form-BOiPCwKc.js +0 -1
- package/dist/assets/volter-sdk-kit-components-use-after-paint-AcvAjLMf.js +0 -1
- package/dist/assets/volter-sdk-kit-components-use-project-image-assets-CRFbWY4e.js +0 -1
- package/dist/assets/volter-sdk-kit-components-workspace-history-DTgNtIrO.js +0 -1
- package/dist/assets/volter-sdk-kit-components-world-documents-N9ea5nLy.js +0 -1
- package/dist/assets/volter-sdk-kit-components-world-overlay-gestures-CvVXrTkV.js +0 -1
- package/dist/assets/volter-sdk-kit-composite-screenshot-BsiNQIxC.js +0 -1
- package/dist/assets/volter-sdk-kit-content-entry-source-registry-BX8YW40L.js +0 -1
- package/dist/assets/volter-sdk-kit-contribution-surfaces-CMblNYDG.js +0 -1
- package/dist/assets/volter-sdk-kit-coverage-canvas-reveal-BtPYs0AY.js +0 -1
- package/dist/assets/volter-sdk-kit-coverage-design-time-surfaces-BCRK-uUC.js +0 -1
- package/dist/assets/volter-sdk-kit-coverage-ontology-invariants-3YuOn0LN.js +0 -1
- package/dist/assets/volter-sdk-kit-coverage-session-vitals-BpsIwBM0.js +0 -1
- package/dist/assets/volter-sdk-kit-creation-site-registry-C1_mEFTL.js +0 -1
- package/dist/assets/volter-sdk-kit-delegate-harness-registry-V07K9odj.js +0 -1
- package/dist/assets/volter-sdk-kit-document-areas-TQELDKqa.js +0 -1
- package/dist/assets/volter-sdk-kit-document-context-registry-BaPLLOGQ.js +0 -1
- package/dist/assets/volter-sdk-kit-document-open-registry-D-zxkb7y.js +0 -1
- package/dist/assets/volter-sdk-kit-document-play-extension-F8i5xdiU.js +0 -1
- package/dist/assets/volter-sdk-kit-document-preview-source-DgDf2lpD.js +0 -1
- package/dist/assets/volter-sdk-kit-document-renderer-session-YWnbpDFE.js +0 -1
- package/dist/assets/volter-sdk-kit-document-stage-sessions-BKZBGbit.js +0 -1
- package/dist/assets/volter-sdk-kit-document-viewports-DNuE6MQl.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-api-DZDj3o86.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-chrome-capture-De6DmSgV.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-commands-CImZE1nE.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-console-nzCbsR0U.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-current-view-POB-DPkt.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-document-probe-B5tRXCfR.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-git-client-SsYoNC6J.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-hotkeys-B4ocILot.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-lease-CBvYmCsH.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-lease-view-DVuaJEec.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-mode-B2vWMS-_.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-notifications-DgsalU9q.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-presence-BQiXcYKf.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-presentation-activity-DO7YpI0H.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-presentation-notice-BZtrnX57.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-runtime-C8mqfYkM.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-server-response-qipqMDto.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-session-attribution-_PNhRyeQ.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-session-mode-BcDn3FZY.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-state-facets-3r455vYW.js +0 -1
- package/dist/assets/volter-sdk-kit-editor-view-presentation-Dovw_-H_.js +0 -1
- package/dist/assets/volter-sdk-kit-environment-images-DNJU9lPC.js +0 -1
- package/dist/assets/volter-sdk-kit-eyedropper-session-DJMkT_IO.js +0 -1
- package/dist/assets/volter-sdk-kit-files-file-provider-BnmRHNTp.js +0 -1
- package/dist/assets/volter-sdk-kit-files-project-files-CiKUZlIY.js +0 -1
- package/dist/assets/volter-sdk-kit-finders-index-qZKU8xjn.js +0 -1
- package/dist/assets/volter-sdk-kit-finders-scenes-from-entrypoint-selection-DBTnLBhQ.js +0 -1
- package/dist/assets/volter-sdk-kit-frame-frame-parts-DY-_uCea.js +0 -1
- package/dist/assets/volter-sdk-kit-framed-document-capture-CsprF9Ct.js +0 -1
- package/dist/assets/volter-sdk-kit-game-surface-defaults-Dz1sExNZ.js +0 -1
- package/dist/assets/volter-sdk-kit-gameplay-export-state-BwkWHkY-.js +0 -1
- package/dist/assets/volter-sdk-kit-gameplay-replay-CgF6vM6H.js +0 -1
- package/dist/assets/volter-sdk-kit-gameplay-session-time-BrdLX9MN.js +0 -1
- package/dist/assets/volter-sdk-kit-gameplay-sessions-0YRBcIBD.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-component-marks-pwxcueeL.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-internals-qxAC9Yyz.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-kind-icon-Bguy3R2P.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-menu-registry-CQ_dm6ZG.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-node-rows-BJliwGW1.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-panel-view-C6zK-ewB.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-projection-q1LvhfSm.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-row-media-jZ989Tvr.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-row-model-BmrBiFlP.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-rows-BMI3XBi-.js +0 -1
- package/dist/assets/volter-sdk-kit-hierarchy-walk-oEWRF-Iz.js +0 -1
- package/dist/assets/volter-sdk-kit-history-editor-session-CdficO7Z.js +0 -1
- package/dist/assets/volter-sdk-kit-history-history-commands-D7VwYk3h.js +0 -1
- package/dist/assets/volter-sdk-kit-history-history-delegate-DgIAPV-4.js +0 -1
- package/dist/assets/volter-sdk-kit-history-history-limit-notices-Bu07tHVz.js +0 -1
- package/dist/assets/volter-sdk-kit-history-history-service-BzbUb6oV.js +0 -1
- package/dist/assets/volter-sdk-kit-history-persistence-coordinator-DuWeeacm.js +0 -1
- package/dist/assets/volter-sdk-kit-history-project-file-history-C7m0teYF.js +0 -1
- package/dist/assets/volter-sdk-kit-history-project-root-history-backends-mip7BKbu.js +0 -1
- package/dist/assets/volter-sdk-kit-history-resource-registry-CZoZX7pJ.js +0 -1
- package/dist/assets/volter-sdk-kit-history-snapshot-store-DFlmQKjf.js +0 -1
- package/dist/assets/volter-sdk-kit-history-source-history-backend-C1tXQx-3.js +0 -1
- package/dist/assets/volter-sdk-kit-hmr-registration-group-CdWSrJkL.js +0 -1
- package/dist/assets/volter-sdk-kit-hmr-stable-react-context-B_NNyLJr.js +0 -1
- package/dist/assets/volter-sdk-kit-hotkeys-9UuVecd2.js +0 -1
- package/dist/assets/volter-sdk-kit-inference-diagnostics-Bp6UhMrh.js +0 -1
- package/dist/assets/volter-sdk-kit-initial-project-mIrJ1z4F.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-active-subject-Ci13od8C.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-active-surface-BbND9Nn7.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-compose-subject-Cruyx55P.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-display-Ckb72SDN.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-document-subject-Dd7sTsiM.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-game-subject-Zye7SfKC.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-model-B6kt5U5M.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-node-media-3WYK4mrg.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-null-subject-j5MU6Bqp.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-serialize-C5ElmYGd.js +0 -1
- package/dist/assets/volter-sdk-kit-inspection-use-active-inspection-Dqr8YOfV.js +0 -1
- package/dist/assets/volter-sdk-kit-inspector-presentation-Bxm_mJug.js +0 -1
- package/dist/assets/volter-sdk-kit-inspector-property-grouping-DGsJwl0r.js +0 -1
- package/dist/assets/volter-sdk-kit-inspector-section-registry-BTw0xKeK.js +0 -1
- package/dist/assets/volter-sdk-kit-instance-source-actions-B_SYfHzK.js +0 -1
- package/dist/assets/volter-sdk-kit-js-heap-CMHIxDFc.js +0 -1
- package/dist/assets/volter-sdk-kit-key-actions-npGWeBwX.js +0 -1
- package/dist/assets/volter-sdk-kit-keymap-presets-Dgo5jMVc.js +0 -1
- package/dist/assets/volter-sdk-kit-layout-policy-D6cqDneT.js +0 -1
- package/dist/assets/volter-sdk-kit-light-explorer-model-D9220Fr3.js +0 -1
- package/dist/assets/volter-sdk-kit-live-canvas-frame-CQvRrTp5.js +0 -1
- package/dist/assets/volter-sdk-kit-live-document-StECWB5n.js +0 -1
- package/dist/assets/volter-sdk-kit-live-gesture-lock-DpKIl8Kh.js +0 -1
- package/dist/assets/volter-sdk-kit-live-seam-evidence-WkwVMDpm.js +0 -1
- package/dist/assets/volter-sdk-kit-live-session-registry-DmaGkq5x.js +0 -1
- package/dist/assets/volter-sdk-kit-live-transition-B5jM4iFM.js +0 -1
- package/dist/assets/volter-sdk-kit-manifest-project-amCdVxUh.js +0 -1
- package/dist/assets/volter-sdk-kit-module-fetch-diagnosis-CpTsYq8x.js +0 -1
- package/dist/assets/volter-sdk-kit-mount-failure-report-DcYXxWwN.js +0 -1
- package/dist/assets/volter-sdk-kit-native-selection-style-bMu0TkER.js +0 -1
- package/dist/assets/volter-sdk-kit-object3d-document-write-policy-DCtXUN3w.js +0 -1
- package/dist/assets/volter-sdk-kit-packaged-runtime-8FNZVNB9.js +0 -1
- package/dist/assets/volter-sdk-kit-performance-profiler-DKuyDNq0.js +0 -1
- package/dist/assets/volter-sdk-kit-performance-sources-CUq2AYlp.js +0 -1
- package/dist/assets/volter-sdk-kit-photograph-notice-CJC3RuIs.js +0 -1
- package/dist/assets/volter-sdk-kit-play-boot-phase-CvmjrYem.js +0 -1
- package/dist/assets/volter-sdk-kit-play-camera-flight-Dp3bYFl4.js +0 -1
- package/dist/assets/volter-sdk-kit-presentation-surface-DDAJLzOO.js +0 -1
- package/dist/assets/volter-sdk-kit-product-command-CevBP_kA.js +0 -1
- package/dist/assets/volter-sdk-kit-project-adapter-DZMJa9qO.js +0 -1
- package/dist/assets/volter-sdk-kit-project-asset-refresh-BlzSWFsZ.js +0 -1
- package/dist/assets/volter-sdk-kit-project-asset-roots-ByJUql0c.js +0 -1
- package/dist/assets/volter-sdk-kit-project-local-state-CzuDIgqm.js +0 -1
- package/dist/assets/volter-sdk-kit-project-manager-KiOTeJwI.js +0 -1
- package/dist/assets/volter-sdk-kit-project-module-changes-BDLfMwF6.js +0 -1
- package/dist/assets/volter-sdk-kit-project-module-split-DVZB3699.js +0 -1
- package/dist/assets/volter-sdk-kit-project-provenance-GZJY3tis.js +0 -1
- package/dist/assets/volter-sdk-kit-project-ready-EtjRqua9.js +0 -1
- package/dist/assets/volter-sdk-kit-project-shape-Jb91qwQJ.js +0 -1
- package/dist/assets/volter-sdk-kit-project-tools-n1IzvKJM.js +0 -1
- package/dist/assets/volter-sdk-kit-readiness-j18YadCv.js +0 -1
- package/dist/assets/volter-sdk-kit-renderer-resource-counts-BjvWDcz5.js +0 -1
- package/dist/assets/volter-sdk-kit-reported-play-state-BdYUBkLM.js +0 -1
- package/dist/assets/volter-sdk-kit-resolve-contributed-command-7ZIwPRlj.js +0 -1
- package/dist/assets/volter-sdk-kit-resolve-relative-specifier-BEqx2z44.js +0 -1
- package/dist/assets/volter-sdk-kit-retained-document-states-BWSvbm_C.js +0 -1
- package/dist/assets/volter-sdk-kit-scene-document-plan-B8Q6NbgU.js +0 -1
- package/dist/assets/volter-sdk-kit-scene-live-open-PVToaH1e.js +0 -1
- package/dist/assets/volter-sdk-kit-scoped-game-css-DOF-inf1.js +0 -1
- package/dist/assets/volter-sdk-kit-served-url-C3OFjtsJ.js +0 -1
- package/dist/assets/volter-sdk-kit-session-close-CfqKNfrE.js +0 -1
- package/dist/assets/volter-sdk-kit-session-tombstone-wgZaXyq-.js +0 -1
- package/dist/assets/volter-sdk-kit-settings-settings-provider-CkU3sFW7.js +0 -1
- package/dist/assets/volter-sdk-kit-settings-store-vv_SoMfR.js +0 -1
- package/dist/assets/volter-sdk-kit-shell-store-DTExcaKL.js +0 -1
- package/dist/assets/volter-sdk-kit-shell-store-door-Y-FBGkmI.js +0 -1
- package/dist/assets/volter-sdk-kit-source-conflict-CnIJpwkZ.js +0 -1
- package/dist/assets/volter-sdk-kit-stage-context-q9FWjN1-.js +0 -1
- package/dist/assets/volter-sdk-kit-stage-invalidation-43bhizXB.js +0 -1
- package/dist/assets/volter-sdk-kit-stage-store-registry-BQo-SIuU.js +0 -1
- package/dist/assets/volter-sdk-kit-startup-failure-B7USi1FF.js +0 -1
- package/dist/assets/volter-sdk-kit-state-report-deferral-Cur6y3FE.js +0 -1
- package/dist/assets/volter-sdk-kit-storage-host-files-storage-C9d8xXNc.js +0 -1
- package/dist/assets/volter-sdk-kit-storage-http-storage-MuV46OcN.js +0 -1
- package/dist/assets/volter-sdk-kit-storage-index-CcMXaj5N.js +0 -1
- package/dist/assets/volter-sdk-kit-storage-mem-storage-CaZsvmox.js +0 -1
- package/dist/assets/volter-sdk-kit-storage-path-lock-ClaJ7vSM.js +0 -1
- package/dist/assets/volter-sdk-kit-storage-paths-Ci2ZChlj.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-StoryPreviewMount-OjN0fncW.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-compose-project-stories-BlKWWJmk.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-prefabs-finder-CcmeyBzg.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-prefabs-from-stories-CA_oKZKb.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-project-story-regions-CFAyIdjW.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-scope-XvZpLAc5.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-capture-K4eH6MMa.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-declared-medium-e8MXBoO_.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-discovery-DViKEE-J.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-dom-runtime-DdlXu5tN.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-grouping-BbgkS2Kl.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-presentation-Bw39PGHN.js +0 -1
- package/dist/assets/volter-sdk-kit-stories-story-registry-DpouLkjB.js +0 -1
- package/dist/assets/volter-sdk-kit-story-document-openers-DckbFGIr.js +0 -1
- package/dist/assets/volter-sdk-kit-story-thumbnails-ruZKvQPb.js +0 -1
- package/dist/assets/volter-sdk-kit-surface-keyboard-ChQta2gu.js +0 -1
- package/dist/assets/volter-sdk-kit-surface-state-CUbH0mE7.js +0 -1
- package/dist/assets/volter-sdk-kit-system-seam-evidence-hHuyimda.js +0 -1
- package/dist/assets/volter-sdk-kit-tab-census-BKO-Cotm.js +0 -1
- package/dist/assets/volter-sdk-kit-tab-lifecycle-client--HEzpfrP.js +0 -1
- package/dist/assets/volter-sdk-kit-theme-library-cooHZE2t.js +0 -1
- package/dist/assets/volter-sdk-kit-theme-preference-BfzIz8X4.js +0 -1
- package/dist/assets/volter-sdk-kit-three-viewport-presentation-DJQ6GD49.js +0 -1
- package/dist/assets/volter-sdk-kit-tool-contribution-play-B1vfLya9.js +0 -1
- package/dist/assets/volter-sdk-kit-tool-loader-C_B2N1As.js +0 -1
- package/dist/assets/volter-sdk-kit-transform-mode-request-tOzI-V8h.js +0 -1
- package/dist/assets/volter-sdk-kit-transient-hint-qly8UT5T.js +0 -1
- package/dist/assets/volter-sdk-kit-transport-strip-CrqMX70b.js +0 -1
- package/dist/assets/volter-sdk-kit-ui-source-file-region-resolver-CjFRrSBS.js +0 -1
- package/dist/assets/volter-sdk-kit-ui-source-inspect-CPbxbbEw.js +0 -1
- package/dist/assets/volter-sdk-kit-ui-source-source-write-backend-Ci45ai4Y.js +0 -1
- package/dist/assets/volter-sdk-kit-ui-source-tier-source-write-backend-B_pwEKI_.js +0 -1
- package/dist/assets/volter-sdk-kit-user-local-state-CZtLuAED.js +0 -1
- package/dist/assets/volter-sdk-kit-viewport-activation-timings-DtO34FL_.js +0 -1
- package/dist/assets/volter-sdk-kit-viewport-editor-controls-C4eYemqw.js +0 -1
- package/dist/assets/volter-sdk-kit-viewport-presentation-D1_lvqyl.js +0 -1
- package/dist/assets/volter-sdk-kit-viewport-surface-status-BsGJAuRu.js +0 -1
- package/dist/assets/volter-sdk-kit-wait-until-DlHFfLUu.js +0 -1
- package/dist/assets/volter-sdk-kit-worker-call-metrics-FsK4U-gz.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-areas-CvTSMn-H.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-aux-commands-CrxEUAQx.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-available-documents-Cl8CigSt.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-core-utilities-rQQcVO5n.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-document-ids-CisQDpex.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-document-registry-D4w40sGe.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-document-restore-B0s9617k.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-host-commands-DLqH47QQ.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-persistence-gate-eeXMeNbc.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-play-utilities-sGc6TcaG.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-presets-D-OZK4QQ.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-regions-CLU4KicA.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-static-panels-BtUQumTF.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-status-registry-BlOrc7aA.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-storage-B1cvxes9.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-style-Czyy_uk2.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-utility-commands-D7ToZCgr.js +0 -1
- package/dist/assets/volter-sdk-kit-workspace-utility-registry-Czk_iMpg.js +0 -1
- package/dist/assets/volter-sdk-kit-world-adoption-CvxzEI8V.js +0 -1
- package/dist/assets/volter-sdk-kit-world-canvas-viewport-state-CjG34H8g.js +0 -1
- package/dist/assets/volter-sdk-kit-world-document-routing-B3yT1rzx.js +0 -1
- package/dist/assets/volter-sdk-kit-world-pan-state-Co5VSMOo.js +0 -1
- package/dist/assets/volter-sdk-kit-write-pipe-GbyDlxkJ.js +0 -1
- package/dist/assets/volter-sdk-layout-arrangements-DmBix6Gx.js +0 -1
- package/dist/assets/volter-sdk-layouts-CQccgb8u.js +0 -1
- package/dist/assets/volter-sdk-mgLi8_Cw.js +0 -2364
- package/dist/assets/volter-sdk-selection-wggwzLen.js +0 -1
- package/dist/assets/volter-sdk-session-command-table-HilHgL7-.js +0 -1
- package/dist/assets/volter-sdk-session-editor-brand-CnZ3VbR-.js +0 -1
- package/dist/assets/volter-sdk-session-editor-compatibility-BOYTGttq.js +0 -1
- package/dist/assets/volter-sdk-session-editor-control-protocol-DG79HI_x.js +0 -1
- package/dist/assets/volter-sdk-session-entrypoint-selection-readers-D9FXlkS2.js +0 -1
- package/dist/assets/volter-sdk-session-game-css-scope-CZmonWfe.js +0 -1
- package/dist/assets/volter-sdk-session-limited-view-KNOq_tYc.js +0 -1
- package/dist/assets/volter-sdk-session-project-module-url-D7htWtkD.js +0 -1
- package/dist/assets/volter-sdk-session-relative-path-guard-DYa5PL0U.js +0 -1
- package/dist/assets/volter-sdk-session-tool-contribution-convention-GC2AWVch.js +0 -1
- package/dist/assets/volter-sdk-types-Couxbiwa.js +0 -1
- package/dist/assets/volter-sdk-views-D8qvTyCn.js +0 -1
- package/dist/assets/volter-sdk-widgets-design-system-DOW3sA7o.js +0 -1
- package/dist/assets/volter-sdk-widgets-editor-appearance-iH79zcxr.js +0 -1
- package/dist/assets/volter-sdk-widgets-editor-material-D-LB0zxr.js +0 -1
- package/dist/assets/volter-sdk-widgets-icon-set-registry-ylLmSwSr.js +0 -1
- package/dist/assets/volter-sdk-widgets-index-DMo0Rqvn.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-AlignmentGrid-DhdNVPDu.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-AssetSlotPicker-BEDX8viW.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-BorderEditor-9Vk3QrCy.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ColorPicker-rhGdxW0L.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-CurveEditor-BXu0Q3-y.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-FilterEditor-C49uoql_.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-FontPicker-BoRWZylN.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-GradientEditor-GxINOtYX.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ScrubbableInput-rvCzzMDI.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-ShadowEditor-DG-MGXQX.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-color-utils-Cy4AI76M.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-curve-utils-ncKgVdwJ.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-index-BtW7A1an.js +0 -1
- package/dist/assets/volter-sdk-widgets-inspector-widgets-shared-lOZ7oJLL.js +0 -1
- package/dist/assets/volter-sdk-widgets-interactive-edit-scope-BbS6qOlJ.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Dialog-BqcAE1N1.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Fields-CD2kSMcv.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-List-CZyrvaL-.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-StateSurface-D8L-se9D.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Surfaces-sW43gM3D.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Tabs-CTEQRAHE.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Toolbar-CF8cj2Xd.js +0 -1
- package/dist/assets/volter-sdk-widgets-patterns-Tree-KffO8vo1.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-AnchoredMenu-D2my2vjj.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Button-CiaR71jI.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-ColorInput-DAxGHgoQ.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-DraftTextInput-CCZYI-j9.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-EditorIcon-Fn9aFuF_.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-FormControls-BMxlOety.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-HoverPreview-BzwvyU3c.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-JsonInput-CTc6p9EQ.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Layout-CE-beP_c.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Menu-DfNc6W9I.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-NumberInput-Cyjw5Lzx.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Panel-LGno17LT.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-SectionHeader-Cljf9N48.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Text-B4gPva4d.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-ThemeRootPortal-CXqwIkjb.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Tooltip-DjwM-P34.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-Vec3Input-DWMZJklN.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-banner-tones-bbpLeXlG.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-clamp-to-viewport-DB06CYVu.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-editor-icons-FxdDZA6W.js +0 -1
- package/dist/assets/volter-sdk-widgets-primitives-panel-header-styles-CEiBBzGS.js +0 -1
- package/dist/assets/volter-sdk-widgets-theme-BysNs-Ha.js +0 -1
- package/dist/assets/volter-sdk-widgets-z-index-CQdgvLGF.js +0 -1
- package/dist/assets/volter-shared-fontawesome-BiNKLNA8.js +0 -1
- package/dist/assets/volter-shared-jsx-dev-runtime-BgDFKHr4.js +0 -1
- package/dist/assets/volter-shared-jsx-runtime-B6IXdFn7.js +0 -1
- package/dist/assets/volter-shared-react-dom-DOBDwT0W.js +0 -1
- package/dist/assets/volter-shared-react-dom-client-DxxNJanr.js +0 -1
- package/dist/assets/volter-shared-react-wgC9wOqr.js +0 -1
- package/dist/assets/volter-shared-three-CUSZKPWM.js +0 -1
- package/dist/assets/worker-DvJ796ja.js +0 -8
- package/dist/volter-shared-sdk.json +0 -465
- package/src/contributions.d.ts +0 -4
- package/starter/add-play/game-state.ts +0 -25
- package/starter/add-play/game.tsx +0 -16
- package/starter/add-play/model.play.ts +0 -77
- package/starter/playable/src/models/canyon.blend +0 -0
- package/starter/playable/src/models/canyon.play.ts +0 -107
- package/starter/playable/src/models/canyon.py +0 -55
- package/starter/playable/src/models/circuit.py +0 -131
- package/starter/playable/src/models/complete_environment.py +0 -35
- package/starter/playable/src/models/course.ts +0 -12
- package/starter/playable/src/models/detail.py +0 -44
- package/starter/playable/src/models/driver_details.py +0 -25
- package/starter/playable/src/models/environment.py +0 -87
- package/starter/playable/src/models/finish_scene.py +0 -13
- package/starter/playable/src/models/kart_finish.py +0 -31
- package/starter/playable/src/models/polish.py +0 -75
- package/starter/playable/src/models/race-state.ts +0 -15
- package/starter/playable/src/models/refine.py +0 -69
- package/starter/playable/src/models/scene_helpers.py +0 -54
- package/starter/playable/src/models/scenery_ao.py +0 -114
- package/starter/playable/src/textures/asphalt.png +0 -0
- package/starter/playable/src/textures/generate.py +0 -16
- package/starter/playable/src/textures/sandstone.png +0 -0
- package/starter/playable/src/ui/game.stories.tsx +0 -16
- package/starter/playable/src/ui/game.tsx +0 -6
- package/starter/playable/src/ui/race-hud.tsx +0 -29
- package/starter/playable/src/ui/race-widgets.tsx +0 -29
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
.title-card {
|
|
2
|
+
position: absolute;
|
|
3
|
+
inset: 0;
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-direction: column;
|
|
6
|
+
align-items: center;
|
|
7
|
+
justify-content: center;
|
|
8
|
+
background: #101114;
|
|
9
|
+
color: #f2efe8;
|
|
10
|
+
font-family: Georgia, 'Times New Roman', serif;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.title-card__name {
|
|
14
|
+
margin: 0;
|
|
15
|
+
font-size: 96px;
|
|
16
|
+
font-weight: 400;
|
|
17
|
+
letter-spacing: 0.08em;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* A CSS animation: the render seeks it to the movie's time. */
|
|
21
|
+
.title-card__rule {
|
|
22
|
+
width: 360px;
|
|
23
|
+
height: 2px;
|
|
24
|
+
margin-top: 28px;
|
|
25
|
+
background: #f2efe8;
|
|
26
|
+
transform-origin: left center;
|
|
27
|
+
animation: title-card-rule 1200ms ease-out both;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@keyframes title-card-rule {
|
|
31
|
+
from { transform: scaleX(0); }
|
|
32
|
+
to { transform: scaleX(1); }
|
|
33
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import TitleCard from './title';
|
|
2
|
+
|
|
3
|
+
export default { title: 'Graphics/Title', component: TitleCard, parameters: { layout: 'fullscreen' }, args: { title: 'The Cube' } };
|
|
4
|
+
|
|
5
|
+
/** The title shot, a composition: 72 frames at the film's 24 fps (film.json). */
|
|
6
|
+
export const Title = { parameters: { volter: { movie: { fps: 24, frames: 72 } } } };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useMovieFrame } from '@volter/editor-movie/clock';
|
|
2
|
+
import './title.css';
|
|
3
|
+
|
|
4
|
+
/** The title card: the film's name fades up, holds and fades out over three seconds. Its time is the movie's. */
|
|
5
|
+
export default function TitleCard({ title = 'The Cube' }: { title?: string }) {
|
|
6
|
+
const { time } = useMovieFrame();
|
|
7
|
+
const opacity = Math.min(1, time / 600, Math.max(0, (3000 - time) / 600));
|
|
8
|
+
return (
|
|
9
|
+
<div className="title-card">
|
|
10
|
+
<h1 className="title-card__name" style={{ opacity }}>{title}</h1>
|
|
11
|
+
<div className="title-card__rule" />
|
|
12
|
+
</div>
|
|
13
|
+
);
|
|
14
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
#
|
|
3
|
+
# THIS FILE IS GPL, AND THE REST OF YOUR PROJECT IS NOT.
|
|
4
|
+
#
|
|
5
|
+
# It drives `bpy`, Blender's Python API. The Blender Foundation's stated
|
|
6
|
+
# position — their licence page, under "Add-ons (Python scripts)" — is that
|
|
7
|
+
# the API "is an integral part of the software" and that the GPL "therefore
|
|
8
|
+
# requires that such scripts (if published) are being shared under a GPL
|
|
9
|
+
# compliant license". So a bpy script is a derivative work of Blender, and
|
|
10
|
+
# this one is licensed GNU General Public License version 3 or later,
|
|
11
|
+
# exercising Blender's own "or later".
|
|
12
|
+
#
|
|
13
|
+
# WHAT THIS DOES NOT TOUCH. `opening.blend` beside this file is YOURS, and so is
|
|
14
|
+
# anything you export from it — glTF, GLB, renders. That is the Foundation's
|
|
15
|
+
# position too, on the same page under "Your Artwork": what you make with
|
|
16
|
+
# Blender is your sole property, "including the .blend files and other data
|
|
17
|
+
# files Blender can write". Every other file the template gave you is MIT.
|
|
18
|
+
# This licence reaches this script and nothing else.
|
|
19
|
+
#
|
|
20
|
+
# If you would rather not carry it: delete this file. The `.blend` is the
|
|
21
|
+
# document — this is only the recorded source of how it was made — and
|
|
22
|
+
# nothing in the project reads this script at runtime. If you write your own
|
|
23
|
+
# bpy scripts, the Foundation's position applies to them on the same terms;
|
|
24
|
+
# it is not a rule of ours and is not ours to waive, because the copyright in
|
|
25
|
+
# Blender is Blender's authors'.
|
|
26
|
+
#
|
|
27
|
+
# Copyright 2026 Volter AI, Inc.
|
|
28
|
+
|
|
29
|
+
"""The film's opening shot: the bpy that made `opening.blend`, and its SOURCE.
|
|
30
|
+
|
|
31
|
+
A set, not a model: the cube on a grey floor under one light, the camera that films it, the cube turning a quarter
|
|
32
|
+
turn over the shot's 48 frames at the film's 24 fps (`film.json`), and a whoosh as it starts to turn (the sequencer's
|
|
33
|
+
sound strip at frame 12, `sounds/whoosh.wav`). The movie the cut renders carries that sound.
|
|
34
|
+
|
|
35
|
+
Run it with a desktop Blender from the project folder, where it writes `src/models/opening.blend`:
|
|
36
|
+
|
|
37
|
+
blender -b --factory-startup --python src/models/opening.py
|
|
38
|
+
|
|
39
|
+
`sounds/whoosh.wav` is 0.4 s of pink noise fading out, made with
|
|
40
|
+
`ffmpeg -f lavfi -i "anoisesrc=d=0.4:c=pink:a=0.5" -af "afade=t=out:st=0.1:d=0.3" -ar 48000 -ac 1 sounds/whoosh.wav`.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
import math
|
|
44
|
+
import os
|
|
45
|
+
|
|
46
|
+
import bpy
|
|
47
|
+
|
|
48
|
+
project = os.getcwd()
|
|
49
|
+
for obj in list(bpy.data.objects):
|
|
50
|
+
bpy.data.objects.remove(obj, do_unlink=True)
|
|
51
|
+
|
|
52
|
+
scene = bpy.context.scene
|
|
53
|
+
scene.render.fps, scene.render.fps_base = 24, 1
|
|
54
|
+
scene.frame_start, scene.frame_end = 1, 48
|
|
55
|
+
scene.render.resolution_x, scene.render.resolution_y, scene.render.resolution_percentage = 1280, 720, 100
|
|
56
|
+
|
|
57
|
+
grey = bpy.data.materials.new(name="Grey")
|
|
58
|
+
grey.use_nodes = True
|
|
59
|
+
grey.node_tree.nodes["Principled BSDF"].inputs["Base Color"].default_value = (0.35, 0.35, 0.37, 1.0)
|
|
60
|
+
bpy.ops.mesh.primitive_plane_add(size=12.0, location=(0.0, 0.0, -0.5))
|
|
61
|
+
floor = bpy.context.active_object
|
|
62
|
+
floor.name = "Floor"
|
|
63
|
+
floor.data.materials.append(grey)
|
|
64
|
+
|
|
65
|
+
bpy.ops.mesh.primitive_cube_add(size=1.0, location=(0.0, 0.0, 0.0))
|
|
66
|
+
cube = bpy.context.active_object
|
|
67
|
+
cube.name = "Cube"
|
|
68
|
+
cube.rotation_euler = (0.0, 0.0, 0.0)
|
|
69
|
+
cube.keyframe_insert("rotation_euler", frame=12)
|
|
70
|
+
cube.rotation_euler = (0.0, 0.0, math.pi / 2)
|
|
71
|
+
cube.keyframe_insert("rotation_euler", frame=48)
|
|
72
|
+
|
|
73
|
+
light = bpy.data.objects.new("Light", bpy.data.lights.new("Light", type="SUN"))
|
|
74
|
+
light.data.energy = 3.0
|
|
75
|
+
light.rotation_euler = (math.radians(50), 0.0, math.radians(30))
|
|
76
|
+
scene.collection.objects.link(light)
|
|
77
|
+
|
|
78
|
+
camera = bpy.data.objects.new("Camera", bpy.data.cameras.new("Camera"))
|
|
79
|
+
camera.location = (0.0, -4.5, 1.4)
|
|
80
|
+
camera.rotation_euler = (math.radians(78), 0.0, 0.0)
|
|
81
|
+
scene.collection.objects.link(camera)
|
|
82
|
+
scene.camera = camera
|
|
83
|
+
|
|
84
|
+
scene.sequence_editor_create()
|
|
85
|
+
scene.sequence_editor.strips.new_sound("whoosh", os.path.join(project, "sounds", "whoosh.wav"), 1, 12)
|
|
86
|
+
|
|
87
|
+
bpy.ops.wm.save_as_mainfile(filepath=os.path.join(project, "src", "models", "opening.blend"), relative_remap=True)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# The Cube
|
|
2
|
+
|
|
3
|
+
## Logline
|
|
4
|
+
|
|
5
|
+
A cube alone on a grey floor turns to face the camera.
|
|
6
|
+
|
|
7
|
+
## Synopsis
|
|
8
|
+
|
|
9
|
+
The film opens on the cube, still, under a single light. It turns once, slowly, until one face meets
|
|
10
|
+
the lens. A title card names it.
|
|
11
|
+
|
|
12
|
+
## Characters
|
|
13
|
+
|
|
14
|
+
- **The Cube**: patient, plain, the only thing in the room.
|
|
File without changes
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: film-cut
|
|
3
|
+
description: Read or change a film's cut (cut.json), its takes (takes.json, takes/) and its music (music.json, music/). Use when putting shots in or out of the cut, trimming them, choosing takes or placing music in a film project.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# The cut, the takes and the music
|
|
7
|
+
|
|
8
|
+
`cut.json` is the film as it plays:
|
|
9
|
+
|
|
10
|
+
```json
|
|
11
|
+
{ "version": 1,
|
|
12
|
+
"shots": [ { "shot": "opening", "in": 0, "out": 48 },
|
|
13
|
+
{ "shot": "witness", "in": 12, "out": 90, "take": "takes/witness-2.webm" } ],
|
|
14
|
+
"audio": [ { "source": "scene", "gain": 0 }, { "source": "music", "gain": 0 }, { "source": "takes", "gain": 0 } ] }
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
- `shots` play in order. Each names a shot of `shots.json` and plays its frames `in` up to, not including,
|
|
18
|
+
`out` (`0 <= in < out <=` the shot's `frames`, at `film.json`'s `fps`). A shot may appear more than once.
|
|
19
|
+
- `take` is required exactly when the shot is routed to takes, and is one of that shot's takes.
|
|
20
|
+
- `audio` tracks are mixed: `scene` plays the Blender shots' own scene sound, `music` plays `music.json`'s
|
|
21
|
+
cues, `takes` the sound of the takes used. `gain` is in decibels (0 plays as recorded).
|
|
22
|
+
|
|
23
|
+
`takes.json` is `{ "version": 1, "takes": [...] }`, each
|
|
24
|
+
`{ "file": "takes/<shot id>-<n>.webm", "shot": "<shot id>", "seconds": 4.2, "circled": true }`. A take
|
|
25
|
+
names a shot and its file exists. Takes are recorded in the editor's Record view; do not invent take files.
|
|
26
|
+
|
|
27
|
+
`music.json` is `{ "version": 1, "cues": [...] }`, each
|
|
28
|
+
`{ "file": "music/<name>.ogg", "start": <frame on the cut>, "gain": -6 }`. The file exists.
|
|
29
|
+
|
|
30
|
+
The schemas are `node_modules/@volter/editor-film/schemas/{cut,takes,music}.schema.json`. After each change
|
|
31
|
+
run `npm run check` and fix what it prints.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: film-shots
|
|
3
|
+
description: Read or change a film's shot list (shots.json), its storyboard stills (boards/), its graphics (src/graphics/) and where each shot's picture comes from. Use when adding, removing, reordering or rerouting shots in a film project.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# The shot list
|
|
7
|
+
|
|
8
|
+
`shots.json` is `{ "version": 1, "shots": [...] }`, the shots in script order. Each shot:
|
|
9
|
+
|
|
10
|
+
```json
|
|
11
|
+
{ "id": "opening", "heading": "INT. GREY ROOM - DAY", "description": "What it shows.", "frames": 48,
|
|
12
|
+
"route": { "kind": "blender", "file": "src/models/opening.blend", "from": 1, "to": 48 } }
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
- `id`: lowercase letters, digits and dashes, unique. The cut, takes and boards name the shot by it.
|
|
16
|
+
- `heading`: one of `script.fountain`'s scene headings, exactly as written there.
|
|
17
|
+
- `frames`: the shot's length, in frames at `film.json`'s `fps`.
|
|
18
|
+
- `route`, one of:
|
|
19
|
+
- `{ "kind": "blender", "file": "<path>.blend", "from": 1, "to": 48 }`: Blender's Timeline renders it, with
|
|
20
|
+
the scene's own sound (`from` and `to` are frame numbers or marker names, as `cyclotron render-movie` takes
|
|
21
|
+
them; leave them out for the scene's range). The scene needs a camera and the film's frame rate. Make or change
|
|
22
|
+
the `.blend` through the editor's Blender (see AGENTS.md); `src/models/opening.py` made the opening's.
|
|
23
|
+
- `{ "kind": "composition", "file": "src/graphics/<name>.stories.tsx", "story": "<export>" }`: a React
|
|
24
|
+
composition, rendered frame by frame. Its component takes its time only from `useMovieFrame()`
|
|
25
|
+
(`@volter/editor-movie/clock`), and its story declares `parameters: { volter: { movie: { fps, frames } } }`.
|
|
26
|
+
`src/graphics/title.tsx` is one.
|
|
27
|
+
- `{ "kind": "board", "file": "boards/<shot id>.png" }`: a storyboard still (`.png`, `.jpg`, `.webp`).
|
|
28
|
+
- `{ "kind": "take" }`: camera takes, which `takes.json` lists by shot (see the `film-cut` skill).
|
|
29
|
+
- Paths are relative to the project folder; the file a route names must exist.
|
|
30
|
+
- A shot you remove must leave the cut too: remove its entries from `cut.json` and its takes from `takes.json`.
|
|
31
|
+
- The schema is `node_modules/@volter/editor-film/schemas/shots.schema.json`.
|
|
32
|
+
- After each change run `npm run check` and fix what it prints.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: film-story
|
|
3
|
+
description: Read or change a film's story (story.md) and script (script.fountain). Use when writing or revising the logline, synopsis, characters, scenes or dialogue of a film project.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# The story and the script
|
|
7
|
+
|
|
8
|
+
- `story.md` keeps three sections as `## ` headings: `## Logline` (one sentence), `## Synopsis` (a
|
|
9
|
+
paragraph or two) and `## Characters` (one bullet each). Other sections may be added; these three stay.
|
|
10
|
+
- `script.fountain` is the screenplay in Fountain, plain text:
|
|
11
|
+
- a scene starts with a heading on its own line, blank lines around it: `INT. GREY ROOM - DAY`
|
|
12
|
+
(`INT.`, `EXT.`, `EST.`, `INT./EXT.` or `I/E`), or any line forced with one leading `.`;
|
|
13
|
+
- action is plain paragraphs; a character's name in capitals on its own line, then their dialogue
|
|
14
|
+
under it; `(parenthetical)` under the name; a transition ends in `TO:`; `> CENTERED <` centres a line.
|
|
15
|
+
- A shot in `shots.json` repeats its scene's heading exactly (`heading`). When you rename or remove a
|
|
16
|
+
scene, change those shots too (see the `film-shots` skill).
|
|
17
|
+
- After each change run `npm run check` and fix what it prints.
|
|
18
|
+
- `film.json` names the film and its picture: `{ "version": 1, "title": "…", "fps": 24, "width": 1280, "height": 720 }`.
|
|
19
|
+
Every frame count in the film is at its `fps`.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The game's main level, laid out in code: what stands where, lit, as the game's first frame. A level is a React component
|
|
3
|
+
* the room renders into its world (for collision) and every page draws, the same on every target. The models it places
|
|
4
|
+
* are made in Blender, each its own `prefabs/<name>/<name>.blend`, whose export writes its component
|
|
5
|
+
* (`prefabs/ground/Ground.tsx`); their layout, their bodies, the lights and where the players come in are this file's.
|
|
6
|
+
* It is a document of its own in the editor, drawn as you change it. This file is the game's: change it.
|
|
7
|
+
*/
|
|
8
|
+
import { RigidBody } from '@react-three/rapier';
|
|
9
|
+
import { SpawnPoint, stdSun } from '@volter-ai/std/level/client';
|
|
10
|
+
import { Ground } from '../prefabs/ground/Ground.tsx';
|
|
11
|
+
|
|
12
|
+
/** The level: the ground its bodies collide with, the sky's light and the sun, and the spawn point. */
|
|
13
|
+
export function MainLevel() {
|
|
14
|
+
return (
|
|
15
|
+
<group name="MainLevel">
|
|
16
|
+
<RigidBody type="fixed" colliders="cuboid">
|
|
17
|
+
<Ground />
|
|
18
|
+
</RigidBody>
|
|
19
|
+
<hemisphereLight name="Sky" args={['#dbe9ff', '#6a994e', 1]} />
|
|
20
|
+
<directionalLight name="Sun" ref={stdSun} position={[10, 20, 8]} intensity={3} castShadow />
|
|
21
|
+
<SpawnPoint name="Spawn" position={[0, 1, 0]} />
|
|
22
|
+
</group>
|
|
23
|
+
);
|
|
24
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ground: prefabs/ground/ground.glb as a component, written by std level (std-dev) as gltfjsx writes one: the prefab's
|
|
3
|
+
* model, its bodies react-three-rapier's (from the Blender file's Rigid Body panel, each following its object through
|
|
4
|
+
* std's useFollowObject), its markers std's, pure as what the room renders is. The room renders it where its level
|
|
5
|
+
* places it (std's root of the room, its bodies react-three-rapier's own), as each page does; its behaviour, the room's
|
|
6
|
+
* half, is the game's (`this.std.onBehaviour`). Export it again when the .blend changes; edit the game's code, not this
|
|
7
|
+
* file.
|
|
8
|
+
*/
|
|
9
|
+
import type * as THREE from 'three';
|
|
10
|
+
import { useGLTF } from '@react-three/drei';
|
|
11
|
+
import groundUrl from './ground.glb?url';
|
|
12
|
+
|
|
13
|
+
/** The glb's nodes and materials this component reads, typed as gltfjsx's `--types` types them. */
|
|
14
|
+
type GLTFResult = ReturnType<typeof useGLTF<string>> & { nodes: { Floor: THREE.Mesh }; materials: { Grass: THREE.Material } };
|
|
15
|
+
|
|
16
|
+
/** prefabs/ground/ground.glb's scene: its meshes and markers, its bodies around the nodes that collide. */
|
|
17
|
+
export function Ground(props: { name?: string; position?: [number, number, number]; rotation?: [number, number, number]; scale?: number | [number, number, number]; userData?: Record<string, unknown> }) {
|
|
18
|
+
const { nodes, materials } = useGLTF(groundUrl) as GLTFResult;
|
|
19
|
+
return (
|
|
20
|
+
<group name="Ground" {...props}>
|
|
21
|
+
<mesh name="Floor" geometry={nodes.Floor.geometry} material={materials.Grass} receiveShadow position={[0, -0.5, 0]} />
|
|
22
|
+
</group>
|
|
23
|
+
);
|
|
24
|
+
}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
#
|
|
3
|
+
# THIS FILE IS GPL, AND THE REST OF YOUR PROJECT IS NOT.
|
|
4
|
+
#
|
|
5
|
+
# It drives `bpy`, Blender's Python API. The Blender Foundation's stated
|
|
6
|
+
# position — their licence page, under "Add-ons (Python scripts)" — is that
|
|
7
|
+
# the API "is an integral part of the software" and that the GPL "therefore
|
|
8
|
+
# requires that such scripts (if published) are being shared under a GPL
|
|
9
|
+
# compliant license". So a bpy script is a derivative work of Blender, and
|
|
10
|
+
# this one is licensed GNU General Public License version 3 or later,
|
|
11
|
+
# exercising Blender's own "or later".
|
|
12
|
+
#
|
|
13
|
+
# WHAT THIS DOES NOT TOUCH. `ground.blend` beside this file is YOURS, and so
|
|
14
|
+
# is anything you export from it — glTF, GLB, renders, the model's code std
|
|
15
|
+
# writes. That is the Foundation's position too, on the same page under "Your
|
|
16
|
+
# Artwork": what you make with Blender is your sole property, "including the
|
|
17
|
+
# .blend files and other data files Blender can write". This licence reaches
|
|
18
|
+
# this script and nothing else.
|
|
19
|
+
#
|
|
20
|
+
# If you would rather not carry it: delete this file. The `.blend` is the
|
|
21
|
+
# document — this is only the recorded source of how it was made — and
|
|
22
|
+
# nothing in the project reads this script at runtime. If you write your own
|
|
23
|
+
# bpy scripts, the Foundation's position applies to them on the same terms;
|
|
24
|
+
# it is not a rule of ours and is not ours to waive, because the copyright in
|
|
25
|
+
# Blender is Blender's authors'.
|
|
26
|
+
#
|
|
27
|
+
# Copyright 2026 Volter AI, Inc.
|
|
28
|
+
|
|
29
|
+
"""The ground's model: the bpy that made `ground.blend`, and its SOURCE.
|
|
30
|
+
|
|
31
|
+
A model is a Blender file of its own under `prefabs/`: `ground.blend` is the
|
|
32
|
+
document the editor opens, and this is the script that authored it. Each save
|
|
33
|
+
of it in the editor runs std's export, which writes its code beside it
|
|
34
|
+
(`ground.glb`, `Ground.tsx`): `<Ground>` is the model as a component, which
|
|
35
|
+
the game's level (`levels/MainLevel.tsx`) places, lays out and lights in
|
|
36
|
+
code. Outside the editor, the same export is std's own command:
|
|
37
|
+
|
|
38
|
+
npx std level prefabs/ground/ground.blend prefabs/ground/ground.glb
|
|
39
|
+
|
|
40
|
+
What it holds: `Floor`, the ground, 40 m by 40 m and 1 m thick, its top at 0,
|
|
41
|
+
with its grass material; it receives shadows and casts none. Its collision,
|
|
42
|
+
the sun, the sky and where the players come in are the level's, in code.
|
|
43
|
+
|
|
44
|
+
Run it through the session's Blender in the editor, with `ground.blend` the
|
|
45
|
+
open document; the editor saves the open document about a second after the
|
|
46
|
+
last call. Outside the editor, run it headless to make the file again
|
|
47
|
+
(Blender 5.2):
|
|
48
|
+
|
|
49
|
+
blender -b --factory-startup --python prefabs/ground/ground.py
|
|
50
|
+
|
|
51
|
+
Coordinates are metres, Z is up (Blender's), and the exporter converts to the
|
|
52
|
+
game's Y-up on the way to glTF.
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
import os
|
|
56
|
+
|
|
57
|
+
import bpy
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def srgb(hex_colour: str) -> tuple[float, float, float, float]:
|
|
61
|
+
"""A CSS colour as Blender's linear RGBA."""
|
|
62
|
+
def linear(c: float) -> float:
|
|
63
|
+
return c / 12.92 if c <= 0.04045 else ((c + 0.055) / 1.055) ** 2.4
|
|
64
|
+
value = hex_colour.lstrip("#")
|
|
65
|
+
r, g, b = (int(value[i:i + 2], 16) / 255 for i in (0, 2, 4))
|
|
66
|
+
return (linear(r), linear(g), linear(b), 1.0)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
# THE MODEL HOLDS THE MODEL: the factory startup's cube, light and camera go,
|
|
70
|
+
# and so does whatever an earlier run made.
|
|
71
|
+
for obj in list(bpy.data.objects):
|
|
72
|
+
bpy.data.objects.remove(obj, do_unlink=True)
|
|
73
|
+
for data in (bpy.data.meshes, bpy.data.materials, bpy.data.lights, bpy.data.cameras):
|
|
74
|
+
for block in list(data):
|
|
75
|
+
data.remove(block)
|
|
76
|
+
for collection in list(bpy.data.collections):
|
|
77
|
+
bpy.data.collections.remove(collection)
|
|
78
|
+
|
|
79
|
+
# A PREFAB IS ITS COLLECTION, which a level may also link (File › Link).
|
|
80
|
+
ground = bpy.data.collections.new("Ground")
|
|
81
|
+
bpy.context.scene.collection.children.link(ground)
|
|
82
|
+
|
|
83
|
+
# THE GROUND: a 40 m square, 1 m thick, its top at 0.
|
|
84
|
+
bpy.ops.mesh.primitive_cube_add(size=1.0, location=(0.0, 0.0, -0.5))
|
|
85
|
+
floor = bpy.context.active_object
|
|
86
|
+
floor.name = "Floor"
|
|
87
|
+
floor.data.name = "Floor"
|
|
88
|
+
floor.scale = (40.0, 40.0, 1.0)
|
|
89
|
+
bpy.ops.object.transform_apply(location=False, rotation=False, scale=True)
|
|
90
|
+
for collection in list(floor.users_collection):
|
|
91
|
+
collection.objects.unlink(floor)
|
|
92
|
+
ground.objects.link(floor)
|
|
93
|
+
grass = bpy.data.materials.new(name="Grass")
|
|
94
|
+
grass.use_nodes = True
|
|
95
|
+
principled = grass.node_tree.nodes["Principled BSDF"]
|
|
96
|
+
principled.inputs["Base Color"].default_value = srgb("#6a994e")
|
|
97
|
+
principled.inputs["Roughness"].default_value = 1.0
|
|
98
|
+
floor.data.materials.append(grass)
|
|
99
|
+
# It receives the level's shadows and casts none (Object Properties ›
|
|
100
|
+
# Visibility › Ray Visibility › Shadow): ground that casts onto itself only
|
|
101
|
+
# shades itself in bands.
|
|
102
|
+
floor.visible_shadow = False
|
|
103
|
+
|
|
104
|
+
# Headless, with no file open, the model is written beside this script.
|
|
105
|
+
if not bpy.data.filepath and "__file__" in globals():
|
|
106
|
+
bpy.ops.wm.save_as_mainfile(filepath=os.path.join(os.path.dirname(os.path.abspath(__file__)), "ground.blend"))
|
package/starter/package.json
CHANGED
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"react": "~19.2.4",
|
|
6
6
|
"react-dom": "~19.2.4",
|
|
7
|
-
"three": "~0.
|
|
7
|
+
"three": "~0.186.1"
|
|
8
8
|
},
|
|
9
9
|
"devDependencies": {
|
|
10
10
|
"@volter/play": "^0.5.0",
|
|
11
11
|
"@volter/editor-ui": "^0.5.0",
|
|
12
|
-
"@volter/editor-react": "^0.5.0"
|
|
12
|
+
"@volter/editor-react": "^0.5.0",
|
|
13
|
+
"@volter/editor-movie": "^0.5.0"
|
|
13
14
|
}
|
|
14
15
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b2 as B,b3 as I,q as R,V as u,Q as N,o as x,bl as L,bn as g,bi as k}from"./three.module-CtVjCPcj.js";class A extends B{constructor(c){super(c),this.animateBonePositions=!0,this.animateBoneRotations=!0}load(c,H,d,f){const p=this,h=new I(p.manager);h.setPath(p.path),h.setRequestHeader(p.requestHeader),h.setWithCredentials(p.withCredentials),h.load(c,function(l){try{H(p.parse(l))}catch(m){f?f(m):console.error(m),p.manager.itemError(c)}},d,f)}parse(c){function H(t){l(t)!=="HIERARCHY"&&console.error("THREE.BVHLoader: HIERARCHY expected.");const s=[],n=f(t,l(t),s);l(t)!=="MOTION"&&console.error("THREE.BVHLoader: MOTION expected.");let e=l(t).split(/[\s]+/);const o=parseInt(e[1]);isNaN(o)&&console.error("THREE.BVHLoader: Failed to read number of frames."),e=l(t).split(/[\s]+/);const a=parseFloat(e[2]);isNaN(a)&&console.error("THREE.BVHLoader: Failed to read frame time.");for(let r=0;r<o;r++)e=l(t).split(/[\s]+/),d(e,r*a,n);return s}function d(t,s,n){if(n.type==="ENDSITE")return;const e={time:s,position:new u,rotation:new N};n.frames.push(e);const o=new N,a=new u(1,0,0),r=new u(0,1,0),E=new u(0,0,1);for(let i=0;i<n.channels.length;i++)switch(n.channels[i]){case"Xposition":e.position.x=parseFloat(t.shift().trim());break;case"Yposition":e.position.y=parseFloat(t.shift().trim());break;case"Zposition":e.position.z=parseFloat(t.shift().trim());break;case"Xrotation":o.setFromAxisAngle(a,parseFloat(t.shift().trim())*Math.PI/180),e.rotation.multiply(o);break;case"Yrotation":o.setFromAxisAngle(r,parseFloat(t.shift().trim())*Math.PI/180),e.rotation.multiply(o);break;case"Zrotation":o.setFromAxisAngle(E,parseFloat(t.shift().trim())*Math.PI/180),e.rotation.multiply(o);break;default:console.warn("THREE.BVHLoader: Invalid channel type.")}for(let i=0;i<n.children.length;i++)d(t,s,n.children[i])}function f(t,s,n){const e={name:"",type:"",frames:[]};n.push(e);let o=s.split(/[\s]+/);o[0].toUpperCase()==="END"&&o[1].toUpperCase()==="SITE"?(e.type="ENDSITE",e.name="ENDSITE"):(e.name=o[1],e.type=o[0].toUpperCase()),l(t)!=="{"&&console.error("THREE.BVHLoader: Expected opening { after type & name"),o=l(t).split(/[\s]+/),o[0]!=="OFFSET"&&console.error("THREE.BVHLoader: Expected OFFSET but got: "+o[0]),o.length!==4&&console.error("THREE.BVHLoader: Invalid number of values for OFFSET.");const a=new u(parseFloat(o[1]),parseFloat(o[2]),parseFloat(o[3]));if((isNaN(a.x)||isNaN(a.y)||isNaN(a.z))&&console.error("THREE.BVHLoader: Invalid values of OFFSET."),e.offset=a,e.type!=="ENDSITE"){o=l(t).split(/[\s]+/),o[0]!=="CHANNELS"&&console.error("THREE.BVHLoader: Expected CHANNELS definition.");const r=parseInt(o[1]);e.channels=o.splice(2,r),e.children=[]}for(;;){const r=l(t);if(r==="}")return e;e.children.push(f(t,r,n))}}function p(t,s){const n=new x;if(s.push(n),n.position.add(t.offset),n.name=t.name,t.type!=="ENDSITE")for(let e=0;e<t.children.length;e++)n.add(p(t.children[e],s));return n}function h(t){const s=[];for(let n=0;n<t.length;n++){const e=t[n];if(e.type==="ENDSITE")continue;const o=[],a=[],r=[];for(let E=0;E<e.frames.length;E++){const i=e.frames[E];o.push(i.time),a.push(i.position.x+e.offset.x),a.push(i.position.y+e.offset.y),a.push(i.position.z+e.offset.z),r.push(i.rotation.x),r.push(i.rotation.y),r.push(i.rotation.z),r.push(i.rotation.w)}m.animateBonePositions&&s.push(new L(e.name+".position",o,a)),m.animateBoneRotations&&s.push(new g(e.name+".quaternion",o,r))}return new k("animation",-1,s)}function l(t){let s;for(;(s=t.shift().trim()).length===0;);return s}const m=this,y=c.split(/[\r\n]+/g),T=H(y),F=[];p(T[0],F);const w=h(T);return{skeleton:new R(F),clip:w}}}export{A as BVHLoader};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{aA as kn,at as wn,b2 as it,b7 as Nn,b3 as An,V as $,g as X,l as rt,Y as Tn,b9 as En,m as ot,u as pe,bi as at,ak as _n,cH as ct,aF as Ee,n as ee,r as xn,$ as Cn,i as vn,ay as lt,a0 as In,A as Ln,I as Rn,P as Mn,v as Sn,f as dt,Q as Gn,bl as ut,bn as On,B as jn,h as ne,o as qn,ag as ft,p as Pn,j as Hn,bg as Un,af as Bn,q as zn,a8 as _e,C as ht}from"./three.module-CtVjCPcj.js";class pt extends kn{constructor(D){super(D)}parse(D){function se(h){switch(h.image_type){case me:case z:if(h.colormap_length>256||h.colormap_size!==24||h.colormap_type!==1)throw new Error("THREE.TGALoader: Invalid type colormap data for indexed type.");break;case B:case V:case ue:case be:if(h.colormap_type)throw new Error("THREE.TGALoader: Invalid type colormap data for colormap type.");break;case Ce:throw new Error("THREE.TGALoader: No data.");default:throw new Error("THREE.TGALoader: Invalid type "+h.image_type)}if(h.width<=0||h.height<=0)throw new Error("THREE.TGALoader: Invalid image size.");if(h.pixel_size!==8&&h.pixel_size!==16&&h.pixel_size!==24&&h.pixel_size!==32)throw new Error("THREE.TGALoader: Invalid pixel size "+h.pixel_size)}function U(h,q,R,C,P){let _,v;const A=R.pixel_size>>3,N=R.width*R.height*A;if(q&&(v=P.subarray(C,C+=R.colormap_length*(R.colormap_size>>3))),h){_=new Uint8Array(N);let y,u,k,M=0;const W=new Uint8Array(A);for(;M<N;)if(y=P[C++],u=(y&127)+1,y&128){for(k=0;k<A;++k)W[k]=P[C++];for(k=0;k<u;++k)_.set(W,M+k*A);M+=A*u}else{for(u*=A,k=0;k<u;++k)_[M+k]=P[C++];M+=u}}else _=P.subarray(C,C+=q?R.width*R.height:N);return{pixel_data:_,palettes:v}}function te(h,q,R,C,P,_,v,A,N){const y=N;let u,k=0,M,W;const oe=j.width;for(W=q;W!==C;W+=R)for(M=P;M!==v;M+=_,k++)u=A[k],h[(M+oe*W)*4+3]=255,h[(M+oe*W)*4+2]=y[u*3+0],h[(M+oe*W)*4+1]=y[u*3+1],h[(M+oe*W)*4+0]=y[u*3+2];return h}function I(h,q,R,C,P,_,v,A){let N,y=0,u,k;const M=j.width;for(k=q;k!==C;k+=R)for(u=P;u!==v;u+=_,y+=2)N=A[y+0]+(A[y+1]<<8),h[(u+M*k)*4+0]=(N&31744)>>7,h[(u+M*k)*4+1]=(N&992)>>2,h[(u+M*k)*4+2]=(N&31)<<3,h[(u+M*k)*4+3]=N&32768?0:255;return h}function Z(h,q,R,C,P,_,v,A){let N=0,y,u;const k=j.width;for(u=q;u!==C;u+=R)for(y=P;y!==v;y+=_,N+=3)h[(y+k*u)*4+3]=255,h[(y+k*u)*4+2]=A[N+0],h[(y+k*u)*4+1]=A[N+1],h[(y+k*u)*4+0]=A[N+2];return h}function S(h,q,R,C,P,_,v,A){let N=0,y,u;const k=j.width;for(u=q;u!==C;u+=R)for(y=P;y!==v;y+=_,N+=4)h[(y+k*u)*4+2]=A[N+0],h[(y+k*u)*4+1]=A[N+1],h[(y+k*u)*4+0]=A[N+2],h[(y+k*u)*4+3]=A[N+3];return h}function de(h,q,R,C,P,_,v,A){let N,y=0,u,k;const M=j.width;for(k=q;k!==C;k+=R)for(u=P;u!==v;u+=_,y++)N=A[y],h[(u+M*k)*4+0]=N,h[(u+M*k)*4+1]=N,h[(u+M*k)*4+2]=N,h[(u+M*k)*4+3]=255;return h}function Q(h,q,R,C,P,_,v,A){let N=0,y,u;const k=j.width;for(u=q;u!==C;u+=R)for(y=P;y!==v;y+=_,N+=2)h[(y+k*u)*4+0]=A[N+0],h[(y+k*u)*4+1]=A[N+0],h[(y+k*u)*4+2]=A[N+0],h[(y+k*u)*4+3]=A[N+1];return h}function xe(h,q,R,C,P){let _,v,A,N,y,u;switch((j.flags&ve)>>ge){default:case Le:_=0,A=1,y=q,v=0,N=1,u=R;break;case ye:_=0,A=1,y=q,v=R-1,N=-1,u=-1;break;case ie:_=q-1,A=-1,y=-1,v=0,N=1,u=R;break;case Ie:_=q-1,A=-1,y=-1,v=R-1,N=-1,u=-1;break}if(he)switch(j.pixel_size){case 8:de(h,v,N,u,_,A,y,C);break;case 16:Q(h,v,N,u,_,A,y,C);break;default:throw new Error("THREE.TGALoader: Format not supported.")}else switch(j.pixel_size){case 8:te(h,v,N,u,_,A,y,C,P);break;case 16:I(h,v,N,u,_,A,y,C);break;case 24:Z(h,v,N,u,_,A,y,C);break;case 32:S(h,v,N,u,_,A,y,C);break;default:throw new Error("THREE.TGALoader: Format not supported.")}return h}const Ce=0,me=1,B=2,V=3,z=9,ue=10,be=11,ve=48,ge=4,ye=0,Ie=1,Le=2,ie=3;if(D.length<19)throw new Error("THREE.TGALoader: Not enough data to contain header.");let L=0;const G=new Uint8Array(D),j={id_length:G[L++],colormap_type:G[L++],image_type:G[L++],colormap_index:G[L++]|G[L++]<<8,colormap_length:G[L++]|G[L++]<<8,colormap_size:G[L++],origin:[G[L++]|G[L++]<<8,G[L++]|G[L++]<<8],width:G[L++]|G[L++]<<8,height:G[L++]|G[L++]<<8,pixel_size:G[L++],flags:G[L++]};if(se(j),j.id_length+L>D.length)throw new Error("THREE.TGALoader: No data.");L+=j.id_length;let re=!1,fe=!1,he=!1;switch(j.image_type){case z:re=!0,fe=!0;break;case me:fe=!0;break;case ue:re=!0;break;case B:break;case be:re=!0,he=!0;break;case V:he=!0;break}const ke=new Uint8Array(j.width*j.height*4),we=U(re,fe,j,L,G);return xe(ke,j.width,j.height,we.pixel_data,we.palettes),{data:ke,width:j.width,height:j.height,flipY:!0,generateMipmaps:!0,minFilter:wn}}}class Vn extends it{load(D,se,U,te){const I=this,Z=I.path===""?Nn.extractUrlBase(D):I.path,S=new An(I.manager);S.setPath(I.path),S.setRequestHeader(I.requestHeader),S.setWithCredentials(I.withCredentials),S.load(D,function(de){try{se(I.parse(de,Z))}catch(Q){te?te(Q):console.error(Q),I.manager.itemError(D)}},U,te)}parse(D,se){function U(t,e){const s=[],n=t.childNodes;for(let i=0,r=n.length;i<r;i++){const o=n[i];o.nodeName===e&&s.push(o)}return s}function te(t){if(t.length===0)return[];const e=t.trim().split(/\s+/),s=new Array(e.length);for(let n=0,i=e.length;n<i;n++)s[n]=e[n];return s}function I(t){if(t.length===0)return[];const e=t.trim().split(/\s+/),s=new Array(e.length);for(let n=0,i=e.length;n<i;n++)s[n]=parseFloat(e[n]);return s}function Z(t){if(t.length===0)return[];const e=t.trim().split(/\s+/),s=new Array(e.length);for(let n=0,i=e.length;n<i;n++)s[n]=parseInt(e[n]);return s}function S(t){return t.substring(1)}function de(){return"three_default_"+gn++}function Q(t){return Object.keys(t).length===0}function xe(t){return{unit:Ce(U(t,"unit")[0]),upAxis:me(U(t,"up_axis")[0])}}function Ce(t){return t!==void 0&&t.hasAttribute("meter")===!0?parseFloat(t.getAttribute("meter")):1}function me(t){return t!==void 0?t.textContent:"Y_UP"}function B(t,e,s,n){const i=U(t,e)[0];if(i!==void 0){const r=U(i,s);for(let o=0;o<r.length;o++)n(r[o])}}function V(t,e){for(const s in t){const n=t[s];n.build=e(t[s])}}function z(t,e){return t.build!==void 0||(t.build=e(t)),t.build}function ue(t){const e={sources:{},samplers:{},channels:{}};let s=!1;for(let n=0,i=t.childNodes.length;n<i;n++){const r=t.childNodes[n];if(r.nodeType!==1)continue;let o;switch(r.nodeName){case"source":o=r.getAttribute("id"),e.sources[o]=Re(r);break;case"sampler":o=r.getAttribute("id"),e.samplers[o]=be(r);break;case"channel":o=r.getAttribute("target"),e.channels[o]=ve(r);break;case"animation":ue(r),s=!0;break;default:console.log(r)}}s===!1&&(w.animations[t.getAttribute("id")||pe.generateUUID()]=e)}function be(t){const e={inputs:{}};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"input":const r=S(i.getAttribute("source")),o=i.getAttribute("semantic");e.inputs[o]=r;break}}return e}function ve(t){const e={};let n=t.getAttribute("target").split("/");const i=n.shift();let r=n.shift();const o=r.indexOf("(")!==-1,d=r.indexOf(".")!==-1;if(d)n=r.split("."),r=n.shift(),e.member=n.shift();else if(o){const c=r.split("(");r=c.shift();for(let l=0;l<c.length;l++)c[l]=parseInt(c[l].replace(/\)/,""));e.indices=c}return e.id=i,e.sid=r,e.arraySyntax=o,e.memberSyntax=d,e.sampler=S(t.getAttribute("source")),e}function ge(t){const e=[],s=t.channels,n=t.samplers,i=t.sources;for(const r in s)if(s.hasOwnProperty(r)){const o=s[r],d=n[o.sampler],c=d.inputs.INPUT,l=d.inputs.OUTPUT,m=i[c],a=i[l],p=Ie(o,m,a);j(p,e)}return e}function ye(t){return z(w.animations[t],ge)}function Ie(t,e,s){const n=w.nodes[t.id],i=ce(n.id),r=n.transforms[t.sid],o=n.matrix.clone().transpose();let d,c,l,m,a,p;const f={};switch(r){case"matrix":for(l=0,m=e.array.length;l<m;l++)if(d=e.array[l],c=l*s.stride,f[d]===void 0&&(f[d]={}),t.arraySyntax===!0){const O=s.array[c],x=t.indices[0]+4*t.indices[1];f[d][x]=O}else for(a=0,p=s.stride;a<p;a++)f[d][a]=s.array[c+a];break;case"translate":console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.',r);break;case"rotate":console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.',r);break;case"scale":console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.',r);break}const g=Le(f,o);return{name:i.uuid,keyframes:g}}function Le(t,e){const s=[];for(const i in t)s.push({time:parseFloat(i),value:t[i]});s.sort(n);for(let i=0;i<16;i++)re(s,i,e.elements[i]);return s;function n(i,r){return i.time-r.time}}const ie=new $,L=new $,G=new Gn;function j(t,e){const s=t.keyframes,n=t.name,i=[],r=[],o=[],d=[];for(let c=0,l=s.length;c<l;c++){const m=s[c],a=m.time,p=m.value;K.fromArray(p).transpose(),K.decompose(ie,G,L),i.push(a),r.push(ie.x,ie.y,ie.z),o.push(G.x,G.y,G.z,G.w),d.push(L.x,L.y,L.z)}return r.length>0&&e.push(new ut(n+".position",i,r)),o.length>0&&e.push(new On(n+".quaternion",i,o)),d.length>0&&e.push(new ut(n+".scale",i,d)),e}function re(t,e,s){let n,i=!0,r,o;for(r=0,o=t.length;r<o;r++)n=t[r],n.value[e]===void 0?n.value[e]=null:i=!1;if(i===!0)for(r=0,o=t.length;r<o;r++)n=t[r],n.value[e]=s;else fe(t,e)}function fe(t,e){let s,n;for(let i=0,r=t.length;i<r;i++){const o=t[i];if(o.value[e]===null){if(s=he(t,i,e),n=ke(t,i,e),s===null){o.value[e]=n.value[e];continue}if(n===null){o.value[e]=s.value[e];continue}we(o,s,n,e)}}}function he(t,e,s){for(;e>=0;){const n=t[e];if(n.value[s]!==null)return n;e--}return null}function ke(t,e,s){for(;e<t.length;){const n=t[e];if(n.value[s]!==null)return n;e++}return null}function we(t,e,s,n){if(s.time-e.time===0){t.value[n]=e.value[n];return}t.value[n]=(t.time-e.time)*(s.value[n]-e.value[n])/(s.time-e.time)+e.value[n]}function h(t){const e={name:t.getAttribute("id")||"default",start:parseFloat(t.getAttribute("start")||0),end:parseFloat(t.getAttribute("end")||0),animations:[]};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"instance_animation":e.animations.push(S(i.getAttribute("url")));break}}w.clips[t.getAttribute("id")]=e}function q(t){const e=[],s=t.name,n=t.end-t.start||-1,i=t.animations;for(let r=0,o=i.length;r<o;r++){const d=ye(i[r]);for(let c=0,l=d.length;c<l;c++)e.push(d[c])}return new at(s,n,e)}function R(t){return z(w.clips[t],q)}function C(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"skin":e.id=S(i.getAttribute("source")),e.skin=P(i);break;case"morph":e.id=S(i.getAttribute("source")),console.warn("THREE.ColladaLoader: Morph target animation not supported yet.");break}}w.controllers[t.getAttribute("id")]=e}function P(t){const e={sources:{}};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"bind_shape_matrix":e.bindShapeMatrix=I(i.textContent);break;case"source":const r=i.getAttribute("id");e.sources[r]=Re(i);break;case"joints":e.joints=_(i);break;case"vertex_weights":e.vertexWeights=v(i);break}}return e}function _(t){const e={inputs:{}};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"input":const r=i.getAttribute("semantic"),o=S(i.getAttribute("source"));e.inputs[r]=o;break}}return e}function v(t){const e={inputs:{}};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"input":const r=i.getAttribute("semantic"),o=S(i.getAttribute("source")),d=parseInt(i.getAttribute("offset"));e.inputs[r]={id:o,offset:d};break;case"vcount":e.vcount=Z(i.textContent);break;case"v":e.v=Z(i.textContent);break}}return e}function A(t){const e={id:t.id},s=w.geometries[e.id];return t.skin!==void 0&&(e.skin=N(t.skin),s.sources.skinIndices=e.skin.indices,s.sources.skinWeights=e.skin.weights),e}function N(t){const s={joints:[],indices:{array:[],stride:4},weights:{array:[],stride:4}},n=t.sources,i=t.vertexWeights,r=i.vcount,o=i.v,d=i.inputs.JOINT.offset,c=i.inputs.WEIGHT.offset,l=t.sources[t.joints.inputs.JOINT],m=t.sources[t.joints.inputs.INV_BIND_MATRIX],a=n[i.inputs.WEIGHT.id].array;let p=0,f,g,b;for(f=0,b=r.length;f<b;f++){const x=r[f],T=[];for(g=0;g<x;g++){const E=o[p+d],Y=o[p+c],F=a[Y];T.push({index:E,weight:F}),p+=2}for(T.sort(O),g=0;g<4;g++){const E=T[g];E!==void 0?(s.indices.array.push(E.index),s.weights.array.push(E.weight)):(s.indices.array.push(0),s.weights.array.push(0))}}for(t.bindShapeMatrix?s.bindMatrix=new X().fromArray(t.bindShapeMatrix).transpose():s.bindMatrix=new X().identity(),f=0,b=l.array.length;f<b;f++){const x=l.array[f],T=new X().fromArray(m.array,f*m.stride).transpose();s.joints.push({name:x,boneInverse:T})}return s;function O(x,T){return T.weight-x.weight}}function y(t){return z(w.controllers[t],A)}function u(t){const e={init_from:U(t,"init_from")[0].textContent};w.images[t.getAttribute("id")]=e}function k(t){return t.build!==void 0?t.build:t.init_from}function M(t){const e=w.images[t];return e!==void 0?z(e,k):(console.warn("THREE.ColladaLoader: Couldn't find image with ID:",t),null)}function W(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"profile_COMMON":e.profile=oe(i);break}}w.effects[t.getAttribute("id")]=e}function oe(t){const e={surfaces:{},samplers:{}};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"newparam":bt(i,e);break;case"technique":e.technique=kt(i);break;case"extra":e.extra=qe(i);break}}return e}function bt(t,e){const s=t.getAttribute("sid");for(let n=0,i=t.childNodes.length;n<i;n++){const r=t.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case"surface":e.surfaces[s]=gt(r);break;case"sampler2D":e.samplers[s]=yt(r);break}}}function gt(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"init_from":e.init_from=i.textContent;break}}return e}function yt(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"source":e.source=i.textContent;break}}return e}function kt(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"constant":case"lambert":case"blinn":case"phong":e.type=i.nodeName,e.parameters=wt(i);break;case"extra":e.extra=qe(i);break}}return e}function wt(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"emission":case"diffuse":case"specular":case"bump":case"ambient":case"shininess":case"transparency":e[i.nodeName]=Oe(i);break;case"transparent":e[i.nodeName]={opaque:i.hasAttribute("opaque")?i.getAttribute("opaque"):"A_ONE",data:Oe(i)};break}}return e}function Oe(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"color":e[i.nodeName]=I(i.textContent);break;case"float":e[i.nodeName]=parseFloat(i.textContent);break;case"texture":e[i.nodeName]={id:i.getAttribute("texture"),extra:je(i)};break}}return e}function je(t){const e={technique:{}};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"extra":Nt(i,e);break}}return e}function Nt(t,e){for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"technique":At(i,e);break}}}function At(t,e){for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"repeatU":case"repeatV":case"offsetU":case"offsetV":e.technique[i.nodeName]=parseFloat(i.textContent);break;case"wrapU":case"wrapV":i.textContent.toUpperCase()==="TRUE"?e.technique[i.nodeName]=1:i.textContent.toUpperCase()==="FALSE"?e.technique[i.nodeName]=0:e.technique[i.nodeName]=parseInt(i.textContent);break;case"bump":e[i.nodeName]=Pe(i);break}}}function qe(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"technique":e.technique=Tt(i);break}}return e}function Tt(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"double_sided":e[i.nodeName]=parseInt(i.textContent);break;case"bump":e[i.nodeName]=Pe(i);break}}return e}function Pe(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"texture":e[i.nodeName]={id:i.getAttribute("texture"),texcoord:i.getAttribute("texcoord"),extra:je(i)};break}}return e}function He(t){return t}function Et(t){return z(w.effects[t],He)}function _t(t){const e={name:t.getAttribute("name")};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"instance_effect":e.url=S(i.getAttribute("url"));break}}w.materials[t.getAttribute("id")]=e}function xt(t){let e,s=t.slice((t.lastIndexOf(".")-1>>>0)+2);switch(s=s.toLowerCase(),s){case"tga":e=Ge;break;default:e=tt}return e}function Ue(t){const e=Et(t.url),s=e.profile.technique;let n;switch(s.type){case"phong":case"blinn":n=new ct;break;case"lambert":n=new _n;break;default:n=new rt;break}n.name=t.name||"";function i(c,l=null){const m=e.profile.samplers[c.id];let a=null;if(m!==void 0){const p=e.profile.surfaces[m.source];a=M(p.init_from)}else console.warn("THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530)."),a=M(c.id);if(a!==null){const p=xt(a);if(p!==void 0){const f=p.load(a),g=c.extra;if(g!==void 0&&g.technique!==void 0&&Q(g.technique)===!1){const b=g.technique;f.wrapS=b.wrapU?_e:ht,f.wrapT=b.wrapV?_e:ht,f.offset.set(b.offsetU||0,b.offsetV||0),f.repeat.set(b.repeatU||1,b.repeatV||1)}else f.wrapS=_e,f.wrapT=_e;return l!==null&&(f.colorSpace=l),f}else return console.warn("THREE.ColladaLoader: Loader for texture %s not found.",a),null}else return console.warn("THREE.ColladaLoader: Couldn't create texture with ID:",c.id),null}const r=s.parameters;for(const c in r){const l=r[c];switch(c){case"diffuse":l.color&&n.color.fromArray(l.color),l.texture&&(n.map=i(l.texture,ee));break;case"specular":l.color&&n.specular&&n.specular.fromArray(l.color),l.texture&&(n.specularMap=i(l.texture));break;case"bump":l.texture&&(n.normalMap=i(l.texture));break;case"ambient":l.texture&&(n.lightMap=i(l.texture,ee));break;case"shininess":l.float&&n.shininess&&(n.shininess=l.float);break;case"emission":l.color&&n.emissive&&n.emissive.fromArray(l.color),l.texture&&(n.emissiveMap=i(l.texture,ee));break}}Ee.colorSpaceToWorking(n.color,ee),n.specular&&Ee.colorSpaceToWorking(n.specular,ee),n.emissive&&Ee.colorSpaceToWorking(n.emissive,ee);let o=r.transparent,d=r.transparency;if(d===void 0&&o&&(d={float:1}),o===void 0&&d&&(o={opaque:"A_ONE",data:{color:[1,1,1,1]}}),o&&d)if(o.data.texture)n.transparent=!0;else{const c=o.data.color;switch(o.opaque){case"A_ONE":n.opacity=c[3]*d.float;break;case"RGB_ZERO":n.opacity=1-c[0]*d.float;break;case"A_ZERO":n.opacity=1-c[3]*d.float;break;case"RGB_ONE":n.opacity=c[0]*d.float;break;default:console.warn('THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.',o.opaque)}n.opacity<1&&(n.transparent=!0)}if(s.extra!==void 0&&s.extra.technique!==void 0){const c=s.extra.technique;for(const l in c){const m=c[l];switch(l){case"double_sided":n.side=m===1?Cn:vn;break;case"bump":n.normalMap=i(m.texture),n.normalScale=new xn(1,1);break}}}return n}function Ct(t){return z(w.materials[t],Ue)}function vt(t){const e={name:t.getAttribute("name")};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"optics":e.optics=It(i);break}}w.cameras[t.getAttribute("id")]=e}function It(t){for(let e=0;e<t.childNodes.length;e++){const s=t.childNodes[e];switch(s.nodeName){case"technique_common":return Lt(s)}}return{}}function Lt(t){const e={};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];switch(n.nodeName){case"perspective":case"orthographic":e.technique=n.nodeName,e.parameters=Rt(n);break}}return e}function Rt(t){const e={};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];switch(n.nodeName){case"xfov":case"yfov":case"xmag":case"ymag":case"znear":case"zfar":case"aspect_ratio":e[n.nodeName]=parseFloat(n.textContent);break}}return e}function Be(t){let e;switch(t.optics.technique){case"perspective":e=new lt(t.optics.parameters.yfov,t.optics.parameters.aspect_ratio,t.optics.parameters.znear,t.optics.parameters.zfar);break;case"orthographic":let s=t.optics.parameters.ymag,n=t.optics.parameters.xmag;const i=t.optics.parameters.aspect_ratio;n=n===void 0?s*i:n,s=s===void 0?n/i:s,n*=.5,s*=.5,e=new In(-n,n,s,-s,t.optics.parameters.znear,t.optics.parameters.zfar);break;default:e=new lt;break}return e.name=t.name||"",e}function Mt(t){const e=w.cameras[t];return e!==void 0?z(e,Be):(console.warn("THREE.ColladaLoader: Couldn't find camera with ID:",t),null)}function St(t){let e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"technique_common":e=Gt(i);break}}w.lights[t.getAttribute("id")]=e}function Gt(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"directional":case"point":case"spot":case"ambient":e.technique=i.nodeName,e.parameters=Ot(i)}}return e}function Ot(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"color":const r=I(i.textContent);e.color=new ot().fromArray(r),Ee.colorSpaceToWorking(e.color,ee);break;case"falloff_angle":e.falloffAngle=parseFloat(i.textContent);break;case"quadratic_attenuation":const o=parseFloat(i.textContent);e.distance=o?Math.sqrt(1/o):0;break}}return e}function ze(t){let e;switch(t.technique){case"directional":e=new Sn;break;case"point":e=new Mn;break;case"spot":e=new Rn;break;case"ambient":e=new Ln;break}return t.parameters.color&&e.color.copy(t.parameters.color),t.parameters.distance&&(e.distance=t.parameters.distance),e}function jt(t){const e=w.lights[t];return e!==void 0?z(e,ze):(console.warn("THREE.ColladaLoader: Couldn't find light with ID:",t),null)}function qt(t){const e={name:t.getAttribute("name"),sources:{},vertices:{},primitives:[]},s=U(t,"mesh")[0];if(s!==void 0){for(let n=0;n<s.childNodes.length;n++){const i=s.childNodes[n];if(i.nodeType!==1)continue;const r=i.getAttribute("id");switch(i.nodeName){case"source":e.sources[r]=Re(i);break;case"vertices":e.vertices=Pt(i);break;case"polygons":console.warn("THREE.ColladaLoader: Unsupported primitive type: ",i.nodeName);break;case"lines":case"linestrips":case"polylist":case"triangles":e.primitives.push(Ht(i));break;default:console.log(i)}}w.geometries[t.getAttribute("id")]=e}}function Re(t){const e={array:[],stride:3};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"float_array":e.array=I(n.textContent);break;case"Name_array":e.array=te(n.textContent);break;case"technique_common":const i=U(n,"accessor")[0];i!==void 0&&(e.stride=parseInt(i.getAttribute("stride")));break}}return e}function Pt(t){const e={};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];n.nodeType===1&&(e[n.getAttribute("semantic")]=S(n.getAttribute("source")))}return e}function Ht(t){const e={type:t.nodeName,material:t.getAttribute("material"),count:parseInt(t.getAttribute("count")),inputs:{},stride:0,hasUV:!1};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"input":const r=S(i.getAttribute("source")),o=i.getAttribute("semantic"),d=parseInt(i.getAttribute("offset")),c=parseInt(i.getAttribute("set")),l=c>0?o+c:o;e.inputs[l]={id:r,offset:d},e.stride=Math.max(e.stride,d+1),o==="TEXCOORD"&&(e.hasUV=!0);break;case"vcount":e.vcount=Z(i.textContent);break;case"p":e.p=Z(i.textContent);break}}return e}function Ut(t){const e={};for(let s=0;s<t.length;s++){const n=t[s];e[n.type]===void 0&&(e[n.type]=[]),e[n.type].push(n)}return e}function Bt(t){let e=0;for(let s=0,n=t.length;s<n;s++)t[s].hasUV===!0&&e++;e>0&&e<t.length&&(t.uvsNeedsFix=!0)}function Fe(t){const e={},s=t.sources,n=t.vertices,i=t.primitives;if(i.length===0)return{};const r=Ut(i);for(const o in r){const d=r[o];Bt(d),e[o]=zt(d,s,n)}return e}function zt(t,e,s){const n={},i={array:[],stride:0},r={array:[],stride:0},o={array:[],stride:0},d={array:[],stride:0},c={array:[],stride:0},l={array:[],stride:4},m={array:[],stride:4},a=new jn,p=[];let f=0;for(let g=0;g<t.length;g++){const b=t[g],O=b.inputs;let x=0;switch(b.type){case"lines":case"linestrips":x=b.count*2;break;case"triangles":x=b.count*3;break;case"polylist":for(let T=0;T<b.count;T++){const E=b.vcount[T];switch(E){case 3:x+=3;break;case 4:x+=6;break;default:x+=(E-2)*3;break}}break;default:console.warn("THREE.ColladaLoader: Unknown primitive type:",b.type)}a.addGroup(f,x,g),f+=x,b.material&&p.push(b.material);for(const T in O){const E=O[T];switch(T){case"VERTEX":for(const Y in s){const F=s[Y];switch(Y){case"POSITION":const le=i.array.length;if(J(b,e[F],E.offset,i.array),i.stride=e[F].stride,e.skinWeights&&e.skinIndices&&(J(b,e.skinIndices,E.offset,l.array),J(b,e.skinWeights,E.offset,m.array)),b.hasUV===!1&&t.uvsNeedsFix===!0){const yn=(i.array.length-le)/i.stride;for(let st=0;st<yn;st++)o.array.push(0,0)}break;case"NORMAL":J(b,e[F],E.offset,r.array),r.stride=e[F].stride;break;case"COLOR":J(b,e[F],E.offset,c.array),c.stride=e[F].stride;break;case"TEXCOORD":J(b,e[F],E.offset,o.array),o.stride=e[F].stride;break;case"TEXCOORD1":J(b,e[F],E.offset,d.array),o.stride=e[F].stride;break;default:console.warn('THREE.ColladaLoader: Semantic "%s" not handled in geometry build process.',Y)}}break;case"NORMAL":J(b,e[E.id],E.offset,r.array),r.stride=e[E.id].stride;break;case"COLOR":J(b,e[E.id],E.offset,c.array,!0),c.stride=e[E.id].stride;break;case"TEXCOORD":J(b,e[E.id],E.offset,o.array),o.stride=e[E.id].stride;break;case"TEXCOORD1":J(b,e[E.id],E.offset,d.array),d.stride=e[E.id].stride;break}}}return i.array.length>0&&a.setAttribute("position",new ne(i.array,i.stride)),r.array.length>0&&a.setAttribute("normal",new ne(r.array,r.stride)),c.array.length>0&&a.setAttribute("color",new ne(c.array,c.stride)),o.array.length>0&&a.setAttribute("uv",new ne(o.array,o.stride)),d.array.length>0&&a.setAttribute("uv1",new ne(d.array,d.stride)),l.array.length>0&&a.setAttribute("skinIndex",new ne(l.array,l.stride)),m.array.length>0&&a.setAttribute("skinWeight",new ne(m.array,m.stride)),n.data=a,n.type=t[0].type,n.materialKeys=p,n}function J(t,e,s,n,i=!1){const r=t.p,o=t.stride,d=t.vcount;function c(a){let p=r[a+s]*m;const f=p+m;for(;p<f;p++)n.push(l[p]);if(i){const g=n.length-m-1;Ne.setRGB(n[g+0],n[g+1],n[g+2],ee),n[g+0]=Ne.r,n[g+1]=Ne.g,n[g+2]=Ne.b}}const l=e.array,m=e.stride;if(t.vcount!==void 0){let a=0;for(let p=0,f=d.length;p<f;p++){const g=d[p];if(g===4){const b=a+o*0,O=a+o*1,x=a+o*2,T=a+o*3;c(b),c(O),c(T),c(O),c(x),c(T)}else if(g===3){const b=a+o*0,O=a+o*1,x=a+o*2;c(b),c(O),c(x)}else if(g>4)for(let b=1,O=g-2;b<=O;b++){const x=a+o*0,T=a+o*b,E=a+o*(b+1);c(x),c(T),c(E)}a+=o*g}}else for(let a=0,p=r.length;a<p;a+=o)c(a)}function Ve(t){return z(w.geometries[t],Fe)}function Ft(t){const e={name:t.getAttribute("name")||"",joints:{},links:[]};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"technique_common":Dt(n,e);break}}w.kinematicsModels[t.getAttribute("id")]=e}function Vt(t){return t.build!==void 0?t.build:t}function Kt(t){return z(w.kinematicsModels[t],Vt)}function Dt(t,e){for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"joint":e.joints[n.getAttribute("sid")]=Wt(n);break;case"link":e.links.push(Ke(n));break}}}function Wt(t){let e;for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"prismatic":case"revolute":e=Jt(n);break}}return e}function Jt(t){const e={sid:t.getAttribute("sid"),name:t.getAttribute("name")||"",axis:new $,limits:{min:0,max:0},type:t.nodeName,static:!1,zeroPosition:0,middlePosition:0};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"axis":const i=I(n.textContent);e.axis.fromArray(i);break;case"limits":const r=n.getElementsByTagName("max")[0],o=n.getElementsByTagName("min")[0];e.limits.max=parseFloat(r.textContent),e.limits.min=parseFloat(o.textContent);break}}return e.limits.min>=e.limits.max&&(e.static=!0),e.middlePosition=(e.limits.min+e.limits.max)/2,e}function Ke(t){const e={sid:t.getAttribute("sid"),name:t.getAttribute("name")||"",attachments:[],transforms:[]};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"attachment_full":e.attachments.push(Yt(n));break;case"matrix":case"translate":case"rotate":e.transforms.push(De(n));break}}return e}function Yt(t){const e={joint:t.getAttribute("joint").split("/").pop(),transforms:[],links:[]};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"link":e.links.push(Ke(n));break;case"matrix":case"translate":case"rotate":e.transforms.push(De(n));break}}return e}function De(t){const e={type:t.nodeName},s=I(t.textContent);switch(e.type){case"matrix":e.obj=new X,e.obj.fromArray(s).transpose();break;case"translate":e.obj=new $,e.obj.fromArray(s);break;case"rotate":e.obj=new $,e.obj.fromArray(s),e.angle=pe.degToRad(s[3]);break}return e}function Xt(t){const e={name:t.getAttribute("name")||"",rigidBodies:{}};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"rigid_body":e.rigidBodies[n.getAttribute("name")]={},Zt(n,e.rigidBodies[n.getAttribute("name")]);break}}w.physicsModels[t.getAttribute("id")]=e}function Zt(t,e){for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"technique_common":Qt(n,e);break}}}function Qt(t,e){for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"inertia":e.inertia=I(n.textContent);break;case"mass":e.mass=I(n.textContent)[0];break}}}function $t(t){const e={bindJointAxis:[]};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"bind_joint_axis":e.bindJointAxis.push(en(n));break}}w.kinematicsScenes[S(t.getAttribute("url"))]=e}function en(t){const e={target:t.getAttribute("target").split("/").pop()};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"axis":const i=n.getElementsByTagName("param")[0];e.axis=i.textContent;const r=e.axis.split("inst_").pop().split("axis")[0];e.jointIndex=r.substring(0,r.length-1);break}}return e}function tn(t){return t.build!==void 0?t.build:t}function nn(t){return z(w.kinematicsScenes[t],tn)}function sn(){const t=Object.keys(w.kinematicsModels)[0],e=Object.keys(w.kinematicsScenes)[0],s=Object.keys(w.visualScenes)[0];if(t===void 0||e===void 0)return;const n=Kt(t),i=nn(e),r=Qe(s),o=i.bindJointAxis,d={};for(let m=0,a=o.length;m<a;m++){const p=o[m],f=H.querySelector('[sid="'+p.target+'"]');if(f){const g=f.parentElement;c(p.jointIndex,g)}}function c(m,a){const p=a.getAttribute("name"),f=n.joints[m];r.traverse(function(g){g.name===p&&(d[m]={object:g,transforms:rn(a),joint:f,position:f.zeroPosition})})}const l=new X;nt={joints:n&&n.joints,getJointValue:function(m){const a=d[m];if(a)return a.position;console.warn("THREE.ColladaLoader: Joint "+m+" doesn't exist.")},setJointValue:function(m,a){const p=d[m];if(p){const f=p.joint;if(a>f.limits.max||a<f.limits.min)console.warn("THREE.ColladaLoader: Joint "+m+" value "+a+" outside of limits (min: "+f.limits.min+", max: "+f.limits.max+").");else if(f.static)console.warn("THREE.ColladaLoader: Joint "+m+" is static.");else{const g=p.object,b=f.axis,O=p.transforms;K.identity();for(let x=0;x<O.length;x++){const T=O[x];if(T.sid&&T.sid.indexOf(m)!==-1)switch(f.type){case"revolute":K.multiply(l.makeRotationAxis(b,pe.degToRad(a)));break;case"prismatic":K.multiply(l.makeTranslation(b.x*a,b.y*a,b.z*a));break;default:console.warn("THREE.ColladaLoader: Unknown joint type: "+f.type);break}else switch(T.type){case"matrix":K.multiply(T.obj);break;case"translate":K.multiply(l.makeTranslation(T.obj.x,T.obj.y,T.obj.z));break;case"scale":K.scale(T.obj);break;case"rotate":K.multiply(l.makeRotationAxis(T.obj,T.angle));break}}g.matrix.copy(K),g.matrix.decompose(g.position,g.quaternion,g.scale),d[m].position=a}}else console.log("THREE.ColladaLoader: "+m+" does not exist.")}}}function rn(t){const e=[],s=H.querySelector('[id="'+t.id+'"]');for(let n=0;n<s.childNodes.length;n++){const i=s.childNodes[n];if(i.nodeType!==1)continue;let r,o;switch(i.nodeName){case"matrix":r=I(i.textContent);const d=new X().fromArray(r).transpose();e.push({sid:i.getAttribute("sid"),type:i.nodeName,obj:d});break;case"translate":case"scale":r=I(i.textContent),o=new $().fromArray(r),e.push({sid:i.getAttribute("sid"),type:i.nodeName,obj:o});break;case"rotate":r=I(i.textContent),o=new $().fromArray(r);const c=pe.degToRad(r[3]);e.push({sid:i.getAttribute("sid"),type:i.nodeName,obj:o,angle:c});break}}return e}function on(t){const e=t.getElementsByTagName("node");for(let s=0;s<e.length;s++){const n=e[s];n.hasAttribute("id")===!1&&n.setAttribute("id",de())}}const K=new X,ae=new $;function Me(t){const e={name:t.getAttribute("name")||"",type:t.getAttribute("type"),id:t.getAttribute("id"),sid:t.getAttribute("sid"),matrix:new X,nodes:[],instanceCameras:[],instanceControllers:[],instanceLights:[],instanceGeometries:[],instanceNodes:[],transforms:{}};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType!==1)continue;let i;switch(n.nodeName){case"node":e.nodes.push(n.getAttribute("id")),Me(n);break;case"instance_camera":e.instanceCameras.push(S(n.getAttribute("url")));break;case"instance_controller":e.instanceControllers.push(We(n));break;case"instance_light":e.instanceLights.push(S(n.getAttribute("url")));break;case"instance_geometry":e.instanceGeometries.push(We(n));break;case"instance_node":e.instanceNodes.push(S(n.getAttribute("url")));break;case"matrix":i=I(n.textContent),e.matrix.multiply(K.fromArray(i).transpose()),e.transforms[n.getAttribute("sid")]=n.nodeName;break;case"translate":i=I(n.textContent),ae.fromArray(i),e.matrix.multiply(K.makeTranslation(ae.x,ae.y,ae.z)),e.transforms[n.getAttribute("sid")]=n.nodeName;break;case"rotate":i=I(n.textContent);const r=pe.degToRad(i[3]);e.matrix.multiply(K.makeRotationAxis(ae.fromArray(i),r)),e.transforms[n.getAttribute("sid")]=n.nodeName;break;case"scale":i=I(n.textContent),e.matrix.scale(ae.fromArray(i)),e.transforms[n.getAttribute("sid")]=n.nodeName;break;case"extra":break;default:console.log(n)}}return Xe(e.id)?console.warn("THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.",e.id):w.nodes[e.id]=e,e}function We(t){const e={id:S(t.getAttribute("url")),materials:{},skeletons:[]};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];switch(n.nodeName){case"bind_material":const i=n.getElementsByTagName("instance_material");for(let r=0;r<i.length;r++){const o=i[r],d=o.getAttribute("symbol"),c=o.getAttribute("target");e.materials[d]=S(c)}break;case"skeleton":e.skeletons.push(S(n.textContent));break}}return e}function an(t,e){const s=[],n=[];let i,r,o;for(i=0;i<t.length;i++){const l=t[i];let m;if(Xe(l))m=ce(l),Je(m,e,s);else if(fn(l)){const p=w.visualScenes[l].children;for(let f=0;f<p.length;f++){const g=p[f];if(g.type==="JOINT"){const b=ce(g.id);Je(b,e,s)}}}else console.error("THREE.ColladaLoader: Unable to find root bone of skeleton with ID:",l)}for(i=0;i<e.length;i++)for(r=0;r<s.length;r++)if(o=s[r],o.bone.name===e[i].name){n[i]=o,o.processed=!0;break}for(i=0;i<s.length;i++)o=s[i],o.processed===!1&&(n.push(o),o.processed=!0);const d=[],c=[];for(i=0;i<n.length;i++)o=n[i],d.push(o.bone),c.push(o.boneInverse);return new zn(d,c)}function Je(t,e,s){t.traverse(function(n){if(n.isBone===!0){let i;for(let r=0;r<e.length;r++){const o=e[r];if(o.name===n.name){i=o.boneInverse;break}}i===void 0&&(i=new X),s.push({bone:n,boneInverse:i,processed:!1})}})}function cn(t){const e=[],s=t.matrix,n=t.nodes,i=t.type,r=t.instanceCameras,o=t.instanceControllers,d=t.instanceLights,c=t.instanceGeometries,l=t.instanceNodes;for(let a=0,p=n.length;a<p;a++)e.push(ce(n[a]));for(let a=0,p=r.length;a<p;a++){const f=Mt(r[a]);f!==null&&e.push(f.clone())}for(let a=0,p=o.length;a<p;a++){const f=o[a],g=y(f.id),b=Ve(g.id),O=Ye(b,f.materials),x=f.skeletons,T=g.skin.joints,E=an(x,T);for(let Y=0,F=O.length;Y<F;Y++){const le=O[Y];le.isSkinnedMesh&&(le.bind(E,g.skin.bindMatrix),le.normalizeSkinWeights()),e.push(le)}}for(let a=0,p=d.length;a<p;a++){const f=jt(d[a]);f!==null&&e.push(f.clone())}for(let a=0,p=c.length;a<p;a++){const f=c[a],g=Ve(f.id),b=Ye(g,f.materials);for(let O=0,x=b.length;O<x;O++)e.push(b[O])}for(let a=0,p=l.length;a<p;a++)e.push(ce(l[a]).clone());let m;if(n.length===0&&e.length===1)m=e[0];else{m=i==="JOINT"?new qn:new dt;for(let a=0;a<e.length;a++)m.add(e[a])}return m.name=i==="JOINT"?t.sid:t.name,m.matrix.copy(s),m.matrix.decompose(m.position,m.quaternion,m.scale),m}const ln=new rt({name:it.DEFAULT_MATERIAL_NAME,color:16711935});function dn(t,e){const s=[];for(let n=0,i=t.length;n<i;n++){const r=e[t[n]];r===void 0?(console.warn("THREE.ColladaLoader: Material with key %s not found. Apply fallback material.",t[n]),s.push(ln)):s.push(Ct(r))}return s}function Ye(t,e){const s=[];for(const n in t){const i=t[n],r=dn(i.materialKeys,e);if(r.length===0&&(n==="lines"||n==="linestrips"?r.push(new ft):r.push(new ct)),n==="lines"||n==="linestrips")for(let l=0,m=r.length;l<m;l++){const a=r[l];if(a.isMeshPhongMaterial===!0||a.isMeshLambertMaterial===!0){const p=new ft;p.color.copy(a.color),p.opacity=a.opacity,p.transparent=a.transparent,r[l]=p}}const o=i.data.attributes.skinIndex!==void 0,d=r.length===1?r[0]:r;let c;switch(n){case"lines":c=new Bn(i.data,d);break;case"linestrips":c=new Un(i.data,d);break;case"triangles":case"polylist":o?c=new Pn(i.data,d):c=new Hn(i.data,d);break}s.push(c)}return s}function Xe(t){return w.nodes[t]!==void 0}function ce(t){return z(w.nodes[t],cn)}function un(t){const e={name:t.getAttribute("name"),children:[]};on(t);const s=U(t,"node");for(let n=0;n<s.length;n++)e.children.push(Me(s[n]));w.visualScenes[t.getAttribute("id")]=e}function Ze(t){const e=new dt;e.name=t.name;const s=t.children;for(let n=0;n<s.length;n++){const i=s[n];e.add(ce(i.id))}return e}function fn(t){return w.visualScenes[t]!==void 0}function Qe(t){return z(w.visualScenes[t],Ze)}function hn(t){const e=U(t,"instance_visual_scene")[0];return Qe(S(e.getAttribute("url")))}function pn(){const t=w.clips;if(Q(t)===!0){if(Q(w.animations)===!1){const e=[];for(const s in w.animations){const n=ye(s);for(let i=0,r=n.length;i<r;i++)e.push(n[i])}Ae.push(new at("default",-1,e))}}else for(const e in t)Ae.push(R(e))}function mn(t){let e="";const s=[t];for(;s.length;){const n=s.shift();n.nodeType===Node.TEXT_NODE?e+=n.textContent:(e+=`
|
|
2
|
-
`,s.push(...n.childNodes))}return e.trim()}if(D.length===0)return{scene:new Tn};const $e=new DOMParser().parseFromString(D,"application/xml"),H=U($e,"COLLADA")[0],Se=$e.getElementsByTagName("parsererror")[0];if(Se!==void 0){const t=U(Se,"div")[0];let e;return t?e=t.textContent:e=mn(Se),console.error(`THREE.ColladaLoader: Failed to parse collada file.
|
|
3
|
-
`,e),null}const bn=H.getAttribute("version");console.debug("THREE.ColladaLoader: File version",bn);const et=xe(U(H,"asset")[0]),tt=new En(this.manager);tt.setPath(this.resourcePath||se).setCrossOrigin(this.crossOrigin);let Ge;pt&&(Ge=new pt(this.manager),Ge.setPath(this.resourcePath||se));const Ne=new ot,Ae=[];let nt={},gn=0;const w={animations:{},clips:{},controllers:{},images:{},effects:{},materials:{},cameras:{},lights:{},geometries:{},nodes:{},visualScenes:{},kinematicsModels:{},physicsModels:{},kinematicsScenes:{}};B(H,"library_animations","animation",ue),B(H,"library_animation_clips","animation_clip",h),B(H,"library_controllers","controller",C),B(H,"library_images","image",u),B(H,"library_effects","effect",W),B(H,"library_materials","material",_t),B(H,"library_cameras","camera",vt),B(H,"library_lights","light",St),B(H,"library_geometries","geometry",qt),B(H,"library_nodes","node",Me),B(H,"library_visual_scenes","visual_scene",un),B(H,"library_kinematics_models","kinematics_model",Ft),B(H,"library_physics_models","physics_model",Xt),B(H,"scene","instance_kinematics_scene",$t),V(w.animations,ge),V(w.clips,q),V(w.controllers,A),V(w.images,k),V(w.effects,He),V(w.materials,Ue),V(w.cameras,Be),V(w.lights,ze),V(w.geometries,Fe),V(w.visualScenes,Ze),pn(),sn();const Te=hn(U(H,"scene")[0]);return Te.animations=Ae,et.upAxis==="Z_UP"&&(console.warn("THREE.ColladaLoader: You are loading an asset with a Z-UP coordinate system. The loader just rotates the asset to transform it into Y-UP. The vertex data are not converted, see #24289."),Te.rotation.set(-Math.PI/2,0,0)),Te.scale.multiplyScalar(et.unit),{get animations(){return console.warn("THREE.ColladaLoader: Please access animations over scene.animations now."),Ae},kinematics:nt,library:w,scene:Te}}}export{Vn as ColladaLoader};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{al as f,n as l,j as c,t as d}from"./volter-sdk-mgLi8_Cw.js";import{y as v}from"./three-integration.service-DvOyomjh.js";import{a as S}from"./live-mixers-B-bwLZ7c.js";import{m as h,J as x,o as b}from"./asset-preview-OYr2sUbO.js";import{O as j}from"./StageHost-DVnv4TcF.js";import"./output-pass-j4dAGrPY.js";import"./three.module-CtVjCPcj.js";import"./object3d-document-session-registry-DDpmVmir.js";import"./linear-resolve-Cuka7Ypb.js";import"./model-inspection-DVE8f3Dj.js";import"./standard-viewport-dressing-BSYojdsQ.js";import"./OrbitControls-DrHRrSFA.js";function w(s){const t=new Set;return s.traverse(r=>{const o=S(r);if(o)for(const e of o.clips.values())t.add(e);for(const e of r.animations)t.add(e)}),[...t]}function y({documentId:s,source:t,sourcePath:r,displayName:o,active:e,chromeless:n=!1,revision:i=0,modelSource:p}){const u=l.useCallback(()=>{const a=h(x(t)),m=w(t);return a.animations=[...m],{root:a,animations:m,dispose(){b(a)}}},[t,i]);return c.jsx(j,{documentId:s,sourcePath:r??o,displayName:o,build:u,active:e,chromeless:n,rendererLane:n?"inspector-preview":"own",assetType:"entity",...p?{modelSource:p}:{}})}function L({documentId:s,entityId:t,displayName:r,active:o}){const e=v(f()),n=l.useSyncExternalStore(e.shell.subscribe,e.shell.getSnapshot),i=e.objectMap.get(t);return i?c.jsx(y,{documentId:s,source:i,sourcePath:`Entity ${t}`,displayName:r,active:o,revision:n,modelSource:{kind:"entity",entityId:t}}):c.jsxs("div",{role:"alert",style:{padding:20,color:d.semantic.danger},children:["Scene entity ",t," is no longer available."]})}export{L as EntityModelDocument,y as Object3DSnapshotDocument};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as f,kJ as M,kK as k,kL as C,kM as D,kN as z,j as o,t as y,ko as R,kO as b}from"./volter-sdk-mgLi8_Cw.js";import{z as P,aD as A,n as O,aK as L,Y as H,ay as I,m as T,ac as B,l as F,j as E,az as j,k as S,cj as G,u as N}from"./three.module-CtVjCPcj.js";import{O as $}from"./OrbitControls-DrHRrSFA.js";import{E as q,H as _}from"./output-pass-j4dAGrPY.js";function U(e){return e.split("/").pop()??e}function v(e,t,r){return Math.min(r,Math.max(t,e))}function X(e){return e.split(/[?#]/,1)[0].toLowerCase().endsWith(".exr")}async function K(e){const t=X(e)?"EXR":"HDR",s=await(t==="EXR"?new q:new _).loadAsync(e),p=s.image,n=p.width??0,a=p.height??0,c=n>0&&a>0&&Math.abs(n/a-2)<=.04;return s.mapping=P,s.needsUpdate=!0,{texture:s,width:n,height:a,format:t,panorama:c}}function W(e){const t=new H,r=new I(38,1,.05,100);r.position.set(6.2,3.4,7.8),r.lookAt(0,.7,0);const s=[],p=[];if(!e.panorama){t.background=new T("#11141b");const i=e.width>0&&e.height>0?e.width/e.height:1,d=new B(i>=1?4.8:4.8*i,i>=1?4.8/i:4.8),m=new F({map:e.texture,toneMapped:!0});return s.push(d),p.push(m),t.add(new E(d,m)),r.position.set(0,0,6.5),r.lookAt(0,0,0),{scene:t,camera:r,geometries:s,materials:p}}t.background=e.texture,t.environment=e.texture;const n=(i,d,m)=>{s.push(i),p.push(d);const x=new E(i,d);x.position.set(...m),t.add(x)};n(new S(1,64,40),new j({color:"#d8dde5",roughness:.08,metalness:1}),[-2.3,1.15,0]),n(new S(1,64,40),new j({color:"#c97341",roughness:.32,metalness:.25}),[0,1.15,0]),n(new S(1,64,40),new j({color:"#d7d5cf",roughness:.82,metalness:0}),[2.3,1.15,0]);const a=new G(5.7,96),c=new j({color:"#737881",roughness:.58,metalness:0});s.push(a),p.push(c);const l=new E(a,c);return l.rotation.x=-Math.PI/2,l.position.y=.08,t.add(l),{scene:t,camera:r,geometries:s,materials:p}}function J({image:e,settingsRef:t}){const r=f.useRef(null);return f.useEffect(()=>{const s=r.current;if(!s)return;let p=!1,n=0;const a=document.createElement("canvas");a.setAttribute("aria-label",`${e.format} environment preview`),a.style.width="100%",a.style.height="100%",a.style.display="block",s.replaceChildren(a);const c=new A({canvas:a,antialias:!0});c.outputColorSpace=O,c.toneMapping=L;const l=W(e),i=new $(l.camera,a);i.target.set(0,e.panorama?.8:0,0),i.enableDamping=!0,i.enablePan=!1,i.minDistance=e.panorama?3.8:4,i.maxDistance=e.panorama?14:10,i.update();const d={width:1,height:1},m=()=>{const u=t.current;if(c.toneMappingExposure=v(u.exposure,.05,8),e.panorama){const h=N.degToRad(u.rotation);l.scene.backgroundRotation.y=h,l.scene.environmentRotation.y=h,l.scene.backgroundBlurriness=v(u.blur,0,1),l.scene.environmentIntensity=v(u.intensity,0,8)}i.update(),c.render(l.scene,l.camera)},x=()=>{const u=s.getBoundingClientRect();d.width=Math.max(1,Math.floor(u.width)),d.height=Math.max(1,Math.floor(u.height)),c.setPixelRatio(Math.min(window.devicePixelRatio||1,2)),c.setSize(d.width,d.height,!1),l.camera.aspect=d.width/d.height,l.camera.updateProjectionMatrix(),m()};x();const w=new ResizeObserver(x);w.observe(s);const g=()=>{p||(m(),n=requestAnimationFrame(g))};return n=requestAnimationFrame(g),()=>{p=!0,cancelAnimationFrame(n),w.disconnect(),i.dispose();for(const u of l.geometries)u.dispose();for(const u of l.materials)u.dispose();c.dispose(),a.remove()}},[e,t]),o.jsx("div",{ref:r,"data-testid":"environment-preview",style:{width:"100%",height:"100%",minHeight:260,background:"#11141b"}})}function V({panorama:e,settings:t,onChange:r}){return o.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:12,padding:4},children:[o.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:5,fontSize:11},children:["Exposure",o.jsx(b,{value:t.exposure,onChange:s=>r({...t,exposure:v(s,.05,8)}),step:.05,precision:2})]}),e&&o.jsxs(o.Fragment,{children:[o.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:5,fontSize:11},children:["Lighting intensity",o.jsx(b,{value:t.intensity,onChange:s=>r({...t,intensity:v(s,0,8)}),step:.05,precision:2})]}),o.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:5,fontSize:11},children:["Rotation",o.jsx(b,{value:t.rotation,onChange:s=>r({...t,rotation:s%360}),step:1,precision:0})]}),o.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:5,fontSize:11},children:["Background blur",o.jsx(b,{value:t.blur,onChange:s=>r({...t,blur:v(s,0,1)}),step:.05,precision:2})]})]}),o.jsx("div",{style:{color:y.content.muted,fontSize:10,lineHeight:1.45},children:"Preview controls are session-only. Bind the image, orientation, and accepted intensity in the owning scene source."})]})}function te({documentId:e,assetPath:t,active:r=!0}){const[s,p]=f.useState(0),[n,a]=f.useState(null),[c,l]=f.useState(null),[i,d]=f.useState({exposure:1,intensity:1,rotation:0,blur:0}),m=f.useRef(i);m.current=i,f.useEffect(()=>{if(r)return M(t,()=>p(g=>g+1))},[r,t]),f.useEffect(()=>{if(!r)return;let g=!1,u=null;return a(null),l(null),K(t).then(h=>{if(u=h,g){h.texture.dispose();return}a(h)},h=>{g||l(h instanceof Error?h.message:String(h))}),()=>{g=!0,u?.texture.dispose()}},[r,t,s]);const x=f.useMemo(()=>[{id:"environment-image",title:"Environment Image",icon:C,order:k,body:{kind:"custom",...n?{data:{format:n.format,width:n.width,height:n.height,panorama:n.panorama}}:{},render:()=>o.jsxs("div",{style:{display:"grid",gridTemplateColumns:"auto 1fr",gap:"6px 10px"},children:[o.jsx("span",{style:{color:y.content.muted},children:"Format"}),o.jsx("span",{children:n?.format??"—"}),o.jsx("span",{style:{color:y.content.muted},children:"Resolution"}),o.jsx("span",{children:n?`${n.width} × ${n.height}`:"—"}),o.jsx("span",{style:{color:y.content.muted},children:"Projection"}),o.jsx("span",{children:n?.panorama?"2:1 equirectangular":"Flat image"})]})}},{id:"environment-preview-settings",title:"Preview",icon:z,order:D,body:{kind:"custom",data:{...i},render:()=>o.jsx(V,{panorama:n?.panorama??!1,settings:i,onChange:d})}}],[n,i]),w=U(t);return c?o.jsx(R,{documentId:e,active:r,type:"environment image",title:w,status:"HDR image unavailable",children:o.jsx("div",{role:"alert",style:{padding:20,color:y.semantic.danger},children:c})}):n?o.jsx(R,{documentId:e,active:r,type:"environment image",title:w,sections:x,status:`${n.format} · ${n.width} × ${n.height}`,fill:!0,children:o.jsxs("div",{style:{position:"relative",width:"100%",height:"100%",minHeight:0},children:[o.jsx(J,{image:n,settingsRef:m}),o.jsx("div",{style:{position:"absolute",left:12,bottom:12,padding:"4px 7px",borderRadius:4,background:"rgba(12,14,20,0.72)",color:"#f2f4f8",fontSize:10,pointerEvents:"none"},children:n.panorama?"Drag to orbit · wheel to frame":"Non-2:1 image · flat preview"})]})}):o.jsx(R,{documentId:e,active:r,type:"environment image",title:w,status:"Loading HDR image",children:o.jsx("div",{style:{padding:20,color:y.content.muted},children:"Loading environment…"})})}export{te as EnvironmentAssetDocument};
|