@volter/cyclotron 0.5.212 → 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 (598) hide show
  1. package/BUNDLED_NOTICES +375 -2995
  2. package/README.md +9 -5
  3. package/dist/.vite/manifest.json +529 -1764
  4. package/dist/assets/AudioViewer-B5pkIGXS.js +1 -0
  5. package/dist/assets/ImageViewer-BPVLEEQ2.js +1 -0
  6. package/dist/assets/JsonAssetDocument-DuVW9del.js +2 -0
  7. package/dist/assets/ProjectAuthoringBootstrap-CZJz4Svb.js +2 -0
  8. package/dist/assets/SourceAssetViewer-LwHBW53R.js +1 -0
  9. package/dist/assets/VideoViewer-Bfjjp4zH.js +1 -0
  10. package/dist/assets/{client-Dj2xr2fw.js → client-BLXKEWrR.js} +1 -1
  11. package/dist/assets/{index-Bc73pJIv.js → index-BKjLHm6K.js} +131 -131
  12. package/dist/assets/index-CJcVFJ-l.css +1 -0
  13. package/dist/assets/product-CaIfLQVS.js +1 -0
  14. package/dist/assets/story-capture-C3xmgE62.js +1 -0
  15. package/dist/assets/volter-sdk-DT0xmh2J.js +1407 -0
  16. package/dist/assets/volter-sdk-activation-events-B-WERmWU.js +1 -0
  17. package/dist/assets/volter-sdk-active-project-DvEsy8Q6.js +1 -0
  18. package/dist/assets/volter-sdk-adapter-editor-config-CQ5V6W-o.js +1 -0
  19. package/dist/assets/volter-sdk-animation-animation-clock-Cy7j_2qF.js +1 -0
  20. package/dist/assets/volter-sdk-animation-stage-transport-DoUDq6Gb.js +1 -0
  21. package/dist/assets/volter-sdk-api-base-Dr1bx5e0.js +1 -0
  22. package/dist/assets/volter-sdk-api-project-open-D4nPvIPU.js +1 -0
  23. package/dist/assets/volter-sdk-api-project-source-DoO7WBwQ.js +1 -0
  24. package/dist/assets/volter-sdk-api-settings-BEHgO5wf.js +1 -0
  25. package/dist/assets/volter-sdk-asset-capabilities-CGkNwaAe.js +1 -0
  26. package/dist/assets/volter-sdk-asset-document-write-policy-CzWM1HhK.js +1 -0
  27. package/dist/assets/volter-sdk-asset-editor-context-BkSK1vL1.js +1 -0
  28. package/dist/assets/volter-sdk-asset-thumbnails-zSmJgI_x.js +1 -0
  29. package/dist/assets/volter-sdk-asset-viewers-B-ICvlkR.js +1 -0
  30. package/dist/assets/volter-sdk-asset-workflow-project-content-C6Ow0R-F.js +1 -0
  31. package/dist/assets/volter-sdk-authoring-active-adapter-CKuWwxgH.js +1 -0
  32. package/dist/assets/volter-sdk-authoring-boundary-authoring-adapter-DTwFKBkS.js +1 -0
  33. package/dist/assets/volter-sdk-authoring-composite-authoring-adapter-iRSbSHpV.js +1 -0
  34. package/dist/assets/volter-sdk-authoring-consumer-actions-DK9-B-wg.js +1 -0
  35. package/dist/assets/volter-sdk-authoring-design-time-mount-registry-BQnWcBVe.js +1 -0
  36. package/dist/assets/volter-sdk-authoring-design-time-roots-BKSmkD7_.js +1 -0
  37. package/dist/assets/volter-sdk-authoring-layered-pick-C-YvuxEG.js +1 -0
  38. package/dist/assets/volter-sdk-authoring-no-authoring-adapter-Cv9DD6G0.js +1 -0
  39. package/dist/assets/volter-sdk-authoring-panel-authoring-BLOrFs8L.js +1 -0
  40. package/dist/assets/volter-sdk-authoring-react-design-canvas-style-Dr9i31o5.js +1 -0
  41. package/dist/assets/{volter-sdk-authoring-react-story-board-aeiEUlbU.js → volter-sdk-authoring-react-story-board-BlCQQM-8.js} +1 -1
  42. package/dist/assets/volter-sdk-authoring-seam-evidence-CjetY_ZG.js +1 -0
  43. package/dist/assets/volter-sdk-authoring-selection-scope-BxmbC71H.js +1 -0
  44. package/dist/assets/volter-sdk-authoring-shell-document-ops-DDb8oGx9.js +1 -0
  45. package/dist/assets/volter-sdk-authoring-stage-root-B50LLhnJ.js +1 -0
  46. package/dist/assets/volter-sdk-authoring-story-board-chrome-fit-BVV9fbcw.js +1 -0
  47. package/dist/assets/{volter-sdk-authoring-viewport-tool-context-DzsD6JQH.js → volter-sdk-authoring-viewport-tool-context-cQafPSkT.js} +1 -1
  48. package/dist/assets/volter-sdk-authoring-viewport-tool-owner-BppqL4f_.js +1 -0
  49. package/dist/assets/volter-sdk-authoring-world-session-state-BlpdiKod.js +1 -0
  50. package/dist/assets/volter-sdk-bitmap-label-BbtGPWgP.js +1 -0
  51. package/dist/assets/{volter-sdk-breakpoint-state-BPnDN_XU.js → volter-sdk-breakpoint-state-DCFuSvgm.js} +1 -1
  52. package/dist/assets/volter-sdk-bytes-codec-CrNeVT4e.js +1 -0
  53. package/dist/assets/volter-sdk-cancellation-reason-ByOH3mlF.js +1 -0
  54. package/dist/assets/volter-sdk-canvas-frames-BU8Rqr4J.js +1 -0
  55. package/dist/assets/volter-sdk-capture-size-D4cNT2XC.js +1 -0
  56. package/dist/assets/volter-sdk-chrome-registry-qHUiDauw.js +1 -0
  57. package/dist/assets/volter-sdk-command-result-text-2wzEhQ5t.js +1 -0
  58. package/dist/assets/volter-sdk-commands-C4RgHEOa.js +1 -0
  59. package/dist/assets/volter-sdk-component-board-registry-6gFZBkTP.js +1 -0
  60. package/dist/assets/volter-sdk-components-AssetEditorShell-CQVLedvW.js +1 -0
  61. package/dist/assets/volter-sdk-components-InspectorCanvasPreview-CN5ROhNT.js +1 -0
  62. package/dist/assets/volter-sdk-components-SurfaceStateOverlay-Cc9Ov1Ol.js +1 -0
  63. package/dist/assets/{volter-sdk-components-AssetEditorShell-BJL1am3b.js → volter-sdk-components-Toolbar-ZoV9Yq_A.js} +1 -1
  64. package/dist/assets/volter-sdk-components-TransientHint-BML2V3uu.js +1 -0
  65. package/dist/assets/volter-sdk-components-inspector-preview-section-BhDjhUyz.js +1 -0
  66. package/dist/assets/volter-sdk-components-use-after-paint-BVSO4qjV.js +1 -0
  67. package/dist/assets/volter-sdk-components-workspace-history-CThvGfsY.js +1 -0
  68. package/dist/assets/volter-sdk-content-entry-source-registry-CJLVq3tC.js +1 -0
  69. package/dist/assets/volter-sdk-contribution-surfaces-CeEDmriM.js +1 -0
  70. package/dist/assets/volter-sdk-contributions-x6j41XZp.js +1 -0
  71. package/dist/assets/volter-sdk-coverage-design-time-surfaces-D-tNGazo.js +1 -0
  72. package/dist/assets/volter-sdk-creation-site-registry-64gyrZPD.js +1 -0
  73. package/dist/assets/volter-sdk-css-numeric-style-CXeWqAoG.js +1 -0
  74. package/dist/assets/volter-sdk-declared-tools-BAzHxyUW.js +1 -0
  75. package/dist/assets/{volter-sdk-document-areas-x47hqeuC.js → volter-sdk-document-areas-4DXjy0el.js} +1 -1
  76. package/dist/assets/volter-sdk-document-layer-B4VYMPZ9.js +1 -0
  77. package/dist/assets/volter-sdk-document-open-registry-BLDMaEoN.js +1 -0
  78. package/dist/assets/volter-sdk-document-play-extension-Dv3fyS6K.js +1 -0
  79. package/dist/assets/volter-sdk-document-probe-drBhAyza.js +1 -0
  80. package/dist/assets/volter-sdk-document-stage-sessions-CtI9anAf.js +1 -0
  81. package/dist/assets/volter-sdk-document-viewports-BO0N7VyN.js +1 -0
  82. package/dist/assets/volter-sdk-editor-commands-BJ9Otxzu.js +1 -0
  83. package/dist/assets/volter-sdk-editor-console-BaGgfWmH.js +1 -0
  84. package/dist/assets/volter-sdk-editor-document-probe-D0ZhaXHx.js +1 -0
  85. package/dist/assets/volter-sdk-editor-mode-B07FDozS.js +1 -0
  86. package/dist/assets/volter-sdk-editor-runtime-D00Du7hG.js +1 -0
  87. package/dist/assets/volter-sdk-editor-server-response-C6kOPAsW.js +1 -0
  88. package/dist/assets/volter-sdk-editor-session-attribution-CggpIFb4.js +1 -0
  89. package/dist/assets/volter-sdk-editor-view-DEMsxlaT.js +1 -0
  90. package/dist/assets/volter-sdk-environment-images-OQtFG1kA.js +1 -0
  91. package/dist/assets/volter-sdk-extension-script-DanTHcyo.js +1 -0
  92. package/dist/assets/volter-sdk-eyedropper-session-BfVXtjzc.js +1 -0
  93. package/dist/assets/volter-sdk-files-file-provider-CXL6oCMd.js +1 -0
  94. package/dist/assets/volter-sdk-files-project-files-SBAE37py.js +1 -0
  95. package/dist/assets/volter-sdk-framed-document-capture-7TnE8pn1.js +1 -0
  96. package/dist/assets/volter-sdk-framed-document-driver-C0K3-SRt.js +1 -0
  97. package/dist/assets/volter-sdk-hierarchy-component-marks-BmJEMvvO.js +1 -0
  98. package/dist/assets/volter-sdk-hierarchy-kind-icon-CrwdpecY.js +1 -0
  99. package/dist/assets/{volter-sdk-hierarchy-node-rows-CNCdvWZM.js → volter-sdk-hierarchy-node-rows-FcK7_ULi.js} +1 -1
  100. package/dist/assets/{volter-sdk-hierarchy-projection-BXet4MmW.js → volter-sdk-hierarchy-projection-CKzUOZUa.js} +1 -1
  101. package/dist/assets/volter-sdk-hierarchy-row-media-Czg40Ddi.js +1 -0
  102. package/dist/assets/volter-sdk-hierarchy-row-model-BGzmcywF.js +1 -0
  103. package/dist/assets/volter-sdk-hierarchy-rows-VAI0psTR.js +1 -0
  104. package/dist/assets/volter-sdk-hierarchy-walk-CaVqG7v2.js +1 -0
  105. package/dist/assets/volter-sdk-history-history-delegate-DH_xBvdh.js +1 -0
  106. package/dist/assets/volter-sdk-history-history-service-D0n0Gl5Z.js +1 -0
  107. package/dist/assets/volter-sdk-history-persistence-coordinator-CcywAFdm.js +1 -0
  108. package/dist/assets/volter-sdk-history-resource-registry-DMTlnwGv.js +1 -0
  109. package/dist/assets/volter-sdk-history-snapshot-store-BVh1DtBp.js +1 -0
  110. package/dist/assets/volter-sdk-history-source-history-backend-ulJ-65tX.js +1 -0
  111. package/dist/assets/volter-sdk-hmr-registration-group-DvMQVKyO.js +1 -0
  112. package/dist/assets/volter-sdk-hmr-stable-react-context-BMVr5YVk.js +1 -0
  113. package/dist/assets/volter-sdk-host-D765Py2w.js +1 -0
  114. package/dist/assets/{volter-sdk-hotkeys-D8xO5kx0.js → volter-sdk-hotkeys-TesTKdAZ.js} +1 -1
  115. package/dist/assets/{volter-sdk-index-CTFkHN4C.js → volter-sdk-index-BABXozHr.js} +1 -1
  116. package/dist/assets/volter-sdk-inference-diagnostics-CsDbQ0M5.js +1 -0
  117. package/dist/assets/volter-sdk-inspection-document-subject-BMRD77Va.js +1 -0
  118. package/dist/assets/volter-sdk-inspection-group-icons-Wpz-YhkE.js +1 -0
  119. package/dist/assets/volter-sdk-inspection-model-BVOyStdc.js +1 -0
  120. package/dist/assets/volter-sdk-inspection-node-media-B8AL8_3F.js +1 -0
  121. package/dist/assets/volter-sdk-inspection-null-subject-d5bQZCbS.js +1 -0
  122. package/dist/assets/volter-sdk-inspector-property-grouping-BqrZkwo4.js +1 -0
  123. package/dist/assets/volter-sdk-inspector-section-registry-C6U15zvC.js +1 -0
  124. package/dist/assets/volter-sdk-js-heap-CcOnY0kf.js +1 -0
  125. package/dist/assets/{volter-sdk-keymap-presets-Vq8J3DoG.js → volter-sdk-keymap-presets-CSM-jVcZ.js} +1 -1
  126. package/dist/assets/volter-sdk-layout-arrangements-DHA3uifx.js +1 -0
  127. package/dist/assets/volter-sdk-layouts-4v9ECCn9.js +1 -0
  128. package/dist/assets/volter-sdk-light-explorer-model-CPuZjpiR.js +1 -0
  129. package/dist/assets/volter-sdk-live-seam-evidence-B_RyDaOp.js +1 -0
  130. package/dist/assets/volter-sdk-live-session-registry-C6gHroaH.js +1 -0
  131. package/dist/assets/{volter-sdk-manifest-project-DIThdJ0z.js → volter-sdk-manifest-project-CVVUDDuL.js} +1 -1
  132. package/dist/assets/volter-sdk-mount-css-scope-DaJoEo3v.js +1 -0
  133. package/dist/assets/volter-sdk-mount-failure-report-Cm92oiGJ.js +1 -0
  134. package/dist/assets/volter-sdk-native-selection-style-Bp4IBnA4.js +1 -0
  135. package/dist/assets/volter-sdk-photograph-notice-C6_gZGpW.js +1 -0
  136. package/dist/assets/volter-sdk-play-camera-flight-SwlYhOxW.js +1 -0
  137. package/dist/assets/volter-sdk-product-command-G8kKVJ-i.js +1 -0
  138. package/dist/assets/volter-sdk-progress-4GGmPvZn.js +1 -0
  139. package/dist/assets/volter-sdk-project-module-changes-DIrDIHeD.js +1 -0
  140. package/dist/assets/volter-sdk-project-module-url-BuAUWpus.js +1 -0
  141. package/dist/assets/volter-sdk-project-output-roots-BON7FOwQ.js +1 -0
  142. package/dist/assets/{volter-sdk-project-tab-census-Cos8L4lu.js → volter-sdk-project-tab-census-CO06UOh-.js} +1 -1
  143. package/dist/assets/volter-sdk-renderer-resource-counts-2kLiD8_S.js +1 -0
  144. package/dist/assets/volter-sdk-scoped-project-css-DA63CYkM.js +1 -0
  145. package/dist/assets/volter-sdk-selection-CSUq7EiY.js +1 -0
  146. package/dist/assets/volter-sdk-served-url-B_MypeId.js +1 -0
  147. package/dist/assets/volter-sdk-settings-settings-provider-CJuWxTB5.js +1 -0
  148. package/dist/assets/volter-sdk-settings-store-CEFKDj0h.js +1 -0
  149. package/dist/assets/volter-sdk-shell-store-Cl4sX9p4.js +1 -0
  150. package/dist/assets/volter-sdk-shell-store-door-DGjybg0J.js +1 -0
  151. package/dist/assets/volter-sdk-source-conflict-CV8Gk053.js +1 -0
  152. package/dist/assets/volter-sdk-stage-context-Cb0SaYhi.js +1 -0
  153. package/dist/assets/volter-sdk-stage-invalidation-VlBciYA0.js +1 -0
  154. package/dist/assets/volter-sdk-stage-store-registry-BpIy_QKq.js +1 -0
  155. package/dist/assets/{volter-sdk-startup-failure-CtJyTS-2.js → volter-sdk-startup-failure-C_8H4xuP.js} +1 -1
  156. package/dist/assets/{volter-sdk-stories-StoryPreviewMount-DjhZUmf-.js → volter-sdk-stories-StoryPreviewMount-BUX42gIR.js} +1 -1
  157. package/dist/assets/volter-sdk-stories-compose-project-stories-CkSd4Si5.js +1 -0
  158. package/dist/assets/volter-sdk-stories-scope-Dndn7MD8.js +1 -0
  159. package/dist/assets/volter-sdk-stories-story-declared-medium-Byi4XWeJ.js +1 -0
  160. package/dist/assets/volter-sdk-stories-story-dom-runtime-BS1VPvJ6.js +1 -0
  161. package/dist/assets/volter-sdk-stories-story-grouping-CpNh4cUf.js +1 -0
  162. package/dist/assets/{volter-sdk-story-document-openers-Df7Tcu2n.js → volter-sdk-story-document-openers-Ba5jQqay.js} +1 -1
  163. package/dist/assets/volter-sdk-surface-state-BhQ45ars.js +1 -0
  164. package/dist/assets/volter-sdk-tab-census-D0r0s37y.js +1 -0
  165. package/dist/assets/volter-sdk-tool-contribution-convention-JCXL6f2w.js +1 -0
  166. package/dist/assets/volter-sdk-transform-mode-request-Cwk_Kyty.js +1 -0
  167. package/dist/assets/volter-sdk-transient-hint-BOfFzAV8.js +1 -0
  168. package/dist/assets/{volter-sdk-types-BOfYN_tN.js → volter-sdk-types-CkT8l5N_.js} +1 -1
  169. package/dist/assets/volter-sdk-ui-source-file-region-resolver-Cfza3eEl.js +1 -0
  170. package/dist/assets/{volter-sdk-ui-source-inspect-gofMOHNR.js → volter-sdk-ui-source-inspect-CEjmAN75.js} +1 -1
  171. package/dist/assets/{volter-sdk-ui-source-source-write-backend-BgVis1yZ.js → volter-sdk-ui-source-source-write-backend-0njgRdI6.js} +1 -1
  172. package/dist/assets/volter-sdk-ui-source-tier-source-write-backend-CpsxorYU.js +1 -0
  173. package/dist/assets/volter-sdk-viewport-activation-timings-B3hRTu3A.js +1 -0
  174. package/dist/assets/volter-sdk-viewport-editor-controls-DDBd-VqO.js +1 -0
  175. package/dist/assets/volter-sdk-viewport-presentation-DRhiAH1h.js +1 -0
  176. package/dist/assets/volter-sdk-volter-contributions-nlGXjgJZ.js +1 -0
  177. package/dist/assets/volter-sdk-wait-until-CMvYQmO8.js +1 -0
  178. package/dist/assets/volter-sdk-widgets-design-system-BJOyO8sO.js +1 -0
  179. package/dist/assets/volter-sdk-widgets-editor-appearance-eVtkxsIm.js +1 -0
  180. package/dist/assets/volter-sdk-widgets-editor-material-BoQP_5SK.js +1 -0
  181. package/dist/assets/volter-sdk-widgets-icon-set-registry-CP0D74kc.js +1 -0
  182. package/dist/assets/volter-sdk-widgets-index-De34FpYu.js +1 -0
  183. package/dist/assets/volter-sdk-widgets-inspector-widgets-AlignmentGrid-_GjMjIGb.js +1 -0
  184. package/dist/assets/volter-sdk-widgets-inspector-widgets-AssetSlotPicker-B7vN7BEd.js +1 -0
  185. package/dist/assets/volter-sdk-widgets-inspector-widgets-BorderEditor-E2J8cpyT.js +1 -0
  186. package/dist/assets/volter-sdk-widgets-inspector-widgets-ColorPicker-D6TERGKs.js +1 -0
  187. package/dist/assets/volter-sdk-widgets-inspector-widgets-CurveEditor-CXR8n-CA.js +1 -0
  188. package/dist/assets/{volter-sdk-widgets-inspector-widgets-FilterEditor-DKkdim3n.js → volter-sdk-widgets-inspector-widgets-FilterEditor-CDvfWY4Q.js} +1 -1
  189. package/dist/assets/volter-sdk-widgets-inspector-widgets-FontPicker-BgpW8FW8.js +1 -0
  190. package/dist/assets/volter-sdk-widgets-inspector-widgets-GradientEditor-DOOBkXjY.js +1 -0
  191. package/dist/assets/volter-sdk-widgets-inspector-widgets-ScrubbableInput-1NXWR_gB.js +1 -0
  192. package/dist/assets/volter-sdk-widgets-inspector-widgets-ShadowEditor-Cd2-HwFn.js +1 -0
  193. package/dist/assets/volter-sdk-widgets-inspector-widgets-color-utils-C4HuSjFu.js +1 -0
  194. package/dist/assets/volter-sdk-widgets-inspector-widgets-curve-utils-DUU2CCtc.js +1 -0
  195. package/dist/assets/volter-sdk-widgets-inspector-widgets-index-D5kwrOUQ.js +1 -0
  196. package/dist/assets/volter-sdk-widgets-inspector-widgets-shared-CkFN2SUn.js +1 -0
  197. package/dist/assets/volter-sdk-widgets-interactive-edit-scope-DynpKMMZ.js +1 -0
  198. package/dist/assets/{volter-sdk-widgets-palette-colors-Byzw9YHf.js → volter-sdk-widgets-palette-colors-DhL1I42R.js} +1 -1
  199. package/dist/assets/volter-sdk-widgets-patterns-Dialog-EUtcZi0Y.js +1 -0
  200. package/dist/assets/volter-sdk-widgets-patterns-Fields-Bl_eaBej.js +1 -0
  201. package/dist/assets/volter-sdk-widgets-patterns-List--NE_1N5-.js +1 -0
  202. package/dist/assets/volter-sdk-widgets-patterns-StateSurface-BHXpv7qi.js +1 -0
  203. package/dist/assets/volter-sdk-widgets-patterns-Surfaces-BdKa5HGV.js +1 -0
  204. package/dist/assets/volter-sdk-widgets-patterns-Tabs-sFV7f1UP.js +1 -0
  205. package/dist/assets/volter-sdk-widgets-patterns-Toolbar-CIr5Cs49.js +1 -0
  206. package/dist/assets/volter-sdk-widgets-patterns-Tree-C2YHfddf.js +1 -0
  207. package/dist/assets/volter-sdk-widgets-primitives-AnchoredMenu-DCclspnW.js +1 -0
  208. package/dist/assets/volter-sdk-widgets-primitives-Button-B0YxR4ea.js +1 -0
  209. package/dist/assets/volter-sdk-widgets-primitives-ColorInput-B1_SLTuc.js +1 -0
  210. package/dist/assets/volter-sdk-widgets-primitives-DraftTextInput-CpHzPdt8.js +1 -0
  211. package/dist/assets/volter-sdk-widgets-primitives-EditorIcon-Dw4knhya.js +1 -0
  212. package/dist/assets/volter-sdk-widgets-primitives-FormControls-BAbRanmE.js +1 -0
  213. package/dist/assets/volter-sdk-widgets-primitives-HoverPreview-Cj7jKNd4.js +1 -0
  214. package/dist/assets/volter-sdk-widgets-primitives-JsonInput-C0DCI5bE.js +1 -0
  215. package/dist/assets/volter-sdk-widgets-primitives-Layout-gT4Z6mtt.js +1 -0
  216. package/dist/assets/volter-sdk-widgets-primitives-Menu-9EESAp9m.js +1 -0
  217. package/dist/assets/volter-sdk-widgets-primitives-NumberInput-Dk-5zqJ8.js +1 -0
  218. package/dist/assets/volter-sdk-widgets-primitives-Panel-BQWJF-Pb.js +1 -0
  219. package/dist/assets/volter-sdk-widgets-primitives-SectionHeader-DXvmafCK.js +1 -0
  220. package/dist/assets/volter-sdk-widgets-primitives-Text-yBrdWK2w.js +1 -0
  221. package/dist/assets/volter-sdk-widgets-primitives-ThemeRootPortal-CRhefpUL.js +1 -0
  222. package/dist/assets/volter-sdk-widgets-primitives-Tooltip-D5Kcb-ZC.js +1 -0
  223. package/dist/assets/volter-sdk-widgets-primitives-Vec3Input-DiG6PEIe.js +1 -0
  224. package/dist/assets/volter-sdk-widgets-primitives-clamp-to-viewport-DhnSxXVK.js +1 -0
  225. package/dist/assets/volter-sdk-widgets-primitives-editor-icons-e65mgyAk.js +1 -0
  226. package/dist/assets/volter-sdk-widgets-primitives-panel-header-styles-BVL0mN8g.js +1 -0
  227. package/dist/assets/volter-sdk-widgets-theme-C-_RU9Ov.js +1 -0
  228. package/dist/assets/volter-sdk-widgets-z-index-CrJJXeKL.js +1 -0
  229. package/dist/assets/volter-sdk-worker-call-metrics-BTfmngck.js +1 -0
  230. package/dist/assets/{volter-sdk-workspace-core-utilities-BaAh2Ei8.js → volter-sdk-workspace-core-utilities-DtHGK9PF.js} +1 -1
  231. package/dist/assets/volter-sdk-workspace-document-ids-COULA7c6.js +1 -0
  232. package/dist/assets/volter-sdk-workspace-document-registry-6m5csVP7.js +1 -0
  233. package/dist/assets/volter-sdk-workspace-document-restore-M8ifJMou.js +1 -0
  234. package/dist/assets/{volter-sdk-workspace-host-commands-72RdJeW4.js → volter-sdk-workspace-host-commands-8Qzej--P.js} +1 -1
  235. package/dist/assets/volter-sdk-workspace-static-panels-Ckk7qUuS.js +1 -0
  236. package/dist/assets/volter-sdk-workspace-status-registry-BdU0dZAt.js +1 -0
  237. package/dist/assets/volter-sdk-workspace-utility-registry-BHxymD2l.js +1 -0
  238. package/dist/assets/volter-sdk-world-canvas-viewport-state-CHO8s9gE.js +1 -0
  239. package/dist/assets/volter-sdk-world-pan-state-C-9xgzAh.js +1 -0
  240. package/dist/assets/volter-sdk-write-pipe-CJHg7J4i.js +1 -0
  241. package/dist/assets/{volter-shared-fontawesome-B-OhfZs4.js → volter-shared-fontawesome-BEv9WEZj.js} +1 -1
  242. package/dist/assets/{volter-shared-jsx-dev-runtime-akPt_-OI.js → volter-shared-jsx-dev-runtime-domcKDU3.js} +1 -1
  243. package/dist/assets/{volter-shared-jsx-runtime-CKQtDN6l.js → volter-shared-jsx-runtime-Cu7pVW-1.js} +1 -1
  244. package/dist/assets/{volter-shared-react-STQK0zHl.js → volter-shared-react-BLHga76C.js} +1 -1
  245. package/dist/assets/volter-shared-react-dom-client-vi6WsWu2.js +1 -0
  246. package/dist/assets/{volter-shared-react-dom-2aA0eyQg.js → volter-shared-react-dom-kzJVGsQd.js} +1 -1
  247. package/dist/assets/volter-shared-three-BWbOWtM5.js +4220 -0
  248. package/dist/volter-shared-modules.json +225 -225
  249. package/dist/volter-shared-react.json +6 -6
  250. package/dist/volter-shared-three.json +1 -1
  251. package/dist-node/cli.js +182 -127
  252. package/dist-node/create.js +18 -21
  253. package/package.json +16 -16
  254. package/src/index.ts +1 -2
  255. package/src/product-id.d.ts +4 -0
  256. package/starter/AGENTS.md +132 -157
  257. package/starter/game/levels/MainLevel.tsx +24 -0
  258. package/starter/game/prefabs/ground/Ground.tsx +24 -0
  259. package/starter/game/{levels → prefabs/ground}/ground.blend +0 -0
  260. package/starter/game/prefabs/ground/ground.glb +0 -0
  261. package/starter/game/prefabs/ground/ground.py +106 -0
  262. package/dist/assets/AudioViewer-EMpvKC-X.js +0 -1
  263. package/dist/assets/BVHLoader-CpdLvOHd.js +0 -1
  264. package/dist/assets/ColladaLoader-D1GMlAA9.js +0 -3
  265. package/dist/assets/EntityModelDocument-rYF-p8Fo.js +0 -1
  266. package/dist/assets/EnvironmentAssetDocument-DfykWLLS.js +0 -1
  267. package/dist/assets/FBXLoader-DKZ0UD3F.js +0 -1
  268. package/dist/assets/ImageViewer-B0OqXrVU.js +0 -1
  269. package/dist/assets/InspectorObjectPreview-CwCqdv76.js +0 -1
  270. package/dist/assets/JsonAssetDocument-PzzxK-v9.js +0 -2
  271. package/dist/assets/LiveModuleDocument-Bq9J5nMx.js +0 -1
  272. package/dist/assets/LutAssetDocument-CyzgDCYJ.js +0 -1
  273. package/dist/assets/MTLLoader-BOaPmAvY.js +0 -2
  274. package/dist/assets/ModelAssetDocument-8he5iZqV.js +0 -1
  275. package/dist/assets/OBJLoader-BLg7dmPe.js +0 -5
  276. package/dist/assets/Object3DDocumentToolbar-CLfEn5i-.js +0 -1
  277. package/dist/assets/Object3DDocumentToolbar-WK1RY6Gg.css +0 -1
  278. package/dist/assets/OrbitControls-DxYDYiEc.js +0 -1
  279. package/dist/assets/PLYLoader-bAg6lYzP.js +0 -2
  280. package/dist/assets/ProjectAuthoringBootstrap-FVTj-Ag9.js +0 -2
  281. package/dist/assets/QuarksAssetDocument-DBJQXZ9u.js +0 -2
  282. package/dist/assets/RectAreaLightUniformsLib-CQLblkbI.js +0 -1
  283. package/dist/assets/STLLoader-C8jImL_t.js +0 -1
  284. package/dist/assets/ShaderAssetDocument-C3QolcYl.js +0 -12
  285. package/dist/assets/SourceAssetViewer-xB9kAyPa.js +0 -1
  286. package/dist/assets/StageHost-BZBLHaPe.css +0 -1
  287. package/dist/assets/StageHost-xYvmzMBo.js +0 -1231
  288. package/dist/assets/TDSLoader-DLNvOc6c.js +0 -1
  289. package/dist/assets/ToolObject3DPreview-4XgGyXTu.js +0 -2
  290. package/dist/assets/VideoViewer-BruuQyu3.js +0 -1
  291. package/dist/assets/ViewportShadingMenu-amXbnRtl.js +0 -1
  292. package/dist/assets/animation-mixers.service-Ce1JMqA2.js +0 -1
  293. package/dist/assets/animation-timeline.utility-CzsUvu3v.js +0 -1
  294. package/dist/assets/asset-preview-CtqauM13.js +0 -4
  295. package/dist/assets/basis_transcoder-VXdx5NbI.wasm +0 -0
  296. package/dist/assets/basis_transcoder-o4Hde_L7.js +0 -19
  297. package/dist/assets/blender-base64-Cxqc4R5f.js +0 -1
  298. package/dist/assets/blender-display-shaders-BPmHILFy.lut +0 -0
  299. package/dist/assets/blender-emscripten-engine-Bl_j9xEY.js +0 -26
  300. package/dist/assets/blender-motion-worker-CtT2cV3V.js +0 -1
  301. package/dist/assets/blender-node-editor.document-lj1qK5Vu.js +0 -1
  302. package/dist/assets/blender-outliner-model-BqLWEXta.js +0 -7359
  303. package/dist/assets/blender-properties-model-DD-2sMKx.js +0 -1
  304. package/dist/assets/blender-properties-tab-BmudfsC3.js +0 -3
  305. package/dist/assets/blender-runtime.document-IVSATTnk.js +0 -13
  306. package/dist/assets/blender-screenshot.service-BRgdtDQC.js +0 -1
  307. package/dist/assets/blender-timeline.document-8jLaNF31.js +0 -1
  308. package/dist/assets/blender-uv-editor.document-BVcA7mi2.js +0 -1
  309. package/dist/assets/blender-version.status-B43F7DzT.js +0 -2
  310. package/dist/assets/blender-wali-engine-xLHhm0KZ.js +0 -2
  311. package/dist/assets/blender.environment-CG-pC7sk.js +0 -1
  312. package/dist/assets/blender.keymap-pRN8nlCs.js +0 -1
  313. package/dist/assets/blender.page-BYbkmFDE.js +0 -3
  314. package/dist/assets/blender.status-CcKJxsZ1.js +0 -1
  315. package/dist/assets/blender.style-DuFonR-j.js +0 -1
  316. package/dist/assets/chat.page-DzuAKPGP.js +0 -1
  317. package/dist/assets/city-EkhAOo5s.exr +0 -0
  318. package/dist/assets/courtyard-DqlebbpC.exr +0 -0
  319. package/dist/assets/draco_decoder-C32yEggz.wasm +0 -0
  320. package/dist/assets/draco_decoder-Z1_iN-Ht.wasm +0 -0
  321. package/dist/assets/draco_decoder-fzg4nYZr.js +0 -34
  322. package/dist/assets/draco_wasm_wrapper-DxJM36Ib.js +0 -117
  323. package/dist/assets/draco_wasm_wrapper-fZCQGLGb.js +0 -116
  324. package/dist/assets/editor-presentation-activity-CqJH4G9t.js +0 -1
  325. package/dist/assets/forest-P_CQY3b_.exr +0 -0
  326. package/dist/assets/index-C4uuH2ZE.css +0 -1
  327. package/dist/assets/index-DlAJXb_f.js +0 -952
  328. package/dist/assets/interior-Bo_lba15.exr +0 -0
  329. package/dist/assets/linear-resolve-B-MA5O31.js +0 -400
  330. package/dist/assets/live-mixers-B-bwLZ7c.js +0 -1
  331. package/dist/assets/maya.style-C3zx8RC5.js +0 -1
  332. package/dist/assets/model-inspection-_SFE7cp7.js +0 -1
  333. package/dist/assets/model.layout-CX-vaeBh.js +0 -1
  334. package/dist/assets/models.finder-DcOx-jsM.js +0 -1
  335. package/dist/assets/mtoon0-BNRZGBf8.blend +0 -0
  336. package/dist/assets/mtoon1-EgrxQlCc.blend +0 -0
  337. package/dist/assets/mtoon1_outline-xuubMJ8J.blend +0 -0
  338. package/dist/assets/mtoon_auto_setup-BF1c8USg.blend +0 -0
  339. package/dist/assets/night-CvV4Gybt.exr +0 -0
  340. package/dist/assets/object3d-document-session-registry-DvgzaByQ.js +0 -2
  341. package/dist/assets/output-pass-Bw2FZb8e.js +0 -85
  342. package/dist/assets/play-mode-BGq1Hn-c.js +0 -1
  343. package/dist/assets/play.page-DB2UjY0o.js +0 -1
  344. package/dist/assets/product-OBHh_Udv.js +0 -1
  345. package/dist/assets/properties-bone-constraints.inspector-NWLfoFX1.js +0 -1
  346. package/dist/assets/properties-bone.inspector-DybmNdBB.js +0 -1
  347. package/dist/assets/properties-collection.inspector-Cg7Jq6yG.js +0 -1
  348. package/dist/assets/properties-constraints.inspector-DY--pvLo.js +0 -1
  349. package/dist/assets/properties-data.inspector-CP1lurLb.js +0 -1
  350. package/dist/assets/properties-material.inspector-K8Qx5wr9.js +0 -1
  351. package/dist/assets/properties-modifiers.inspector-DOfP-8mX.js +0 -1
  352. package/dist/assets/properties-object.inspector-sqx6qMyu.js +0 -1
  353. package/dist/assets/properties-output.inspector-CUYUEC6S.js +0 -1
  354. package/dist/assets/properties-particles.inspector-oAWorORY.js +0 -1
  355. package/dist/assets/properties-physics.inspector-CQIHdcOy.js +0 -1
  356. package/dist/assets/properties-render.inspector-XTzdYo4u.js +0 -1
  357. package/dist/assets/properties-scene.inspector-BytOBuw9.js +0 -1
  358. package/dist/assets/properties-texture.inspector-2WNelhHG.js +0 -1
  359. package/dist/assets/properties-view-layer.inspector-DVSdqosc.js +0 -1
  360. package/dist/assets/properties-world.inspector-CHHm7g3j.js +0 -1
  361. package/dist/assets/regions-BlV6hTFd.js +0 -1
  362. package/dist/assets/sculpt.layout-BkvEflSA.js +0 -1
  363. package/dist/assets/session-addons-KcG0o7Xc.js +0 -76898
  364. package/dist/assets/shading.layout-V9LTFaVk.js +0 -1
  365. package/dist/assets/sky-precompute-worker-CPGW9t_C.js +0 -1
  366. package/dist/assets/spark.module-Cc-ZVx5e.js +0 -12120
  367. package/dist/assets/stage-keyboard-Rgvt63qI.js +0 -1
  368. package/dist/assets/stage-overlay-set-juTRuk99.js +0 -1
  369. package/dist/assets/stage-presence-markers-XsGUs3S-.js +0 -1
  370. package/dist/assets/stage-transform-tools-BE7m4omf.js +0 -1
  371. package/dist/assets/standard-viewport-dressing-asIXnD-w.js +0 -24
  372. package/dist/assets/std-scene-level-DeiReu6Z.js +0 -13
  373. package/dist/assets/std-scene.document-DyWMJhxA.js +0 -1
  374. package/dist/assets/story-capture-Y8_YS5DC.js +0 -1
  375. package/dist/assets/studio-CysTBGIb.exr +0 -0
  376. package/dist/assets/substance.style-CoQdG-kF.js +0 -1
  377. package/dist/assets/sunrise-Dj0psFrf.exr +0 -0
  378. package/dist/assets/sunset-Bw3x2Bot.exr +0 -0
  379. package/dist/assets/texture.layout-DASpHVht.js +0 -1
  380. package/dist/assets/three.module-JoAAxMWl.js +0 -4220
  381. package/dist/assets/three.page-Dy2q5JEV.js +0 -2
  382. package/dist/assets/transparent_z_write-xIRcVb2w.blend +0 -0
  383. package/dist/assets/transport-strip-cKO8FHd1.js +0 -1
  384. package/dist/assets/uv-editing.layout-CF_54oSA.js +0 -1
  385. package/dist/assets/volter-sdk-D8o6TU4A.js +0 -1407
  386. package/dist/assets/volter-sdk-activation-events-DVerKSly.js +0 -1
  387. package/dist/assets/volter-sdk-active-project-f6toeBI4.js +0 -1
  388. package/dist/assets/volter-sdk-adapter-editor-config-DpARQ4TT.js +0 -1
  389. package/dist/assets/volter-sdk-animation-animation-clock-BGyYYQu-.js +0 -1
  390. package/dist/assets/volter-sdk-animation-stage-transport-DWmyow46.js +0 -1
  391. package/dist/assets/volter-sdk-api-base-jDs2XVgE.js +0 -1
  392. package/dist/assets/volter-sdk-api-project-open-BAXokZLA.js +0 -1
  393. package/dist/assets/volter-sdk-api-project-source-D6FB4SmO.js +0 -1
  394. package/dist/assets/volter-sdk-api-settings-DqgndoPA.js +0 -1
  395. package/dist/assets/volter-sdk-asset-capabilities-B5mXIYBM.js +0 -1
  396. package/dist/assets/volter-sdk-asset-document-write-policy-B5aaFAwu.js +0 -1
  397. package/dist/assets/volter-sdk-asset-editor-context-BjtZQVgF.js +0 -1
  398. package/dist/assets/volter-sdk-asset-thumbnails-CROlpqPM.js +0 -1
  399. package/dist/assets/volter-sdk-asset-viewers-BejvElAX.js +0 -1
  400. package/dist/assets/volter-sdk-asset-workflow-project-content-D8h-TsJc.js +0 -1
  401. package/dist/assets/volter-sdk-authoring-active-adapter-DhKlZbyW.js +0 -1
  402. package/dist/assets/volter-sdk-authoring-boundary-authoring-adapter-xlppcGid.js +0 -1
  403. package/dist/assets/volter-sdk-authoring-composite-authoring-adapter-BfalSuB8.js +0 -1
  404. package/dist/assets/volter-sdk-authoring-consumer-actions-Hl6xkGAq.js +0 -1
  405. package/dist/assets/volter-sdk-authoring-design-time-mount-registry-2ZssbtYd.js +0 -1
  406. package/dist/assets/volter-sdk-authoring-design-time-roots-BNNZdEog.js +0 -1
  407. package/dist/assets/volter-sdk-authoring-layered-pick-AsUoH85M.js +0 -1
  408. package/dist/assets/volter-sdk-authoring-no-authoring-adapter-BX6sVPQX.js +0 -1
  409. package/dist/assets/volter-sdk-authoring-panel-authoring-BRs7fYSJ.js +0 -1
  410. package/dist/assets/volter-sdk-authoring-react-design-canvas-style-CdjO9_22.js +0 -1
  411. package/dist/assets/volter-sdk-authoring-seam-evidence-D58d2whR.js +0 -1
  412. package/dist/assets/volter-sdk-authoring-selection-scope-tqpilIPR.js +0 -1
  413. package/dist/assets/volter-sdk-authoring-shell-document-ops-ryosWWqt.js +0 -1
  414. package/dist/assets/volter-sdk-authoring-stage-root-yn7zP1QC.js +0 -1
  415. package/dist/assets/volter-sdk-authoring-story-board-chrome-fit-DgAAtVo8.js +0 -1
  416. package/dist/assets/volter-sdk-authoring-viewport-tool-owner-zIgbNhiQ.js +0 -1
  417. package/dist/assets/volter-sdk-authoring-world-session-state-DriMgIzp.js +0 -1
  418. package/dist/assets/volter-sdk-bitmap-label-Cwzw278F.js +0 -1
  419. package/dist/assets/volter-sdk-bytes-codec-CF2kvi68.js +0 -1
  420. package/dist/assets/volter-sdk-cancellation-reason-BQvS02ja.js +0 -1
  421. package/dist/assets/volter-sdk-canvas-frames-BkjDC0or.js +0 -1
  422. package/dist/assets/volter-sdk-capture-size-B3uOMPdw.js +0 -1
  423. package/dist/assets/volter-sdk-chrome-registry-Be1q89aJ.js +0 -1
  424. package/dist/assets/volter-sdk-command-result-text-DdPWoVLu.js +0 -1
  425. package/dist/assets/volter-sdk-commands-DI54EGoY.js +0 -1
  426. package/dist/assets/volter-sdk-component-board-registry-DtTf1V5m.js +0 -1
  427. package/dist/assets/volter-sdk-components-InspectorCanvasPreview-DpOxql_B.js +0 -1
  428. package/dist/assets/volter-sdk-components-SurfaceStateOverlay-BQ9KTVV1.js +0 -1
  429. package/dist/assets/volter-sdk-components-Toolbar-C6bwDRIc.js +0 -1
  430. package/dist/assets/volter-sdk-components-TransientHint-D3wtJ4fg.js +0 -1
  431. package/dist/assets/volter-sdk-components-inspector-preview-section-D1DnmKLE.js +0 -1
  432. package/dist/assets/volter-sdk-components-use-after-paint-ZgZgfmSR.js +0 -1
  433. package/dist/assets/volter-sdk-components-workspace-history-IZTWOoYh.js +0 -1
  434. package/dist/assets/volter-sdk-content-entry-source-registry-DV4a0g9R.js +0 -1
  435. package/dist/assets/volter-sdk-contribution-surfaces-BAzaKN1S.js +0 -1
  436. package/dist/assets/volter-sdk-contributions-D2D_badr.js +0 -1
  437. package/dist/assets/volter-sdk-coverage-design-time-surfaces-WtyoVY81.js +0 -1
  438. package/dist/assets/volter-sdk-creation-site-registry-DEJua1VB.js +0 -1
  439. package/dist/assets/volter-sdk-css-numeric-style-D1aEQUuP.js +0 -1
  440. package/dist/assets/volter-sdk-declared-tools-bEg2ZQju.js +0 -1
  441. package/dist/assets/volter-sdk-document-open-registry-BUdLp-BZ.js +0 -1
  442. package/dist/assets/volter-sdk-document-play-extension-BdtD2FcX.js +0 -1
  443. package/dist/assets/volter-sdk-document-probe-CvSMoXNj.js +0 -1
  444. package/dist/assets/volter-sdk-document-stage-sessions-BHE1T4gT.js +0 -1
  445. package/dist/assets/volter-sdk-document-viewports-BJqFXfe4.js +0 -1
  446. package/dist/assets/volter-sdk-editor-commands-CsYQVabs.js +0 -1
  447. package/dist/assets/volter-sdk-editor-console-lUTMRzeI.js +0 -1
  448. package/dist/assets/volter-sdk-editor-document-probe-BHRNXR9L.js +0 -1
  449. package/dist/assets/volter-sdk-editor-mode-BgYsrjin.js +0 -1
  450. package/dist/assets/volter-sdk-editor-runtime-CTy0Dw7-.js +0 -1
  451. package/dist/assets/volter-sdk-editor-server-response-oN9Horql.js +0 -1
  452. package/dist/assets/volter-sdk-editor-session-attribution-Ddoo0-e6.js +0 -1
  453. package/dist/assets/volter-sdk-editor-view-DEdcNl3N.js +0 -1
  454. package/dist/assets/volter-sdk-environment-images-Cbyno2vh.js +0 -1
  455. package/dist/assets/volter-sdk-extension-script-eemVEaFY.js +0 -1
  456. package/dist/assets/volter-sdk-eyedropper-session-BL5ceME-.js +0 -1
  457. package/dist/assets/volter-sdk-files-file-provider-D1vbGyMw.js +0 -1
  458. package/dist/assets/volter-sdk-files-project-files-CP9k503M.js +0 -1
  459. package/dist/assets/volter-sdk-framed-document-capture-DmqG4gUx.js +0 -1
  460. package/dist/assets/volter-sdk-framed-document-driver-B1ZAcb9l.js +0 -1
  461. package/dist/assets/volter-sdk-hierarchy-component-marks-DjtdLv04.js +0 -1
  462. package/dist/assets/volter-sdk-hierarchy-kind-icon-Dwlq9_xw.js +0 -1
  463. package/dist/assets/volter-sdk-hierarchy-row-media-CnFXPw4O.js +0 -1
  464. package/dist/assets/volter-sdk-hierarchy-row-model-TWxtUUdN.js +0 -1
  465. package/dist/assets/volter-sdk-hierarchy-rows-3Hl6K3Br.js +0 -1
  466. package/dist/assets/volter-sdk-hierarchy-walk-DvIomDWH.js +0 -1
  467. package/dist/assets/volter-sdk-history-history-delegate-RfZBUw9Y.js +0 -1
  468. package/dist/assets/volter-sdk-history-history-service-BWYajIYW.js +0 -1
  469. package/dist/assets/volter-sdk-history-persistence-coordinator-CmebAufQ.js +0 -1
  470. package/dist/assets/volter-sdk-history-resource-registry-CgjY-ErS.js +0 -1
  471. package/dist/assets/volter-sdk-history-snapshot-store-6Cq4Qau6.js +0 -1
  472. package/dist/assets/volter-sdk-history-source-history-backend-CilZiNDq.js +0 -1
  473. package/dist/assets/volter-sdk-hmr-registration-group-idNaexWq.js +0 -1
  474. package/dist/assets/volter-sdk-hmr-stable-react-context-DhY9rjD6.js +0 -1
  475. package/dist/assets/volter-sdk-host-BcQCyyIe.js +0 -1
  476. package/dist/assets/volter-sdk-inference-diagnostics-c4Aju1Jg.js +0 -1
  477. package/dist/assets/volter-sdk-inspection-document-subject-i64BmR5X.js +0 -1
  478. package/dist/assets/volter-sdk-inspection-group-icons-CWwhjZWt.js +0 -1
  479. package/dist/assets/volter-sdk-inspection-model-BgZVa_7l.js +0 -1
  480. package/dist/assets/volter-sdk-inspection-node-media-DNYb7ZDG.js +0 -1
  481. package/dist/assets/volter-sdk-inspection-null-subject-hK6kZbB7.js +0 -1
  482. package/dist/assets/volter-sdk-inspector-property-grouping-B-4_nVMm.js +0 -1
  483. package/dist/assets/volter-sdk-inspector-section-registry-DIYAa_rQ.js +0 -1
  484. package/dist/assets/volter-sdk-js-heap-DDws540T.js +0 -1
  485. package/dist/assets/volter-sdk-layout-arrangements-DdjnA7ET.js +0 -1
  486. package/dist/assets/volter-sdk-layouts-DcV6NQNu.js +0 -1
  487. package/dist/assets/volter-sdk-light-explorer-model-BoB1GjBo.js +0 -1
  488. package/dist/assets/volter-sdk-live-seam-evidence-BOvNn-o8.js +0 -1
  489. package/dist/assets/volter-sdk-live-session-registry--ftGWuRg.js +0 -1
  490. package/dist/assets/volter-sdk-mount-css-scope-BTi-3JA9.js +0 -1
  491. package/dist/assets/volter-sdk-mount-failure-report-BeR90-6n.js +0 -1
  492. package/dist/assets/volter-sdk-native-selection-style-70aZpb0m.js +0 -1
  493. package/dist/assets/volter-sdk-photograph-notice-BwuWgyiq.js +0 -1
  494. package/dist/assets/volter-sdk-play-camera-flight-CaSiTxDt.js +0 -1
  495. package/dist/assets/volter-sdk-product-command-Cf1utO0M.js +0 -1
  496. package/dist/assets/volter-sdk-project-module-changes-CIKyvjy2.js +0 -1
  497. package/dist/assets/volter-sdk-project-module-url-XzZmS9zs.js +0 -1
  498. package/dist/assets/volter-sdk-project-output-roots-B4bC82T9.js +0 -1
  499. package/dist/assets/volter-sdk-renderer-resource-counts-S3R39qoy.js +0 -1
  500. package/dist/assets/volter-sdk-scoped-project-css-Ch7LkU2q.js +0 -1
  501. package/dist/assets/volter-sdk-selection-C2gFhPip.js +0 -1
  502. package/dist/assets/volter-sdk-served-url-DxzhEpXR.js +0 -1
  503. package/dist/assets/volter-sdk-serving-engine-BclAA7ZZ.js +0 -1
  504. package/dist/assets/volter-sdk-settings-settings-provider-DGc5Xf46.js +0 -1
  505. package/dist/assets/volter-sdk-settings-store-Bmx-a8f0.js +0 -1
  506. package/dist/assets/volter-sdk-shell-store-door-CQlHDF_i.js +0 -1
  507. package/dist/assets/volter-sdk-shell-store-e-X3-CSz.js +0 -1
  508. package/dist/assets/volter-sdk-source-conflict-DEn0Z5Vq.js +0 -1
  509. package/dist/assets/volter-sdk-stage-context-CwBngGWz.js +0 -1
  510. package/dist/assets/volter-sdk-stage-invalidation-Bt1Gs-b2.js +0 -1
  511. package/dist/assets/volter-sdk-stage-store-registry-DtSMhopZ.js +0 -1
  512. package/dist/assets/volter-sdk-stories-compose-project-stories-DfgTy2Bp.js +0 -1
  513. package/dist/assets/volter-sdk-stories-scope-4lTT6I0H.js +0 -1
  514. package/dist/assets/volter-sdk-stories-story-declared-medium-BFcKINTP.js +0 -1
  515. package/dist/assets/volter-sdk-stories-story-dom-runtime-wAz1MhyJ.js +0 -1
  516. package/dist/assets/volter-sdk-stories-story-grouping-bVoaiX0-.js +0 -1
  517. package/dist/assets/volter-sdk-surface-keyboard-5u3olsPL.js +0 -1
  518. package/dist/assets/volter-sdk-surface-state-F5vfsPyq.js +0 -1
  519. package/dist/assets/volter-sdk-tab-census-B95O0nem.js +0 -1
  520. package/dist/assets/volter-sdk-tool-contribution-convention-k_AVbxWl.js +0 -1
  521. package/dist/assets/volter-sdk-transform-mode-request-CKhq0gIu.js +0 -1
  522. package/dist/assets/volter-sdk-transient-hint-DQMQ2_Y5.js +0 -1
  523. package/dist/assets/volter-sdk-ui-source-file-region-resolver-2Gw755Lw.js +0 -1
  524. package/dist/assets/volter-sdk-ui-source-tier-source-write-backend-BsEnWjJv.js +0 -1
  525. package/dist/assets/volter-sdk-viewport-activation-timings--7x_AkVR.js +0 -1
  526. package/dist/assets/volter-sdk-viewport-editor-controls-CFuNGxo6.js +0 -1
  527. package/dist/assets/volter-sdk-viewport-presentation-CoiYwzFE.js +0 -1
  528. package/dist/assets/volter-sdk-volter-contributions-DjgbZdIJ.js +0 -1
  529. package/dist/assets/volter-sdk-wait-until-DRdtM37d.js +0 -1
  530. package/dist/assets/volter-sdk-widgets-design-system-CPmOMXke.js +0 -1
  531. package/dist/assets/volter-sdk-widgets-editor-appearance-B4Q93899.js +0 -1
  532. package/dist/assets/volter-sdk-widgets-editor-material-C6dqUruc.js +0 -1
  533. package/dist/assets/volter-sdk-widgets-icon-set-registry-BOtjeU-M.js +0 -1
  534. package/dist/assets/volter-sdk-widgets-index-C2FSk2KK.js +0 -1
  535. package/dist/assets/volter-sdk-widgets-inspector-widgets-AlignmentGrid-ClaWmFsj.js +0 -1
  536. package/dist/assets/volter-sdk-widgets-inspector-widgets-AssetSlotPicker-DIoRDT6D.js +0 -1
  537. package/dist/assets/volter-sdk-widgets-inspector-widgets-BorderEditor-BcsoJNaT.js +0 -1
  538. package/dist/assets/volter-sdk-widgets-inspector-widgets-ColorPicker-p_xfUT04.js +0 -1
  539. package/dist/assets/volter-sdk-widgets-inspector-widgets-CurveEditor-RbGdt95N.js +0 -1
  540. package/dist/assets/volter-sdk-widgets-inspector-widgets-FontPicker-DxdmydaC.js +0 -1
  541. package/dist/assets/volter-sdk-widgets-inspector-widgets-GradientEditor-DZ0Z3l2P.js +0 -1
  542. package/dist/assets/volter-sdk-widgets-inspector-widgets-ScrubbableInput-Byy_M7hB.js +0 -1
  543. package/dist/assets/volter-sdk-widgets-inspector-widgets-ShadowEditor-C9aPdbrZ.js +0 -1
  544. package/dist/assets/volter-sdk-widgets-inspector-widgets-color-utils-BJStispK.js +0 -1
  545. package/dist/assets/volter-sdk-widgets-inspector-widgets-curve-utils-C_5eRE_F.js +0 -1
  546. package/dist/assets/volter-sdk-widgets-inspector-widgets-index-BA3S0eIV.js +0 -1
  547. package/dist/assets/volter-sdk-widgets-inspector-widgets-shared-DHHUQexs.js +0 -1
  548. package/dist/assets/volter-sdk-widgets-interactive-edit-scope-CjuUPrEv.js +0 -1
  549. package/dist/assets/volter-sdk-widgets-patterns-Dialog-CQggdCbk.js +0 -1
  550. package/dist/assets/volter-sdk-widgets-patterns-Fields-D38At0E9.js +0 -1
  551. package/dist/assets/volter-sdk-widgets-patterns-List-ewRDByTO.js +0 -1
  552. package/dist/assets/volter-sdk-widgets-patterns-StateSurface-C8YqnN-5.js +0 -1
  553. package/dist/assets/volter-sdk-widgets-patterns-Surfaces-BjFrm6Mc.js +0 -1
  554. package/dist/assets/volter-sdk-widgets-patterns-Tabs-JZq1ce4h.js +0 -1
  555. package/dist/assets/volter-sdk-widgets-patterns-Toolbar-Bf61fc1T.js +0 -1
  556. package/dist/assets/volter-sdk-widgets-patterns-Tree-CwuVbaxj.js +0 -1
  557. package/dist/assets/volter-sdk-widgets-primitives-AnchoredMenu-Ch2ujeLH.js +0 -1
  558. package/dist/assets/volter-sdk-widgets-primitives-Button-d2WNMADR.js +0 -1
  559. package/dist/assets/volter-sdk-widgets-primitives-ColorInput-DP0WkwNs.js +0 -1
  560. package/dist/assets/volter-sdk-widgets-primitives-DraftTextInput-D1g1A89b.js +0 -1
  561. package/dist/assets/volter-sdk-widgets-primitives-EditorIcon-DAjALCvl.js +0 -1
  562. package/dist/assets/volter-sdk-widgets-primitives-FormControls-KBDCYHsT.js +0 -1
  563. package/dist/assets/volter-sdk-widgets-primitives-HoverPreview-D2qUt6_z.js +0 -1
  564. package/dist/assets/volter-sdk-widgets-primitives-JsonInput-DLs3kN1L.js +0 -1
  565. package/dist/assets/volter-sdk-widgets-primitives-Layout-DshSsm_4.js +0 -1
  566. package/dist/assets/volter-sdk-widgets-primitives-Menu-Ch-3iDys.js +0 -1
  567. package/dist/assets/volter-sdk-widgets-primitives-NumberInput-pdAN4aF3.js +0 -1
  568. package/dist/assets/volter-sdk-widgets-primitives-Panel-BNFSUDwP.js +0 -1
  569. package/dist/assets/volter-sdk-widgets-primitives-SectionHeader-5Hv-rso1.js +0 -1
  570. package/dist/assets/volter-sdk-widgets-primitives-Text-CtWC8t_L.js +0 -1
  571. package/dist/assets/volter-sdk-widgets-primitives-ThemeRootPortal-h0iinIvj.js +0 -1
  572. package/dist/assets/volter-sdk-widgets-primitives-Tooltip-Cllx19nM.js +0 -1
  573. package/dist/assets/volter-sdk-widgets-primitives-Vec3Input-CurGarFa.js +0 -1
  574. package/dist/assets/volter-sdk-widgets-primitives-clamp-to-viewport-0YxAdd5O.js +0 -1
  575. package/dist/assets/volter-sdk-widgets-primitives-editor-icons-ExQE8_SP.js +0 -1
  576. package/dist/assets/volter-sdk-widgets-primitives-panel-header-styles-DGmxyx4E.js +0 -1
  577. package/dist/assets/volter-sdk-widgets-theme-DOfZnIVM.js +0 -1
  578. package/dist/assets/volter-sdk-widgets-z-index-BpB2pf-w.js +0 -1
  579. package/dist/assets/volter-sdk-worker-call-metrics-Cdo-WjAp.js +0 -1
  580. package/dist/assets/volter-sdk-workspace-document-ids-CWVlaP7n.js +0 -1
  581. package/dist/assets/volter-sdk-workspace-document-registry-DoKaj8Fe.js +0 -1
  582. package/dist/assets/volter-sdk-workspace-document-restore-BOPAH61D.js +0 -1
  583. package/dist/assets/volter-sdk-workspace-static-panels-DZr1Q4n1.js +0 -1
  584. package/dist/assets/volter-sdk-workspace-status-registry-pIvpW3QR.js +0 -1
  585. package/dist/assets/volter-sdk-workspace-utility-registry-BRzyLcLs.js +0 -1
  586. package/dist/assets/volter-sdk-world-canvas-viewport-state-DeMws4Bu.js +0 -1
  587. package/dist/assets/volter-sdk-world-pan-state-Dpul1S4k.js +0 -1
  588. package/dist/assets/volter-sdk-write-pipe-vbjHAGKf.js +0 -1
  589. package/dist/assets/volter-shared-react-dom-client-B6uCXsbq.js +0 -1
  590. package/dist/assets/volter-shared-three-DSLGcAKx.js +0 -1
  591. package/dist/assets/worker-DeeaIXW_.js +0 -10
  592. package/src/contributions.d.ts +0 -9
  593. package/starter/game/client/index.tsx +0 -52
  594. package/starter/game/levels/GroundEnvironment.tsx +0 -15
  595. package/starter/game/levels/GroundLevel.tsx +0 -35
  596. package/starter/game/levels/ground.canvas.ts +0 -11
  597. package/starter/game/levels/ground.glb +0 -0
  598. package/starter/game/levels/ground.py +0 -142
