@volter/cyclotron 0.0.0-stage → 0.5.192

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 (607) hide show
  1. package/BUNDLED_NOTICES +6877 -0
  2. package/LICENSE +670 -0
  3. package/LICENSE-BLENDER +1409 -0
  4. package/LICENSE-MCP +21 -0
  5. package/NOTICE +20 -0
  6. package/README.md +91 -2
  7. package/dist/.vite/manifest.json +5432 -0
  8. package/dist/assets/BVHLoader-Dxn1IBPh.js +1 -0
  9. package/dist/assets/ColladaLoader-FWjhft-R.js +3 -0
  10. package/dist/assets/EntityModelDocument-KYkNDaSy.js +1 -0
  11. package/dist/assets/EnvironmentAssetDocument-Bn36-K03.js +1 -0
  12. package/dist/assets/FBXLoader-B6D0-2sM.js +1 -0
  13. package/dist/assets/InspectorObjectPreview-CQMs9zha.js +1 -0
  14. package/dist/assets/LineSegments2-D1_2s-N-.js +370 -0
  15. package/dist/assets/LiveModuleDocument-ye1IT-i6.js +2 -0
  16. package/dist/assets/LutAssetDocument-CouZZubV.js +1 -0
  17. package/dist/assets/MTLLoader-BwtVpZY2.js +2 -0
  18. package/dist/assets/ModelAssetDocument-SpE-ctRj.js +1 -0
  19. package/dist/assets/NonThreeAuthoringBootstrap-BAe_hy9t.js +1 -0
  20. package/dist/assets/OBJLoader-Cwe-BN99.js +5 -0
  21. package/dist/assets/Object3DDocumentToolbar-Bfm-RTS8.js +1 -0
  22. package/dist/assets/Object3DPreview-C4Ai3BNI.js +2 -0
  23. package/dist/assets/OrbitControls-Cn2q_IQK.js +1 -0
  24. package/dist/assets/PLYLoader-DOl6qb2a.js +2 -0
  25. package/dist/assets/QuarksAssetDocument-CqYjSnLo.js +2 -0
  26. package/dist/assets/RectAreaLightUniformsLib-CobhIWNK.js +1 -0
  27. package/dist/assets/STLLoader-B5YpfCGT.js +1 -0
  28. package/dist/assets/ShaderAssetDocument-BBT3ENGG.js +1 -0
  29. package/dist/assets/StageHost-qZAn6HZ3.js +1179 -0
  30. package/dist/assets/TDSLoader-BdQ2M2WU.js +1 -0
  31. package/dist/assets/ToolObject3DPreview-ClIcOYFk.js +1 -0
  32. package/dist/assets/ViewportShadingMenu-DmM-Odyl.js +1 -0
  33. package/dist/assets/animation-mixers.service-CsBdF1O3.js +1 -0
  34. package/dist/assets/animation-timeline.utility-DRfepAbV.js +1 -0
  35. package/dist/assets/anthropic-DwpKRVGM.svg +1 -0
  36. package/dist/assets/asset-preview-jtcCFntF.js +4 -0
  37. package/dist/assets/blender-display-shaders-BpnqnkG8.lut +0 -0
  38. package/dist/assets/blender-emscripten-engine-DEk9HdR1.js +2 -0
  39. package/dist/assets/blender-motion-worker-CtT2cV3V.js +1 -0
  40. package/dist/assets/blender-node-editor.document-Bi2T12bG.js +1 -0
  41. package/dist/assets/blender-properties-model-Yj49RcLm.js +1 -0
  42. package/dist/assets/blender-properties-tab-Dtap7p2U.js +3 -0
  43. package/dist/assets/blender-runtime-host-CMI7ldx1.js +17 -0
  44. package/dist/assets/blender-runtime.document-D0NB4iPR.js +13 -0
  45. package/dist/assets/blender-screenshot.menu-D0-n31XK.js +1 -0
  46. package/dist/assets/blender-timeline.document-_1xorgQ6.js +1 -0
  47. package/dist/assets/blender-uv-editor.document-Dki4Ui-b.js +1 -0
  48. package/dist/assets/blender-version.status-DlBU0k-r.js +1 -0
  49. package/dist/assets/blender-wali-engine-D2ymLooc.js +2 -0
  50. package/dist/assets/blender.command-BcpIwWTF.js +1 -0
  51. package/dist/assets/blender.environment-CG-pC7sk.js +1 -0
  52. package/dist/assets/blender.keymap-BmOBRY7p.js +1 -0
  53. package/dist/assets/blender.status-B1L-FZyU.js +1 -0
  54. package/dist/assets/blender.style-DaIh9SiA.js +1 -0
  55. package/dist/assets/city-EkhAOo5s.exr +0 -0
  56. package/dist/assets/clip-planes-CmZu3QTO.js +8 -0
  57. package/dist/assets/content-bounds-Dg9hT5Gp.js +85 -0
  58. package/dist/assets/courtyard-DqlebbpC.exr +0 -0
  59. package/dist/assets/forest-P_CQY3b_.exr +0 -0
  60. package/dist/assets/icon-BkiLD9ed.png +0 -0
  61. package/dist/assets/index-7vd2obXq.js +3 -0
  62. package/dist/assets/index-BP6wv2A0.js +5 -0
  63. package/dist/assets/index-BRLA7zdc.js +7 -0
  64. package/dist/assets/index-BxW3iIJI.js +952 -0
  65. package/dist/assets/index-CnvSS9lU.js +2 -0
  66. package/dist/assets/index-DYNMP0kE.js +1 -0
  67. package/dist/assets/index-Dz8qGBZc.js +13 -0
  68. package/dist/assets/index-Fv4R0cYr.js +1 -0
  69. package/dist/assets/index-f-MQ14bP.js +1 -0
  70. package/dist/assets/index-ux8XhRyW.js +1 -0
  71. package/dist/assets/interior-Bo_lba15.exr +0 -0
  72. package/dist/assets/live-mixers-B-bwLZ7c.js +1 -0
  73. package/dist/assets/model-inspection-jRplyguX.js +1 -0
  74. package/dist/assets/model.layout-BpZE1W9V.js +1 -0
  75. package/dist/assets/models.finder-jvcjSDNd.js +1 -0
  76. package/dist/assets/night-CvV4Gybt.exr +0 -0
  77. package/dist/assets/object3d-document-session-registry-_NnPOZmk.js +2 -0
  78. package/dist/assets/openai-DHNKzFtc.svg +1 -0
  79. package/dist/assets/play-mode-DljPhCBr.js +7208 -0
  80. package/dist/assets/png-encode.worker-E8zk28Vl.js +1 -0
  81. package/dist/assets/product-BxXXdFxI.css +1 -0
  82. package/dist/assets/product-Dcs9ogdH.js +14 -0
  83. package/dist/assets/properties-bone-constraints.inspector-sNOrOqmn.js +1 -0
  84. package/dist/assets/properties-bone.inspector-DrRAhkXh.js +1 -0
  85. package/dist/assets/properties-collection.inspector-D2bNhLqd.js +1 -0
  86. package/dist/assets/properties-constraints.inspector-CGTEqVBY.js +1 -0
  87. package/dist/assets/properties-data.inspector-nwiHdy4s.js +1 -0
  88. package/dist/assets/properties-material.inspector-CPW_Te19.js +1 -0
  89. package/dist/assets/properties-modifiers.inspector-CsIgxGPe.js +1 -0
  90. package/dist/assets/properties-object.inspector-Cwx4QctT.js +1 -0
  91. package/dist/assets/properties-output.inspector-CgChOQat.js +1 -0
  92. package/dist/assets/properties-particles.inspector-B8j59UFB.js +1 -0
  93. package/dist/assets/properties-physics.inspector-ComSsHn6.js +1 -0
  94. package/dist/assets/properties-render.inspector-BTqY-F5-.js +1 -0
  95. package/dist/assets/properties-scene.inspector-C-R7eu1o.js +1 -0
  96. package/dist/assets/properties-texture.inspector-CFmTTdHS.js +1 -0
  97. package/dist/assets/properties-view-layer.inspector-BvMUCTd_.js +1 -0
  98. package/dist/assets/properties-world.inspector-Dpb6EWk8.js +1 -0
  99. package/dist/assets/react-18-BDYozTc0.js +1 -0
  100. package/dist/assets/regions-DWeEBnE2.js +1 -0
  101. package/dist/assets/sculpt.layout-D-K5cLw6.js +1 -0
  102. package/dist/assets/session-C0OdhDD8.js +5393 -0
  103. package/dist/assets/shading.layout-CZZHKBer.js +1 -0
  104. package/dist/assets/sky-precompute-worker-CPGW9t_C.js +1 -0
  105. package/dist/assets/spark.module-GpLuSFtI.js +12120 -0
  106. package/dist/assets/stage-keyboard-Cjy_uKPi.js +1 -0
  107. package/dist/assets/stage-overlay-set-BV78wZfK.js +1 -0
  108. package/dist/assets/stage-presence-markers-CJVuC1Vh.js +1 -0
  109. package/dist/assets/stage-transform-tools-B21BRk-L.js +1 -0
  110. package/dist/assets/standard-viewport-dressing-zXbS_1ew.js +24 -0
  111. package/dist/assets/studio-CysTBGIb.exr +0 -0
  112. package/dist/assets/sunrise-Dj0psFrf.exr +0 -0
  113. package/dist/assets/sunset-Bw3x2Bot.exr +0 -0
  114. package/dist/assets/texture.layout-DASpHVht.js +1 -0
  115. package/dist/assets/three-integration.service-Bfy6rPSh.js +2 -0
  116. package/dist/assets/three.module-dk_BdrjN.js +3840 -0
  117. package/dist/assets/uv-editing.layout-A8RA-cbM.js +1 -0
  118. package/dist/assets/volter-sdk-BwU3fa6G.js +2358 -0
  119. package/dist/assets/volter-sdk-account-BlUZdl9g.js +1 -0
  120. package/dist/assets/volter-sdk-client-C_pM7u8F.js +1 -0
  121. package/dist/assets/volter-sdk-contributions-CyyzzsHD.js +1 -0
  122. package/dist/assets/volter-sdk-css-numeric-style-B404pZI8.js +1 -0
  123. package/dist/assets/volter-sdk-document-probe-DAjYzNFt.js +1 -0
  124. package/dist/assets/volter-sdk-editor-view-suHsPgK2.js +1 -0
  125. package/dist/assets/volter-sdk-host-58UWGff-.js +1 -0
  126. package/dist/assets/volter-sdk-http-transport.browser-VJksIuNN.js +1 -0
  127. package/dist/assets/volter-sdk-index-DQpzb0WD.js +1 -0
  128. package/dist/assets/volter-sdk-kit-CapabilityCoverageSection-C41uHAFx.js +1 -0
  129. package/dist/assets/volter-sdk-kit-account-client-BnrRHdPV.js +1 -0
  130. package/dist/assets/volter-sdk-kit-action-registry-Co0Hbo6i.js +1 -0
  131. package/dist/assets/volter-sdk-kit-active-product-7gseHcVz.js +1 -0
  132. package/dist/assets/volter-sdk-kit-active-project-Bmrlj0XL.js +1 -0
  133. package/dist/assets/volter-sdk-kit-adapter-editor-config-DqGAdw2_.js +1 -0
  134. package/dist/assets/volter-sdk-kit-adapter-observation-Y-Cr3BiX.js +1 -0
  135. package/dist/assets/volter-sdk-kit-animation-animation-clock-BYmBGV0P.js +1 -0
  136. package/dist/assets/volter-sdk-kit-animation-stage-transport-CY7-VoVp.js +1 -0
  137. package/dist/assets/volter-sdk-kit-api-assets-CRsoN16p.js +1 -0
  138. package/dist/assets/volter-sdk-kit-api-base-Dw9L5xJS.js +1 -0
  139. package/dist/assets/volter-sdk-kit-api-build-BapF1Knc.js +1 -0
  140. package/dist/assets/volter-sdk-kit-api-logs-ClNHtQ6y.js +1 -0
  141. package/dist/assets/volter-sdk-kit-api-project-identity-CLam3F93.js +1 -0
  142. package/dist/assets/volter-sdk-kit-api-project-open-D9BK6gAR.js +1 -0
  143. package/dist/assets/volter-sdk-kit-api-project-source-B4ZDf1-O.js +1 -0
  144. package/dist/assets/volter-sdk-kit-api-project-state-Q0gbhHMy.js +1 -0
  145. package/dist/assets/volter-sdk-kit-api-relay-CEs5T2gc.js +1 -0
  146. package/dist/assets/volter-sdk-kit-api-settings-DQhJJaCN.js +1 -0
  147. package/dist/assets/volter-sdk-kit-api-themes-CK0mpUed.js +1 -0
  148. package/dist/assets/volter-sdk-kit-api-worktrees-CZAcA-yg.js +1 -0
  149. package/dist/assets/volter-sdk-kit-asset-capabilities-BH2tqp_X.js +1 -0
  150. package/dist/assets/volter-sdk-kit-asset-compare-core-CO4rbaNo.js +1 -0
  151. package/dist/assets/volter-sdk-kit-asset-editor-context-Crd2QR_x.js +1 -0
  152. package/dist/assets/volter-sdk-kit-asset-events-Cfuds14S.js +1 -0
  153. package/dist/assets/volter-sdk-kit-asset-inspector-actions-BOh3j-zP.js +1 -0
  154. package/dist/assets/volter-sdk-kit-asset-selection-UhfuT50E.js +1 -0
  155. package/dist/assets/volter-sdk-kit-asset-selection-viewer-registry-EWMtCoHo.js +1 -0
  156. package/dist/assets/volter-sdk-kit-asset-thumbnails-CzMUys7a.js +1 -0
  157. package/dist/assets/volter-sdk-kit-asset-viewers-Cf_KVYEv.js +1 -0
  158. package/dist/assets/volter-sdk-kit-asset-workflow-asset-import-jobs-CBNjRa8N.js +1 -0
  159. package/dist/assets/volter-sdk-kit-asset-workflow-asset-ledger-_i8-7mdV.js +1 -0
  160. package/dist/assets/volter-sdk-kit-asset-workflow-asset-ledger-backend-C20xqeUO.js +1 -0
  161. package/dist/assets/volter-sdk-kit-asset-workflow-asset-materialization-report-Dech0lQC.js +1 -0
  162. package/dist/assets/volter-sdk-kit-asset-workflow-asset-pack-manifest-pPS9qzPW.js +1 -0
  163. package/dist/assets/volter-sdk-kit-asset-workflow-audio-preview-player-0wPh24zI.js +1 -0
  164. package/dist/assets/volter-sdk-kit-asset-workflow-audio-waveform-BAY5AA4K.js +1 -0
  165. package/dist/assets/volter-sdk-kit-asset-workflow-cloud-asset-client-DRc8hWEO.js +1 -0
  166. package/dist/assets/volter-sdk-kit-asset-workflow-hosted-asset-materialization-BW7Al90A.js +1 -0
  167. package/dist/assets/volter-sdk-kit-asset-workflow-image-view-scale-DNIgToKY.js +1 -0
  168. package/dist/assets/volter-sdk-kit-asset-workflow-ledger-write-lock-DT7NxaAG.js +1 -0
  169. package/dist/assets/volter-sdk-kit-asset-workflow-pixi-spritesheet-F0tDOvEn.js +1 -0
  170. package/dist/assets/volter-sdk-kit-asset-workflow-preview-resource-lifetime-BvmHntAY.js +1 -0
  171. package/dist/assets/volter-sdk-kit-asset-workflow-project-asset-commands-Dar362Gf.js +1 -0
  172. package/dist/assets/volter-sdk-kit-asset-workflow-project-content-DAMV_NEZ.js +1 -0
  173. package/dist/assets/volter-sdk-kit-asset-workflow-thumbnail-system-D9b6o-CL.js +1 -0
  174. package/dist/assets/volter-sdk-kit-authoring-active-adapter-BZ9hzFLG.js +1 -0
  175. package/dist/assets/volter-sdk-kit-authoring-active-systems-Cpbjxaoi.js +1 -0
  176. package/dist/assets/volter-sdk-kit-authoring-adapter-key-CNJDTSi4.js +1 -0
  177. package/dist/assets/volter-sdk-kit-authoring-authoring-asset-url-BnteIxrT.js +1 -0
  178. package/dist/assets/volter-sdk-kit-authoring-bootstrap-state-DMaoNrQW.js +1 -0
  179. package/dist/assets/volter-sdk-kit-authoring-boundary-authoring-adapter-DBAwTDuf.js +1 -0
  180. package/dist/assets/volter-sdk-kit-authoring-canvas-scene-guides-DWrvby2w.js +1 -0
  181. package/dist/assets/volter-sdk-kit-authoring-composite-authoring-adapter-C4-Kp99J.js +1 -0
  182. package/dist/assets/volter-sdk-kit-authoring-consumer-actions-CBBDoLEX.js +1 -0
  183. package/dist/assets/volter-sdk-kit-authoring-design-time-layers-DuxPqGrN.js +1 -0
  184. package/dist/assets/volter-sdk-kit-authoring-design-time-mount-registry-Div61xFj.js +1 -0
  185. package/dist/assets/volter-sdk-kit-authoring-edit-mode-authoring-lp1HgOZY.js +1 -0
  186. package/dist/assets/volter-sdk-kit-authoring-empty-project-authoring-DESJUilA.js +1 -0
  187. package/dist/assets/volter-sdk-kit-authoring-instance-source-menu-Yw8ilOpP.js +1 -0
  188. package/dist/assets/volter-sdk-kit-authoring-layered-pick-CnFv-JJ4.js +1 -0
  189. package/dist/assets/volter-sdk-kit-authoring-mounted-root-subjects-BG3VV4R2.js +1 -0
  190. package/dist/assets/volter-sdk-kit-authoring-no-authoring-adapter-DdsbWdzA.js +1 -0
  191. package/dist/assets/volter-sdk-kit-authoring-object3d-document-persistence-Cz3dTWOm.js +1 -0
  192. package/dist/assets/volter-sdk-kit-authoring-panel-authoring-CVVMuMz7.js +1 -0
  193. package/dist/assets/volter-sdk-kit-authoring-project-authoring-session-Dr97ZYKO.js +1 -0
  194. package/dist/assets/volter-sdk-kit-authoring-provenance-B5PenuKN.js +1 -0
  195. package/dist/assets/volter-sdk-kit-authoring-react-canvas-navigation-C-FLncdT.js +1 -0
  196. package/dist/assets/volter-sdk-kit-authoring-react-design-canvas-style-mWGHuhfC.js +1 -0
  197. package/dist/assets/volter-sdk-kit-authoring-react-story-board-BJdVcnM0.js +1 -0
  198. package/dist/assets/volter-sdk-kit-authoring-seam-evidence-kaO6Kcw3.js +1 -0
  199. package/dist/assets/volter-sdk-kit-authoring-selection-scope-MaPGsoaC.js +1 -0
  200. package/dist/assets/volter-sdk-kit-authoring-shell-document-ops-fzF3ajnE.js +1 -0
  201. package/dist/assets/volter-sdk-kit-authoring-story-board-chrome-fit-BmaeUc2Q.js +1 -0
  202. package/dist/assets/volter-sdk-kit-authoring-three-root-_Iik8VOw.js +1 -0
  203. package/dist/assets/volter-sdk-kit-authoring-viewport-tool-context-BMaVuFyB.js +1 -0
  204. package/dist/assets/volter-sdk-kit-authoring-viewport-tool-owner-D7gzEf8Y.js +1 -0
  205. package/dist/assets/volter-sdk-kit-authoring-world-session-state-DHU1uP-A.js +1 -0
  206. package/dist/assets/volter-sdk-kit-availability-tick-mnrfOjCO.js +1 -0
  207. package/dist/assets/volter-sdk-kit-bitmap-label-tfpyi7Ai.js +1 -0
  208. package/dist/assets/volter-sdk-kit-boot-routing-BHPc5GLo.js +1 -0
  209. package/dist/assets/volter-sdk-kit-breakpoint-state-Db1oqXJX.js +1 -0
  210. package/dist/assets/volter-sdk-kit-build-identity-BTQ1Xdpa.js +1 -0
  211. package/dist/assets/volter-sdk-kit-bytes-codec-DvWCmxma.js +1 -0
  212. package/dist/assets/volter-sdk-kit-cancellation-reason-BEjzQjCf.js +1 -0
  213. package/dist/assets/volter-sdk-kit-canvas-frames-BJEuXRrc.js +1 -0
  214. package/dist/assets/volter-sdk-kit-capture-camera-pose-YJBoQ23O.js +1 -0
  215. package/dist/assets/volter-sdk-kit-capture-size-EmnVLs8n.js +1 -0
  216. package/dist/assets/volter-sdk-kit-chrome-registry-Cs0k1OX1.js +1 -0
  217. package/dist/assets/volter-sdk-kit-chrome-slot-registry-BwDDbLjQ.js +1 -0
  218. package/dist/assets/volter-sdk-kit-collaboration-client-C2jtyYW3.js +1 -0
  219. package/dist/assets/volter-sdk-kit-collaboration-presence-D3UftauX.js +1 -0
  220. package/dist/assets/volter-sdk-kit-command-dispatch-BZWUjbx5.js +1 -0
  221. package/dist/assets/volter-sdk-kit-command-listener-CfFEgEYh.js +1 -0
  222. package/dist/assets/volter-sdk-kit-command-registry-CxqLDZ_t.js +1 -0
  223. package/dist/assets/volter-sdk-kit-component-board-registry-wPpm4hz2.js +1 -0
  224. package/dist/assets/volter-sdk-kit-component-states-registry-DUnoMxYg.js +1 -0
  225. package/dist/assets/volter-sdk-kit-components-AlignToolbar-kgkYRPYY.js +1 -0
  226. package/dist/assets/volter-sdk-kit-components-ApplicationMenus-DSUoF1z8.js +1 -0
  227. package/dist/assets/volter-sdk-kit-components-AssetEditorShell-BsmfaAE9.js +1 -0
  228. package/dist/assets/volter-sdk-kit-components-AssetInspectorToolSection-GxYRyjBh.js +1 -0
  229. package/dist/assets/volter-sdk-kit-components-BoardRulers-XXJ7RCz4.js +1 -0
  230. package/dist/assets/volter-sdk-kit-components-CanvasAddNodeDialogs-DSg-5iRY.js +1 -0
  231. package/dist/assets/volter-sdk-kit-components-CanvasSceneViewport-C8suTPNd.js +1 -0
  232. package/dist/assets/volter-sdk-kit-components-ChromeSlot-kgnOcXb4.js +1 -0
  233. package/dist/assets/volter-sdk-kit-components-CodeView-8_n22zvN.js +1 -0
  234. package/dist/assets/volter-sdk-kit-components-CompactInspectorShell-DkR_oNfI.js +1 -0
  235. package/dist/assets/volter-sdk-kit-components-ConsolePanel-DiI4aQRP.js +1 -0
  236. package/dist/assets/volter-sdk-kit-components-GameplaySessionTimeline-BwzyAzUn.js +1 -0
  237. package/dist/assets/volter-sdk-kit-components-InspectionProjection-Cz94_Rt7.js +1 -0
  238. package/dist/assets/volter-sdk-kit-components-Inspector-BPFGLp3d.js +1 -0
  239. package/dist/assets/volter-sdk-kit-components-InspectorCanvasPreview-CA1NTcqw.js +1 -0
  240. package/dist/assets/volter-sdk-kit-components-InspectorFieldsSection-BuwRGDJ0.js +1 -0
  241. package/dist/assets/volter-sdk-kit-components-InspectorStoriesSection-BsVaquIj.js +1 -0
  242. package/dist/assets/volter-sdk-kit-components-InspectorToolSection-Di0bMd01.js +1 -0
  243. package/dist/assets/volter-sdk-kit-components-InspectorTransformSection-_E4Y2mdm.js +1 -0
  244. package/dist/assets/volter-sdk-kit-components-LightExplorerPanel-4D34umvc.js +1 -0
  245. package/dist/assets/volter-sdk-kit-components-MediaProperties-BtpXA40W.js +1 -0
  246. package/dist/assets/volter-sdk-kit-components-ProjectHeader-COVqavbg.js +1 -0
  247. package/dist/assets/volter-sdk-kit-components-ReactCanvasControls-lvb140oy.js +1 -0
  248. package/dist/assets/volter-sdk-kit-components-RootSelectionOverlay-BWDtha0N.js +1 -0
  249. package/dist/assets/volter-sdk-kit-components-RootTextEditor-E99FydcX.js +1 -0
  250. package/dist/assets/volter-sdk-kit-components-SaveStatus-DolfRGCT.js +1 -0
  251. package/dist/assets/volter-sdk-kit-components-SurfaceStateOverlay-BHtKccFF.js +1 -0
  252. package/dist/assets/volter-sdk-kit-components-ToolContributionSurfaces-D02jF-QD.js +1 -0
  253. package/dist/assets/volter-sdk-kit-components-ToolHost-xY2N5GR3.js +1 -0
  254. package/dist/assets/volter-sdk-kit-components-Toolbar-XTw72bRl.js +1 -0
  255. package/dist/assets/volter-sdk-kit-components-TransientHint-LyCJ6M5h.js +1 -0
  256. package/dist/assets/volter-sdk-kit-components-VersionControlSection-CaUBgU7Q.js +1 -0
  257. package/dist/assets/volter-sdk-kit-components-ViewportOverlaysMenu-DJm0Vtra.js +1 -0
  258. package/dist/assets/volter-sdk-kit-components-VolterLogo-7QJN2Aue.js +1 -0
  259. package/dist/assets/volter-sdk-kit-components-WorktreeSwitcher-Cm6EQlo9.js +1 -0
  260. package/dist/assets/volter-sdk-kit-components-account-documents-C1w8-N3m.js +1 -0
  261. package/dist/assets/volter-sdk-kit-components-asset-documents-o5P9hniy.js +1 -0
  262. package/dist/assets/volter-sdk-kit-components-asset-editor-persistence-DLsU0r1E.js +1 -0
  263. package/dist/assets/volter-sdk-kit-components-asset-selection-section-BYEwJfLy.js +1 -0
  264. package/dist/assets/volter-sdk-kit-components-asset-thumbnails-C-LgDd2_.js +1 -0
  265. package/dist/assets/volter-sdk-kit-components-asset-viewers-AudioViewer-BR48_QX5.js +1 -0
  266. package/dist/assets/volter-sdk-kit-components-asset-viewers-GenericJsonViewer-C9IP9LWM.js +1 -0
  267. package/dist/assets/volter-sdk-kit-components-asset-viewers-ImageViewer-Dffdgv60.js +1 -0
  268. package/dist/assets/volter-sdk-kit-components-asset-viewers-JsonAssetDocument-ChmgYQAP.js +1 -0
  269. package/dist/assets/volter-sdk-kit-components-asset-viewers-OnlineAssetDetail-Bdpm--Jx.js +1 -0
  270. package/dist/assets/volter-sdk-kit-components-asset-viewers-SourceAssetViewer-DdJX9xCd.js +1 -0
  271. package/dist/assets/volter-sdk-kit-components-asset-viewers-SpritesheetSpriteView-DYXAuujE.js +1 -0
  272. package/dist/assets/volter-sdk-kit-components-asset-viewers-VideoViewer-6xqrjETd.js +1 -0
  273. package/dist/assets/volter-sdk-kit-components-asset-viewers-shader-source-cHZlxpZt.js +1 -0
  274. package/dist/assets/volter-sdk-kit-components-board-guides-7WFdaGRg.js +1 -0
  275. package/dist/assets/volter-sdk-kit-components-canvas-scene-hotkeys-CnxAX0SN.js +1 -0
  276. package/dist/assets/volter-sdk-kit-components-canvas-temporary-pivot-CtpM87Bn.js +1 -0
  277. package/dist/assets/volter-sdk-kit-components-core-utilities-CHVzLxwg.js +1 -0
  278. package/dist/assets/volter-sdk-kit-components-inspector-preview-section-B8TaQyFK.js +1 -0
  279. package/dist/assets/volter-sdk-kit-components-inspector-revert-label-BNzoXVNS.js +1 -0
  280. package/dist/assets/volter-sdk-kit-components-inspector-selection-BpPShgrU.js +1 -0
  281. package/dist/assets/volter-sdk-kit-components-inspector-stories-gating-DiH66VA6.js +1 -0
  282. package/dist/assets/volter-sdk-kit-components-inspector-transform-CmjteW7M.js +1 -0
  283. package/dist/assets/volter-sdk-kit-components-inspector-transform-subject-DrIk_jIn.js +1 -0
  284. package/dist/assets/volter-sdk-kit-components-kind-documents-BK3KZxJA.js +1 -0
  285. package/dist/assets/volter-sdk-kit-components-primitives-DraftColorInput-1nPD0Wmj.js +1 -0
  286. package/dist/assets/volter-sdk-kit-components-project-tool-documents-DJ4Ucdcc.js +1 -0
  287. package/dist/assets/volter-sdk-kit-components-scene-documents-D0S3Ip8u.js +1 -0
  288. package/dist/assets/volter-sdk-kit-components-status-contributions-CnD50KDE.js +1 -0
  289. package/dist/assets/volter-sdk-kit-components-tool-documents-CFPlSwI0.js +1 -0
  290. package/dist/assets/volter-sdk-kit-components-tool-schema-form-DDm00y0g.js +1 -0
  291. package/dist/assets/volter-sdk-kit-components-use-after-paint-DvCjTL4J.js +1 -0
  292. package/dist/assets/volter-sdk-kit-components-use-project-image-assets-C2yOGb4T.js +1 -0
  293. package/dist/assets/volter-sdk-kit-components-workspace-history-cK1qO4Ko.js +1 -0
  294. package/dist/assets/volter-sdk-kit-components-world-documents-Ca0Kvd6F.js +1 -0
  295. package/dist/assets/volter-sdk-kit-components-world-overlay-gestures-D9tS4EXa.js +1 -0
  296. package/dist/assets/volter-sdk-kit-composite-screenshot-DrxN3o4m.js +1 -0
  297. package/dist/assets/volter-sdk-kit-content-entry-source-registry-WrKmcDj4.js +1 -0
  298. package/dist/assets/volter-sdk-kit-contribution-surfaces-DkZ0OqGh.js +1 -0
  299. package/dist/assets/volter-sdk-kit-coverage-canvas-reveal-C8pETRas.js +1 -0
  300. package/dist/assets/volter-sdk-kit-coverage-design-time-surfaces-BEEt0Akm.js +1 -0
  301. package/dist/assets/volter-sdk-kit-coverage-ontology-invariants-Bxd6b-Me.js +1 -0
  302. package/dist/assets/volter-sdk-kit-coverage-session-vitals-C_KOh0vV.js +1 -0
  303. package/dist/assets/volter-sdk-kit-creation-site-registry-xToT1mgQ.js +1 -0
  304. package/dist/assets/volter-sdk-kit-delegate-harness-registry-BQ2Z3x4u.js +1 -0
  305. package/dist/assets/volter-sdk-kit-document-areas-BoFteXyg.js +1 -0
  306. package/dist/assets/volter-sdk-kit-document-context-registry-DCltdAwX.js +1 -0
  307. package/dist/assets/volter-sdk-kit-document-open-registry-nUKbpgXi.js +1 -0
  308. package/dist/assets/volter-sdk-kit-document-play-extension-LhA9YSwP.js +1 -0
  309. package/dist/assets/volter-sdk-kit-document-preview-source-BjKu56A5.js +1 -0
  310. package/dist/assets/volter-sdk-kit-document-renderer-session-CmO67Fns.js +1 -0
  311. package/dist/assets/volter-sdk-kit-document-stage-sessions-DhjElggV.js +1 -0
  312. package/dist/assets/volter-sdk-kit-document-viewports-JkYxkBPk.js +1 -0
  313. package/dist/assets/volter-sdk-kit-editor-api-CkTONSnh.js +1 -0
  314. package/dist/assets/volter-sdk-kit-editor-chrome-capture-Ryy6MFML.js +1 -0
  315. package/dist/assets/volter-sdk-kit-editor-commands-A6xFbhNt.js +1 -0
  316. package/dist/assets/volter-sdk-kit-editor-console-CfXqiRHJ.js +1 -0
  317. package/dist/assets/volter-sdk-kit-editor-current-view-Blu4WXH4.js +1 -0
  318. package/dist/assets/volter-sdk-kit-editor-document-probe-DLQ4_TGz.js +1 -0
  319. package/dist/assets/volter-sdk-kit-editor-git-client-79qLddTa.js +1 -0
  320. package/dist/assets/volter-sdk-kit-editor-hotkeys-Bf8x8pPR.js +1 -0
  321. package/dist/assets/volter-sdk-kit-editor-lease-DnDA6DTK.js +1 -0
  322. package/dist/assets/volter-sdk-kit-editor-lease-view-DnYNNuac.js +1 -0
  323. package/dist/assets/volter-sdk-kit-editor-mode-TyppF_mm.js +1 -0
  324. package/dist/assets/volter-sdk-kit-editor-notifications-DbJyIY8R.js +1 -0
  325. package/dist/assets/volter-sdk-kit-editor-presence-CDht_mUS.js +1 -0
  326. package/dist/assets/volter-sdk-kit-editor-presentation-activity-BAw4OBGu.js +1 -0
  327. package/dist/assets/volter-sdk-kit-editor-presentation-notice-vPwlLZpU.js +1 -0
  328. package/dist/assets/volter-sdk-kit-editor-runtime-BM50QyRE.js +1 -0
  329. package/dist/assets/volter-sdk-kit-editor-server-response-BMR_IEYq.js +1 -0
  330. package/dist/assets/volter-sdk-kit-editor-session-attribution-GlzM29Xi.js +1 -0
  331. package/dist/assets/volter-sdk-kit-editor-session-mode-zTS3Hh7x.js +1 -0
  332. package/dist/assets/volter-sdk-kit-editor-state-facets-iq5aCQYy.js +1 -0
  333. package/dist/assets/volter-sdk-kit-editor-view-presentation-D-Zr2xsr.js +1 -0
  334. package/dist/assets/volter-sdk-kit-environment-images-BBbuCQN0.js +1 -0
  335. package/dist/assets/volter-sdk-kit-eyedropper-session-CVQTFAKM.js +1 -0
  336. package/dist/assets/volter-sdk-kit-files-file-provider-DnQAC1u2.js +1 -0
  337. package/dist/assets/volter-sdk-kit-files-project-files-CwASwqrX.js +1 -0
  338. package/dist/assets/volter-sdk-kit-finders-index-CclbaymG.js +1 -0
  339. package/dist/assets/volter-sdk-kit-finders-scenes-from-entrypoint-selection-B17U2yvo.js +1 -0
  340. package/dist/assets/volter-sdk-kit-frame-frame-parts-VVzfs78H.js +1 -0
  341. package/dist/assets/volter-sdk-kit-framed-document-capture-Cha1yjuL.js +1 -0
  342. package/dist/assets/volter-sdk-kit-game-surface-defaults-CsAR7C_G.js +1 -0
  343. package/dist/assets/volter-sdk-kit-gameplay-export-state-D2gCoh9n.js +1 -0
  344. package/dist/assets/volter-sdk-kit-gameplay-replay-DkkfYYwX.js +1 -0
  345. package/dist/assets/volter-sdk-kit-gameplay-session-time-Dht9eZ_4.js +1 -0
  346. package/dist/assets/volter-sdk-kit-gameplay-sessions-CCOOL4Eg.js +1 -0
  347. package/dist/assets/volter-sdk-kit-hierarchy-component-marks-CTw2KFgo.js +1 -0
  348. package/dist/assets/volter-sdk-kit-hierarchy-internals-D8gRo1WQ.js +1 -0
  349. package/dist/assets/volter-sdk-kit-hierarchy-kind-icon-D0OctdvL.js +1 -0
  350. package/dist/assets/volter-sdk-kit-hierarchy-menu-registry-DwA4Z2A9.js +1 -0
  351. package/dist/assets/volter-sdk-kit-hierarchy-node-rows-BGNi2kxs.js +1 -0
  352. package/dist/assets/volter-sdk-kit-hierarchy-panel-view-Bb1EP0Bk.js +1 -0
  353. package/dist/assets/volter-sdk-kit-hierarchy-projection-BtCzTzOY.js +1 -0
  354. package/dist/assets/volter-sdk-kit-hierarchy-row-media-CnHgcQM8.js +1 -0
  355. package/dist/assets/volter-sdk-kit-hierarchy-row-model-l7Qbe9Dk.js +1 -0
  356. package/dist/assets/volter-sdk-kit-hierarchy-rows-C20aO3up.js +1 -0
  357. package/dist/assets/volter-sdk-kit-hierarchy-walk-CE_FQf5c.js +1 -0
  358. package/dist/assets/volter-sdk-kit-history-editor-session-CS5IwxZx.js +1 -0
  359. package/dist/assets/volter-sdk-kit-history-history-commands-VU0Tf0lj.js +1 -0
  360. package/dist/assets/volter-sdk-kit-history-history-delegate-ZQwI-0MR.js +1 -0
  361. package/dist/assets/volter-sdk-kit-history-history-limit-notices-BrhHiRSY.js +1 -0
  362. package/dist/assets/volter-sdk-kit-history-history-service-BZ4AidfS.js +1 -0
  363. package/dist/assets/volter-sdk-kit-history-persistence-coordinator-Bpi3os_u.js +1 -0
  364. package/dist/assets/volter-sdk-kit-history-project-file-history-hDI70zmi.js +1 -0
  365. package/dist/assets/volter-sdk-kit-history-project-root-history-backends-BAfTGdrX.js +1 -0
  366. package/dist/assets/volter-sdk-kit-history-resource-registry-CGjyTLt-.js +1 -0
  367. package/dist/assets/volter-sdk-kit-history-snapshot-store-BgZ7Byks.js +1 -0
  368. package/dist/assets/volter-sdk-kit-history-source-history-backend-B25Z4lQz.js +1 -0
  369. package/dist/assets/volter-sdk-kit-hmr-registration-group-CiEUgAw2.js +1 -0
  370. package/dist/assets/volter-sdk-kit-hmr-stable-react-context-AymxVJvR.js +1 -0
  371. package/dist/assets/volter-sdk-kit-hotkeys-DlADec38.js +1 -0
  372. package/dist/assets/volter-sdk-kit-inference-diagnostics-GA9FnyOh.js +1 -0
  373. package/dist/assets/volter-sdk-kit-initial-project-zsKWa81T.js +1 -0
  374. package/dist/assets/volter-sdk-kit-inspection-active-subject-qZ5hTw90.js +1 -0
  375. package/dist/assets/volter-sdk-kit-inspection-active-surface-PhQ5uNsI.js +1 -0
  376. package/dist/assets/volter-sdk-kit-inspection-compose-subject-BgSCqJ-r.js +1 -0
  377. package/dist/assets/volter-sdk-kit-inspection-display-D8Nr6_ES.js +1 -0
  378. package/dist/assets/volter-sdk-kit-inspection-document-subject-DGznaZh-.js +1 -0
  379. package/dist/assets/volter-sdk-kit-inspection-game-subject-N0AxqX7G.js +1 -0
  380. package/dist/assets/volter-sdk-kit-inspection-model-hQetv0U9.js +1 -0
  381. package/dist/assets/volter-sdk-kit-inspection-node-media-fGRDtgJj.js +1 -0
  382. package/dist/assets/volter-sdk-kit-inspection-null-subject-ClNE9x2e.js +1 -0
  383. package/dist/assets/volter-sdk-kit-inspection-serialize-CpExrPTA.js +1 -0
  384. package/dist/assets/volter-sdk-kit-inspection-use-active-inspection-CRPvV320.js +1 -0
  385. package/dist/assets/volter-sdk-kit-inspector-presentation-BFfpxT4_.js +1 -0
  386. package/dist/assets/volter-sdk-kit-inspector-property-grouping-o7vgYhKg.js +1 -0
  387. package/dist/assets/volter-sdk-kit-inspector-section-registry-R5_0mSBl.js +1 -0
  388. package/dist/assets/volter-sdk-kit-instance-source-actions-B0lePqHO.js +1 -0
  389. package/dist/assets/volter-sdk-kit-js-heap-BpRVEyaI.js +1 -0
  390. package/dist/assets/volter-sdk-kit-key-actions-BEL1ou9N.js +1 -0
  391. package/dist/assets/volter-sdk-kit-keymap-presets-Qdpmq1MJ.js +1 -0
  392. package/dist/assets/volter-sdk-kit-layout-policy-CoLfPtzo.js +1 -0
  393. package/dist/assets/volter-sdk-kit-light-explorer-model-lqJF5X7X.js +1 -0
  394. package/dist/assets/volter-sdk-kit-live-canvas-frame-DdlhSZOw.js +1 -0
  395. package/dist/assets/volter-sdk-kit-live-document-MPCQkIxv.js +1 -0
  396. package/dist/assets/volter-sdk-kit-live-gesture-lock-BGiQikS-.js +1 -0
  397. package/dist/assets/volter-sdk-kit-live-seam-evidence-HsOKXOM-.js +1 -0
  398. package/dist/assets/volter-sdk-kit-live-session-registry-DPshp-zS.js +1 -0
  399. package/dist/assets/volter-sdk-kit-live-transition-SzISwcSc.js +1 -0
  400. package/dist/assets/volter-sdk-kit-manifest-project-BaQmD3cM.js +1 -0
  401. package/dist/assets/volter-sdk-kit-module-fetch-diagnosis-DVmHXvNS.js +1 -0
  402. package/dist/assets/volter-sdk-kit-mount-failure-report-Dk4LNPuk.js +1 -0
  403. package/dist/assets/volter-sdk-kit-native-selection-style-Bz3kzLsL.js +1 -0
  404. package/dist/assets/volter-sdk-kit-object3d-document-write-policy-yZfQc3Ch.js +1 -0
  405. package/dist/assets/volter-sdk-kit-packaged-runtime-Bofk4pL5.js +1 -0
  406. package/dist/assets/volter-sdk-kit-performance-profiler-BCQbvJC2.js +1 -0
  407. package/dist/assets/volter-sdk-kit-performance-sources-DmFnsOyy.js +1 -0
  408. package/dist/assets/volter-sdk-kit-photograph-notice-Ba8RTcKf.js +1 -0
  409. package/dist/assets/volter-sdk-kit-play-boot-phase-BtZNGfEm.js +1 -0
  410. package/dist/assets/volter-sdk-kit-play-camera-flight-DyDq7TW9.js +1 -0
  411. package/dist/assets/volter-sdk-kit-presentation-surface-CcUgETps.js +1 -0
  412. package/dist/assets/volter-sdk-kit-product-command-CTGtMf--.js +1 -0
  413. package/dist/assets/volter-sdk-kit-project-adapter-CncSm07i.js +1 -0
  414. package/dist/assets/volter-sdk-kit-project-asset-refresh-ff5GvzjI.js +1 -0
  415. package/dist/assets/volter-sdk-kit-project-asset-roots-2I55e0Tl.js +1 -0
  416. package/dist/assets/volter-sdk-kit-project-local-state-CoOxczZf.js +1 -0
  417. package/dist/assets/volter-sdk-kit-project-manager-CXwXszeS.js +1 -0
  418. package/dist/assets/volter-sdk-kit-project-module-changes-Df7bwGJA.js +1 -0
  419. package/dist/assets/volter-sdk-kit-project-module-split-CoOXmcMq.js +1 -0
  420. package/dist/assets/volter-sdk-kit-project-provenance-CsWz3dFr.js +1 -0
  421. package/dist/assets/volter-sdk-kit-project-ready-CEngokqw.js +1 -0
  422. package/dist/assets/volter-sdk-kit-project-shape-Bnk7IlEF.js +1 -0
  423. package/dist/assets/volter-sdk-kit-project-tools-CIrlsLd2.js +1 -0
  424. package/dist/assets/volter-sdk-kit-readiness-8iK1xUw-.js +1 -0
  425. package/dist/assets/volter-sdk-kit-renderer-resource-counts-BRlynwAB.js +1 -0
  426. package/dist/assets/volter-sdk-kit-reported-play-state-CdpNf7iS.js +1 -0
  427. package/dist/assets/volter-sdk-kit-resolve-contributed-command-CAPTMDEe.js +1 -0
  428. package/dist/assets/volter-sdk-kit-resolve-relative-specifier-CQavCIRh.js +1 -0
  429. package/dist/assets/volter-sdk-kit-retained-document-states-CkXz8CLe.js +1 -0
  430. package/dist/assets/volter-sdk-kit-scene-document-plan-C29w0uq_.js +1 -0
  431. package/dist/assets/volter-sdk-kit-scene-live-open-fodeYzCv.js +1 -0
  432. package/dist/assets/volter-sdk-kit-scoped-game-css-C2WRruBw.js +1 -0
  433. package/dist/assets/volter-sdk-kit-served-url-C17qOcC3.js +1 -0
  434. package/dist/assets/volter-sdk-kit-session-close-BKSX8DPi.js +1 -0
  435. package/dist/assets/volter-sdk-kit-session-tombstone-CQ1abA0T.js +1 -0
  436. package/dist/assets/volter-sdk-kit-settings-settings-provider-Drp8Ja5S.js +1 -0
  437. package/dist/assets/volter-sdk-kit-settings-store-DVv602rH.js +1 -0
  438. package/dist/assets/volter-sdk-kit-shell-store-Dwkc4LeK.js +1 -0
  439. package/dist/assets/volter-sdk-kit-shell-store-door-D6VAgShZ.js +1 -0
  440. package/dist/assets/volter-sdk-kit-source-conflict-BsgmQDuR.js +1 -0
  441. package/dist/assets/volter-sdk-kit-stage-context-CF3ATuJX.js +1 -0
  442. package/dist/assets/volter-sdk-kit-stage-invalidation-D1EKNjPS.js +1 -0
  443. package/dist/assets/volter-sdk-kit-stage-store-registry-DMqC8KJA.js +1 -0
  444. package/dist/assets/volter-sdk-kit-startup-failure-CJjXtSxT.js +1 -0
  445. package/dist/assets/volter-sdk-kit-state-report-deferral-BZ1Gll2x.js +1 -0
  446. package/dist/assets/volter-sdk-kit-storage-host-files-storage-BeBBCrF4.js +1 -0
  447. package/dist/assets/volter-sdk-kit-storage-http-storage-DMwE4aCU.js +1 -0
  448. package/dist/assets/volter-sdk-kit-storage-index-85BJsCgw.js +1 -0
  449. package/dist/assets/volter-sdk-kit-storage-mem-storage-Cp5EThww.js +1 -0
  450. package/dist/assets/volter-sdk-kit-storage-path-lock-BEHmTQkG.js +1 -0
  451. package/dist/assets/volter-sdk-kit-storage-paths-GkBBUtDn.js +1 -0
  452. package/dist/assets/volter-sdk-kit-stories-StoryPreviewMount-D07t88Iu.js +1 -0
  453. package/dist/assets/volter-sdk-kit-stories-compose-project-stories-BAw1haKj.js +1 -0
  454. package/dist/assets/volter-sdk-kit-stories-prefabs-finder-EMDMwLXg.js +1 -0
  455. package/dist/assets/volter-sdk-kit-stories-prefabs-from-stories-CEQekPVJ.js +1 -0
  456. package/dist/assets/volter-sdk-kit-stories-project-story-regions-m9-rTkrt.js +1 -0
  457. package/dist/assets/volter-sdk-kit-stories-scope-PLybjgWr.js +1 -0
  458. package/dist/assets/volter-sdk-kit-stories-story-capture-B3uLpufo.js +1 -0
  459. package/dist/assets/volter-sdk-kit-stories-story-declared-medium-D92bJmIo.js +1 -0
  460. package/dist/assets/volter-sdk-kit-stories-story-discovery-DtaxRT_i.js +1 -0
  461. package/dist/assets/volter-sdk-kit-stories-story-dom-runtime-BjR7PW3K.js +1 -0
  462. package/dist/assets/volter-sdk-kit-stories-story-grouping-BibwARwc.js +1 -0
  463. package/dist/assets/volter-sdk-kit-stories-story-presentation-DaweRLV-.js +1 -0
  464. package/dist/assets/volter-sdk-kit-stories-story-registry-BuTw7T27.js +1 -0
  465. package/dist/assets/volter-sdk-kit-story-document-openers-COzuCirA.js +1 -0
  466. package/dist/assets/volter-sdk-kit-story-thumbnails-DsLqdnDq.js +1 -0
  467. package/dist/assets/volter-sdk-kit-surface-keyboard-RiClmb_a.js +1 -0
  468. package/dist/assets/volter-sdk-kit-surface-state-DjeLKyCd.js +1 -0
  469. package/dist/assets/volter-sdk-kit-system-seam-evidence-omzWuzNM.js +1 -0
  470. package/dist/assets/volter-sdk-kit-tab-census-C8mQ0l9z.js +1 -0
  471. package/dist/assets/volter-sdk-kit-tab-lifecycle-client-28DSypwI.js +1 -0
  472. package/dist/assets/volter-sdk-kit-theme-library-DCToyXQ0.js +1 -0
  473. package/dist/assets/volter-sdk-kit-theme-preference-Dc-_5b1n.js +1 -0
  474. package/dist/assets/volter-sdk-kit-three-viewport-presentation-1LxA9rSc.js +1 -0
  475. package/dist/assets/volter-sdk-kit-tool-contribution-play--JvesPkN.js +1 -0
  476. package/dist/assets/volter-sdk-kit-tool-loader-LTQw0aL4.js +1 -0
  477. package/dist/assets/volter-sdk-kit-transform-mode-request-BY9JxShG.js +1 -0
  478. package/dist/assets/volter-sdk-kit-transient-hint-CM0bpYj2.js +1 -0
  479. package/dist/assets/volter-sdk-kit-transport-strip-5bUygAkv.js +1 -0
  480. package/dist/assets/volter-sdk-kit-ui-source-file-region-resolver-CQMWmqhP.js +1 -0
  481. package/dist/assets/volter-sdk-kit-ui-source-inspect-CfayTFdC.js +1 -0
  482. package/dist/assets/volter-sdk-kit-ui-source-source-write-backend-DzQseyn4.js +1 -0
  483. package/dist/assets/volter-sdk-kit-ui-source-tier-source-write-backend-3NgYZbUE.js +1 -0
  484. package/dist/assets/volter-sdk-kit-user-local-state-BZf1C-cO.js +1 -0
  485. package/dist/assets/volter-sdk-kit-viewport-activation-timings-C-7ETz2q.js +1 -0
  486. package/dist/assets/volter-sdk-kit-viewport-editor-controls-f4cwlOWa.js +1 -0
  487. package/dist/assets/volter-sdk-kit-viewport-presentation-Il1TLCMT.js +1 -0
  488. package/dist/assets/volter-sdk-kit-viewport-surface-status-CXyJJGil.js +1 -0
  489. package/dist/assets/volter-sdk-kit-wait-until-D3i87ehY.js +1 -0
  490. package/dist/assets/volter-sdk-kit-worker-call-metrics-DAK8SW-7.js +1 -0
  491. package/dist/assets/volter-sdk-kit-workspace-areas-DxhakPE3.js +1 -0
  492. package/dist/assets/volter-sdk-kit-workspace-aux-commands-j3FyV7Rh.js +1 -0
  493. package/dist/assets/volter-sdk-kit-workspace-available-documents-DS5ZkDU4.js +1 -0
  494. package/dist/assets/volter-sdk-kit-workspace-core-utilities-BbuDHrHq.js +1 -0
  495. package/dist/assets/volter-sdk-kit-workspace-document-ids-Bm3qMqdx.js +1 -0
  496. package/dist/assets/volter-sdk-kit-workspace-document-registry-CfkdJLBO.js +1 -0
  497. package/dist/assets/volter-sdk-kit-workspace-document-restore-BqBMoUhE.js +1 -0
  498. package/dist/assets/volter-sdk-kit-workspace-host-commands-BC-mYI2s.js +1 -0
  499. package/dist/assets/volter-sdk-kit-workspace-persistence-gate-CN-Z9G7V.js +1 -0
  500. package/dist/assets/volter-sdk-kit-workspace-play-utilities-C5iNgpyt.js +1 -0
  501. package/dist/assets/volter-sdk-kit-workspace-presets-B6MKS0jx.js +1 -0
  502. package/dist/assets/volter-sdk-kit-workspace-regions-DZevxGmg.js +1 -0
  503. package/dist/assets/volter-sdk-kit-workspace-static-panels-CUVjETSY.js +1 -0
  504. package/dist/assets/volter-sdk-kit-workspace-status-registry-Cim_nGuV.js +1 -0
  505. package/dist/assets/volter-sdk-kit-workspace-storage-B9Vf07gg.js +1 -0
  506. package/dist/assets/volter-sdk-kit-workspace-style-yCExFcBd.js +1 -0
  507. package/dist/assets/volter-sdk-kit-workspace-utility-commands-C3a_TCq8.js +1 -0
  508. package/dist/assets/volter-sdk-kit-workspace-utility-registry-CmYswBtf.js +1 -0
  509. package/dist/assets/volter-sdk-kit-world-adoption-1Q7uBdLI.js +1 -0
  510. package/dist/assets/volter-sdk-kit-world-canvas-viewport-state-DaZzYmQU.js +1 -0
  511. package/dist/assets/volter-sdk-kit-world-document-routing-d9K0XNhN.js +1 -0
  512. package/dist/assets/volter-sdk-kit-world-pan-state-Bui5iuls.js +1 -0
  513. package/dist/assets/volter-sdk-kit-write-pipe-BMOSwffA.js +1 -0
  514. package/dist/assets/volter-sdk-layout-arrangements-DMEnPpvu.js +1 -0
  515. package/dist/assets/volter-sdk-layouts-DKIqaCd4.js +1 -0
  516. package/dist/assets/volter-sdk-selection-DM8JuNxQ.js +1 -0
  517. package/dist/assets/volter-sdk-session-command-table-G119qBvl.js +1 -0
  518. package/dist/assets/volter-sdk-session-editor-brand-DCHKPDxT.js +1 -0
  519. package/dist/assets/volter-sdk-session-editor-compatibility-B165I_B1.js +1 -0
  520. package/dist/assets/volter-sdk-session-editor-control-protocol-DwV-576_.js +1 -0
  521. package/dist/assets/volter-sdk-session-entrypoint-selection-readers-D88QrS-p.js +1 -0
  522. package/dist/assets/volter-sdk-session-game-css-scope-UkCRVi6L.js +1 -0
  523. package/dist/assets/volter-sdk-session-project-module-url-B49W1ltn.js +1 -0
  524. package/dist/assets/volter-sdk-session-relative-path-guard-Bk6lCH4Z.js +1 -0
  525. package/dist/assets/volter-sdk-session-tool-contribution-convention-QXzdw52f.js +1 -0
  526. package/dist/assets/volter-sdk-types-yKC1STwH.js +1 -0
  527. package/dist/assets/volter-sdk-views-CLPSu14j.js +1 -0
  528. package/dist/assets/volter-sdk-widgets-design-system-842xdooz.js +1 -0
  529. package/dist/assets/volter-sdk-widgets-editor-appearance-CoihkoDV.js +1 -0
  530. package/dist/assets/volter-sdk-widgets-editor-material-B4PbVOyD.js +1 -0
  531. package/dist/assets/volter-sdk-widgets-icon-set-registry-DzBkVTxs.js +1 -0
  532. package/dist/assets/volter-sdk-widgets-index-DRlEnpTD.js +1 -0
  533. package/dist/assets/volter-sdk-widgets-inspector-widgets-AlignmentGrid-DKC7RjtF.js +1 -0
  534. package/dist/assets/volter-sdk-widgets-inspector-widgets-AssetSlotPicker-CGyznIv-.js +1 -0
  535. package/dist/assets/volter-sdk-widgets-inspector-widgets-BorderEditor-C74QsfSH.js +1 -0
  536. package/dist/assets/volter-sdk-widgets-inspector-widgets-ColorPicker-Czwcm_Fi.js +1 -0
  537. package/dist/assets/volter-sdk-widgets-inspector-widgets-CurveEditor-Tij7lXpB.js +1 -0
  538. package/dist/assets/volter-sdk-widgets-inspector-widgets-FilterEditor-CY45gPqT.js +1 -0
  539. package/dist/assets/volter-sdk-widgets-inspector-widgets-FontPicker-BnGlrZAL.js +1 -0
  540. package/dist/assets/volter-sdk-widgets-inspector-widgets-GradientEditor-uN_3-0Hz.js +1 -0
  541. package/dist/assets/volter-sdk-widgets-inspector-widgets-ScrubbableInput-kk1HfmXA.js +1 -0
  542. package/dist/assets/volter-sdk-widgets-inspector-widgets-ShadowEditor-OuqeQbiU.js +1 -0
  543. package/dist/assets/volter-sdk-widgets-inspector-widgets-color-utils-BArl9zsg.js +1 -0
  544. package/dist/assets/volter-sdk-widgets-inspector-widgets-curve-utils-C9xyDCr6.js +1 -0
  545. package/dist/assets/volter-sdk-widgets-inspector-widgets-index-DCEai530.js +1 -0
  546. package/dist/assets/volter-sdk-widgets-inspector-widgets-shared-CJSGOgSm.js +1 -0
  547. package/dist/assets/volter-sdk-widgets-interactive-edit-scope-6PmN1jnt.js +1 -0
  548. package/dist/assets/volter-sdk-widgets-patterns-Dialog-CnuLoAXX.js +1 -0
  549. package/dist/assets/volter-sdk-widgets-patterns-Fields-wFJZE-ci.js +1 -0
  550. package/dist/assets/volter-sdk-widgets-patterns-List-DNL6_6To.js +1 -0
  551. package/dist/assets/volter-sdk-widgets-patterns-StateSurface-Ih0mzWk7.js +1 -0
  552. package/dist/assets/volter-sdk-widgets-patterns-Surfaces-07TRSs2c.js +1 -0
  553. package/dist/assets/volter-sdk-widgets-patterns-Tabs-BKYsTo--.js +1 -0
  554. package/dist/assets/volter-sdk-widgets-patterns-Toolbar-BxOrCYIs.js +1 -0
  555. package/dist/assets/volter-sdk-widgets-patterns-Tree-BfYgX2pa.js +1 -0
  556. package/dist/assets/volter-sdk-widgets-primitives-AnchoredMenu-BgHf-cYK.js +1 -0
  557. package/dist/assets/volter-sdk-widgets-primitives-Button-BUrjXrb8.js +1 -0
  558. package/dist/assets/volter-sdk-widgets-primitives-ColorInput-BiRkft3M.js +1 -0
  559. package/dist/assets/volter-sdk-widgets-primitives-DraftTextInput-B1KK1N_R.js +1 -0
  560. package/dist/assets/volter-sdk-widgets-primitives-EditorIcon-CP8wT6d7.js +1 -0
  561. package/dist/assets/volter-sdk-widgets-primitives-FormControls-ScHBA1o4.js +1 -0
  562. package/dist/assets/volter-sdk-widgets-primitives-HoverPreview-CSS-glOy.js +1 -0
  563. package/dist/assets/volter-sdk-widgets-primitives-JsonInput-C0TAVCVh.js +1 -0
  564. package/dist/assets/volter-sdk-widgets-primitives-Layout-CfLBd5Or.js +1 -0
  565. package/dist/assets/volter-sdk-widgets-primitives-Menu-C-Wd4QZF.js +1 -0
  566. package/dist/assets/volter-sdk-widgets-primitives-NumberInput-sPbmhEcp.js +1 -0
  567. package/dist/assets/volter-sdk-widgets-primitives-Panel-CssQZiuw.js +1 -0
  568. package/dist/assets/volter-sdk-widgets-primitives-SectionHeader-CCbuJZbe.js +1 -0
  569. package/dist/assets/volter-sdk-widgets-primitives-Text-CnnND9sI.js +1 -0
  570. package/dist/assets/volter-sdk-widgets-primitives-ThemeRootPortal-DmN1LfqW.js +1 -0
  571. package/dist/assets/volter-sdk-widgets-primitives-Tooltip-D9uLAtac.js +1 -0
  572. package/dist/assets/volter-sdk-widgets-primitives-Vec3Input-CbkOGVMc.js +1 -0
  573. package/dist/assets/volter-sdk-widgets-primitives-banner-tones-D4w8jWDq.js +1 -0
  574. package/dist/assets/volter-sdk-widgets-primitives-clamp-to-viewport-DUn6HqOF.js +1 -0
  575. package/dist/assets/volter-sdk-widgets-primitives-editor-icons-Dw62jIE_.js +1 -0
  576. package/dist/assets/volter-sdk-widgets-primitives-panel-header-styles-BsPj50mE.js +1 -0
  577. package/dist/assets/volter-sdk-widgets-theme-CWND6gaS.js +1 -0
  578. package/dist/assets/volter-sdk-widgets-z-index-CAROhwsS.js +1 -0
  579. package/dist/assets/volter-shared-fontawesome-CU2fjApc.js +1 -0
  580. package/dist/assets/volter-shared-jsx-dev-runtime-CSjBZz-G.js +1 -0
  581. package/dist/assets/volter-shared-jsx-runtime-BfW1mwnX.js +1 -0
  582. package/dist/assets/volter-shared-react-B7X6VYnC.js +1 -0
  583. package/dist/assets/volter-shared-react-dom-DjKMQVYW.js +1 -0
  584. package/dist/assets/volter-shared-react-dom-client-76WJXUTi.js +1 -0
  585. package/dist/assets/volter-shared-three-wYzUWvH9.js +1 -0
  586. package/dist/assets/worker-D1j8wqVo.js +4 -0
  587. package/dist/volter-shared-react.json +10 -0
  588. package/dist/volter-shared-sdk.json +462 -0
  589. package/dist/volter-shared-three.json +3 -0
  590. package/dist-node/cli.js +21181 -0
  591. package/dist-node/create.js +14272 -0
  592. package/package.json +84 -4
  593. package/presets.mjs +2 -0
  594. package/src/contributions.d.ts +4 -0
  595. package/src/index.ts +10 -0
  596. package/starter/AGENTS.md +400 -0
  597. package/starter/CLAUDE.md +1 -0
  598. package/starter/cube.blend +0 -0
  599. package/starter/cube.py +82 -0
  600. package/starter/package.json +9 -0
  601. package/starter/race-state.ts +22 -0
  602. package/starter/track.blend +0 -0
  603. package/starter/track.play.ts +343 -0
  604. package/starter/track.py +324 -0
  605. package/starter/ui/game.stories.tsx +12 -0
  606. package/starter/ui/game.tsx +10 -0
  607. package/starter/ui/race-hud.tsx +29 -0
