@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.
Files changed (888) hide show
  1. package/BUNDLED_NOTICES +232 -1964
  2. package/LICENSE +2 -3
  3. package/LICENSE-BLENDER +9 -8
  4. package/NOTICE +8 -3
  5. package/README.md +39 -30
  6. package/dist/.vite/manifest.json +1215 -4338
  7. package/dist/assets/AudioViewer-B5pkIGXS.js +1 -0
  8. package/dist/assets/ImageViewer-BPVLEEQ2.js +1 -0
  9. package/dist/assets/JsonAssetDocument-DuVW9del.js +2 -0
  10. package/dist/assets/ProjectAuthoringBootstrap-CZJz4Svb.js +2 -0
  11. package/dist/assets/SourceAssetViewer-LwHBW53R.js +1 -0
  12. package/dist/assets/VideoViewer-Bfjjp4zH.js +1 -0
  13. package/dist/assets/client-BLXKEWrR.js +25 -0
  14. package/dist/assets/index-BKjLHm6K.js +483 -0
  15. package/dist/assets/index-CJcVFJ-l.css +1 -0
  16. package/dist/assets/product-CaIfLQVS.js +1 -0
  17. package/dist/assets/story-capture-C3xmgE62.js +1 -0
  18. package/dist/assets/volter-sdk-DT0xmh2J.js +1407 -0
  19. package/dist/assets/volter-sdk-activation-events-B-WERmWU.js +1 -0
  20. package/dist/assets/volter-sdk-active-project-DvEsy8Q6.js +1 -0
  21. package/dist/assets/volter-sdk-adapter-editor-config-CQ5V6W-o.js +1 -0
  22. package/dist/assets/volter-sdk-animation-animation-clock-Cy7j_2qF.js +1 -0
  23. package/dist/assets/volter-sdk-animation-stage-transport-DoUDq6Gb.js +1 -0
  24. package/dist/assets/volter-sdk-api-base-Dr1bx5e0.js +1 -0
  25. package/dist/assets/volter-sdk-api-project-open-D4nPvIPU.js +1 -0
  26. package/dist/assets/volter-sdk-api-project-source-DoO7WBwQ.js +1 -0
  27. package/dist/assets/volter-sdk-api-settings-BEHgO5wf.js +1 -0
  28. package/dist/assets/volter-sdk-asset-capabilities-CGkNwaAe.js +1 -0
  29. package/dist/assets/volter-sdk-asset-document-write-policy-CzWM1HhK.js +1 -0
  30. package/dist/assets/volter-sdk-asset-editor-context-BkSK1vL1.js +1 -0
  31. package/dist/assets/volter-sdk-asset-thumbnails-zSmJgI_x.js +1 -0
  32. package/dist/assets/volter-sdk-asset-viewers-B-ICvlkR.js +1 -0
  33. package/dist/assets/volter-sdk-asset-workflow-project-content-C6Ow0R-F.js +1 -0
  34. package/dist/assets/volter-sdk-authoring-active-adapter-CKuWwxgH.js +1 -0
  35. package/dist/assets/volter-sdk-authoring-boundary-authoring-adapter-DTwFKBkS.js +1 -0
  36. package/dist/assets/volter-sdk-authoring-composite-authoring-adapter-iRSbSHpV.js +1 -0
  37. package/dist/assets/volter-sdk-authoring-consumer-actions-DK9-B-wg.js +1 -0
  38. package/dist/assets/volter-sdk-authoring-design-time-mount-registry-BQnWcBVe.js +1 -0
  39. package/dist/assets/volter-sdk-authoring-design-time-roots-BKSmkD7_.js +1 -0
  40. package/dist/assets/volter-sdk-authoring-layered-pick-C-YvuxEG.js +1 -0
  41. package/dist/assets/volter-sdk-authoring-no-authoring-adapter-Cv9DD6G0.js +1 -0
  42. package/dist/assets/volter-sdk-authoring-panel-authoring-BLOrFs8L.js +1 -0
  43. package/dist/assets/volter-sdk-authoring-react-design-canvas-style-Dr9i31o5.js +1 -0
  44. package/dist/assets/volter-sdk-authoring-react-story-board-BlCQQM-8.js +1 -0
  45. package/dist/assets/volter-sdk-authoring-seam-evidence-CjetY_ZG.js +1 -0
  46. package/dist/assets/volter-sdk-authoring-selection-scope-BxmbC71H.js +1 -0
  47. package/dist/assets/volter-sdk-authoring-shell-document-ops-DDb8oGx9.js +1 -0
  48. package/dist/assets/volter-sdk-authoring-stage-root-B50LLhnJ.js +1 -0
  49. package/dist/assets/volter-sdk-authoring-story-board-chrome-fit-BVV9fbcw.js +1 -0
  50. package/dist/assets/volter-sdk-authoring-viewport-tool-context-cQafPSkT.js +1 -0
  51. package/dist/assets/volter-sdk-authoring-viewport-tool-owner-BppqL4f_.js +1 -0
  52. package/dist/assets/volter-sdk-authoring-world-session-state-BlpdiKod.js +1 -0
  53. package/dist/assets/volter-sdk-bitmap-label-BbtGPWgP.js +1 -0
  54. package/dist/assets/volter-sdk-breakpoint-state-DCFuSvgm.js +1 -0
  55. package/dist/assets/volter-sdk-bytes-codec-CrNeVT4e.js +1 -0
  56. package/dist/assets/volter-sdk-cancellation-reason-ByOH3mlF.js +1 -0
  57. package/dist/assets/volter-sdk-canvas-frames-BU8Rqr4J.js +1 -0
  58. package/dist/assets/volter-sdk-capture-size-D4cNT2XC.js +1 -0
  59. package/dist/assets/volter-sdk-chrome-registry-qHUiDauw.js +1 -0
  60. package/dist/assets/volter-sdk-command-result-text-2wzEhQ5t.js +1 -0
  61. package/dist/assets/volter-sdk-commands-C4RgHEOa.js +1 -0
  62. package/dist/assets/volter-sdk-component-board-registry-6gFZBkTP.js +1 -0
  63. package/dist/assets/volter-sdk-components-AssetEditorShell-CQVLedvW.js +1 -0
  64. package/dist/assets/volter-sdk-components-InspectorCanvasPreview-CN5ROhNT.js +1 -0
  65. package/dist/assets/volter-sdk-components-SurfaceStateOverlay-Cc9Ov1Ol.js +1 -0
  66. package/dist/assets/volter-sdk-components-Toolbar-ZoV9Yq_A.js +1 -0
  67. package/dist/assets/volter-sdk-components-TransientHint-BML2V3uu.js +1 -0
  68. package/dist/assets/volter-sdk-components-inspector-preview-section-BhDjhUyz.js +1 -0
  69. package/dist/assets/volter-sdk-components-use-after-paint-BVSO4qjV.js +1 -0
  70. package/dist/assets/volter-sdk-components-workspace-history-CThvGfsY.js +1 -0
  71. package/dist/assets/volter-sdk-content-entry-source-registry-CJLVq3tC.js +1 -0
  72. package/dist/assets/volter-sdk-contribution-surfaces-CeEDmriM.js +1 -0
  73. package/dist/assets/volter-sdk-contributions-x6j41XZp.js +1 -0
  74. package/dist/assets/volter-sdk-coverage-design-time-surfaces-D-tNGazo.js +1 -0
  75. package/dist/assets/volter-sdk-creation-site-registry-64gyrZPD.js +1 -0
  76. package/dist/assets/volter-sdk-css-numeric-style-CXeWqAoG.js +1 -0
  77. package/dist/assets/volter-sdk-declared-tools-BAzHxyUW.js +1 -0
  78. package/dist/assets/volter-sdk-document-areas-4DXjy0el.js +1 -0
  79. package/dist/assets/volter-sdk-document-layer-B4VYMPZ9.js +1 -0
  80. package/dist/assets/volter-sdk-document-open-registry-BLDMaEoN.js +1 -0
  81. package/dist/assets/volter-sdk-document-play-extension-Dv3fyS6K.js +1 -0
  82. package/dist/assets/volter-sdk-document-probe-drBhAyza.js +1 -0
  83. package/dist/assets/volter-sdk-document-stage-sessions-CtI9anAf.js +1 -0
  84. package/dist/assets/volter-sdk-document-viewports-BO0N7VyN.js +1 -0
  85. package/dist/assets/volter-sdk-editor-commands-BJ9Otxzu.js +1 -0
  86. package/dist/assets/volter-sdk-editor-console-BaGgfWmH.js +1 -0
  87. package/dist/assets/volter-sdk-editor-document-probe-D0ZhaXHx.js +1 -0
  88. package/dist/assets/volter-sdk-editor-mode-B07FDozS.js +1 -0
  89. package/dist/assets/volter-sdk-editor-runtime-D00Du7hG.js +1 -0
  90. package/dist/assets/volter-sdk-editor-server-response-C6kOPAsW.js +1 -0
  91. package/dist/assets/volter-sdk-editor-session-attribution-CggpIFb4.js +1 -0
  92. package/dist/assets/volter-sdk-editor-view-DEMsxlaT.js +1 -0
  93. package/dist/assets/volter-sdk-environment-images-OQtFG1kA.js +1 -0
  94. package/dist/assets/volter-sdk-extension-script-DanTHcyo.js +1 -0
  95. package/dist/assets/volter-sdk-eyedropper-session-BfVXtjzc.js +1 -0
  96. package/dist/assets/volter-sdk-files-file-provider-CXL6oCMd.js +1 -0
  97. package/dist/assets/volter-sdk-files-project-files-SBAE37py.js +1 -0
  98. package/dist/assets/volter-sdk-framed-document-capture-7TnE8pn1.js +1 -0
  99. package/dist/assets/volter-sdk-framed-document-driver-C0K3-SRt.js +1 -0
  100. package/dist/assets/volter-sdk-hierarchy-component-marks-BmJEMvvO.js +1 -0
  101. package/dist/assets/volter-sdk-hierarchy-kind-icon-CrwdpecY.js +1 -0
  102. package/dist/assets/volter-sdk-hierarchy-node-rows-FcK7_ULi.js +1 -0
  103. package/dist/assets/volter-sdk-hierarchy-projection-CKzUOZUa.js +1 -0
  104. package/dist/assets/volter-sdk-hierarchy-row-media-Czg40Ddi.js +1 -0
  105. package/dist/assets/volter-sdk-hierarchy-row-model-BGzmcywF.js +1 -0
  106. package/dist/assets/volter-sdk-hierarchy-rows-VAI0psTR.js +1 -0
  107. package/dist/assets/volter-sdk-hierarchy-walk-CaVqG7v2.js +1 -0
  108. package/dist/assets/volter-sdk-history-history-delegate-DH_xBvdh.js +1 -0
  109. package/dist/assets/volter-sdk-history-history-service-D0n0Gl5Z.js +1 -0
  110. package/dist/assets/volter-sdk-history-persistence-coordinator-CcywAFdm.js +1 -0
  111. package/dist/assets/volter-sdk-history-resource-registry-DMTlnwGv.js +1 -0
  112. package/dist/assets/volter-sdk-history-snapshot-store-BVh1DtBp.js +1 -0
  113. package/dist/assets/volter-sdk-history-source-history-backend-ulJ-65tX.js +1 -0
  114. package/dist/assets/volter-sdk-hmr-registration-group-DvMQVKyO.js +1 -0
  115. package/dist/assets/volter-sdk-hmr-stable-react-context-BMVr5YVk.js +1 -0
  116. package/dist/assets/volter-sdk-host-D765Py2w.js +1 -0
  117. package/dist/assets/volter-sdk-hotkeys-TesTKdAZ.js +1 -0
  118. package/dist/assets/volter-sdk-index-BABXozHr.js +1 -0
  119. package/dist/assets/volter-sdk-inference-diagnostics-CsDbQ0M5.js +1 -0
  120. package/dist/assets/volter-sdk-inspection-document-subject-BMRD77Va.js +1 -0
  121. package/dist/assets/volter-sdk-inspection-group-icons-Wpz-YhkE.js +1 -0
  122. package/dist/assets/volter-sdk-inspection-model-BVOyStdc.js +1 -0
  123. package/dist/assets/volter-sdk-inspection-node-media-B8AL8_3F.js +1 -0
  124. package/dist/assets/volter-sdk-inspection-null-subject-d5bQZCbS.js +1 -0
  125. package/dist/assets/volter-sdk-inspector-property-grouping-BqrZkwo4.js +1 -0
  126. package/dist/assets/volter-sdk-inspector-section-registry-C6U15zvC.js +1 -0
  127. package/dist/assets/volter-sdk-js-heap-CcOnY0kf.js +1 -0
  128. package/dist/assets/volter-sdk-keymap-presets-CSM-jVcZ.js +1 -0
  129. package/dist/assets/volter-sdk-layout-arrangements-DHA3uifx.js +1 -0
  130. package/dist/assets/volter-sdk-layouts-4v9ECCn9.js +1 -0
  131. package/dist/assets/volter-sdk-light-explorer-model-CPuZjpiR.js +1 -0
  132. package/dist/assets/volter-sdk-live-seam-evidence-B_RyDaOp.js +1 -0
  133. package/dist/assets/volter-sdk-live-session-registry-C6gHroaH.js +1 -0
  134. package/dist/assets/volter-sdk-manifest-project-CVVUDDuL.js +1 -0
  135. package/dist/assets/volter-sdk-mount-css-scope-DaJoEo3v.js +1 -0
  136. package/dist/assets/volter-sdk-mount-failure-report-Cm92oiGJ.js +1 -0
  137. package/dist/assets/volter-sdk-native-selection-style-Bp4IBnA4.js +1 -0
  138. package/dist/assets/volter-sdk-photograph-notice-C6_gZGpW.js +1 -0
  139. package/dist/assets/volter-sdk-play-camera-flight-SwlYhOxW.js +1 -0
  140. package/dist/assets/volter-sdk-product-command-G8kKVJ-i.js +1 -0
  141. package/dist/assets/volter-sdk-progress-4GGmPvZn.js +1 -0
  142. package/dist/assets/volter-sdk-project-module-changes-DIrDIHeD.js +1 -0
  143. package/dist/assets/volter-sdk-project-module-url-BuAUWpus.js +1 -0
  144. package/dist/assets/volter-sdk-project-output-roots-BON7FOwQ.js +1 -0
  145. package/dist/assets/volter-sdk-project-tab-census-CO06UOh-.js +1 -0
  146. package/dist/assets/volter-sdk-renderer-resource-counts-2kLiD8_S.js +1 -0
  147. package/dist/assets/volter-sdk-scoped-project-css-DA63CYkM.js +1 -0
  148. package/dist/assets/volter-sdk-selection-CSUq7EiY.js +1 -0
  149. package/dist/assets/volter-sdk-served-url-B_MypeId.js +1 -0
  150. package/dist/assets/volter-sdk-settings-settings-provider-CJuWxTB5.js +1 -0
  151. package/dist/assets/volter-sdk-settings-store-CEFKDj0h.js +1 -0
  152. package/dist/assets/volter-sdk-shell-store-Cl4sX9p4.js +1 -0
  153. package/dist/assets/volter-sdk-shell-store-door-DGjybg0J.js +1 -0
  154. package/dist/assets/volter-sdk-source-conflict-CV8Gk053.js +1 -0
  155. package/dist/assets/volter-sdk-stage-context-Cb0SaYhi.js +1 -0
  156. package/dist/assets/volter-sdk-stage-invalidation-VlBciYA0.js +1 -0
  157. package/dist/assets/volter-sdk-stage-store-registry-BpIy_QKq.js +1 -0
  158. package/dist/assets/volter-sdk-startup-failure-C_8H4xuP.js +1 -0
  159. package/dist/assets/volter-sdk-stories-StoryPreviewMount-BUX42gIR.js +1 -0
  160. package/dist/assets/volter-sdk-stories-compose-project-stories-CkSd4Si5.js +1 -0
  161. package/dist/assets/volter-sdk-stories-scope-Dndn7MD8.js +1 -0
  162. package/dist/assets/volter-sdk-stories-story-declared-medium-Byi4XWeJ.js +1 -0
  163. package/dist/assets/volter-sdk-stories-story-dom-runtime-BS1VPvJ6.js +1 -0
  164. package/dist/assets/volter-sdk-stories-story-grouping-CpNh4cUf.js +1 -0
  165. package/dist/assets/volter-sdk-story-document-openers-Ba5jQqay.js +1 -0
  166. package/dist/assets/volter-sdk-surface-state-BhQ45ars.js +1 -0
  167. package/dist/assets/volter-sdk-tab-census-D0r0s37y.js +1 -0
  168. package/dist/assets/volter-sdk-tool-contribution-convention-JCXL6f2w.js +1 -0
  169. package/dist/assets/volter-sdk-transform-mode-request-Cwk_Kyty.js +1 -0
  170. package/dist/assets/volter-sdk-transient-hint-BOfFzAV8.js +1 -0
  171. package/dist/assets/volter-sdk-types-CkT8l5N_.js +1 -0
  172. package/dist/assets/volter-sdk-ui-source-file-region-resolver-Cfza3eEl.js +1 -0
  173. package/dist/assets/volter-sdk-ui-source-inspect-CEjmAN75.js +1 -0
  174. package/dist/assets/volter-sdk-ui-source-source-write-backend-0njgRdI6.js +1 -0
  175. package/dist/assets/volter-sdk-ui-source-tier-source-write-backend-CpsxorYU.js +1 -0
  176. package/dist/assets/volter-sdk-viewport-activation-timings-B3hRTu3A.js +1 -0
  177. package/dist/assets/volter-sdk-viewport-editor-controls-DDBd-VqO.js +1 -0
  178. package/dist/assets/volter-sdk-viewport-presentation-DRhiAH1h.js +1 -0
  179. package/dist/assets/volter-sdk-volter-contributions-nlGXjgJZ.js +1 -0
  180. package/dist/assets/volter-sdk-wait-until-CMvYQmO8.js +1 -0
  181. package/dist/assets/volter-sdk-widgets-design-system-BJOyO8sO.js +1 -0
  182. package/dist/assets/volter-sdk-widgets-editor-appearance-eVtkxsIm.js +1 -0
  183. package/dist/assets/volter-sdk-widgets-editor-material-BoQP_5SK.js +1 -0
  184. package/dist/assets/volter-sdk-widgets-icon-set-registry-CP0D74kc.js +1 -0
  185. package/dist/assets/volter-sdk-widgets-index-De34FpYu.js +1 -0
  186. package/dist/assets/volter-sdk-widgets-inspector-widgets-AlignmentGrid-_GjMjIGb.js +1 -0
  187. package/dist/assets/volter-sdk-widgets-inspector-widgets-AssetSlotPicker-B7vN7BEd.js +1 -0
  188. package/dist/assets/volter-sdk-widgets-inspector-widgets-BorderEditor-E2J8cpyT.js +1 -0
  189. package/dist/assets/volter-sdk-widgets-inspector-widgets-ColorPicker-D6TERGKs.js +1 -0
  190. package/dist/assets/volter-sdk-widgets-inspector-widgets-CurveEditor-CXR8n-CA.js +1 -0
  191. package/dist/assets/volter-sdk-widgets-inspector-widgets-FilterEditor-CDvfWY4Q.js +1 -0
  192. package/dist/assets/volter-sdk-widgets-inspector-widgets-FontPicker-BgpW8FW8.js +1 -0
  193. package/dist/assets/volter-sdk-widgets-inspector-widgets-GradientEditor-DOOBkXjY.js +1 -0
  194. package/dist/assets/volter-sdk-widgets-inspector-widgets-ScrubbableInput-1NXWR_gB.js +1 -0
  195. package/dist/assets/volter-sdk-widgets-inspector-widgets-ShadowEditor-Cd2-HwFn.js +1 -0
  196. package/dist/assets/volter-sdk-widgets-inspector-widgets-color-utils-C4HuSjFu.js +1 -0
  197. package/dist/assets/volter-sdk-widgets-inspector-widgets-curve-utils-DUU2CCtc.js +1 -0
  198. package/dist/assets/volter-sdk-widgets-inspector-widgets-index-D5kwrOUQ.js +1 -0
  199. package/dist/assets/volter-sdk-widgets-inspector-widgets-shared-CkFN2SUn.js +1 -0
  200. package/dist/assets/volter-sdk-widgets-interactive-edit-scope-DynpKMMZ.js +1 -0
  201. package/dist/assets/volter-sdk-widgets-palette-colors-DhL1I42R.js +1 -0
  202. package/dist/assets/volter-sdk-widgets-patterns-Dialog-EUtcZi0Y.js +1 -0
  203. package/dist/assets/volter-sdk-widgets-patterns-Fields-Bl_eaBej.js +1 -0
  204. package/dist/assets/volter-sdk-widgets-patterns-List--NE_1N5-.js +1 -0
  205. package/dist/assets/volter-sdk-widgets-patterns-StateSurface-BHXpv7qi.js +1 -0
  206. package/dist/assets/volter-sdk-widgets-patterns-Surfaces-BdKa5HGV.js +1 -0
  207. package/dist/assets/volter-sdk-widgets-patterns-Tabs-sFV7f1UP.js +1 -0
  208. package/dist/assets/volter-sdk-widgets-patterns-Toolbar-CIr5Cs49.js +1 -0
  209. package/dist/assets/volter-sdk-widgets-patterns-Tree-C2YHfddf.js +1 -0
  210. package/dist/assets/volter-sdk-widgets-primitives-AnchoredMenu-DCclspnW.js +1 -0
  211. package/dist/assets/volter-sdk-widgets-primitives-Button-B0YxR4ea.js +1 -0
  212. package/dist/assets/volter-sdk-widgets-primitives-ColorInput-B1_SLTuc.js +1 -0
  213. package/dist/assets/volter-sdk-widgets-primitives-DraftTextInput-CpHzPdt8.js +1 -0
  214. package/dist/assets/volter-sdk-widgets-primitives-EditorIcon-Dw4knhya.js +1 -0
  215. package/dist/assets/volter-sdk-widgets-primitives-FormControls-BAbRanmE.js +1 -0
  216. package/dist/assets/volter-sdk-widgets-primitives-HoverPreview-Cj7jKNd4.js +1 -0
  217. package/dist/assets/volter-sdk-widgets-primitives-JsonInput-C0DCI5bE.js +1 -0
  218. package/dist/assets/volter-sdk-widgets-primitives-Layout-gT4Z6mtt.js +1 -0
  219. package/dist/assets/volter-sdk-widgets-primitives-Menu-9EESAp9m.js +1 -0
  220. package/dist/assets/volter-sdk-widgets-primitives-NumberInput-Dk-5zqJ8.js +1 -0
  221. package/dist/assets/volter-sdk-widgets-primitives-Panel-BQWJF-Pb.js +1 -0
  222. package/dist/assets/volter-sdk-widgets-primitives-SectionHeader-DXvmafCK.js +1 -0
  223. package/dist/assets/volter-sdk-widgets-primitives-Text-yBrdWK2w.js +1 -0
  224. package/dist/assets/volter-sdk-widgets-primitives-ThemeRootPortal-CRhefpUL.js +1 -0
  225. package/dist/assets/volter-sdk-widgets-primitives-Tooltip-D5Kcb-ZC.js +1 -0
  226. package/dist/assets/volter-sdk-widgets-primitives-Vec3Input-DiG6PEIe.js +1 -0
  227. package/dist/assets/volter-sdk-widgets-primitives-clamp-to-viewport-DhnSxXVK.js +1 -0
  228. package/dist/assets/volter-sdk-widgets-primitives-editor-icons-e65mgyAk.js +1 -0
  229. package/dist/assets/volter-sdk-widgets-primitives-panel-header-styles-BVL0mN8g.js +1 -0
  230. package/dist/assets/volter-sdk-widgets-theme-C-_RU9Ov.js +1 -0
  231. package/dist/assets/volter-sdk-widgets-z-index-CrJJXeKL.js +1 -0
  232. package/dist/assets/volter-sdk-worker-call-metrics-BTfmngck.js +1 -0
  233. package/dist/assets/volter-sdk-workspace-core-utilities-DtHGK9PF.js +1 -0
  234. package/dist/assets/volter-sdk-workspace-document-ids-COULA7c6.js +1 -0
  235. package/dist/assets/volter-sdk-workspace-document-registry-6m5csVP7.js +1 -0
  236. package/dist/assets/volter-sdk-workspace-document-restore-M8ifJMou.js +1 -0
  237. package/dist/assets/volter-sdk-workspace-host-commands-8Qzej--P.js +1 -0
  238. package/dist/assets/volter-sdk-workspace-static-panels-Ckk7qUuS.js +1 -0
  239. package/dist/assets/volter-sdk-workspace-status-registry-BdU0dZAt.js +1 -0
  240. package/dist/assets/volter-sdk-workspace-utility-registry-BHxymD2l.js +1 -0
  241. package/dist/assets/volter-sdk-world-canvas-viewport-state-CHO8s9gE.js +1 -0
  242. package/dist/assets/volter-sdk-world-pan-state-C-9xgzAh.js +1 -0
  243. package/dist/assets/volter-sdk-write-pipe-CJHg7J4i.js +1 -0
  244. package/dist/assets/volter-shared-fontawesome-BEv9WEZj.js +1 -0
  245. package/dist/assets/volter-shared-jsx-dev-runtime-domcKDU3.js +1 -0
  246. package/dist/assets/volter-shared-jsx-runtime-Cu7pVW-1.js +1 -0
  247. package/dist/assets/volter-shared-react-BLHga76C.js +1 -0
  248. package/dist/assets/volter-shared-react-dom-client-vi6WsWu2.js +1 -0
  249. package/dist/assets/volter-shared-react-dom-kzJVGsQd.js +1 -0
  250. package/dist/assets/volter-shared-three-BWbOWtM5.js +4220 -0
  251. package/dist/assets/volter-shared-three-core-DEsIwtOu.js +9 -0
  252. package/dist/volter-shared-modules.json +227 -0
  253. package/dist/volter-shared-react.json +6 -6
  254. package/dist/volter-shared-three.json +2 -1
  255. package/dist-node/cli.js +2962 -6245
  256. package/dist-node/create.js +350 -278
  257. package/package.json +51 -31
  258. package/src/index.ts +4 -6
  259. package/src/product-id.d.ts +4 -0
  260. package/src/styles/maya.style.ts +14 -0
  261. package/src/styles/substance.style.ts +15 -0
  262. package/starter/AGENTS.md +216 -156
  263. package/starter/cube.py +3 -9
  264. package/starter/film/boards/title.png +0 -0
  265. package/starter/film/cut.json +12 -0
  266. package/starter/film/film.json +7 -0
  267. package/starter/film/music/.gitkeep +0 -0
  268. package/starter/film/music.json +4 -0
  269. package/starter/film/script.fountain +16 -0
  270. package/starter/film/shots.json +26 -0
  271. package/starter/film/sounds/whoosh.wav +0 -0
  272. package/starter/film/src/graphics/title.css +33 -0
  273. package/starter/film/src/graphics/title.stories.tsx +6 -0
  274. package/starter/film/src/graphics/title.tsx +14 -0
  275. package/starter/film/src/models/opening.blend +0 -0
  276. package/starter/film/src/models/opening.py +87 -0
  277. package/starter/film/story.md +14 -0
  278. package/starter/film/takes/.gitkeep +0 -0
  279. package/starter/film/takes.json +4 -0
  280. package/starter/film-skills/film-cut/SKILL.md +31 -0
  281. package/starter/film-skills/film-shots/SKILL.md +32 -0
  282. package/starter/film-skills/film-story/SKILL.md +19 -0
  283. package/starter/game/levels/MainLevel.tsx +24 -0
  284. package/starter/game/prefabs/ground/Ground.tsx +24 -0
  285. package/starter/game/prefabs/ground/ground.blend +0 -0
  286. package/starter/game/prefabs/ground/ground.glb +0 -0
  287. package/starter/game/prefabs/ground/ground.py +106 -0
  288. package/starter/package.json +3 -2
  289. package/starter/sounds/mix.json +10 -0
  290. package/dist/assets/BVHLoader-V9f-EnYd.js +0 -1
  291. package/dist/assets/ColladaLoader-Cp-E7iiV.js +0 -3
  292. package/dist/assets/EntityModelDocument-DxdGehCz.js +0 -1
  293. package/dist/assets/EnvironmentAssetDocument-DSTdQdSt.js +0 -1
  294. package/dist/assets/FBXLoader-CpZqH4xx.js +0 -1
  295. package/dist/assets/InspectorObjectPreview-De6zT2B7.js +0 -1
  296. package/dist/assets/LiveModuleDocument-Do5YRpzB.js +0 -2
  297. package/dist/assets/LutAssetDocument-BjZgLVjR.js +0 -1
  298. package/dist/assets/MTLLoader-JK_iLZsm.js +0 -2
  299. package/dist/assets/ModelAssetDocument-Bb5UYcrj.js +0 -1
  300. package/dist/assets/NonThreeAuthoringBootstrap-CVri610U.js +0 -1
  301. package/dist/assets/OBJLoader-eGO6iVw8.js +0 -5
  302. package/dist/assets/Object3DDocumentToolbar-C7HT5nHi.js +0 -1
  303. package/dist/assets/Object3DPreview-CaOEIIdC.js +0 -2
  304. package/dist/assets/OrbitControls-DrHRrSFA.js +0 -1
  305. package/dist/assets/PLYLoader-BCSN1tYw.js +0 -2
  306. package/dist/assets/QuarksAssetDocument-DzS5h2Bc.js +0 -2
  307. package/dist/assets/RectAreaLightUniformsLib-HqHjURQQ.js +0 -1
  308. package/dist/assets/STLLoader-vhCvZeOF.js +0 -1
  309. package/dist/assets/ShaderAssetDocument-DYXX7aw5.js +0 -1
  310. package/dist/assets/StageHost-DVnv4TcF.js +0 -1179
  311. package/dist/assets/TDSLoader-DbUHSEO9.js +0 -1
  312. package/dist/assets/ToolObject3DPreview-Dad57oap.js +0 -1
  313. package/dist/assets/ViewportShadingMenu-Bl8IlWGh.js +0 -1
  314. package/dist/assets/animation-mixers.service-qJ4SNabd.js +0 -1
  315. package/dist/assets/animation-timeline.utility-wNtZO_cS.js +0 -1
  316. package/dist/assets/anthropic-DwpKRVGM.svg +0 -1
  317. package/dist/assets/asset-preview-OYr2sUbO.js +0 -4
  318. package/dist/assets/blender-display-shaders-BpnqnkG8.lut +0 -0
  319. package/dist/assets/blender-emscripten-engine-CTeOMKcG.js +0 -2
  320. package/dist/assets/blender-motion-worker-CtT2cV3V.js +0 -1
  321. package/dist/assets/blender-node-editor.document-pEhp9MZH.js +0 -1
  322. package/dist/assets/blender-properties-model-B7O1AR0g.js +0 -1
  323. package/dist/assets/blender-properties-tab-CBdCQseg.js +0 -3
  324. package/dist/assets/blender-runtime-host-swgDAdoy.js +0 -7221
  325. package/dist/assets/blender-runtime.document-BbtLLRrN.js +0 -13
  326. package/dist/assets/blender-screenshot.menu-CD1Bg0Z-.js +0 -1
  327. package/dist/assets/blender-timeline.document-DT_mWXnn.js +0 -1
  328. package/dist/assets/blender-uv-editor.document-9j_SUkf7.js +0 -1
  329. package/dist/assets/blender-version.status-Z13Xgrj-.js +0 -1
  330. package/dist/assets/blender-wali-engine-kfyCxO_U.js +0 -2
  331. package/dist/assets/blender.command-zp1Oe3pY.js +0 -1
  332. package/dist/assets/blender.environment-CG-pC7sk.js +0 -1
  333. package/dist/assets/blender.keymap-BmOBRY7p.js +0 -1
  334. package/dist/assets/blender.status-MRiv-9Ju.js +0 -1
  335. package/dist/assets/blender.style--aBP5V1k.js +0 -1
  336. package/dist/assets/city-EkhAOo5s.exr +0 -0
  337. package/dist/assets/courtyard-DqlebbpC.exr +0 -0
  338. package/dist/assets/forest-P_CQY3b_.exr +0 -0
  339. package/dist/assets/icon-BkiLD9ed.png +0 -0
  340. package/dist/assets/index-C8BwtQGN.js +0 -952
  341. package/dist/assets/interior-Bo_lba15.exr +0 -0
  342. package/dist/assets/linear-resolve-Cuka7Ypb.js +0 -377
  343. package/dist/assets/live-mixers-B-bwLZ7c.js +0 -1
  344. package/dist/assets/model-inspection-DVE8f3Dj.js +0 -1
  345. package/dist/assets/model.layout-BpZE1W9V.js +0 -1
  346. package/dist/assets/models.finder-5z7xbsOu.js +0 -1
  347. package/dist/assets/night-CvV4Gybt.exr +0 -0
  348. package/dist/assets/object3d-document-session-registry-DDpmVmir.js +0 -2
  349. package/dist/assets/openai-DHNKzFtc.svg +0 -1
  350. package/dist/assets/output-pass-j4dAGrPY.js +0 -85
  351. package/dist/assets/play-live-BBkOuWQn.js +0 -1
  352. package/dist/assets/product-CUU4-nDZ.js +0 -14
  353. package/dist/assets/product-DPOIZgKM.css +0 -1
  354. package/dist/assets/properties-bone-constraints.inspector-D8CtPu9c.js +0 -1
  355. package/dist/assets/properties-bone.inspector-j9aNQrP9.js +0 -1
  356. package/dist/assets/properties-collection.inspector-CaMveBur.js +0 -1
  357. package/dist/assets/properties-constraints.inspector-DB9bBgqn.js +0 -1
  358. package/dist/assets/properties-data.inspector-C7dh_XTe.js +0 -1
  359. package/dist/assets/properties-material.inspector-DWC5NJkW.js +0 -1
  360. package/dist/assets/properties-modifiers.inspector-CBUxUSB0.js +0 -1
  361. package/dist/assets/properties-object.inspector-wvO8nuGD.js +0 -1
  362. package/dist/assets/properties-output.inspector-CFyAZn9F.js +0 -1
  363. package/dist/assets/properties-particles.inspector-zEaTW3U7.js +0 -1
  364. package/dist/assets/properties-physics.inspector-CO-4UZbX.js +0 -1
  365. package/dist/assets/properties-render.inspector-DoJ1BMKP.js +0 -1
  366. package/dist/assets/properties-scene.inspector-BOhaiC0_.js +0 -1
  367. package/dist/assets/properties-texture.inspector-1JoYUWiR.js +0 -1
  368. package/dist/assets/properties-view-layer.inspector-DuRkFWtq.js +0 -1
  369. package/dist/assets/properties-world.inspector-Csfv-x0A.js +0 -1
  370. package/dist/assets/react-18-Dh4gvPqw.js +0 -1
  371. package/dist/assets/regions-DWeEBnE2.js +0 -1
  372. package/dist/assets/sculpt.layout-D-K5cLw6.js +0 -1
  373. package/dist/assets/session-CvHLFvpx.js +0 -6056
  374. package/dist/assets/shading.layout-CZZHKBer.js +0 -1
  375. package/dist/assets/sky-precompute-worker-CPGW9t_C.js +0 -1
  376. package/dist/assets/spark.module-CTTm62aa.js +0 -12120
  377. package/dist/assets/stage-keyboard-BvTth28t.js +0 -1
  378. package/dist/assets/stage-overlay-set-Dt6IH1xC.js +0 -1
  379. package/dist/assets/stage-presence-markers-DszBO9B1.js +0 -1
  380. package/dist/assets/stage-transform-tools-D6H_SBLV.js +0 -1
  381. package/dist/assets/standard-viewport-dressing-BSYojdsQ.js +0 -24
  382. package/dist/assets/studio-CysTBGIb.exr +0 -0
  383. package/dist/assets/sunrise-Dj0psFrf.exr +0 -0
  384. package/dist/assets/sunset-Bw3x2Bot.exr +0 -0
  385. package/dist/assets/texture.layout-DASpHVht.js +0 -1
  386. package/dist/assets/three-integration.service-DvOyomjh.js +0 -2
  387. package/dist/assets/three.module-CtVjCPcj.js +0 -3840
  388. package/dist/assets/uv-editing.layout-A8RA-cbM.js +0 -1
  389. package/dist/assets/volter-sdk-account-fYMnFHfe.js +0 -1
  390. package/dist/assets/volter-sdk-client-JmBOIwGe.js +0 -1
  391. package/dist/assets/volter-sdk-contributions-l9HrPjwW.js +0 -1
  392. package/dist/assets/volter-sdk-css-numeric-style-ud28AcW3.js +0 -1
  393. package/dist/assets/volter-sdk-document-probe-C4RhslOI.js +0 -1
  394. package/dist/assets/volter-sdk-editor-view-B_mScT1w.js +0 -1
  395. package/dist/assets/volter-sdk-host-B9QOINsX.js +0 -1
  396. package/dist/assets/volter-sdk-http-transport.browser-6a_cUtge.js +0 -1
  397. package/dist/assets/volter-sdk-index-DDdgpWqc.js +0 -1
  398. package/dist/assets/volter-sdk-kit-CapabilityCoverageSection-CRc93EXv.js +0 -1
  399. package/dist/assets/volter-sdk-kit-account-client-ByjTbat7.js +0 -1
  400. package/dist/assets/volter-sdk-kit-action-registry-J5l20B9X.js +0 -1
  401. package/dist/assets/volter-sdk-kit-active-product-BTHzjkrh.js +0 -1
  402. package/dist/assets/volter-sdk-kit-active-project-CgXmYhKx.js +0 -1
  403. package/dist/assets/volter-sdk-kit-adapter-editor-config-CcSGBUF1.js +0 -1
  404. package/dist/assets/volter-sdk-kit-adapter-module-CqkP49hA.js +0 -1
  405. package/dist/assets/volter-sdk-kit-adapter-observation-MWNd8Bmj.js +0 -1
  406. package/dist/assets/volter-sdk-kit-animation-animation-clock-C5QhnLuY.js +0 -1
  407. package/dist/assets/volter-sdk-kit-animation-stage-transport-DFbbJ80P.js +0 -1
  408. package/dist/assets/volter-sdk-kit-api-assets-Dtg4_1jX.js +0 -1
  409. package/dist/assets/volter-sdk-kit-api-base-De8oXkY8.js +0 -1
  410. package/dist/assets/volter-sdk-kit-api-build-Cgmw35Ng.js +0 -1
  411. package/dist/assets/volter-sdk-kit-api-logs-B1mQlcPQ.js +0 -1
  412. package/dist/assets/volter-sdk-kit-api-project-identity-DEZz1U5_.js +0 -1
  413. package/dist/assets/volter-sdk-kit-api-project-open-DuXZ6vyn.js +0 -1
  414. package/dist/assets/volter-sdk-kit-api-project-source-DMnPoTP2.js +0 -1
  415. package/dist/assets/volter-sdk-kit-api-project-state-6Lu0Vxdr.js +0 -1
  416. package/dist/assets/volter-sdk-kit-api-relay-BuCkenvE.js +0 -1
  417. package/dist/assets/volter-sdk-kit-api-settings-CkFO_pMP.js +0 -1
  418. package/dist/assets/volter-sdk-kit-api-themes-D5J6TiAR.js +0 -1
  419. package/dist/assets/volter-sdk-kit-api-worktrees-de1U7-9B.js +0 -1
  420. package/dist/assets/volter-sdk-kit-asset-capabilities-IBJRDoU_.js +0 -1
  421. package/dist/assets/volter-sdk-kit-asset-compare-core-qeWQI0-1.js +0 -1
  422. package/dist/assets/volter-sdk-kit-asset-editor-context-JZ2T8xhF.js +0 -1
  423. package/dist/assets/volter-sdk-kit-asset-events-wfq-jH9_.js +0 -1
  424. package/dist/assets/volter-sdk-kit-asset-inspector-actions-NlF3CeMC.js +0 -1
  425. package/dist/assets/volter-sdk-kit-asset-selection-BUXGqut1.js +0 -1
  426. package/dist/assets/volter-sdk-kit-asset-selection-viewer-registry-DNj4RggW.js +0 -1
  427. package/dist/assets/volter-sdk-kit-asset-thumbnails-CPp1sS_w.js +0 -1
  428. package/dist/assets/volter-sdk-kit-asset-viewers-PKilU3Lm.js +0 -1
  429. package/dist/assets/volter-sdk-kit-asset-workflow-asset-import-jobs-DHDfKVAJ.js +0 -1
  430. package/dist/assets/volter-sdk-kit-asset-workflow-asset-ledger-Ch0TDXil.js +0 -1
  431. package/dist/assets/volter-sdk-kit-asset-workflow-asset-ledger-backend-Cb0-daSo.js +0 -1
  432. package/dist/assets/volter-sdk-kit-asset-workflow-asset-materialization-report-Bznr7T6d.js +0 -1
  433. package/dist/assets/volter-sdk-kit-asset-workflow-asset-pack-manifest-BriZZqYC.js +0 -1
  434. package/dist/assets/volter-sdk-kit-asset-workflow-audio-preview-player-5K3HN4kg.js +0 -1
  435. package/dist/assets/volter-sdk-kit-asset-workflow-audio-waveform-F65PsmIZ.js +0 -1
  436. package/dist/assets/volter-sdk-kit-asset-workflow-cloud-asset-client-DzxVbaeb.js +0 -1
  437. package/dist/assets/volter-sdk-kit-asset-workflow-hosted-asset-materialization-B2Oxd31D.js +0 -1
  438. package/dist/assets/volter-sdk-kit-asset-workflow-image-view-scale-BmPO24SY.js +0 -1
  439. package/dist/assets/volter-sdk-kit-asset-workflow-ledger-write-lock-BPRq-xQf.js +0 -1
  440. package/dist/assets/volter-sdk-kit-asset-workflow-pixi-spritesheet-CM64IwuA.js +0 -1
  441. package/dist/assets/volter-sdk-kit-asset-workflow-preview-resource-lifetime-BIKxorKS.js +0 -1
  442. package/dist/assets/volter-sdk-kit-asset-workflow-project-asset-commands-7CNTmzBZ.js +0 -1
  443. package/dist/assets/volter-sdk-kit-asset-workflow-project-content-C3EJl866.js +0 -1
  444. package/dist/assets/volter-sdk-kit-asset-workflow-thumbnail-system-CQrbYiAp.js +0 -1
  445. package/dist/assets/volter-sdk-kit-authoring-active-adapter-BC9Cf4yx.js +0 -1
  446. package/dist/assets/volter-sdk-kit-authoring-active-systems-GZm33tOS.js +0 -1
  447. package/dist/assets/volter-sdk-kit-authoring-adapter-key-C4-d6xt1.js +0 -1
  448. package/dist/assets/volter-sdk-kit-authoring-authoring-asset-url-CEEw_XEg.js +0 -1
  449. package/dist/assets/volter-sdk-kit-authoring-bootstrap-state-BJsS0bnj.js +0 -1
  450. package/dist/assets/volter-sdk-kit-authoring-boundary-authoring-adapter-1NA63Idp.js +0 -1
  451. package/dist/assets/volter-sdk-kit-authoring-canvas-scene-guides-BlbGyg38.js +0 -1
  452. package/dist/assets/volter-sdk-kit-authoring-composite-authoring-adapter-D0FSf6DM.js +0 -1
  453. package/dist/assets/volter-sdk-kit-authoring-consumer-actions-J7MnHWK3.js +0 -1
  454. package/dist/assets/volter-sdk-kit-authoring-design-time-layers-CnLS2erF.js +0 -1
  455. package/dist/assets/volter-sdk-kit-authoring-design-time-mount-registry-BrmHkPuP.js +0 -1
  456. package/dist/assets/volter-sdk-kit-authoring-edit-mode-authoring-HQAxbCiB.js +0 -1
  457. package/dist/assets/volter-sdk-kit-authoring-empty-project-authoring-CdLSRvO0.js +0 -1
  458. package/dist/assets/volter-sdk-kit-authoring-instance-source-menu-EWM45v6y.js +0 -1
  459. package/dist/assets/volter-sdk-kit-authoring-layered-pick-BX3K3GR7.js +0 -1
  460. package/dist/assets/volter-sdk-kit-authoring-mounted-root-subjects-BGatqFLR.js +0 -1
  461. package/dist/assets/volter-sdk-kit-authoring-no-authoring-adapter-CerY6qmy.js +0 -1
  462. package/dist/assets/volter-sdk-kit-authoring-object3d-document-persistence-DxZ-V-ys.js +0 -1
  463. package/dist/assets/volter-sdk-kit-authoring-panel-authoring-Bbv7lJc5.js +0 -1
  464. package/dist/assets/volter-sdk-kit-authoring-project-authoring-session-C5rP-I6e.js +0 -1
  465. package/dist/assets/volter-sdk-kit-authoring-provenance-BNVk0DFH.js +0 -1
  466. package/dist/assets/volter-sdk-kit-authoring-react-canvas-navigation-BqUskgSb.js +0 -1
  467. package/dist/assets/volter-sdk-kit-authoring-react-design-canvas-style-DB8S6Vfi.js +0 -1
  468. package/dist/assets/volter-sdk-kit-authoring-react-story-board-M-VqCWKu.js +0 -1
  469. package/dist/assets/volter-sdk-kit-authoring-seam-evidence-Qbbz8M6t.js +0 -1
  470. package/dist/assets/volter-sdk-kit-authoring-selection-scope-CkblMrR8.js +0 -1
  471. package/dist/assets/volter-sdk-kit-authoring-shell-document-ops-B9Y9p91j.js +0 -1
  472. package/dist/assets/volter-sdk-kit-authoring-story-board-chrome-fit-7umaPaVS.js +0 -1
  473. package/dist/assets/volter-sdk-kit-authoring-three-root-M5Gj55-Z.js +0 -1
  474. package/dist/assets/volter-sdk-kit-authoring-viewport-tool-context-CH5NA-YI.js +0 -1
  475. package/dist/assets/volter-sdk-kit-authoring-viewport-tool-owner-CzTEMmzx.js +0 -1
  476. package/dist/assets/volter-sdk-kit-authoring-world-session-state-BjKbimsg.js +0 -1
  477. package/dist/assets/volter-sdk-kit-availability-tick-C7I6Zrut.js +0 -1
  478. package/dist/assets/volter-sdk-kit-bitmap-label-DPmffd8g.js +0 -1
  479. package/dist/assets/volter-sdk-kit-boot-routing-CaKypcBx.js +0 -1
  480. package/dist/assets/volter-sdk-kit-breakpoint-state-5m0qTYvY.js +0 -1
  481. package/dist/assets/volter-sdk-kit-build-identity-HQ0VWGG8.js +0 -1
  482. package/dist/assets/volter-sdk-kit-bytes-codec-BJDqylNg.js +0 -1
  483. package/dist/assets/volter-sdk-kit-cancellation-reason-B0z-IzQ9.js +0 -1
  484. package/dist/assets/volter-sdk-kit-canvas-frames-BtkS3lNe.js +0 -1
  485. package/dist/assets/volter-sdk-kit-capture-camera-pose-CUejcTcV.js +0 -1
  486. package/dist/assets/volter-sdk-kit-capture-size-Uyb3uqXA.js +0 -1
  487. package/dist/assets/volter-sdk-kit-chrome-registry-cc3AZlnV.js +0 -1
  488. package/dist/assets/volter-sdk-kit-chrome-slot-registry-C4g-na11.js +0 -1
  489. package/dist/assets/volter-sdk-kit-collaboration-client-Cd6918QC.js +0 -1
  490. package/dist/assets/volter-sdk-kit-collaboration-presence-qXC7JfS2.js +0 -1
  491. package/dist/assets/volter-sdk-kit-command-dispatch-D07Pn7pe.js +0 -1
  492. package/dist/assets/volter-sdk-kit-command-listener-Bm2sgP0i.js +0 -1
  493. package/dist/assets/volter-sdk-kit-command-registry-CJoVRu6V.js +0 -1
  494. package/dist/assets/volter-sdk-kit-component-board-registry-D7xm8cFr.js +0 -1
  495. package/dist/assets/volter-sdk-kit-component-states-registry-DtippeT3.js +0 -1
  496. package/dist/assets/volter-sdk-kit-components-AlignToolbar-BporX2iz.js +0 -1
  497. package/dist/assets/volter-sdk-kit-components-ApplicationMenus-DfmKRYtb.js +0 -1
  498. package/dist/assets/volter-sdk-kit-components-AssetEditorShell-B-_vx-Jb.js +0 -1
  499. package/dist/assets/volter-sdk-kit-components-AssetInspectorToolSection-CyEcoLKv.js +0 -1
  500. package/dist/assets/volter-sdk-kit-components-BoardRulers-CjoDr2Ak.js +0 -1
  501. package/dist/assets/volter-sdk-kit-components-CanvasAddNodeDialogs-Bz4W0Y2g.js +0 -1
  502. package/dist/assets/volter-sdk-kit-components-CanvasSceneViewport-Cyd5bYha.js +0 -1
  503. package/dist/assets/volter-sdk-kit-components-ChromeSlot-q_wsahlZ.js +0 -1
  504. package/dist/assets/volter-sdk-kit-components-CodeView-COOHbFef.js +0 -1
  505. package/dist/assets/volter-sdk-kit-components-CompactInspectorShell-F5yS9e4v.js +0 -1
  506. package/dist/assets/volter-sdk-kit-components-ConsolePanel-Dnnq15qj.js +0 -1
  507. package/dist/assets/volter-sdk-kit-components-GameplaySessionTimeline-CFCva8sQ.js +0 -1
  508. package/dist/assets/volter-sdk-kit-components-InspectionProjection-Cj0eqFPF.js +0 -1
  509. package/dist/assets/volter-sdk-kit-components-Inspector-DhnEEQ_5.js +0 -1
  510. package/dist/assets/volter-sdk-kit-components-InspectorCanvasPreview-ljsWq41X.js +0 -1
  511. package/dist/assets/volter-sdk-kit-components-InspectorFieldsSection-pUp0DKhG.js +0 -1
  512. package/dist/assets/volter-sdk-kit-components-InspectorStoriesSection-BJKmp0B3.js +0 -1
  513. package/dist/assets/volter-sdk-kit-components-InspectorToolSection-DBDxp3Ir.js +0 -1
  514. package/dist/assets/volter-sdk-kit-components-InspectorTransformSection-eGVZo2ph.js +0 -1
  515. package/dist/assets/volter-sdk-kit-components-LightExplorerPanel-jKqvAsdL.js +0 -1
  516. package/dist/assets/volter-sdk-kit-components-MediaProperties-DEn9gV9T.js +0 -1
  517. package/dist/assets/volter-sdk-kit-components-ProjectHeader-CtsMXibh.js +0 -1
  518. package/dist/assets/volter-sdk-kit-components-ReactCanvasControls-Bdu_gdRF.js +0 -1
  519. package/dist/assets/volter-sdk-kit-components-RootSelectionOverlay-8PYXBIYy.js +0 -1
  520. package/dist/assets/volter-sdk-kit-components-RootTextEditor-DFkpwNlX.js +0 -1
  521. package/dist/assets/volter-sdk-kit-components-SaveStatus-BP1Q1tfu.js +0 -1
  522. package/dist/assets/volter-sdk-kit-components-SurfaceCrashBoundary-C_FxlEvS.js +0 -1
  523. package/dist/assets/volter-sdk-kit-components-SurfaceStateOverlay-C_O4-zsY.js +0 -1
  524. package/dist/assets/volter-sdk-kit-components-ToolContributionSurfaces-DAoNJ2KS.js +0 -1
  525. package/dist/assets/volter-sdk-kit-components-ToolHost-z-CSuvra.js +0 -1
  526. package/dist/assets/volter-sdk-kit-components-Toolbar-CUsODOE2.js +0 -1
  527. package/dist/assets/volter-sdk-kit-components-TransientHint-BsejPKYD.js +0 -1
  528. package/dist/assets/volter-sdk-kit-components-VersionControlSection-ldwCuasW.js +0 -1
  529. package/dist/assets/volter-sdk-kit-components-ViewportOverlaysMenu-DjfcwDPM.js +0 -1
  530. package/dist/assets/volter-sdk-kit-components-VolterLogo-wmAjAypV.js +0 -1
  531. package/dist/assets/volter-sdk-kit-components-WorktreeSwitcher-JN-eaFqo.js +0 -1
  532. package/dist/assets/volter-sdk-kit-components-account-documents-BcgknOsj.js +0 -1
  533. package/dist/assets/volter-sdk-kit-components-asset-documents-B2W4TjZO.js +0 -1
  534. package/dist/assets/volter-sdk-kit-components-asset-editor-persistence-NTgC5Ngq.js +0 -1
  535. package/dist/assets/volter-sdk-kit-components-asset-selection-section-CLS4gJUE.js +0 -1
  536. package/dist/assets/volter-sdk-kit-components-asset-thumbnails-CaYPgAtN.js +0 -1
  537. package/dist/assets/volter-sdk-kit-components-asset-viewers-AudioViewer-DbLUYMKF.js +0 -1
  538. package/dist/assets/volter-sdk-kit-components-asset-viewers-GenericJsonViewer-B3ieuK68.js +0 -1
  539. package/dist/assets/volter-sdk-kit-components-asset-viewers-ImageViewer-DicJ06Cl.js +0 -1
  540. package/dist/assets/volter-sdk-kit-components-asset-viewers-JsonAssetDocument-DRBY_95W.js +0 -1
  541. package/dist/assets/volter-sdk-kit-components-asset-viewers-OnlineAssetDetail-BR14tR5R.js +0 -1
  542. package/dist/assets/volter-sdk-kit-components-asset-viewers-SourceAssetViewer-BI9bFeTE.js +0 -1
  543. package/dist/assets/volter-sdk-kit-components-asset-viewers-SpritesheetSpriteView-d7Wqtjxk.js +0 -1
  544. package/dist/assets/volter-sdk-kit-components-asset-viewers-VideoViewer-Ykl90edA.js +0 -1
  545. package/dist/assets/volter-sdk-kit-components-asset-viewers-shader-source-BmwRhUts.js +0 -1
  546. package/dist/assets/volter-sdk-kit-components-board-guides-Dw7AT-AY.js +0 -1
  547. package/dist/assets/volter-sdk-kit-components-canvas-scene-hotkeys-s3AK_b58.js +0 -1
  548. package/dist/assets/volter-sdk-kit-components-canvas-temporary-pivot-DKdXJcd9.js +0 -1
  549. package/dist/assets/volter-sdk-kit-components-core-utilities-C5ZKnxiW.js +0 -1
  550. package/dist/assets/volter-sdk-kit-components-inspector-preview-section-BHsR6Ljx.js +0 -1
  551. package/dist/assets/volter-sdk-kit-components-inspector-revert-label-BcItYP-3.js +0 -1
  552. package/dist/assets/volter-sdk-kit-components-inspector-selection-DnVCu9NI.js +0 -1
  553. package/dist/assets/volter-sdk-kit-components-inspector-stories-gating-BbWmsm9H.js +0 -1
  554. package/dist/assets/volter-sdk-kit-components-inspector-transform-BCj8sqj5.js +0 -1
  555. package/dist/assets/volter-sdk-kit-components-inspector-transform-subject-DmyQlGz0.js +0 -1
  556. package/dist/assets/volter-sdk-kit-components-kind-documents-BECHMIFC.js +0 -1
  557. package/dist/assets/volter-sdk-kit-components-primitives-DraftColorInput-BB28QlBb.js +0 -1
  558. package/dist/assets/volter-sdk-kit-components-project-tool-documents-CrMMOzM5.js +0 -1
  559. package/dist/assets/volter-sdk-kit-components-scene-documents-B3yfDsBz.js +0 -1
  560. package/dist/assets/volter-sdk-kit-components-status-contributions-CDzNj8Hu.js +0 -1
  561. package/dist/assets/volter-sdk-kit-components-tool-documents-BpEG-ABF.js +0 -1
  562. package/dist/assets/volter-sdk-kit-components-tool-schema-form-BOiPCwKc.js +0 -1
  563. package/dist/assets/volter-sdk-kit-components-use-after-paint-AcvAjLMf.js +0 -1
  564. package/dist/assets/volter-sdk-kit-components-use-project-image-assets-CRFbWY4e.js +0 -1
  565. package/dist/assets/volter-sdk-kit-components-workspace-history-DTgNtIrO.js +0 -1
  566. package/dist/assets/volter-sdk-kit-components-world-documents-N9ea5nLy.js +0 -1
  567. package/dist/assets/volter-sdk-kit-components-world-overlay-gestures-CvVXrTkV.js +0 -1
  568. package/dist/assets/volter-sdk-kit-composite-screenshot-BsiNQIxC.js +0 -1
  569. package/dist/assets/volter-sdk-kit-content-entry-source-registry-BX8YW40L.js +0 -1
  570. package/dist/assets/volter-sdk-kit-contribution-surfaces-CMblNYDG.js +0 -1
  571. package/dist/assets/volter-sdk-kit-coverage-canvas-reveal-BtPYs0AY.js +0 -1
  572. package/dist/assets/volter-sdk-kit-coverage-design-time-surfaces-BCRK-uUC.js +0 -1
  573. package/dist/assets/volter-sdk-kit-coverage-ontology-invariants-3YuOn0LN.js +0 -1
  574. package/dist/assets/volter-sdk-kit-coverage-session-vitals-BpsIwBM0.js +0 -1
  575. package/dist/assets/volter-sdk-kit-creation-site-registry-C1_mEFTL.js +0 -1
  576. package/dist/assets/volter-sdk-kit-delegate-harness-registry-V07K9odj.js +0 -1
  577. package/dist/assets/volter-sdk-kit-document-areas-TQELDKqa.js +0 -1
  578. package/dist/assets/volter-sdk-kit-document-context-registry-BaPLLOGQ.js +0 -1
  579. package/dist/assets/volter-sdk-kit-document-open-registry-D-zxkb7y.js +0 -1
  580. package/dist/assets/volter-sdk-kit-document-play-extension-F8i5xdiU.js +0 -1
  581. package/dist/assets/volter-sdk-kit-document-preview-source-DgDf2lpD.js +0 -1
  582. package/dist/assets/volter-sdk-kit-document-renderer-session-YWnbpDFE.js +0 -1
  583. package/dist/assets/volter-sdk-kit-document-stage-sessions-BKZBGbit.js +0 -1
  584. package/dist/assets/volter-sdk-kit-document-viewports-DNuE6MQl.js +0 -1
  585. package/dist/assets/volter-sdk-kit-editor-api-DZDj3o86.js +0 -1
  586. package/dist/assets/volter-sdk-kit-editor-chrome-capture-De6DmSgV.js +0 -1
  587. package/dist/assets/volter-sdk-kit-editor-commands-CImZE1nE.js +0 -1
  588. package/dist/assets/volter-sdk-kit-editor-console-nzCbsR0U.js +0 -1
  589. package/dist/assets/volter-sdk-kit-editor-current-view-POB-DPkt.js +0 -1
  590. package/dist/assets/volter-sdk-kit-editor-document-probe-B5tRXCfR.js +0 -1
  591. package/dist/assets/volter-sdk-kit-editor-git-client-SsYoNC6J.js +0 -1
  592. package/dist/assets/volter-sdk-kit-editor-hotkeys-B4ocILot.js +0 -1
  593. package/dist/assets/volter-sdk-kit-editor-lease-CBvYmCsH.js +0 -1
  594. package/dist/assets/volter-sdk-kit-editor-lease-view-DVuaJEec.js +0 -1
  595. package/dist/assets/volter-sdk-kit-editor-mode-B2vWMS-_.js +0 -1
  596. package/dist/assets/volter-sdk-kit-editor-notifications-DgsalU9q.js +0 -1
  597. package/dist/assets/volter-sdk-kit-editor-presence-BQiXcYKf.js +0 -1
  598. package/dist/assets/volter-sdk-kit-editor-presentation-activity-DO7YpI0H.js +0 -1
  599. package/dist/assets/volter-sdk-kit-editor-presentation-notice-BZtrnX57.js +0 -1
  600. package/dist/assets/volter-sdk-kit-editor-runtime-C8mqfYkM.js +0 -1
  601. package/dist/assets/volter-sdk-kit-editor-server-response-qipqMDto.js +0 -1
  602. package/dist/assets/volter-sdk-kit-editor-session-attribution-_PNhRyeQ.js +0 -1
  603. package/dist/assets/volter-sdk-kit-editor-session-mode-BcDn3FZY.js +0 -1
  604. package/dist/assets/volter-sdk-kit-editor-state-facets-3r455vYW.js +0 -1
  605. package/dist/assets/volter-sdk-kit-editor-view-presentation-Dovw_-H_.js +0 -1
  606. package/dist/assets/volter-sdk-kit-environment-images-DNJU9lPC.js +0 -1
  607. package/dist/assets/volter-sdk-kit-eyedropper-session-DJMkT_IO.js +0 -1
  608. package/dist/assets/volter-sdk-kit-files-file-provider-BnmRHNTp.js +0 -1
  609. package/dist/assets/volter-sdk-kit-files-project-files-CiKUZlIY.js +0 -1
  610. package/dist/assets/volter-sdk-kit-finders-index-qZKU8xjn.js +0 -1
  611. package/dist/assets/volter-sdk-kit-finders-scenes-from-entrypoint-selection-DBTnLBhQ.js +0 -1
  612. package/dist/assets/volter-sdk-kit-frame-frame-parts-DY-_uCea.js +0 -1
  613. package/dist/assets/volter-sdk-kit-framed-document-capture-CsprF9Ct.js +0 -1
  614. package/dist/assets/volter-sdk-kit-game-surface-defaults-Dz1sExNZ.js +0 -1
  615. package/dist/assets/volter-sdk-kit-gameplay-export-state-BwkWHkY-.js +0 -1
  616. package/dist/assets/volter-sdk-kit-gameplay-replay-CgF6vM6H.js +0 -1
  617. package/dist/assets/volter-sdk-kit-gameplay-session-time-BrdLX9MN.js +0 -1
  618. package/dist/assets/volter-sdk-kit-gameplay-sessions-0YRBcIBD.js +0 -1
  619. package/dist/assets/volter-sdk-kit-hierarchy-component-marks-pwxcueeL.js +0 -1
  620. package/dist/assets/volter-sdk-kit-hierarchy-internals-qxAC9Yyz.js +0 -1
  621. package/dist/assets/volter-sdk-kit-hierarchy-kind-icon-Bguy3R2P.js +0 -1
  622. package/dist/assets/volter-sdk-kit-hierarchy-menu-registry-CQ_dm6ZG.js +0 -1
  623. package/dist/assets/volter-sdk-kit-hierarchy-node-rows-BJliwGW1.js +0 -1
  624. package/dist/assets/volter-sdk-kit-hierarchy-panel-view-C6zK-ewB.js +0 -1
  625. package/dist/assets/volter-sdk-kit-hierarchy-projection-q1LvhfSm.js +0 -1
  626. package/dist/assets/volter-sdk-kit-hierarchy-row-media-jZ989Tvr.js +0 -1
  627. package/dist/assets/volter-sdk-kit-hierarchy-row-model-BmrBiFlP.js +0 -1
  628. package/dist/assets/volter-sdk-kit-hierarchy-rows-BMI3XBi-.js +0 -1
  629. package/dist/assets/volter-sdk-kit-hierarchy-walk-oEWRF-Iz.js +0 -1
  630. package/dist/assets/volter-sdk-kit-history-editor-session-CdficO7Z.js +0 -1
  631. package/dist/assets/volter-sdk-kit-history-history-commands-D7VwYk3h.js +0 -1
  632. package/dist/assets/volter-sdk-kit-history-history-delegate-DgIAPV-4.js +0 -1
  633. package/dist/assets/volter-sdk-kit-history-history-limit-notices-Bu07tHVz.js +0 -1
  634. package/dist/assets/volter-sdk-kit-history-history-service-BzbUb6oV.js +0 -1
  635. package/dist/assets/volter-sdk-kit-history-persistence-coordinator-DuWeeacm.js +0 -1
  636. package/dist/assets/volter-sdk-kit-history-project-file-history-C7m0teYF.js +0 -1
  637. package/dist/assets/volter-sdk-kit-history-project-root-history-backends-mip7BKbu.js +0 -1
  638. package/dist/assets/volter-sdk-kit-history-resource-registry-CZoZX7pJ.js +0 -1
  639. package/dist/assets/volter-sdk-kit-history-snapshot-store-DFlmQKjf.js +0 -1
  640. package/dist/assets/volter-sdk-kit-history-source-history-backend-C1tXQx-3.js +0 -1
  641. package/dist/assets/volter-sdk-kit-hmr-registration-group-CdWSrJkL.js +0 -1
  642. package/dist/assets/volter-sdk-kit-hmr-stable-react-context-B_NNyLJr.js +0 -1
  643. package/dist/assets/volter-sdk-kit-hotkeys-9UuVecd2.js +0 -1
  644. package/dist/assets/volter-sdk-kit-inference-diagnostics-Bp6UhMrh.js +0 -1
  645. package/dist/assets/volter-sdk-kit-initial-project-mIrJ1z4F.js +0 -1
  646. package/dist/assets/volter-sdk-kit-inspection-active-subject-Ci13od8C.js +0 -1
  647. package/dist/assets/volter-sdk-kit-inspection-active-surface-BbND9Nn7.js +0 -1
  648. package/dist/assets/volter-sdk-kit-inspection-compose-subject-Cruyx55P.js +0 -1
  649. package/dist/assets/volter-sdk-kit-inspection-display-Ckb72SDN.js +0 -1
  650. package/dist/assets/volter-sdk-kit-inspection-document-subject-Dd7sTsiM.js +0 -1
  651. package/dist/assets/volter-sdk-kit-inspection-game-subject-Zye7SfKC.js +0 -1
  652. package/dist/assets/volter-sdk-kit-inspection-model-B6kt5U5M.js +0 -1
  653. package/dist/assets/volter-sdk-kit-inspection-node-media-3WYK4mrg.js +0 -1
  654. package/dist/assets/volter-sdk-kit-inspection-null-subject-j5MU6Bqp.js +0 -1
  655. package/dist/assets/volter-sdk-kit-inspection-serialize-C5ElmYGd.js +0 -1
  656. package/dist/assets/volter-sdk-kit-inspection-use-active-inspection-Dqr8YOfV.js +0 -1
  657. package/dist/assets/volter-sdk-kit-inspector-presentation-Bxm_mJug.js +0 -1
  658. package/dist/assets/volter-sdk-kit-inspector-property-grouping-DGsJwl0r.js +0 -1
  659. package/dist/assets/volter-sdk-kit-inspector-section-registry-BTw0xKeK.js +0 -1
  660. package/dist/assets/volter-sdk-kit-instance-source-actions-B_SYfHzK.js +0 -1
  661. package/dist/assets/volter-sdk-kit-js-heap-CMHIxDFc.js +0 -1
  662. package/dist/assets/volter-sdk-kit-key-actions-npGWeBwX.js +0 -1
  663. package/dist/assets/volter-sdk-kit-keymap-presets-Dgo5jMVc.js +0 -1
  664. package/dist/assets/volter-sdk-kit-layout-policy-D6cqDneT.js +0 -1
  665. package/dist/assets/volter-sdk-kit-light-explorer-model-D9220Fr3.js +0 -1
  666. package/dist/assets/volter-sdk-kit-live-canvas-frame-CQvRrTp5.js +0 -1
  667. package/dist/assets/volter-sdk-kit-live-document-StECWB5n.js +0 -1
  668. package/dist/assets/volter-sdk-kit-live-gesture-lock-DpKIl8Kh.js +0 -1
  669. package/dist/assets/volter-sdk-kit-live-seam-evidence-WkwVMDpm.js +0 -1
  670. package/dist/assets/volter-sdk-kit-live-session-registry-DmaGkq5x.js +0 -1
  671. package/dist/assets/volter-sdk-kit-live-transition-B5jM4iFM.js +0 -1
  672. package/dist/assets/volter-sdk-kit-manifest-project-amCdVxUh.js +0 -1
  673. package/dist/assets/volter-sdk-kit-module-fetch-diagnosis-CpTsYq8x.js +0 -1
  674. package/dist/assets/volter-sdk-kit-mount-failure-report-DcYXxWwN.js +0 -1
  675. package/dist/assets/volter-sdk-kit-native-selection-style-bMu0TkER.js +0 -1
  676. package/dist/assets/volter-sdk-kit-object3d-document-write-policy-DCtXUN3w.js +0 -1
  677. package/dist/assets/volter-sdk-kit-packaged-runtime-8FNZVNB9.js +0 -1
  678. package/dist/assets/volter-sdk-kit-performance-profiler-DKuyDNq0.js +0 -1
  679. package/dist/assets/volter-sdk-kit-performance-sources-CUq2AYlp.js +0 -1
  680. package/dist/assets/volter-sdk-kit-photograph-notice-CJC3RuIs.js +0 -1
  681. package/dist/assets/volter-sdk-kit-play-boot-phase-CvmjrYem.js +0 -1
  682. package/dist/assets/volter-sdk-kit-play-camera-flight-Dp3bYFl4.js +0 -1
  683. package/dist/assets/volter-sdk-kit-presentation-surface-DDAJLzOO.js +0 -1
  684. package/dist/assets/volter-sdk-kit-product-command-CevBP_kA.js +0 -1
  685. package/dist/assets/volter-sdk-kit-project-adapter-DZMJa9qO.js +0 -1
  686. package/dist/assets/volter-sdk-kit-project-asset-refresh-BlzSWFsZ.js +0 -1
  687. package/dist/assets/volter-sdk-kit-project-asset-roots-ByJUql0c.js +0 -1
  688. package/dist/assets/volter-sdk-kit-project-local-state-CzuDIgqm.js +0 -1
  689. package/dist/assets/volter-sdk-kit-project-manager-KiOTeJwI.js +0 -1
  690. package/dist/assets/volter-sdk-kit-project-module-changes-BDLfMwF6.js +0 -1
  691. package/dist/assets/volter-sdk-kit-project-module-split-DVZB3699.js +0 -1
  692. package/dist/assets/volter-sdk-kit-project-provenance-GZJY3tis.js +0 -1
  693. package/dist/assets/volter-sdk-kit-project-ready-EtjRqua9.js +0 -1
  694. package/dist/assets/volter-sdk-kit-project-shape-Jb91qwQJ.js +0 -1
  695. package/dist/assets/volter-sdk-kit-project-tools-n1IzvKJM.js +0 -1
  696. package/dist/assets/volter-sdk-kit-readiness-j18YadCv.js +0 -1
  697. package/dist/assets/volter-sdk-kit-renderer-resource-counts-BjvWDcz5.js +0 -1
  698. package/dist/assets/volter-sdk-kit-reported-play-state-BdYUBkLM.js +0 -1
  699. package/dist/assets/volter-sdk-kit-resolve-contributed-command-7ZIwPRlj.js +0 -1
  700. package/dist/assets/volter-sdk-kit-resolve-relative-specifier-BEqx2z44.js +0 -1
  701. package/dist/assets/volter-sdk-kit-retained-document-states-BWSvbm_C.js +0 -1
  702. package/dist/assets/volter-sdk-kit-scene-document-plan-B8Q6NbgU.js +0 -1
  703. package/dist/assets/volter-sdk-kit-scene-live-open-PVToaH1e.js +0 -1
  704. package/dist/assets/volter-sdk-kit-scoped-game-css-DOF-inf1.js +0 -1
  705. package/dist/assets/volter-sdk-kit-served-url-C3OFjtsJ.js +0 -1
  706. package/dist/assets/volter-sdk-kit-session-close-CfqKNfrE.js +0 -1
  707. package/dist/assets/volter-sdk-kit-session-tombstone-wgZaXyq-.js +0 -1
  708. package/dist/assets/volter-sdk-kit-settings-settings-provider-CkU3sFW7.js +0 -1
  709. package/dist/assets/volter-sdk-kit-settings-store-vv_SoMfR.js +0 -1
  710. package/dist/assets/volter-sdk-kit-shell-store-DTExcaKL.js +0 -1
  711. package/dist/assets/volter-sdk-kit-shell-store-door-Y-FBGkmI.js +0 -1
  712. package/dist/assets/volter-sdk-kit-source-conflict-CnIJpwkZ.js +0 -1
  713. package/dist/assets/volter-sdk-kit-stage-context-q9FWjN1-.js +0 -1
  714. package/dist/assets/volter-sdk-kit-stage-invalidation-43bhizXB.js +0 -1
  715. package/dist/assets/volter-sdk-kit-stage-store-registry-BQo-SIuU.js +0 -1
  716. package/dist/assets/volter-sdk-kit-startup-failure-B7USi1FF.js +0 -1
  717. package/dist/assets/volter-sdk-kit-state-report-deferral-Cur6y3FE.js +0 -1
  718. package/dist/assets/volter-sdk-kit-storage-host-files-storage-C9d8xXNc.js +0 -1
  719. package/dist/assets/volter-sdk-kit-storage-http-storage-MuV46OcN.js +0 -1
  720. package/dist/assets/volter-sdk-kit-storage-index-CcMXaj5N.js +0 -1
  721. package/dist/assets/volter-sdk-kit-storage-mem-storage-CaZsvmox.js +0 -1
  722. package/dist/assets/volter-sdk-kit-storage-path-lock-ClaJ7vSM.js +0 -1
  723. package/dist/assets/volter-sdk-kit-storage-paths-Ci2ZChlj.js +0 -1
  724. package/dist/assets/volter-sdk-kit-stories-StoryPreviewMount-OjN0fncW.js +0 -1
  725. package/dist/assets/volter-sdk-kit-stories-compose-project-stories-BlKWWJmk.js +0 -1
  726. package/dist/assets/volter-sdk-kit-stories-prefabs-finder-CcmeyBzg.js +0 -1
  727. package/dist/assets/volter-sdk-kit-stories-prefabs-from-stories-CA_oKZKb.js +0 -1
  728. package/dist/assets/volter-sdk-kit-stories-project-story-regions-CFAyIdjW.js +0 -1
  729. package/dist/assets/volter-sdk-kit-stories-scope-XvZpLAc5.js +0 -1
  730. package/dist/assets/volter-sdk-kit-stories-story-capture-K4eH6MMa.js +0 -1
  731. package/dist/assets/volter-sdk-kit-stories-story-declared-medium-e8MXBoO_.js +0 -1
  732. package/dist/assets/volter-sdk-kit-stories-story-discovery-DViKEE-J.js +0 -1
  733. package/dist/assets/volter-sdk-kit-stories-story-dom-runtime-DdlXu5tN.js +0 -1
  734. package/dist/assets/volter-sdk-kit-stories-story-grouping-BbgkS2Kl.js +0 -1
  735. package/dist/assets/volter-sdk-kit-stories-story-presentation-Bw39PGHN.js +0 -1
  736. package/dist/assets/volter-sdk-kit-stories-story-registry-DpouLkjB.js +0 -1
  737. package/dist/assets/volter-sdk-kit-story-document-openers-DckbFGIr.js +0 -1
  738. package/dist/assets/volter-sdk-kit-story-thumbnails-ruZKvQPb.js +0 -1
  739. package/dist/assets/volter-sdk-kit-surface-keyboard-ChQta2gu.js +0 -1
  740. package/dist/assets/volter-sdk-kit-surface-state-CUbH0mE7.js +0 -1
  741. package/dist/assets/volter-sdk-kit-system-seam-evidence-hHuyimda.js +0 -1
  742. package/dist/assets/volter-sdk-kit-tab-census-BKO-Cotm.js +0 -1
  743. package/dist/assets/volter-sdk-kit-tab-lifecycle-client--HEzpfrP.js +0 -1
  744. package/dist/assets/volter-sdk-kit-theme-library-cooHZE2t.js +0 -1
  745. package/dist/assets/volter-sdk-kit-theme-preference-BfzIz8X4.js +0 -1
  746. package/dist/assets/volter-sdk-kit-three-viewport-presentation-DJQ6GD49.js +0 -1
  747. package/dist/assets/volter-sdk-kit-tool-contribution-play-B1vfLya9.js +0 -1
  748. package/dist/assets/volter-sdk-kit-tool-loader-C_B2N1As.js +0 -1
  749. package/dist/assets/volter-sdk-kit-transform-mode-request-tOzI-V8h.js +0 -1
  750. package/dist/assets/volter-sdk-kit-transient-hint-qly8UT5T.js +0 -1
  751. package/dist/assets/volter-sdk-kit-transport-strip-CrqMX70b.js +0 -1
  752. package/dist/assets/volter-sdk-kit-ui-source-file-region-resolver-CjFRrSBS.js +0 -1
  753. package/dist/assets/volter-sdk-kit-ui-source-inspect-CPbxbbEw.js +0 -1
  754. package/dist/assets/volter-sdk-kit-ui-source-source-write-backend-Ci45ai4Y.js +0 -1
  755. package/dist/assets/volter-sdk-kit-ui-source-tier-source-write-backend-B_pwEKI_.js +0 -1
  756. package/dist/assets/volter-sdk-kit-user-local-state-CZtLuAED.js +0 -1
  757. package/dist/assets/volter-sdk-kit-viewport-activation-timings-DtO34FL_.js +0 -1
  758. package/dist/assets/volter-sdk-kit-viewport-editor-controls-C4eYemqw.js +0 -1
  759. package/dist/assets/volter-sdk-kit-viewport-presentation-D1_lvqyl.js +0 -1
  760. package/dist/assets/volter-sdk-kit-viewport-surface-status-BsGJAuRu.js +0 -1
  761. package/dist/assets/volter-sdk-kit-wait-until-DlHFfLUu.js +0 -1
  762. package/dist/assets/volter-sdk-kit-worker-call-metrics-FsK4U-gz.js +0 -1
  763. package/dist/assets/volter-sdk-kit-workspace-areas-CvTSMn-H.js +0 -1
  764. package/dist/assets/volter-sdk-kit-workspace-aux-commands-CrxEUAQx.js +0 -1
  765. package/dist/assets/volter-sdk-kit-workspace-available-documents-Cl8CigSt.js +0 -1
  766. package/dist/assets/volter-sdk-kit-workspace-core-utilities-rQQcVO5n.js +0 -1
  767. package/dist/assets/volter-sdk-kit-workspace-document-ids-CisQDpex.js +0 -1
  768. package/dist/assets/volter-sdk-kit-workspace-document-registry-D4w40sGe.js +0 -1
  769. package/dist/assets/volter-sdk-kit-workspace-document-restore-B0s9617k.js +0 -1
  770. package/dist/assets/volter-sdk-kit-workspace-host-commands-DLqH47QQ.js +0 -1
  771. package/dist/assets/volter-sdk-kit-workspace-persistence-gate-eeXMeNbc.js +0 -1
  772. package/dist/assets/volter-sdk-kit-workspace-play-utilities-sGc6TcaG.js +0 -1
  773. package/dist/assets/volter-sdk-kit-workspace-presets-D-OZK4QQ.js +0 -1
  774. package/dist/assets/volter-sdk-kit-workspace-regions-CLU4KicA.js +0 -1
  775. package/dist/assets/volter-sdk-kit-workspace-static-panels-BtUQumTF.js +0 -1
  776. package/dist/assets/volter-sdk-kit-workspace-status-registry-BlOrc7aA.js +0 -1
  777. package/dist/assets/volter-sdk-kit-workspace-storage-B1cvxes9.js +0 -1
  778. package/dist/assets/volter-sdk-kit-workspace-style-Czyy_uk2.js +0 -1
  779. package/dist/assets/volter-sdk-kit-workspace-utility-commands-D7ToZCgr.js +0 -1
  780. package/dist/assets/volter-sdk-kit-workspace-utility-registry-Czk_iMpg.js +0 -1
  781. package/dist/assets/volter-sdk-kit-world-adoption-CvxzEI8V.js +0 -1
  782. package/dist/assets/volter-sdk-kit-world-canvas-viewport-state-CjG34H8g.js +0 -1
  783. package/dist/assets/volter-sdk-kit-world-document-routing-B3yT1rzx.js +0 -1
  784. package/dist/assets/volter-sdk-kit-world-pan-state-Co5VSMOo.js +0 -1
  785. package/dist/assets/volter-sdk-kit-write-pipe-GbyDlxkJ.js +0 -1
  786. package/dist/assets/volter-sdk-layout-arrangements-DmBix6Gx.js +0 -1
  787. package/dist/assets/volter-sdk-layouts-CQccgb8u.js +0 -1
  788. package/dist/assets/volter-sdk-mgLi8_Cw.js +0 -2364
  789. package/dist/assets/volter-sdk-selection-wggwzLen.js +0 -1
  790. package/dist/assets/volter-sdk-session-command-table-HilHgL7-.js +0 -1
  791. package/dist/assets/volter-sdk-session-editor-brand-CnZ3VbR-.js +0 -1
  792. package/dist/assets/volter-sdk-session-editor-compatibility-BOYTGttq.js +0 -1
  793. package/dist/assets/volter-sdk-session-editor-control-protocol-DG79HI_x.js +0 -1
  794. package/dist/assets/volter-sdk-session-entrypoint-selection-readers-D9FXlkS2.js +0 -1
  795. package/dist/assets/volter-sdk-session-game-css-scope-CZmonWfe.js +0 -1
  796. package/dist/assets/volter-sdk-session-limited-view-KNOq_tYc.js +0 -1
  797. package/dist/assets/volter-sdk-session-project-module-url-D7htWtkD.js +0 -1
  798. package/dist/assets/volter-sdk-session-relative-path-guard-DYa5PL0U.js +0 -1
  799. package/dist/assets/volter-sdk-session-tool-contribution-convention-GC2AWVch.js +0 -1
  800. package/dist/assets/volter-sdk-types-Couxbiwa.js +0 -1
  801. package/dist/assets/volter-sdk-views-D8qvTyCn.js +0 -1
  802. package/dist/assets/volter-sdk-widgets-design-system-DOW3sA7o.js +0 -1
  803. package/dist/assets/volter-sdk-widgets-editor-appearance-iH79zcxr.js +0 -1
  804. package/dist/assets/volter-sdk-widgets-editor-material-D-LB0zxr.js +0 -1
  805. package/dist/assets/volter-sdk-widgets-icon-set-registry-ylLmSwSr.js +0 -1
  806. package/dist/assets/volter-sdk-widgets-index-DMo0Rqvn.js +0 -1
  807. package/dist/assets/volter-sdk-widgets-inspector-widgets-AlignmentGrid-DhdNVPDu.js +0 -1
  808. package/dist/assets/volter-sdk-widgets-inspector-widgets-AssetSlotPicker-BEDX8viW.js +0 -1
  809. package/dist/assets/volter-sdk-widgets-inspector-widgets-BorderEditor-9Vk3QrCy.js +0 -1
  810. package/dist/assets/volter-sdk-widgets-inspector-widgets-ColorPicker-rhGdxW0L.js +0 -1
  811. package/dist/assets/volter-sdk-widgets-inspector-widgets-CurveEditor-BXu0Q3-y.js +0 -1
  812. package/dist/assets/volter-sdk-widgets-inspector-widgets-FilterEditor-C49uoql_.js +0 -1
  813. package/dist/assets/volter-sdk-widgets-inspector-widgets-FontPicker-BoRWZylN.js +0 -1
  814. package/dist/assets/volter-sdk-widgets-inspector-widgets-GradientEditor-GxINOtYX.js +0 -1
  815. package/dist/assets/volter-sdk-widgets-inspector-widgets-ScrubbableInput-rvCzzMDI.js +0 -1
  816. package/dist/assets/volter-sdk-widgets-inspector-widgets-ShadowEditor-DG-MGXQX.js +0 -1
  817. package/dist/assets/volter-sdk-widgets-inspector-widgets-color-utils-Cy4AI76M.js +0 -1
  818. package/dist/assets/volter-sdk-widgets-inspector-widgets-curve-utils-ncKgVdwJ.js +0 -1
  819. package/dist/assets/volter-sdk-widgets-inspector-widgets-index-BtW7A1an.js +0 -1
  820. package/dist/assets/volter-sdk-widgets-inspector-widgets-shared-lOZ7oJLL.js +0 -1
  821. package/dist/assets/volter-sdk-widgets-interactive-edit-scope-BbS6qOlJ.js +0 -1
  822. package/dist/assets/volter-sdk-widgets-patterns-Dialog-BqcAE1N1.js +0 -1
  823. package/dist/assets/volter-sdk-widgets-patterns-Fields-CD2kSMcv.js +0 -1
  824. package/dist/assets/volter-sdk-widgets-patterns-List-CZyrvaL-.js +0 -1
  825. package/dist/assets/volter-sdk-widgets-patterns-StateSurface-D8L-se9D.js +0 -1
  826. package/dist/assets/volter-sdk-widgets-patterns-Surfaces-sW43gM3D.js +0 -1
  827. package/dist/assets/volter-sdk-widgets-patterns-Tabs-CTEQRAHE.js +0 -1
  828. package/dist/assets/volter-sdk-widgets-patterns-Toolbar-CF8cj2Xd.js +0 -1
  829. package/dist/assets/volter-sdk-widgets-patterns-Tree-KffO8vo1.js +0 -1
  830. package/dist/assets/volter-sdk-widgets-primitives-AnchoredMenu-D2my2vjj.js +0 -1
  831. package/dist/assets/volter-sdk-widgets-primitives-Button-CiaR71jI.js +0 -1
  832. package/dist/assets/volter-sdk-widgets-primitives-ColorInput-DAxGHgoQ.js +0 -1
  833. package/dist/assets/volter-sdk-widgets-primitives-DraftTextInput-CCZYI-j9.js +0 -1
  834. package/dist/assets/volter-sdk-widgets-primitives-EditorIcon-Fn9aFuF_.js +0 -1
  835. package/dist/assets/volter-sdk-widgets-primitives-FormControls-BMxlOety.js +0 -1
  836. package/dist/assets/volter-sdk-widgets-primitives-HoverPreview-BzwvyU3c.js +0 -1
  837. package/dist/assets/volter-sdk-widgets-primitives-JsonInput-CTc6p9EQ.js +0 -1
  838. package/dist/assets/volter-sdk-widgets-primitives-Layout-CE-beP_c.js +0 -1
  839. package/dist/assets/volter-sdk-widgets-primitives-Menu-DfNc6W9I.js +0 -1
  840. package/dist/assets/volter-sdk-widgets-primitives-NumberInput-Cyjw5Lzx.js +0 -1
  841. package/dist/assets/volter-sdk-widgets-primitives-Panel-LGno17LT.js +0 -1
  842. package/dist/assets/volter-sdk-widgets-primitives-SectionHeader-Cljf9N48.js +0 -1
  843. package/dist/assets/volter-sdk-widgets-primitives-Text-B4gPva4d.js +0 -1
  844. package/dist/assets/volter-sdk-widgets-primitives-ThemeRootPortal-CXqwIkjb.js +0 -1
  845. package/dist/assets/volter-sdk-widgets-primitives-Tooltip-DjwM-P34.js +0 -1
  846. package/dist/assets/volter-sdk-widgets-primitives-Vec3Input-DWMZJklN.js +0 -1
  847. package/dist/assets/volter-sdk-widgets-primitives-banner-tones-bbpLeXlG.js +0 -1
  848. package/dist/assets/volter-sdk-widgets-primitives-clamp-to-viewport-DB06CYVu.js +0 -1
  849. package/dist/assets/volter-sdk-widgets-primitives-editor-icons-FxdDZA6W.js +0 -1
  850. package/dist/assets/volter-sdk-widgets-primitives-panel-header-styles-CEiBBzGS.js +0 -1
  851. package/dist/assets/volter-sdk-widgets-theme-BysNs-Ha.js +0 -1
  852. package/dist/assets/volter-sdk-widgets-z-index-CQdgvLGF.js +0 -1
  853. package/dist/assets/volter-shared-fontawesome-BiNKLNA8.js +0 -1
  854. package/dist/assets/volter-shared-jsx-dev-runtime-BgDFKHr4.js +0 -1
  855. package/dist/assets/volter-shared-jsx-runtime-B6IXdFn7.js +0 -1
  856. package/dist/assets/volter-shared-react-dom-DOBDwT0W.js +0 -1
  857. package/dist/assets/volter-shared-react-dom-client-DxxNJanr.js +0 -1
  858. package/dist/assets/volter-shared-react-wgC9wOqr.js +0 -1
  859. package/dist/assets/volter-shared-three-CUSZKPWM.js +0 -1
  860. package/dist/assets/worker-DvJ796ja.js +0 -8
  861. package/dist/volter-shared-sdk.json +0 -465
  862. package/src/contributions.d.ts +0 -4
  863. package/starter/add-play/game-state.ts +0 -25
  864. package/starter/add-play/game.tsx +0 -16
  865. package/starter/add-play/model.play.ts +0 -77
  866. package/starter/playable/src/models/canyon.blend +0 -0
  867. package/starter/playable/src/models/canyon.play.ts +0 -107
  868. package/starter/playable/src/models/canyon.py +0 -55
  869. package/starter/playable/src/models/circuit.py +0 -131
  870. package/starter/playable/src/models/complete_environment.py +0 -35
  871. package/starter/playable/src/models/course.ts +0 -12
  872. package/starter/playable/src/models/detail.py +0 -44
  873. package/starter/playable/src/models/driver_details.py +0 -25
  874. package/starter/playable/src/models/environment.py +0 -87
  875. package/starter/playable/src/models/finish_scene.py +0 -13
  876. package/starter/playable/src/models/kart_finish.py +0 -31
  877. package/starter/playable/src/models/polish.py +0 -75
  878. package/starter/playable/src/models/race-state.ts +0 -15
  879. package/starter/playable/src/models/refine.py +0 -69
  880. package/starter/playable/src/models/scene_helpers.py +0 -54
  881. package/starter/playable/src/models/scenery_ao.py +0 -114
  882. package/starter/playable/src/textures/asphalt.png +0 -0
  883. package/starter/playable/src/textures/generate.py +0 -16
  884. package/starter/playable/src/textures/sandstone.png +0 -0
  885. package/starter/playable/src/ui/game.stories.tsx +0 -16
  886. package/starter/playable/src/ui/game.tsx +0 -6
  887. package/starter/playable/src/ui/race-hud.tsx +0 -29
  888. package/starter/playable/src/ui/race-widgets.tsx +0 -29