@@ -0,0 +1,106 @@
1
+ # SPDX-License-Identifier: GPL-3.0-or-later
2
+ #
3
+ # THIS FILE IS GPL, AND THE REST OF YOUR PROJECT IS NOT.
4
+ #
5
+ # It drives `bpy`, Blender's Python API. The Blender Foundation's stated
6
+ # position — their licence page, under "Add-ons (Python scripts)" — is that
7
+ # the API "is an integral part of the software" and that the GPL "therefore
8
+ # requires that such scripts (if published) are being shared under a GPL
9
+ # compliant license". So a bpy script is a derivative work of Blender, and
10
+ # this one is licensed GNU General Public License version 3 or later,
11
+ # exercising Blender's own "or later".
12
+ #
13
+ # WHAT THIS DOES NOT TOUCH. `ground.blend` beside this file is YOURS, and so
14
+ # is anything you export from it — glTF, GLB, renders, the model's code std
15
+ # writes. That is the Foundation's position too, on the same page under "Your
16
+ # Artwork": what you make with Blender is your sole property, "including the
17
+ # .blend files and other data files Blender can write". This licence reaches
18
+ # this script and nothing else.
19
+ #
20
+ # If you would rather not carry it: delete this file. The `.blend` is the
21
+ # document — this is only the recorded source of how it was made — and
22
+ # nothing in the project reads this script at runtime. If you write your own
23
+ # bpy scripts, the Foundation's position applies to them on the same terms;
24
+ # it is not a rule of ours and is not ours to waive, because the copyright in
25
+ # Blender is Blender's authors'.
26
+ #
27
+ # Copyright 2026 Volter AI, Inc.
28
+
29
+ """The ground's model: the bpy that made `ground.blend`, and its SOURCE.
30
+
31
+ A model is a Blender file of its own under `prefabs/`: `ground.blend` is the
32
+ document the editor opens, and this is the script that authored it. Each save
33
+ of it in the editor runs std's export, which writes its code beside it
34
+ (`ground.glb`, `Ground.tsx`): `<Ground>` is the model as a component, which
35
+ the game's level (`levels/MainLevel.tsx`) places, lays out and lights in
36
+ code. Outside the editor, the same export is std's own command:
37
+
38
+ npx std level prefabs/ground/ground.blend prefabs/ground/ground.glb
39
+
40
+ What it holds: `Floor`, the ground, 40 m by 40 m and 1 m thick, its top at 0,
41
+ with its grass material; it receives shadows and casts none. Its collision,
42
+ the sun, the sky and where the players come in are the level's, in code.
43
+
44
+ Run it through the session's Blender in the editor, with `ground.blend` the
45
+ open document; the editor saves the open document about a second after the
46
+ last call. Outside the editor, run it headless to make the file again
47
+ (Blender 5.2):
48
+
49
+ blender -b --factory-startup --python prefabs/ground/ground.py
50
+
51
+ Coordinates are metres, Z is up (Blender's), and the exporter converts to the
52
+ game's Y-up on the way to glTF.
53
+ """
54
+
55
+ import os
56
+
57
+ import bpy
58
+
59
+
60
+ def srgb(hex_colour: str) -> tuple[float, float, float, float]:
61
+ """A CSS colour as Blender's linear RGBA."""
62
+ def linear(c: float) -> float:
63
+ return c / 12.92 if c <= 0.04045 else ((c + 0.055) / 1.055) ** 2.4
64
+ value = hex_colour.lstrip("#")
65
+ r, g, b = (int(value[i:i + 2], 16) / 255 for i in (0, 2, 4))
66
+ return (linear(r), linear(g), linear(b), 1.0)
67
+
68
+
69
+ # THE MODEL HOLDS THE MODEL: the factory startup's cube, light and camera go,
70
+ # and so does whatever an earlier run made.
71
+ for obj in list(bpy.data.objects):
72
+ bpy.data.objects.remove(obj, do_unlink=True)
73
+ for data in (bpy.data.meshes, bpy.data.materials, bpy.data.lights, bpy.data.cameras):
74
+ for block in list(data):
75
+ data.remove(block)
76
+ for collection in list(bpy.data.collections):
77
+ bpy.data.collections.remove(collection)
78
+
79
+ # A PREFAB IS ITS COLLECTION, which a level may also link (File › Link).
80
+ ground = bpy.data.collections.new("Ground")
81
+ bpy.context.scene.collection.children.link(ground)
82
+
83
+ # THE GROUND: a 40 m square, 1 m thick, its top at 0.
84
+ bpy.ops.mesh.primitive_cube_add(size=1.0, location=(0.0, 0.0, -0.5))
85
+ floor = bpy.context.active_object
86
+ floor.name = "Floor"
87
+ floor.data.name = "Floor"
88
+ floor.scale = (40.0, 40.0, 1.0)
89
+ bpy.ops.object.transform_apply(location=False, rotation=False, scale=True)
90
+ for collection in list(floor.users_collection):
91
+ collection.objects.unlink(floor)
92
+ ground.objects.link(floor)
93
+ grass = bpy.data.materials.new(name="Grass")
94
+ grass.use_nodes = True
95
+ principled = grass.node_tree.nodes["Principled BSDF"]
96
+ principled.inputs["Base Color"].default_value = srgb("#6a994e")
97
+ principled.inputs["Roughness"].default_value = 1.0
98
+ floor.data.materials.append(grass)
99
+ # It receives the level's shadows and casts none (Object Properties ›
100
+ # Visibility › Ray Visibility › Shadow): ground that casts onto itself only
101
+ # shades itself in bands.
102
+ floor.visible_shadow = False
103
+
104
+ # Headless, with no file open, the model is written beside this script.
105
+ if not bpy.data.filepath and "__file__" in globals():
106
+ bpy.ops.wm.save_as_mainfile(filepath=os.path.join(os.path.dirname(os.path.abspath(__file__)), "ground.blend"))
@@ -1 +0,0 @@
1
- import{r as l,j as e,t as r,an as k,ap as w,jE as z,fq as C}from"./volter-sdk-D8o6TU4A.js";const h={fontSize:11,color:r.content.dim,marginBottom:2};function T({assetPath:s}){const n=l.useRef(null),[a,f]=l.useState(!1),[i,m]=l.useState(null),[c,x]=l.useState(0),[p,v]=l.useState(!1),[y,g]=l.useState(1),j=s.split("/").pop()??s,b=s.split(".").pop()?.toUpperCase()??"";l.useEffect(()=>()=>{n.current?.pause()},[]);const S=()=>{const t=n.current;t&&(a?t.pause():t.play(),f(!a))},d=t=>{const o=Math.floor(t/60),u=Math.floor(t%60);return`${o}:${u.toString().padStart(2,"0")}`};return e.jsxs("div",{style:{padding:8,display:"flex",flexDirection:"column",gap:8},children:[e.jsx("div",{style:{fontWeight:600,fontSize:12,color:r.content.primary,wordBreak:"break-all"},children:j}),e.jsxs("div",{className:"volter-content-frost",style:{width:"100%",border:`1px solid ${r.boundary.default}`,borderRadius:r.shape.small,display:"flex",alignItems:"center",justifyContent:"center",flexDirection:"column",gap:8,padding:16},children:[e.jsxs("svg",{viewBox:"0 0 24 24",width:48,height:48,children:[e.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",fill:"var(--volter-asset-icon-audio)"}),e.jsx("path",{d:"M9 8l4-2v12l-4-2H7V10h2zm6 1v6m2-5v4",stroke:"var(--volter-text-1)",strokeWidth:"1.5",fill:"none",strokeLinecap:"round"})]}),i!=null&&e.jsxs("div",{style:{width:"100%",fontSize:10,color:r.content.muted,textAlign:"center"},children:[d(c)," / ",d(i)]}),i!=null&&i>0&&e.jsx("div",{style:{width:"100%",height:4,background:r.surface.raised,borderRadius:r.shape.small,cursor:"pointer",position:"relative"},onClick:t=>{const o=t.currentTarget.getBoundingClientRect(),u=(t.clientX-o.left)/o.width;n.current&&(n.current.currentTime=u*i)},children:e.jsx("div",{style:{width:`${c/i*100}%`,height:"100%",background:"var(--volter-asset-icon-audio)",borderRadius:r.shape.small}})}),e.jsx(k,{type:"button",variant:"secondary",size:"comfortable",onClick:S,children:a?"Pause":"Play"}),e.jsx("div",{role:"img","aria-label":"Audio waveform",style:{width:"100%",height:36,display:"flex",alignItems:"center",gap:2},children:Array.from({length:48},(t,o)=>e.jsx("i",{style:{flex:1,height:`${20+o*37%75}%`,background:"var(--volter-asset-icon-audio)",opacity:o/48<=c/(i||1)?1:.3}},o))}),e.jsxs("label",{style:{fontSize:11,color:r.content.muted},children:[e.jsx(w,{checked:p,onChange:t=>v(t.target.checked)})," Loop"]}),e.jsxs("label",{style:{fontSize:11,color:r.content.muted},children:["Volume"," ",e.jsx(z,{"aria-label":"Audio volume",min:"0",max:"1",step:"0.05",value:y,onChange:t=>{const o=Number(t.target.value);g(o),n.current&&(n.current.volume=o)}})]})]}),e.jsx("audio",{ref:n,src:s,loop:p,onLoadedMetadata:()=>{n.current&&m(n.current.duration)},onTimeUpdate:()=>{n.current&&x(n.current.currentTime)},onEnded:()=>f(!1)}),e.jsx(C,{label:"Info",children:e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[e.jsxs("div",{children:[e.jsx("div",{style:h,children:"Path"}),e.jsx("div",{style:{fontSize:11,color:r.content.primary,wordBreak:"break-all"},children:s})]}),i!=null&&e.jsxs("div",{children:[e.jsx("div",{style:h,children:"Duration"}),e.jsx("div",{style:{fontSize:11,color:r.content.primary},children:d(i)})]}),e.jsxs("div",{children:[e.jsx("div",{style:h,children:"Format"}),e.jsx("div",{style:{fontSize:11,color:r.content.primary},children:b})]})]})})]})}export{T as AudioViewer};
@@ -1 +0,0 @@
1
- import"./three.module-JoAAxMWl.js";import{Loader as B,FileLoader as I,Skeleton as R,Quaternion as N,Vector3 as u,Bone as x,VectorKeyframeTrack as L,QuaternionKeyframeTrack as g,AnimationClip as k}from"./volter-shared-three-core-DEsIwtOu.js";class C extends B{constructor(c){super(c),this.animateBonePositions=!0,this.animateBoneRotations=!0}load(c,H,d,f){const l=this,h=new I(l.manager);h.setPath(l.path),h.setRequestHeader(l.requestHeader),h.setWithCredentials(l.withCredentials),h.load(c,function(p){try{H(l.parse(p))}catch(m){f?f(m):console.error(m),l.manager.itemError(c)}},d,f)}parse(c){function H(t){p(t)!=="HIERARCHY"&&console.error("THREE.BVHLoader: HIERARCHY expected.");const s=[],n=f(t,p(t),s);p(t)!=="MOTION"&&console.error("THREE.BVHLoader: MOTION expected.");let e=p(t).split(/[\s]+/);const o=parseInt(e[1]);isNaN(o)&&console.error("THREE.BVHLoader: Failed to read number of frames."),e=p(t).split(/[\s]+/);const a=parseFloat(e[2]);isNaN(a)&&console.error("THREE.BVHLoader: Failed to read frame time.");for(let r=0;r<o;r++)e=p(t).split(/[\s]+/),d(e,r*a,n);return s}function d(t,s,n){if(n.type==="ENDSITE")return;const e={time:s,position:new u,rotation:new N};n.frames.push(e);const o=new N,a=new u(1,0,0),r=new u(0,1,0),E=new u(0,0,1);for(let i=0;i<n.channels.length;i++)switch(n.channels[i]){case"Xposition":e.position.x=parseFloat(t.shift().trim());break;case"Yposition":e.position.y=parseFloat(t.shift().trim());break;case"Zposition":e.position.z=parseFloat(t.shift().trim());break;case"Xrotation":o.setFromAxisAngle(a,parseFloat(t.shift().trim())*Math.PI/180),e.rotation.multiply(o);break;case"Yrotation":o.setFromAxisAngle(r,parseFloat(t.shift().trim())*Math.PI/180),e.rotation.multiply(o);break;case"Zrotation":o.setFromAxisAngle(E,parseFloat(t.shift().trim())*Math.PI/180),e.rotation.multiply(o);break;default:console.warn("THREE.BVHLoader: Invalid channel type.")}for(let i=0;i<n.children.length;i++)d(t,s,n.children[i])}function f(t,s,n){const e={name:"",type:"",frames:[]};n.push(e);let o=s.split(/[\s]+/);o[0].toUpperCase()==="END"&&o[1].toUpperCase()==="SITE"?(e.type="ENDSITE",e.name="ENDSITE"):(e.name=o[1],e.type=o[0].toUpperCase()),p(t)!=="{"&&console.error("THREE.BVHLoader: Expected opening { after type & name"),o=p(t).split(/[\s]+/),o[0]!=="OFFSET"&&console.error("THREE.BVHLoader: Expected OFFSET but got: "+o[0]),o.length!==4&&console.error("THREE.BVHLoader: Invalid number of values for OFFSET.");const a=new u(parseFloat(o[1]),parseFloat(o[2]),parseFloat(o[3]));if((isNaN(a.x)||isNaN(a.y)||isNaN(a.z))&&console.error("THREE.BVHLoader: Invalid values of OFFSET."),e.offset=a,e.type!=="ENDSITE"){o=p(t).split(/[\s]+/),o[0]!=="CHANNELS"&&console.error("THREE.BVHLoader: Expected CHANNELS definition.");const r=parseInt(o[1]);e.channels=o.splice(2,r),e.children=[]}for(;;){const r=p(t);if(r==="}")return e;e.children.push(f(t,r,n))}}function l(t,s){const n=new x;if(s.push(n),n.position.add(t.offset),n.name=t.name,t.type!=="ENDSITE")for(let e=0;e<t.children.length;e++)n.add(l(t.children[e],s));return n}function h(t){const s=[];for(let n=0;n<t.length;n++){const e=t[n];if(e.type==="ENDSITE")continue;const o=[],a=[],r=[];for(let E=0;E<e.frames.length;E++){const i=e.frames[E];o.push(i.time),a.push(i.position.x+e.offset.x),a.push(i.position.y+e.offset.y),a.push(i.position.z+e.offset.z),r.push(i.rotation.x),r.push(i.rotation.y),r.push(i.rotation.z),r.push(i.rotation.w)}m.animateBonePositions&&s.push(new L(e.name+".position",o,a)),m.animateBoneRotations&&s.push(new g(e.name+".quaternion",o,r))}return new k("animation",-1,s)}function p(t){let s;for(;(s=t.shift().trim()).length===0;);return s}const m=this,y=c.split(/[\r\n]+/g),T=H(y),F=[];l(T[0],F);const w=h(T);return{skeleton:new R(F),clip:w}}}export{C as BVHLoader};
@@ -1,3 +0,0 @@
1
- import"./three.module-JoAAxMWl.js";import{DataTextureLoader as ke,LinearMipmapLinearFilter as Te,MathUtils as Y,Color as ge,ColorManagement as oe,SRGBColorSpace as Z,Vector3 as K,Matrix4 as F,Quaternion as ee,VectorKeyframeTrack as W,QuaternionKeyframeTrack as ce,InterpolateDiscrete as Ae,InterpolateBezier as we,AnimationClip as le,MeshBasicMaterial as de,MeshLambertMaterial as Ne,MeshPhongMaterial as ue,Vector2 as se,DoubleSide as xe,FrontSide as Ee,PerspectiveCamera as he,OrthographicCamera as _e,AmbientLight as ve,SpotLight as Ie,PointLight as Ce,DirectionalLight as Le,BufferGeometry as Se,Float32BufferAttribute as D,Triangle as Me,ShapeUtils as fe,Skeleton as Re,Bone as Ge,Group as ne,Loader as ye,LineBasicMaterial as pe,SkinnedMesh as Pe,Mesh as Oe,Line as qe,LineSegments as je,RepeatWrapping as re,ClampToEdgeWrapping as me,LoaderUtils as Be,FileLoader as ze,Scene as He,TextureLoader as Ve}from"./volter-shared-three-core-DEsIwtOu.js";class be extends ke{constructor(t){super(t)}parse(t){function e(k){switch(k.image_type){case u:case m:if(k.colormap_length>256||k.colormap_size!==24||k.colormap_type!==1)throw new Error("THREE.TGALoader: Invalid type colormap data for indexed type.");break;case h:case p:case f:case b:if(k.colormap_type)throw new Error("THREE.TGALoader: Invalid type colormap data for colormap type.");break;case d:throw new Error("THREE.TGALoader: No data.");default:throw new Error("THREE.TGALoader: Invalid type "+k.image_type)}if(k.width<=0||k.height<=0)throw new Error("THREE.TGALoader: Invalid image size.");if(k.pixel_size!==8&&k.pixel_size!==16&&k.pixel_size!==24&&k.pixel_size!==32)throw new Error("THREE.TGALoader: Invalid pixel size "+k.pixel_size)}function s(k,q,G,M,j){let S,R;const E=G.pixel_size>>3,x=G.width*G.height*E;if(q&&(R=j.subarray(M,M+=G.colormap_length*(G.colormap_size>>3))),k){S=new Uint8Array(x);let A,y,N,P=0;const J=new Uint8Array(E);for(;P<x;)if(A=j[M++],y=(A&127)+1,A&128){for(N=0;N<E;++N)J[N]=j[M++];for(N=0;N<y;++N)S.set(J,P+N*E);P+=E*y}else{for(y*=E,N=0;N<y;++N)S[P+N]=j[M++];P+=y}}else S=j.subarray(M,M+=q?G.width*G.height:x);return{pixel_data:S,palettes:R}}function i(k,q,G,M,j,S,R,E,x){const A=x;let y,N=0,P,J;const ie=C.width;for(J=q;J!==M;J+=G)for(P=j;P!==R;P+=S,N++)y=E[N],k[(P+ie*J)*4+3]=255,k[(P+ie*J)*4+2]=A[y*3+0],k[(P+ie*J)*4+1]=A[y*3+1],k[(P+ie*J)*4+0]=A[y*3+2];return k}function n(k,q,G,M,j,S,R,E){let x,A=0,y,N;const P=C.width;for(N=q;N!==M;N+=G)for(y=j;y!==R;y+=S,A+=2)x=E[A+0]+(E[A+1]<<8),k[(y+P*N)*4+0]=(x&31744)>>7,k[(y+P*N)*4+1]=(x&992)>>2,k[(y+P*N)*4+2]=(x&31)<<3,k[(y+P*N)*4+3]=x&32768?0:255;return k}function r(k,q,G,M,j,S,R,E){let x=0,A,y;const N=C.width;for(y=q;y!==M;y+=G)for(A=j;A!==R;A+=S,x+=3)k[(A+N*y)*4+3]=255,k[(A+N*y)*4+2]=E[x+0],k[(A+N*y)*4+1]=E[x+1],k[(A+N*y)*4+0]=E[x+2];return k}function a(k,q,G,M,j,S,R,E){let x=0,A,y;const N=C.width;for(y=q;y!==M;y+=G)for(A=j;A!==R;A+=S,x+=4)k[(A+N*y)*4+2]=E[x+0],k[(A+N*y)*4+1]=E[x+1],k[(A+N*y)*4+0]=E[x+2],k[(A+N*y)*4+3]=E[x+3];return k}function c(k,q,G,M,j,S,R,E){let x,A=0,y,N;const P=C.width;for(N=q;N!==M;N+=G)for(y=j;y!==R;y+=S,A++)x=E[A],k[(y+P*N)*4+0]=x,k[(y+P*N)*4+1]=x,k[(y+P*N)*4+2]=x,k[(y+P*N)*4+3]=255;return k}function l(k,q,G,M,j,S,R,E){let x=0,A,y;const N=C.width;for(y=q;y!==M;y+=G)for(A=j;A!==R;A+=S,x+=2)k[(A+N*y)*4+0]=E[x+0],k[(A+N*y)*4+1]=E[x+0],k[(A+N*y)*4+2]=E[x+0],k[(A+N*y)*4+3]=E[x+1];return k}function o(k,q,G,M,j){let S,R,E,x,A,y;switch((C.flags&g)>>w){default:case L:S=0,E=1,A=q,R=0,x=1,y=G;break;case T:S=0,E=1,A=q,R=G-1,x=-1,y=-1;break;case v:S=q-1,E=-1,A=-1,R=0,x=1,y=G;break;case O:S=q-1,E=-1,A=-1,R=G-1,x=-1,y=-1;break}if(Q)switch(C.pixel_size){case 8:c(k,R,x,y,S,E,A,M);break;case 16:l(k,R,x,y,S,E,A,M);break;default:throw new Error("THREE.TGALoader: Format not supported.")}else switch(C.pixel_size){case 8:i(k,R,x,y,S,E,A,M,j);break;case 16:n(k,R,x,y,S,E,A,M);break;case 24:r(k,R,x,y,S,E,A,M);break;case 32:a(k,R,x,y,S,E,A,M);break;default:throw new Error("THREE.TGALoader: Format not supported.")}return k}const d=0,u=1,h=2,p=3,m=9,f=10,b=11,g=48,w=4,T=0,O=1,L=2,v=3;if(t.length<19)throw new Error("THREE.TGALoader: Not enough data to contain header.");let _=0;const I=new Uint8Array(t),C={id_length:I[_++],colormap_type:I[_++],image_type:I[_++],colormap_index:I[_++]|I[_++]<<8,colormap_length:I[_++]|I[_++]<<8,colormap_size:I[_++],origin:[I[_++]|I[_++]<<8,I[_++]|I[_++]<<8],width:I[_++]|I[_++]<<8,height:I[_++]|I[_++]<<8,pixel_size:I[_++],flags:I[_++]};if(e(C),C.id_length+_>t.length)throw new Error("THREE.TGALoader: No data.");_+=C.id_length;let V=!1,X=!1,Q=!1;switch(C.image_type){case m:V=!0,X=!0;break;case u:X=!0;break;case f:V=!0;break;case h:break;case b:V=!0,Q=!0;break;case p:Q=!0;break}const $=new Uint8Array(C.width*C.height*4),te=s(V,X,C,_,I);return o($,C.width,C.height,te.pixel_data,te.palettes),{data:$,width:C.width,height:C.height,flipY:!0,generateMipmaps:!0,minFilter:Te}}}function U(z,t){const e=[],s=z.childNodes;for(let i=0,n=s.length;i<n;i++){const r=s[i];r.nodeName===t&&e.push(r)}return e}function Ue(z){return z.length===0?[]:z.trim().split(/\s+/)}function H(z){return z.length===0?[]:z.trim().split(/\s+/).map(parseFloat)}function ae(z){return z.length===0?[]:z.trim().split(/\s+/).map(t=>parseInt(t))}function B(z){return z.substring(1)}class Ke{constructor(){this.count=0}generateId(){return"three_default_"+this.count++}parse(t){if(t.length===0)return null;const e=new DOMParser().parseFromString(t,"application/xml"),s=U(e,"COLLADA")[0],i=e.getElementsByTagName("parsererror")[0];if(i!==void 0){const c=U(i,"div")[0];let l;return c?l=c.textContent:l=this.parserErrorToText(i),console.error(`THREE.ColladaLoader: Failed to parse collada file.
2
- `,l),null}const n=s.getAttribute("version");console.debug("THREE.ColladaLoader: File version",n);const r=this.parseAsset(U(s,"asset")[0]),a={animations:{},clips:{},controllers:{},images:{},effects:{},materials:{},cameras:{},lights:{},geometries:{},nodes:{},visualScenes:{},kinematicsModels:{},physicsModels:{},kinematicsScenes:{},joints:{}};return this.library=a,this.collada=s,this.parseLibrary(s,"library_animations","animation",this.parseAnimation.bind(this)),this.parseLibrary(s,"library_animation_clips","animation_clip",this.parseAnimationClip.bind(this)),this.parseLibrary(s,"library_controllers","controller",this.parseController.bind(this)),this.parseLibrary(s,"library_images","image",this.parseImage.bind(this)),this.parseLibrary(s,"library_effects","effect",this.parseEffect.bind(this)),this.parseLibrary(s,"library_materials","material",this.parseMaterial.bind(this)),this.parseLibrary(s,"library_cameras","camera",this.parseCamera.bind(this)),this.parseLibrary(s,"library_lights","light",this.parseLight.bind(this)),this.parseLibrary(s,"library_geometries","geometry",this.parseGeometry.bind(this)),this.parseLibrary(s,"library_nodes","node",this.parseNode.bind(this)),this.parseLibrary(s,"library_visual_scenes","visual_scene",this.parseVisualScene.bind(this)),this.parseLibrary(s,"library_joints","joint",this.parseLibraryJoint.bind(this)),this.parseLibrary(s,"library_kinematics_models","kinematics_model",this.parseKinematicsModel.bind(this)),this.parseLibrary(s,"library_physics_models","physics_model",this.parsePhysicsModel.bind(this)),this.parseLibrary(s,"scene","instance_kinematics_scene",this.parseKinematicsScene.bind(this)),{library:a,asset:r,collada:s}}parserErrorToText(t){const e=[],s=[t];for(;s.length;){const i=s.shift();i.nodeType===Node.TEXT_NODE?e.push(i.textContent):(e.push(`
3
- `),s.push(...i.childNodes))}return e.join("").trim()}parseAsset(t){return{unit:this.parseAssetUnit(U(t,"unit")[0]),upAxis:this.parseAssetUpAxis(U(t,"up_axis")[0])}}parseAssetUnit(t){return t!==void 0&&t.hasAttribute("meter")===!0?parseFloat(t.getAttribute("meter")):1}parseAssetUpAxis(t){return t!==void 0?t.textContent:"Y_UP"}parseLibrary(t,e,s,i){const n=U(t,e)[0];if(n!==void 0){const r=U(n,s);for(let a=0;a<r.length;a++)i(r[a])}}parseAnimation(t){const e={sources:{},samplers:{},channels:{}};let s=!1;for(let i=0,n=t.childNodes.length;i<n;i++){const r=t.childNodes[i];if(r.nodeType!==1)continue;let a;switch(r.nodeName){case"source":a=r.getAttribute("id"),e.sources[a]=this.parseSource(r);break;case"sampler":a=r.getAttribute("id"),e.samplers[a]=this.parseAnimationSampler(r);break;case"channel":a=r.getAttribute("target"),e.channels[a]=this.parseAnimationChannel(r);break;case"animation":this.parseAnimation(r),s=!0;break}}s===!1&&(this.library.animations[t.getAttribute("id")||Y.generateUUID()]=e)}parseAnimationSampler(t){const e={inputs:{}};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"input":const r=B(n.getAttribute("source")),a=n.getAttribute("semantic");e.inputs[a]=r;break}}return e}parseAnimationChannel(t){const e={};let i=t.getAttribute("target").split("/");const n=i.shift();let r=i.shift();const a=r.indexOf("(")!==-1,c=r.indexOf(".")!==-1;if(c)i=r.split("."),r=i.shift(),e.member=i.shift();else if(a){const l=r.split("(");r=l.shift();for(let o=0;o<l.length;o++)l[o]=parseInt(l[o].replace(/\)/,""));e.indices=l}return e.id=n,e.sid=r,e.arraySyntax=a,e.memberSyntax=c,e.sampler=B(t.getAttribute("source")),e}parseAnimationClip(t){const e={name:t.getAttribute("id")||"default",start:parseFloat(t.getAttribute("start")||0),end:parseFloat(t.getAttribute("end")||0),animations:[]};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"instance_animation":e.animations.push(B(n.getAttribute("url")));break}}this.library.clips[t.getAttribute("id")]=e}parseController(t){const e={};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"skin":e.id=B(n.getAttribute("source")),e.skin=this.parseSkin(n);break;case"morph":e.id=B(n.getAttribute("source")),console.warn("THREE.ColladaLoader: Morph target animation not supported yet.");break}}this.library.controllers[t.getAttribute("id")]=e}parseSkin(t){const e={sources:{}};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"bind_shape_matrix":e.bindShapeMatrix=H(n.textContent);break;case"source":const r=n.getAttribute("id");e.sources[r]=this.parseSource(n);break;case"joints":e.joints=this.parseJoints(n);break;case"vertex_weights":e.vertexWeights=this.parseVertexWeights(n);break}}return e}parseJoints(t){const e={inputs:{}};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"input":const r=n.getAttribute("semantic"),a=B(n.getAttribute("source"));e.inputs[r]=a;break}}return e}parseVertexWeights(t){const e={inputs:{}};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"input":const r=n.getAttribute("semantic"),a=B(n.getAttribute("source")),c=parseInt(n.getAttribute("offset"));e.inputs[r]={id:a,offset:c};break;case"vcount":e.vcount=ae(n.textContent);break;case"v":e.v=ae(n.textContent);break}}return e}parseImage(t){const e={init_from:U(t,"init_from")[0].textContent};this.library.images[t.getAttribute("id")]=e}parseEffect(t){const e={};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"profile_COMMON":e.profile=this.parseEffectProfileCOMMON(n);break}}this.library.effects[t.getAttribute("id")]=e}parseEffectProfileCOMMON(t){const e={surfaces:{},samplers:{}};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"newparam":this.parseEffectNewparam(n,e);break;case"technique":e.technique=this.parseEffectTechnique(n);break;case"extra":e.extra=this.parseEffectExtra(n);break}}return e}parseEffectNewparam(t,e){const s=t.getAttribute("sid");for(let i=0,n=t.childNodes.length;i<n;i++){const r=t.childNodes[i];if(r.nodeType===1)switch(r.nodeName){case"surface":e.surfaces[s]=this.parseEffectSurface(r);break;case"sampler2D":e.samplers[s]=this.parseEffectSampler(r);break}}}parseEffectSurface(t){const e={};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"init_from":e.init_from=n.textContent;break}}return e}parseEffectSampler(t){const e={};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"source":e.source=n.textContent;break}}return e}parseEffectTechnique(t){const e={};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"constant":case"lambert":case"blinn":case"phong":e.type=n.nodeName,e.parameters=this.parseEffectParameters(n);break;case"extra":e.extra=this.parseEffectExtra(n);break}}return e}parseEffectParameters(t){const e={};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"emission":case"diffuse":case"specular":case"bump":case"ambient":case"shininess":case"transparency":e[n.nodeName]=this.parseEffectParameter(n);break;case"transparent":e[n.nodeName]={opaque:n.hasAttribute("opaque")?n.getAttribute("opaque"):"A_ONE",data:this.parseEffectParameter(n)};break}}return e}parseEffectParameter(t){const e={};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"color":e[n.nodeName]=H(n.textContent);break;case"float":e[n.nodeName]=parseFloat(n.textContent);break;case"texture":e[n.nodeName]={id:n.getAttribute("texture"),extra:this.parseEffectParameterTexture(n)};break}}return e}parseEffectParameterTexture(t){const e={technique:{}};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"extra":this.parseEffectParameterTextureExtra(n,e);break}}return e}parseEffectParameterTextureExtra(t,e){for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"technique":this.parseEffectParameterTextureExtraTechnique(n,e);break}}}parseEffectParameterTextureExtraTechnique(t,e){for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"repeatU":case"repeatV":case"offsetU":case"offsetV":e.technique[n.nodeName]=parseFloat(n.textContent);break;case"wrapU":case"wrapV":n.textContent.toUpperCase()==="TRUE"?e.technique[n.nodeName]=1:n.textContent.toUpperCase()==="FALSE"?e.technique[n.nodeName]=0:e.technique[n.nodeName]=parseInt(n.textContent);break;case"bump":e[n.nodeName]=this.parseEffectExtraTechniqueBump(n);break}}}parseEffectExtra(t){const e={};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"technique":e.technique=this.parseEffectExtraTechnique(n);break}}return e}parseEffectExtraTechnique(t){const e={};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"double_sided":e[n.nodeName]=parseInt(n.textContent);break;case"bump":e[n.nodeName]=this.parseEffectExtraTechniqueBump(n);break}}return e}parseEffectExtraTechniqueBump(t){const e={};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"texture":e[n.nodeName]={id:n.getAttribute("texture"),texcoord:n.getAttribute("texcoord"),extra:this.parseEffectParameterTexture(n)};break}}return e}parseMaterial(t){const e={name:t.getAttribute("name")};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"instance_effect":e.url=B(n.getAttribute("url"));break}}this.library.materials[t.getAttribute("id")]=e}parseCamera(t){const e={name:t.getAttribute("name")};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"optics":e.optics=this.parseCameraOptics(n);break}}this.library.cameras[t.getAttribute("id")]=e}parseCameraOptics(t){for(let e=0;e<t.childNodes.length;e++){const s=t.childNodes[e];switch(s.nodeName){case"technique_common":return this.parseCameraTechnique(s)}}return{}}parseCameraTechnique(t){const e={};for(let s=0;s<t.childNodes.length;s++){const i=t.childNodes[s];switch(i.nodeName){case"perspective":case"orthographic":e.technique=i.nodeName,e.parameters=this.parseCameraParameters(i);break}}return e}parseCameraParameters(t){const e={};for(let s=0;s<t.childNodes.length;s++){const i=t.childNodes[s];switch(i.nodeName){case"xfov":case"yfov":case"xmag":case"ymag":case"znear":case"zfar":case"aspect_ratio":e[i.nodeName]=parseFloat(i.textContent);break}}return e}parseLight(t){let e={};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"technique_common":e=this.parseLightTechnique(n);break}}this.library.lights[t.getAttribute("id")]=e}parseLightTechnique(t){const e={};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"directional":case"point":case"spot":case"ambient":e.technique=n.nodeName,e.parameters=this.parseLightParameters(n);break}}return e}parseLightParameters(t){const e={};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"color":const r=H(n.textContent);e.color=new ge().fromArray(r),oe.colorSpaceToWorking(e.color,Z);break;case"falloff_angle":e.falloffAngle=parseFloat(n.textContent);break;case"quadratic_attenuation":const a=parseFloat(n.textContent);e.distance=a?Math.sqrt(1/a):0;break}}return e}parseGeometry(t){const e={name:t.getAttribute("name"),sources:{},vertices:{},primitives:[]},s=U(t,"mesh")[0];if(s!==void 0){for(let i=0;i<s.childNodes.length;i++){const n=s.childNodes[i];if(n.nodeType!==1)continue;const r=n.getAttribute("id");switch(n.nodeName){case"source":e.sources[r]=this.parseSource(n);break;case"vertices":e.vertices=this.parseGeometryVertices(n);break;case"polygons":case"lines":case"linestrips":case"polylist":case"triangles":e.primitives.push(this.parseGeometryPrimitive(n));break}}this.library.geometries[t.getAttribute("id")]=e}}parseSource(t){const e={array:[],stride:3};for(let s=0;s<t.childNodes.length;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"float_array":e.array=H(i.textContent);break;case"Name_array":e.array=Ue(i.textContent);break;case"technique_common":const n=U(i,"accessor")[0];n!==void 0&&(e.stride=parseInt(n.getAttribute("stride")));break}}return e}parseGeometryVertices(t){const e={};for(let s=0;s<t.childNodes.length;s++){const i=t.childNodes[s];i.nodeType===1&&(e[i.getAttribute("semantic")]=B(i.getAttribute("source")))}return e}parseGeometryPrimitive(t){const e={type:t.nodeName,material:t.getAttribute("material"),count:parseInt(t.getAttribute("count")),inputs:{},stride:0,hasUV:!1};for(let s=0,i=t.childNodes.length;s<i;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"input":const r=B(n.getAttribute("source")),a=n.getAttribute("semantic"),c=parseInt(n.getAttribute("offset")),l=parseInt(n.getAttribute("set")),o=l>0?a+l:a;e.inputs[o]={id:r,offset:c},e.stride=Math.max(e.stride,c+1),a==="TEXCOORD"&&(e.hasUV=!0);break;case"vcount":e.vcount=ae(n.textContent);break;case"p":e.p=ae(n.textContent);break}}return e.type==="polygons"&&(e.vcount=[e.p.length/e.stride]),e}parseLibraryJoint(t){this.library.joints[t.getAttribute("id")]=this.parseKinematicsJoint(t)}parseKinematicsModel(t){const e={name:t.getAttribute("name")||"",joints:{},links:[]};for(let s=0;s<t.childNodes.length;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"technique_common":this.parseKinematicsTechniqueCommon(i,e);break}}this.library.kinematicsModels[t.getAttribute("id")]=e}parseKinematicsTechniqueCommon(t,e){for(let s=0;s<t.childNodes.length;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"joint":e.joints[i.getAttribute("sid")]=this.parseKinematicsJoint(i);break;case"instance_joint":e.joints[i.getAttribute("sid")]=this.library.joints[B(i.getAttribute("url"))];break;case"link":e.links.push(this.parseKinematicsLink(i));break}}}parseKinematicsJoint(t){let e;for(let s=0;s<t.childNodes.length;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"prismatic":case"revolute":e=this.parseKinematicsJointParameter(i);break}}return e}parseKinematicsJointParameter(t){const e={sid:t.getAttribute("sid"),name:t.getAttribute("name")||"",axis:new K,limits:{min:0,max:0},type:t.nodeName,static:!1,zeroPosition:0,middlePosition:0};for(let s=0;s<t.childNodes.length;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"axis":const n=H(i.textContent);e.axis.fromArray(n);break;case"limits":const r=i.getElementsByTagName("max")[0],a=i.getElementsByTagName("min")[0];e.limits.max=parseFloat(r.textContent),e.limits.min=parseFloat(a.textContent);break}}return e.limits.min>=e.limits.max&&(e.static=!0),e.middlePosition=(e.limits.min+e.limits.max)/2,e}parseKinematicsLink(t){const e={sid:t.getAttribute("sid"),name:t.getAttribute("name")||"",attachments:[],transforms:[]};for(let s=0;s<t.childNodes.length;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"attachment_full":e.attachments.push(this.parseKinematicsAttachment(i));break;case"matrix":case"translate":case"rotate":e.transforms.push(this.parseKinematicsTransform(i));break}}return e}parseKinematicsAttachment(t){const e={joint:t.getAttribute("joint").split("/").pop(),transforms:[],links:[]};for(let s=0;s<t.childNodes.length;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"link":e.links.push(this.parseKinematicsLink(i));break;case"matrix":case"translate":case"rotate":e.transforms.push(this.parseKinematicsTransform(i));break}}return e}parseKinematicsTransform(t){const e={type:t.nodeName},s=H(t.textContent);switch(e.type){case"matrix":e.obj=new F,e.obj.fromArray(s).transpose();break;case"translate":e.obj=new K,e.obj.fromArray(s);break;case"rotate":e.obj=new K,e.obj.fromArray(s),e.angle=Y.degToRad(s[3]);break}return e}parsePhysicsModel(t){const e={name:t.getAttribute("name")||"",rigidBodies:{}};for(let s=0;s<t.childNodes.length;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"rigid_body":e.rigidBodies[i.getAttribute("name")]={},this.parsePhysicsRigidBody(i,e.rigidBodies[i.getAttribute("name")]);break}}this.library.physicsModels[t.getAttribute("id")]=e}parsePhysicsRigidBody(t,e){for(let s=0;s<t.childNodes.length;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"technique_common":this.parsePhysicsTechniqueCommon(i,e);break}}}parsePhysicsTechniqueCommon(t,e){for(let s=0;s<t.childNodes.length;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"inertia":e.inertia=H(i.textContent);break;case"mass":e.mass=H(i.textContent)[0];break}}}parseKinematicsScene(t){const e={bindJointAxis:[]};for(let s=0;s<t.childNodes.length;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"bind_joint_axis":e.bindJointAxis.push(this.parseKinematicsBindJointAxis(i));break}}this.library.kinematicsScenes[B(t.getAttribute("url"))]=e}parseKinematicsBindJointAxis(t){const e={target:t.getAttribute("target").split("/").pop()};for(let s=0;s<t.childNodes.length;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"axis":const n=i.getElementsByTagName("param")[0];e.axis=n.textContent;const r=e.axis.split("inst_").pop().split("axis")[0];e.jointIndex=r.substring(0,r.length-1);break}}return e}prepareNodes(t){const e=t.getElementsByTagName("node");for(let s=0;s<e.length;s++){const i=e[s];i.hasAttribute("id")===!1&&i.setAttribute("id",this.generateId())}}parseNode(t){const e=new F,s=new K,i={name:t.getAttribute("name")||"",type:t.getAttribute("type"),id:t.getAttribute("id"),sid:t.getAttribute("sid"),matrix:new F,nodes:[],instanceCameras:[],instanceControllers:[],instanceLights:[],instanceGeometries:[],instanceNodes:[],transforms:{},transformData:{},transformOrder:[]};for(let n=0;n<t.childNodes.length;n++){const r=t.childNodes[n];if(r.nodeType!==1)continue;let a;switch(r.nodeName){case"node":i.nodes.push(r.getAttribute("id")),this.parseNode(r);break;case"instance_camera":i.instanceCameras.push(B(r.getAttribute("url")));break;case"instance_controller":i.instanceControllers.push(this.parseNodeInstance(r));break;case"instance_light":i.instanceLights.push(B(r.getAttribute("url")));break;case"instance_geometry":i.instanceGeometries.push(this.parseNodeInstance(r));break;case"instance_node":i.instanceNodes.push(B(r.getAttribute("url")));break;case"matrix":a=H(r.textContent),i.matrix.multiply(e.fromArray(a).transpose());{const c=r.getAttribute("sid");i.transforms[c]=r.nodeName,i.transformData[c]={type:"matrix",array:a},i.transformOrder.push(c)}break;case"translate":a=H(r.textContent),s.fromArray(a),i.matrix.multiply(e.makeTranslation(s.x,s.y,s.z));{const c=r.getAttribute("sid");i.transforms[c]=r.nodeName,i.transformData[c]={type:"translate",x:a[0],y:a[1],z:a[2]},i.transformOrder.push(c)}break;case"rotate":a=H(r.textContent);{const c=Y.degToRad(a[3]);i.matrix.multiply(e.makeRotationAxis(s.fromArray(a),c));const l=r.getAttribute("sid");i.transforms[l]=r.nodeName,i.transformData[l]={type:"rotate",axis:[a[0],a[1],a[2]],angle:a[3]},i.transformOrder.push(l)}break;case"scale":a=H(r.textContent),i.matrix.scale(s.fromArray(a));{const c=r.getAttribute("sid");i.transforms[c]=r.nodeName,i.transformData[c]={type:"scale",x:a[0],y:a[1],z:a[2]},i.transformOrder.push(c)}break}}return this.hasNode(i.id)?console.warn("THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.",i.id):this.library.nodes[i.id]=i,i}parseNodeInstance(t){const e={id:B(t.getAttribute("url")),materials:{},skeletons:[]};for(let s=0;s<t.childNodes.length;s++){const i=t.childNodes[s];switch(i.nodeName){case"bind_material":const n=i.getElementsByTagName("instance_material");for(let r=0;r<n.length;r++){const a=n[r],c=a.getAttribute("symbol"),l=a.getAttribute("target");e.materials[c]=B(l)}break;case"skeleton":e.skeletons.push(B(i.textContent));break}}return e}parseVisualScene(t){const e={name:t.getAttribute("name"),children:[]};this.prepareNodes(t);const s=U(t,"node");for(let i=0;i<s.length;i++)e.children.push(this.parseNode(s[i]));this.library.visualScenes[t.getAttribute("id")]=e}hasNode(t){return this.library.nodes[t]!==void 0}}class Fe{constructor(t,e,s,i){this.library=t,this.collada=e,this.textureLoader=s,this.tgaLoader=i,this.tempColor=new ge,this.animations=[],this.kinematics={},this.position=new K,this.scale=new K,this.quaternion=new ee,this.matrix=new F,this.deferredPivotAnimations={},this.transformNodes={}}compose(){const t=this.library;this.buildLibrary(t.animations,this.buildAnimation.bind(this)),this.buildLibrary(t.clips,this.buildAnimationClip.bind(this)),this.buildLibrary(t.controllers,this.buildController.bind(this)),this.buildLibrary(t.images,this.buildImage.bind(this)),this.buildLibrary(t.effects,this.buildEffect.bind(this)),this.buildLibrary(t.materials,this.buildMaterial.bind(this)),this.buildLibrary(t.cameras,this.buildCamera.bind(this)),this.buildLibrary(t.lights,this.buildLight.bind(this)),this.buildLibrary(t.geometries,this.buildGeometry.bind(this)),this.buildLibrary(t.visualScenes,this.buildVisualScene.bind(this)),this.setupAnimations(),this.setupKinematics();const e=this.parseScene(U(this.collada,"scene")[0]);return e.animations=this.animations,{scene:e,animations:this.animations,kinematics:this.kinematics}}buildLibrary(t,e){for(const s in t){const i=t[s];i.build=e(t[s])}}getBuild(t,e){return t.build!==void 0||(t.build=e(t)),t.build}isEmpty(t){return Object.keys(t).length===0}buildAnimation(t){const e=[],s=t.channels,i=t.samplers,n=t.sources,r=this.aggregateAnimationChannels(s,i,n);for(const a in r){const c=this.library.nodes[a];if(!c)continue;const l=r[a];if(this.hasPivotTransforms(c))this.collectDeferredPivotAnimation(a,l);else{const o=this.getNode(a);let d=!1;for(const u in l){const h=c.transforms[u],p=c.transformData[u],m=l[u];switch(h){case"matrix":this.buildMatrixTracks(o,m,c,e);break;case"translate":this.buildTranslateTrack(o,m,p,e);break;case"rotate":d||(this.buildRotateTrack(o,u,m,p,c,e),d=!0);break;case"scale":this.buildScaleTrack(o,m,p,e);break}}}}return e}collectDeferredPivotAnimation(t,e){this.deferredPivotAnimations[t]||(this.deferredPivotAnimations[t]={});const s=this.deferredPivotAnimations[t];for(const i in e){s[i]||(s[i]={});for(const n in e[i])s[i][n]=e[i][n]}}hasPivotTransforms(t){const e=["rotatePivot","rotatePivotInverse","rotatePivotTranslation","scalePivot","scalePivotInverse","scalePivotTranslation"];for(const s of e)if(t.transforms[s]!==void 0)return!0;return!1}getAnimation(t){return this.getBuild(this.library.animations[t],this.buildAnimation.bind(this))}aggregateAnimationChannels(t,e,s){const i={};for(const n in t){if(!t.hasOwnProperty(n))continue;const r=t[n],a=e[r.sampler],c=a.inputs.INPUT,l=a.inputs.OUTPUT,o=s[c],d=s[l],u=a.inputs.INTERPOLATION,h=a.inputs.IN_TANGENT,p=a.inputs.OUT_TANGENT,m=u?s[u]:null,f=h?s[h]:null,b=p?s[p]:null,g=r.id,w=r.sid,T=r.member||"default";i[g]||(i[g]={}),i[g][w]||(i[g][w]={}),i[g][w][T]={times:o.array,values:d.array,stride:d.stride,arraySyntax:r.arraySyntax,indices:r.indices,interpolation:m?m.array:null,inTangent:f?f.array:null,outTangent:b?b.array:null,inTangentStride:f?f.stride:0,outTangentStride:b?b.stride:0}}return i}buildMatrixTracks(t,e,s,i){const n=s.matrix.clone().transpose(),r={};for(const l in e){const o=e[l],d=o.times,u=o.values,h=o.stride;for(let p=0,m=d.length;p<m;p++){const f=d[p],b=p*h;if(r[f]===void 0&&(r[f]={}),o.arraySyntax===!0){const g=u[b],w=o.indices[0]+4*o.indices[1];r[f][w]=g}else for(let g=0;g<h;g++)r[f][g]=u[b+g]}}const a=this.prepareAnimationData(r,n),c={name:t.uuid,keyframes:a};this.createKeyframeTracks(c,i)}buildTranslateTrack(t,e,s,i){if(e.default&&e.default.stride===3){const l=e.default,o=Array.from(l.times),d=Array.from(l.values),u=new W(t.uuid+".position",o,d),h=this.getInterpolationInfo(e);this.applyInterpolation(u,h,e),i.push(u);return}const n=this.getTimesForAllAxes(e);if(n.length===0)return;const r=[],a=this.getInterpolationInfo(e);for(let l=0;l<n.length;l++){const o=n[l],d=this.getValueAtTime(e.X,o,s.x),u=this.getValueAtTime(e.Y,o,s.y),h=this.getValueAtTime(e.Z,o,s.z);r.push(d,u,h)}const c=new W(t.uuid+".position",n,r);this.applyInterpolation(c,a),i.push(c)}buildRotateTrack(t,e,s,i,n,r){const a=s.ANGLE||s.default;if(!a)return;const c=Array.from(a.times);if(c.length===0)return;const l=[];for(const f of n.transformOrder)if(n.transforms[f]==="rotate"){const g=n.transformData[f];l.push({sid:f,axis:new K(g.axis[0],g.axis[1],g.axis[2]),defaultAngle:g.angle})}const o=new ee,d=new ee,u=new ee,h=[],p=this.getInterpolationInfo(s);for(let f=0;f<c.length;f++){const b=c[f];o.identity();for(const g of l){let w;g.sid===e?w=this.getValueAtTime(a,b,g.defaultAngle):w=g.defaultAngle;const T=Y.degToRad(w);u.setFromAxisAngle(g.axis,T),o.multiply(u)}f>0&&d.dot(o)<0&&(o.x=-o.x,o.y=-o.y,o.z=-o.z,o.w=-o.w),d.copy(o),h.push(o.x,o.y,o.z,o.w)}const m=new ce(t.uuid+".quaternion",c,h);this.applyInterpolation(m,p),r.push(m)}buildScaleTrack(t,e,s,i){if(e.default&&e.default.stride===3){const l=e.default,o=Array.from(l.times),d=Array.from(l.values),u=new W(t.uuid+".scale",o,d),h=this.getInterpolationInfo(e);this.applyInterpolation(u,h,e),i.push(u);return}const n=this.getTimesForAllAxes(e);if(n.length===0)return;const r=[],a=this.getInterpolationInfo(e);for(let l=0;l<n.length;l++){const o=n[l],d=this.getValueAtTime(e.X,o,s.x),u=this.getValueAtTime(e.Y,o,s.y),h=this.getValueAtTime(e.Z,o,s.z);r.push(d,u,h)}const c=new W(t.uuid+".scale",n,r);this.applyInterpolation(c,a),i.push(c)}getTimesForAllAxes(t){let e=[];return t.X&&(e=e.concat(Array.from(t.X.times))),t.Y&&(e=e.concat(Array.from(t.Y.times))),t.Z&&(e=e.concat(Array.from(t.Z.times))),t.ANGLE&&(e=e.concat(Array.from(t.ANGLE.times))),t.default&&(e=e.concat(Array.from(t.default.times))),e=[...new Set(e)].sort((s,i)=>s-i),e}getValueAtTime(t,e,s){if(!t)return s;const i=t.times,n=t.values,r=t.interpolation;for(let a=0;a<i.length;a++){if(i[a]===e)return n[a];if(i[a]>e){if(a===0)return n[0];const c=a-1,l=a,o=i[c],d=i[l],u=n[c],h=n[l],p=r?r[c]:"LINEAR";if(p==="STEP")return u;if(p==="BEZIER"&&t.inTangent&&t.outTangent)return this.evaluateBezierComponent(t,c,l,o,d,e);{const m=(e-o)/(d-o);return u+m*(h-u)}}}return n[n.length-1]}evaluateBezierComponent(t,e,s,i,n,r){const a=t.values,c=t.inTangent,l=t.outTangent,o=t.inTangentStride||1,d=a[e],u=a[s];let h,p,m,f;o===2?(h=l[e*2],p=l[e*2+1],m=c[s*2],f=c[s*2+1]):(h=i+(n-i)/3,p=l[e],m=n-(n-i)/3,f=c[s]);let b=(r-i)/(n-i);for(let v=0;v<8;v++){const _=b*b,I=_*b,C=1-b,V=C*C,Q=V*C*i+3*V*b*h+3*C*_*m+I*n,$=3*V*(h-i)+6*C*b*(m-h)+3*_*(n-m);if(Math.abs($)<1e-10)break;const te=Q-r;if(Math.abs(te)<1e-10)break;b=b-te/$,b=Math.max(0,Math.min(1,b))}const g=b*b,w=g*b,T=1-b,O=T*T;return O*T*d+3*O*b*p+3*T*g*f+w*u}getInterpolationInfo(t){const e=["X","Y","Z","ANGLE","default"];let s=null,i=!0;for(const n of e){const r=t[n];if(!r||!r.interpolation)continue;const a=r.interpolation;for(let c=0;c<a.length;c++){const l=a[c];s===null?s=l:l!==s&&(i=!1)}}return{type:s||"LINEAR",uniform:i}}applyInterpolation(t,e,s=null){if(e.type==="STEP"&&e.uniform)t.setInterpolation(Ae);else if(e.type==="BEZIER"&&e.uniform&&s){const i=s.default;i&&i.inTangent&&i.outTangent&&(t.setInterpolation(we),t.settings={inTangents:new Float32Array(i.inTangent),outTangents:new Float32Array(i.outTangent)})}}prepareAnimationData(t,e){const s=[];for(const i in t)s.push({time:parseFloat(i),value:t[i]});s.sort((i,n)=>i.time-n.time);for(let i=0;i<16;i++)this.transformAnimationData(s,i,e.elements[i]);return s}createKeyframeTracks(t,e){const s=t.keyframes,i=t.name,n=[],r=[],a=[],c=[],l=this.position,o=this.quaternion,d=this.scale,u=this.matrix;for(let h=0,p=s.length;h<p;h++){const m=s[h],f=m.time,b=m.value;u.fromArray(b).transpose(),u.decompose(l,o,d),n.push(f),r.push(l.x,l.y,l.z),a.push(o.x,o.y,o.z,o.w),c.push(d.x,d.y,d.z)}return r.length>0&&e.push(new W(i+".position",n,r)),a.length>0&&e.push(new ce(i+".quaternion",n,a)),c.length>0&&e.push(new W(i+".scale",n,c)),e}transformAnimationData(t,e,s){let i,n=!0,r,a;for(r=0,a=t.length;r<a;r++)i=t[r],i.value[e]===void 0?i.value[e]=null:n=!1;if(n===!0)for(r=0,a=t.length;r<a;r++)i=t[r],i.value[e]=s;else this.createMissingKeyframes(t,e)}createMissingKeyframes(t,e){let s,i;for(let n=0,r=t.length;n<r;n++){const a=t[n];if(a.value[e]===null){if(s=this.getPrev(t,n,e),i=this.getNext(t,n,e),s===null){a.value[e]=i.value[e];continue}if(i===null){a.value[e]=s.value[e];continue}this.interpolate(a,s,i,e)}}}getPrev(t,e,s){for(;e>=0;){const i=t[e];if(i.value[s]!==null)return i;e--}return null}getNext(t,e,s){for(;e<t.length;){const i=t[e];if(i.value[s]!==null)return i;e++}return null}interpolate(t,e,s,i){if(s.time-e.time===0){t.value[i]=e.value[i];return}t.value[i]=(t.time-e.time)*(s.value[i]-e.value[i])/(s.time-e.time)+e.value[i]}buildAnimationClip(t){const e=[],s=t.name,i=t.end-t.start||-1,n=t.animations;for(let r=0,a=n.length;r<a;r++){const c=this.getAnimation(n[r]);for(let l=0,o=c.length;l<o;l++)e.push(c[l])}return new le(s,i,e)}getAnimationClip(t){return this.getBuild(this.library.clips[t],this.buildAnimationClip.bind(this))}buildController(t){const e={id:t.id},s=this.library.geometries[e.id];return t.skin!==void 0&&(e.skin=this.buildSkin(t.skin),s.sources.skinIndices=e.skin.indices,s.sources.skinWeights=e.skin.weights),e}buildSkin(t){const s={joints:[],indices:{array:[],stride:4},weights:{array:[],stride:4}},i=t.sources,n=t.vertexWeights,r=n.vcount,a=n.v,c=n.inputs.JOINT.offset,l=n.inputs.WEIGHT.offset,o=t.sources[t.joints.inputs.JOINT],d=t.sources[t.joints.inputs.INV_BIND_MATRIX],u=i[n.inputs.WEIGHT.id].array;let h=0,p,m,f;for(p=0,f=r.length;p<f;p++){const g=r[p],w=[];for(m=0;m<g;m++){const T=a[h+c],O=a[h+l],L=u[O];w.push({index:T,weight:L}),h+=2}for(w.sort(b),m=0;m<4;m++){const T=w[m];T!==void 0?(s.indices.array.push(T.index),s.weights.array.push(T.weight)):(s.indices.array.push(0),s.weights.array.push(0))}}for(t.bindShapeMatrix?s.bindMatrix=new F().fromArray(t.bindShapeMatrix).transpose():s.bindMatrix=new F().identity(),p=0,f=o.array.length;p<f;p++){const g=o.array[p],w=new F().fromArray(d.array,p*d.stride).transpose();s.joints.push({name:g,boneInverse:w})}return s;function b(g,w){return w.weight-g.weight}}getController(t){return this.getBuild(this.library.controllers[t],this.buildController.bind(this))}buildImage(t){return t.build!==void 0?t.build:t.init_from}getImage(t){const e=this.library.images[t];return e!==void 0?this.getBuild(e,this.buildImage.bind(this)):(console.warn("THREE.ColladaLoader: Couldn't find image with ID:",t),null)}buildEffect(t){return t}getEffect(t){return this.getBuild(this.library.effects[t],this.buildEffect.bind(this))}getTextureLoader(t){let e,s=t.slice((t.lastIndexOf(".")-1>>>0)+2);switch(s=s.toLowerCase(),s){case"tga":e=this.tgaLoader;break;default:e=this.textureLoader}return e}buildMaterial(t){const e=this.getEffect(t.url),s=e.profile.technique;let i;switch(s.type){case"phong":case"blinn":i=new ue;break;case"lambert":i=new Ne;break;default:i=new de;break}i.name=t.name||"";const n=this;function r(o,d=null){const u=e.profile.samplers[o.id];let h=null;if(u!==void 0){const p=e.profile.surfaces[u.source];h=n.getImage(p.init_from)}else console.warn("THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530)."),h=n.getImage(o.id);if(h!==null){const p=n.getTextureLoader(h);if(p!==void 0){const m=p.load(h),f=o.extra;if(f!==void 0&&f.technique!==void 0&&n.isEmpty(f.technique)===!1){const b=f.technique;m.wrapS=b.wrapU?re:me,m.wrapT=b.wrapV?re:me,m.offset.set(b.offsetU||0,b.offsetV||0),m.repeat.set(b.repeatU||1,b.repeatV||1)}else m.wrapS=re,m.wrapT=re;return d!==null&&(m.colorSpace=d),m}else return console.warn("THREE.ColladaLoader: Loader for texture %s not found.",h),null}else return console.warn("THREE.ColladaLoader: Couldn't create texture with ID:",o.id),null}const a=s.parameters;for(const o in a){const d=a[o];switch(o){case"diffuse":d.color&&i.color.fromArray(d.color),d.texture&&(i.map=r(d.texture,Z));break;case"specular":d.color&&i.specular&&i.specular.fromArray(d.color),d.texture&&(i.specularMap=r(d.texture));break;case"bump":d.texture&&(i.normalMap=r(d.texture));break;case"ambient":d.texture&&(i.lightMap=r(d.texture,Z));break;case"shininess":d.float&&i.shininess&&(i.shininess=d.float);break;case"emission":d.color&&i.emissive&&i.emissive.fromArray(d.color),d.texture&&(i.emissiveMap=r(d.texture,Z));break}}oe.colorSpaceToWorking(i.color,Z),i.specular&&oe.colorSpaceToWorking(i.specular,Z),i.emissive&&oe.colorSpaceToWorking(i.emissive,Z);let c=a.transparent,l=a.transparency;if(l===void 0&&c&&(l={float:1}),c===void 0&&l&&(c={opaque:"A_ONE",data:{color:[1,1,1,1]}}),c&&l)if(c.data.texture)i.transparent=!0;else{const o=c.data.color;switch(c.opaque){case"A_ONE":i.opacity=o[3]*l.float;break;case"RGB_ZERO":i.opacity=1-o[0]*l.float;break;case"A_ZERO":i.opacity=1-o[3]*l.float;break;case"RGB_ONE":i.opacity=o[0]*l.float;break;default:console.warn('THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.',c.opaque)}i.opacity<1&&(i.transparent=!0)}if(s.extra!==void 0&&s.extra.technique!==void 0){const o=s.extra.technique;for(const d in o){const u=o[d];switch(d){case"double_sided":i.side=u===1?xe:Ee;break;case"bump":i.normalMap=r(u.texture),i.normalScale=new se(1,1);break}}}return i}getMaterial(t){return this.getBuild(this.library.materials[t],this.buildMaterial.bind(this))}buildCamera(t){let e;switch(t.optics.technique){case"perspective":e=new he(t.optics.parameters.yfov,t.optics.parameters.aspect_ratio,t.optics.parameters.znear,t.optics.parameters.zfar);break;case"orthographic":let s=t.optics.parameters.ymag,i=t.optics.parameters.xmag;const n=t.optics.parameters.aspect_ratio;i=i===void 0?s*n:i,s=s===void 0?i/n:s,i*=.5,s*=.5,e=new _e(-i,i,s,-s,t.optics.parameters.znear,t.optics.parameters.zfar);break;default:e=new he;break}return e.name=t.name||"",e}getCamera(t){const e=this.library.cameras[t];return e!==void 0?this.getBuild(e,this.buildCamera.bind(this)):(console.warn("THREE.ColladaLoader: Couldn't find camera with ID:",t),null)}buildLight(t){let e;switch(t.technique){case"directional":e=new Le;break;case"point":e=new Ce;break;case"spot":e=new Ie;break;case"ambient":e=new ve;break}return t.parameters.color&&e.color.copy(t.parameters.color),t.parameters.distance&&(e.distance=t.parameters.distance),t.parameters.falloffAngle&&(e.angle=Y.degToRad(t.parameters.falloffAngle)),e}getLight(t){const e=this.library.lights[t];return e!==void 0?this.getBuild(e,this.buildLight.bind(this)):(console.warn("THREE.ColladaLoader: Couldn't find light with ID:",t),null)}groupPrimitives(t){const e={};for(let s=0;s<t.length;s++){const i=t[s];e[i.type]===void 0&&(e[i.type]=[]),e[i.type].push(i)}return e}checkUVCoordinates(t){let e=0;for(let s=0,i=t.length;s<i;s++)t[s].hasUV===!0&&e++;e>0&&e<t.length&&(t.uvsNeedsFix=!0)}buildGeometry(t){const e={},s=t.sources,i=t.vertices,n=t.primitives;if(n.length===0)return{};const r=this.groupPrimitives(n);for(const a in r){const c=r[a];this.checkUVCoordinates(c),e[a]=this.buildGeometryType(c,s,i)}return e}buildGeometryType(t,e,s){const i={},n={array:[],stride:0},r={array:[],stride:0},a={array:[],stride:0},c={array:[],stride:0},l={array:[],stride:0},o={array:[],stride:4},d={array:[],stride:4},u=new Se,h=[];let p=0;for(let m=0;m<t.length;m++){const f=t[m],b=f.inputs;let g=0;switch(f.type){case"lines":case"linestrips":g=f.count*2;break;case"triangles":g=f.count*3;break;case"polygons":case"polylist":for(let w=0;w<f.count;w++){const T=f.vcount[w];switch(T){case 3:g+=3;break;case 4:g+=6;break;default:g+=(T-2)*3;break}}break;default:console.warn("THREE.ColladaLoader: Unknown primitive type:",f.type)}u.addGroup(p,g,m),p+=g,f.material&&h.push(f.material);for(const w in b){const T=b[w];switch(w){case"VERTEX":for(const O in s){const L=s[O];switch(O){case"POSITION":const v=n.array.length;if(this.buildGeometryData(f,e[L],T.offset,n.array),n.stride=e[L].stride,e.skinWeights&&e.skinIndices&&(this.buildGeometryData(f,e.skinIndices,T.offset,o.array),this.buildGeometryData(f,e.skinWeights,T.offset,d.array)),f.hasUV===!1&&t.uvsNeedsFix===!0){const _=(n.array.length-v)/n.stride;for(let I=0;I<_;I++)a.array.push(0,0)}break;case"NORMAL":this.buildGeometryData(f,e[L],T.offset,r.array),r.stride=e[L].stride;break;case"COLOR":this.buildGeometryData(f,e[L],T.offset,l.array),l.stride=e[L].stride;break;case"TEXCOORD":this.buildGeometryData(f,e[L],T.offset,a.array),a.stride=e[L].stride;break;case"TEXCOORD1":this.buildGeometryData(f,e[L],T.offset,c.array),a.stride=e[L].stride;break;default:console.warn('THREE.ColladaLoader: Semantic "%s" not handled in geometry build process.',O)}}break;case"NORMAL":this.buildGeometryData(f,e[T.id],T.offset,r.array),r.stride=e[T.id].stride;break;case"COLOR":this.buildGeometryData(f,e[T.id],T.offset,l.array,!0),l.stride=e[T.id].stride;break;case"TEXCOORD":this.buildGeometryData(f,e[T.id],T.offset,a.array),a.stride=e[T.id].stride;break;case"TEXCOORD1":this.buildGeometryData(f,e[T.id],T.offset,c.array),c.stride=e[T.id].stride;break}}}return n.array.length>0&&u.setAttribute("position",new D(n.array,n.stride)),r.array.length>0&&u.setAttribute("normal",new D(r.array,r.stride)),l.array.length>0&&u.setAttribute("color",new D(l.array,l.stride)),a.array.length>0&&u.setAttribute("uv",new D(a.array,a.stride)),c.array.length>0&&u.setAttribute("uv1",new D(c.array,c.stride)),o.array.length>0&&u.setAttribute("skinIndex",new D(o.array,o.stride)),d.array.length>0&&u.setAttribute("skinWeight",new D(d.array,d.stride)),i.data=u,i.type=t[0].type,i.materialKeys=h,i}buildGeometryData(t,e,s,i,n=!1){const r=t.p,a=t.stride,c=t.vcount,l=this.tempColor;function o(h){let p=r[h+s]*u;const m=p+u;for(;p<m;p++)i.push(d[p]);if(n){const f=i.length-u-1;l.setRGB(i[f+0],i[f+1],i[f+2],Z),i[f+0]=l.r,i[f+1]=l.g,i[f+2]=l.b}}const d=e.array,u=e.stride;if(t.vcount!==void 0){let h=0;for(let p=0,m=c.length;p<m;p++){const f=c[p];if(f===4){const b=h+a*0,g=h+a*1,w=h+a*2,T=h+a*3;o(b),o(g),o(T),o(g),o(w),o(T)}else if(f===3){const b=h+a*0,g=h+a*1,w=h+a*2;o(b),o(g),o(w)}else if(f>4){const b=[];for(let v=0;v<f;v++){const _=h+a*v,I=r[_]*u,C=d[I],V=d[I+1],X=d[I+2];b.push(new K(C,V,X))}const g=new K,w=new Me;w.a=b[0],w.b=b[1],w.c=b[2],w.getNormal(g);const T=[];if(Math.abs(g.x)>Math.abs(g.y)&&Math.abs(g.x)>Math.abs(g.z))for(let v=0;v<f;v++)T.push(new se(b[v].y,b[v].z));else if(Math.abs(g.y)>Math.abs(g.z))for(let v=0;v<f;v++)T.push(new se(b[v].x,b[v].z));else for(let v=0;v<f;v++)T.push(new se(b[v].x,b[v].y));const O=fe.isClockWise(T);O===!0&&T.reverse();const L=fe.triangulateShape(T,[]);for(let v=0;v<L.length;v++){const _=L[v];let I,C,V;O===!1?(I=_[0],C=_[1],V=_[2]):(I=f-1-_[0],C=f-1-_[2],V=f-1-_[1]);const X=h+a*I,Q=h+a*C,$=h+a*V;o(X),o(Q),o($)}}h+=a*f}}else for(let h=0,p=r.length;h<p;h+=a)o(h)}getGeometry(t){return this.getBuild(this.library.geometries[t],this.buildGeometry.bind(this))}buildKinematicsModel(t){return t.build!==void 0?t.build:t}getKinematicsModel(t){return this.getBuild(this.library.kinematicsModels[t],this.buildKinematicsModel.bind(this))}buildKinematicsScene(t){return t.build!==void 0?t.build:t}getKinematicsScene(t){return this.getBuild(this.library.kinematicsScenes[t],this.buildKinematicsScene.bind(this))}setupKinematics(){const t=Object.keys(this.library.kinematicsModels)[0],e=Object.keys(this.library.kinematicsScenes)[0],s=Object.keys(this.library.visualScenes)[0];if(t===void 0||e===void 0)return;const i=this.getKinematicsModel(t),n=this.getKinematicsScene(e),r=this.getVisualScene(s),a=n.bindJointAxis,c={},l=this.collada,o=this;for(let p=0,m=a.length;p<m;p++){const f=a[p],b=l.querySelector('[sid="'+f.target+'"]');if(b){const g=b.parentElement;d(f.jointIndex,g)}}function d(p,m){const f=m.getAttribute("name"),b=i.joints[p],g=o.buildTransformList(m);r.traverse(function(w){w.name===f&&(c[p]={object:w,transforms:g,joint:b,position:b.zeroPosition})})}const u=new F,h=this.matrix;this.kinematics={joints:i&&i.joints,getJointValue:function(p){const m=c[p];if(m)return m.position;console.warn("THREE.ColladaLoader: Joint "+p+" doesn't exist.")},setJointValue:function(p,m){const f=c[p];if(f){const b=f.joint;if(m>b.limits.max||m<b.limits.min)console.warn("THREE.ColladaLoader: Joint "+p+" value "+m+" outside of limits (min: "+b.limits.min+", max: "+b.limits.max+").");else if(b.static)console.warn("THREE.ColladaLoader: Joint "+p+" is static.");else{const g=f.object,w=b.axis,T=f.transforms;h.identity();for(let O=0;O<T.length;O++){const L=T[O];if(L.sid&&L.sid.indexOf(p)!==-1)switch(b.type){case"revolute":h.multiply(u.makeRotationAxis(w,Y.degToRad(m)));break;case"prismatic":h.multiply(u.makeTranslation(w.x*m,w.y*m,w.z*m));break;default:console.warn("THREE.ColladaLoader: Unknown joint type: "+b.type);break}else switch(L.type){case"matrix":h.multiply(L.obj);break;case"translate":h.multiply(u.makeTranslation(L.obj.x,L.obj.y,L.obj.z));break;case"scale":h.scale(L.obj);break;case"rotate":h.multiply(u.makeRotationAxis(L.obj,L.angle));break}}g.matrix.copy(h),g.matrix.decompose(g.position,g.quaternion,g.scale),c[p].position=m}}else console.warn("THREE.ColladaLoader: Joint "+p+" does not exist.")}}}buildTransformList(t){const e=[],s=this.collada.querySelector('[id="'+t.id+'"]');for(let i=0;i<s.childNodes.length;i++){const n=s.childNodes[i];if(n.nodeType!==1)continue;let r,a;switch(n.nodeName){case"matrix":r=H(n.textContent);const c=new F().fromArray(r).transpose();e.push({sid:n.getAttribute("sid"),type:n.nodeName,obj:c});break;case"translate":case"scale":r=H(n.textContent),a=new K().fromArray(r),e.push({sid:n.getAttribute("sid"),type:n.nodeName,obj:a});break;case"rotate":r=H(n.textContent),a=new K().fromArray(r);const l=Y.degToRad(r[3]);e.push({sid:n.getAttribute("sid"),type:n.nodeName,obj:a,angle:l});break}}return e}buildSkeleton(t,e){const s=[],i=[];let n,r,a;for(n=0;n<t.length;n++){const o=t[n];let d;if(this.hasNode(o))d=this.getNode(o),this.buildBoneHierarchy(d,e,s);else if(this.hasVisualScene(o)){const h=this.library.visualScenes[o].children;for(let p=0;p<h.length;p++){const m=h[p];if(m.type==="JOINT"){const f=this.getNode(m.id);this.buildBoneHierarchy(f,e,s)}}}else console.error("THREE.ColladaLoader: Unable to find root bone of skeleton with ID:",o)}for(n=0;n<e.length;n++)for(r=0;r<s.length;r++)if(a=s[r],a.bone.name===e[n].name){i[n]=a,a.processed=!0;break}for(n=0;n<s.length;n++)a=s[n],a.processed===!1&&(i.push(a),a.processed=!0);const c=[],l=[];for(n=0;n<i.length;n++)a=i[n],c.push(a.bone),l.push(a.boneInverse);return new Re(c,l)}buildBoneHierarchy(t,e,s){t.traverse(function(i){if(i.isBone===!0){let n;for(let r=0;r<e.length;r++){const a=e[r];if(a.name===i.name){n=a.boneInverse;break}}n===void 0&&(n=new F),s.push({bone:i,boneInverse:n,processed:!1})}})}buildNode(t){const e=[],s=t.matrix,i=t.nodes,n=t.type,r=t.instanceCameras,a=t.instanceControllers,c=t.instanceLights,l=t.instanceGeometries,o=t.instanceNodes;for(let u=0,h=i.length;u<h;u++)e.push(this.getNode(i[u]));for(let u=0,h=r.length;u<h;u++){const p=this.getCamera(r[u]);p!==null&&e.push(p.clone())}for(let u=0,h=a.length;u<h;u++){const p=a[u],m=this.getController(p.id),f=this.getGeometry(m.id),b=this.buildObjects(f,p.materials),g=p.skeletons,w=m.skin.joints,T=this.buildSkeleton(g,w);for(let O=0,L=b.length;O<L;O++){const v=b[O];v.isSkinnedMesh&&(v.bind(T,m.skin.bindMatrix),v.normalizeSkinWeights()),e.push(v)}}for(let u=0,h=c.length;u<h;u++){const p=this.getLight(c[u]);p!==null&&e.push(p.clone())}for(let u=0,h=l.length;u<h;u++){const p=l[u],m=this.getGeometry(p.id),f=this.buildObjects(m,p.materials);for(let b=0,g=f.length;b<g;b++)e.push(f[b])}for(let u=0,h=o.length;u<h;u++)e.push(this.getNode(o[u]).clone());let d;if(i.length===0&&e.length===1)d=e[0];else{d=n==="JOINT"?new Ge:new ne;for(let u=0;u<e.length;u++)d.add(e[u])}return d.name=n==="JOINT"?t.sid:t.name,n!=="JOINT"&&this.hasPivotTransforms(t)?this.wrapWithTransformHierarchy(d,t):(d.matrix.copy(s),d.matrix.decompose(d.position,d.quaternion,d.scale),d)}wrapWithTransformHierarchy(t,e){const s=e.id;this.transformNodes[s]={};const i=e.transformOrder,n=e.transformData,r=new ne;r.name=e.name;let a=r;for(let c=0;c<i.length;c++){const l=i[c],o=n[l],d=new ne;switch(d.name=e.name+"_"+l,o.type){case"translate":d.position.set(o.x,o.y,o.z);break;case"rotate":{const u=new K(o.axis[0],o.axis[1],o.axis[2]),h=Y.degToRad(o.angle);d.quaternion.setFromAxisAngle(u,h),d.userData.rotationAxis=u;break}case"scale":d.scale.set(o.x,o.y,o.z);break;case"matrix":{new F().fromArray(o.array).transpose().decompose(d.position,d.quaternion,d.scale);break}}this.transformNodes[s][l]=d,a.add(d),a=d}return a.add(t),r}resolveMaterialBinding(t,e){const s=[];for(let i=0,n=t.length;i<n;i++){const r=e[t[i]];r===void 0?(console.warn("THREE.ColladaLoader: Material with key %s not found. Apply fallback material.",t[i]),s.push(this.fallbackMaterial)):s.push(this.getMaterial(r))}return s}get fallbackMaterial(){return this._fallbackMaterial===void 0&&(this._fallbackMaterial=new de({name:ye.DEFAULT_MATERIAL_NAME,color:16711935})),this._fallbackMaterial}buildObjects(t,e){const s=[];for(const i in t){const n=t[i],r=this.resolveMaterialBinding(n.materialKeys,e);if(r.length===0&&(i==="lines"||i==="linestrips"?r.push(new pe):r.push(new ue)),i==="lines"||i==="linestrips")for(let o=0,d=r.length;o<d;o++){const u=r[o];if(u.isMeshPhongMaterial===!0||u.isMeshLambertMaterial===!0){const h=new pe;h.color.copy(u.color),h.opacity=u.opacity,h.transparent=u.transparent,r[o]=h}}const a=n.data.attributes.skinIndex!==void 0,c=r.length===1?r[0]:r;let l;switch(i){case"lines":l=new je(n.data,c);break;case"linestrips":l=new qe(n.data,c);break;case"triangles":case"polygons":case"polylist":a?l=new Pe(n.data,c):l=new Oe(n.data,c);break}s.push(l)}return s}hasNode(t){return this.library.nodes[t]!==void 0}getNode(t){return this.getBuild(this.library.nodes[t],this.buildNode.bind(this))}buildVisualScene(t){const e=new ne;e.name=t.name;const s=t.children;for(let i=0;i<s.length;i++){const n=s[i];e.add(this.getNode(n.id))}return e}hasVisualScene(t){return this.library.visualScenes[t]!==void 0}getVisualScene(t){return this.getBuild(this.library.visualScenes[t],this.buildVisualScene.bind(this))}parseScene(t){const e=U(t,"instance_visual_scene")[0];return this.getVisualScene(this.parseId(e.getAttribute("url")))}parseId(t){return t.substring(1)}setupAnimations(){const t=this.library.clips;if(this.isEmpty(t)===!0){if(this.isEmpty(this.library.animations)===!1){const e=[];for(const s in this.library.animations){const i=this.getAnimation(s);for(let n=0,r=i.length;n<r;n++)e.push(i[n])}this.buildDeferredPivotAnimationTracks(e),this.animations.push(new le("default",-1,e))}}else for(const e in t)this.animations.push(this.getAnimationClip(e))}buildDeferredPivotAnimationTracks(t){for(const e in this.deferredPivotAnimations){const s=this.library.nodes[e];if(!s)continue;const i=this.deferredPivotAnimations[e];this.buildTransformHierarchyTracks(e,i,s,t)}}buildTransformHierarchyTracks(t,e,s,i){const n=this.transformNodes[t];if(!n){console.warn("THREE.ColladaLoader: Transform hierarchy not found for node:",t);return}for(const r in e){const a=n[r];if(!a)continue;const c=s.transforms[r],l=s.transformData[r],o=e[r];switch(c){case"translate":this.buildHierarchyTranslateTrack(a,o,l,i);break;case"rotate":this.buildHierarchyRotateTrack(a,o,l,i);break;case"scale":this.buildHierarchyScaleTrack(a,o,l,i);break}}}buildHierarchyTranslateTrack(t,e,s,i){if(e.default&&e.default.stride===3){const l=e.default,o=new W(t.uuid+".position",Array.from(l.times),Array.from(l.values)),d=this.getInterpolationInfo(e);this.applyInterpolation(o,d,e),i.push(o);return}const n=this.getTimesForAllAxes(e);if(n.length===0)return;const r=[],a=this.getInterpolationInfo(e);for(let l=0;l<n.length;l++){const o=n[l],d=this.getValueAtTime(e.X,o,s.x),u=this.getValueAtTime(e.Y,o,s.y),h=this.getValueAtTime(e.Z,o,s.z);r.push(d,u,h)}const c=new W(t.uuid+".position",n,r);this.applyInterpolation(c,a),i.push(c)}buildHierarchyRotateTrack(t,e,s,i){const n=e.ANGLE||e.default;if(!n)return;const r=Array.from(n.times);if(r.length===0)return;const a=t.userData.rotationAxis||new K(s.axis[0],s.axis[1],s.axis[2]),c=new ee,l=new ee,o=[],d=this.getInterpolationInfo(e);for(let h=0;h<r.length;h++){const p=r[h],m=this.getValueAtTime(n,p,s.angle),f=Y.degToRad(m);c.setFromAxisAngle(a,f),h>0&&l.dot(c)<0&&(c.x=-c.x,c.y=-c.y,c.z=-c.z,c.w=-c.w),l.copy(c),o.push(c.x,c.y,c.z,c.w)}const u=new ce(t.uuid+".quaternion",r,o);this.applyInterpolation(u,d),i.push(u)}buildHierarchyScaleTrack(t,e,s,i){if(e.default&&e.default.stride===3){const l=e.default,o=new W(t.uuid+".scale",Array.from(l.times),Array.from(l.values)),d=this.getInterpolationInfo(e);this.applyInterpolation(o,d,e),i.push(o);return}const n=this.getTimesForAllAxes(e);if(n.length===0)return;const r=[],a=this.getInterpolationInfo(e);for(let l=0;l<n.length;l++){const o=n[l],d=this.getValueAtTime(e.X,o,s.x),u=this.getValueAtTime(e.Y,o,s.y),h=this.getValueAtTime(e.Z,o,s.z);r.push(d,u,h)}const c=new W(t.uuid+".scale",n,r);this.applyInterpolation(c,a),i.push(c)}}class Ye extends ye{load(t,e,s,i){const n=this,r=n.path===""?Be.extractUrlBase(t):n.path,a=new ze(n.manager);a.setPath(n.path),a.setRequestHeader(n.requestHeader),a.setWithCredentials(n.withCredentials),a.load(t,function(c){try{e(n.parse(c,r))}catch(l){i?i(l):console.error(l),n.manager.itemError(t)}},s,i)}parse(t,e){if(t.length===0)return{scene:new He};const i=new Ke().parse(t);if(i===null)return null;const{library:n,asset:r,collada:a}=i,c=new Ve(this.manager);c.setPath(this.resourcePath||e).setCrossOrigin(this.crossOrigin);let l;be&&(l=new be(this.manager),l.setPath(this.resourcePath||e));const o=new Fe(n,a,c,l),{scene:d,animations:u,kinematics:h}=o.compose();return d.animations=u,r.upAxis==="Z_UP"&&(console.warn("THREE.ColladaLoader: You are loading an asset with a Z-UP coordinate system. The loader just rotates the asset to transform it into Y-UP. The vertex data are not converted, see #24289."),d.rotation.set(-Math.PI/2,0,0)),d.scale.multiplyScalar(r.unit),{get animations(){return console.warn("THREE.ColladaLoader: Please access animations over scene.animations now."),u},kinematics:h,library:n,scene:d}}}export{Ye as ColladaLoader};
@@ -1 +0,0 @@
1
- import{el as f,r as l,j as c,t as d}from"./volter-sdk-D8o6TU4A.js";import{w as v}from"./three.page-Dy2q5JEV.js";import{a as S}from"./live-mixers-B-bwLZ7c.js";import{j as h,Q as j,t as x}from"./asset-preview-CtqauM13.js";import{O as b}from"./StageHost-xYvmzMBo.js";import"./object3d-document-session-registry-DvgzaByQ.js";import"./output-pass-Bw2FZb8e.js";import"./three.module-JoAAxMWl.js";import"./volter-shared-three-core-DEsIwtOu.js";import"./linear-resolve-B-MA5O31.js";import"./model-inspection-_SFE7cp7.js";import"./standard-viewport-dressing-asIXnD-w.js";import"./OrbitControls-DxYDYiEc.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./transport-strip-cKO8FHd1.js";function w(s){const t=new Set;return s.traverse(r=>{const o=S(r);if(o)for(const e of o.clips.values())t.add(e);for(const e of r.animations)t.add(e)}),[...t]}function E({documentId:s,source:t,sourcePath:r,displayName:o,active:e,chromeless:i=!1,revision:n=0,modelSource:p}){const u=l.useCallback(()=>{const a=h(j(t)),m=w(t);return a.animations=[...m],{root:a,animations:m,dispose(){x(a)}}},[t,n]);return c.jsx(b,{documentId:s,sourcePath:r??o,displayName:o,build:u,active:e,chromeless:i,rendererLane:i?"inspector-preview":"own",assetType:"entity",...p?{modelSource:p}:{}})}function $({documentId:s,entityId:t,displayName:r,active:o}){const e=v(f()),i=l.useSyncExternalStore(e.shell.subscribe,e.shell.getSnapshot),n=e.objectMap.get(t);return n?c.jsx(E,{documentId:s,source:n,sourcePath:`Entity ${t}`,displayName:r,active:o,revision:i,modelSource:{kind:"entity",entityId:t}}):c.jsxs("div",{role:"alert",style:{padding:20,color:d.semantic.danger},children:["Scene entity ",t," is no longer available."]})}export{$ as EntityModelDocument,E as Object3DSnapshotDocument};
@@ -1 +0,0 @@
1
- import{r as f,gU as M,b8 as C,kx as D,$ as k,d2 as A,j as o,t as y,jH as R,cA as b}from"./volter-sdk-D8o6TU4A.js";import{W as P}from"./three.module-JoAAxMWl.js";import{O as z}from"./OrbitControls-DxYDYiEc.js";import{E as H,H as O}from"./output-pass-Bw2FZb8e.js";import{EquirectangularReflectionMapping as I,SRGBColorSpace as L,ACESFilmicToneMapping as T,Scene as B,PerspectiveCamera as F,Color as $,PlaneGeometry as G,MeshBasicMaterial as N,Mesh as E,MeshStandardMaterial as j,SphereGeometry as S,CircleGeometry as q,MathUtils as U}from"./volter-shared-three-core-DEsIwtOu.js";function _(e){return e.split("/").pop()??e}function v(e,t,r){return Math.min(r,Math.max(t,e))}function W(e){return e.split(/[?#]/,1)[0].toLowerCase().endsWith(".exr")}async function X(e){const t=W(e)?"EXR":"HDR",s=await(t==="EXR"?new H:new O).loadAsync(e),p=s.image,n=p.width??0,a=p.height??0,c=n>0&&a>0&&Math.abs(n/a-2)<=.04;return s.mapping=I,s.needsUpdate=!0,{texture:s,width:n,height:a,format:t,panorama:c}}function V(e){const t=new B,r=new F(38,1,.05,100);r.position.set(6.2,3.4,7.8),r.lookAt(0,.7,0);const s=[],p=[];if(!e.panorama){t.background=new $("#11141b");const i=e.width>0&&e.height>0?e.width/e.height:1,d=new G(i>=1?4.8:4.8*i,i>=1?4.8/i:4.8),m=new N({map:e.texture,toneMapped:!0});return s.push(d),p.push(m),t.add(new E(d,m)),r.position.set(0,0,6.5),r.lookAt(0,0,0),{scene:t,camera:r,geometries:s,materials:p}}t.background=e.texture,t.environment=e.texture;const n=(i,d,m)=>{s.push(i),p.push(d);const x=new E(i,d);x.position.set(...m),t.add(x)};n(new S(1,64,40),new j({color:"#d8dde5",roughness:.08,metalness:1}),[-2.3,1.15,0]),n(new S(1,64,40),new j({color:"#c97341",roughness:.32,metalness:.25}),[0,1.15,0]),n(new S(1,64,40),new j({color:"#d7d5cf",roughness:.82,metalness:0}),[2.3,1.15,0]);const a=new q(5.7,96),c=new j({color:"#737881",roughness:.58,metalness:0});s.push(a),p.push(c);const l=new E(a,c);return l.rotation.x=-Math.PI/2,l.position.y=.08,t.add(l),{scene:t,camera:r,geometries:s,materials:p}}function J({image:e,settingsRef:t}){const r=f.useRef(null);return f.useEffect(()=>{const s=r.current;if(!s)return;let p=!1,n=0;const a=document.createElement("canvas");a.setAttribute("aria-label",`${e.format} environment preview`),a.style.width="100%",a.style.height="100%",a.style.display="block",s.replaceChildren(a);const c=new P({canvas:a,antialias:!0});c.outputColorSpace=L,c.toneMapping=T;const l=V(e),i=new z(l.camera,a);i.target.set(0,e.panorama?.8:0,0),i.enableDamping=!0,i.enablePan=!1,i.minDistance=e.panorama?3.8:4,i.maxDistance=e.panorama?14:10,i.update();const d={width:1,height:1},m=()=>{const u=t.current;if(c.toneMappingExposure=v(u.exposure,.05,8),e.panorama){const h=U.degToRad(u.rotation);l.scene.backgroundRotation.y=h,l.scene.environmentRotation.y=h,l.scene.backgroundBlurriness=v(u.blur,0,1),l.scene.environmentIntensity=v(u.intensity,0,8)}i.update(),c.render(l.scene,l.camera)},x=()=>{const u=s.getBoundingClientRect();d.width=Math.max(1,Math.floor(u.width)),d.height=Math.max(1,Math.floor(u.height)),c.setPixelRatio(Math.min(window.devicePixelRatio||1,2)),c.setSize(d.width,d.height,!1),l.camera.aspect=d.width/d.height,l.camera.updateProjectionMatrix(),m()};x();const w=new ResizeObserver(x);w.observe(s);const g=()=>{p||(m(),n=requestAnimationFrame(g))};return n=requestAnimationFrame(g),()=>{p=!0,cancelAnimationFrame(n),w.disconnect(),i.dispose();for(const u of l.geometries)u.dispose();for(const u of l.materials)u.dispose();c.dispose(),a.remove()}},[e,t]),o.jsx("div",{ref:r,"data-testid":"environment-preview",style:{width:"100%",height:"100%",minHeight:260,background:"#11141b"}})}function K({panorama:e,settings:t,onChange:r}){return o.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:12,padding:4},children:[o.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:5,fontSize:11},children:["Exposure",o.jsx(b,{value:t.exposure,onChange:s=>r({...t,exposure:v(s,.05,8)}),step:.05,precision:2})]}),e&&o.jsxs(o.Fragment,{children:[o.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:5,fontSize:11},children:["Lighting intensity",o.jsx(b,{value:t.intensity,onChange:s=>r({...t,intensity:v(s,0,8)}),step:.05,precision:2})]}),o.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:5,fontSize:11},children:["Rotation",o.jsx(b,{value:t.rotation,onChange:s=>r({...t,rotation:s%360}),step:1,precision:0})]}),o.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:5,fontSize:11},children:["Background blur",o.jsx(b,{value:t.blur,onChange:s=>r({...t,blur:v(s,0,1)}),step:.05,precision:2})]})]}),o.jsx("div",{style:{color:y.content.muted,fontSize:10,lineHeight:1.45},children:"Preview controls are session-only. Bind the image, orientation, and accepted intensity in the owning scene source."})]})}function ne({documentId:e,assetPath:t,active:r=!0}){const[s,p]=f.useState(0),[n,a]=f.useState(null),[c,l]=f.useState(null),[i,d]=f.useState({exposure:1,intensity:1,rotation:0,blur:0}),m=f.useRef(i);m.current=i,f.useEffect(()=>{if(r)return M().files.subscribeAsset(t,()=>p(g=>g+1))},[r,t]),f.useEffect(()=>{if(!r)return;let g=!1,u=null;return a(null),l(null),X(t).then(h=>{if(u=h,g){h.texture.dispose();return}a(h)},h=>{g||l(h instanceof Error?h.message:String(h))}),()=>{g=!0,u?.texture.dispose()}},[r,t,s]);const x=f.useMemo(()=>[{id:"environment-image",title:"Environment Image",icon:D,order:C,body:{kind:"custom",...n?{data:{format:n.format,width:n.width,height:n.height,panorama:n.panorama}}:{},render:()=>o.jsxs("div",{style:{display:"grid",gridTemplateColumns:"auto 1fr",gap:"6px 10px"},children:[o.jsx("span",{style:{color:y.content.muted},children:"Format"}),o.jsx("span",{children:n?.format??"—"}),o.jsx("span",{style:{color:y.content.muted},children:"Resolution"}),o.jsx("span",{children:n?`${n.width} × ${n.height}`:"—"}),o.jsx("span",{style:{color:y.content.muted},children:"Projection"}),o.jsx("span",{children:n?.panorama?"2:1 equirectangular":"Flat image"})]})}},{id:"environment-preview-settings",title:"Preview",icon:A,order:k,body:{kind:"custom",data:{...i},render:()=>o.jsx(K,{panorama:n?.panorama??!1,settings:i,onChange:d})}}],[n,i]),w=_(t);return c?o.jsx(R,{documentId:e,active:r,type:"environment image",title:w,status:"HDR image unavailable",children:o.jsx("div",{role:"alert",style:{padding:20,color:y.semantic.danger},children:c})}):n?o.jsx(R,{documentId:e,active:r,type:"environment image",title:w,sections:x,status:`${n.format} · ${n.width} × ${n.height}`,fill:!0,children:o.jsxs("div",{style:{position:"relative",width:"100%",height:"100%",minHeight:0},children:[o.jsx(J,{image:n,settingsRef:m}),o.jsx("div",{style:{position:"absolute",left:12,bottom:12,padding:"4px 7px",borderRadius:4,background:"rgba(12,14,20,0.72)",color:"#f2f4f8",fontSize:10,pointerEvents:"none"},children:n.panorama?"Drag to orbit · wheel to frame":"Non-2:1 image · flat preview"})]})}):o.jsx(R,{documentId:e,active:r,type:"environment image",title:w,status:"Loading HDR image",children:o.jsx("div",{style:{padding:20,color:y.content.muted},children:"Loading environment…"})})}export{ne as EnvironmentAssetDocument};
@@ -1 +0,0 @@
1
- import"./three.module-JoAAxMWl.js";import{u as pe}from"./output-pass-Bw2FZb8e.js";import{Vector4 as z,Vector3 as M,Curve as fe,Loader as $,LoaderUtils as he,FileLoader as me,TextureLoader as de,RepeatWrapping as J,ClampToEdgeWrapping as ee,Texture as ge,MeshPhongMaterial as _,MeshLambertMaterial as ye,ColorManagement as B,Color as b,SRGBColorSpace as E,EquirectangularReflectionMapping as ve,Matrix4 as I,Group as te,Bone as ne,PropertyBinding as W,Object3D as H,PerspectiveCamera as we,PointLight as re,MathUtils as S,SpotLight as Te,DirectionalLight as Ie,SkinnedMesh as xe,Mesh as Ae,LineBasicMaterial as Fe,Line as Pe,Skeleton as Se,AmbientLight as De,BufferGeometry as Y,Float32BufferAttribute as V,Uint16BufferAttribute as Ee,Matrix3 as Le,Vector2 as Me,ShapeUtils as ke,Euler as O,AnimationClip as Ce,Quaternion as R,VectorKeyframeTrack as be,QuaternionKeyframeTrack as Re,NumberKeyframeTrack as Be}from"./volter-shared-three-core-DEsIwtOu.js";function oe(h,e,t){const n=t.length-h-1;if(e>=t[n])return n-1;if(e<=t[h])return h;let r=h,i=n,s=Math.floor((r+i)/2);for(;e<t[s]||e>=t[s+1];)e<t[s]?i=s:r=s,s=Math.floor((r+i)/2);return s}function Oe(h,e,t,n){const r=[],i=[],s=[];r[0]=1;for(let o=1;o<=t;++o){i[o]=e-n[h+1-o],s[o]=n[h+o]-e;let a=0;for(let c=0;c<o;++c){const u=s[c+1],l=i[o-c],p=r[c]/(u+l);r[c]=a+u*p,a=l*p}r[o]=a}return r}function Ve(h,e,t,n){const r=oe(h,n,e),i=Oe(r,n,h,e),s=new z(0,0,0,0);for(let o=0;o<=h;++o){const a=t[r-h+o],c=i[o],u=a.w*c;s.x+=a.x*u,s.y+=a.y*u,s.z+=a.z*u,s.w+=a.w*c}return s}function Ue(h,e,t,n,r){const i=[];for(let l=0;l<=t;++l)i[l]=0;const s=[];for(let l=0;l<=n;++l)s[l]=i.slice(0);const o=[];for(let l=0;l<=t;++l)o[l]=i.slice(0);o[0][0]=1;const a=i.slice(0),c=i.slice(0);for(let l=1;l<=t;++l){a[l]=e-r[h+1-l],c[l]=r[h+l]-e;let p=0;for(let f=0;f<l;++f){const m=c[f+1],d=a[l-f];o[l][f]=m+d;const g=o[f][l-1]/o[l][f];o[f][l]=p+m*g,p=d*g}o[l][l]=p}for(let l=0;l<=t;++l)s[0][l]=o[l][t];for(let l=0;l<=t;++l){let p=0,f=1;const m=[];for(let d=0;d<=t;++d)m[d]=i.slice(0);m[0][0]=1;for(let d=1;d<=n;++d){let g=0;const w=l-d,T=t-d;l>=d&&(m[f][0]=m[p][0]/o[T+1][w],g=m[f][0]*o[w][T]);const v=w>=-1?1:-w,F=l-1<=T?d-1:t-l;for(let P=v;P<=F;++P)m[f][P]=(m[p][P]-m[p][P-1])/o[T+1][w+P],g+=m[f][P]*o[w+P][T];l<=T&&(m[f][d]=-m[p][d-1]/o[T+1][l],g+=m[f][d]*o[l][T]),s[d][l]=g;const D=p;p=f,f=D}}let u=t;for(let l=1;l<=n;++l){for(let p=0;p<=t;++p)s[l][p]*=u;u*=t-l}return s}function Xe(h,e,t,n,r){const i=r<h?r:h,s=[],o=oe(h,n,e),a=Ue(o,n,h,i,e),c=[];for(let u=0;u<t.length;++u){const l=t[u].clone(),p=l.w;l.x*=p,l.y*=p,l.z*=p,c[u]=l}for(let u=0;u<=i;++u){const l=c[o-h].clone().multiplyScalar(a[u][0]);for(let p=1;p<=h;++p)l.add(c[o-h+p].clone().multiplyScalar(a[u][p]));s[u]=l}for(let u=i+1;u<=r+1;++u)s[u]=new z(0,0,0);return s}function ze(h,e){let t=1;for(let r=2;r<=h;++r)t*=r;let n=1;for(let r=2;r<=e;++r)n*=r;for(let r=2;r<=h-e;++r)n*=r;return t/n}function Ge(h){const e=h.length,t=[],n=[];for(let i=0;i<e;++i){const s=h[i];t[i]=new M(s.x,s.y,s.z),n[i]=s.w}const r=[];for(let i=0;i<e;++i){const s=t[i].clone();for(let o=1;o<=i;++o)s.sub(r[i-o].clone().multiplyScalar(ze(i,o)*n[o]));r[i]=s.divideScalar(n[0])}return r}function je(h,e,t,n,r){const i=Xe(h,e,t,n,r);return Ge(i)}class _e extends fe{constructor(e,t,n,r,i){super();const s=t?t.length-1:0,o=n?n.length:0;this.degree=e,this.knots=t,this.controlPoints=[],this.startKnot=r||0,this.endKnot=i||s;for(let a=0;a<o;++a){const c=n[a];this.controlPoints[a]=new z(c.x,c.y,c.z,c.w)}}getPoint(e,t=new M){const n=t,r=this.knots[this.startKnot]+e*(this.knots[this.endKnot]-this.knots[this.startKnot]),i=Ve(this.degree,this.knots,this.controlPoints,r);return i.w!==1&&i.divideScalar(i.w),n.set(i.x,i.y,i.z)}getTangent(e,t=new M){const n=t,r=this.knots[0]+e*(this.knots[this.knots.length-1]-this.knots[0]),i=je(this.degree,this.knots,this.controlPoints,r,1);return n.copy(i[1]).normalize(),n}toJSON(){const e=super.toJSON();return e.degree=this.degree,e.knots=[...this.knots],e.controlPoints=this.controlPoints.map(t=>t.toArray()),e.startKnot=this.startKnot,e.endKnot=this.endKnot,e}fromJSON(e){return super.fromJSON(e),this.degree=e.degree,this.knots=[...e.knots],this.controlPoints=e.controlPoints.map(t=>new z(t[0],t[1],t[2],t[3])),this.startKnot=e.startKnot,this.endKnot=e.endKnot,this}}let y,x,A;class rt extends ${constructor(e){super(e),this.trimAnimationClips=!1}load(e,t,n,r){const i=this,s=i.path===""?he.extractUrlBase(e):i.path,o=new me(this.manager);o.setPath(i.path),o.setResponseType("arraybuffer"),o.setRequestHeader(i.requestHeader),o.setWithCredentials(i.withCredentials),o.load(e,function(a){try{t(i.parse(a,s))}catch(c){r?r(c):console.error(c),i.manager.itemError(e)}},n,r)}parse(e,t){if(Ze(e))y=new Ye().parse(e);else{const r=ce(e);if(!qe(r))throw new Error("THREE.FBXLoader: Unknown format.");if(se(r)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+se(r));y=new Ne().parse(r)}const n=new de(this.manager).setPath(this.resourcePath||t).setCrossOrigin(this.crossOrigin);return new He(n,this.manager,this.trimAnimationClips).parse(y)}}class He{constructor(e,t,n){this.textureLoader=e,this.manager=t,this.trimAnimationClips=n}parse(){x=this.parseConnections();const e=this.parseImages(),t=this.parseTextures(e),n=this.parseMaterials(t),r=this.parseDeformers(),i=new Ke().parse(r);return this.parseScene(r,i,n),A}parseConnections(){const e=new Map;return"Connections"in y&&y.Connections.connections.forEach(function(n){const r=n[0],i=n[1],s=n[2];e.has(r)||e.set(r,{parents:[],children:[]});const o={ID:i,relationship:s};e.get(r).parents.push(o),e.has(i)||e.set(i,{parents:[],children:[]});const a={ID:r,relationship:s};e.get(i).children.push(a)}),e}parseImages(){const e={},t={};if("Video"in y.Objects){const n=y.Objects.Video;for(const r in n){const i=n[r],s=parseInt(r);if(e[s]=i.RelativeFilename||i.Filename,"Content"in i){const o=i.Content instanceof ArrayBuffer&&i.Content.byteLength>0,a=typeof i.Content=="string"&&i.Content!=="";if(o||a){const c=this.parseImage(n[r]);t[i.RelativeFilename||i.Filename]=c}}}}for(const n in e){const r=e[n];t[r]!==void 0?e[n]=t[r]:e[n]=e[n].split("\\").pop()}return e}parseImage(e){const t=e.Content,n=e.RelativeFilename||e.Filename,r=n.slice(n.lastIndexOf(".")+1).toLowerCase();let i;switch(r){case"bmp":i="image/bmp";break;case"jpg":case"jpeg":i="image/jpeg";break;case"png":i="image/png";break;case"tif":i="image/tiff";break;case"tga":this.manager.getHandler(".tga")===null&&console.warn("FBXLoader: TGA loader not found, skipping ",n),i="image/tga";break;case"webp":i="image/webp";break;default:console.warn('FBXLoader: Image type "'+r+'" is not supported.');return}if(typeof t=="string")return"data:"+i+";base64,"+t;{const s=new Uint8Array(t);return URL.createObjectURL(new Blob([s],{type:i}))}}parseTextures(e){const t=new Map;if("Texture"in y.Objects){const n=y.Objects.Texture;for(const r in n){const i=this.parseTexture(n[r],e);t.set(parseInt(r),i)}}return t}parseTexture(e,t){const n=this.loadTexture(e,t);n.ID=e.id,n.name=e.attrName;const r=e.WrapModeU,i=e.WrapModeV,s=r!==void 0?r.value:0,o=i!==void 0?i.value:0;if(n.wrapS=s===0?J:ee,n.wrapT=o===0?J:ee,"Scaling"in e){const a=e.Scaling.value;n.repeat.x=a[0],n.repeat.y=a[1]}if("Translation"in e){const a=e.Translation.value;n.offset.x=a[0],n.offset.y=a[1]}return n}loadTexture(e,t){const n=e.FileName.split(".").pop().toLowerCase();let r=this.manager.getHandler(`.${n}`);r===null&&(r=this.textureLoader);const i=r.path;i||r.setPath(this.textureLoader.path);const s=x.get(e.id).children;let o;if(s!==void 0&&s.length>0&&t[s[0].ID]!==void 0&&(o=t[s[0].ID],(o.indexOf("blob:")===0||o.indexOf("data:")===0)&&r.setPath(void 0)),o===void 0)return console.warn("FBXLoader: Undefined filename, creating placeholder texture."),new ge;const a=r.load(o);return r.setPath(i),a}parseMaterials(e){const t=new Map;if("Material"in y.Objects){const n=y.Objects.Material;for(const r in n){const i=this.parseMaterial(n[r],e);i!==null&&t.set(parseInt(r),i)}}return t}parseMaterial(e,t){const n=e.id,r=e.attrName;let i=e.ShadingModel;if(typeof i=="object"&&(i=i.value),!x.has(n))return null;const s=this.parseParameters(e,t,n);let o;switch(i.toLowerCase()){case"phong":o=new _;break;case"lambert":o=new ye;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',i),o=new _;break}return o.setValues(s),o.name=r,o}parseParameters(e,t,n){const r={};e.BumpFactor&&(r.bumpScale=e.BumpFactor.value),e.Diffuse?r.color=B.colorSpaceToWorking(new b().fromArray(e.Diffuse.value),E):e.DiffuseColor&&(e.DiffuseColor.type==="Color"||e.DiffuseColor.type==="ColorRGB")&&(r.color=B.colorSpaceToWorking(new b().fromArray(e.DiffuseColor.value),E)),e.DisplacementFactor&&(r.displacementScale=e.DisplacementFactor.value),e.Emissive?r.emissive=B.colorSpaceToWorking(new b().fromArray(e.Emissive.value),E):e.EmissiveColor&&(e.EmissiveColor.type==="Color"||e.EmissiveColor.type==="ColorRGB")&&(r.emissive=B.colorSpaceToWorking(new b().fromArray(e.EmissiveColor.value),E)),e.EmissiveFactor&&(r.emissiveIntensity=parseFloat(e.EmissiveFactor.value)),r.opacity=1-(e.TransparencyFactor?parseFloat(e.TransparencyFactor.value):0),(r.opacity===1||r.opacity===0)&&(r.opacity=e.Opacity?parseFloat(e.Opacity.value):null,r.opacity===null&&(r.opacity=1)),r.opacity<1&&(r.transparent=!0),e.ReflectionFactor&&(r.reflectivity=e.ReflectionFactor.value),e.Shininess&&(r.shininess=e.Shininess.value),e.Specular?r.specular=B.colorSpaceToWorking(new b().fromArray(e.Specular.value),E):e.SpecularColor&&e.SpecularColor.type==="Color"&&(r.specular=B.colorSpaceToWorking(new b().fromArray(e.SpecularColor.value),E));const i=this;return x.get(n).children.forEach(function(s){const o=s.relationship;switch(o){case"Bump":r.bumpMap=i.getTexture(t,s.ID);break;case"Maya|TEX_ao_map":r.aoMap=i.getTexture(t,s.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":r.map=i.getTexture(t,s.ID),r.map!==void 0&&(r.map.colorSpace=E);break;case"DisplacementColor":r.displacementMap=i.getTexture(t,s.ID);break;case"EmissiveColor":r.emissiveMap=i.getTexture(t,s.ID),r.emissiveMap!==void 0&&(r.emissiveMap.colorSpace=E);break;case"NormalMap":case"Maya|TEX_normal_map":r.normalMap=i.getTexture(t,s.ID);break;case"ReflectionColor":r.envMap=i.getTexture(t,s.ID),r.envMap!==void 0&&(r.envMap.mapping=ve,r.envMap.colorSpace=E);break;case"SpecularColor":r.specularMap=i.getTexture(t,s.ID),r.specularMap!==void 0&&(r.specularMap.colorSpace=E);break;case"TransparentColor":case"TransparencyFactor":r.alphaMap=i.getTexture(t,s.ID),r.transparent=!0;break;case"AmbientColor":case"ShininessExponent":case"SpecularFactor":case"VectorDisplacementColor":default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",o);break}}),r}getTexture(e,t){return"LayeredTexture"in y.Objects&&t in y.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),t=x.get(t).children[0].ID),e.get(t)}parseDeformers(){const e={},t={};if("Deformer"in y.Objects){const n=y.Objects.Deformer;for(const r in n){const i=n[r],s=x.get(parseInt(r));if(i.attrType==="Skin"){const o=this.parseSkeleton(s,n);o.ID=r,s.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),o.geometryID=s.parents[0].ID,e[r]=o}else if(i.attrType==="BlendShape"){const o={id:r};o.rawTargets=this.parseMorphTargets(s,n),o.id=r,s.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),t[r]=o}}}return{skeletons:e,morphTargets:t}}parseSkeleton(e,t){const n=[];return e.children.forEach(function(r){const i=t[r.ID];if(i.attrType!=="Cluster")return;const s={ID:r.ID,indices:[],weights:[],transformLink:new I().fromArray(i.TransformLink.a)};"Indexes"in i&&(s.indices=i.Indexes.a,s.weights=i.Weights.a),n.push(s)}),{rawBones:n,bones:[]}}parseMorphTargets(e,t){const n=[];for(let r=0;r<e.children.length;r++){const i=e.children[r],s=t[i.ID],o={name:s.attrName,initialWeight:s.DeformPercent,id:s.id,fullWeights:s.FullWeights.a};if(s.attrType!=="BlendShapeChannel")return;o.geoID=x.get(parseInt(i.ID)).children.filter(function(a){return a.relationship===void 0})[0].ID,n.push(o)}return n}parseScene(e,t,n){A=new te;const r=this.parseModels(e.skeletons,t,n),i=y.Objects.Model,s=this;r.forEach(function(l){const p=i[l.ID];s.setLookAtProperties(l,p),x.get(l.ID).parents.forEach(function(m){const d=r.get(m.ID);d!==void 0&&d.add(l)}),l.parent===null&&A.add(l)}),this.addGlobalSceneSettings(),A.traverse(function(l){if(l.userData.transformData){l.parent&&(l.userData.transformData.parentMatrix=l.parent.matrix,l.userData.transformData.parentMatrixWorld=l.parent.matrixWorld);const p=le(l.userData.transformData);l.applyMatrix4(p),l.updateWorldMatrix()}});const o=this.parsePoseNodes(),a=new Set;for(const l in e.skeletons)e.skeletons[l].rawBones.forEach(function(p,f){const m=e.skeletons[l].bones[f];m&&a.add(m.ID)});const c=new I;A.traverse(function(l){if(l.isBone&&l.ID!==void 0&&!a.has(l.ID)){const p=o[l.ID];p!==void 0&&(l.parent?(c.copy(l.parent.matrixWorld).invert(),c.multiply(p)):c.copy(p),c.decompose(l.position,l.quaternion,l.scale),l.updateMatrix(),l.matrixWorld.copy(p))}}),this.bindSkeleton(e.skeletons,t,r);const u=new We(this.trimAnimationClips).parse();A.children.length===1&&A.children[0].isGroup&&(A.children[0].animations=u,Object.assign(A.children[0].userData,A.userData),A=A.children[0]),A.animations=u,"GlobalSettings"in y&&"UpAxis"in y.GlobalSettings&&y.GlobalSettings.UpAxis.value===2&&(console.warn("THREE.FBXLoader: You are loading an asset with a Z-UP coordinate system. The loader just rotates the asset to transform it into Y-UP. The vertex data are not converted."),A.rotation.set(-Math.PI/2,0,0))}parseModels(e,t,n){const r=new Map,i=y.Objects.Model;for(const s in i){const o=parseInt(s),a=i[s],c=x.get(o);let u=this.buildSkeleton(c,e,o,a.attrName);if(!u){switch(a.attrType){case"Camera":u=this.createCamera(c);break;case"Light":u=this.createLight(c);break;case"Mesh":u=this.createMesh(c,t,n);break;case"NurbsCurve":u=this.createCurve(c,t);break;case"LimbNode":case"Root":u=new ne;break;case"Null":default:u=new te;break}u.name=a.attrName?W.sanitizeNodeName(a.attrName):"",u.userData.originalName=a.attrName,u.ID=o}this.getTransformData(u,a),r.set(o,u)}return r}buildSkeleton(e,t,n,r){let i=null;return e.parents.forEach(function(s){for(const o in t){const a=t[o];a.rawBones.forEach(function(c,u){if(c.ID===s.ID){const l=i;i=new ne,i.matrixWorld.copy(c.transformLink),i.name=r?W.sanitizeNodeName(r):"",i.userData.originalName=r,i.ID=n,a.bones[u]=i,l!==null&&i.add(l)}})}}),i}createCamera(e){let t,n;if(e.children.forEach(function(r){const i=y.Objects.NodeAttribute[r.ID];i!==void 0&&(n=i)}),n===void 0)t=new H;else{let r=0;n.CameraProjectionType!==void 0&&n.CameraProjectionType.value===1&&(r=1);let i=1;n.NearPlane!==void 0&&(i=n.NearPlane.value/1e3);let s=1e3;n.FarPlane!==void 0&&(s=n.FarPlane.value/1e3);let o=window.innerWidth,a=window.innerHeight;n.AspectWidth!==void 0&&n.AspectHeight!==void 0&&(o=n.AspectWidth.value,a=n.AspectHeight.value);const c=o/a;let u=45;n.FieldOfView!==void 0&&(u=n.FieldOfView.value);const l=n.FocalLength?n.FocalLength.value:null;switch(r){case 0:t=new we(u,c,i,s),l!==null&&t.setFocalLength(l);break;case 1:console.warn("THREE.FBXLoader: Orthographic cameras not supported yet."),t=new H;break;default:console.warn("THREE.FBXLoader: Unknown camera type "+r+"."),t=new H;break}}return t}createLight(e){let t,n;if(e.children.forEach(function(r){const i=y.Objects.NodeAttribute[r.ID];i!==void 0&&(n=i)}),n===void 0)t=new H;else{let r;n.LightType===void 0?r=0:r=n.LightType.value;let i=16777215;n.Color!==void 0&&(i=B.colorSpaceToWorking(new b().fromArray(n.Color.value),E));let s=n.Intensity===void 0?1:n.Intensity.value/100;n.CastLightOnObject!==void 0&&n.CastLightOnObject.value===0&&(s=0);let o=0;n.FarAttenuationEnd!==void 0&&(n.EnableFarAttenuation!==void 0&&n.EnableFarAttenuation.value===0?o=0:o=n.FarAttenuationEnd.value);const a=1;switch(r){case 0:t=new re(i,s,o,a);break;case 1:t=new Ie(i,s);break;case 2:let c=Math.PI/3,u=0;n.OuterAngle!==void 0?(c=S.degToRad(n.OuterAngle.value),n.InnerAngle!==void 0&&(u=1-n.InnerAngle.value/n.OuterAngle.value,u=Math.max(0,u))):n.InnerAngle!==void 0&&(c=S.degToRad(n.InnerAngle.value)),t=new Te(i,s,o,c,u,a);break;default:console.warn("THREE.FBXLoader: Unknown light type "+n.LightType.value+", defaulting to a PointLight."),t=new re(i,s);break}n.CastShadows!==void 0&&n.CastShadows.value===1&&(t.castShadow=!0)}return t}createMesh(e,t,n){let r,i=null,s=null;const o=[];if(e.children.forEach(function(a){t.has(a.ID)&&(i=t.get(a.ID)),n.has(a.ID)&&o.push(n.get(a.ID))}),o.length>1?s=o:o.length>0?s=o[0]:(s=new _({name:$.DEFAULT_MATERIAL_NAME,color:13421772}),o.push(s)),"color"in i.attributes&&o.forEach(function(a){a.vertexColors=!0}),i.groups.length>0){let a=!1;for(let c=0,u=i.groups.length;c<u;c++){const l=i.groups[c];(l.materialIndex<0||l.materialIndex>=o.length)&&(l.materialIndex=o.length,a=!0)}if(a){const c=new _;o.push(c)}}return i.FBX_Deformer?(r=new xe(i,s),r.normalizeSkinWeights()):r=new Ae(i,s),r}createCurve(e,t){const n=e.children.reduce(function(i,s){return t.has(s.ID)&&(i=t.get(s.ID)),i},null),r=new Fe({name:$.DEFAULT_MATERIAL_NAME,color:3342591,linewidth:1});return new Pe(n,r)}getTransformData(e,t){const n={};"InheritType"in t&&(n.inheritType=parseInt(t.InheritType.value)),"RotationOrder"in t?n.eulerOrder=G(t.RotationOrder.value):n.eulerOrder=G(0),"Lcl_Translation"in t&&(n.translation=t.Lcl_Translation.value),"PreRotation"in t&&(n.preRotation=t.PreRotation.value),"Lcl_Rotation"in t&&(n.rotation=t.Lcl_Rotation.value),"PostRotation"in t&&(n.postRotation=t.PostRotation.value),"Lcl_Scaling"in t&&(n.scale=t.Lcl_Scaling.value),"ScalingOffset"in t&&(n.scalingOffset=t.ScalingOffset.value),"ScalingPivot"in t&&(n.scalingPivot=t.ScalingPivot.value),"RotationOffset"in t&&(n.rotationOffset=t.RotationOffset.value),"RotationPivot"in t&&(n.rotationPivot=t.RotationPivot.value),e.userData.transformData=n}setLookAtProperties(e,t){"LookAtProperty"in t&&x.get(e.ID).children.forEach(function(r){if(r.relationship==="LookAtProperty"){const i=y.Objects.Model[r.ID];if("Lcl_Translation"in i){const s=i.Lcl_Translation.value;e.target!==void 0?(e.target.position.fromArray(s),A.add(e.target)):e.lookAt(new M().fromArray(s))}}})}bindSkeleton(e,t,n){for(const r in e){const i=e[r],s=[];for(let a=0,c=i.bones.length;a<c;a++){const u=new I;i.bones[a]&&i.rawBones[a]&&u.copy(i.rawBones[a].transformLink).invert(),s.push(u)}x.get(parseInt(i.ID)).parents.forEach(function(a){if(t.has(a.ID)){const c=a.ID;x.get(c).parents.forEach(function(l){if(n.has(l.ID)){const p=n.get(l.ID);p.updateMatrixWorld(!0),p.bind(new Se(i.bones,s),p.matrixWorld)}})}})}}parsePoseNodes(){const e={};if("Pose"in y.Objects){const t=y.Objects.Pose;for(const n in t)if(t[n].attrType==="BindPose"&&t[n].NbPoseNodes>0){const r=t[n].PoseNode;Array.isArray(r)?r.forEach(function(i){e[i.Node]=new I().fromArray(i.Matrix.a)}):e[r.Node]=new I().fromArray(r.Matrix.a)}}return e}addGlobalSceneSettings(){if("GlobalSettings"in y){if("AmbientColor"in y.GlobalSettings){const e=y.GlobalSettings.AmbientColor.value,t=e[0],n=e[1],r=e[2];if(t!==0||n!==0||r!==0){const i=new b().setRGB(t,n,r,E);A.add(new De(i,1))}}"UnitScaleFactor"in y.GlobalSettings&&(A.userData.unitScaleFactor=y.GlobalSettings.UnitScaleFactor.value)}}}class Ke{constructor(){this.negativeMaterialIndices=!1}parse(e){const t=new Map;if("Geometry"in y.Objects){const n=y.Objects.Geometry;for(const r in n){const i=x.get(parseInt(r)),s=this.parseGeometry(i,n[r],e);t.set(parseInt(r),s)}}return this.negativeMaterialIndices===!0&&console.warn("THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected."),t}parseGeometry(e,t,n){switch(t.attrType){case"Mesh":return this.parseMeshGeometry(e,t,n);case"NurbsCurve":return this.parseNurbsGeometry(t)}}parseMeshGeometry(e,t,n){const r=n.skeletons,i=[],s=e.parents.map(function(l){return y.Objects.Model[l.ID]});if(s.length===0)return;const o=e.children.reduce(function(l,p){return r[p.ID]!==void 0&&(l=r[p.ID]),l},null);e.children.forEach(function(l){n.morphTargets[l.ID]!==void 0&&i.push(n.morphTargets[l.ID])});const a=s[0],c={};"RotationOrder"in a&&(c.eulerOrder=G(a.RotationOrder.value)),"InheritType"in a&&(c.inheritType=parseInt(a.InheritType.value)),"GeometricTranslation"in a&&(c.translation=a.GeometricTranslation.value),"GeometricRotation"in a&&(c.rotation=a.GeometricRotation.value),"GeometricScaling"in a&&(c.scale=a.GeometricScaling.value);const u=le(c);return this.genGeometry(t,o,i,u)}genGeometry(e,t,n,r){const i=new Y;e.attrName&&(i.name=e.attrName);const s=this.parseGeoNode(e,t),o=this.genBuffers(s),a=new V(o.vertex,3);if(a.applyMatrix4(r),i.setAttribute("position",a),o.colors.length>0&&i.setAttribute("color",new V(o.colors,3)),t&&(i.setAttribute("skinIndex",new Ee(o.weightsIndices,4)),i.setAttribute("skinWeight",new V(o.vertexWeights,4)),i.FBX_Deformer=t),o.normal.length>0){const c=new Le().getNormalMatrix(r),u=new V(o.normal,3);u.applyNormalMatrix(c),i.setAttribute("normal",u)}if(o.uvs.forEach(function(c,u){const l=u===0?"uv":`uv${u}`;i.setAttribute(l,new V(o.uvs[u],2))}),s.material&&s.material.mappingType!=="AllSame"){let c=o.materialIndex[0],u=0;if(o.materialIndex.forEach(function(l,p){l!==c&&(i.addGroup(u,p-u,c),c=l,u=p)}),i.groups.length>0){const l=i.groups[i.groups.length-1],p=l.start+l.count;p!==o.materialIndex.length&&i.addGroup(p,o.materialIndex.length-p,c)}i.groups.length===0&&i.addGroup(0,o.materialIndex.length,o.materialIndex[0])}return this.addMorphTargets(i,e,n,r),i}parseGeoNode(e,t){const n={};if(n.vertexPositions=e.Vertices!==void 0?e.Vertices.a:[],n.vertexIndices=e.PolygonVertexIndex!==void 0?e.PolygonVertexIndex.a:[],e.LayerElementColor&&e.LayerElementColor[0].Colors&&(n.color=this.parseVertexColors(e.LayerElementColor[0])),e.LayerElementMaterial&&(n.material=this.parseMaterialIndices(e.LayerElementMaterial[0])),e.LayerElementNormal&&(n.normal=this.parseNormals(e.LayerElementNormal[0])),e.LayerElementUV){n.uv=[];let r=0;for(;e.LayerElementUV[r];)e.LayerElementUV[r].UV&&n.uv.push(this.parseUVs(e.LayerElementUV[r])),r++}return n.weightTable={},t!==null&&(n.skeleton=t,t.rawBones.forEach(function(r,i){r.indices.forEach(function(s,o){n.weightTable[s]===void 0&&(n.weightTable[s]=[]),n.weightTable[s].push({id:i,weight:r.weights[o]})})})),n}genBuffers(e){const t={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]};let n=0,r=0,i=!1,s=[],o=[],a=[],c=[],u=[],l=[];const p=this;return e.vertexIndices.forEach(function(f,m){let d,g=!1;f<0&&(f=f^-1,g=!0);let w=[],T=[];if(s.push(f*3,f*3+1,f*3+2),e.color){const v=K(m,n,f,e.color);a.push(v[0],v[1],v[2])}if(e.skeleton){if(e.weightTable[f]!==void 0&&e.weightTable[f].forEach(function(v){T.push(v.weight),w.push(v.id)}),T.length>4){i||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),i=!0);const v=[0,0,0,0],F=[0,0,0,0];T.forEach(function(D,P){let C=D,L=w[P];F.forEach(function(j,X,k){if(C>j){k[X]=C,C=j;const N=v[X];v[X]=L,L=N}})}),w=v,T=F}for(;T.length<4;)T.push(0),w.push(0);for(let v=0;v<4;++v)u.push(T[v]),l.push(w[v])}if(e.normal){const v=K(m,n,f,e.normal);o.push(v[0],v[1],v[2])}e.material&&e.material.mappingType!=="AllSame"&&(d=K(m,n,f,e.material)[0],d<0&&(p.negativeMaterialIndices=!0,d=0)),e.uv&&e.uv.forEach(function(v,F){const D=K(m,n,f,v);c[F]===void 0&&(c[F]=[]),c[F].push(D[0]),c[F].push(D[1])}),r++,g&&(p.genFace(t,e,s,d,o,a,c,u,l,r),n++,r=0,s=[],o=[],a=[],c=[],u=[],l=[])}),t}getNormalNewell(e){const t=new M(0,0,0);for(let n=0;n<e.length;n++){const r=e[n],i=e[(n+1)%e.length];t.x+=(r.y-i.y)*(r.z+i.z),t.y+=(r.z-i.z)*(r.x+i.x),t.z+=(r.x-i.x)*(r.y+i.y)}return t.normalize(),t}getNormalTangentAndBitangent(e){const t=this.getNormalNewell(e),r=(Math.abs(t.z)>.5?new M(0,1,0):new M(0,0,1)).cross(t).normalize(),i=t.clone().cross(r).normalize();return{normal:t,tangent:r,bitangent:i}}flattenVertex(e,t,n){return new Me(e.dot(t),e.dot(n))}genFace(e,t,n,r,i,s,o,a,c,u){let l;if(u>3){const p=[],f=t.baseVertexPositions||t.vertexPositions;for(let w=0;w<n.length;w+=3)p.push(new M(f[n[w]],f[n[w+1]],f[n[w+2]]));const{tangent:m,bitangent:d}=this.getNormalTangentAndBitangent(p),g=[];for(const w of p)g.push(this.flattenVertex(w,m,d));l=ke.triangulateShape(g,[])}else l=[[0,1,2]];for(const[p,f,m]of l)e.vertex.push(t.vertexPositions[n[p*3]]),e.vertex.push(t.vertexPositions[n[p*3+1]]),e.vertex.push(t.vertexPositions[n[p*3+2]]),e.vertex.push(t.vertexPositions[n[f*3]]),e.vertex.push(t.vertexPositions[n[f*3+1]]),e.vertex.push(t.vertexPositions[n[f*3+2]]),e.vertex.push(t.vertexPositions[n[m*3]]),e.vertex.push(t.vertexPositions[n[m*3+1]]),e.vertex.push(t.vertexPositions[n[m*3+2]]),t.skeleton&&(e.vertexWeights.push(a[p*4]),e.vertexWeights.push(a[p*4+1]),e.vertexWeights.push(a[p*4+2]),e.vertexWeights.push(a[p*4+3]),e.vertexWeights.push(a[f*4]),e.vertexWeights.push(a[f*4+1]),e.vertexWeights.push(a[f*4+2]),e.vertexWeights.push(a[f*4+3]),e.vertexWeights.push(a[m*4]),e.vertexWeights.push(a[m*4+1]),e.vertexWeights.push(a[m*4+2]),e.vertexWeights.push(a[m*4+3]),e.weightsIndices.push(c[p*4]),e.weightsIndices.push(c[p*4+1]),e.weightsIndices.push(c[p*4+2]),e.weightsIndices.push(c[p*4+3]),e.weightsIndices.push(c[f*4]),e.weightsIndices.push(c[f*4+1]),e.weightsIndices.push(c[f*4+2]),e.weightsIndices.push(c[f*4+3]),e.weightsIndices.push(c[m*4]),e.weightsIndices.push(c[m*4+1]),e.weightsIndices.push(c[m*4+2]),e.weightsIndices.push(c[m*4+3])),t.color&&(e.colors.push(s[p*3]),e.colors.push(s[p*3+1]),e.colors.push(s[p*3+2]),e.colors.push(s[f*3]),e.colors.push(s[f*3+1]),e.colors.push(s[f*3+2]),e.colors.push(s[m*3]),e.colors.push(s[m*3+1]),e.colors.push(s[m*3+2])),t.material&&t.material.mappingType!=="AllSame"&&(e.materialIndex.push(r),e.materialIndex.push(r),e.materialIndex.push(r)),t.normal&&(e.normal.push(i[p*3]),e.normal.push(i[p*3+1]),e.normal.push(i[p*3+2]),e.normal.push(i[f*3]),e.normal.push(i[f*3+1]),e.normal.push(i[f*3+2]),e.normal.push(i[m*3]),e.normal.push(i[m*3+1]),e.normal.push(i[m*3+2])),t.uv&&t.uv.forEach(function(d,g){e.uvs[g]===void 0&&(e.uvs[g]=[]),e.uvs[g].push(o[g][p*2]),e.uvs[g].push(o[g][p*2+1]),e.uvs[g].push(o[g][f*2]),e.uvs[g].push(o[g][f*2+1]),e.uvs[g].push(o[g][m*2]),e.uvs[g].push(o[g][m*2+1])})}addMorphTargets(e,t,n,r){if(n.length===0)return;e.morphTargetsRelative=!0,e.morphAttributes.position=[];const i=r.clone().setPosition(0,0,0),s=this;n.forEach(function(o){o.rawTargets.forEach(function(a){const c=y.Objects.Geometry[a.geoID];c!==void 0&&s.genMorphGeometry(e,t,c,i,a.name)})})}genMorphGeometry(e,t,n,r,i){const s=t.Vertices!==void 0?t.Vertices.a:[],o=t.PolygonVertexIndex!==void 0?t.PolygonVertexIndex.a:[],a=n.Vertices!==void 0?n.Vertices.a:[],c=n.Indexes!==void 0?n.Indexes.a:[],u=e.attributes.position.count*3,l=new Float32Array(u);for(let d=0;d<c.length;d++){const g=c[d]*3;l[g]=a[d*3],l[g+1]=a[d*3+1],l[g+2]=a[d*3+2]}const p={vertexIndices:o,vertexPositions:l,baseVertexPositions:s},f=this.genBuffers(p),m=new V(f.vertex,3);m.name=i||n.attrName,m.applyMatrix4(r),e.morphAttributes.position.push(m)}parseNormals(e){const t=e.MappingInformationType,n=e.ReferenceInformationType,r=e.Normals.a;let i=[];return n==="IndexToDirect"&&("NormalIndex"in e?i=e.NormalIndex.a:"NormalsIndex"in e&&(i=e.NormalsIndex.a)),{dataSize:3,buffer:r,indices:i,mappingType:t,referenceType:n}}parseUVs(e){const t=e.MappingInformationType,n=e.ReferenceInformationType,r=e.UV.a;let i=[];return n==="IndexToDirect"&&(i=e.UVIndex.a),{dataSize:2,buffer:r,indices:i,mappingType:t,referenceType:n}}parseVertexColors(e){const t=e.MappingInformationType,n=e.ReferenceInformationType,r=e.Colors.a;let i=[];n==="IndexToDirect"&&(i=e.ColorIndex.a);for(let s=0,o=new b;s<r.length;s+=4)o.fromArray(r,s),B.colorSpaceToWorking(o,E),o.toArray(r,s);return{dataSize:4,buffer:r,indices:i,mappingType:t,referenceType:n}}parseMaterialIndices(e){const t=e.MappingInformationType,n=e.ReferenceInformationType;if(t==="NoMappingInformation")return{dataSize:1,buffer:[0],indices:[0],mappingType:"AllSame",referenceType:n};const r=e.Materials.a,i=[];for(let s=0;s<r.length;++s)i.push(s);return{dataSize:1,buffer:r,indices:i,mappingType:t,referenceType:n}}parseNurbsGeometry(e){const t=parseInt(e.Order);if(isNaN(t))return console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s",e.Order,e.id),new Y;const n=t-1,r=e.KnotVector.a,i=[],s=e.Points.a;for(let l=0,p=s.length;l<p;l+=4)i.push(new z().fromArray(s,l));let o,a;if(e.Form==="Closed")i.push(i[0]);else if(e.Form==="Periodic"){o=n,a=r.length-1-o;for(let l=0;l<n;++l)i.push(i[l])}const u=new _e(n,r,i,o,a).getPoints(i.length*12);return new Y().setFromPoints(u)}}class We{constructor(e){this.trimAnimationClips=e}parse(){const e=[],t=this.parseClips();if(t!==void 0)for(const n in t){const r=t[n],i=this.addClip(r);e.push(i)}return e}parseClips(){if(y.Objects.AnimationCurve===void 0)return;const e=this.parseAnimationCurveNodes();this.parseAnimationCurves(e);const t=this.parseAnimationLayers(e);return this.parseAnimStacks(t)}parseAnimationCurveNodes(){const e=y.Objects.AnimationCurveNode,t=new Map;for(const n in e){const r=e[n];if(r.attrName.match(/S|R|T|DeformPercent/)!==null){const i={id:r.id,attr:r.attrName,curves:{}};t.set(i.id,i)}}return t}parseAnimationCurves(e){const t=y.Objects.AnimationCurve;for(const n in t){const r={id:t[n].id,times:t[n].KeyTime.a.map(Z),values:t[n].KeyValueFloat.a},i=x.get(r.id);if(i!==void 0){const s=i.parents[0].ID,o=i.parents[0].relationship;o.match(/X/)?e.get(s).curves.x=r:o.match(/Y/)?e.get(s).curves.y=r:o.match(/Z/)?e.get(s).curves.z=r:o.match(/DeformPercent/)&&e.has(s)&&(e.get(s).curves.morph=r)}}}parseAnimationLayers(e){const t=y.Objects.AnimationLayer,n=new Map;for(const r in t){const i=[],s=x.get(parseInt(r));s!==void 0&&(s.children.forEach(function(a,c){if(e.has(a.ID)){const u=e.get(a.ID);if(u.curves.x!==void 0||u.curves.y!==void 0||u.curves.z!==void 0){if(i[c]===void 0){const l=x.get(a.ID).parents.filter(function(f){return f.relationship!==void 0});if(l.length===0)return;const p=l[0].ID;if(p!==void 0){const f=y.Objects.Model[p.toString()];if(f===void 0){console.warn("THREE.FBXLoader: Encountered a unused curve.",a);return}const m={modelName:f.attrName?W.sanitizeNodeName(f.attrName):"",ID:f.id,initialPosition:[0,0,0],initialRotation:[0,0,0],initialScale:[1,1,1]};A.traverse(function(d){d.ID===f.id&&(m.transform=d.matrix,d.userData.transformData&&(m.eulerOrder=d.userData.transformData.eulerOrder,d.userData.transformData.rotation&&(m.initialRotation=d.userData.transformData.rotation)))}),m.transform||(m.transform=new I),"PreRotation"in f&&(m.preRotation=f.PreRotation.value),"PostRotation"in f&&(m.postRotation=f.PostRotation.value),i[c]=m}}i[c]&&(i[c][u.attr]=u)}else if(u.curves.morph!==void 0){if(i[c]===void 0){const l=x.get(a.ID).parents.filter(function(T){return T.relationship!==void 0});if(l.length===0)return;const p=l[0].ID,f=x.get(p).parents[0].ID,m=x.get(f).parents[0].ID,d=x.get(m).parents[0].ID,g=y.Objects.Model[d],w={modelName:g.attrName?W.sanitizeNodeName(g.attrName):"",morphName:y.Objects.Deformer[p].attrName};i[c]=w}i[c][u.attr]=u}}}),n.set(parseInt(r),i))}return n}parseAnimStacks(e){const t=y.Objects.AnimationStack,n={};for(const r in t){const i=x.get(parseInt(r)).children;i.length>1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");const s=e.get(i[0].ID),o=t[r];n[r]={name:o.attrName,layer:s,localStart:o.LocalStart!==void 0?Z(Number(o.LocalStart.value)):0,localStop:o.LocalStop!==void 0?Z(Number(o.LocalStop.value)):0}}return n}addClip(e){let t=[];const n=this;return e.layer.forEach(function(r){t=t.concat(n.generateTracks(r))}),this.trimAnimationClips===!0&&e.localStop>e.localStart&&(t=this.trimTracks(t,e.localStart,e.localStop)),new Ce(e.name,-1,t)}trimTracks(e,t,n){const r=Math.fround(t),i=Math.fround(n),s=[];for(let o=0;o<e.length;o++){const a=e[o],c=a.getValueSize(),u=[],l=[];for(let p=0;p<a.times.length;p++){const f=a.times[p];if(!(f<r||f>i)){u.push(f-r);for(let m=0;m<c;m++)l.push(a.values[p*c+m])}}u.length!==0&&(a.times=new Float32Array(u),a.values=new Float32Array(l),s.push(a))}return s}generateTracks(e){const t=[];let n=new M,r=new M;if(e.transform&&e.transform.decompose(n,new R,r),n=n.toArray(),r=r.toArray(),e.T!==void 0&&Object.keys(e.T.curves).length>0){const i=this.generateVectorTrack(e.modelName,e.T.curves,n,"position");i!==void 0&&t.push(i)}if(e.R!==void 0&&Object.keys(e.R.curves).length>0){const i=this.generateRotationTrack(e.modelName,e.R.curves,e.preRotation,e.postRotation,e.eulerOrder,e.initialRotation);i!==void 0&&t.push(i)}if(e.S!==void 0&&Object.keys(e.S.curves).length>0){const i=this.generateVectorTrack(e.modelName,e.S.curves,r,"scale");i!==void 0&&t.push(i)}if(e.DeformPercent!==void 0){const i=this.generateMorphTrack(e);i!==void 0&&t.push(i)}return t}generateVectorTrack(e,t,n,r){const i=this.getTimesForAllAxes(t),s=this.getKeyframeTrackValues(i,t,n);return new be(e+"."+r,i,s)}generateRotationTrack(e,t,n,r,i,s){let o,a;if(t.x!==void 0||t.y!==void 0||t.z!==void 0){const f=this.getTimesForAllAxes(t);if(f.length>0){const m=s||[0,0,0],d=this.synchronizeCurve(t.x,f,m[0]),g=this.synchronizeCurve(t.y,f,m[1]),w=this.synchronizeCurve(t.z,f,m[2]),T=this.interpolateRotations(d,g,w,i);o=T[0],a=T[1]}}const c=G(0);n!==void 0&&(n=n.map(S.degToRad),n.push(c),n=new O().fromArray(n),n=new R().setFromEuler(n)),r!==void 0&&(r=r.map(S.degToRad),r.push(c),r=new O().fromArray(r),r=new R().setFromEuler(r).invert());const u=new R,l=new O,p=[];if(!(!a||!o)){for(let f=0;f<a.length;f+=3)l.set(a[f],a[f+1],a[f+2],i),u.setFromEuler(l),n!==void 0&&u.premultiply(n),r!==void 0&&u.multiply(r),f>2&&new R().fromArray(p,(f-3)/3*4).dot(u)<0&&u.set(-u.x,-u.y,-u.z,-u.w),u.toArray(p,f/3*4);return new Re(e+".quaternion",o,p)}}generateMorphTrack(e){const t=e.DeformPercent.curves.morph,n=t.values.map(function(i){return i/100}),r=A.getObjectByName(e.modelName).morphTargetDictionary[e.morphName];return new Be(e.modelName+".morphTargetInfluences["+r+"]",t.times,n)}getTimesForAllAxes(e){let t=[];if(e.x!==void 0&&(t=t.concat(e.x.times)),e.y!==void 0&&(t=t.concat(e.y.times)),e.z!==void 0&&(t=t.concat(e.z.times)),t=t.sort(function(n,r){return n-r}),t.length>1){let n=1,r=t[0];for(let i=1;i<t.length;i++){const s=t[i];s!==r&&(t[n]=s,r=s,n++)}t=t.slice(0,n)}return t}getKeyframeTrackValues(e,t,n){const r=n,i=[];let s=-1,o=-1,a=-1;return e.forEach(function(c){if(t.x&&(s=t.x.times.indexOf(c)),t.y&&(o=t.y.times.indexOf(c)),t.z&&(a=t.z.times.indexOf(c)),s!==-1){const u=t.x.values[s];i.push(u),r[0]=u}else i.push(r[0]);if(o!==-1){const u=t.y.values[o];i.push(u),r[1]=u}else i.push(r[1]);if(a!==-1){const u=t.z.values[a];i.push(u),r[2]=u}else i.push(r[2])}),i}synchronizeCurve(e,t,n){if(e===void 0)return{times:t,values:t.map(()=>n)};if(e.times.length===t.length)return e;const r=[];for(let i=0;i<t.length;i++)r.push(this.sampleCurveValue(e,t[i],n));return{times:t,values:r}}sampleCurveValue(e,t,n){const r=e.times,i=e.values;if(t<=r[0])return i[0];if(t>=r[r.length-1])return i[i.length-1];for(let s=0;s<r.length-1;s++)if(t>=r[s]&&t<=r[s+1]){if(r[s]===t)return i[s];const o=(t-r[s])/(r[s+1]-r[s]);return i[s]*(1-o)+i[s+1]*o}return n}interpolateRotations(e,t,n,r){const i=[],s=[];i.push(e.times[0]),s.push(S.degToRad(e.values[0])),s.push(S.degToRad(t.values[0])),s.push(S.degToRad(n.values[0]));for(let o=1;o<e.values.length;o++){const a=[e.values[o-1],t.values[o-1],n.values[o-1]];if(isNaN(a[0])||isNaN(a[1])||isNaN(a[2]))continue;const c=a.map(S.degToRad),u=[e.values[o],t.values[o],n.values[o]];if(isNaN(u[0])||isNaN(u[1])||isNaN(u[2]))continue;const l=u.map(S.degToRad),p=[u[0]-a[0],u[1]-a[1],u[2]-a[2]],f=[Math.abs(p[0]),Math.abs(p[1]),Math.abs(p[2])];if(f[0]>=180||f[1]>=180||f[2]>=180){const d=Math.max(...f)/180,g=new O(...c,r),w=new O(...l,r),T=new R().setFromEuler(g),v=new R().setFromEuler(w);T.dot(v)<0&&v.set(-v.x,-v.y,-v.z,-v.w);const F=e.times[o-1],D=e.times[o]-F,P=new R,C=new O;for(let L=0;L<1;L+=1/d)P.copy(T.clone().slerp(v.clone(),L)),i.push(F+L*D),C.setFromQuaternion(P,r),s.push(C.x),s.push(C.y),s.push(C.z)}else i.push(e.times[o]),s.push(S.degToRad(e.values[o])),s.push(S.degToRad(t.values[o])),s.push(S.degToRad(n.values[o]))}return[i,s]}}class Ne{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(e){this.nodeStack.push(e),this.currentIndent+=1}popStack(){this.nodeStack.pop(),this.currentIndent-=1}setCurrentProp(e,t){this.currentProp=e,this.currentPropName=t}parse(e){this.currentIndent=0,this.allNodes=new ae,this.nodeStack=[],this.currentProp=[],this.currentPropName="";const t=this,n=e.split(/[\r\n]+/);return n.forEach(function(r,i){const s=r.match(/^[\s\t]*;/),o=r.match(/^[\s\t]*$/);if(s||o)return;const a=r.match("^\\t{"+t.currentIndent+"}(\\w+):(.*){",""),c=r.match("^\\t{"+t.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),u=r.match("^\\t{"+(t.currentIndent-1)+"}}");a?t.parseNodeBegin(r,a):c?t.parseNodeProperty(r,c,n[++i]):u?t.popStack():r.match(/^[^\s\t}]/)&&t.parseNodePropertyContinued(r)}),this.allNodes}parseNodeBegin(e,t){const n=t[1].trim().replace(/^"/,"").replace(/"$/,""),r=t[2].split(",").map(function(a){return a.trim().replace(/^"/,"").replace(/"$/,"")}),i={name:n},s=this.parseNodeAttr(r),o=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(n,i):n in o?(n==="PoseNode"?o.PoseNode.push(i):o[n].id!==void 0&&(o[n]={},o[n][o[n].id]=o[n]),s.id!==""&&(o[n][s.id]=i)):typeof s.id=="number"?(o[n]={},o[n][s.id]=i):n!=="Properties70"&&(n==="PoseNode"?o[n]=[i]:o[n]=i),typeof s.id=="number"&&(i.id=s.id),s.name!==""&&(i.attrName=s.name),s.type!==""&&(i.attrType=s.type),this.pushStack(i)}parseNodeAttr(e){let t=e[0];e[0]!==""&&(t=parseInt(e[0]),isNaN(t)&&(t=e[0]));let n="",r="";return e.length>1&&(n=e[1].replace(/^(\w+)::/,""),r=e[2]),{id:t,name:n,type:r}}parseNodeProperty(e,t,n){let r=t[1].replace(/^"/,"").replace(/"$/,"").trim(),i=t[2].replace(/^"/,"").replace(/"$/,"").trim();r==="Content"&&i===","&&(i=n.replace(/"/g,"").replace(/,$/,"").trim());const s=this.getCurrentNode();if(s.name==="Properties70"){this.parseNodeSpecialProperty(e,r,i);return}if(r==="C"){const a=i.split(",").slice(1),c=parseInt(a[0]),u=parseInt(a[1]);let l=i.split(",").slice(3);l=l.map(function(p){return p.trim().replace(/^"/,"")}),r="connections",i=[c,u],$e(i,l),s[r]===void 0&&(s[r]=[])}r==="Node"&&(s.id=i),r in s&&Array.isArray(s[r])?s[r].push(i):r!=="a"?s[r]=i:s.a=i,this.setCurrentProp(s,r),r==="a"&&i.slice(-1)!==","&&(s.a=Q(i))}parseNodePropertyContinued(e){const t=this.getCurrentNode();t.a+=e,e.slice(-1)!==","&&(t.a=Q(t.a))}parseNodeSpecialProperty(e,t,n){const r=n.split('",').map(function(u){return u.trim().replace(/^\"/,"").replace(/\s/,"_")}),i=r[0],s=r[1],o=r[2],a=r[3];let c=r[4];switch(s){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":c=parseFloat(c);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":c=Q(c);break}this.getPrevNode()[i]={type:s,type2:o,flag:a,value:c},this.setCurrentProp(this.getPrevNode(),i)}}class Ye{parse(e){const t=new ie(e);t.skip(23);const n=t.getUint32();if(n<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+n);const r=new ae;for(;!this.endOfContent(t);){const i=this.parseNode(t,n);i!==null&&r.add(i.name,i)}return r}endOfContent(e){return e.size()%16===0?(e.getOffset()+160+16&-16)>=e.size():e.getOffset()+160+16>=e.size()}parseNode(e,t){const n={},r=t>=7500?e.getUint64():e.getUint32(),i=t>=7500?e.getUint64():e.getUint32();t>=7500?e.getUint64():e.getUint32();const s=e.getUint8(),o=e.getString(s);if(r===0)return null;const a=[];for(let p=0;p<i;p++)a.push(this.parseProperty(e));const c=a.length>0?a[0]:"",u=a.length>1?a[1]:"",l=a.length>2?a[2]:"";for(n.singleProperty=i===1&&e.getOffset()===r;r>e.getOffset();){const p=this.parseNode(e,t);p!==null&&this.parseSubNode(o,n,p)}return n.propertyList=a,typeof c=="number"&&(n.id=c),u!==""&&(n.attrName=u),l!==""&&(n.attrType=l),o!==""&&(n.name=o),n}parseSubNode(e,t,n){if(n.singleProperty===!0){const r=n.propertyList[0];Array.isArray(r)?(t[n.name]=n,n.a=r):t[n.name]=r}else if(e==="Connections"&&n.name==="C"){const r=[];n.propertyList.forEach(function(i,s){s!==0&&r.push(i)}),t.connections===void 0&&(t.connections=[]),t.connections.push(r)}else if(n.name==="Properties70")Object.keys(n).forEach(function(i){t[i]=n[i]});else if(e==="Properties70"&&n.name==="P"){let r=n.propertyList[0],i=n.propertyList[1];const s=n.propertyList[2],o=n.propertyList[3];let a;r.indexOf("Lcl ")===0&&(r=r.replace("Lcl ","Lcl_")),i.indexOf("Lcl ")===0&&(i=i.replace("Lcl ","Lcl_")),i==="Color"||i==="ColorRGB"||i==="Vector"||i==="Vector3D"||i.indexOf("Lcl_")===0?a=[n.propertyList[4],n.propertyList[5],n.propertyList[6]]:a=n.propertyList[4],t[r]={type:i,type2:s,flag:o,value:a}}else t[n.name]===void 0?typeof n.id=="number"?(t[n.name]={},t[n.name][n.id]=n):t[n.name]=n:n.name==="PoseNode"?(Array.isArray(t[n.name])||(t[n.name]=[t[n.name]]),t[n.name].push(n)):t[n.name][n.id]===void 0&&(t[n.name][n.id]=n)}parseProperty(e){const t=e.getString(1);let n;switch(t){case"C":return e.getBoolean();case"D":return e.getFloat64();case"F":return e.getFloat32();case"I":return e.getInt32();case"L":return e.getInt64();case"R":return n=e.getUint32(),e.getArrayBuffer(n);case"S":return n=e.getUint32(),e.getString(n);case"Y":return e.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":const r=e.getUint32(),i=e.getUint32(),s=e.getUint32();if(i===0)switch(t){case"b":case"c":return e.getBooleanArray(r);case"d":return e.getFloat64Array(r);case"f":return e.getFloat32Array(r);case"i":return e.getInt32Array(r);case"l":return e.getInt64Array(r)}const o=pe(new Uint8Array(e.getArrayBuffer(s))),a=new ie(o.buffer);switch(t){case"b":case"c":return a.getBooleanArray(r);case"d":return a.getFloat64Array(r);case"f":return a.getFloat32Array(r);case"i":return a.getInt32Array(r);case"l":return a.getInt64Array(r)}break;default:throw new Error("THREE.FBXLoader: Unknown property type "+t)}}}class ie{constructor(e,t){this.dv=new DataView(e),this.offset=0,this.littleEndian=t!==void 0?t:!0,this._textDecoder=new TextDecoder}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(e){this.offset+=e}getBoolean(){return(this.getUint8()&1)===1}getBooleanArray(e){const t=[];for(let n=0;n<e;n++)t.push(this.getBoolean());return t}getUint8(){const e=this.dv.getUint8(this.offset);return this.offset+=1,e}getInt16(){const e=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,e}getInt32(){const e=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,e}getInt32Array(e){const t=[];for(let n=0;n<e;n++)t.push(this.getInt32());return t}getUint32(){const e=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,e}getInt64(){let e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),t&2147483648?(t=~t&4294967295,e=~e&4294967295,e===4294967295&&(t=t+1&4294967295),e=e+1&4294967295,-(t*4294967296+e)):t*4294967296+e}getInt64Array(e){const t=[];for(let n=0;n<e;n++)t.push(this.getInt64());return t}getUint64(){let e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),t*4294967296+e}getFloat32(){const e=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,e}getFloat32Array(e){const t=[];for(let n=0;n<e;n++)t.push(this.getFloat32());return t}getFloat64(){const e=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,e}getFloat64Array(e){const t=[];for(let n=0;n<e;n++)t.push(this.getFloat64());return t}getArrayBuffer(e){const t=this.dv.buffer.slice(this.offset,this.offset+e);return this.offset+=e,t}getString(e){const t=this.offset;let n=new Uint8Array(this.dv.buffer,t,e);this.skip(e);const r=n.indexOf(0);return r>=0&&(n=new Uint8Array(this.dv.buffer,t,r)),this._textDecoder.decode(n)}}class ae{add(e,t){this[e]=t}}function Ze(h){const e="Kaydara FBX Binary \0";return h.byteLength>=e.length&&e===ce(h,0,e.length)}function qe(h){const e=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"];let t=0;function n(r){const i=h[r-1];return h=h.slice(t+r),t++,i}for(let r=0;r<e.length;++r)if(n(1)===e[r])return!1;return!0}function se(h){const e=/FBXVersion: (\d+)/,t=h.match(e);if(t)return parseInt(t[1]);throw new Error("THREE.FBXLoader: Cannot find the version number for the file given.")}function Z(h){return h/46186158e3}const Qe=[];function K(h,e,t,n){let r;switch(n.mappingType){case"ByPolygonVertex":r=h;break;case"ByPolygon":r=e;break;case"ByVertice":r=t;break;case"AllSame":r=n.indices[0];break;default:console.warn("THREE.FBXLoader: unknown attribute mapping type "+n.mappingType)}n.referenceType==="IndexToDirect"&&(r=n.indices[r]);const i=r*n.dataSize,s=i+n.dataSize;return Je(Qe,n.buffer,i,s)}const q=new O,U=new M;function le(h){const e=new I,t=new I,n=new I,r=new I,i=new I,s=new I,o=new I,a=new I,c=new I,u=new I,l=new I,p=new I,f=h.inheritType?h.inheritType:0;h.translation&&e.setPosition(U.fromArray(h.translation));const m=G(0);if(h.preRotation){const k=h.preRotation.map(S.degToRad);k.push(m),t.makeRotationFromEuler(q.fromArray(k))}if(h.rotation){const k=h.rotation.map(S.degToRad);k.push(h.eulerOrder||m),n.makeRotationFromEuler(q.fromArray(k))}if(h.postRotation){const k=h.postRotation.map(S.degToRad);k.push(m),r.makeRotationFromEuler(q.fromArray(k)),r.invert()}h.scale&&i.scale(U.fromArray(h.scale)),h.scalingOffset&&o.setPosition(U.fromArray(h.scalingOffset)),h.scalingPivot&&s.setPosition(U.fromArray(h.scalingPivot)),h.rotationOffset&&a.setPosition(U.fromArray(h.rotationOffset)),h.rotationPivot&&c.setPosition(U.fromArray(h.rotationPivot)),h.parentMatrixWorld&&(l.copy(h.parentMatrix),u.copy(h.parentMatrixWorld));const d=t.clone().multiply(n).multiply(r),g=new I;g.extractRotation(u);const w=new I;w.copyPosition(u);const T=w.clone().invert().multiply(u),v=g.clone().invert().multiply(T),F=i,D=new I;if(f===0)D.copy(g).multiply(d).multiply(v).multiply(F);else if(f===1)D.copy(g).multiply(v).multiply(d).multiply(F);else{const N=new I().scale(new M().setFromMatrixScale(l)).clone().invert(),ue=v.clone().multiply(N);D.copy(g).multiply(d).multiply(ue).multiply(F)}const P=c.clone().invert(),C=s.clone().invert();let L=e.clone().multiply(a).multiply(c).multiply(t).multiply(n).multiply(r).multiply(P).multiply(o).multiply(s).multiply(i).multiply(C);const j=new I().copyPosition(L),X=u.clone().multiply(j);return p.copyPosition(X),L=p.clone().multiply(D),L.premultiply(u.invert()),L}function G(h){h=h||0;const e=["ZYX","YZX","XZY","ZXY","YXZ","XYZ"];return h===6?(console.warn("THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect."),e[0]):e[h]}function Q(h){return h.split(",").map(function(t){return parseFloat(t)})}function ce(h,e,t){return e===void 0&&(e=0),t===void 0&&(t=h.byteLength),new TextDecoder().decode(new Uint8Array(h,e,t))}function $e(h,e){for(let t=0,n=h.length,r=e.length;t<r;t++,n++)h[n]=e[t]}function Je(h,e,t,n){for(let r=t,i=0;r<n;r++,i++)h[i]=e[r];return h}export{rt as FBXLoader};
@@ -1 +0,0 @@
1
- import{r as o,j as e,am as v,an as H,b3 as m}from"./volter-sdk-D8o6TU4A.js";import{s as W,a as B,p as M,r as z,S as F}from"./index-Bc73pJIv.js";import"./client-Dj2xr2fw.js";function V({assetPath:r,displayName:l}){const{sheetPath:i,frameName:t}=W(r),s=`/${i}`,[a,n]=o.useState(null),[x,p]=o.useState(t),[f,u]=o.useState("fit"),[j,I]=o.useState(null),w=o.useRef(null),[y,N]=o.useState({w:320,h:240}),h=x??t,g=h?a?.frames.find(c=>c.name===h)??null:null;o.useEffect(()=>{p(t),u("fit")},[t]),o.useEffect(()=>{if(!t){n(null);return}let c=!1;return fetch(`/${B(i)}`).then(d=>d.ok?d.text():null).then(d=>{c||!d||n(M(d))}).catch(()=>{c||n(null)}),()=>{c=!0}},[t,i]),o.useEffect(()=>{const c=w.current;if(!c)return;const d=new ResizeObserver(R=>{const S=R[0]?.contentRect;S&&N({w:Math.max(1,S.width-24),h:Math.max(1,S.height-24)})});return d.observe(c),()=>d.disconnect()},[]);const b=g?.sourceWidth??j?.w??0,$=g?.sourceHeight??j?.h??0,k=z(f,b,$,y.w,y.h),E=l??h??i.split("/").pop()??r;return e.jsxs("div",{"data-testid":"image-asset-document",style:{height:"100%",minHeight:240,display:"flex",flexDirection:"column",minWidth:0},children:[e.jsx(C,{title:E,srcWidth:b,srcHeight:$,scaleMode:f,scale:k,onScaleMode:u}),e.jsx(O,{stageRef:w,frameName:t,frame:g,sheet:a,sheetUrl:s,title:E,scale:k,onNatural:I}),a&&a.frames.length>1?e.jsx(P,{sheetUrl:s,frames:a.frames,activeName:h,onPick:p}):null]})}function C({title:r,srcWidth:l,srcHeight:i,scaleMode:t,scale:s,onScaleMode:a}){return e.jsxs("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:6,padding:"6px 8px"},children:[e.jsx(v,{tone:"dim",variant:"label",children:r}),l>0&&e.jsxs(v,{tone:"muted",variant:"code",children:[l," × ",i,t==="fit"?` · ${T(s)}`:""]}),e.jsx("span",{style:{flex:1}}),[1,4,8,"fit"].map(n=>e.jsx(H,{type:"button",size:"compact",shape:"segment","aria-pressed":t===n,variant:t===n?"primary":"secondary",onClick:()=>a(n),children:n==="fit"?"Fit":`${n}×`},String(n)))]})}function O({stageRef:r,frameName:l,frame:i,sheet:t,sheetUrl:s,title:a,scale:n,onNatural:x}){let p;return l&&!i?p=e.jsx(v,{tone:"muted",variant:"body",children:t?`No sprite named ${l}`:"Loading sprite…"}):i?p=e.jsx(F,{sheetUrl:s,frame:i,scale:n}):p=e.jsx("img",{src:s,alt:a,style:{imageRendering:"pixelated",display:"block",transform:`scale(${n})`,transformOrigin:"center center"},onLoad:f=>{const u=f.currentTarget;x({w:u.naturalWidth,h:u.naturalHeight})}}),e.jsx("div",{ref:r,className:"volter-asset-transparency-well","data-testid":"sprite-stage",style:{flex:1,minHeight:0,display:"flex",alignItems:"center",justifyContent:"center",overflow:"auto"},children:p})}function P({sheetUrl:r,frames:l,activeName:i,onPick:t}){return e.jsx("div",{"data-testid":"sprite-filmstrip",style:{display:"flex",gap:6,overflowX:"auto",padding:"8px 8px 10px",borderTop:`1px solid ${m[3]}`},children:l.map(s=>{const a=s.name===i;return e.jsxs("button",{type:"button",title:s.name,"aria-pressed":a,onClick:()=>t(s.name),style:{border:a?`1px solid ${m[1]}`:"1px solid transparent",background:"transparent",padding:2,cursor:"pointer",flex:"0 0 auto"},children:[e.jsx(F,{sheetUrl:r,frame:s,maxEdge:40}),e.jsx("div",{style:{fontSize:9,color:a?m[1]:m[3],maxWidth:56,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:s.name})]},s.name)})})}function T(r){return r>=1?`${r}×`:`1/${Math.round(1/r)}×`}export{V as ImageViewer};
@@ -1 +0,0 @@
1
- import{j as t}from"./volter-sdk-D8o6TU4A.js";import{Object3DSnapshotDocument as e}from"./EntityModelDocument-rYF-p8Fo.js";import"./three.page-Dy2q5JEV.js";import"./object3d-document-session-registry-DvgzaByQ.js";import"./output-pass-Bw2FZb8e.js";import"./three.module-JoAAxMWl.js";import"./volter-shared-three-core-DEsIwtOu.js";import"./asset-preview-CtqauM13.js";import"./live-mixers-B-bwLZ7c.js";import"./StageHost-xYvmzMBo.js";import"./linear-resolve-B-MA5O31.js";import"./model-inspection-_SFE7cp7.js";import"./standard-viewport-dressing-asIXnD-w.js";import"./OrbitControls-DxYDYiEc.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./transport-strip-cKO8FHd1.js";function D({previewKey:o,object:r,displayName:i}){return t.jsx("div",{"data-testid":"inspector-object-preview",style:{position:"absolute",inset:0,overflow:"hidden"},children:t.jsx(e,{documentId:`inspector-preview:${o}`,source:r,displayName:i,active:!0,chromeless:!0})})}export{D as InspectorObjectPreview};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BRLA7zdc.js","assets/index-BP6wv2A0.js","assets/index-7vd2obXq.js","assets/index-CnvSS9lU.js","assets/index-DYNMP0kE.js","assets/index-Dz8qGBZc.js","assets/index-Fv4R0cYr.js","assets/index-f-MQ14bP.js","assets/index-ux8XhRyW.js"])))=>i.map(i=>d[i]);
2
- import{r as m,j as a,t,e as y,jF as F,fq as z,jG as M,jH as J}from"./volter-sdk-D8o6TU4A.js";const P={ts:"typescript",tsx:"typescript",mts:"typescript",cts:"typescript",js:"typescript",jsx:"typescript",mjs:"typescript",cjs:"typescript",json:"json",jsonc:"json",json5:"json"};function te(e){const o=e.split("/").pop()??e,n=o.lastIndexOf(".");return n<0?"text":P[o.slice(n+1).toLowerCase()]??"text"}let T=null;function W(){return T??=Promise.all([y(()=>import("./index-BP6wv2A0.js"),[]),y(()=>import("./index-BRLA7zdc.js").then(e=>e.i),__vite__mapDeps([0,1])),y(()=>import("./index-7vd2obXq.js").then(e=>e.w),__vite__mapDeps([2,1,0])),y(()=>import("./index-CnvSS9lU.js"),__vite__mapDeps([3,0,1])),y(()=>import("./index-DYNMP0kE.js"),__vite__mapDeps([4,1,0,2])),y(()=>import("./index-Dz8qGBZc.js"),__vite__mapDeps([5,6,2,1,0])),y(()=>import("./index-f-MQ14bP.js"),__vite__mapDeps([7,6,2,1,0])),y(()=>import("./index-ux8XhRyW.js"),__vite__mapDeps([8,0,1,2]))]).then(([e,o,n,r,c,s,l,d])=>({state:e,view:o,language:n,search:r,commands:c,javascript:s,json:l,oneDark:d})),T}function S(e){return typeof e=="number"?`${e}px`:e}function R(e){return typeof e=="string"&&e.trim().endsWith("%")}function G(e,o){let n=0;for(;n<e.length&&n<o.length&&e[n]===o[n];)n++;let r=e.length,c=o.length;for(;r>n&&c>n&&e[r-1]===o[c-1];)r--,c--;return{from:n,oldEnd:r,newEnd:c}}const L=1800,k=`color-mix(in srgb, ${t.semantic.warning} 42%, transparent)`,C=`color-mix(in srgb, ${t.semantic.warning} 18%, transparent)`;function U(e){class o extends e.view.WidgetType{constructor(s){super(),this.revision=s}eq(s){return this.revision===s.revision}toDOM(){const s=document.createElement("span");return s.className=`cm-source-deletion cm-source-change cm-source-change-${this.revision%2}`,s.setAttribute("aria-hidden","true"),s}}const n=e.state.StateEffect.define(),r=e.state.StateField.define({create:()=>e.view.Decoration.none,update(c,s){let l=c.map(s.changes);for(const d of s.effects){if(!d.is(n))continue;if(!d.value){l=e.view.Decoration.none;continue}const{from:f,to:i,revision:b}=d.value,g=f===i?e.view.Decoration.widget({widget:new o(b),side:-1}).range(f):e.view.Decoration.mark({class:`cm-source-change cm-source-change-${b%2}`}).range(f,i);l=e.view.Decoration.set([g])}return l},provide:c=>e.view.EditorView.decorations.from(c)});return{mark:n,field:r}}function H(e,o,n){return e.view.EditorView.theme({"&":{color:t.content.primary,backgroundColor:"transparent",fontSize:`${o}px`,...R(n)?{height:S(n)}:{}},"&.cm-focused":{outline:"none"},".cm-content":{fontFamily:t.typography.mono,padding:"2px 0",caretColor:"transparent"},".cm-scroller":{fontFamily:t.typography.mono,lineHeight:"1.5",overflow:"auto",...n===void 0?{}:{maxHeight:S(n)}},".cm-gutters":{backgroundColor:"transparent",color:t.content.dim,border:"none",userSelect:"none"},".cm-lineNumbers .cm-gutterElement":{padding:"0 8px 0 4px",minWidth:"2ch"},".cm-content ::selection":{backgroundColor:t.selection.background},".cm-panels":{backgroundColor:t.surface.raised,color:t.content.primary,border:"none",fontFamily:t.typography.sans},".cm-panels.cm-panels-top":{borderBottom:`1px solid ${t.boundary.default}`},".cm-textfield":{backgroundColor:t.surface.inset,color:t.content.primary,border:`1px solid ${t.boundary.default}`,borderRadius:t.shape.small},".cm-button":{backgroundColor:t.surface.raised,backgroundImage:"none",color:t.content.primary,border:`1px solid ${t.boundary.default}`,borderRadius:t.shape.small},".cm-searchMatch":{backgroundColor:t.accent.muted},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:t.accent.default,color:t.content.onAccent},".cm-source-change":{backgroundColor:k,borderRadius:"2px"},".cm-line:has(.cm-source-change)":{backgroundColor:C},".cm-source-change, .cm-line:has(.cm-source-change)":{animationDuration:`${L}ms`,animationTimingFunction:"ease-out",animationFillMode:"forwards"},".cm-source-deletion":{display:"inline-block",width:"0",position:"relative"},".cm-source-deletion::after":{content:'""',position:"absolute",left:"-2px",bottom:"0",width:"4px",height:"1em",backgroundColor:"inherit",borderRadius:"2px"},".cm-source-change-0":{animationName:"volter-source-change-even"},".cm-source-change-1":{animationName:"volter-source-change-odd"},".cm-line:has(.cm-source-change-0)":{animationName:"volter-source-line-even"},".cm-line:has(.cm-source-change-1)":{animationName:"volter-source-line-odd"},"@keyframes volter-source-line-even":{"0%, 40%":{backgroundColor:C},"100%":{backgroundColor:"transparent"}},"@keyframes volter-source-line-odd":{"0%, 40%":{backgroundColor:C},"100%":{backgroundColor:"transparent"}},"@keyframes volter-source-change-even":{"0%, 40%":{backgroundColor:k},"100%":{backgroundColor:"transparent"}},"@keyframes volter-source-change-odd":{"0%, 40%":{backgroundColor:k},"100%":{backgroundColor:"transparent"}},"@media (prefers-reduced-motion: reduce)":{".cm-source-change, .cm-line:has(.cm-source-change)":{animation:"none"}},".cm-matchingBracket, &.cm-focused .cm-matchingBracket":{backgroundColor:t.neutralOverlay.active,outline:`1px solid ${t.boundary.strong}`}},{dark:!0})}function K(e,o,n,r){const c=o==="typescript"?[e.javascript.javascript({typescript:!0,jsx:!0})]:o==="json"?[e.json.json()]:[];return[e.view.lineNumbers(),e.view.highlightSpecialChars(),e.language.bracketMatching(),e.language.syntaxHighlighting(e.oneDark.oneDarkHighlightStyle),e.search.search({top:!0}),e.view.keymap.of([...e.commands.standardKeymap,...e.search.searchKeymap]),e.view.EditorView.lineWrapping,e.state.EditorState.readOnly.of(!0),e.view.EditorView.editable.of(!1),e.view.EditorView.contentAttributes.of({tabindex:"0"}),...c,H(e,n,r)]}function q({value:e,language:o,fontSize:n=11,maxHeight:r,ariaLabel:c,followChanges:s=!1}){const l=m.useRef(null),d=m.useRef(null),f=m.useRef(null),i=m.useRef(null),b=m.useRef(0),g=m.useRef(e);g.current=e;const[p,I]=m.useState(null),[N,$]=m.useState(!1);m.useEffect(()=>{let u=!1;return W().then(h=>{u||I(h)},()=>{u||$(!0)}),()=>{u=!0}},[]),m.useEffect(()=>{const u=l.current;if(!u||!p)return;const h=U(p),w=new p.view.EditorView({parent:u,state:p.state.EditorState.create({doc:g.current,extensions:[K(p,o,n,r),h.field]})});return d.current=w,f.current=h,()=>{i.current!==null&&clearTimeout(i.current),i.current=null,f.current=null,d.current=null,w.destroy()}},[p,o,n,r]),m.useEffect(()=>{const u=d.current;if(!u)return;const h=u.state.toText(e).toString(),w=u.state.doc.toString();if(w===h)return;const{from:x,oldEnd:B,newEnd:D}=G(w,h),O=u.state.changes({from:x,to:B,insert:h.slice(x,D)}),v=f.current,E=[];if(s&&p&&v){const _=u.coordsAtPos(x),j=u.scrollDOM.getBoundingClientRect(),A=_&&_.top>=j.top&&_.bottom<=j.bottom&&_.left>=j.left&&_.right<=j.right?u.scrollSnapshot().map(O):p.view.EditorView.scrollIntoView(x,{y:"nearest",x:"nearest"});A&&E.push(A),E.push(v.mark.of({from:x,to:D,revision:++b.current}))}else v&&E.push(v.mark.of(null));u.dispatch({changes:O,effects:E}),i.current!==null&&clearTimeout(i.current),i.current=null,s&&v&&(i.current=setTimeout(()=>{d.current===u&&u.dispatch({effects:v.mark.of(null)}),i.current=null},L))},[e,s,p]);const V=R(r)?{height:"100%",minHeight:0}:{};return p?a.jsx("div",{ref:l,role:"group","aria-label":c,style:{minWidth:0,...V}}):a.jsxs("div",{role:"group","aria-label":c,style:{minWidth:0,...V},children:[N&&a.jsx("div",{style:{color:t.semantic.warning,fontSize:10,marginBottom:4},children:"Syntax highlighting failed to load — showing plain text."}),a.jsx("pre",{style:{margin:0,fontFamily:t.typography.mono,fontSize:n,lineHeight:1.5,color:t.content.primary,whiteSpace:"pre-wrap",wordBreak:"break-word",overflow:"auto",...r===void 0?{}:{maxHeight:S(r)},...R(r)?{height:S(r)}:{}},children:e})]})}const X={fontSize:11,color:t.content.muted,marginBottom:2};function Y({assetPath:e}){const[o,n]=m.useState(null),[r,c]=m.useState("json"),[s,l]=m.useState(!1),d=e.split("/").pop()??e;return m.useEffect(()=>{let f=!1;return n(null),l(!1),fetch(F(e)).then(i=>i.text()).then(i=>{try{const b=JSON.parse(i);f||(c("json"),n(JSON.stringify(b,null,2)))}catch{f||(c("text"),n(i))}}).catch(()=>{f||l(!0)}),()=>{f=!0}},[e]),a.jsxs("div",{style:{padding:8,display:"flex",flexDirection:"column",gap:8},children:[a.jsx("div",{style:{fontWeight:600,fontSize:12,color:t.content.primary,wordBreak:"break-all"},children:d}),a.jsx("div",{className:"volter-content-frost",style:{border:`1px solid ${t.boundary.default}`,borderRadius:t.shape.small,padding:8,overflow:"hidden",maxHeight:500},children:s?a.jsx("span",{style:{color:t.semantic.danger,fontSize:11},children:"Failed to load file"}):o===null?a.jsx("span",{style:{color:t.content.muted,fontSize:11},children:"Loading..."}):a.jsx(q,{value:o,language:r,fontSize:10,maxHeight:484,ariaLabel:`Contents of ${d}`})}),a.jsx(z,{label:"Info",defaultOpen:!1,children:a.jsxs("div",{children:[a.jsx("div",{style:X,children:"Path"}),a.jsx("div",{style:{fontSize:11,color:t.content.primary,wordBreak:"break-all"},children:e})]})})]})}function Q({documentId:e,assetPath:o,displayName:n,active:r,sections:c,status:s}){const[l,d]=m.useState({kind:"loading"}),f=M();if(m.useEffect(()=>{if(!r){d({kind:"loading"});return}const i=new AbortController;return d({kind:"loading"}),(async()=>{for(const g of f){const p=await g.recognize(o,i.signal);if(p!==null)return{kind:"content",viewer:g,content:p}}return{kind:"generic"}})().then(g=>{i.signal.aborted||d(g)},g=>{i.signal.aborted||d({kind:"error",message:g instanceof Error?g.message:String(g)})}),()=>i.abort()},[r,o,f]),l.kind==="content"){const{Viewer:i}=l.viewer;return a.jsx(i,{documentId:e,assetPath:o,displayName:n,active:r,content:l.content})}return a.jsx(J,{documentId:e,active:r,type:"json",title:n,sections:c,status:s,children:l.kind==="loading"?a.jsxs("div",{style:{padding:20,color:t.content.muted},children:["Inspecting ",n,"…"]}):l.kind==="error"?a.jsx("div",{role:"alert",style:{padding:20,color:t.semantic.danger},children:l.message}):a.jsx(Y,{assetPath:o})})}const ne=Object.freeze(Object.defineProperty({__proto__:null,JsonAssetDocument:Q},Symbol.toStringTag,{value:"Module"}));export{q as C,Q as J,ne as a,te as c};
@@ -1 +0,0 @@
1
- import{kA as V,r as p,bs as U,bt as X,j as o,t as g,jA as G,kB as J,aD as K,iX as P,kC as Q}from"./volter-sdk-D8o6TU4A.js";import{d as T}from"./asset-preview-CtqauM13.js";import{r as Y,o as Z}from"./object3d-document-session-registry-DvgzaByQ.js";import{B as ee}from"./three.page-Dy2q5JEV.js";import{b as te}from"./standard-viewport-dressing-asIXnD-w.js";import{Group as re,Box3 as ne}from"./volter-shared-three-core-DEsIwtOu.js";import"./output-pass-Bw2FZb8e.js";import"./three.module-JoAAxMWl.js";class v extends Error{constructor(t){super(t.message),this.refusal=t,this.name="LiveModuleError"}}function oe(e){return Object.keys(e).filter(t=>t!=="__esModule"&&t!=="Symbol.toStringTag")}function $(e){return typeof e=="object"&&e!==null&&e.isObject3D===!0}function se(e){if("default"in e)return{name:"default",value:e.default};const t=oe(e);return t.length===0?{kind:"not-a-model",message:"This module exports nothing."}:t.length>1?{kind:"not-a-model",message:`This module has no default export and ${t.length} named exports (${t.join(", ")}), so there is no single subject to build. A model module default-exports its builder.`}:{name:t[0],value:e[t[0]]}}function S(e){if($(e))return{root:e};if(!e||typeof e!="object")return;const t=e;if(!$(t.root))return;const r=t.root;return Array.isArray(t.animations)&&r.animations.length===0&&(r.animations=t.animations),{root:r,...typeof t.dispose=="function"?{dispose:()=>t.dispose.call(e)}:{}}}function C(e){if(e===void 0)return"undefined";if(e===null)return"null";if(typeof e!="object")return typeof e;if(Array.isArray(e))return"an array";const t=Object.keys(e);return t.length>0?`an object with keys ${t.slice(0,8).join(", ")}`:"an object with no own keys"}const L="a model module returns a THREE.Object3D, or a build result `{ root, animations?, dispose? }` whose `root` is one.";async function ie(e,t){const r=S(t);if(r)return{...r,exportName:e};if(typeof t!="function")return{kind:"not-a-model",message:`Export '${e}' is ${C(t)}, not a function and not a model — `+L};let a;try{a=await t()}catch(s){return{kind:"import-failed",message:`Export '${e}' threw while building: ${H(s)}`,...s instanceof Error&&s.stack?{stack:s.stack}:{}}}const l=S(a);return l?{...l,exportName:e}:{kind:"not-a-model",message:`Export '${e}' ran but returned ${C(a)} — ${L}`}}function H(e){return e instanceof Error?e.message:String(e)}async function ae(e,t,r){let a;try{a=await import(V(e,t,r))}catch(c){throw new v({kind:"import-failed",message:H(c),...c instanceof Error&&c.stack?{stack:c.stack}:{}})}const l=se(a);if("kind"in l)throw new v(l);const s=await ie(l.name,l.value);if("kind"in s)throw new v(s);return s}const R={height:"100%",width:"100%",minHeight:0,display:"flex",position:"relative"},F={flex:1,minWidth:0,minHeight:0,display:"flex"};function le(e,t){if(e.kind!=="import-failed")return{message:e.message};const r=Q(t);return r?{message:r,stack:e.message}:{message:e.message,stack:e.stack}}function be({documentId:e,projectRoot:t,modulePath:r,displayName:a,active:l,fallback:s}){const[c,w]=p.useState({status:"probing"}),[b,D]=p.useState(null),u=p.useMemo(()=>{const i=new re;return i.name=r.split("/").pop()??r,i},[r]),M=p.useRef(!1);p.useEffect(()=>{let i=!1,k=0,d=null,m=Promise.resolve(),y=null,j=null;const A=()=>{d&&(u.remove(d),u.animations=[],j?j():T(d),d=null,j=null)},N=(n,h)=>{A(),d=n,j=h,u.add(n),u.animations=n.animations,P(e)},I=(n,h)=>{if(n.kind==="not-a-model"&&!h){w({status:"fallback"});return}const f=le(n,r);D(f),K.error(`${r}: ${f.message}`,"live-module"),h||w({status:"fallback"})},O=n=>i||n!==k,W=async()=>{k+=1;const n=k,h=G();let f;try{f=await ae(t,r,h)}catch(x){if(O(n))return;if(!(x instanceof v))throw x;y=x,I(x.refusal,d!==null);return}if(O(n)){f.dispose?f.dispose():T(f.root);return}N(f.root,f.dispose??null),y=null,J(r),D(null),w({status:"live"})},E=()=>(m=W(),m),q=Y(e,async()=>{let n=E();for(;;){if(await n,i)throw new Error(`Document closed while rebuilding: ${r}`);if(n===m)break;n=m}if(y)throw y});E();const z=U(n=>{X(n,r)&&E()});return()=>{i=!0,q(),z(),A()}},[u,e,r,t]),p.useEffect(()=>{if(c.status!=="live"||M.current)return;let i=0,k=0;const d=()=>{const m=Z(e);if(m){M.current=!0,new ne().setFromObject(u).isEmpty()||m.frame();return}++k>60||(i=requestAnimationFrame(d))};return i=requestAnimationFrame(d),()=>cancelAnimationFrame(i)},[u,e,c.status]);const _=p.useCallback(()=>({root:u,dispose(){}}),[u]);return c.status==="probing"?o.jsxs("div",{style:{padding:20,color:g.content.muted},children:["Inspecting ",a,"…"]}):c.status==="fallback"?o.jsxs("div",{style:R,children:[b?o.jsx(B,{failure:b}):null,o.jsx("div",{style:{...F,overflow:"auto"},children:s})]}):o.jsxs("div",{style:R,children:[o.jsx("div",{style:{...F,opacity:b?.35:1},children:o.jsx(ee,{documentId:e,sourcePath:r,displayName:a,build:_,active:l,assetType:"model module",cameraDirection:te,modelSource:{kind:"project-file",path:r}})}),b?o.jsx(B,{failure:b}):null]})}function B({failure:e}){return o.jsxs("div",{role:"alert","data-testid":"live-module-error",style:{position:"absolute",top:8,left:8,right:8,zIndex:2,maxHeight:"60%",overflow:"auto",padding:"8px 10px",borderRadius:g.shape.small,background:g.surface.raised,border:`1px solid ${g.semantic.danger}`,color:g.semantic.danger,fontFamily:g.typography.mono,fontSize:11,lineHeight:1.5,whiteSpace:"pre-wrap",wordBreak:"break-word",pointerEvents:"auto"},children:[o.jsx("div",{style:{fontWeight:600},children:"This module did not build — showing the last good model."}),o.jsx("div",{style:{marginTop:4},children:e.message}),e.stack?o.jsx("div",{style:{marginTop:6,color:g.content.muted},children:e.stack}):null]})}export{be as LiveModuleDocument};
@@ -1 +0,0 @@
1
- import{r as w,gU as z,b8 as A,ky as N,$ as k,d2 as I,j as i,t as y,jH as T,b0 as F,cA as C,ap as B}from"./volter-sdk-D8o6TU4A.js";import{EffectComposer as O,LUT3DEffect as P,RenderPass as _,EffectPass as $}from"./index-DlAJXb_f.js";import{W as H}from"./three.module-JoAAxMWl.js";import{Loader as G,UnsignedByteType as M,FileLoader as V,Vector3 as L,Data3DTexture as W,LinearFilter as R,ClampToEdgeWrapping as j,SRGBColorSpace as q,ACESFilmicToneMapping as X,Scene as Z,Color as D,PerspectiveCamera as J,HemisphereLight as K,DirectionalLight as Q,MeshStandardMaterial as v,SphereGeometry as Y,BoxGeometry as ee,PlaneGeometry as te,Mesh as ne}from"./volter-shared-three-core-DEsIwtOu.js";class re extends G{constructor(t){super(t),this.type=M}setType(t){return this.type=t,this}load(t,a,f,g){const r=new V(this.manager);r.setPath(this.path),r.setResponseType("text"),r.load(t,c=>{try{a(this.parse(c))}catch(e){g?g(e):console.error(e),this.manager.itemError(t)}},f,g)}parse(t){const a=/TITLE +"([^"]*)"/,f=/LUT_3D_SIZE +(\d+)/,g=/DOMAIN_MIN +([\d.]+) +([\d.]+) +([\d.]+)/,r=/DOMAIN_MAX +([\d.]+) +([\d.]+) +([\d.]+)/,c=/^([\d.e+-]+) +([\d.e+-]+) +([\d.e+-]+) *$/gm;let e=a.exec(t);const p=e!==null?e[1]:null;if(e=f.exec(t),e===null)throw new Error("THREE.LUTCubeLoader: Missing LUT_3D_SIZE information");const s=Number(e[1]),u=s**3*4,o=this.type===M?new Uint8Array(u):new Float32Array(u),d=new L(0,0,0),m=new L(1,1,1);if(e=g.exec(t),e!==null&&d.set(Number(e[1]),Number(e[2]),Number(e[3])),e=r.exec(t),e!==null&&m.set(Number(e[1]),Number(e[2]),Number(e[3])),d.x>m.x||d.y>m.y||d.z>m.z)throw new Error("THREE.LUTCubeLoader: Invalid input domain");const x=this.type===M?255:1;let h=0;for(;(e=c.exec(t))!==null;)o[h++]=Number(e[1])*x,o[h++]=Number(e[2])*x,o[h++]=Number(e[3])*x,o[h++]=x;const l=new W;return l.image.data=o,l.image.width=s,l.image.height=s,l.image.depth=s,l.type=this.type,l.magFilter=R,l.minFilter=R,l.wrapS=j,l.wrapT=j,l.wrapR=j,l.generateMipmaps=!1,l.needsUpdate=!0,{title:p,size:s,domainMin:d,domainMax:m,texture3D:l}}}function b(n){return n.split("/").pop()??n}function E(n,t,a){return Math.min(a,Math.max(t,n))}function U(n){return[n.x,n.y,n.z].map(t=>t.toFixed(2)).join(", ")}function se(){const n=new Z;n.background=new D("#171a22");const t=new J(34,1,.1,100);t.position.set(6.6,4.6,8.8),t.lookAt(0,.7,0),n.add(new K("#dce8ff","#322a27",2.1));const a=new Q("#fff3db",3.8);a.position.set(4,7,5),n.add(a);const f=[],g=[],r=(s,u,o)=>{f.push(s),g.push(u);const d=new ne(s,u);return d.position.set(...o),d.castShadow=!0,d.receiveShadow=!0,n.add(d),d},c=[["#e64d45",-2.4],["#e5ad42",-1.2],["#55b86a",0],["#47a9d8",1.2],["#8a68d7",2.4]];for(const[s,u]of c)r(new Y(.48,48,32),new v({color:s,roughness:.3,metalness:.08}),[u,.65,0]);[.06,.18,.5,.82,1].forEach((s,u)=>{const o=Math.round(s*255);r(new ee(.78,.78,.78),new v({color:new D(`rgb(${o}, ${o}, ${o})`),roughness:.72}),[-2.4+u*1.2,1.85,-.1])});const p=r(new te(9,6),new v({color:"#777b86",roughness:.92}),[0,.08,-1.8]);return p.rotation.x=-Math.PI/2,{scene:n,camera:t,dispose:()=>{for(const s of f)s.dispose();for(const s of g)s.dispose()}}}function oe({lut:n,settingsRef:t}){const a=w.useRef(null);return w.useEffect(()=>{const f=a.current;if(!f)return;let g=!1,r=0;const c=document.createElement("canvas");c.setAttribute("aria-label","LUT before and after preview"),c.style.width="100%",c.style.height="100%",c.style.display="block",f.replaceChildren(c);const e=new H({canvas:c,antialias:!0});e.outputColorSpace=q,e.toneMapping=X,e.toneMappingExposure=1,e.shadowMap.enabled=!0;const p=se(),s=new O(e),u=new P(n.texture3D,{tetrahedralInterpolation:!0});s.addPass(new _(p.scene,p.camera)),s.addPass(new $(p.camera,u));const o={width:1,height:1},d=()=>{const l=t.current,S=Math.round(o.width*E(l.split,.05,.95));u.blendMode.opacity.value=E(l.intensity,0,1),u.tetrahedralInterpolation=l.tetrahedral,e.setScissorTest(!1),e.setRenderTarget(null),e.clear(),e.setScissorTest(!0),e.setScissor(0,0,S,o.height),e.render(p.scene,p.camera),e.setScissor(S,0,o.width-S,o.height),s.render(),e.setScissorTest(!1)},m=()=>{const l=f.getBoundingClientRect();o.width=Math.max(1,Math.floor(l.width)),o.height=Math.max(1,Math.floor(l.height)),e.setPixelRatio(Math.min(window.devicePixelRatio||1,2)),e.setSize(o.width,o.height,!1),s.setSize(o.width,o.height),p.camera.aspect=o.width/o.height,p.camera.updateProjectionMatrix()};m(),d();const x=new ResizeObserver(()=>{m(),d()});x.observe(f);const h=()=>{g||(d(),r=requestAnimationFrame(h))};return r=requestAnimationFrame(h),()=>{g=!0,cancelAnimationFrame(r),x.disconnect(),s.dispose(),u.dispose(),p.dispose(),e.dispose(),c.remove()}},[n,t]),i.jsx("div",{ref:a,"data-testid":"lut-preview",style:{width:"100%",height:"100%",minHeight:260,background:"#171a22"}})}function ie({settings:n,onChange:t}){return i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:12,padding:4},children:[i.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:5,fontSize:11},children:["Intensity",i.jsx(C,{value:n.intensity,onChange:a=>t({...n,intensity:E(a,0,1)}),step:.01,precision:2})]}),i.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:5,fontSize:11},children:["Comparison split",i.jsx(C,{value:n.split,onChange:a=>t({...n,split:E(a,.05,.95)}),step:.01,precision:2})]}),i.jsxs("label",{style:{display:"flex",alignItems:"center",gap:7,fontSize:11},children:[i.jsx(B,{checked:n.tetrahedral,onChange:a=>t({...n,tetrahedral:a.target.checked})}),"Tetrahedral interpolation"]}),i.jsx("div",{style:{color:y.content.muted,fontSize:10,lineHeight:1.45},children:"Preview controls are session-only. Bind the LUT and accepted intensity in the owning TSX post-processing composition."})]})}async function ae(n){const t=await F(n);if(t===null)throw new Error(`CUBE LUT not found: ${n}`);return new re().parse(t)}function pe({documentId:n,assetPath:t,active:a=!0}){const[f,g]=w.useState(0),[r,c]=w.useState(null),[e,p]=w.useState(null),[s,u]=w.useState({intensity:1,split:.5,tetrahedral:!0}),o=w.useRef(s);o.current=s,w.useEffect(()=>{if(a)return z().files.subscribeAsset(t,()=>g(m=>m+1))},[a,t]),w.useEffect(()=>{if(!a)return;let m=!1,x=null;return c(null),p(null),ae(t).then(h=>{if(x=h,m){h.texture3D.dispose();return}c(h)},h=>{m||p(h instanceof Error?h.message:String(h))}),()=>{m=!0,x?.texture3D.dispose()}},[a,t,f]);const d=w.useMemo(()=>[{id:"lut-profile",title:"Color Grade",icon:N,order:A,body:{kind:"custom",...r?{data:{title:r.title,size:r.size,domainMin:r.domainMin.toArray(),domainMax:r.domainMax.toArray()}}:{},render:()=>i.jsxs("div",{style:{display:"grid",gridTemplateColumns:"auto 1fr",gap:"6px 10px"},children:[i.jsx("span",{style:{color:y.content.muted},children:"Title"}),i.jsx("span",{children:r?.title||b(t)}),i.jsx("span",{style:{color:y.content.muted},children:"Cube"}),i.jsx("span",{children:r?`${r.size}³`:"—"}),i.jsx("span",{style:{color:y.content.muted},children:"Domain"}),i.jsx("span",{children:r?`${U(r.domainMin)} → ${U(r.domainMax)}`:"—"})]})}},{id:"lut-preview-settings",title:"Preview",icon:I,order:k,body:{kind:"custom",data:{...s},render:()=>i.jsx(ie,{settings:s,onChange:u})}}],[t,r,s]);return e?i.jsx(T,{documentId:n,active:a,type:"color grade",title:b(t),status:"CUBE LUT unavailable",children:i.jsx("div",{role:"alert",style:{padding:20,color:y.semantic.danger},children:e})}):r?i.jsx(T,{documentId:n,active:a,type:"color grade",title:b(t),sections:d,status:`CUBE LUT · ${r.size}³`,fill:!0,children:i.jsxs("div",{style:{position:"relative",width:"100%",height:"100%",minHeight:0,background:"#171a22"},children:[i.jsx(oe,{lut:r,settingsRef:o}),i.jsx("div",{style:{position:"absolute",left:12,top:12,padding:"4px 7px",borderRadius:4,background:"rgba(12,14,20,0.72)",color:"#f2f4f8",fontSize:10,pointerEvents:"none"},children:"Original"}),i.jsx("div",{style:{position:"absolute",right:12,top:12,padding:"4px 7px",borderRadius:4,background:"rgba(12,14,20,0.72)",color:"#f2f4f8",fontSize:10,pointerEvents:"none"},children:r.title||"Graded"})]})}):i.jsx(T,{documentId:n,active:a,type:"color grade",title:b(t),status:"Loading CUBE LUT",children:i.jsx("div",{style:{padding:20,color:y.content.muted},children:"Loading color grade…"})})}export{pe as LutAssetDocument};
@@ -1,2 +0,0 @@
1
- import"./three.module-JoAAxMWl.js";import{Loader as b,LoaderUtils as w,FileLoader as M,FrontSide as x,RepeatWrapping as F,ColorManagement as d,Color as u,SRGBColorSpace as f,MeshPhongMaterial as O,Vector2 as g,DefaultLoadingManager as y,TextureLoader as L}from"./volter-shared-three-core-DEsIwtOu.js";class S extends b{constructor(t){super(t)}load(t,o,p,e){const a=this,n=this.path===""?w.extractUrlBase(t):this.path,r=new M(this.manager);r.setPath(this.path),r.setRequestHeader(this.requestHeader),r.setWithCredentials(this.withCredentials),r.load(t,function(s){try{o(a.parse(s,n))}catch(i){e?e(i):console.error(i),a.manager.itemError(t)}},p,e)}setMaterialOptions(t){return this.materialOptions=t,this}parse(t,o){const p=t.split(`
2
- `);let e={};const a=/\s+/,n={};for(let s=0;s<p.length;s++){let i=p[s];if(i=i.trim(),i.length===0||i.charAt(0)==="#")continue;const c=i.indexOf(" ");let l=c>=0?i.substring(0,c):i;l=l.toLowerCase();let h=c>=0?i.substring(c+1):"";if(h=h.trim(),l==="newmtl")e={name:h},n[h]=e;else if(l==="ka"||l==="kd"||l==="ks"||l==="ke"){const m=h.split(a,3);e[l]=[parseFloat(m[0]),parseFloat(m[1]),parseFloat(m[2])]}else e[l]=h}const r=new C(this.resourcePath||o,this.materialOptions);return r.setCrossOrigin(this.crossOrigin),r.setManager(this.manager),r.setMaterials(n),r}}class C{constructor(t="",o={}){this.baseUrl=t,this.options=o,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.crossOrigin="anonymous",this.side=this.options.side!==void 0?this.options.side:x,this.wrap=this.options.wrap!==void 0?this.options.wrap:F}setCrossOrigin(t){return this.crossOrigin=t,this}setManager(t){this.manager=t}setMaterials(t){this.materialsInfo=this.convert(t),this.materials={},this.materialsArray=[],this.nameLookup={}}convert(t){if(!this.options)return t;const o={};for(const p in t){const e=t[p],a={};o[p]=a;for(const n in e){let r=!0,s=e[n];const i=n.toLowerCase();switch(i){case"kd":case"ka":case"ks":this.options&&this.options.normalizeRGB&&(s=[s[0]/255,s[1]/255,s[2]/255]),this.options&&this.options.ignoreZeroRGBs&&s[0]===0&&s[1]===0&&s[2]===0&&(r=!1);break}r&&(a[i]=s)}}return o}preload(){for(const t in this.materialsInfo)this.create(t)}getIndex(t){return this.nameLookup[t]}getAsArray(){let t=0;for(const o in this.materialsInfo)this.materialsArray[t]=this.create(o),this.nameLookup[o]=t,t++;return this.materialsArray}create(t){return this.materials[t]===void 0&&this.createMaterial_(t),this.materials[t]}createMaterial_(t){const o=this,p=this.materialsInfo[t],e={name:t,side:this.side};function a(r,s){return typeof s!="string"||s===""?"":/^https?:\/\//i.test(s)?s:r+s}function n(r,s){if(e[r])return;const i=o.getTextureParams(s,e),c=o.loadTexture(a(o.baseUrl,i.url));c.repeat.copy(i.scale),c.offset.copy(i.offset),c.wrapS=o.wrap,c.wrapT=o.wrap,(r==="map"||r==="emissiveMap")&&(c.colorSpace=f),e[r]=c}for(const r in p){const s=p[r];let i;if(s!=="")switch(r.toLowerCase()){case"kd":e.color=d.colorSpaceToWorking(new u().fromArray(s),f);break;case"ks":e.specular=d.colorSpaceToWorking(new u().fromArray(s),f);break;case"ke":e.emissive=d.colorSpaceToWorking(new u().fromArray(s),f);break;case"map_kd":n("map",s);break;case"map_ks":n("specularMap",s);break;case"map_ke":n("emissiveMap",s);break;case"norm":n("normalMap",s);break;case"map_bump":case"bump":n("bumpMap",s);break;case"disp":n("displacementMap",s);break;case"map_d":n("alphaMap",s),e.transparent=!0;break;case"ns":e.shininess=parseFloat(s);break;case"d":i=parseFloat(s),i<1&&(e.opacity=i,e.transparent=!0);break;case"tr":i=parseFloat(s),this.options&&this.options.invertTrProperty&&(i=1-i),i>0&&(e.opacity=1-i,e.transparent=!0);break}}return this.materials[t]=new O(e),this.materials[t]}getTextureParams(t,o){const p={scale:new g(1,1),offset:new g(0,0)},e=t.split(/\s+/);let a;return a=e.indexOf("-bm"),a>=0&&(o.bumpScale=parseFloat(e[a+1]),e.splice(a,2)),a=e.indexOf("-mm"),a>=0&&(o.displacementBias=parseFloat(e[a+1]),o.displacementScale=parseFloat(e[a+2]),e.splice(a,3)),a=e.indexOf("-s"),a>=0&&(p.scale.set(parseFloat(e[a+1]),parseFloat(e[a+2])),e.splice(a,4)),a=e.indexOf("-o"),a>=0&&(p.offset.set(parseFloat(e[a+1]),parseFloat(e[a+2])),e.splice(a,4)),p.url=e.join(" ").trim(),p}loadTexture(t,o,p,e,a){const n=this.manager!==void 0?this.manager:y;let r=n.getHandler(t);r===null&&(r=new L(n)),r.setCrossOrigin&&r.setCrossOrigin(this.crossOrigin);const s=r.load(t,p,e,a);return o!==void 0&&(s.mapping=o),s}}export{S as MTLLoader};
@@ -1 +0,0 @@
1
- import{r as l,j as u,t as a}from"./volter-sdk-D8o6TU4A.js";import{P as w,d as f}from"./asset-preview-CtqauM13.js";import{y as x,z as E,A as S}from"./three.page-Dy2q5JEV.js";import{O as M}from"./StageHost-xYvmzMBo.js";import"./output-pass-Bw2FZb8e.js";import"./three.module-JoAAxMWl.js";import"./volter-shared-three-core-DEsIwtOu.js";import"./object3d-document-session-registry-DvgzaByQ.js";import"./live-mixers-B-bwLZ7c.js";import"./linear-resolve-B-MA5O31.js";import"./model-inspection-_SFE7cp7.js";import"./standard-viewport-dressing-asIXnD-w.js";import"./OrbitControls-DxYDYiEc.js";import"./editor-presentation-activity-CqJH4G9t.js";import"./transport-strip-cKO8FHd1.js";function q({documentId:g,assetPath:o,displayName:d,active:i}){const[j,s]=l.useState(null),[c,p]=l.useState(null);l.useEffect(()=>{if(!i){s(null);return}const n=new AbortController;let m=null;s(null),p(null);const t=x(o);return(t==="glb"||t==="gltf"||t==="spz"?w(o,n.signal):t?E({url:o,format:t}).then(S).then(r=>({root:r,sourceBytes:null})):Promise.reject(new Error(`No native Three.js model loader supports ${o}.`))).then(r=>{if(n.signal.aborted){f(r.root);return}m=r.root,s(r)},r=>{n.signal.aborted||p(r instanceof Error?r.message:String(r))}),()=>{n.abort(),m&&f(m)}},[i,o]);const e=j?.root??null,b=l.useCallback(()=>{if(!e)throw new Error(`Model asset ${o} is not loaded.`);return{root:e,animations:e.animations,dispose(){}}},[o,e]);return c?u.jsx("div",{role:"alert",style:{padding:20,color:a.semantic.danger},children:c}):e?u.jsx(M,{documentId:g,sourcePath:o,displayName:d,build:b,active:i,assetType:"model",modelSource:{kind:"project-file",path:o}}):u.jsxs("div",{style:{padding:20,color:a.content.muted},children:["Loading ",d,"…"]})}export{q as ModelAssetDocument};
@@ -1,5 +0,0 @@
1
- import"./three.module-JoAAxMWl.js";import{Loader as N,FileLoader as R,Color as H,SRGBColorSpace as T,Group as k,BufferGeometry as P,Float32BufferAttribute as w,LineBasicMaterial as C,Material as U,PointsMaterial as L,MeshPhongMaterial as J,LineSegments as D,Points as z,Mesh as S,Vector3 as V}from"./volter-shared-three-core-DEsIwtOu.js";const q=/^[og]\s*(.+)?/,W=/^mtllib /,K=/^usemtl /,Q=/^usemap /,B=/\s+/,E=new V,F=new V,G=new V,O=new V,j=new V,_=new H;function X(){const I={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(s,e){if(this.object&&this.object.fromDeclaration===!1){this.object.name=s,this.object.fromDeclaration=e!==!1;return}const n=this.object&&typeof this.object.currentMaterial=="function"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0),this.object={name:s||"",fromDeclaration:e!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(t,i){const a=this._finalize(!1);a&&(a.inherited||a.groupCount<=0)&&this.materials.splice(a.index,1);const d={index:this.materials.length,name:t||"",mtllib:Array.isArray(i)&&i.length>0?i[i.length-1]:"",smooth:a!==void 0?a.smooth:this.smooth,groupStart:a!==void 0?a.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(g){const r={index:typeof g=="number"?g:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return r.clone=this.clone.bind(r),r}};return this.materials.push(d),d},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(t){const i=this.currentMaterial();if(i&&i.groupEnd===-1&&(i.groupEnd=this.geometry.vertices.length/3,i.groupCount=i.groupEnd-i.groupStart,i.inherited=!1),t&&this.materials.length>1)for(let a=this.materials.length-1;a>=0;a--)this.materials[a].groupCount<=0&&this.materials.splice(a,1);return t&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),i}},n&&n.name&&typeof n.clone=="function"){const t=n.clone(0);t.inherited=!0,this.object.materials.push(t)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(s,e){const n=parseInt(s,10);return(n>=0?n-1:n+e/3)*3},parseNormalIndex:function(s,e){const n=parseInt(s,10);return(n>=0?n-1:n+e/3)*3},parseUVIndex:function(s,e){const n=parseInt(s,10);return(n>=0?n-1:n+e/2)*2},addVertex:function(s,e,n){const t=this.vertices,i=this.object.geometry.vertices;i.push(t[s+0],t[s+1],t[s+2]),i.push(t[e+0],t[e+1],t[e+2]),i.push(t[n+0],t[n+1],t[n+2])},addVertexPoint:function(s){const e=this.vertices;this.object.geometry.vertices.push(e[s+0],e[s+1],e[s+2])},addVertexLine:function(s){const e=this.vertices;this.object.geometry.vertices.push(e[s+0],e[s+1],e[s+2])},addNormal:function(s,e,n){const t=this.normals,i=this.object.geometry.normals;i.push(t[s+0],t[s+1],t[s+2]),i.push(t[e+0],t[e+1],t[e+2]),i.push(t[n+0],t[n+1],t[n+2])},addFaceNormal:function(s,e,n){const t=this.vertices,i=this.object.geometry.normals;E.fromArray(t,s),F.fromArray(t,e),G.fromArray(t,n),j.subVectors(G,F),O.subVectors(E,F),j.cross(O),j.normalize(),i.push(j.x,j.y,j.z),i.push(j.x,j.y,j.z),i.push(j.x,j.y,j.z)},addColor:function(s,e,n){const t=this.colors,i=this.object.geometry.colors;t[s]!==void 0&&i.push(t[s+0],t[s+1],t[s+2]),t[e]!==void 0&&i.push(t[e+0],t[e+1],t[e+2]),t[n]!==void 0&&i.push(t[n+0],t[n+1],t[n+2])},addUV:function(s,e,n){const t=this.uvs,i=this.object.geometry.uvs;i.push(t[s+0],t[s+1]),i.push(t[e+0],t[e+1]),i.push(t[n+0],t[n+1])},addDefaultUV:function(){const s=this.object.geometry.uvs;s.push(0,0),s.push(0,0),s.push(0,0)},addUVLine:function(s){const e=this.uvs;this.object.geometry.uvs.push(e[s+0],e[s+1])},addFace:function(s,e,n,t,i,a,d,g,r){const h=this.vertices.length;let o=this.parseVertexIndex(s,h),l=this.parseVertexIndex(e,h),u=this.parseVertexIndex(n,h);if(this.addVertex(o,l,u),this.addColor(o,l,u),d!==void 0&&d!==""){const m=this.normals.length;o=this.parseNormalIndex(d,m),l=this.parseNormalIndex(g,m),u=this.parseNormalIndex(r,m),this.addNormal(o,l,u)}else this.addFaceNormal(o,l,u);if(t!==void 0&&t!==""){const m=this.uvs.length;o=this.parseUVIndex(t,m),l=this.parseUVIndex(i,m),u=this.parseUVIndex(a,m),this.addUV(o,l,u),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(s){this.object.geometry.type="Points";const e=this.vertices.length;for(let n=0,t=s.length;n<t;n++){const i=this.parseVertexIndex(s[n],e);this.addVertexPoint(i),this.addColor(i)}},addLineGeometry:function(s,e){this.object.geometry.type="Line";const n=this.vertices.length,t=this.uvs.length;for(let i=0,a=s.length;i<a;i++)this.addVertexLine(this.parseVertexIndex(s[i],n));for(let i=0,a=e.length;i<a;i++)this.addUVLine(this.parseUVIndex(e[i],t))}};return I.startObject("",!1),I}class $ extends N{constructor(s){super(s),this.materials=null}load(s,e,n,t){const i=this,a=new R(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(s,function(d){try{e(i.parse(d))}catch(g){t?t(g):console.error(g),i.manager.itemError(s)}},n,t)}setMaterials(s){return this.materials=s,this}parse(s){const e=new X;s.indexOf(`\r
2
- `)!==-1&&(s=s.replace(/\r\n/g,`
3
- `)),s.indexOf(`\\
4
- `)!==-1&&(s=s.replace(/\\\n/g,""));const n=s.split(`
5
- `);let t=[];for(let d=0,g=n.length;d<g;d++){const r=n[d].trimStart();if(r.length===0)continue;const h=r.charAt(0);if(h!=="#")if(h==="v"){const o=r.split(B);switch(o[0]){case"v":e.vertices.push(parseFloat(o[1]),parseFloat(o[2]),parseFloat(o[3])),o.length>=7?(_.setRGB(parseFloat(o[4]),parseFloat(o[5]),parseFloat(o[6]),T),e.colors.push(_.r,_.g,_.b)):e.colors.push(void 0,void 0,void 0);break;case"vn":e.normals.push(parseFloat(o[1]),parseFloat(o[2]),parseFloat(o[3]));break;case"vt":e.uvs.push(parseFloat(o[1]),parseFloat(o[2]));break}}else if(h==="f"){const l=r.slice(1).trim().split(B),u=[];for(let c=0,p=l.length;c<p;c++){const b=l[c];if(b.length>0){const v=b.split("/");u.push(v)}}const m=u[0];for(let c=1,p=u.length-1;c<p;c++){const b=u[c],v=u[c+1];e.addFace(m[0],b[0],v[0],m[1],b[1],v[1],m[2],b[2],v[2])}}else if(h==="l"){const o=r.substring(1).trim().split(" ");let l=[];const u=[];if(r.indexOf("/")===-1)l=o;else for(let m=0,c=o.length;m<c;m++){const p=o[m].split("/");p[0]!==""&&l.push(p[0]),p[1]!==""&&u.push(p[1])}e.addLineGeometry(l,u)}else if(h==="p"){const l=r.slice(1).trim().split(" ");e.addPointGeometry(l)}else if((t=q.exec(r))!==null){const o=(" "+t[0].slice(1).trim()).slice(1);e.startObject(o)}else if(K.test(r))e.object.startMaterial(r.substring(7).trim(),e.materialLibraries);else if(W.test(r))e.materialLibraries.push(r.substring(7).trim());else if(Q.test(r))console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.');else if(h==="s"){if(t=r.split(" "),t.length>1){const l=t[1].trim().toLowerCase();e.object.smooth=l!=="0"&&l!=="off"}else e.object.smooth=!0;const o=e.object.currentMaterial();o&&(o.smooth=e.object.smooth)}else{if(r==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+r+'"')}}e.finalize();const i=new k;if(i.materialLibraries=[].concat(e.materialLibraries),!(e.objects.length===1&&e.objects[0].geometry.vertices.length===0)===!0)for(let d=0,g=e.objects.length;d<g;d++){const r=e.objects[d],h=r.geometry,o=r.materials,l=h.type==="Line",u=h.type==="Points";let m=!1;if(h.vertices.length===0)continue;const c=new P;c.setAttribute("position",new w(h.vertices,3)),h.normals.length>0&&c.setAttribute("normal",new w(h.normals,3)),h.colors.length>0&&(m=!0,c.setAttribute("color",new w(h.colors,3))),h.hasUVIndices===!0&&c.setAttribute("uv",new w(h.uvs,2));const p=[];for(let v=0,M=o.length;v<M;v++){const y=o[v],A=y.name+"_"+y.smooth+"_"+m;let f=e.materials[A];if(this.materials!==null){if(f=this.materials.create(y.name),l&&f&&!(f instanceof C)){const x=new C;U.prototype.copy.call(x,f),x.color.copy(f.color),f=x}else if(u&&f&&!(f instanceof L)){const x=new L({size:10,sizeAttenuation:!1});U.prototype.copy.call(x,f),x.color.copy(f.color),x.map=f.map,f=x}}f===void 0&&(l?f=new C:u?f=new L({size:1,sizeAttenuation:!1}):f=new J,f.name=y.name,f.flatShading=!y.smooth,f.vertexColors=m,e.materials[A]=f),p.push(f)}let b;if(p.length>1){for(let v=0,M=o.length;v<M;v++){const y=o[v];c.addGroup(y.groupStart,y.groupCount,v)}l?b=new D(c,p):u?b=new z(c,p):b=new S(c,p)}else l?b=new D(c,p[0]):u?b=new z(c,p[0]):b=new S(c,p[0]);b.name=r.name,i.add(b)}else if(e.vertices.length>0){const d=new L({size:1,sizeAttenuation:!1}),g=new P;g.setAttribute("position",new w(e.vertices,3)),e.colors.length>0&&e.colors[0]!==void 0&&(g.setAttribute("color",new w(e.colors,3)),d.vertexColors=!0);const r=new z(g,d);i.add(r)}return i}}export{$ as OBJLoader};
@@ -1 +0,0 @@
1
- import{r,iY as X,jJ as R,j0 as Z,h3 as I,h4 as N,dM as L,c7 as ee,j8 as se,iT as S,jK as te,j as s,eo as G,hj as h,cF as b,cf as l,hy as ie,an as B,db as oe,fD as ae,hr as F,gf as d,gm as H,f6 as re,jL as ne,cy as le,dJ as ce,dH as $,et as de,am as A,f0 as pe,c8 as ue,hf as W,jM as me,jN as he,cG as ge,jO as ve,jP as be,jQ as xe}from"./volter-sdk-D8o6TU4A.js";import{G as je,H as fe}from"./asset-preview-CtqauM13.js";import{s as we}from"./model-inspection-_SFE7cp7.js";import{s as Se,e as U,o as ye,f as ke}from"./object3d-document-session-registry-DvgzaByQ.js";import{v as K,V as Ce,a as Me,p as Pe,b as Ee,c as Ve}from"./ViewportShadingMenu-amXbnRtl.js";import"./output-pass-Bw2FZb8e.js";import"./three.module-JoAAxMWl.js";import"./volter-shared-three-core-DEsIwtOu.js";const _=()=>()=>{},x=()=>0,De=[{key:"skeletons",label:"Bones"},{key:"weights",label:"Weights"},{key:"cursor",label:"3D Cursor"},{key:"cameras",label:"Cameras"},{key:"lights",label:"Lights"},{key:"empties",label:"Empties"}];function Fe({documentId:o,assetPath:p}){r.useSyncExternalStore(Se,U,U);const t=ye(o);r.useSyncExternalStore(t?.subscribe??_,t?.getSnapshot??x,t?.getSnapshot??x),r.useSyncExternalStore(X,R,R);const i=Z(o);r.useSyncExternalStore(i?.subscribe??_,i?.getSnapshot??x,i?.getSnapshot??x);const J=ke(o),[y,k]=r.useState(null),[C,g]=r.useState(null),[M,v]=r.useState(!1),[P,c]=r.useState(!1),E=r.useRef(null),V=r.useRef(null);if(r.useSyncExternalStore(I,N,N),!t)return null;const a=t.presentation(),{lighting:u}=L(o),m=ee(o),D=m?se(m.stageKind):null,q=m?.documentLayer?.all?.lighting?.studioPreset===S.id||D?.all?.lighting?.studioPreset===S.id,j=m?te(m.stageKind):!1,O=e=>j?{modes:{[L(o).drawMode]:{lighting:e}}}:{all:{lighting:e}},f=new Set(Object.entries(D?.modes??{}).filter(([,e])=>e?.lighting!==void 0).map(([e])=>e)),w=new Set(we(t.root).filter(e=>e.available).map(e=>e.mode)),Q=[...j?K.map(e=>e.mode==="solid"?{...e,label:"Solid",description:"Materials' colours under the studio lights"}:e.mode==="clay"?{...e,label:"Clay"}:e):K,...f.has("preview")?[{mode:"preview",label:"Material Preview",description:"Materials lit by a preview environment"}]:[],...f.has("rendered")?[{mode:"rendered",label:"Rendered",description:"Lit as a render is, by the scene's own lights"}]:[],...w.has("uv")?[{mode:"uv",label:"UV",description:"UV coordinates as surface color"}]:[],...w.has("vertex-colors")?[{mode:"vertex-colors",label:"Vertex colors",description:"Authored color attributes without textures"}]:[]],T=async e=>{if(p){g(null);try{await xe().saveThumbnailFraming(p,e?void 0:t.cameraPose())}catch(n){g(n instanceof Error?n.message:String(n))}}},Y=async()=>{g(null);try{const e={background:a.background},n=p?.toLowerCase().endsWith(".spz")?await je(p,e):fe(t.root,e);k(`data:image/png;base64,${n.contactSheet.base64}`)}catch(e){g(e instanceof Error?e.message:String(e))}},z=t.selection().length>0?"Frame selection":"Frame all";return s.jsxs("div",{className:"volter-model-document-header",children:[s.jsxs(G,{compact:!0,label:"Viewport view controls",className:"volter-model-viewport-toolbar volter-model-viewport-toolbar--view",children:[s.jsx(h,{text:z,children:s.jsx(b,{"aria-label":z,onClick:()=>t.frame(),children:s.jsx(l,{icon:ie,size:"md"})})}),s.jsxs("div",{className:"volter-viewport-popover-anchor",children:[s.jsx(h,{text:"Camera orientation and projection",children:s.jsxs(B,{ref:E,type:"button",size:"compact",variant:"secondary","aria-label":`Camera view: ${a.projection}`,"aria-haspopup":"menu","aria-expanded":M,onClick:()=>v(e=>!e),className:"volter-model-toolbar-labelled-control",children:[s.jsx(l,{icon:oe,size:"sm"}),s.jsx("span",{children:a.projection==="perspective"?"Perspective":"Orthographic"}),s.jsx(l,{icon:ae,size:"xs"})]})}),M&&s.jsxs(F,{anchorRef:E,align:"start",clamp:!0,"aria-label":"Camera view",onDismiss:()=>v(!1),style:{minWidth:210},children:[["front","right","top","isometric"].map(e=>s.jsx(d,{onSelect:()=>{t.setViewPreset(e,"view"),v(!1)},children:e==="isometric"?"Perspective 3/4":`${e[0]?.toUpperCase()}${e.slice(1)} view`},e)),s.jsx(H,{}),["perspective","orthographic"].map(e=>s.jsxs(d,{role:"menuitemradio","aria-checked":a.projection===e,onSelect:()=>{t.setProjection(e),v(!1)},children:[s.jsx("span",{className:"volter-menu-check",children:a.projection===e&&s.jsx(l,{icon:re,size:"xs"})}),e==="perspective"?"Perspective":"Orthographic"]},e))]})]}),w.has("skeleton")?s.jsx(h,{text:`Rig: ${a.skeleton?"Visible":"Hidden"}`,children:s.jsx(b,{"aria-label":"Toggle rig overlay","aria-pressed":a.skeleton,onClick:()=>t.setSkeleton(!a.skeleton),children:s.jsx(l,{icon:ne,size:"md"})})}):null]}),s.jsxs(G,{compact:!0,label:"Viewport preview controls",className:"volter-model-viewport-toolbar volter-model-viewport-toolbar--preview",children:[s.jsxs(Ce,{mode:a.mode,onChange:e=>t.setMode(e),choices:Q,segments:j?Pe(f):Me,children:[s.jsxs("label",{children:[s.jsx("span",{children:"Lighting"}),s.jsxs(le,{"aria-label":"Lighting",value:u.source==="studio"?`studio:${u.studioPreset}`:u.source,onChange:e=>{const n=e.target.value;$(o,O(n.startsWith("studio:")?{source:"studio",studioPreset:n.slice(7)}:{source:n}))},children:[ce().filter(e=>e.id!==S.id||q).map(e=>s.jsx("option",{value:`studio:${e.id}`,children:e.title},e.id)),s.jsx("option",{value:"scene",children:"Scene lights"})]})]}),s.jsxs("label",{children:[s.jsx("span",{children:"Exposure"}),s.jsx(de,{"aria-label":"Preview exposure",type:"range",min:"0.2",max:"2",step:"0.1",value:u.tone.exposure,onChange:e=>$(o,O({tone:{exposure:Number(e.target.value)}}))}),s.jsx(A,{as:"span",variant:"caption",children:u.tone.exposure.toFixed(1)})]})]}),i===null?null:s.jsx(h,{text:`Gizmos: ${i.showGizmos?"On":"Off"}`,children:s.jsx(b,{"aria-label":"Toggle gizmos","aria-pressed":i.showGizmos,size:"comfortable",onClick:()=>i.toggleGizmos(),children:s.jsx(l,{icon:pe.viewport.gizmos,size:"md"})})}),s.jsx(Ee,{glyph:s.jsx(Ve,{}),...i===null?{}:{master:{enabled:i.showHelpers,onToggle:()=>i.toggleHelpers()}},choices:[{id:"grid",label:"Grid",enabled:W(o),onToggle:()=>ue(o,!W(o))},{id:"bounds",label:"Bounds",enabled:a.bounds,onToggle:()=>t.setBounds(!a.bounds)},...i===null?[]:De.filter(e=>J.includes(e.key)).map(e=>({id:e.key,label:e.label,enabled:i.helperVisibility[e.key],onToggle:()=>i.toggleHelperType(e.key)}))]}),s.jsxs("div",{className:"volter-viewport-popover-anchor",children:[s.jsx(h,{text:"Asset preview actions",children:s.jsx(b,{ref:V,"aria-label":"Asset preview actions","aria-haspopup":"menu","aria-expanded":P,onClick:()=>c(e=>!e),children:s.jsx(l,{icon:me,size:"md"})})}),P&&s.jsxs(F,{anchorRef:V,clamp:!0,"aria-label":"Asset preview actions",onDismiss:()=>c(!1),style:{minWidth:210},children:[s.jsxs(d,{onSelect:()=>{c(!1),Y()},children:[s.jsx(l,{icon:he,size:"sm"}),"Capture preview"]}),p?s.jsxs(s.Fragment,{children:[s.jsx(d,{onSelect:()=>{c(!1),T(!1)},children:"Save thumbnail framing"}),s.jsx(d,{onSelect:()=>{c(!1),T(!0)},children:"Reset thumbnail framing"})]}):null,s.jsx(H,{}),s.jsxs(d,{onSelect:()=>{t.resetPresentation(),c(!1)},children:[s.jsx(l,{icon:ge,size:"sm"}),"Reset viewport settings"]})]})]})]}),y?s.jsxs(ve,{className:"volter-model-capture-preview",children:[s.jsxs("div",{children:[s.jsx(A,{as:"strong",variant:"label",children:"Deterministic views"}),s.jsx(B,{type:"button",variant:"ghost",onClick:()=>k(null),children:"Close"})]}),s.jsx("img",{src:y,alt:"Front, right, top, and three-quarter model preview"})]}):null,C?s.jsx(be,{className:"volter-model-toolbar-error",tone:"error",children:C}):null]})}export{Fe as Object3DDocumentToolbar};