@@ -0,0 +1 @@
1
+ import{b5 as B,b6 as I,aM as R,V as u,ab as N,aK as x,aO as L,aN as g,aQ as k}from"./three.module-dk_BdrjN.js";class A 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 i=parseFloat(e[2]);isNaN(i)&&console.error("THREE.BVHLoader: Failed to read frame time.");for(let r=0;r<o;r++)e=p(t).split(/[\s]+/),d(e,r*i,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,i=new u(1,0,0),r=new u(0,1,0),E=new u(0,0,1);for(let a=0;a<n.channels.length;a++)switch(n.channels[a]){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(i,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 a=0;a<n.children.length;a++)d(t,s,n.children[a])}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 i=new u(parseFloat(o[1]),parseFloat(o[2]),parseFloat(o[3]));if((isNaN(i.x)||isNaN(i.y)||isNaN(i.z))&&console.error("THREE.BVHLoader: Invalid values of OFFSET."),e.offset=i,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=[],i=[],r=[];for(let E=0;E<e.frames.length;E++){const a=e.frames[E];o.push(a.time),i.push(a.position.x+e.offset.x),i.push(a.position.y+e.offset.y),i.push(a.position.z+e.offset.z),r.push(a.rotation.x),r.push(a.rotation.y),r.push(a.rotation.z),r.push(a.rotation.w)}m.animateBonePositions&&s.push(new L(e.name+".position",o,i)),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{A as BVHLoader};
@@ -0,0 +1,3 @@
1
+ import{v as kn,aG as wn,b5 as it,ba as Nn,b6 as An,V as $,M as X,a7 as at,i as Tn,bc as En,f as rt,aa as pe,aQ as ot,u as _n,cI as ct,J as Ee,S as ee,m as xn,av as Cn,a5 as vn,l as lt,O as Ln,ae as In,ah as Rn,s as Mn,ad as Sn,a3 as dt,ab as On,aO as ut,aN as Gn,B as jn,o as ne,aK as qn,au as ft,aL as Pn,n as Hn,bj as Un,at as Bn,aM as zn,am as _e,C as ht}from"./three.module-dk_BdrjN.js";class pt extends kn{constructor(D){super(D)}parse(D){function se(h){switch(h.image_type){case me:case z:if(h.colormap_length>256||h.colormap_size!==24||h.colormap_type!==1)throw new Error("THREE.TGALoader: Invalid type colormap data for indexed type.");break;case B:case V:case ue:case be:if(h.colormap_type)throw new Error("THREE.TGALoader: Invalid type colormap data for colormap type.");break;case Ce:throw new Error("THREE.TGALoader: No data.");default:throw new Error("THREE.TGALoader: Invalid type "+h.image_type)}if(h.width<=0||h.height<=0)throw new Error("THREE.TGALoader: Invalid image size.");if(h.pixel_size!==8&&h.pixel_size!==16&&h.pixel_size!==24&&h.pixel_size!==32)throw new Error("THREE.TGALoader: Invalid pixel size "+h.pixel_size)}function U(h,q,R,C,P){let _,v;const A=R.pixel_size>>3,N=R.width*R.height*A;if(q&&(v=P.subarray(C,C+=R.colormap_length*(R.colormap_size>>3))),h){_=new Uint8Array(N);let y,u,k,M=0;const J=new Uint8Array(A);for(;M<N;)if(y=P[C++],u=(y&127)+1,y&128){for(k=0;k<A;++k)J[k]=P[C++];for(k=0;k<u;++k)_.set(J,M+k*A);M+=A*u}else{for(u*=A,k=0;k<u;++k)_[M+k]=P[C++];M+=u}}else _=P.subarray(C,C+=q?R.width*R.height:N);return{pixel_data:_,palettes:v}}function te(h,q,R,C,P,_,v,A,N){const y=N;let u,k=0,M,J;const re=j.width;for(J=q;J!==C;J+=R)for(M=P;M!==v;M+=_,k++)u=A[k],h[(M+re*J)*4+3]=255,h[(M+re*J)*4+2]=y[u*3+0],h[(M+re*J)*4+1]=y[u*3+1],h[(M+re*J)*4+0]=y[u*3+2];return h}function L(h,q,R,C,P,_,v,A){let N,y=0,u,k;const M=j.width;for(k=q;k!==C;k+=R)for(u=P;u!==v;u+=_,y+=2)N=A[y+0]+(A[y+1]<<8),h[(u+M*k)*4+0]=(N&31744)>>7,h[(u+M*k)*4+1]=(N&992)>>2,h[(u+M*k)*4+2]=(N&31)<<3,h[(u+M*k)*4+3]=N&32768?0:255;return h}function Z(h,q,R,C,P,_,v,A){let N=0,y,u;const k=j.width;for(u=q;u!==C;u+=R)for(y=P;y!==v;y+=_,N+=3)h[(y+k*u)*4+3]=255,h[(y+k*u)*4+2]=A[N+0],h[(y+k*u)*4+1]=A[N+1],h[(y+k*u)*4+0]=A[N+2];return h}function S(h,q,R,C,P,_,v,A){let N=0,y,u;const k=j.width;for(u=q;u!==C;u+=R)for(y=P;y!==v;y+=_,N+=4)h[(y+k*u)*4+2]=A[N+0],h[(y+k*u)*4+1]=A[N+1],h[(y+k*u)*4+0]=A[N+2],h[(y+k*u)*4+3]=A[N+3];return h}function de(h,q,R,C,P,_,v,A){let N,y=0,u,k;const M=j.width;for(k=q;k!==C;k+=R)for(u=P;u!==v;u+=_,y++)N=A[y],h[(u+M*k)*4+0]=N,h[(u+M*k)*4+1]=N,h[(u+M*k)*4+2]=N,h[(u+M*k)*4+3]=255;return h}function Q(h,q,R,C,P,_,v,A){let N=0,y,u;const k=j.width;for(u=q;u!==C;u+=R)for(y=P;y!==v;y+=_,N+=2)h[(y+k*u)*4+0]=A[N+0],h[(y+k*u)*4+1]=A[N+0],h[(y+k*u)*4+2]=A[N+0],h[(y+k*u)*4+3]=A[N+1];return h}function xe(h,q,R,C,P){let _,v,A,N,y,u;switch((j.flags&ve)>>ge){default:case Ie:_=0,A=1,y=q,v=0,N=1,u=R;break;case ye:_=0,A=1,y=q,v=R-1,N=-1,u=-1;break;case ie:_=q-1,A=-1,y=-1,v=0,N=1,u=R;break;case Le:_=q-1,A=-1,y=-1,v=R-1,N=-1,u=-1;break}if(he)switch(j.pixel_size){case 8:de(h,v,N,u,_,A,y,C);break;case 16:Q(h,v,N,u,_,A,y,C);break;default:throw new Error("THREE.TGALoader: Format not supported.")}else switch(j.pixel_size){case 8:te(h,v,N,u,_,A,y,C,P);break;case 16:L(h,v,N,u,_,A,y,C);break;case 24:Z(h,v,N,u,_,A,y,C);break;case 32:S(h,v,N,u,_,A,y,C);break;default:throw new Error("THREE.TGALoader: Format not supported.")}return h}const Ce=0,me=1,B=2,V=3,z=9,ue=10,be=11,ve=48,ge=4,ye=0,Le=1,Ie=2,ie=3;if(D.length<19)throw new Error("THREE.TGALoader: Not enough data to contain header.");let I=0;const O=new Uint8Array(D),j={id_length:O[I++],colormap_type:O[I++],image_type:O[I++],colormap_index:O[I++]|O[I++]<<8,colormap_length:O[I++]|O[I++]<<8,colormap_size:O[I++],origin:[O[I++]|O[I++]<<8,O[I++]|O[I++]<<8],width:O[I++]|O[I++]<<8,height:O[I++]|O[I++]<<8,pixel_size:O[I++],flags:O[I++]};if(se(j),j.id_length+I>D.length)throw new Error("THREE.TGALoader: No data.");I+=j.id_length;let ae=!1,fe=!1,he=!1;switch(j.image_type){case z:ae=!0,fe=!0;break;case me:fe=!0;break;case ue:ae=!0;break;case B:break;case be:ae=!0,he=!0;break;case V:he=!0;break}const ke=new Uint8Array(j.width*j.height*4),we=U(ae,fe,j,I,O);return xe(ke,j.width,j.height,we.pixel_data,we.palettes),{data:ke,width:j.width,height:j.height,flipY:!0,generateMipmaps:!0,minFilter:wn}}}class Vn extends it{load(D,se,U,te){const L=this,Z=L.path===""?Nn.extractUrlBase(D):L.path,S=new An(L.manager);S.setPath(L.path),S.setRequestHeader(L.requestHeader),S.setWithCredentials(L.withCredentials),S.load(D,function(de){try{se(L.parse(de,Z))}catch(Q){te?te(Q):console.error(Q),L.manager.itemError(D)}},U,te)}parse(D,se){function U(t,e){const s=[],n=t.childNodes;for(let i=0,a=n.length;i<a;i++){const r=n[i];r.nodeName===e&&s.push(r)}return s}function te(t){if(t.length===0)return[];const e=t.trim().split(/\s+/),s=new Array(e.length);for(let n=0,i=e.length;n<i;n++)s[n]=e[n];return s}function L(t){if(t.length===0)return[];const e=t.trim().split(/\s+/),s=new Array(e.length);for(let n=0,i=e.length;n<i;n++)s[n]=parseFloat(e[n]);return s}function Z(t){if(t.length===0)return[];const e=t.trim().split(/\s+/),s=new Array(e.length);for(let n=0,i=e.length;n<i;n++)s[n]=parseInt(e[n]);return s}function S(t){return t.substring(1)}function de(){return"three_default_"+gn++}function Q(t){return Object.keys(t).length===0}function xe(t){return{unit:Ce(U(t,"unit")[0]),upAxis:me(U(t,"up_axis")[0])}}function Ce(t){return t!==void 0&&t.hasAttribute("meter")===!0?parseFloat(t.getAttribute("meter")):1}function me(t){return t!==void 0?t.textContent:"Y_UP"}function B(t,e,s,n){const i=U(t,e)[0];if(i!==void 0){const a=U(i,s);for(let r=0;r<a.length;r++)n(a[r])}}function V(t,e){for(const s in t){const n=t[s];n.build=e(t[s])}}function z(t,e){return t.build!==void 0||(t.build=e(t)),t.build}function ue(t){const e={sources:{},samplers:{},channels:{}};let s=!1;for(let n=0,i=t.childNodes.length;n<i;n++){const a=t.childNodes[n];if(a.nodeType!==1)continue;let r;switch(a.nodeName){case"source":r=a.getAttribute("id"),e.sources[r]=Re(a);break;case"sampler":r=a.getAttribute("id"),e.samplers[r]=be(a);break;case"channel":r=a.getAttribute("target"),e.channels[r]=ve(a);break;case"animation":ue(a),s=!0;break;default:console.log(a)}}s===!1&&(w.animations[t.getAttribute("id")||pe.generateUUID()]=e)}function be(t){const e={inputs:{}};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"input":const a=S(i.getAttribute("source")),r=i.getAttribute("semantic");e.inputs[r]=a;break}}return e}function ve(t){const e={};let n=t.getAttribute("target").split("/");const i=n.shift();let a=n.shift();const r=a.indexOf("(")!==-1,d=a.indexOf(".")!==-1;if(d)n=a.split("."),a=n.shift(),e.member=n.shift();else if(r){const c=a.split("(");a=c.shift();for(let l=0;l<c.length;l++)c[l]=parseInt(c[l].replace(/\)/,""));e.indices=c}return e.id=i,e.sid=a,e.arraySyntax=r,e.memberSyntax=d,e.sampler=S(t.getAttribute("source")),e}function ge(t){const e=[],s=t.channels,n=t.samplers,i=t.sources;for(const a in s)if(s.hasOwnProperty(a)){const r=s[a],d=n[r.sampler],c=d.inputs.INPUT,l=d.inputs.OUTPUT,m=i[c],o=i[l],p=Le(r,m,o);j(p,e)}return e}function ye(t){return z(w.animations[t],ge)}function Le(t,e,s){const n=w.nodes[t.id],i=ce(n.id),a=n.transforms[t.sid],r=n.matrix.clone().transpose();let d,c,l,m,o,p;const f={};switch(a){case"matrix":for(l=0,m=e.array.length;l<m;l++)if(d=e.array[l],c=l*s.stride,f[d]===void 0&&(f[d]={}),t.arraySyntax===!0){const G=s.array[c],x=t.indices[0]+4*t.indices[1];f[d][x]=G}else for(o=0,p=s.stride;o<p;o++)f[d][o]=s.array[c+o];break;case"translate":console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.',a);break;case"rotate":console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.',a);break;case"scale":console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.',a);break}const g=Ie(f,r);return{name:i.uuid,keyframes:g}}function Ie(t,e){const s=[];for(const i in t)s.push({time:parseFloat(i),value:t[i]});s.sort(n);for(let i=0;i<16;i++)ae(s,i,e.elements[i]);return s;function n(i,a){return i.time-a.time}}const ie=new $,I=new $,O=new On;function j(t,e){const s=t.keyframes,n=t.name,i=[],a=[],r=[],d=[];for(let c=0,l=s.length;c<l;c++){const m=s[c],o=m.time,p=m.value;K.fromArray(p).transpose(),K.decompose(ie,O,I),i.push(o),a.push(ie.x,ie.y,ie.z),r.push(O.x,O.y,O.z,O.w),d.push(I.x,I.y,I.z)}return a.length>0&&e.push(new ut(n+".position",i,a)),r.length>0&&e.push(new Gn(n+".quaternion",i,r)),d.length>0&&e.push(new ut(n+".scale",i,d)),e}function ae(t,e,s){let n,i=!0,a,r;for(a=0,r=t.length;a<r;a++)n=t[a],n.value[e]===void 0?n.value[e]=null:i=!1;if(i===!0)for(a=0,r=t.length;a<r;a++)n=t[a],n.value[e]=s;else fe(t,e)}function fe(t,e){let s,n;for(let i=0,a=t.length;i<a;i++){const r=t[i];if(r.value[e]===null){if(s=he(t,i,e),n=ke(t,i,e),s===null){r.value[e]=n.value[e];continue}if(n===null){r.value[e]=s.value[e];continue}we(r,s,n,e)}}}function he(t,e,s){for(;e>=0;){const n=t[e];if(n.value[s]!==null)return n;e--}return null}function ke(t,e,s){for(;e<t.length;){const n=t[e];if(n.value[s]!==null)return n;e++}return null}function we(t,e,s,n){if(s.time-e.time===0){t.value[n]=e.value[n];return}t.value[n]=(t.time-e.time)*(s.value[n]-e.value[n])/(s.time-e.time)+e.value[n]}function h(t){const e={name:t.getAttribute("id")||"default",start:parseFloat(t.getAttribute("start")||0),end:parseFloat(t.getAttribute("end")||0),animations:[]};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"instance_animation":e.animations.push(S(i.getAttribute("url")));break}}w.clips[t.getAttribute("id")]=e}function q(t){const e=[],s=t.name,n=t.end-t.start||-1,i=t.animations;for(let a=0,r=i.length;a<r;a++){const d=ye(i[a]);for(let c=0,l=d.length;c<l;c++)e.push(d[c])}return new ot(s,n,e)}function R(t){return z(w.clips[t],q)}function C(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"skin":e.id=S(i.getAttribute("source")),e.skin=P(i);break;case"morph":e.id=S(i.getAttribute("source")),console.warn("THREE.ColladaLoader: Morph target animation not supported yet.");break}}w.controllers[t.getAttribute("id")]=e}function P(t){const e={sources:{}};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"bind_shape_matrix":e.bindShapeMatrix=L(i.textContent);break;case"source":const a=i.getAttribute("id");e.sources[a]=Re(i);break;case"joints":e.joints=_(i);break;case"vertex_weights":e.vertexWeights=v(i);break}}return e}function _(t){const e={inputs:{}};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"input":const a=i.getAttribute("semantic"),r=S(i.getAttribute("source"));e.inputs[a]=r;break}}return e}function v(t){const e={inputs:{}};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"input":const a=i.getAttribute("semantic"),r=S(i.getAttribute("source")),d=parseInt(i.getAttribute("offset"));e.inputs[a]={id:r,offset:d};break;case"vcount":e.vcount=Z(i.textContent);break;case"v":e.v=Z(i.textContent);break}}return e}function A(t){const e={id:t.id},s=w.geometries[e.id];return t.skin!==void 0&&(e.skin=N(t.skin),s.sources.skinIndices=e.skin.indices,s.sources.skinWeights=e.skin.weights),e}function N(t){const s={joints:[],indices:{array:[],stride:4},weights:{array:[],stride:4}},n=t.sources,i=t.vertexWeights,a=i.vcount,r=i.v,d=i.inputs.JOINT.offset,c=i.inputs.WEIGHT.offset,l=t.sources[t.joints.inputs.JOINT],m=t.sources[t.joints.inputs.INV_BIND_MATRIX],o=n[i.inputs.WEIGHT.id].array;let p=0,f,g,b;for(f=0,b=a.length;f<b;f++){const x=a[f],T=[];for(g=0;g<x;g++){const E=r[p+d],Y=r[p+c],F=o[Y];T.push({index:E,weight:F}),p+=2}for(T.sort(G),g=0;g<4;g++){const E=T[g];E!==void 0?(s.indices.array.push(E.index),s.weights.array.push(E.weight)):(s.indices.array.push(0),s.weights.array.push(0))}}for(t.bindShapeMatrix?s.bindMatrix=new X().fromArray(t.bindShapeMatrix).transpose():s.bindMatrix=new X().identity(),f=0,b=l.array.length;f<b;f++){const x=l.array[f],T=new X().fromArray(m.array,f*m.stride).transpose();s.joints.push({name:x,boneInverse:T})}return s;function G(x,T){return T.weight-x.weight}}function y(t){return z(w.controllers[t],A)}function u(t){const e={init_from:U(t,"init_from")[0].textContent};w.images[t.getAttribute("id")]=e}function k(t){return t.build!==void 0?t.build:t.init_from}function M(t){const e=w.images[t];return e!==void 0?z(e,k):(console.warn("THREE.ColladaLoader: Couldn't find image with ID:",t),null)}function J(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"profile_COMMON":e.profile=re(i);break}}w.effects[t.getAttribute("id")]=e}function re(t){const e={surfaces:{},samplers:{}};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"newparam":bt(i,e);break;case"technique":e.technique=kt(i);break;case"extra":e.extra=qe(i);break}}return e}function bt(t,e){const s=t.getAttribute("sid");for(let n=0,i=t.childNodes.length;n<i;n++){const a=t.childNodes[n];if(a.nodeType===1)switch(a.nodeName){case"surface":e.surfaces[s]=gt(a);break;case"sampler2D":e.samplers[s]=yt(a);break}}}function gt(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"init_from":e.init_from=i.textContent;break}}return e}function yt(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"source":e.source=i.textContent;break}}return e}function kt(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"constant":case"lambert":case"blinn":case"phong":e.type=i.nodeName,e.parameters=wt(i);break;case"extra":e.extra=qe(i);break}}return e}function wt(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"emission":case"diffuse":case"specular":case"bump":case"ambient":case"shininess":case"transparency":e[i.nodeName]=Ge(i);break;case"transparent":e[i.nodeName]={opaque:i.hasAttribute("opaque")?i.getAttribute("opaque"):"A_ONE",data:Ge(i)};break}}return e}function Ge(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"color":e[i.nodeName]=L(i.textContent);break;case"float":e[i.nodeName]=parseFloat(i.textContent);break;case"texture":e[i.nodeName]={id:i.getAttribute("texture"),extra:je(i)};break}}return e}function je(t){const e={technique:{}};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"extra":Nt(i,e);break}}return e}function Nt(t,e){for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"technique":At(i,e);break}}}function At(t,e){for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"repeatU":case"repeatV":case"offsetU":case"offsetV":e.technique[i.nodeName]=parseFloat(i.textContent);break;case"wrapU":case"wrapV":i.textContent.toUpperCase()==="TRUE"?e.technique[i.nodeName]=1:i.textContent.toUpperCase()==="FALSE"?e.technique[i.nodeName]=0:e.technique[i.nodeName]=parseInt(i.textContent);break;case"bump":e[i.nodeName]=Pe(i);break}}}function qe(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"technique":e.technique=Tt(i);break}}return e}function Tt(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"double_sided":e[i.nodeName]=parseInt(i.textContent);break;case"bump":e[i.nodeName]=Pe(i);break}}return e}function Pe(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"texture":e[i.nodeName]={id:i.getAttribute("texture"),texcoord:i.getAttribute("texcoord"),extra:je(i)};break}}return e}function He(t){return t}function Et(t){return z(w.effects[t],He)}function _t(t){const e={name:t.getAttribute("name")};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"instance_effect":e.url=S(i.getAttribute("url"));break}}w.materials[t.getAttribute("id")]=e}function xt(t){let e,s=t.slice((t.lastIndexOf(".")-1>>>0)+2);switch(s=s.toLowerCase(),s){case"tga":e=Oe;break;default:e=tt}return e}function Ue(t){const e=Et(t.url),s=e.profile.technique;let n;switch(s.type){case"phong":case"blinn":n=new ct;break;case"lambert":n=new _n;break;default:n=new at;break}n.name=t.name||"";function i(c,l=null){const m=e.profile.samplers[c.id];let o=null;if(m!==void 0){const p=e.profile.surfaces[m.source];o=M(p.init_from)}else console.warn("THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530)."),o=M(c.id);if(o!==null){const p=xt(o);if(p!==void 0){const f=p.load(o),g=c.extra;if(g!==void 0&&g.technique!==void 0&&Q(g.technique)===!1){const b=g.technique;f.wrapS=b.wrapU?_e:ht,f.wrapT=b.wrapV?_e:ht,f.offset.set(b.offsetU||0,b.offsetV||0),f.repeat.set(b.repeatU||1,b.repeatV||1)}else f.wrapS=_e,f.wrapT=_e;return l!==null&&(f.colorSpace=l),f}else return console.warn("THREE.ColladaLoader: Loader for texture %s not found.",o),null}else return console.warn("THREE.ColladaLoader: Couldn't create texture with ID:",c.id),null}const a=s.parameters;for(const c in a){const l=a[c];switch(c){case"diffuse":l.color&&n.color.fromArray(l.color),l.texture&&(n.map=i(l.texture,ee));break;case"specular":l.color&&n.specular&&n.specular.fromArray(l.color),l.texture&&(n.specularMap=i(l.texture));break;case"bump":l.texture&&(n.normalMap=i(l.texture));break;case"ambient":l.texture&&(n.lightMap=i(l.texture,ee));break;case"shininess":l.float&&n.shininess&&(n.shininess=l.float);break;case"emission":l.color&&n.emissive&&n.emissive.fromArray(l.color),l.texture&&(n.emissiveMap=i(l.texture,ee));break}}Ee.colorSpaceToWorking(n.color,ee),n.specular&&Ee.colorSpaceToWorking(n.specular,ee),n.emissive&&Ee.colorSpaceToWorking(n.emissive,ee);let r=a.transparent,d=a.transparency;if(d===void 0&&r&&(d={float:1}),r===void 0&&d&&(r={opaque:"A_ONE",data:{color:[1,1,1,1]}}),r&&d)if(r.data.texture)n.transparent=!0;else{const c=r.data.color;switch(r.opaque){case"A_ONE":n.opacity=c[3]*d.float;break;case"RGB_ZERO":n.opacity=1-c[0]*d.float;break;case"A_ZERO":n.opacity=1-c[3]*d.float;break;case"RGB_ONE":n.opacity=c[0]*d.float;break;default:console.warn('THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.',r.opaque)}n.opacity<1&&(n.transparent=!0)}if(s.extra!==void 0&&s.extra.technique!==void 0){const c=s.extra.technique;for(const l in c){const m=c[l];switch(l){case"double_sided":n.side=m===1?Cn:vn;break;case"bump":n.normalMap=i(m.texture),n.normalScale=new xn(1,1);break}}}return n}function Ct(t){return z(w.materials[t],Ue)}function vt(t){const e={name:t.getAttribute("name")};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"optics":e.optics=Lt(i);break}}w.cameras[t.getAttribute("id")]=e}function Lt(t){for(let e=0;e<t.childNodes.length;e++){const s=t.childNodes[e];switch(s.nodeName){case"technique_common":return It(s)}}return{}}function It(t){const e={};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];switch(n.nodeName){case"perspective":case"orthographic":e.technique=n.nodeName,e.parameters=Rt(n);break}}return e}function Rt(t){const e={};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];switch(n.nodeName){case"xfov":case"yfov":case"xmag":case"ymag":case"znear":case"zfar":case"aspect_ratio":e[n.nodeName]=parseFloat(n.textContent);break}}return e}function Be(t){let e;switch(t.optics.technique){case"perspective":e=new lt(t.optics.parameters.yfov,t.optics.parameters.aspect_ratio,t.optics.parameters.znear,t.optics.parameters.zfar);break;case"orthographic":let s=t.optics.parameters.ymag,n=t.optics.parameters.xmag;const i=t.optics.parameters.aspect_ratio;n=n===void 0?s*i:n,s=s===void 0?n/i:s,n*=.5,s*=.5,e=new Ln(-n,n,s,-s,t.optics.parameters.znear,t.optics.parameters.zfar);break;default:e=new lt;break}return e.name=t.name||"",e}function Mt(t){const e=w.cameras[t];return e!==void 0?z(e,Be):(console.warn("THREE.ColladaLoader: Couldn't find camera with ID:",t),null)}function St(t){let e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"technique_common":e=Ot(i);break}}w.lights[t.getAttribute("id")]=e}function Ot(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"directional":case"point":case"spot":case"ambient":e.technique=i.nodeName,e.parameters=Gt(i)}}return e}function Gt(t){const e={};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"color":const a=L(i.textContent);e.color=new rt().fromArray(a),Ee.colorSpaceToWorking(e.color,ee);break;case"falloff_angle":e.falloffAngle=parseFloat(i.textContent);break;case"quadratic_attenuation":const r=parseFloat(i.textContent);e.distance=r?Math.sqrt(1/r):0;break}}return e}function ze(t){let e;switch(t.technique){case"directional":e=new Sn;break;case"point":e=new Mn;break;case"spot":e=new Rn;break;case"ambient":e=new In;break}return t.parameters.color&&e.color.copy(t.parameters.color),t.parameters.distance&&(e.distance=t.parameters.distance),e}function jt(t){const e=w.lights[t];return e!==void 0?z(e,ze):(console.warn("THREE.ColladaLoader: Couldn't find light with ID:",t),null)}function qt(t){const e={name:t.getAttribute("name"),sources:{},vertices:{},primitives:[]},s=U(t,"mesh")[0];if(s!==void 0){for(let n=0;n<s.childNodes.length;n++){const i=s.childNodes[n];if(i.nodeType!==1)continue;const a=i.getAttribute("id");switch(i.nodeName){case"source":e.sources[a]=Re(i);break;case"vertices":e.vertices=Pt(i);break;case"polygons":console.warn("THREE.ColladaLoader: Unsupported primitive type: ",i.nodeName);break;case"lines":case"linestrips":case"polylist":case"triangles":e.primitives.push(Ht(i));break;default:console.log(i)}}w.geometries[t.getAttribute("id")]=e}}function Re(t){const e={array:[],stride:3};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"float_array":e.array=L(n.textContent);break;case"Name_array":e.array=te(n.textContent);break;case"technique_common":const i=U(n,"accessor")[0];i!==void 0&&(e.stride=parseInt(i.getAttribute("stride")));break}}return e}function Pt(t){const e={};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];n.nodeType===1&&(e[n.getAttribute("semantic")]=S(n.getAttribute("source")))}return e}function Ht(t){const e={type:t.nodeName,material:t.getAttribute("material"),count:parseInt(t.getAttribute("count")),inputs:{},stride:0,hasUV:!1};for(let s=0,n=t.childNodes.length;s<n;s++){const i=t.childNodes[s];if(i.nodeType===1)switch(i.nodeName){case"input":const a=S(i.getAttribute("source")),r=i.getAttribute("semantic"),d=parseInt(i.getAttribute("offset")),c=parseInt(i.getAttribute("set")),l=c>0?r+c:r;e.inputs[l]={id:a,offset:d},e.stride=Math.max(e.stride,d+1),r==="TEXCOORD"&&(e.hasUV=!0);break;case"vcount":e.vcount=Z(i.textContent);break;case"p":e.p=Z(i.textContent);break}}return e}function Ut(t){const e={};for(let s=0;s<t.length;s++){const n=t[s];e[n.type]===void 0&&(e[n.type]=[]),e[n.type].push(n)}return e}function Bt(t){let e=0;for(let s=0,n=t.length;s<n;s++)t[s].hasUV===!0&&e++;e>0&&e<t.length&&(t.uvsNeedsFix=!0)}function Fe(t){const e={},s=t.sources,n=t.vertices,i=t.primitives;if(i.length===0)return{};const a=Ut(i);for(const r in a){const d=a[r];Bt(d),e[r]=zt(d,s,n)}return e}function zt(t,e,s){const n={},i={array:[],stride:0},a={array:[],stride:0},r={array:[],stride:0},d={array:[],stride:0},c={array:[],stride:0},l={array:[],stride:4},m={array:[],stride:4},o=new jn,p=[];let f=0;for(let g=0;g<t.length;g++){const b=t[g],G=b.inputs;let x=0;switch(b.type){case"lines":case"linestrips":x=b.count*2;break;case"triangles":x=b.count*3;break;case"polylist":for(let T=0;T<b.count;T++){const E=b.vcount[T];switch(E){case 3:x+=3;break;case 4:x+=6;break;default:x+=(E-2)*3;break}}break;default:console.warn("THREE.ColladaLoader: Unknown primitive type:",b.type)}o.addGroup(f,x,g),f+=x,b.material&&p.push(b.material);for(const T in G){const E=G[T];switch(T){case"VERTEX":for(const Y in s){const F=s[Y];switch(Y){case"POSITION":const le=i.array.length;if(W(b,e[F],E.offset,i.array),i.stride=e[F].stride,e.skinWeights&&e.skinIndices&&(W(b,e.skinIndices,E.offset,l.array),W(b,e.skinWeights,E.offset,m.array)),b.hasUV===!1&&t.uvsNeedsFix===!0){const yn=(i.array.length-le)/i.stride;for(let st=0;st<yn;st++)r.array.push(0,0)}break;case"NORMAL":W(b,e[F],E.offset,a.array),a.stride=e[F].stride;break;case"COLOR":W(b,e[F],E.offset,c.array),c.stride=e[F].stride;break;case"TEXCOORD":W(b,e[F],E.offset,r.array),r.stride=e[F].stride;break;case"TEXCOORD1":W(b,e[F],E.offset,d.array),r.stride=e[F].stride;break;default:console.warn('THREE.ColladaLoader: Semantic "%s" not handled in geometry build process.',Y)}}break;case"NORMAL":W(b,e[E.id],E.offset,a.array),a.stride=e[E.id].stride;break;case"COLOR":W(b,e[E.id],E.offset,c.array,!0),c.stride=e[E.id].stride;break;case"TEXCOORD":W(b,e[E.id],E.offset,r.array),r.stride=e[E.id].stride;break;case"TEXCOORD1":W(b,e[E.id],E.offset,d.array),d.stride=e[E.id].stride;break}}}return i.array.length>0&&o.setAttribute("position",new ne(i.array,i.stride)),a.array.length>0&&o.setAttribute("normal",new ne(a.array,a.stride)),c.array.length>0&&o.setAttribute("color",new ne(c.array,c.stride)),r.array.length>0&&o.setAttribute("uv",new ne(r.array,r.stride)),d.array.length>0&&o.setAttribute("uv1",new ne(d.array,d.stride)),l.array.length>0&&o.setAttribute("skinIndex",new ne(l.array,l.stride)),m.array.length>0&&o.setAttribute("skinWeight",new ne(m.array,m.stride)),n.data=o,n.type=t[0].type,n.materialKeys=p,n}function W(t,e,s,n,i=!1){const a=t.p,r=t.stride,d=t.vcount;function c(o){let p=a[o+s]*m;const f=p+m;for(;p<f;p++)n.push(l[p]);if(i){const g=n.length-m-1;Ne.setRGB(n[g+0],n[g+1],n[g+2],ee),n[g+0]=Ne.r,n[g+1]=Ne.g,n[g+2]=Ne.b}}const l=e.array,m=e.stride;if(t.vcount!==void 0){let o=0;for(let p=0,f=d.length;p<f;p++){const g=d[p];if(g===4){const b=o+r*0,G=o+r*1,x=o+r*2,T=o+r*3;c(b),c(G),c(T),c(G),c(x),c(T)}else if(g===3){const b=o+r*0,G=o+r*1,x=o+r*2;c(b),c(G),c(x)}else if(g>4)for(let b=1,G=g-2;b<=G;b++){const x=o+r*0,T=o+r*b,E=o+r*(b+1);c(x),c(T),c(E)}o+=r*g}}else for(let o=0,p=a.length;o<p;o+=r)c(o)}function Ve(t){return z(w.geometries[t],Fe)}function Ft(t){const e={name:t.getAttribute("name")||"",joints:{},links:[]};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"technique_common":Dt(n,e);break}}w.kinematicsModels[t.getAttribute("id")]=e}function Vt(t){return t.build!==void 0?t.build:t}function Kt(t){return z(w.kinematicsModels[t],Vt)}function Dt(t,e){for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"joint":e.joints[n.getAttribute("sid")]=Jt(n);break;case"link":e.links.push(Ke(n));break}}}function Jt(t){let e;for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"prismatic":case"revolute":e=Wt(n);break}}return e}function Wt(t){const e={sid:t.getAttribute("sid"),name:t.getAttribute("name")||"",axis:new $,limits:{min:0,max:0},type:t.nodeName,static:!1,zeroPosition:0,middlePosition:0};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"axis":const i=L(n.textContent);e.axis.fromArray(i);break;case"limits":const a=n.getElementsByTagName("max")[0],r=n.getElementsByTagName("min")[0];e.limits.max=parseFloat(a.textContent),e.limits.min=parseFloat(r.textContent);break}}return e.limits.min>=e.limits.max&&(e.static=!0),e.middlePosition=(e.limits.min+e.limits.max)/2,e}function Ke(t){const e={sid:t.getAttribute("sid"),name:t.getAttribute("name")||"",attachments:[],transforms:[]};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"attachment_full":e.attachments.push(Yt(n));break;case"matrix":case"translate":case"rotate":e.transforms.push(De(n));break}}return e}function Yt(t){const e={joint:t.getAttribute("joint").split("/").pop(),transforms:[],links:[]};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"link":e.links.push(Ke(n));break;case"matrix":case"translate":case"rotate":e.transforms.push(De(n));break}}return e}function De(t){const e={type:t.nodeName},s=L(t.textContent);switch(e.type){case"matrix":e.obj=new X,e.obj.fromArray(s).transpose();break;case"translate":e.obj=new $,e.obj.fromArray(s);break;case"rotate":e.obj=new $,e.obj.fromArray(s),e.angle=pe.degToRad(s[3]);break}return e}function Xt(t){const e={name:t.getAttribute("name")||"",rigidBodies:{}};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"rigid_body":e.rigidBodies[n.getAttribute("name")]={},Zt(n,e.rigidBodies[n.getAttribute("name")]);break}}w.physicsModels[t.getAttribute("id")]=e}function Zt(t,e){for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"technique_common":Qt(n,e);break}}}function Qt(t,e){for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"inertia":e.inertia=L(n.textContent);break;case"mass":e.mass=L(n.textContent)[0];break}}}function $t(t){const e={bindJointAxis:[]};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"bind_joint_axis":e.bindJointAxis.push(en(n));break}}w.kinematicsScenes[S(t.getAttribute("url"))]=e}function en(t){const e={target:t.getAttribute("target").split("/").pop()};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType===1)switch(n.nodeName){case"axis":const i=n.getElementsByTagName("param")[0];e.axis=i.textContent;const a=e.axis.split("inst_").pop().split("axis")[0];e.jointIndex=a.substring(0,a.length-1);break}}return e}function tn(t){return t.build!==void 0?t.build:t}function nn(t){return z(w.kinematicsScenes[t],tn)}function sn(){const t=Object.keys(w.kinematicsModels)[0],e=Object.keys(w.kinematicsScenes)[0],s=Object.keys(w.visualScenes)[0];if(t===void 0||e===void 0)return;const n=Kt(t),i=nn(e),a=Qe(s),r=i.bindJointAxis,d={};for(let m=0,o=r.length;m<o;m++){const p=r[m],f=H.querySelector('[sid="'+p.target+'"]');if(f){const g=f.parentElement;c(p.jointIndex,g)}}function c(m,o){const p=o.getAttribute("name"),f=n.joints[m];a.traverse(function(g){g.name===p&&(d[m]={object:g,transforms:an(o),joint:f,position:f.zeroPosition})})}const l=new X;nt={joints:n&&n.joints,getJointValue:function(m){const o=d[m];if(o)return o.position;console.warn("THREE.ColladaLoader: Joint "+m+" doesn't exist.")},setJointValue:function(m,o){const p=d[m];if(p){const f=p.joint;if(o>f.limits.max||o<f.limits.min)console.warn("THREE.ColladaLoader: Joint "+m+" value "+o+" outside of limits (min: "+f.limits.min+", max: "+f.limits.max+").");else if(f.static)console.warn("THREE.ColladaLoader: Joint "+m+" is static.");else{const g=p.object,b=f.axis,G=p.transforms;K.identity();for(let x=0;x<G.length;x++){const T=G[x];if(T.sid&&T.sid.indexOf(m)!==-1)switch(f.type){case"revolute":K.multiply(l.makeRotationAxis(b,pe.degToRad(o)));break;case"prismatic":K.multiply(l.makeTranslation(b.x*o,b.y*o,b.z*o));break;default:console.warn("THREE.ColladaLoader: Unknown joint type: "+f.type);break}else switch(T.type){case"matrix":K.multiply(T.obj);break;case"translate":K.multiply(l.makeTranslation(T.obj.x,T.obj.y,T.obj.z));break;case"scale":K.scale(T.obj);break;case"rotate":K.multiply(l.makeRotationAxis(T.obj,T.angle));break}}g.matrix.copy(K),g.matrix.decompose(g.position,g.quaternion,g.scale),d[m].position=o}}else console.log("THREE.ColladaLoader: "+m+" does not exist.")}}}function an(t){const e=[],s=H.querySelector('[id="'+t.id+'"]');for(let n=0;n<s.childNodes.length;n++){const i=s.childNodes[n];if(i.nodeType!==1)continue;let a,r;switch(i.nodeName){case"matrix":a=L(i.textContent);const d=new X().fromArray(a).transpose();e.push({sid:i.getAttribute("sid"),type:i.nodeName,obj:d});break;case"translate":case"scale":a=L(i.textContent),r=new $().fromArray(a),e.push({sid:i.getAttribute("sid"),type:i.nodeName,obj:r});break;case"rotate":a=L(i.textContent),r=new $().fromArray(a);const c=pe.degToRad(a[3]);e.push({sid:i.getAttribute("sid"),type:i.nodeName,obj:r,angle:c});break}}return e}function rn(t){const e=t.getElementsByTagName("node");for(let s=0;s<e.length;s++){const n=e[s];n.hasAttribute("id")===!1&&n.setAttribute("id",de())}}const K=new X,oe=new $;function Me(t){const e={name:t.getAttribute("name")||"",type:t.getAttribute("type"),id:t.getAttribute("id"),sid:t.getAttribute("sid"),matrix:new X,nodes:[],instanceCameras:[],instanceControllers:[],instanceLights:[],instanceGeometries:[],instanceNodes:[],transforms:{}};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];if(n.nodeType!==1)continue;let i;switch(n.nodeName){case"node":e.nodes.push(n.getAttribute("id")),Me(n);break;case"instance_camera":e.instanceCameras.push(S(n.getAttribute("url")));break;case"instance_controller":e.instanceControllers.push(Je(n));break;case"instance_light":e.instanceLights.push(S(n.getAttribute("url")));break;case"instance_geometry":e.instanceGeometries.push(Je(n));break;case"instance_node":e.instanceNodes.push(S(n.getAttribute("url")));break;case"matrix":i=L(n.textContent),e.matrix.multiply(K.fromArray(i).transpose()),e.transforms[n.getAttribute("sid")]=n.nodeName;break;case"translate":i=L(n.textContent),oe.fromArray(i),e.matrix.multiply(K.makeTranslation(oe.x,oe.y,oe.z)),e.transforms[n.getAttribute("sid")]=n.nodeName;break;case"rotate":i=L(n.textContent);const a=pe.degToRad(i[3]);e.matrix.multiply(K.makeRotationAxis(oe.fromArray(i),a)),e.transforms[n.getAttribute("sid")]=n.nodeName;break;case"scale":i=L(n.textContent),e.matrix.scale(oe.fromArray(i)),e.transforms[n.getAttribute("sid")]=n.nodeName;break;case"extra":break;default:console.log(n)}}return Xe(e.id)?console.warn("THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.",e.id):w.nodes[e.id]=e,e}function Je(t){const e={id:S(t.getAttribute("url")),materials:{},skeletons:[]};for(let s=0;s<t.childNodes.length;s++){const n=t.childNodes[s];switch(n.nodeName){case"bind_material":const i=n.getElementsByTagName("instance_material");for(let a=0;a<i.length;a++){const r=i[a],d=r.getAttribute("symbol"),c=r.getAttribute("target");e.materials[d]=S(c)}break;case"skeleton":e.skeletons.push(S(n.textContent));break}}return e}function on(t,e){const s=[],n=[];let i,a,r;for(i=0;i<t.length;i++){const l=t[i];let m;if(Xe(l))m=ce(l),We(m,e,s);else if(fn(l)){const p=w.visualScenes[l].children;for(let f=0;f<p.length;f++){const g=p[f];if(g.type==="JOINT"){const b=ce(g.id);We(b,e,s)}}}else console.error("THREE.ColladaLoader: Unable to find root bone of skeleton with ID:",l)}for(i=0;i<e.length;i++)for(a=0;a<s.length;a++)if(r=s[a],r.bone.name===e[i].name){n[i]=r,r.processed=!0;break}for(i=0;i<s.length;i++)r=s[i],r.processed===!1&&(n.push(r),r.processed=!0);const d=[],c=[];for(i=0;i<n.length;i++)r=n[i],d.push(r.bone),c.push(r.boneInverse);return new zn(d,c)}function We(t,e,s){t.traverse(function(n){if(n.isBone===!0){let i;for(let a=0;a<e.length;a++){const r=e[a];if(r.name===n.name){i=r.boneInverse;break}}i===void 0&&(i=new X),s.push({bone:n,boneInverse:i,processed:!1})}})}function cn(t){const e=[],s=t.matrix,n=t.nodes,i=t.type,a=t.instanceCameras,r=t.instanceControllers,d=t.instanceLights,c=t.instanceGeometries,l=t.instanceNodes;for(let o=0,p=n.length;o<p;o++)e.push(ce(n[o]));for(let o=0,p=a.length;o<p;o++){const f=Mt(a[o]);f!==null&&e.push(f.clone())}for(let o=0,p=r.length;o<p;o++){const f=r[o],g=y(f.id),b=Ve(g.id),G=Ye(b,f.materials),x=f.skeletons,T=g.skin.joints,E=on(x,T);for(let Y=0,F=G.length;Y<F;Y++){const le=G[Y];le.isSkinnedMesh&&(le.bind(E,g.skin.bindMatrix),le.normalizeSkinWeights()),e.push(le)}}for(let o=0,p=d.length;o<p;o++){const f=jt(d[o]);f!==null&&e.push(f.clone())}for(let o=0,p=c.length;o<p;o++){const f=c[o],g=Ve(f.id),b=Ye(g,f.materials);for(let G=0,x=b.length;G<x;G++)e.push(b[G])}for(let o=0,p=l.length;o<p;o++)e.push(ce(l[o]).clone());let m;if(n.length===0&&e.length===1)m=e[0];else{m=i==="JOINT"?new qn:new dt;for(let o=0;o<e.length;o++)m.add(e[o])}return m.name=i==="JOINT"?t.sid:t.name,m.matrix.copy(s),m.matrix.decompose(m.position,m.quaternion,m.scale),m}const ln=new at({name:it.DEFAULT_MATERIAL_NAME,color:16711935});function dn(t,e){const s=[];for(let n=0,i=t.length;n<i;n++){const a=e[t[n]];a===void 0?(console.warn("THREE.ColladaLoader: Material with key %s not found. Apply fallback material.",t[n]),s.push(ln)):s.push(Ct(a))}return s}function Ye(t,e){const s=[];for(const n in t){const i=t[n],a=dn(i.materialKeys,e);if(a.length===0&&(n==="lines"||n==="linestrips"?a.push(new ft):a.push(new ct)),n==="lines"||n==="linestrips")for(let l=0,m=a.length;l<m;l++){const o=a[l];if(o.isMeshPhongMaterial===!0||o.isMeshLambertMaterial===!0){const p=new ft;p.color.copy(o.color),p.opacity=o.opacity,p.transparent=o.transparent,a[l]=p}}const r=i.data.attributes.skinIndex!==void 0,d=a.length===1?a[0]:a;let c;switch(n){case"lines":c=new Bn(i.data,d);break;case"linestrips":c=new Un(i.data,d);break;case"triangles":case"polylist":r?c=new Pn(i.data,d):c=new Hn(i.data,d);break}s.push(c)}return s}function Xe(t){return w.nodes[t]!==void 0}function ce(t){return z(w.nodes[t],cn)}function un(t){const e={name:t.getAttribute("name"),children:[]};rn(t);const s=U(t,"node");for(let n=0;n<s.length;n++)e.children.push(Me(s[n]));w.visualScenes[t.getAttribute("id")]=e}function Ze(t){const e=new dt;e.name=t.name;const s=t.children;for(let n=0;n<s.length;n++){const i=s[n];e.add(ce(i.id))}return e}function fn(t){return w.visualScenes[t]!==void 0}function Qe(t){return z(w.visualScenes[t],Ze)}function hn(t){const e=U(t,"instance_visual_scene")[0];return Qe(S(e.getAttribute("url")))}function pn(){const t=w.clips;if(Q(t)===!0){if(Q(w.animations)===!1){const e=[];for(const s in w.animations){const n=ye(s);for(let i=0,a=n.length;i<a;i++)e.push(n[i])}Ae.push(new ot("default",-1,e))}}else for(const e in t)Ae.push(R(e))}function mn(t){let e="";const s=[t];for(;s.length;){const n=s.shift();n.nodeType===Node.TEXT_NODE?e+=n.textContent:(e+=`
2
+ `,s.push(...n.childNodes))}return e.trim()}if(D.length===0)return{scene:new Tn};const $e=new DOMParser().parseFromString(D,"application/xml"),H=U($e,"COLLADA")[0],Se=$e.getElementsByTagName("parsererror")[0];if(Se!==void 0){const t=U(Se,"div")[0];let e;return t?e=t.textContent:e=mn(Se),console.error(`THREE.ColladaLoader: Failed to parse collada file.
3
+ `,e),null}const bn=H.getAttribute("version");console.debug("THREE.ColladaLoader: File version",bn);const et=xe(U(H,"asset")[0]),tt=new En(this.manager);tt.setPath(this.resourcePath||se).setCrossOrigin(this.crossOrigin);let Oe;pt&&(Oe=new pt(this.manager),Oe.setPath(this.resourcePath||se));const Ne=new rt,Ae=[];let nt={},gn=0;const w={animations:{},clips:{},controllers:{},images:{},effects:{},materials:{},cameras:{},lights:{},geometries:{},nodes:{},visualScenes:{},kinematicsModels:{},physicsModels:{},kinematicsScenes:{}};B(H,"library_animations","animation",ue),B(H,"library_animation_clips","animation_clip",h),B(H,"library_controllers","controller",C),B(H,"library_images","image",u),B(H,"library_effects","effect",J),B(H,"library_materials","material",_t),B(H,"library_cameras","camera",vt),B(H,"library_lights","light",St),B(H,"library_geometries","geometry",qt),B(H,"library_nodes","node",Me),B(H,"library_visual_scenes","visual_scene",un),B(H,"library_kinematics_models","kinematics_model",Ft),B(H,"library_physics_models","physics_model",Xt),B(H,"scene","instance_kinematics_scene",$t),V(w.animations,ge),V(w.clips,q),V(w.controllers,A),V(w.images,k),V(w.effects,He),V(w.materials,Ue),V(w.cameras,Be),V(w.lights,ze),V(w.geometries,Fe),V(w.visualScenes,Ze),pn(),sn();const Te=hn(U(H,"scene")[0]);return Te.animations=Ae,et.upAxis==="Z_UP"&&(console.warn("THREE.ColladaLoader: You are loading an asset with a Z-UP coordinate system. The loader just rotates the asset to transform it into Y-UP. The vertex data are not converted, see #24289."),Te.rotation.set(-Math.PI/2,0,0)),Te.scale.multiplyScalar(et.unit),{get animations(){return console.warn("THREE.ColladaLoader: Please access animations over scene.animations now."),Ae},kinematics:nt,library:w,scene:Te}}}export{Vn as ColladaLoader};
@@ -0,0 +1 @@
1
+ import{al as f,n as l,j as c,t as d}from"./volter-sdk-BwU3fa6G.js";import{r as v}from"./three-integration.service-Bfy6rPSh.js";import{a as S}from"./live-mixers-B-bwLZ7c.js";import{j as h,G as j,k as x}from"./asset-preview-jtcCFntF.js";import{O as b}from"./StageHost-qZAn6HZ3.js";import"./content-bounds-Dg9hT5Gp.js";import"./three.module-dk_BdrjN.js";import"./object3d-document-session-registry-_NnPOZmk.js";import"./clip-planes-CmZu3QTO.js";import"./model-inspection-jRplyguX.js";import"./standard-viewport-dressing-zXbS_1ew.js";import"./OrbitControls-Cn2q_IQK.js";import"./LineSegments2-D1_2s-N-.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 R({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{R as EntityModelDocument,E as Object3DSnapshotDocument};
@@ -0,0 +1 @@
1
+ import{n as f,kD as M,kE as k,kF as C,kG as D,kH as A,j as o,t as y,ki as E,kI as b}from"./volter-sdk-BwU3fa6G.js";import{E as P,A as z,S as H,Y as I,i as O,l as F,f as L,aq as T,a7 as B,n as R,q as j,a6 as S,cj as G,aa as q}from"./three.module-dk_BdrjN.js";import{O as $}from"./OrbitControls-Cn2q_IQK.js";import{E as N,H as _}from"./content-bounds-Dg9hT5Gp.js";function U(e){return e.split("/").pop()??e}function v(e,t,r){return Math.min(r,Math.max(t,e))}function X(e){return e.split(/[?#]/,1)[0].toLowerCase().endsWith(".exr")}async function W(e){const t=X(e)?"EXR":"HDR",s=await(t==="EXR"?new N:new _).loadAsync(e),p=s.image,n=p.width??0,a=p.height??0,c=n>0&&a>0&&Math.abs(n/a-2)<=.04;return s.mapping=P,s.needsUpdate=!0,{texture:s,width:n,height:a,format:t,panorama:c}}function V(e){const t=new O,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 L("#11141b");const i=e.width>0&&e.height>0?e.width/e.height:1,d=new T(i>=1?4.8:4.8*i,i>=1?4.8/i:4.8),m=new B({map:e.texture,toneMapped:!0});return s.push(d),p.push(m),t.add(new R(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 R(i,d);x.position.set(...m),t.add(x)};n(new S(1,64,40),new j({color:"#d8dde5",roughness:.08,metalness:1}),[-2.3,1.15,0]),n(new S(1,64,40),new j({color:"#c97341",roughness:.32,metalness:.25}),[0,1.15,0]),n(new S(1,64,40),new j({color:"#d7d5cf",roughness:.82,metalness:0}),[2.3,1.15,0]);const a=new G(5.7,96),c=new j({color:"#737881",roughness:.58,metalness:0});s.push(a),p.push(c);const l=new R(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 Y({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 z({canvas:a,antialias:!0});c.outputColorSpace=H,c.toneMapping=I;const l=V(e),i=new $(l.camera,a);i.target.set(0,e.panorama?.8:0,0),i.enableDamping=!0,i.enablePan=!1,i.minDistance=e.panorama?3.8:4,i.maxDistance=e.panorama?14:10,i.update();const d={width:1,height:1},m=()=>{const u=t.current;if(c.toneMappingExposure=v(u.exposure,.05,8),e.panorama){const h=q.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 J({panorama:e,settings:t,onChange:r}){return o.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:12,padding:4},children:[o.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:5,fontSize:11},children:["Exposure",o.jsx(b,{value:t.exposure,onChange:s=>r({...t,exposure:v(s,.05,8)}),step:.05,precision:2})]}),e&&o.jsxs(o.Fragment,{children:[o.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:5,fontSize:11},children:["Lighting intensity",o.jsx(b,{value:t.intensity,onChange:s=>r({...t,intensity:v(s,0,8)}),step:.05,precision:2})]}),o.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:5,fontSize:11},children:["Rotation",o.jsx(b,{value:t.rotation,onChange:s=>r({...t,rotation:s%360}),step:1,precision:0})]}),o.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:5,fontSize:11},children:["Background blur",o.jsx(b,{value:t.blur,onChange:s=>r({...t,blur:v(s,0,1)}),step:.05,precision:2})]})]}),o.jsx("div",{style:{color:y.content.muted,fontSize:10,lineHeight:1.45},children:"Preview controls are session-only. Bind the image, orientation, and accepted intensity in the owning scene source."})]})}function te({documentId:e,assetPath:t,active:r=!0}){const[s,p]=f.useState(0),[n,a]=f.useState(null),[c,l]=f.useState(null),[i,d]=f.useState({exposure:1,intensity:1,rotation:0,blur:0}),m=f.useRef(i);m.current=i,f.useEffect(()=>{if(r)return M(t,()=>p(g=>g+1))},[r,t]),f.useEffect(()=>{if(!r)return;let g=!1,u=null;return a(null),l(null),W(t).then(h=>{if(u=h,g){h.texture.dispose();return}a(h)},h=>{g||l(h instanceof Error?h.message:String(h))}),()=>{g=!0,u?.texture.dispose()}},[r,t,s]);const x=f.useMemo(()=>[{id:"environment-image",title:"Environment Image",icon:C,order:k,body:{kind:"custom",...n?{data:{format:n.format,width:n.width,height:n.height,panorama:n.panorama}}:{},render:()=>o.jsxs("div",{style:{display:"grid",gridTemplateColumns:"auto 1fr",gap:"6px 10px"},children:[o.jsx("span",{style:{color:y.content.muted},children:"Format"}),o.jsx("span",{children:n?.format??"—"}),o.jsx("span",{style:{color:y.content.muted},children:"Resolution"}),o.jsx("span",{children:n?`${n.width} × ${n.height}`:"—"}),o.jsx("span",{style:{color:y.content.muted},children:"Projection"}),o.jsx("span",{children:n?.panorama?"2:1 equirectangular":"Flat image"})]})}},{id:"environment-preview-settings",title:"Preview",icon:A,order:D,body:{kind:"custom",data:{...i},render:()=>o.jsx(J,{panorama:n?.panorama??!1,settings:i,onChange:d})}}],[n,i]),w=U(t);return c?o.jsx(E,{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(E,{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(Y,{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(E,{documentId:e,active:r,type:"environment image",title:w,status:"Loading HDR image",children:o.jsx("div",{style:{padding:20,color:y.content.muted},children:"Loading environment…"})})}export{te as EnvironmentAssetDocument};
@@ -0,0 +1 @@
1
+ import{ag as G,V as M,cH as ue,b5 as Z,ba as he,b6 as fe,bc as me,am as $,C as J,ao as de,cI as _,u as ge,J as B,f as b,S as D,E as ye,M as I,a3 as ee,aK as te,bi as W,t as K,l as ve,s as ne,aa as S,ah as we,ad as Te,aL as Ie,n as Fe,au as xe,bj as Pe,aM as Ae,ae as Se,B as Q,o as V,aJ as Ee,j as De,m as Le,a8 as Me,ac as O,aQ as Ce,ab as R,aO as ke,aN as re,bn as be}from"./three.module-dk_BdrjN.js";import{u as Re}from"./content-bounds-Dg9hT5Gp.js";function ae(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,s=n,i=Math.floor((r+s)/2);for(;e<t[i]||e>=t[i+1];)e<t[i]?s=i:r=i,i=Math.floor((r+s)/2);return i}function Be(h,e,t,n){const r=[],s=[],i=[];r[0]=1;for(let a=1;a<=t;++a){s[a]=e-n[h+1-a],i[a]=n[h+a]-e;let o=0;for(let l=0;l<a;++l){const p=i[l+1],c=s[a-l],u=r[l]/(p+c);r[l]=o+p*u,o=c*u}r[a]=o}return r}function Oe(h,e,t,n){const r=ae(h,n,e),s=Be(r,n,h,e),i=new G(0,0,0,0);for(let a=0;a<=h;++a){const o=t[r-h+a],l=s[a],p=o.w*l;i.x+=o.x*p,i.y+=o.y*p,i.z+=o.z*p,i.w+=o.w*l}return i}function Ve(h,e,t,n,r){const s=[];for(let c=0;c<=t;++c)s[c]=0;const i=[];for(let c=0;c<=n;++c)i[c]=s.slice(0);const a=[];for(let c=0;c<=t;++c)a[c]=s.slice(0);a[0][0]=1;const o=s.slice(0),l=s.slice(0);for(let c=1;c<=t;++c){o[c]=e-r[h+1-c],l[c]=r[h+c]-e;let u=0;for(let f=0;f<c;++f){const m=l[f+1],g=o[c-f];a[c][f]=m+g;const d=a[f][c-1]/a[c][f];a[f][c]=u+m*d,u=g*d}a[c][c]=u}for(let c=0;c<=t;++c)i[0][c]=a[c][t];for(let c=0;c<=t;++c){let u=0,f=1;const m=[];for(let g=0;g<=t;++g)m[g]=s.slice(0);m[0][0]=1;for(let g=1;g<=n;++g){let d=0;const w=c-g,T=t-g;c>=g&&(m[f][0]=m[u][0]/a[T+1][w],d=m[f][0]*a[w][T]);const v=w>=-1?1:-w,x=c-1<=T?g-1:t-c;for(let P=v;P<=x;++P)m[f][P]=(m[u][P]-m[u][P-1])/a[T+1][w+P],d+=m[f][P]*a[w+P][T];c<=T&&(m[f][g]=-m[u][g-1]/a[T+1][c],d+=m[f][g]*a[c][T]),i[g][c]=d;const E=u;u=f,f=E}}let p=t;for(let c=1;c<=n;++c){for(let u=0;u<=t;++u)i[c][u]*=p;p*=t-c}return i}function Ue(h,e,t,n,r){const s=r<h?r:h,i=[],a=ae(h,n,e),o=Ve(a,n,h,s,e),l=[];for(let p=0;p<t.length;++p){const c=t[p].clone(),u=c.w;c.x*=u,c.y*=u,c.z*=u,l[p]=c}for(let p=0;p<=s;++p){const c=l[a-h].clone().multiplyScalar(o[p][0]);for(let u=1;u<=h;++u)c.add(l[a-h+u].clone().multiplyScalar(o[p][u]));i[p]=c}for(let p=s+1;p<=r+1;++p)i[p]=new G(0,0,0);return i}function Xe(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 s=0;s<e;++s){const i=h[s];t[s]=new M(i.x,i.y,i.z),n[s]=i.w}const r=[];for(let s=0;s<e;++s){const i=t[s].clone();for(let a=1;a<=s;++a)i.sub(r[s-a].clone().multiplyScalar(Xe(s,a)*n[a]));r[s]=i.divideScalar(n[0])}return r}function ze(h,e,t,n,r){const s=Ue(h,e,t,n,r);return Ge(s)}class je extends ue{constructor(e,t,n,r,s){super();const i=t?t.length-1:0,a=n?n.length:0;this.degree=e,this.knots=t,this.controlPoints=[],this.startKnot=r||0,this.endKnot=s||i;for(let o=0;o<a;++o){const l=n[o];this.controlPoints[o]=new G(l.x,l.y,l.z,l.w)}}getPoint(e,t=new M){const n=t,r=this.knots[this.startKnot]+e*(this.knots[this.endKnot]-this.knots[this.startKnot]),s=Oe(this.degree,this.knots,this.controlPoints,r);return s.w!==1&&s.divideScalar(s.w),n.set(s.x,s.y,s.z)}getTangent(e,t=new M){const n=t,r=this.knots[0]+e*(this.knots[this.knots.length-1]-this.knots[0]),s=ze(this.degree,this.knots,this.controlPoints,r,1);return n.copy(s[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 G(t[0],t[1],t[2],t[3])),this.startKnot=e.startKnot,this.endKnot=e.endKnot,this}}let y,F,A;class nt extends Z{constructor(e){super(e)}load(e,t,n,r){const s=this,i=s.path===""?he.extractUrlBase(e):s.path,a=new fe(this.manager);a.setPath(s.path),a.setResponseType("arraybuffer"),a.setRequestHeader(s.requestHeader),a.setWithCredentials(s.withCredentials),a.load(e,function(o){try{t(s.parse(o,i))}catch(l){r?r(l):console.error(l),s.manager.itemError(e)}},n,r)}parse(e,t){if(Qe(e))y=new Ne().parse(e);else{const r=ce(e);if(!Ye(r))throw new Error("THREE.FBXLoader: Unknown format.");if(ie(r)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+ie(r));y=new We().parse(r)}const n=new me(this.manager).setPath(this.resourcePath||t).setCrossOrigin(this.crossOrigin);return new _e(n,this.manager).parse(y)}}class _e{constructor(e,t){this.textureLoader=e,this.manager=t}parse(){F=this.parseConnections();const e=this.parseImages(),t=this.parseTextures(e),n=this.parseMaterials(t),r=this.parseDeformers(),s=new Ke().parse(r);return this.parseScene(r,s,n),A}parseConnections(){const e=new Map;return"Connections"in y&&y.Connections.connections.forEach(function(n){const r=n[0],s=n[1],i=n[2];e.has(r)||e.set(r,{parents:[],children:[]});const a={ID:s,relationship:i};e.get(r).parents.push(a),e.has(s)||e.set(s,{parents:[],children:[]});const o={ID:r,relationship:i};e.get(s).children.push(o)}),e}parseImages(){const e={},t={};if("Video"in y.Objects){const n=y.Objects.Video;for(const r in n){const s=n[r],i=parseInt(r);if(e[i]=s.RelativeFilename||s.Filename,"Content"in s){const a=s.Content instanceof ArrayBuffer&&s.Content.byteLength>0,o=typeof s.Content=="string"&&s.Content!=="";if(a||o){const l=this.parseImage(n[r]);t[s.RelativeFilename||s.Filename]=l}}}}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 s;switch(r){case"bmp":s="image/bmp";break;case"jpg":case"jpeg":s="image/jpeg";break;case"png":s="image/png";break;case"tif":s="image/tiff";break;case"tga":this.manager.getHandler(".tga")===null&&console.warn("FBXLoader: TGA loader not found, skipping ",n),s="image/tga";break;case"webp":s="image/webp";break;default:console.warn('FBXLoader: Image type "'+r+'" is not supported.');return}if(typeof t=="string")return"data:"+s+";base64,"+t;{const i=new Uint8Array(t);return window.URL.createObjectURL(new Blob([i],{type:s}))}}parseTextures(e){const t=new Map;if("Texture"in y.Objects){const n=y.Objects.Texture;for(const r in n){const s=this.parseTexture(n[r],e);t.set(parseInt(r),s)}}return t}parseTexture(e,t){const n=this.loadTexture(e,t);n.ID=e.id,n.name=e.attrName;const r=e.WrapModeU,s=e.WrapModeV,i=r!==void 0?r.value:0,a=s!==void 0?s.value:0;if(n.wrapS=i===0?$:J,n.wrapT=a===0?$:J,"Scaling"in e){const o=e.Scaling.value;n.repeat.x=o[0],n.repeat.y=o[1]}if("Translation"in e){const o=e.Translation.value;n.offset.x=o[0],n.offset.y=o[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 s=r.path;s||r.setPath(this.textureLoader.path);const i=F.get(e.id).children;let a;if(i!==void 0&&i.length>0&&t[i[0].ID]!==void 0&&(a=t[i[0].ID],(a.indexOf("blob:")===0||a.indexOf("data:")===0)&&r.setPath(void 0)),a===void 0)return console.warn("FBXLoader: Undefined filename, creating placeholder texture."),new de;const o=r.load(a);return r.setPath(s),o}parseMaterials(e){const t=new Map;if("Material"in y.Objects){const n=y.Objects.Material;for(const r in n){const s=this.parseMaterial(n[r],e);s!==null&&t.set(parseInt(r),s)}}return t}parseMaterial(e,t){const n=e.id,r=e.attrName;let s=e.ShadingModel;if(typeof s=="object"&&(s=s.value),!F.has(n))return null;const i=this.parseParameters(e,t,n);let a;switch(s.toLowerCase()){case"phong":a=new _;break;case"lambert":a=new ge;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',s),a=new _;break}return a.setValues(i),a.name=r,a}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),D):e.DiffuseColor&&(e.DiffuseColor.type==="Color"||e.DiffuseColor.type==="ColorRGB")&&(r.color=B.colorSpaceToWorking(new b().fromArray(e.DiffuseColor.value),D)),e.DisplacementFactor&&(r.displacementScale=e.DisplacementFactor.value),e.Emissive?r.emissive=B.colorSpaceToWorking(new b().fromArray(e.Emissive.value),D):e.EmissiveColor&&(e.EmissiveColor.type==="Color"||e.EmissiveColor.type==="ColorRGB")&&(r.emissive=B.colorSpaceToWorking(new b().fromArray(e.EmissiveColor.value),D)),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-(e.TransparentColor?parseFloat(e.TransparentColor.value[0]):0))),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),D):e.SpecularColor&&e.SpecularColor.type==="Color"&&(r.specular=B.colorSpaceToWorking(new b().fromArray(e.SpecularColor.value),D));const s=this;return F.get(n).children.forEach(function(i){const a=i.relationship;switch(a){case"Bump":r.bumpMap=s.getTexture(t,i.ID);break;case"Maya|TEX_ao_map":r.aoMap=s.getTexture(t,i.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":r.map=s.getTexture(t,i.ID),r.map!==void 0&&(r.map.colorSpace=D);break;case"DisplacementColor":r.displacementMap=s.getTexture(t,i.ID);break;case"EmissiveColor":r.emissiveMap=s.getTexture(t,i.ID),r.emissiveMap!==void 0&&(r.emissiveMap.colorSpace=D);break;case"NormalMap":case"Maya|TEX_normal_map":r.normalMap=s.getTexture(t,i.ID);break;case"ReflectionColor":r.envMap=s.getTexture(t,i.ID),r.envMap!==void 0&&(r.envMap.mapping=ye,r.envMap.colorSpace=D);break;case"SpecularColor":r.specularMap=s.getTexture(t,i.ID),r.specularMap!==void 0&&(r.specularMap.colorSpace=D);break;case"TransparentColor":case"TransparencyFactor":r.alphaMap=s.getTexture(t,i.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.",a);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=F.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 s=n[r],i=F.get(parseInt(r));if(s.attrType==="Skin"){const a=this.parseSkeleton(i,n);a.ID=r,i.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),a.geometryID=i.parents[0].ID,e[r]=a}else if(s.attrType==="BlendShape"){const a={id:r};a.rawTargets=this.parseMorphTargets(i,n),a.id=r,i.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),t[r]=a}}}return{skeletons:e,morphTargets:t}}parseSkeleton(e,t){const n=[];return e.children.forEach(function(r){const s=t[r.ID];if(s.attrType!=="Cluster")return;const i={ID:r.ID,indices:[],weights:[],transformLink:new I().fromArray(s.TransformLink.a)};"Indexes"in s&&(i.indices=s.Indexes.a,i.weights=s.Weights.a),n.push(i)}),{rawBones:n,bones:[]}}parseMorphTargets(e,t){const n=[];for(let r=0;r<e.children.length;r++){const s=e.children[r],i=t[s.ID],a={name:i.attrName,initialWeight:i.DeformPercent,id:i.id,fullWeights:i.FullWeights.a};if(i.attrType!=="BlendShapeChannel")return;a.geoID=F.get(parseInt(s.ID)).children.filter(function(o){return o.relationship===void 0})[0].ID,n.push(a)}return n}parseScene(e,t,n){A=new ee;const r=this.parseModels(e.skeletons,t,n),s=y.Objects.Model,i=this;r.forEach(function(o){const l=s[o.ID];i.setLookAtProperties(o,l),F.get(o.ID).parents.forEach(function(c){const u=r.get(c.ID);u!==void 0&&u.add(o)}),o.parent===null&&A.add(o)}),this.bindSkeleton(e.skeletons,t,r),this.addGlobalSceneSettings(),A.traverse(function(o){if(o.userData.transformData){o.parent&&(o.userData.transformData.parentMatrix=o.parent.matrix,o.userData.transformData.parentMatrixWorld=o.parent.matrixWorld);const l=le(o.userData.transformData);o.applyMatrix4(l),o.updateWorldMatrix()}});const a=new He().parse();A.children.length===1&&A.children[0].isGroup&&(A.children[0].animations=a,A=A.children[0]),A.animations=a}parseModels(e,t,n){const r=new Map,s=y.Objects.Model;for(const i in s){const a=parseInt(i),o=s[i],l=F.get(a);let p=this.buildSkeleton(l,e,a,o.attrName);if(!p){switch(o.attrType){case"Camera":p=this.createCamera(l);break;case"Light":p=this.createLight(l);break;case"Mesh":p=this.createMesh(l,t,n);break;case"NurbsCurve":p=this.createCurve(l,t);break;case"LimbNode":case"Root":p=new te;break;case"Null":default:p=new ee;break}p.name=o.attrName?W.sanitizeNodeName(o.attrName):"",p.userData.originalName=o.attrName,p.ID=a}this.getTransformData(p,o),r.set(a,p)}return r}buildSkeleton(e,t,n,r){let s=null;return e.parents.forEach(function(i){for(const a in t){const o=t[a];o.rawBones.forEach(function(l,p){if(l.ID===i.ID){const c=s;s=new te,s.matrixWorld.copy(l.transformLink),s.name=r?W.sanitizeNodeName(r):"",s.userData.originalName=r,s.ID=n,o.bones[p]=s,c!==null&&s.add(c)}})}}),s}createCamera(e){let t,n;if(e.children.forEach(function(r){const s=y.Objects.NodeAttribute[r.ID];s!==void 0&&(n=s)}),n===void 0)t=new K;else{let r=0;n.CameraProjectionType!==void 0&&n.CameraProjectionType.value===1&&(r=1);let s=1;n.NearPlane!==void 0&&(s=n.NearPlane.value/1e3);let i=1e3;n.FarPlane!==void 0&&(i=n.FarPlane.value/1e3);let a=window.innerWidth,o=window.innerHeight;n.AspectWidth!==void 0&&n.AspectHeight!==void 0&&(a=n.AspectWidth.value,o=n.AspectHeight.value);const l=a/o;let p=45;n.FieldOfView!==void 0&&(p=n.FieldOfView.value);const c=n.FocalLength?n.FocalLength.value:null;switch(r){case 0:t=new ve(p,l,s,i),c!==null&&t.setFocalLength(c);break;case 1:console.warn("THREE.FBXLoader: Orthographic cameras not supported yet."),t=new K;break;default:console.warn("THREE.FBXLoader: Unknown camera type "+r+"."),t=new K;break}}return t}createLight(e){let t,n;if(e.children.forEach(function(r){const s=y.Objects.NodeAttribute[r.ID];s!==void 0&&(n=s)}),n===void 0)t=new K;else{let r;n.LightType===void 0?r=0:r=n.LightType.value;let s=16777215;n.Color!==void 0&&(s=B.colorSpaceToWorking(new b().fromArray(n.Color.value),D));let i=n.Intensity===void 0?1:n.Intensity.value/100;n.CastLightOnObject!==void 0&&n.CastLightOnObject.value===0&&(i=0);let a=0;n.FarAttenuationEnd!==void 0&&(n.EnableFarAttenuation!==void 0&&n.EnableFarAttenuation.value===0?a=0:a=n.FarAttenuationEnd.value);const o=1;switch(r){case 0:t=new ne(s,i,a,o);break;case 1:t=new Te(s,i);break;case 2:let l=Math.PI/3;n.InnerAngle!==void 0&&(l=S.degToRad(n.InnerAngle.value));let p=0;n.OuterAngle!==void 0&&(p=S.degToRad(n.OuterAngle.value),p=Math.max(p,1)),t=new we(s,i,a,l,p,o);break;default:console.warn("THREE.FBXLoader: Unknown light type "+n.LightType.value+", defaulting to a PointLight."),t=new ne(s,i);break}n.CastShadows!==void 0&&n.CastShadows.value===1&&(t.castShadow=!0)}return t}createMesh(e,t,n){let r,s=null,i=null;const a=[];if(e.children.forEach(function(o){t.has(o.ID)&&(s=t.get(o.ID)),n.has(o.ID)&&a.push(n.get(o.ID))}),a.length>1?i=a:a.length>0?i=a[0]:(i=new _({name:Z.DEFAULT_MATERIAL_NAME,color:13421772}),a.push(i)),"color"in s.attributes&&a.forEach(function(o){o.vertexColors=!0}),s.groups.length>0){let o=!1;for(let l=0,p=s.groups.length;l<p;l++){const c=s.groups[l];(c.materialIndex<0||c.materialIndex>=a.length)&&(c.materialIndex=a.length,o=!0)}if(o){const l=new _;a.push(l)}}return s.FBX_Deformer?(r=new Ie(s,i),r.normalizeSkinWeights()):r=new Fe(s,i),r}createCurve(e,t){const n=e.children.reduce(function(s,i){return t.has(i.ID)&&(s=t.get(i.ID)),s},null),r=new xe({name:Z.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=z(t.RotationOrder.value):n.eulerOrder=z(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&&F.get(e.ID).children.forEach(function(r){if(r.relationship==="LookAtProperty"){const s=y.Objects.Model[r.ID];if("Lcl_Translation"in s){const i=s.Lcl_Translation.value;e.target!==void 0?(e.target.position.fromArray(i),A.add(e.target)):e.lookAt(new M().fromArray(i))}}})}bindSkeleton(e,t,n){const r=this.parsePoseNodes();for(const s in e){const i=e[s];F.get(parseInt(i.ID)).parents.forEach(function(o){if(t.has(o.ID)){const l=o.ID;F.get(l).parents.forEach(function(c){n.has(c.ID)&&n.get(c.ID).bind(new Ae(i.bones),r[c.ID])})}})}}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(s){e[s.Node]=new I().fromArray(s.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 s=new b().setRGB(t,n,r,D);A.add(new Se(s,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 s=F.get(parseInt(r)),i=this.parseGeometry(s,n[r],e);t.set(parseInt(r),i)}}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,s=[],i=e.parents.map(function(c){return y.Objects.Model[c.ID]});if(i.length===0)return;const a=e.children.reduce(function(c,u){return r[u.ID]!==void 0&&(c=r[u.ID]),c},null);e.children.forEach(function(c){n.morphTargets[c.ID]!==void 0&&s.push(n.morphTargets[c.ID])});const o=i[0],l={};"RotationOrder"in o&&(l.eulerOrder=z(o.RotationOrder.value)),"InheritType"in o&&(l.inheritType=parseInt(o.InheritType.value)),"GeometricTranslation"in o&&(l.translation=o.GeometricTranslation.value),"GeometricRotation"in o&&(l.rotation=o.GeometricRotation.value),"GeometricScaling"in o&&(l.scale=o.GeometricScaling.value);const p=le(l);return this.genGeometry(t,a,s,p)}genGeometry(e,t,n,r){const s=new Q;e.attrName&&(s.name=e.attrName);const i=this.parseGeoNode(e,t),a=this.genBuffers(i),o=new V(a.vertex,3);if(o.applyMatrix4(r),s.setAttribute("position",o),a.colors.length>0&&s.setAttribute("color",new V(a.colors,3)),t&&(s.setAttribute("skinIndex",new Ee(a.weightsIndices,4)),s.setAttribute("skinWeight",new V(a.vertexWeights,4)),s.FBX_Deformer=t),a.normal.length>0){const l=new De().getNormalMatrix(r),p=new V(a.normal,3);p.applyNormalMatrix(l),s.setAttribute("normal",p)}if(a.uvs.forEach(function(l,p){const c=p===0?"uv":`uv${p}`;s.setAttribute(c,new V(a.uvs[p],2))}),i.material&&i.material.mappingType!=="AllSame"){let l=a.materialIndex[0],p=0;if(a.materialIndex.forEach(function(c,u){c!==l&&(s.addGroup(p,u-p,l),l=c,p=u)}),s.groups.length>0){const c=s.groups[s.groups.length-1],u=c.start+c.count;u!==a.materialIndex.length&&s.addGroup(u,a.materialIndex.length-u,l)}s.groups.length===0&&s.addGroup(0,a.materialIndex.length,a.materialIndex[0])}return this.addMorphTargets(s,e,n,r),s}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,s){r.indices.forEach(function(i,a){n.weightTable[i]===void 0&&(n.weightTable[i]=[]),n.weightTable[i].push({id:s,weight:r.weights[a]})})})),n}genBuffers(e){const t={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]};let n=0,r=0,s=!1,i=[],a=[],o=[],l=[],p=[],c=[];const u=this;return e.vertexIndices.forEach(function(f,m){let g,d=!1;f<0&&(f=f^-1,d=!0);let w=[],T=[];if(i.push(f*3,f*3+1,f*3+2),e.color){const v=H(m,n,f,e.color);o.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){s||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),s=!0);const v=[0,0,0,0],x=[0,0,0,0];T.forEach(function(E,P){let k=E,L=w[P];x.forEach(function(j,X,C){if(k>j){C[X]=k,k=j;const N=v[X];v[X]=L,L=N}})}),w=v,T=x}for(;T.length<4;)T.push(0),w.push(0);for(let v=0;v<4;++v)p.push(T[v]),c.push(w[v])}if(e.normal){const v=H(m,n,f,e.normal);a.push(v[0],v[1],v[2])}e.material&&e.material.mappingType!=="AllSame"&&(g=H(m,n,f,e.material)[0],g<0&&(u.negativeMaterialIndices=!0,g=0)),e.uv&&e.uv.forEach(function(v,x){const E=H(m,n,f,v);l[x]===void 0&&(l[x]=[]),l[x].push(E[0]),l[x].push(E[1])}),r++,d&&(u.genFace(t,e,i,g,a,o,l,p,c,r),n++,r=0,i=[],a=[],o=[],l=[],p=[],c=[])}),t}getNormalNewell(e){const t=new M(0,0,0);for(let n=0;n<e.length;n++){const r=e[n],s=e[(n+1)%e.length];t.x+=(r.y-s.y)*(r.z+s.z),t.y+=(r.z-s.z)*(r.x+s.x),t.z+=(r.x-s.x)*(r.y+s.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(),s=t.clone().cross(r).normalize();return{normal:t,tangent:r,bitangent:s}}flattenVertex(e,t,n){return new Le(e.dot(t),e.dot(n))}genFace(e,t,n,r,s,i,a,o,l,p){let c;if(p>3){const u=[],f=t.baseVertexPositions||t.vertexPositions;for(let w=0;w<n.length;w+=3)u.push(new M(f[n[w]],f[n[w+1]],f[n[w+2]]));const{tangent:m,bitangent:g}=this.getNormalTangentAndBitangent(u),d=[];for(const w of u)d.push(this.flattenVertex(w,m,g));c=Me.triangulateShape(d,[])}else c=[[0,1,2]];for(const[u,f,m]of c)e.vertex.push(t.vertexPositions[n[u*3]]),e.vertex.push(t.vertexPositions[n[u*3+1]]),e.vertex.push(t.vertexPositions[n[u*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(o[u*4]),e.vertexWeights.push(o[u*4+1]),e.vertexWeights.push(o[u*4+2]),e.vertexWeights.push(o[u*4+3]),e.vertexWeights.push(o[f*4]),e.vertexWeights.push(o[f*4+1]),e.vertexWeights.push(o[f*4+2]),e.vertexWeights.push(o[f*4+3]),e.vertexWeights.push(o[m*4]),e.vertexWeights.push(o[m*4+1]),e.vertexWeights.push(o[m*4+2]),e.vertexWeights.push(o[m*4+3]),e.weightsIndices.push(l[u*4]),e.weightsIndices.push(l[u*4+1]),e.weightsIndices.push(l[u*4+2]),e.weightsIndices.push(l[u*4+3]),e.weightsIndices.push(l[f*4]),e.weightsIndices.push(l[f*4+1]),e.weightsIndices.push(l[f*4+2]),e.weightsIndices.push(l[f*4+3]),e.weightsIndices.push(l[m*4]),e.weightsIndices.push(l[m*4+1]),e.weightsIndices.push(l[m*4+2]),e.weightsIndices.push(l[m*4+3])),t.color&&(e.colors.push(i[u*3]),e.colors.push(i[u*3+1]),e.colors.push(i[u*3+2]),e.colors.push(i[f*3]),e.colors.push(i[f*3+1]),e.colors.push(i[f*3+2]),e.colors.push(i[m*3]),e.colors.push(i[m*3+1]),e.colors.push(i[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(s[u*3]),e.normal.push(s[u*3+1]),e.normal.push(s[u*3+2]),e.normal.push(s[f*3]),e.normal.push(s[f*3+1]),e.normal.push(s[f*3+2]),e.normal.push(s[m*3]),e.normal.push(s[m*3+1]),e.normal.push(s[m*3+2])),t.uv&&t.uv.forEach(function(g,d){e.uvs[d]===void 0&&(e.uvs[d]=[]),e.uvs[d].push(a[d][u*2]),e.uvs[d].push(a[d][u*2+1]),e.uvs[d].push(a[d][f*2]),e.uvs[d].push(a[d][f*2+1]),e.uvs[d].push(a[d][m*2]),e.uvs[d].push(a[d][m*2+1])})}addMorphTargets(e,t,n,r){if(n.length===0)return;e.morphTargetsRelative=!0,e.morphAttributes.position=[];const s=this;n.forEach(function(i){i.rawTargets.forEach(function(a){const o=y.Objects.Geometry[a.geoID];o!==void 0&&s.genMorphGeometry(e,t,o,r,a.name)})})}genMorphGeometry(e,t,n,r,s){const i=t.Vertices!==void 0?t.Vertices.a:[],a=t.PolygonVertexIndex!==void 0?t.PolygonVertexIndex.a:[],o=n.Vertices!==void 0?n.Vertices.a:[],l=n.Indexes!==void 0?n.Indexes.a:[],p=e.attributes.position.count*3,c=new Float32Array(p);for(let g=0;g<l.length;g++){const d=l[g]*3;c[d]=o[g*3],c[d+1]=o[g*3+1],c[d+2]=o[g*3+2]}const u={vertexIndices:a,vertexPositions:c,baseVertexPositions:i},f=this.genBuffers(u),m=new V(f.vertex,3);m.name=s||n.attrName,m.applyMatrix4(r),e.morphAttributes.position.push(m)}parseNormals(e){const t=e.MappingInformationType,n=e.ReferenceInformationType,r=e.Normals.a;let s=[];return n==="IndexToDirect"&&("NormalIndex"in e?s=e.NormalIndex.a:"NormalsIndex"in e&&(s=e.NormalsIndex.a)),{dataSize:3,buffer:r,indices:s,mappingType:t,referenceType:n}}parseUVs(e){const t=e.MappingInformationType,n=e.ReferenceInformationType,r=e.UV.a;let s=[];return n==="IndexToDirect"&&(s=e.UVIndex.a),{dataSize:2,buffer:r,indices:s,mappingType:t,referenceType:n}}parseVertexColors(e){const t=e.MappingInformationType,n=e.ReferenceInformationType,r=e.Colors.a;let s=[];n==="IndexToDirect"&&(s=e.ColorIndex.a);for(let i=0,a=new b;i<r.length;i+=4)a.fromArray(r,i),B.colorSpaceToWorking(a,D),a.toArray(r,i);return{dataSize:4,buffer:r,indices:s,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,s=[];for(let i=0;i<r.length;++i)s.push(i);return{dataSize:1,buffer:r,indices:s,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 Q;const n=t-1,r=e.KnotVector.a,s=[],i=e.Points.a;for(let c=0,u=i.length;c<u;c+=4)s.push(new G().fromArray(i,c));let a,o;if(e.Form==="Closed")s.push(s[0]);else if(e.Form==="Periodic"){a=n,o=r.length-1-a;for(let c=0;c<n;++c)s.push(s[c])}const p=new je(n,r,s,a,o).getPoints(s.length*12);return new Q().setFromPoints(p)}}class He{parse(){const e=[],t=this.parseClips();if(t!==void 0)for(const n in t){const r=t[n],s=this.addClip(r);e.push(s)}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 s={id:r.id,attr:r.attrName,curves:{}};t.set(s.id,s)}}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(qe),values:t[n].KeyValueFloat.a},s=F.get(r.id);if(s!==void 0){const i=s.parents[0].ID,a=s.parents[0].relationship;a.match(/X/)?e.get(i).curves.x=r:a.match(/Y/)?e.get(i).curves.y=r:a.match(/Z/)?e.get(i).curves.z=r:a.match(/DeformPercent/)&&e.has(i)&&(e.get(i).curves.morph=r)}}}parseAnimationLayers(e){const t=y.Objects.AnimationLayer,n=new Map;for(const r in t){const s=[],i=F.get(parseInt(r));i!==void 0&&(i.children.forEach(function(o,l){if(e.has(o.ID)){const p=e.get(o.ID);if(p.curves.x!==void 0||p.curves.y!==void 0||p.curves.z!==void 0){if(s[l]===void 0){const c=F.get(o.ID).parents.filter(function(u){return u.relationship!==void 0})[0].ID;if(c!==void 0){const u=y.Objects.Model[c.toString()];if(u===void 0){console.warn("THREE.FBXLoader: Encountered a unused curve.",o);return}const f={modelName:u.attrName?W.sanitizeNodeName(u.attrName):"",ID:u.id,initialPosition:[0,0,0],initialRotation:[0,0,0],initialScale:[1,1,1]};A.traverse(function(m){m.ID===u.id&&(f.transform=m.matrix,m.userData.transformData&&(f.eulerOrder=m.userData.transformData.eulerOrder))}),f.transform||(f.transform=new I),"PreRotation"in u&&(f.preRotation=u.PreRotation.value),"PostRotation"in u&&(f.postRotation=u.PostRotation.value),s[l]=f}}s[l]&&(s[l][p.attr]=p)}else if(p.curves.morph!==void 0){if(s[l]===void 0){const c=F.get(o.ID).parents.filter(function(w){return w.relationship!==void 0})[0].ID,u=F.get(c).parents[0].ID,f=F.get(u).parents[0].ID,m=F.get(f).parents[0].ID,g=y.Objects.Model[m],d={modelName:g.attrName?W.sanitizeNodeName(g.attrName):"",morphName:y.Objects.Deformer[c].attrName};s[l]=d}s[l][p.attr]=p}}}),n.set(parseInt(r),s))}return n}parseAnimStacks(e){const t=y.Objects.AnimationStack,n={};for(const r in t){const s=F.get(parseInt(r)).children;s.length>1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");const i=e.get(s[0].ID);n[r]={name:t[r].attrName,layer:i}}return n}addClip(e){let t=[];const n=this;return e.layer.forEach(function(r){t=t.concat(n.generateTracks(r))}),new Ce(e.name,-1,t)}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 s=this.generateVectorTrack(e.modelName,e.T.curves,n,"position");s!==void 0&&t.push(s)}if(e.R!==void 0&&Object.keys(e.R.curves).length>0){const s=this.generateRotationTrack(e.modelName,e.R.curves,e.preRotation,e.postRotation,e.eulerOrder);s!==void 0&&t.push(s)}if(e.S!==void 0&&Object.keys(e.S.curves).length>0){const s=this.generateVectorTrack(e.modelName,e.S.curves,r,"scale");s!==void 0&&t.push(s)}if(e.DeformPercent!==void 0){const s=this.generateMorphTrack(e);s!==void 0&&t.push(s)}return t}generateVectorTrack(e,t,n,r){const s=this.getTimesForAllAxes(t),i=this.getKeyframeTrackValues(s,t,n);return new ke(e+"."+r,s,i)}generateRotationTrack(e,t,n,r,s){let i,a;if(t.x!==void 0&&t.y!==void 0&&t.z!==void 0){const u=this.interpolateRotations(t.x,t.y,t.z,s);i=u[0],a=u[1]}const o=z(0);n!==void 0&&(n=n.map(S.degToRad),n.push(o),n=new O().fromArray(n),n=new R().setFromEuler(n)),r!==void 0&&(r=r.map(S.degToRad),r.push(o),r=new O().fromArray(r),r=new R().setFromEuler(r).invert());const l=new R,p=new O,c=[];if(!a||!i)return new re(e+".quaternion",[0],[0]);for(let u=0;u<a.length;u+=3)p.set(a[u],a[u+1],a[u+2],s),l.setFromEuler(p),n!==void 0&&l.premultiply(n),r!==void 0&&l.multiply(r),u>2&&new R().fromArray(c,(u-3)/3*4).dot(l)<0&&l.set(-l.x,-l.y,-l.z,-l.w),l.toArray(c,u/3*4);return new re(e+".quaternion",i,c)}generateMorphTrack(e){const t=e.DeformPercent.curves.morph,n=t.values.map(function(s){return s/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 s=1;s<t.length;s++){const i=t[s];i!==r&&(t[n]=i,r=i,n++)}t=t.slice(0,n)}return t}getKeyframeTrackValues(e,t,n){const r=n,s=[];let i=-1,a=-1,o=-1;return e.forEach(function(l){if(t.x&&(i=t.x.times.indexOf(l)),t.y&&(a=t.y.times.indexOf(l)),t.z&&(o=t.z.times.indexOf(l)),i!==-1){const p=t.x.values[i];s.push(p),r[0]=p}else s.push(r[0]);if(a!==-1){const p=t.y.values[a];s.push(p),r[1]=p}else s.push(r[1]);if(o!==-1){const p=t.z.values[o];s.push(p),r[2]=p}else s.push(r[2])}),s}interpolateRotations(e,t,n,r){const s=[],i=[];s.push(e.times[0]),i.push(S.degToRad(e.values[0])),i.push(S.degToRad(t.values[0])),i.push(S.degToRad(n.values[0]));for(let a=1;a<e.values.length;a++){const o=[e.values[a-1],t.values[a-1],n.values[a-1]];if(isNaN(o[0])||isNaN(o[1])||isNaN(o[2]))continue;const l=o.map(S.degToRad),p=[e.values[a],t.values[a],n.values[a]];if(isNaN(p[0])||isNaN(p[1])||isNaN(p[2]))continue;const c=p.map(S.degToRad),u=[p[0]-o[0],p[1]-o[1],p[2]-o[2]],f=[Math.abs(u[0]),Math.abs(u[1]),Math.abs(u[2])];if(f[0]>=180||f[1]>=180||f[2]>=180){const g=Math.max(...f)/180,d=new O(...l,r),w=new O(...c,r),T=new R().setFromEuler(d),v=new R().setFromEuler(w);T.dot(v)&&v.set(-v.x,-v.y,-v.z,-v.w);const x=e.times[a-1],E=e.times[a]-x,P=new R,k=new O;for(let L=0;L<1;L+=1/g)P.copy(T.clone().slerp(v.clone(),L)),s.push(x+L*E),k.setFromQuaternion(P,r),i.push(k.x),i.push(k.y),i.push(k.z)}else s.push(e.times[a]),i.push(S.degToRad(e.values[a])),i.push(S.degToRad(t.values[a])),i.push(S.degToRad(n.values[a]))}return[s,i]}}class We{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 oe,this.nodeStack=[],this.currentProp=[],this.currentPropName="";const t=this,n=e.split(/[\r\n]+/);return n.forEach(function(r,s){const i=r.match(/^[\s\t]*;/),a=r.match(/^[\s\t]*$/);if(i||a)return;const o=r.match("^\\t{"+t.currentIndent+"}(\\w+):(.*){",""),l=r.match("^\\t{"+t.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),p=r.match("^\\t{"+(t.currentIndent-1)+"}}");o?t.parseNodeBegin(r,o):l?t.parseNodeProperty(r,l,n[++s]):p?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(o){return o.trim().replace(/^"/,"").replace(/"$/,"")}),s={name:n},i=this.parseNodeAttr(r),a=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(n,s):n in a?(n==="PoseNode"?a.PoseNode.push(s):a[n].id!==void 0&&(a[n]={},a[n][a[n].id]=a[n]),i.id!==""&&(a[n][i.id]=s)):typeof i.id=="number"?(a[n]={},a[n][i.id]=s):n!=="Properties70"&&(n==="PoseNode"?a[n]=[s]:a[n]=s),typeof i.id=="number"&&(s.id=i.id),i.name!==""&&(s.attrName=i.name),i.type!==""&&(s.attrType=i.type),this.pushStack(s)}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(),s=t[2].replace(/^"/,"").replace(/"$/,"").trim();r==="Content"&&s===","&&(s=n.replace(/"/g,"").replace(/,$/,"").trim());const i=this.getCurrentNode();if(i.name==="Properties70"){this.parseNodeSpecialProperty(e,r,s);return}if(r==="C"){const o=s.split(",").slice(1),l=parseInt(o[0]),p=parseInt(o[1]);let c=s.split(",").slice(3);c=c.map(function(u){return u.trim().replace(/^"/,"")}),r="connections",s=[l,p],$e(s,c),i[r]===void 0&&(i[r]=[])}r==="Node"&&(i.id=s),r in i&&Array.isArray(i[r])?i[r].push(s):r!=="a"?i[r]=s:i.a=s,this.setCurrentProp(i,r),r==="a"&&s.slice(-1)!==","&&(i.a=q(s))}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(p){return p.trim().replace(/^\"/,"").replace(/\s/,"_")}),s=r[0],i=r[1],a=r[2],o=r[3];let l=r[4];switch(i){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":l=parseFloat(l);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":l=q(l);break}this.getPrevNode()[s]={type:i,type2:a,flag:o,value:l},this.setCurrentProp(this.getPrevNode(),s)}}class Ne{parse(e){const t=new se(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 oe;for(;!this.endOfContent(t);){const s=this.parseNode(t,n);s!==null&&r.add(s.name,s)}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(),s=t>=7500?e.getUint64():e.getUint32();t>=7500?e.getUint64():e.getUint32();const i=e.getUint8(),a=e.getString(i);if(r===0)return null;const o=[];for(let u=0;u<s;u++)o.push(this.parseProperty(e));const l=o.length>0?o[0]:"",p=o.length>1?o[1]:"",c=o.length>2?o[2]:"";for(n.singleProperty=s===1&&e.getOffset()===r;r>e.getOffset();){const u=this.parseNode(e,t);u!==null&&this.parseSubNode(a,n,u)}return n.propertyList=o,typeof l=="number"&&(n.id=l),p!==""&&(n.attrName=p),c!==""&&(n.attrType=c),a!==""&&(n.name=a),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(s,i){i!==0&&r.push(s)}),t.connections===void 0&&(t.connections=[]),t.connections.push(r)}else if(n.name==="Properties70")Object.keys(n).forEach(function(s){t[s]=n[s]});else if(e==="Properties70"&&n.name==="P"){let r=n.propertyList[0],s=n.propertyList[1];const i=n.propertyList[2],a=n.propertyList[3];let o;r.indexOf("Lcl ")===0&&(r=r.replace("Lcl ","Lcl_")),s.indexOf("Lcl ")===0&&(s=s.replace("Lcl ","Lcl_")),s==="Color"||s==="ColorRGB"||s==="Vector"||s==="Vector3D"||s.indexOf("Lcl_")===0?o=[n.propertyList[4],n.propertyList[5],n.propertyList[6]]:o=n.propertyList[4],t[r]={type:s,type2:i,flag:a,value:o}}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(),s=e.getUint32(),i=e.getUint32();if(s===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 a=Re(new Uint8Array(e.getArrayBuffer(i))),o=new se(a.buffer);switch(t){case"b":case"c":return o.getBooleanArray(r);case"d":return o.getFloat64Array(r);case"f":return o.getFloat32Array(r);case"i":return o.getInt32Array(r);case"l":return o.getInt64Array(r)}break;default:throw new Error("THREE.FBXLoader: Unknown property type "+t)}}}class se{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 oe{add(e,t){this[e]=t}}function Qe(h){const e="Kaydara FBX Binary \0";return h.byteLength>=e.length&&e===ce(h,0,e.length)}function Ye(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 s=h[r-1];return h=h.slice(t+r),t++,s}for(let r=0;r<e.length;++r)if(n(1)===e[r])return!1;return!0}function ie(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 qe(h){return h/46186158e3}const Ze=[];function H(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 s=r*n.dataSize,i=s+n.dataSize;return Je(Ze,n.buffer,s,i)}const Y=new O,U=new M;function le(h){const e=new I,t=new I,n=new I,r=new I,s=new I,i=new I,a=new I,o=new I,l=new I,p=new I,c=new I,u=new I,f=h.inheritType?h.inheritType:0;h.translation&&e.setPosition(U.fromArray(h.translation));const m=z(0);if(h.preRotation){const C=h.preRotation.map(S.degToRad);C.push(m),t.makeRotationFromEuler(Y.fromArray(C))}if(h.rotation){const C=h.rotation.map(S.degToRad);C.push(h.eulerOrder||m),n.makeRotationFromEuler(Y.fromArray(C))}if(h.postRotation){const C=h.postRotation.map(S.degToRad);C.push(m),r.makeRotationFromEuler(Y.fromArray(C)),r.invert()}h.scale&&s.scale(U.fromArray(h.scale)),h.scalingOffset&&a.setPosition(U.fromArray(h.scalingOffset)),h.scalingPivot&&i.setPosition(U.fromArray(h.scalingPivot)),h.rotationOffset&&o.setPosition(U.fromArray(h.rotationOffset)),h.rotationPivot&&l.setPosition(U.fromArray(h.rotationPivot)),h.parentMatrixWorld&&(c.copy(h.parentMatrix),p.copy(h.parentMatrixWorld));const g=t.clone().multiply(n).multiply(r),d=new I;d.extractRotation(p);const w=new I;w.copyPosition(p);const T=w.clone().invert().multiply(p),v=d.clone().invert().multiply(T),x=s,E=new I;if(f===0)E.copy(d).multiply(g).multiply(v).multiply(x);else if(f===1)E.copy(d).multiply(v).multiply(g).multiply(x);else{const N=new I().scale(new M().setFromMatrixScale(c)).clone().invert(),pe=v.clone().multiply(N);E.copy(d).multiply(g).multiply(pe).multiply(x)}const P=l.clone().invert(),k=i.clone().invert();let L=e.clone().multiply(o).multiply(l).multiply(t).multiply(n).multiply(r).multiply(P).multiply(a).multiply(i).multiply(s).multiply(k);const j=new I().copyPosition(L),X=p.clone().multiply(j);return u.copyPosition(X),L=u.clone().multiply(E),L.premultiply(p.invert()),L}function z(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,s=0;r<n;r++,s++)h[s]=e[r];return h}export{nt as FBXLoader};
@@ -0,0 +1 @@
1
+ import{j as t}from"./volter-sdk-BwU3fa6G.js";import{Object3DSnapshotDocument as p}from"./EntityModelDocument-KYkNDaSy.js";import"./three-integration.service-Bfy6rPSh.js";import"./content-bounds-Dg9hT5Gp.js";import"./three.module-dk_BdrjN.js";import"./asset-preview-jtcCFntF.js";import"./object3d-document-session-registry-_NnPOZmk.js";import"./live-mixers-B-bwLZ7c.js";import"./StageHost-qZAn6HZ3.js";import"./clip-planes-CmZu3QTO.js";import"./model-inspection-jRplyguX.js";import"./standard-viewport-dressing-zXbS_1ew.js";import"./OrbitControls-Cn2q_IQK.js";import"./LineSegments2-D1_2s-N-.js";function b({previewKey:o,object:r,displayName:e,fill:i=!1}){return t.jsx("div",{"data-testid":"inspector-object-preview",style:i?{position:"absolute",inset:0,overflow:"hidden"}:{width:"100%",height:220,minHeight:220,borderBottom:"1px solid var(--volter-structural-divider)",overflow:"hidden",position:"relative"},children:t.jsx(p,{documentId:`inspector-preview:${o}`,source:r,displayName:e,active:!0,chromeless:!0})})}export{b as InspectorObjectPreview};
@@ -0,0 +1,370 @@
1
+ import{a4 as J,aS as M,U as V,m as Y,aT as B,aU as $,o as I,aV as O,aW as _,aX as K,a1 as C,k as G,V as y,n as Q,ag as E,aY as Z,M as ee,aa as te}from"./three.module-dk_BdrjN.js";B.line={worldUnits:{value:1},linewidth:{value:1},resolution:{value:new Y(1,1)},dashOffset:{value:0},dashScale:{value:1},dashSize:{value:1},gapSize:{value:1}};M.line={uniforms:V.merge([B.common,B.fog,B.line]),vertexShader:`
2
+ #include <common>
3
+ #include <color_pars_vertex>
4
+ #include <fog_pars_vertex>
5
+ #include <logdepthbuf_pars_vertex>
6
+ #include <clipping_planes_pars_vertex>
7
+
8
+ uniform float linewidth;
9
+ uniform vec2 resolution;
10
+
11
+ attribute vec3 instanceStart;
12
+ attribute vec3 instanceEnd;
13
+
14
+ attribute vec3 instanceColorStart;
15
+ attribute vec3 instanceColorEnd;
16
+
17
+ #ifdef WORLD_UNITS
18
+
19
+ varying vec4 worldPos;
20
+ varying vec3 worldStart;
21
+ varying vec3 worldEnd;
22
+
23
+ #ifdef USE_DASH
24
+
25
+ varying vec2 vUv;
26
+
27
+ #endif
28
+
29
+ #else
30
+
31
+ varying vec2 vUv;
32
+
33
+ #endif
34
+
35
+ #ifdef USE_DASH
36
+
37
+ uniform float dashScale;
38
+ attribute float instanceDistanceStart;
39
+ attribute float instanceDistanceEnd;
40
+ varying float vLineDistance;
41
+
42
+ #endif
43
+
44
+ void trimSegment( const in vec4 start, inout vec4 end ) {
45
+
46
+ // trim end segment so it terminates between the camera plane and the near plane
47
+
48
+ // conservative estimate of the near plane
49
+ float a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column
50
+ float b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column
51
+ float nearEstimate = - 0.5 * b / a;
52
+
53
+ float alpha = ( nearEstimate - start.z ) / ( end.z - start.z );
54
+
55
+ end.xyz = mix( start.xyz, end.xyz, alpha );
56
+
57
+ }
58
+
59
+ void main() {
60
+
61
+ #ifdef USE_COLOR
62
+
63
+ vColor.xyz = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd;
64
+
65
+ #endif
66
+
67
+ #ifdef USE_DASH
68
+
69
+ vLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd;
70
+ vUv = uv;
71
+
72
+ #endif
73
+
74
+ float aspect = resolution.x / resolution.y;
75
+
76
+ // camera space
77
+ vec4 start = modelViewMatrix * vec4( instanceStart, 1.0 );
78
+ vec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 );
79
+
80
+ #ifdef WORLD_UNITS
81
+
82
+ worldStart = start.xyz;
83
+ worldEnd = end.xyz;
84
+
85
+ #else
86
+
87
+ vUv = uv;
88
+
89
+ #endif
90
+
91
+ // special case for perspective projection, and segments that terminate either in, or behind, the camera plane
92
+ // clearly the gpu firmware has a way of addressing this issue when projecting into ndc space
93
+ // but we need to perform ndc-space calculations in the shader, so we must address this issue directly
94
+ // perhaps there is a more elegant solution -- WestLangley
95
+
96
+ bool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column
97
+
98
+ if ( perspective ) {
99
+
100
+ if ( start.z < 0.0 && end.z >= 0.0 ) {
101
+
102
+ trimSegment( start, end );
103
+
104
+ } else if ( end.z < 0.0 && start.z >= 0.0 ) {
105
+
106
+ trimSegment( end, start );
107
+
108
+ }
109
+
110
+ }
111
+
112
+ // clip space
113
+ vec4 clipStart = projectionMatrix * start;
114
+ vec4 clipEnd = projectionMatrix * end;
115
+
116
+ // ndc space
117
+ vec3 ndcStart = clipStart.xyz / clipStart.w;
118
+ vec3 ndcEnd = clipEnd.xyz / clipEnd.w;
119
+
120
+ // direction
121
+ vec2 dir = ndcEnd.xy - ndcStart.xy;
122
+
123
+ // account for clip-space aspect ratio
124
+ dir.x *= aspect;
125
+ dir = normalize( dir );
126
+
127
+ #ifdef WORLD_UNITS
128
+
129
+ vec3 worldDir = normalize( end.xyz - start.xyz );
130
+ vec3 tmpFwd = normalize( mix( start.xyz, end.xyz, 0.5 ) );
131
+ vec3 worldUp = normalize( cross( worldDir, tmpFwd ) );
132
+ vec3 worldFwd = cross( worldDir, worldUp );
133
+ worldPos = position.y < 0.5 ? start: end;
134
+
135
+ // height offset
136
+ float hw = linewidth * 0.5;
137
+ worldPos.xyz += position.x < 0.0 ? hw * worldUp : - hw * worldUp;
138
+
139
+ // don't extend the line if we're rendering dashes because we
140
+ // won't be rendering the endcaps
141
+ #ifndef USE_DASH
142
+
143
+ // cap extension
144
+ worldPos.xyz += position.y < 0.5 ? - hw * worldDir : hw * worldDir;
145
+
146
+ // add width to the box
147
+ worldPos.xyz += worldFwd * hw;
148
+
149
+ // endcaps
150
+ if ( position.y > 1.0 || position.y < 0.0 ) {
151
+
152
+ worldPos.xyz -= worldFwd * 2.0 * hw;
153
+
154
+ }
155
+
156
+ #endif
157
+
158
+ // project the worldpos
159
+ vec4 clip = projectionMatrix * worldPos;
160
+
161
+ // shift the depth of the projected points so the line
162
+ // segments overlap neatly
163
+ vec3 clipPose = ( position.y < 0.5 ) ? ndcStart : ndcEnd;
164
+ clip.z = clipPose.z * clip.w;
165
+
166
+ #else
167
+
168
+ vec2 offset = vec2( dir.y, - dir.x );
169
+ // undo aspect ratio adjustment
170
+ dir.x /= aspect;
171
+ offset.x /= aspect;
172
+
173
+ // sign flip
174
+ if ( position.x < 0.0 ) offset *= - 1.0;
175
+
176
+ // endcaps
177
+ if ( position.y < 0.0 ) {
178
+
179
+ offset += - dir;
180
+
181
+ } else if ( position.y > 1.0 ) {
182
+
183
+ offset += dir;
184
+
185
+ }
186
+
187
+ // adjust for linewidth
188
+ offset *= linewidth;
189
+
190
+ // adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ...
191
+ offset /= resolution.y;
192
+
193
+ // select end
194
+ vec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd;
195
+
196
+ // back to clip space
197
+ offset *= clip.w;
198
+
199
+ clip.xy += offset;
200
+
201
+ #endif
202
+
203
+ gl_Position = clip;
204
+
205
+ vec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation
206
+
207
+ #include <logdepthbuf_vertex>
208
+ #include <clipping_planes_vertex>
209
+ #include <fog_vertex>
210
+
211
+ }
212
+ `,fragmentShader:`
213
+ uniform vec3 diffuse;
214
+ uniform float opacity;
215
+ uniform float linewidth;
216
+
217
+ #ifdef USE_DASH
218
+
219
+ uniform float dashOffset;
220
+ uniform float dashSize;
221
+ uniform float gapSize;
222
+
223
+ #endif
224
+
225
+ varying float vLineDistance;
226
+
227
+ #ifdef WORLD_UNITS
228
+
229
+ varying vec4 worldPos;
230
+ varying vec3 worldStart;
231
+ varying vec3 worldEnd;
232
+
233
+ #ifdef USE_DASH
234
+
235
+ varying vec2 vUv;
236
+
237
+ #endif
238
+
239
+ #else
240
+
241
+ varying vec2 vUv;
242
+
243
+ #endif
244
+
245
+ #include <common>
246
+ #include <color_pars_fragment>
247
+ #include <fog_pars_fragment>
248
+ #include <logdepthbuf_pars_fragment>
249
+ #include <clipping_planes_pars_fragment>
250
+
251
+ vec2 closestLineToLine(vec3 p1, vec3 p2, vec3 p3, vec3 p4) {
252
+
253
+ float mua;
254
+ float mub;
255
+
256
+ vec3 p13 = p1 - p3;
257
+ vec3 p43 = p4 - p3;
258
+
259
+ vec3 p21 = p2 - p1;
260
+
261
+ float d1343 = dot( p13, p43 );
262
+ float d4321 = dot( p43, p21 );
263
+ float d1321 = dot( p13, p21 );
264
+ float d4343 = dot( p43, p43 );
265
+ float d2121 = dot( p21, p21 );
266
+
267
+ float denom = d2121 * d4343 - d4321 * d4321;
268
+
269
+ float numer = d1343 * d4321 - d1321 * d4343;
270
+
271
+ mua = numer / denom;
272
+ mua = clamp( mua, 0.0, 1.0 );
273
+ mub = ( d1343 + d4321 * ( mua ) ) / d4343;
274
+ mub = clamp( mub, 0.0, 1.0 );
275
+
276
+ return vec2( mua, mub );
277
+
278
+ }
279
+
280
+ void main() {
281
+
282
+ float alpha = opacity;
283
+ vec4 diffuseColor = vec4( diffuse, alpha );
284
+
285
+ #include <clipping_planes_fragment>
286
+
287
+ #ifdef USE_DASH
288
+
289
+ if ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps
290
+
291
+ if ( mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize ) discard; // todo - FIX
292
+
293
+ #endif
294
+
295
+ #ifdef WORLD_UNITS
296
+
297
+ // Find the closest points on the view ray and the line segment
298
+ vec3 rayEnd = normalize( worldPos.xyz ) * 1e5;
299
+ vec3 lineDir = worldEnd - worldStart;
300
+ vec2 params = closestLineToLine( worldStart, worldEnd, vec3( 0.0, 0.0, 0.0 ), rayEnd );
301
+
302
+ vec3 p1 = worldStart + lineDir * params.x;
303
+ vec3 p2 = rayEnd * params.y;
304
+ vec3 delta = p1 - p2;
305
+ float len = length( delta );
306
+ float norm = len / linewidth;
307
+
308
+ #ifndef USE_DASH
309
+
310
+ #ifdef USE_ALPHA_TO_COVERAGE
311
+
312
+ float dnorm = fwidth( norm );
313
+ alpha = 1.0 - smoothstep( 0.5 - dnorm, 0.5 + dnorm, norm );
314
+
315
+ #else
316
+
317
+ if ( norm > 0.5 ) {
318
+
319
+ discard;
320
+
321
+ }
322
+
323
+ #endif
324
+
325
+ #endif
326
+
327
+ #else
328
+
329
+ #ifdef USE_ALPHA_TO_COVERAGE
330
+
331
+ // artifacts appear on some hardware if a derivative is taken within a conditional
332
+ float a = vUv.x;
333
+ float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0;
334
+ float len2 = a * a + b * b;
335
+ float dlen = fwidth( len2 );
336
+
337
+ if ( abs( vUv.y ) > 1.0 ) {
338
+
339
+ alpha = 1.0 - smoothstep( 1.0 - dlen, 1.0 + dlen, len2 );
340
+
341
+ }
342
+
343
+ #else
344
+
345
+ if ( abs( vUv.y ) > 1.0 ) {
346
+
347
+ float a = vUv.x;
348
+ float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0;
349
+ float len2 = a * a + b * b;
350
+
351
+ if ( len2 > 1.0 ) discard;
352
+
353
+ }
354
+
355
+ #endif
356
+
357
+ #endif
358
+
359
+ #include <logdepthbuf_fragment>
360
+ #include <color_fragment>
361
+
362
+ gl_FragColor = vec4( diffuseColor.rgb, alpha );
363
+
364
+ #include <tonemapping_fragment>
365
+ #include <colorspace_fragment>
366
+ #include <fog_fragment>
367
+ #include <premultiplied_alpha_fragment>
368
+
369
+ }
370
+ `};class ie extends J{constructor(e){super({type:"LineMaterial",uniforms:V.clone(M.line.uniforms),vertexShader:M.line.vertexShader,fragmentShader:M.line.fragmentShader,clipping:!0}),this.isLineMaterial=!0,this.setValues(e)}get color(){return this.uniforms.diffuse.value}set color(e){this.uniforms.diffuse.value=e}get worldUnits(){return"WORLD_UNITS"in this.defines}set worldUnits(e){e===!0?this.defines.WORLD_UNITS="":delete this.defines.WORLD_UNITS}get linewidth(){return this.uniforms.linewidth.value}set linewidth(e){this.uniforms.linewidth&&(this.uniforms.linewidth.value=e)}get dashed(){return"USE_DASH"in this.defines}set dashed(e){e===!0!==this.dashed&&(this.needsUpdate=!0),e===!0?this.defines.USE_DASH="":delete this.defines.USE_DASH}get dashScale(){return this.uniforms.dashScale.value}set dashScale(e){this.uniforms.dashScale.value=e}get dashSize(){return this.uniforms.dashSize.value}set dashSize(e){this.uniforms.dashSize.value=e}get dashOffset(){return this.uniforms.dashOffset.value}set dashOffset(e){this.uniforms.dashOffset.value=e}get gapSize(){return this.uniforms.gapSize.value}set gapSize(e){this.uniforms.gapSize.value=e}get opacity(){return this.uniforms.opacity.value}set opacity(e){this.uniforms&&(this.uniforms.opacity.value=e)}get resolution(){return this.uniforms.resolution.value}set resolution(e){this.uniforms.resolution.value.copy(e)}get alphaToCoverage(){return"USE_ALPHA_TO_COVERAGE"in this.defines}set alphaToCoverage(e){this.defines&&(e===!0!==this.alphaToCoverage&&(this.needsUpdate=!0),e===!0?this.defines.USE_ALPHA_TO_COVERAGE="":delete this.defines.USE_ALPHA_TO_COVERAGE)}}const j=new C,z=new y;class ne extends ${constructor(){super(),this.isLineSegmentsGeometry=!0,this.type="LineSegmentsGeometry";const e=[-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],t=[-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],i=[0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5];this.setIndex(i),this.setAttribute("position",new I(e,3)),this.setAttribute("uv",new I(t,2))}applyMatrix4(e){const t=this.attributes.instanceStart,i=this.attributes.instanceEnd;return t!==void 0&&(t.applyMatrix4(e),i.applyMatrix4(e),t.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}setPositions(e){let t;e instanceof Float32Array?t=e:Array.isArray(e)&&(t=new Float32Array(e));const i=new O(t,6,1);return this.setAttribute("instanceStart",new _(i,3,0)),this.setAttribute("instanceEnd",new _(i,3,3)),this.instanceCount=this.attributes.instanceStart.count,this.computeBoundingBox(),this.computeBoundingSphere(),this}setColors(e){let t;e instanceof Float32Array?t=e:Array.isArray(e)&&(t=new Float32Array(e));const i=new O(t,6,1);return this.setAttribute("instanceColorStart",new _(i,3,0)),this.setAttribute("instanceColorEnd",new _(i,3,3)),this}fromWireframeGeometry(e){return this.setPositions(e.attributes.position.array),this}fromEdgesGeometry(e){return this.setPositions(e.attributes.position.array),this}fromMesh(e){return this.fromWireframeGeometry(new K(e.geometry)),this}fromLineSegments(e){const t=e.geometry;return this.setPositions(t.attributes.position.array),this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new C);const e=this.attributes.instanceStart,t=this.attributes.instanceEnd;e!==void 0&&t!==void 0&&(this.boundingBox.setFromBufferAttribute(e),j.setFromBufferAttribute(t),this.boundingBox.union(j))}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new G),this.boundingBox===null&&this.computeBoundingBox();const e=this.attributes.instanceStart,t=this.attributes.instanceEnd;if(e!==void 0&&t!==void 0){const i=this.boundingSphere.center;this.boundingBox.getCenter(i);let s=0;for(let a=0,l=e.count;a<l;a++)z.fromBufferAttribute(e,a),s=Math.max(s,i.distanceToSquared(z)),z.fromBufferAttribute(t,a),s=Math.max(s,i.distanceToSquared(z));this.boundingSphere.radius=Math.sqrt(s),isNaN(this.boundingSphere.radius)&&console.error("THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.",this)}}toJSON(){}}const L=new E,H=new y,R=new y,r=new E,o=new E,m=new E,D=new y,T=new ee,d=new Z,N=new y,U=new C,A=new G,v=new E;let g,x;function F(c,e,t){return v.set(0,0,-e,1).applyMatrix4(c.projectionMatrix),v.multiplyScalar(1/v.w),v.x=x/t.width,v.y=x/t.height,v.applyMatrix4(c.projectionMatrixInverse),v.multiplyScalar(1/v.w),Math.abs(Math.max(v.x,v.y))}function se(c,e){const t=c.matrixWorld,i=c.geometry,s=i.attributes.instanceStart,a=i.attributes.instanceEnd,l=Math.min(i.instanceCount,s.count);for(let n=0,f=l;n<f;n++){d.start.fromBufferAttribute(s,n),d.end.fromBufferAttribute(a,n),d.applyMatrix4(t);const p=new y,h=new y;g.distanceSqToSegment(d.start,d.end,h,p),h.distanceTo(p)<x*.5&&e.push({point:h,pointOnLine:p,distance:g.origin.distanceTo(h),object:c,face:null,faceIndex:n,uv:null,uv1:null})}}function ae(c,e,t){const i=e.projectionMatrix,a=c.material.resolution,l=c.matrixWorld,n=c.geometry,f=n.attributes.instanceStart,p=n.attributes.instanceEnd,h=Math.min(n.instanceCount,f.count),u=-e.near;g.at(1,m),m.w=1,m.applyMatrix4(e.matrixWorldInverse),m.applyMatrix4(i),m.multiplyScalar(1/m.w),m.x*=a.x/2,m.y*=a.y/2,m.z=0,D.copy(m),T.multiplyMatrices(e.matrixWorldInverse,l);for(let S=0,q=h;S<q;S++){if(r.fromBufferAttribute(f,S),o.fromBufferAttribute(p,S),r.w=1,o.w=1,r.applyMatrix4(T),o.applyMatrix4(T),r.z>u&&o.z>u)continue;if(r.z>u){const b=r.z-o.z,w=(r.z-u)/b;r.lerp(o,w)}else if(o.z>u){const b=o.z-r.z,w=(o.z-u)/b;o.lerp(r,w)}r.applyMatrix4(i),o.applyMatrix4(i),r.multiplyScalar(1/r.w),o.multiplyScalar(1/o.w),r.x*=a.x/2,r.y*=a.y/2,o.x*=a.x/2,o.y*=a.y/2,d.start.copy(r),d.start.z=0,d.end.copy(o),d.end.z=0;const P=d.closestPointToPointParameter(D,!0);d.at(P,N);const W=te.lerp(r.z,o.z,P),k=W>=-1&&W<=1,X=D.distanceTo(N)<x*.5;if(k&&X){d.start.fromBufferAttribute(f,S),d.end.fromBufferAttribute(p,S),d.start.applyMatrix4(l),d.end.applyMatrix4(l);const b=new y,w=new y;g.distanceSqToSegment(d.start,d.end,w,b),t.push({point:w,pointOnLine:b,distance:g.origin.distanceTo(w),object:c,face:null,faceIndex:S,uv:null,uv1:null})}}}class de extends Q{constructor(e=new ne,t=new ie({color:Math.random()*16777215})){super(e,t),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){const e=this.geometry,t=e.attributes.instanceStart,i=e.attributes.instanceEnd,s=new Float32Array(2*t.count);for(let l=0,n=0,f=t.count;l<f;l++,n+=2)H.fromBufferAttribute(t,l),R.fromBufferAttribute(i,l),s[n]=n===0?0:s[n-1],s[n+1]=s[n]+H.distanceTo(R);const a=new O(s,2,1);return e.setAttribute("instanceDistanceStart",new _(a,1,0)),e.setAttribute("instanceDistanceEnd",new _(a,1,1)),this}raycast(e,t){const i=this.material.worldUnits,s=e.camera;s===null&&!i&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');const a=e.params.Line2!==void 0&&e.params.Line2.threshold||0;g=e.ray;const l=this.matrixWorld,n=this.geometry,f=this.material;x=f.linewidth+a,n.boundingSphere===null&&n.computeBoundingSphere(),A.copy(n.boundingSphere).applyMatrix4(l);let p;if(i)p=x*.5;else{const u=Math.max(s.near,A.distanceToPoint(g.origin));p=F(s,u,f.resolution)}if(A.radius+=p,g.intersectsSphere(A)===!1)return;n.boundingBox===null&&n.computeBoundingBox(),U.copy(n.boundingBox).applyMatrix4(l);let h;if(i)h=x*.5;else{const u=Math.max(s.near,U.distanceToPoint(g.origin));h=F(s,u,f.resolution)}U.expandByScalar(h),g.intersectsBox(U)!==!1&&(i?se(this,t):ae(this,s,t))}onBeforeRender(e){const t=this.material.uniforms;t&&t.resolution&&(e.getViewport(L),this.material.uniforms.resolution.value.set(L.z,L.w))}}export{ne as L,ie as a,de as b};