@@ -1,75 +0,0 @@
1
- # SPDX-License-Identifier: GPL-3.0-or-later
2
- # Copyright 2026 Volter AI, Inc.
3
- import bpy,math,random,datetime
4
- from pathlib import Path
5
- ROOT=str(Path(bpy.data.filepath).resolve().parents[2])
6
- exec(compile(open(ROOT+'/src/models/scene_helpers.py').read(),'scene_helpers.py','exec'))
7
- # More road in the foreground and a distant outside verge, matching the open bend.
8
- for ob in bpy.data.objects:
9
- if ob.type!='MESH':continue
10
- if ob.name=='Circuit asphalt':bounds=(-12,12)
11
- elif ob.name.startswith('Ivory shoulder'):s=int(ob.name.rsplit(' ',1)[1]);bounds=(s*12,s*12.5)
12
- elif ob.name.startswith('Turquoise racing edge'):s=int(ob.name.rsplit(' ',1)[1]);bounds=(s*11.45,s*12)
13
- else:continue
14
- for i in range(512):
15
- t=i*8/512;p=center(t);wide=17*math.exp(-max(0,p.y)/28) if t<2.4 or t>7.3 else 0
16
- for j,off in enumerate(bounds):
17
- if off<0:off-=wide
18
- q=sample(t,off);ob.data.vertices[i*2+j].co.x=q.x;ob.data.vertices[i*2+j].co.y=q.y
19
- ob.data.update()
20
- if ob.name=='Circuit asphalt':
21
- uv=ob.data.uv_layers.active
22
- for p in ob.data.polygons:
23
- for li in p.loop_indices:
24
- v=ob.data.vertices[ob.data.loops[li].vertex_index].co;uv.data[li].uv=(v.x/9,v.y/9)
25
- for o in bpy.data.objects:
26
- if o.name.startswith('Lane dash'):o.location.x-=4
27
- # Remove nearby rail, leaving the broad distant guardrail seen in the target.
28
- for ob in list(bpy.data.objects):
29
- if ob.name.startswith(('Guardrail','Rail post')):bpy.data.objects.remove(ob,do_unlink=True)
30
- for i in range(65):
31
- if i<23:
32
- p=Vector((-58+i*2,24));q=Vector((-56+i*2,24))
33
- else:p=sample(.92+(i-23)*.04,-13);q=sample(.92+(i-22)*.04,-13)
34
- rod('Guardrail beam',(p.x,p.y,.98),(q.x,q.y,.98),.14,metal)
35
- rod('Guardrail lower',(p.x,p.y,.75),(q.x,q.y,.75),.08,metal)
36
- if i%2==0:box('Rail post',(p.x,p.y,.43),(.18,.25,.86),metal)
37
- # Move each complete sign assembly consistently according to original coordinates.
38
- for ob in bpy.data.objects:
39
- if ob.name.startswith(('Arrow','Flag','Sunrise racing pennant')):
40
- # Flags store their absolute points in the mesh; all other parts have absolute locations.
41
- if ob.name.startswith(('Flag gold','Sunrise')):
42
- if ob.type=='MESH':
43
- cx=sum(v.co.x for v in ob.data.vertices)/len(ob.data.vertices);cy=sum(v.co.y for v in ob.data.vertices)/len(ob.data.vertices)
44
- else:continue
45
- else:cx,cy=ob.location.x,ob.location.y
46
- idx=min(range(3),key=lambda k:abs(cy-[10,24,38][k]))
47
- dx,dy,dz=[(-4,12,2.1),(-3,10,.5),(-1,10,0)][idx]
48
- ob.location.x+=dx;ob.location.y+=dy;ob.location.z+=dz
49
- # The arch opening occupies the right half and leaves a broad cyan sky above it.
50
- ob=bpy.data.objects['Natural sandstone arch'];ob.location.x+=6;ob.location.y+=9;ob.scale.z=.88
51
- ob=bpy.data.objects['Arch east tower'];ob.location.x+=4
52
- ob=bpy.data.objects['Distant mesa'];ob.location.x+=14;ob.scale.z=.8
53
- # Directional afternoon shadows fall towards the camera's lower left.
54
- bpy.data.objects['Afternoon sun'].rotation_euler=(-.52,.62,0)
55
- bpy.data.lights['Afternoon sun'].color=(1,.91,.79)
56
- bpy.data.lights['Afternoon sun'].energy=3.2
57
- # Broader rear bodies, fitted lamps, twin chrome pipes and inset mechanical details.
58
- for i in range(6):
59
- rt=bpy.data.objects['Kart.'+str(i)]
60
- for ob in list(rt.children):
61
- if 'sculpted chassis' in ob.name:ob.scale.x*=1.08;ob.scale.z*=.92
62
- if 'red lamp' in ob.name:ob.location.y=-1.37
63
- if 'lamp glint' in ob.name:ob.location.y=-1.44
64
- if 'white rear pod' in ob.name:ob.location.x*=1.02
65
- if 'rear cream stripe' in ob.name:ob.scale.z*=1.2
66
- # Decorative engine ventilation and lower diffuser behind the driver.
67
- for x in [-.42,-.21,0,.21,.42]:box('K%d rear grille'%i,(x,-1.45,.55),(.11,.02,.08),tire,rt)
68
- for x in [-.17,.17]:
69
- rod('K%d exhaust tube'%i,(x,-1.4,.34),(x,-1.7,.34),.13,metal,rt)
70
- # Add small cream cloud banks in the open sky.
71
- cloud=bpy.data.materials['Soft cream clouds'];random.seed(821)
72
- for x,y,z,s in [(-6,150,39,8),(40,170,40,12),(62,185,54,8),(-41,170,50,7)]:
73
- for j in range(12):sphere('Cloud bank',(x+random.uniform(-s,s),y+random.uniform(-4,4),z+random.uniform(-2,4)),(random.uniform(2,5),3,random.uniform(2,4)),cloud)
74
- bpy.ops.wm.save_as_mainfile(filepath=ROOT+'/src/models/canyon.blend')
75
- print('Polished verge, signs, karts, shadows and clouds')
@@ -1,15 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
- // Copyright 2026 Volter AI, Inc.
3
- export type RacePhase='ready'|'countdown'|'racing'|'finished';
4
- export interface Racer {id:number;name:string;x:number;y:number;heading:number;speed:number;progress:number;lap:number;finished:boolean;finishTime:number|null;coins:number;boost:number;parked:boolean;drifting:boolean;offroad:boolean;}
5
- export interface RaceEvent {time:number;frame:number;kind:string;[key:string]:unknown}
6
- export interface RaceState {phase:RacePhase;paused:boolean;autoplay:boolean;time:number;frame:number;countdown:number;speed:number;lap:number;coins:number;place:number;boost:number;racers:Racer[];events:RaceEvent[];message:string;}
7
- export const initialState:RaceState={phase:'ready',paused:false,autoplay:false,time:0,frame:0,countdown:3,speed:0,lap:1,coins:8,place:6,boost:0,racers:[],events:[],message:'CANYON COMET'};
8
- let state=initialState;const listeners=new Set<()=>void>();
9
- export const getRaceState=()=>state;
10
- export const subscribeRaceState=(fn:()=>void)=>{listeners.add(fn);return()=>{listeners.delete(fn)}};
11
- export const publishRaceState=(s:RaceState)=>{state=s;for(const fn of listeners)fn()};
12
- export type Command='start'|'auto'|'pause'|'restart'|'boost';
13
- const commands:Command[]=[];
14
- export const raceAction=(cmd:Command)=>commands.push(cmd);
15
- export const consumeCommands=()=>commands.splice(0);
@@ -1,69 +0,0 @@
1
- # SPDX-License-Identifier: GPL-3.0-or-later
2
- # Copyright 2026 Volter AI, Inc.
3
- import bpy, math, datetime
4
- from mathutils import Vector
5
- from pathlib import Path
6
- ROOT=str(Path(bpy.data.filepath).resolve().parents[2])
7
- exec(compile(open(ROOT+'/src/models/scene_helpers.py').read(),'scene_helpers.py','exec'))
8
- # One world for the camera, neutral diffuse illumination for the scene.
9
- w=bpy.context.scene.world;ns=w.node_tree.nodes;ls=w.node_tree.links;ns.clear();out=ns.new('ShaderNodeOutputWorld');mix=ns.new('ShaderNodeMixShader');path=ns.new('ShaderNodeLightPath');ambient=ns.new('ShaderNodeBackground');back=ns.new('ShaderNodeBackground');ambient.inputs[0].default_value=(.72,.76,.79,1);ambient.inputs[1].default_value=.8;back.inputs[0].default_value=(.15,.70,.82,1);back.inputs[1].default_value=1
10
- ls.new(path.outputs['Is Camera Ray'],mix.inputs[0]);ls.new(ambient.outputs[0],mix.inputs[1]);ls.new(back.outputs[0],mix.inputs[2]);ls.new(mix.outputs[0],out.inputs[0])
11
- bpy.data.lights['Afternoon sun'].energy=3.0
12
- # Correct signed wrapping of the closed spline at its seam.
13
- for ob in bpy.data.objects:
14
- if ob.type!='MESH':continue
15
- if ob.name=='Circuit asphalt':bounds=(-12,12)
16
- elif ob.name.startswith('Ivory shoulder'):s=int(ob.name.rsplit(' ',1)[1]);bounds=(s*12,s*12.5)
17
- elif ob.name.startswith('Turquoise racing edge'):s=int(ob.name.rsplit(' ',1)[1]);bounds=(s*11.45,s*12)
18
- else:continue
19
- for i in range(512):
20
- for j,off in enumerate(bounds):
21
- p=sample(i*8/512,off);ob.data.vertices[i*2+j].co.x=p.x;ob.data.vertices[i*2+j].co.y=p.y
22
- ob.data.update()
23
- # Photo-like micrograin with UVs in metres, never screen-space decoration.
24
- def texture(m,file):
25
- # The textures stay files in src/textures/, referenced relative to the .blend rather than packed.
26
- im=bpy.data.images.load(ROOT+'/src/textures/'+file,check_existing=True);im.filepath='//../textures/'+file;im.colorspace_settings.name='sRGB'
27
- n=m.node_tree.nodes.new('ShaderNodeTexImage');n.image=im;m.node_tree.links.new(n.outputs['Color'],m.node_tree.nodes.get('Principled BSDF').inputs['Base Color'])
28
- return n
29
- texture(bpy.data.materials['Granular warm asphalt'],'asphalt.png')
30
- o=bpy.data.objects['Circuit asphalt'];uv=o.data.uv_layers.new(name='Metre UV')
31
- for poly in o.data.polygons:
32
- for li in poly.loop_indices:
33
- v=o.data.vertices[o.data.loops[li].vertex_index].co;uv.data[li].uv=(v.x/5,v.y/5)
34
- rock=mat('Continuous sandstone strata','D58454',.95);texture(rock,'sandstone.png')
35
- rocknames=['West high mesa','West middle mesa','West ledge','Arch east tower','East foreground cliff','Arch west tower','Distant mesa','Far left mesa','Far right mesa']
36
- for name in rocknames:
37
- ob=bpy.data.objects[name];ob.data.materials.clear();ob.data.materials.append(rock)
38
- for p in ob.data.polygons:p.material_index=0
39
- uv=ob.data.uv_layers.new(name='Sandstone strata')
40
- for p in ob.data.polygons:
41
- for li in p.loop_indices:
42
- v=ob.data.vertices[ob.data.loops[li].vertex_index].co;uv.data[li].uv=((v.x+v.y*.61)/18,v.z/9)
43
- for name,dx,dy,sz in [('West ledge',-12,6,.6),('West middle mesa',-9,8,1),('West high mesa',-11,8,1),('Arch west tower',-5,0,1)]:
44
- ob=bpy.data.objects[name];ob.location.x+=dx;ob.location.y+=dy;ob.scale.z=sz
45
- # A continuous naturally uneven arch, with no radial masonry pattern.
46
- for ob in list(bpy.data.objects):
47
- if ob.name.startswith('Natural arch span'):bpy.data.objects.remove(ob,do_unlink=True)
48
- v=[];N=48
49
- for i in range(N+1):
50
- a=i*math.pi/N;outer=28+math.sin(i*1.7)*.7;inner=20+math.sin(i*2.3)*.35
51
- for y,r in [(46,inner),(46,outer),(55,outer),(55,inner)]:v.append((13+r*math.cos(a),y,3+r*.65*math.sin(a)))
52
- f=[]
53
- for i in range(N):
54
- for j in range(4):f.append((i*4+j,i*4+(j+1)%4,(i+1)*4+(j+1)%4,(i+1)*4+j))
55
- f+=[(3,2,1,0),(N*4,N*4+1,N*4+2,N*4+3)]
56
- d=mesh('Eroded arch strata',v,f,rock);o=obj('Natural sandstone arch',d);o['environment_owned']=True
57
- uv=d.uv_layers.new(name='Arch strata')
58
- for p in d.polygons:
59
- for li in p.loop_indices:
60
- a=d.vertices[d.loops[li].vertex_index].co;uv.data[li].uv=((a.x+a.y*.61)/18,a.z/9)
61
- # Rear three-quarter silhouettes aligned to reference landmarks.
62
- bpy.data.objects['Kart.1'].location=(-6.2,2.7,0)
63
- bpy.data.objects['Kart.2'].location=(4.8,6,0)
64
- bpy.data.objects['Kart.3'].location=(-1.5,24,0)
65
- bpy.data.objects['Kart.4'].location=(1,31,0)
66
- bpy.data.objects['Kart.5'].location=(7,41,0)
67
- cam=bpy.data.objects['Chase camera'];cam.location=(0,-10.7,4.7);cam.rotation_euler=(Vector((0,18,.05))-cam.location).to_track_quat('-Z','Y').to_euler();cam.data.lens=23.25
68
- bpy.ops.wm.save_as_mainfile(filepath=ROOT+'/src/models/canyon.blend')
69
- print('Refined textures, neutral fill, arch, seam and chase framing')
@@ -1,54 +0,0 @@
1
- # SPDX-License-Identifier: GPL-3.0-or-later
2
- # Copyright 2026 Volter AI, Inc.
3
- # Shared by the milestone scripts after circuit.py: materials, mesh helpers and the circuit spline.
4
- import bpy, math, random
5
- from mathutils import Vector
6
- from pathlib import Path
7
- ROOT=str(Path(bpy.data.filepath).resolve().parents[2])
8
- col=bpy.data.collections["Canyon Comet"]
9
- def own(o): o['canyon_owned']=True; col.objects.link(o); return o
10
- def lin(c): return c/12.92 if c<.04045 else ((c+.055)/1.055)**2.4
11
- def mat(n,h,rough=.55,metal=0):
12
- m=bpy.data.materials.get(n) or bpy.data.materials.new(n); m.use_nodes=True
13
- rgb=[lin(int(h[i:i+2],16)/255) for i in (0,2,4)]; m.diffuse_color=(*rgb,1)
14
- p=m.node_tree.nodes.get('Principled BSDF'); p.inputs['Base Color'].default_value=(*rgb,1); p.inputs['Roughness'].default_value=rough;p.inputs['Metallic'].default_value=metal
15
- return m
16
- sand=mat('Warm peach sand','EBA76B'); road=mat('Granular warm asphalt','777970',.98); white=mat('Ivory enamel','EDF1E7',.28); teal=mat('Lagoon turquoise','13C8CF',.25,.15); yellow=mat('Golden yellow','F5C62B',.3); purple=mat('Violet racer','773FDC',.28); green=mat('Apple racer','59BC37',.28); blue=mat('Sky racer','319BBE',.27); coral=mat('Coral racer','F05C33',.3); tire=mat('Graphite rubber','202A29',.9); metal=mat('Brushed aluminum','A3AFAA',.3,.55); dark=mat('Ink blue helmet','203D58',.28); red=mat('Ruby tail lamps','BA291D',.22); orange=mat('Tangerine trim','F68B25',.3); mint=mat('Mint creature','38CCAC',.4); edge=mat('Mint track paint','5AF1B9',.8); black=mat('Sign charcoal','343B32',.8); lamp=mat('Amber lamps','FFF399',.4)
17
- lamp.node_tree.nodes.get('Principled BSDF').inputs['Emission Color'].default_value=(1,.72,.15,1);lamp.node_tree.nodes.get('Principled BSDF').inputs['Emission Strength'].default_value=1.2
18
- cache={}
19
- def mesh(n,v,f,m):
20
- d=bpy.data.meshes.new(n);d.from_pydata(v,[],f);d.materials.append(m);d.update();return d
21
- def obj(n,d,loc=(0,0,0),scale=(1,1,1),parent=None):
22
- o=own(bpy.data.objects.new(n,d));o.location=loc;o.scale=scale;o.parent=parent;return o
23
- def sphere(n,loc,scale,m,parent=None):
24
- key=('sphere',m.name)
25
- if key not in cache:
26
- v=[(math.sin(math.pi*j/16)*math.cos(2*math.pi*i/28),math.sin(math.pi*j/16)*math.sin(2*math.pi*i/28),math.cos(math.pi*j/16)) for j in range(17) for i in range(28)]
27
- f=[(j*28+i,j*28+(i+1)%28,(j+1)*28+(i+1)%28,(j+1)*28+i) for j in range(16) for i in range(28)]
28
- # Sphere param runs north to south, winding outward.
29
- d=mesh('Smooth '+m.name,v,[tuple(reversed(a)) for a in f],m)
30
- for p in d.polygons:p.use_smooth=True
31
- cache[key]=d
32
- return obj(n,cache[key],loc,scale,parent)
33
- def box(n,loc,s,m,parent=None):
34
- key=('box',m.name)
35
- if key not in cache:
36
- v=[(-1,-1,-1),(1,-1,-1),(1,1,-1),(-1,1,-1),(-1,-1,1),(1,-1,1),(1,1,1),(-1,1,1)]
37
- cache[key]=mesh(m.name+' block',v,[(0,3,2,1),(0,1,5,4),(1,2,6,5),(2,3,7,6),(3,0,4,7),(4,5,6,7)],m)
38
- return obj(n,cache[key],loc,tuple(a/2 for a in s),parent)
39
- def rod(n,a,b,r,m,parent=None):
40
- mid=(Vector(a)+Vector(b))/2;o=sphere(n,mid,(r,r,(Vector(b)-Vector(a)).length/2+r),m,parent);o.rotation_euler=(Vector(b)-Vector(a)).to_track_quat('Z','Y').to_euler();return o
41
- def torus(n,loc,R,r,m,parent=None):
42
- key=('torus',R,r,m.name)
43
- if key not in cache:
44
- v=[((R+r*math.cos(j*math.tau/12))*math.cos(i*math.tau/28),(R+r*math.cos(j*math.tau/12))*math.sin(i*math.tau/28),r*math.sin(j*math.tau/12)) for i in range(28) for j in range(12)]
45
- f=[(i*12+j,((i+1)%28)*12+j,((i+1)%28)*12+(j+1)%12,i*12+(j+1)%12) for i in range(28) for j in range(12)]
46
- d=mesh(n,v,f,m)
47
- for p in d.polygons:p.use_smooth=True
48
- cache[key]=d
49
- return obj(n,cache[key],loc,parent=parent)
50
- POINTS=[(0,0),(0,25),(12,55),(42,70),(68,45),(65,5),(40,-25),(8,-25)]
51
- def center(t):
52
- k=math.floor(t)%8;u=t%1;p0=Vector(POINTS[(k-1)%8]);p1=Vector(POINTS[k]);p2=Vector(POINTS[(k+1)%8]);p3=Vector(POINTS[(k+2)%8]);return .5*((2*p1)+(-p0+p2)*u+(2*p0-5*p1+4*p2-p3)*u*u+(-p0+3*p1-3*p2+p3)*u*u*u)
53
- def sample(t,offset=0):
54
- p=center(t);d=(center(t+.001)-center(t-.001)).normalized();return p+Vector((d.y,-d.x))*offset
@@ -1,114 +0,0 @@
1
- # SPDX-License-Identifier: GPL-3.0-or-later
2
- # Copyright 2026 Volter AI, Inc.
3
- # Last step of canyon.py: ambient occlusion baked into the static scenery, for depth.
4
- #
5
- # Each receiver's vertices get a `scenery_ao` colour attribute: the share of a
6
- # cosine-weighted hemisphere of rays that reach open sky within AO_DISTANCE, a
7
- # hit nearer counting more. Its materials multiply Base Color by it. Nothing that
8
- # moves is baked or casts into the bake: the karts and their drivers (and the
9
- # coins and boost flames canyon.play.ts adds) are excluded, so the start grid
10
- # carries no baked kart shadow. A material a kart shares is copied for the
11
- # scenery, so no kart reads an attribute it lacks. Props (cacti, guardrails,
12
- # signs, stones) occlude but are not baked themselves: they share instanced
13
- # meshes, and baking them would need a copy of each. The three low shelves are
14
- # left out too: eight-vertex boxes half inside the mesas, too coarse to shade.
15
- # The desert floor's top face is split into a grid first, so it has vertices
16
- # to carry the bake.
17
- #
18
- # Pure Python against mathutils' BVH, with fixed ray directions: the same file
19
- # gives the same bake in native Blender and in the editor's.
20
- import bpy, bmesh, math
21
- from mathutils import Vector
22
- from mathutils.bvhtree import BVHTree
23
- from pathlib import Path
24
- ROOT=str(Path(bpy.data.filepath).resolve().parents[2])
25
- ATTRIBUTE='scenery_ao'
26
- AO_DISTANCE=20.0 # metres; a hit at distance d occludes by 1 - d/AO_DISTANCE
27
- RAYS=64
28
- DARKEST=0.35
29
- FLOOR_CELL=4.0 # metres between the desert floor's vertices
30
- GROUND=('Desert floor','Circuit asphalt','Ivory shoulder','Turquoise racing edge','Lane dash','Finish line tile')
31
- RECEIVERS=('Desert floor','Circuit asphalt','Ivory shoulder','Turquoise racing edge','Natural sandstone arch',
32
- 'West high mesa','West middle mesa','West ledge','Arch east tower','East foreground cliff','Arch west tower',
33
- 'Distant mesa','Far left mesa','Far right mesa','Return canyon mesa')
34
- NOT_OCCLUDERS=('Cloud','Return cloud puff','Cactus thorn','Cactus rib','Arrow amber lamp')
35
-
36
- col=bpy.data.collections['Canyon Comet']
37
- def moving(o):
38
- while o is not None:
39
- if o.name.startswith('Kart.'):return True
40
- o=o.parent
41
- return False
42
- scenery=[o for o in col.all_objects if o.type=='MESH' and not moving(o)]
43
- receivers=[o for o in scenery if o.name.startswith(RECEIVERS)]
44
- ground=[o for o in scenery if o.name.startswith(GROUND)]
45
-
46
- # The floor is one 8-vertex box: give its top face a grid the bake can shade.
47
- floor=bpy.data.objects['Desert floor']
48
- if len(floor.data.vertices)<100:
49
- if floor.data.users>1:floor.data=floor.data.copy()
50
- bm=bmesh.new();bm.from_mesh(floor.data);bm.faces.ensure_lookup_table()
51
- top=max(bm.faces,key=lambda f:f.normal.z)
52
- cuts=max(1,round(floor.dimensions.x/FLOOR_CELL)-1)
53
- bmesh.ops.subdivide_edges(bm,edges=list(top.edges),cuts=cuts,use_grid_fill=True)
54
- bm.to_mesh(floor.data);bm.free();floor.data.update()
55
- # A receiver needs its own vertices for its own colours.
56
- for o in receivers:
57
- if o.data.users>1:o.data=o.data.copy()
58
-
59
- def triangles(objects):
60
- depsgraph=bpy.context.evaluated_depsgraph_get();verts=[];tris=[]
61
- for o in objects:
62
- ev=o.evaluated_get(depsgraph);mesh=ev.to_mesh();mesh.calc_loop_triangles();m=ev.matrix_world;base=len(verts)
63
- verts.extend(m@v.co for v in mesh.vertices);tris.extend(tuple(base+i for i in t.vertices) for t in mesh.loop_triangles)
64
- ev.to_mesh_clear()
65
- return BVHTree.FromPolygons(verts,tris)
66
- occluders=[o for o in scenery if not o.name.startswith(NOT_OCCLUDERS)]
67
- everything=triangles(occluders)
68
- # Ground layers lie on one another: a ground receiver ignores them, or each would shade the next.
69
- raised=triangles([o for o in occluders if o not in ground])
70
-
71
- golden=math.pi*(3-math.sqrt(5))
72
- hemisphere=[(math.sqrt((i+.5)/RAYS)*math.cos(i*golden),math.sqrt((i+.5)/RAYS)*math.sin(i*golden),math.sqrt(1-(i+.5)/RAYS)) for i in range(RAYS)]
73
- def openness(tree,p,n):
74
- t=(n.cross(Vector((0,0,1))) if abs(n.z)<.9 else n.cross(Vector((1,0,0)))).normalized();b=n.cross(t);origin=p+n*.03;hidden=0.0
75
- for x,y,z in hemisphere:
76
- hit=tree.ray_cast(origin,t*x+b*y+n*z,AO_DISTANCE)[0]
77
- if hit is not None:hidden+=1-(hit-origin).length/AO_DISTANCE
78
- return max(DARKEST,1-hidden/RAYS)
79
-
80
- report={}
81
- for o in receivers:
82
- tree=raised if o in ground else everything;m=o.matrix_world;nm=m.to_3x3().inverted_safe().transposed();mesh=o.data
83
- if ATTRIBUTE in mesh.color_attributes:mesh.color_attributes.remove(mesh.color_attributes[ATTRIBUTE])
84
- layer=mesh.color_attributes.new(ATTRIBUTE,'FLOAT_COLOR','POINT');values=[]
85
- for v in mesh.vertices:
86
- n=(nm@v.normal).normalized()
87
- # Half the track ribbons wind downward; a ground layer always faces the sky.
88
- if o in ground and n.z<0:n=-n
89
- a=openness(tree,m@v.co,n);values.append(a);layer.data[v.index].color=(a,a,a,1)
90
- report[o.name]=(len(values),round(sum(values)/len(values),3),round(min(values),3))
91
-
92
- # Multiply each receiver material's Base Color by the attribute; a material anything else also wears is copied.
93
- receiving=set(receivers);copies={}
94
- for o in receivers:
95
- for slot in o.material_slots:
96
- material=slot.material
97
- if material is None:continue
98
- shared=any(other not in receiving for other in bpy.data.objects if other.type=='MESH' and any(s.material==material for s in other.material_slots))
99
- if shared:
100
- if material.name not in copies:copies[material.name]=bpy.data.materials.get(material.name+' (scenery AO)') or material.copy()
101
- copies[material.name].name=material.name+' (scenery AO)';slot.material=copies[material.name];material=copies[material.name]
102
- nodes=material.node_tree.nodes;links=material.node_tree.links;bsdf=nodes.get('Principled BSDF')
103
- if nodes.get('Scenery AO') is not None:continue
104
- ao=nodes.new('ShaderNodeVertexColor');ao.name=ao.label='Scenery AO';ao.layer_name=ATTRIBUTE;ao.location=(bsdf.location.x-520,bsdf.location.y-260)
105
- mix=nodes.new('ShaderNodeMix');mix.name=mix.label='Scenery AO multiply';mix.data_type='RGBA';mix.blend_type='MULTIPLY';mix.location=(bsdf.location.x-260,bsdf.location.y-120)
106
- mix.inputs['Factor'].default_value=1.0;base=bsdf.inputs['Base Color']
107
- if base.is_linked:
108
- source=base.links[0].from_socket;links.remove(base.links[0]);links.new(source,mix.inputs[6])
109
- else:mix.inputs[6].default_value=base.default_value
110
- links.new(ao.outputs['Color'],mix.inputs[7]);links.new(mix.outputs[2],base)
111
- for name,(count,mean,low) in sorted(report.items()):print('scenery AO',name,count,'vertices, mean',mean,'darkest',low)
112
- print('scenery AO materials copied for the scenery:',sorted(copies))
113
- bpy.ops.wm.save_as_mainfile(filepath=ROOT+'/src/models/canyon.blend')
114
- print('Ambient occlusion baked into',len(receivers),'static scenery meshes')
@@ -1,16 +0,0 @@
1
- # SPDX-License-Identifier: MIT
2
- # Copyright 2026 Volter AI, Inc.
3
- # Deterministic procedural surface textures; no reference pixels are used.
4
- import numpy as np
5
- from PIL import Image, ImageFilter
6
- from pathlib import Path
7
- rng=np.random.default_rng(19);root=Path(__file__).parent
8
- N=1024
9
- def noise(size,w,h):
10
- a=rng.random((h,w)).astype('float32');im=Image.fromarray((a*255).astype('uint8')).resize((size,size),Image.Resampling.BICUBIC);return np.asarray(im)/255-.5
11
- n=noise(N,256,256)*.20+noise(N,650,650)*.19+noise(N,30,30)*.06
12
- base=np.array([104,104,96]);out=np.clip(base+n[:,:,None]*255,0,255).astype('uint8');Image.fromarray(out).save(root/'asphalt.png')
13
- y=np.arange(N)[:,None];x=np.arange(N)[None,:];warp=np.sin(x*.009)*3+np.sin(x*.032)*1.2
14
- bands=np.sin((y+warp)*.075)*.05+np.sin((y+warp)*.28)*.035+np.sin((y+warp)*1.1)*.02
15
- n=noise(N,20,90)*.16+noise(N,150,500)*.11+bands
16
- base=np.array([211,124,79]);out=np.clip(base+n[:,:,None]*np.array([220,180,120]),0,255).astype('uint8');Image.fromarray(out).save(root/'sandstone.png')
@@ -1,16 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
- // Copyright 2026 Volter AI, Inc.
3
- import React, { useState } from 'react';
4
- import GameUI from './game';
5
- import { RaceHud } from './race-hud';
6
- import { RaceButton, RaceCounters, RaceMenu, BoostMeter } from './race-widgets';
7
- import { initialState, type RaceState } from '../models/race-state';
8
- const racing = { ...initialState, phase: 'racing' as const, speed: 26, time: 38.2, lap: 2, place: 3, coins: 12 };
9
- function Preview(args: RaceState) { const [state, set] = useState(args); return <RaceHud {...state} onAction={cmd => set(old => cmd === 'auto' ? { ...old, autoplay: !old.autoplay } : cmd === 'pause' ? { ...old, paused: !old.paused } : cmd === 'start' ? { ...old, phase: 'racing' } : cmd === 'restart' ? { ...initialState } : old)}/>; }
10
- const background = { width: '100%', height: '100%', background: 'radial-gradient(ellipse at top,#496b6a,#253a3c)', position: 'relative' as const, overflow: 'hidden' };
11
- function Buttons() { const [boost, set] = useState(false); return <div style={{ ...background, display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', gap: 25 }}><RaceButton onClick={() => set(!boost)}>{boost ? 'BOOST!' : 'LET’S RACE'}</RaceButton><RaceButton secondary>CHANGE KART</RaceButton><RaceButton disabled>LOCKED</RaceButton></div>; }
12
- export default { title: 'Canyon Comet/Game interface', component: GameUI, render: (args: RaceState) => <div style={background}><Preview {...args}/></div>, parameters: { layout: 'fullscreen', viewport: { options: { game: { name: 'Game UI', styles: { width: '640px', height: '360px' } } } }, volter: { defaultStory: 'Race HUD' } }, globals: { viewport: { value: 'game' } }, args: racing };
13
- export const RaceHUD = { name: 'Race HUD', parameters: { volter: { default: true } } };
14
- export const PauseMenu = { name: 'Pause menu', render: () => { const [paused, set] = useState(true); return <div style={{ ...background, display: 'grid', placeItems: 'center' }}>{paused ? <RaceMenu state={{ ...racing, paused: true }} onAction={() => set(false)}/> : <RaceButton onClick={() => set(true)}>PAUSE</RaceButton>}</div>; } };
15
- export const Counters = { name: 'Coins · laps · boost', render: () => <div style={{ ...background, display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', gap: 40 }}><RaceCounters coins={12} lap={2} place={3}/><BoostMeter value={5}/><BoostMeter value={8}/></div> };
16
- export const ButtonsStates = { name: 'Button states', render: () => <Buttons /> };
@@ -1,6 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
- // Copyright 2026 Volter AI, Inc.
3
- import {useSyncExternalStore} from 'react';
4
- import {getRaceState,subscribeRaceState} from '../models/race-state';
5
- import {RaceHud} from './race-hud';
6
- export default function GameUI(){const state=useSyncExternalStore(subscribeRaceState,getRaceState,getRaceState);return <RaceHud {...state}/>}
@@ -1,29 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
- // Copyright 2026 Volter AI, Inc.
3
- import React from 'react';
4
- import { RaceCounters, RaceControls, RaceMenu, BoostMeter } from './race-widgets';
5
- import { course, at, length } from '../models/course';
6
- import { raceAction, type Command, type RaceState } from '../models/race-state';
7
- export function RaceHud(s: RaceState & {
8
- onAction?: (cmd: Command) => void;
9
- }) {
10
- const act = s.onAction ?? raceAction;
11
- const raceTime = s.racers[0]?.finishTime ?? s.time;
12
- const mp = (x: number, y: number) => ({ x: 23 + (x + 3) * 1.95, y: 40 + (72 - y) * 4.8 });
13
- const route = course.filter((_, i) => i % 8 === 0).map((p, i) => { const v = mp(p.x, p.y); return `${i ? 'L' : 'M'}${v.x} ${v.y}`; }).join(' ') + ' Z';
14
- return <div data-testid="race-hud" style={{ position: 'absolute', inset: 0, fontFamily: 'Arial, sans-serif', lineHeight: 1.1, color: 'white', pointerEvents: 'none', containerType: 'size' }}>
15
- <div style={{ position: 'absolute', left: '2.4%', bottom: '5%', transform: 'scale(.65)', transformOrigin: 'left bottom' }}><RaceCounters coins={s.coins} lap={s.lap} place={s.place}/></div>
16
- <svg viewBox="0 0 200 580" style={{ position: 'absolute', right: '3.2%', top: '9%', height: '65%', width: '13%', overflow: 'visible' }} aria-label="Circuit map">
17
- <path d={route} fill="none" stroke="#ffffffe0" strokeWidth="8" strokeLinecap="round" strokeLinejoin="round"/>
18
- {(s.racers.length ? s.racers : [{ id: 0, progress: 0 }]).map(r => { const p = at(r.progress * length), v = mp(p.x, p.y); return <g key={r.id}><circle cx={v.x} cy={v.y} r={r.id === 0 ? 15 : 7} fill={['#f58a31', '#efc629', '#824fe4', '#64c33c', '#319bbe', '#e85d3a'][r.id]} stroke={r.id === 0 ? '#ffffff' : '#283e44'} strokeWidth={r.id === 0 ? 5 : 2}/>{r.id === 0 && <circle cx={v.x} cy={v.y} r="19" fill="none" stroke="#263d46" strokeWidth="2"/>}</g>; })}
19
- </svg>
20
- <div style={{ position: 'absolute', left: '2.6%', top: '2.7%', fontWeight: 900, letterSpacing: 2, fontSize: 'clamp(11px,1.15cqw,18px)', textShadow: '0 2px 4px #243537' }}>{s.phase === 'ready' ? 'CANYON COMET' : `${s.place} / 6 · ${Math.floor(raceTime / 60)}:${(raceTime % 60).toFixed(1).padStart(4, '0')}`}</div>
21
- <div style={{ position: 'absolute', right: '2.5%', bottom: '3.4%' }}><RaceControls state={s} onAction={act}/></div>
22
- <div style={{ position: 'absolute', left: '50%', bottom: '1%', transform: 'translateX(-50%)', font: '600 10px system-ui', textShadow: '0 1px 3px black', opacity: .88, whiteSpace: 'nowrap' }}>↑ W accelerate · ↓ S brake / reverse · ← → A D steer · Space drift · Shift boost · O auto</div>
23
- {(s.paused || s.phase === 'finished') && <div style={{ position: 'absolute', inset: 0, display: 'grid', placeItems: 'center', background: '#253a3cbb' }}><RaceMenu state={s} onAction={act}/></div>}
24
- {s.phase === 'countdown' && <div style={{ position: 'absolute', left: '50%', top: '38%', fontSize: '9cqw', fontWeight: 900, color: '#ffc92e' }}>{Math.ceil(s.countdown)}</div>}
25
- <div style={{ position: 'absolute', left: '2.5%', top: '13%', transform: 'scale(.65)', transformOrigin: 'left top' }}><BoostMeter value={s.boost > 0 ? 8 : 5}/></div>
26
- {s.boost > 0 && <div style={{ position: 'absolute', left: '45%', top: '13%', fontSize: '2cqw', fontWeight: 900, color: '#ffe77c' }}>BOOST</div>}
27
- <output data-testid="race-state" style={{ display: 'none' }}>{JSON.stringify(s)}</output>
28
- </div>;
29
- }
@@ -1,29 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
- // Copyright 2026 Volter AI, Inc.
3
- import React from 'react';
4
- import type { Command, RaceState } from '../models/race-state';
5
- import { raceAction } from '../models/race-state';
6
- const ink = '#253a3c', gold = '#ffc92e';
7
- const type = { fontFamily: 'Arial, sans-serif', fontWeight: 900, fontStyle: 'italic' } as const;
8
- export function RaceButton({ children, onClick, secondary = false, disabled = false }: {
9
- children: React.ReactNode;
10
- onClick?: () => void;
11
- secondary?: boolean;
12
- disabled?: boolean;
13
- }) { return <button disabled={disabled} onClick={onClick} style={{ ...type, fontSize: 20, letterSpacing: '.01em', padding: '12px 25px', border: `3px solid ${ink}`, borderRadius: 15, color: secondary ? 'white' : ink, background: secondary ? ink : gold, boxShadow: `inset 0 3px 0 ${secondary ? '#ffffff38' : '#fff4b7'},0 4px 0 ${ink}`, transform: 'skew(-5deg)', cursor: disabled ? 'default' : 'pointer', opacity: disabled ? .4 : 1 }}>{children}</button>; }
14
- export function RaceCounters({ coins, lap, place }: {
15
- coins: number;
16
- lap: number;
17
- place: number;
18
- }) { return <div style={{ ...type, display: 'flex', gap: 12, alignItems: 'center', color: 'white', fontSize: 36, textShadow: `0 3px 0 ${ink}` }}><span style={{ display: 'flex', alignItems: 'center', gap: 12, padding: '8px 16px', background: ink, borderRadius: 18, border: '3px solid #ffffff65' }}><b style={{ display: 'grid', placeItems: 'center', width: 31, height: 37, background: gold, borderRadius: '50%', color: '#ef9500', border: '3px solid #ffe77c', boxShadow: '0 0 0 2px #af6900', fontStyle: 'normal', fontSize: 24 }}>Ⅰ</b>{String(coins).padStart(2, '0')}</span><span style={{ padding: '8px 16px', background: ink, borderRadius: 18, border: '3px solid #ffffff65' }}><small style={{ fontSize: 13, verticalAlign: 'middle', marginRight: 8 }}>LAP</small>{lap}<small style={{ fontSize: 20 }}>/3</small></span><span style={{ fontSize: 64, color: gold, WebkitTextStroke: `2px ${ink}`, paintOrder: 'stroke fill' }}>{place}<sup style={{ fontSize: 20 }}>{place === 1 ? "ST" : place === 2 ? "ND" : place === 3 ? "RD" : "TH"}</sup></span></div>; }
19
- export function BoostMeter({ value = 5 }: {
20
- value?: number;
21
- }) { return <div style={{ ...type, display: 'flex', gap: 13, alignItems: 'center', color: 'white', fontSize: 18, textShadow: `0 2px 0 ${ink}` }}><span>BOOST</span><div style={{ display: 'flex', gap: 4, background: ink, padding: 7, border: '2px solid #ffffff65', borderRadius: 8, transform: 'skew(-12deg)' }}>{Array.from({ length: 8 }, (_, i) => <span key={i} style={{ width: 20, height: 22, background: i < value ? gold : '#ffffff38', borderTop: '2px solid #ffffff38' }}/>)}</div></div>; }
22
- export function RaceMenu({ state, onAction = raceAction }: {
23
- state: RaceState;
24
- onAction?: (cmd: Command) => void;
25
- }) { const finished = state.phase === 'finished'; return <div style={{ ...type, display: 'flex', alignItems: 'center', flexDirection: 'column', gap: 20, color: 'white', pointerEvents: 'auto', textAlign: 'center' }}><strong style={{ fontSize: 55, lineHeight: 1, color: gold, WebkitTextStroke: `2px ${ink}`, paintOrder: 'stroke fill', textShadow: `0 5px 0 ${ink}` }}>{finished ? 'RACE COMPLETE!' : 'PAUSED'}</strong><span style={{ fontSize: 17, letterSpacing: 2, textShadow: `0 2px 0 ${ink}` }}>CANYON COMET · LAP {state.lap} / 3</span>{finished && <span style={{ fontSize: 22 }}>POSITION {state.place} / 6 · {state.time.toFixed(1)}s</span>}<RaceButton onClick={() => onAction(finished ? 'restart' : 'pause')}>{finished ? 'RACE AGAIN' : 'KEEP RACING'}</RaceButton><RaceButton secondary onClick={() => onAction('restart')}>RESTART RACE</RaceButton></div>; }
26
- export function RaceControls({ state, onAction = raceAction }: {
27
- state: RaceState;
28
- onAction?: (cmd: Command) => void;
29
- }) { return <div style={{ display: 'flex', gap: 12, alignItems: 'center', pointerEvents: 'auto', transformOrigin: 'right bottom', transform: 'scale(.7)' }}>{state.phase === 'ready' && <RaceButton onClick={() => onAction('start')}>RACE!</RaceButton>}<RaceButton secondary onClick={() => onAction('auto')}>{state.autoplay ? 'AUTO ON' : 'AUTO'}</RaceButton><RaceButton secondary onClick={() => onAction('pause')}>{state.paused ? 'RESUME' : 'PAUSE'}</RaceButton><RaceButton secondary onClick={() => onAction('restart')}>RESTART</RaceButton></div>; }