@volter/game-editor 0.5.67 → 0.5.68

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 (357) hide show
  1. package/BUNDLED_NOTICES +20 -20
  2. package/catalog/entries/blender.json +1 -1
  3. package/catalog/entries/music.json +3 -3
  4. package/catalog/project-source/src/lib/music/music-player.ts +18 -12
  5. package/dist/.vite/manifest.json +2307 -2166
  6. package/dist/assets/{AssetBudgetPanel-x_FNJbfZ.js → AssetBudgetPanel-P2PeL_X5.js} +9 -9
  7. package/dist/assets/{AudioViewer-BDPqHDfU.js → AudioViewer-xFb5Wv7A.js} +1 -1
  8. package/dist/assets/CanvasBoardDocument-BFJdTVGp.js +1 -0
  9. package/dist/assets/CanvasSceneViewport-vqBlOz8P.js +1 -0
  10. package/dist/assets/{ColorInput-QUPS1pEB.js → ColorInput-CX1UZjYO.js} +1 -1
  11. package/dist/assets/{EntityModelDocument-CzUHsH9E.js → EntityModelDocument-Du8wIbyK.js} +1 -1
  12. package/dist/assets/{EnvironmentAssetDocument-ByEB7_4A.js → EnvironmentAssetDocument-_SttfMY_.js} +1 -1
  13. package/dist/assets/{GameplaySessionTimeline-dhG-oiqd.js → GameplaySessionTimeline-CWudWnfd.js} +1 -1
  14. package/dist/assets/{ImageViewer-tlVvkdM4.js → ImageViewer-shZzMd91.js} +1 -1
  15. package/dist/assets/InspectorObjectPreview-BMOvJaOw.js +1 -0
  16. package/dist/assets/{JsonAssetDocument-CPmcWFPW.js → JsonAssetDocument-D_HXneWE.js} +1 -1
  17. package/dist/assets/{LiveModuleDocument-DL8QHSlk.js → LiveModuleDocument-BWjOzO_6.js} +1 -1
  18. package/dist/assets/{LutAssetDocument-BImiug2M.js → LutAssetDocument-DIc6nsht.js} +1 -1
  19. package/dist/assets/ModelAssetDocument-_CqTsX_A.js +1 -0
  20. package/dist/assets/{NonThreeAuthoringBootstrap-B40qmGGS.js → NonThreeAuthoringBootstrap-C-V23E1e.js} +1 -1
  21. package/dist/assets/Object3DDocumentToolbar-BfPH9jz5.js +1 -0
  22. package/dist/assets/Object3DDocumentViewport-BaXWtATg.js +2 -0
  23. package/dist/assets/{Object3DPreview-ClYDoH2L.js → Object3DPreview-BPHEr3vI.js} +1 -1
  24. package/dist/assets/OnlineAssetDetail-BxibUH6K.js +1 -0
  25. package/dist/assets/PlayBar-DRANyO01.js +1 -0
  26. package/dist/assets/{QuarksAssetDocument-B-VOj-n4.js → QuarksAssetDocument-4Dne3EHx.js} +1 -1
  27. package/dist/assets/ReactCanvasControls-K98jOX9b.js +1 -0
  28. package/dist/assets/RootSelectionOverlay-BQC12Gdd.js +1 -0
  29. package/dist/assets/{ShaderAssetDocument-Kn8IvRGV.js → ShaderAssetDocument-W3ZjLCkt.js} +4 -4
  30. package/dist/assets/ShadowEditor-DP1LWynl.js +1 -0
  31. package/dist/assets/{SourceAssetViewer-CLQ95VSD.js → SourceAssetViewer-BGUeDAEv.js} +1 -1
  32. package/dist/assets/StageHost-V_0opXFt.js +2 -0
  33. package/dist/assets/{StoryPreviewMount-D2lg37et.js → StoryPreviewMount-Di8uMovM.js} +1 -1
  34. package/dist/assets/{ThreeBoardDocument-BAgHrbtu.js → ThreeBoardDocument-tgcaZDqQ.js} +2 -2
  35. package/dist/assets/{ThreeIsolationSceneContent-DbYIylZQ.js → ThreeIsolationSceneContent-BAKurKW5.js} +1 -1
  36. package/dist/assets/{ToolObject3DPreview-WEi6C9uU.js → ToolObject3DPreview-CffvGJ1h.js} +1 -1
  37. package/dist/assets/Toolbar-uLgsrB2z.js +1 -0
  38. package/dist/assets/{TransientHint-BpDLhRLd.js → TransientHint-CgmkrmKF.js} +1 -1
  39. package/dist/assets/{VideoViewer-DMV8lf4P.js → VideoViewer-ClUJ6_uy.js} +1 -1
  40. package/dist/assets/ViewportShadingMenu-Bdkc6jcd.js +1 -0
  41. package/dist/assets/{active-ingest-DA426a81.js → active-ingest-CnAeQcuQ.js} +3 -3
  42. package/dist/assets/{animation-clock-Bm80XdqP.js → animation-clock-fLmY_3--.js} +1 -1
  43. package/dist/assets/{animation-mixers.service-DK64IuYq.js → animation-mixers.service-DiecMX_A.js} +1 -1
  44. package/dist/assets/{animation-timeline.utility-D-g0zrOl.js → animation-timeline.utility-C71vPJgs.js} +1 -1
  45. package/dist/assets/{asset-budget-asset.menu-CEgP0Kiw.js → asset-budget-asset.menu-BDRDWrvx.js} +1 -1
  46. package/dist/assets/{asset-budget.action-D4R1c3wi.js → asset-budget.action-tQmNGQHC.js} +1 -1
  47. package/dist/assets/{asset-budget.document-Syzjn1U1.js → asset-budget.document-BthgX37Z.js} +1 -1
  48. package/dist/assets/{asset-budget.menu-BbRiqXeM.js → asset-budget.menu-DfyWVH6p.js} +1 -1
  49. package/dist/assets/{asset-editor-persistence-BGWIqZdk.js → asset-editor-persistence-BQgjOCrm.js} +1 -1
  50. package/dist/assets/{asset-loaders-C0KQI5eY.js → asset-loaders-5PIUVvmH.js} +1 -1
  51. package/dist/assets/{asset-preview-B1tDziF1.js → asset-preview-Cv7tfD98.js} +1 -1
  52. package/dist/assets/{audio-unlock.service-ucMfCVBw.js → audio-unlock.service-BvHvZjzx.js} +1 -1
  53. package/dist/assets/{audio.utility-BmE9WMUg.js → audio.utility-D9Vk_WYS.js} +1 -1
  54. package/dist/assets/autoplay.service-CFJoLPLw.js +1 -0
  55. package/dist/assets/{babylon-authoring-adapter-C8mFMXSr.js → babylon-authoring-adapter-Cg5ALSpr.js} +1 -1
  56. package/dist/assets/binding-resolver-C_9MBSMa.js +2 -0
  57. package/dist/assets/{blender-node-editor.document-C1YmwWls.js → blender-node-editor.document-B92MO51u.js} +1 -1
  58. package/dist/assets/{blender-properties-tab-B8lyjgj3.js → blender-properties-tab-CDVyDAbf.js} +1 -1
  59. package/dist/assets/{blender-runtime-host-CyQlImSR.js → blender-runtime-host-CuniE0sy.js} +1 -1
  60. package/dist/assets/{blender-runtime-skin-BK7ShZ6z.js → blender-runtime-skin-B_tOz5j5.js} +1 -1
  61. package/dist/assets/{blender-runtime.document-B0nVQs0P.js → blender-runtime.document-DxUwLiEW.js} +1 -1
  62. package/dist/assets/{blender-timeline.document-CMcdE2CK.js → blender-timeline.document-BdEEoQbK.js} +1 -1
  63. package/dist/assets/{blender-uv-editor.document-CjqNo4sZ.js → blender-uv-editor.document-EMSUlRh4.js} +1 -1
  64. package/dist/assets/{blender-version.status-OsFoc9SA.js → blender-version.status-DtfwUahB.js} +1 -1
  65. package/dist/assets/{blender.command-C6NmRBo5.js → blender.command-BkBML2SY.js} +1 -1
  66. package/dist/assets/blender.keymap-BmOBRY7p.js +1 -0
  67. package/dist/assets/{board-guides-BEKPgD9M.js → board-guides-_3R1t_-2.js} +1 -1
  68. package/dist/assets/bridge.command-VnplZ81v.js +3 -0
  69. package/dist/assets/{browserAll-lF_dLQVz.js → browserAll-BCmkqg8n.js} +1 -1
  70. package/dist/assets/build-player.document-DV7YcJQt.js +1 -0
  71. package/dist/assets/build-profiles.document-CZxDuhzz.js +2 -0
  72. package/dist/assets/{build-progress.status-Bo1ZgJcb.js → build-progress.status-Dk5u3C67.js} +1 -1
  73. package/dist/assets/build-session-BGe0eGrQ.js +9 -0
  74. package/dist/assets/{build.action-DRX2IcYt.js → build.action-Bdj4ZEL_.js} +1 -1
  75. package/dist/assets/{build.command-BGvLaLG0.js → build.command-DAWiYvPa.js} +1 -1
  76. package/dist/assets/build.header--xqH6uTP.js +1 -0
  77. package/dist/assets/{build.menu-UenrjPWS.js → build.menu-BiRNC_xc.js} +1 -1
  78. package/dist/assets/{build.service-BIUoTY6l.js → build.service-Dw9K6VSF.js} +1 -1
  79. package/dist/assets/{camera-DrvaM47S.js → camera-C-qXzXFf.js} +1 -1
  80. package/dist/assets/{camera-runtime.inspector-CjJALNO8.js → camera-runtime.inspector-BDrwWRlU.js} +1 -1
  81. package/dist/assets/canvas-design-mount-DLn49Zle.js +6 -0
  82. package/dist/assets/canvas-entry-runtime-DVeh71nC.js +2 -0
  83. package/dist/assets/{canvas-preview-frames-C0QTagA3.js → canvas-preview-frames-B5xFRjhQ.js} +1 -1
  84. package/dist/assets/{canvas-story-capture.service-Dgjr-rT1.js → canvas-story-capture.service-DQ_leYyi.js} +2 -2
  85. package/dist/assets/{capability-coverage-DZ-onC5j.js → capability-coverage-DQgg6UJe.js} +3 -3
  86. package/dist/assets/{collaboration-presence-BVIQuN1l.js → collaboration-presence-BOS1t8wI.js} +1 -1
  87. package/dist/assets/{collider-C7SbIYKY.js → collider-Bf4Uk6LW.js} +1 -1
  88. package/dist/assets/{component-board.service-CWFaGMCO.js → component-board.service-CpVXGhz5.js} +2 -2
  89. package/dist/assets/{component-board.service-BEsFAw4_.js → component-board.service-DFSSCaCf.js} +2 -2
  90. package/dist/assets/{component-board.service-q_TM9BCw.js → component-board.service-DgujG90T.js} +2 -2
  91. package/dist/assets/{component-contracts.service-CPbfXE1h.js → component-contracts.service-Bc_2Xxh_.js} +1 -1
  92. package/dist/assets/{component-instance-root-B0C5oNEm.js → component-instance-root-df4ofoOR.js} +1 -1
  93. package/dist/assets/{component-verbs.command-oNtGgzQL.js → component-verbs.command-DGzZAV_Z.js} +1 -1
  94. package/dist/assets/component-verbs.service-D1rVRogp.js +1 -0
  95. package/dist/assets/{config-_wCzzlM_.js → config-D-EAAhqP.js} +4 -4
  96. package/dist/assets/{configurations-BXU4GGbV.js → configurations-_HZOWZPy.js} +1 -1
  97. package/dist/assets/{connection.status-Yvt0bX0r.js → connection.status-CCX-mgmr.js} +1 -1
  98. package/dist/assets/{constraints.inspector-4r8jWq5a.js → constraints.inspector-CwEEREsf.js} +1 -1
  99. package/dist/assets/{content-bounds-BeuIXKYu.js → content-bounds-DKBD7nsv.js} +1 -1
  100. package/dist/assets/{contract-system-adapters-Bic_7sev.js → contract-system-adapters-h6OUBRYA.js} +1 -1
  101. package/dist/assets/{coverage.service-DcpEoBuf.js → coverage.service-CV7b5Sqn.js} +2 -2
  102. package/dist/assets/create-runtime-Bg2uYMfh.js +3 -0
  103. package/dist/assets/{curve-DVd18iAX.js → curve-BKuiAPpj.js} +1 -1
  104. package/dist/assets/{data-asset-DfQ2Pjse.js → data-asset-7Nfmx-28.js} +1 -1
  105. package/dist/assets/{data-ref-CWnkj-HX.js → data-ref-DyFQqqX6.js} +1 -1
  106. package/dist/assets/debug-bridge-CESAxmlz.js +1 -0
  107. package/dist/assets/{debug-registry-P0_YQGWd.js → debug-registry-l7k5Hjc8.js} +1 -1
  108. package/dist/assets/{deferred-ingest-play-BdR4qGk6.js → deferred-ingest-play-Bej67_y9.js} +2 -2
  109. package/dist/assets/{design-time-canvas-mount-DPQeHSN2.js → design-time-canvas-mount-CFW9ZWuk.js} +2 -2
  110. package/dist/assets/{design-time-layers-ChswRUJt.js → design-time-layers-CQgnmqc8.js} +1 -1
  111. package/dist/assets/{design-time-mount.service-Ks-5Wkcs.js → design-time-mount.service-DJeAPUB_.js} +2 -2
  112. package/dist/assets/{design-time-mount.service-Ca-DZGFV.js → design-time-mount.service-_R1UDCw3.js} +2 -2
  113. package/dist/assets/{design-time-react-mount-C85KfXOd.js → design-time-react-mount-CFvIk_rV.js} +1 -1
  114. package/dist/assets/{document-preview-three-DThkjI1S.js → document-preview-three-5cbuuJMH.js} +1 -1
  115. package/dist/assets/{dom-authoring-adapter-BrLU8IJ_.js → dom-authoring-adapter-CoESNvrM.js} +1 -1
  116. package/dist/assets/{draco3d-B2cwv46o.js → draco3d-Sk9K4AUT.js} +1 -1
  117. package/dist/assets/{edit-mode-audio.service-D4ITNbsm.js → edit-mode-audio.service-CH6J-8N7.js} +1 -1
  118. package/dist/assets/{edit-mode-authoring-DeCxPcHM.js → edit-mode-authoring-DBjaBTxM.js} +1 -1
  119. package/dist/assets/{edit-mode-networking.service-BNv-FTRh.js → edit-mode-networking.service-C4o2pGHX.js} +1 -1
  120. package/dist/assets/editor-api-D2azVray.js +1 -0
  121. package/dist/assets/{editor-layers-BDJnAAzj.js → editor-layers-B4oYfpj8.js} +1 -1
  122. package/dist/assets/{editor-shell-store-ChLcVeNB.js → editor-shell-store-Bh1S7M54.js} +1 -1
  123. package/dist/assets/{entity-object-JmYMfLsx.js → entity-object-B_5Gc0Ky.js} +1 -1
  124. package/dist/assets/{extend-Cc-nEa_A.js → extend-DcEyE5jI.js} +1 -1
  125. package/dist/assets/fork-menu-CKjNh3MO.js +1 -0
  126. package/dist/assets/{frame-debugger-store-DaCbAYSW.js → frame-debugger-store-D5YViF_8.js} +1 -1
  127. package/dist/assets/{game-contract-seams-BnPFGLll.js → game-contract-seams-C0AVYwvO.js} +1 -1
  128. package/dist/assets/{game-css-scope-transform-D_p7cVgW.js → game-css-scope-transform-8GOvVu1s.js} +1 -1
  129. package/dist/assets/game-document.service-FdG_gFPU.js +1 -0
  130. package/dist/assets/game-eval.command-4wa9vqWE.js +2 -0
  131. package/dist/assets/{game-module-access-o3iXZpCA.js → game-module-access-DulnT3NH.js} +1 -1
  132. package/dist/assets/game-network-Bo_nlDR5.js +22 -0
  133. package/dist/assets/{gameplay-export-BzYzLZPi.js → gameplay-export-K5AcStVC.js} +1 -1
  134. package/dist/assets/{gameplay-replay-BwdxV4oF.js → gameplay-replay-CnWnlogY.js} +1 -1
  135. package/dist/assets/gameplay.command-DoWqBWhH.js +1 -0
  136. package/dist/assets/{generation-jobs-BZhOMrp-.js → generation-jobs-CiabIfR0.js} +1 -1
  137. package/dist/assets/generation.service-D2yeZaJu.js +1 -0
  138. package/dist/assets/{generations-DVDht_31.js → generations-DU9rCeQR.js} +1 -1
  139. package/dist/assets/{generations.status-BvzgHlyk.js → generations.status-3CrPw_n5.js} +1 -1
  140. package/dist/assets/{hierarchy-marks-Cc_3lxw6.js → hierarchy-marks-C25dY2fR.js} +1 -1
  141. package/dist/assets/{hosted-asset-materialization-BpbnhJac.js → hosted-asset-materialization-DYdcFlDf.js} +1 -1
  142. package/dist/assets/{index-0Lm0Nf1M.css → index-B5WjeCHm.css} +1 -1
  143. package/dist/assets/{index-C1c3eOmm.js → index-BcH5GC3b.js} +1 -1
  144. package/dist/assets/{index-cNc-iFbq.js → index-BsYc2Oyj.js} +1 -1
  145. package/dist/assets/{index-SS9EugVg.js → index-C20Flc1s.js} +2 -2
  146. package/dist/assets/{index-Ck3JFh48.js → index-C4AUQbmq.js} +1 -1
  147. package/dist/assets/{index-DUZeuA7g.js → index-CC1puVjo.js} +1 -1
  148. package/dist/assets/{index-BRJMIUK0.js → index-CaG87ZF-.js} +321 -321
  149. package/dist/assets/index-CwCDkEl1.js +1 -0
  150. package/dist/assets/{index-C3Pw-9So.js → index-Kb9_s5aP.js} +1 -1
  151. package/dist/assets/{index-BeK4RPgj.js → index-n3QdTv-T.js} +1 -1
  152. package/dist/assets/{inference-diagnostics-xecGdohW.js → inference-diagnostics-MGcIHEX6.js} +1 -1
  153. package/dist/assets/{ingest-boot-viewport-DAt8WFSy.js → ingest-boot-viewport-D2okO6JI.js} +1 -1
  154. package/dist/assets/ingest-siblings-CkxW__go.js +1 -0
  155. package/dist/assets/{ingest-source-persistence-Dmdo-UBp.js → ingest-source-persistence-6peGfPAS.js} +1 -1
  156. package/dist/assets/{ingest.service-vbCucMz7.js → ingest.service-Cc73WMIW.js} +1 -1
  157. package/dist/assets/{inspect-Dr4qvDpJ.js → inspect-C8RP8G5F.js} +1 -1
  158. package/dist/assets/instances.command-CxKGnrNl.js +1 -0
  159. package/dist/assets/{json-history-resource-DwS10tqD.js → json-history-resource-CTXRV4GD.js} +1 -1
  160. package/dist/assets/layered-pick-B_-BRrRD.js +1 -0
  161. package/dist/assets/{light-DcFqVCmv.js → light-CskDQ8gF.js} +1 -1
  162. package/dist/assets/{live-project-verbs-C3LzprCe.js → live-project-verbs-BOAQN3ME.js} +1 -1
  163. package/dist/assets/{machine.document-BzZxubYQ.js → machine.document-BxOoCOo9.js} +1 -1
  164. package/dist/assets/{machines.finder-BR02bfVG.js → machines.finder-CqEceWzS.js} +1 -1
  165. package/dist/assets/{material-B_V78pTt.js → material-BwFzKPi0.js} +1 -1
  166. package/dist/assets/{material-factory-COz7qZhC.js → material-factory-qB9pzcQf.js} +1 -1
  167. package/dist/assets/{mesh-DcmO-mWI.js → mesh-5--4qA-C.js} +1 -1
  168. package/dist/assets/model-asset-sections.service-TZ2SaBmH.js +1 -0
  169. package/dist/assets/{model-inspection-CXHxrafK.js → model-inspection-MrJY0U_-.js} +1 -1
  170. package/dist/assets/{model-thumbnail-BEKPWg4l.js → model-thumbnail-uk-2sblh.js} +1 -1
  171. package/dist/assets/{models.finder-c1I0tp2M.js → models.finder-rk8dhgO8.js} +1 -1
  172. package/dist/assets/module-mode-B79jV5tQ.js +2 -0
  173. package/dist/assets/mount-canvas-ingest-root-BhaYNuhY.js +2 -0
  174. package/dist/assets/mount-dom-ingest-root-BQb1u0LX.js +2 -0
  175. package/dist/assets/mount-ingest-root-BC3-1Cw1.js +2 -0
  176. package/dist/assets/mount-manifest-QJOB11Kv.js +1 -0
  177. package/dist/assets/{mount-three-ingest-root-DVbACDUy.js → mount-three-ingest-root-DIDBfvIH.js} +1 -1
  178. package/dist/assets/{mounted-authoring-Clftxx0x.js → mounted-authoring-B7RL_V28.js} +1 -1
  179. package/dist/assets/{mounted-story-viewport-source-B4-eAYGI.js → mounted-story-viewport-source-CnYhX3vW.js} +1 -1
  180. package/dist/assets/{native-debug-module-2_HVupdg.js → native-debug-module-B-rWJfWE.js} +1 -1
  181. package/dist/assets/{navigation-CH3-zr1n.js → navigation-BVu-aVmF.js} +1 -1
  182. package/dist/assets/{navmesh.menu-Dfi-Pk-8.js → navmesh.menu-C3M63eR4.js} +1 -1
  183. package/dist/assets/{navmesh.service-Cz7QFY-M.js → navmesh.service-B0H1fUfn.js} +1 -1
  184. package/dist/assets/network-observer.service-CiR4Q9Q0.js +1 -0
  185. package/dist/assets/network.utility-CNG3eJ0E.js +1 -0
  186. package/dist/assets/{object3d-document-session-registry-DJDEDM0p.js → object3d-document-session-registry-OjqzJ86S.js} +2 -2
  187. package/dist/assets/{oid-transform-D5Kxt6ij.js → oid-transform-Bzc2ZJSH.js} +1 -1
  188. package/dist/assets/{particles-vRp0Lf3o.js → particles-Be7AvO4c.js} +1 -1
  189. package/dist/assets/pixi-authoring-adapter-B42K4md-.js +1 -0
  190. package/dist/assets/{pixi-live-write-target-BjDsBQbp.js → pixi-live-write-target-D56tQEe_.js} +1 -1
  191. package/dist/assets/play.command-CIGRq8ow.js +2 -0
  192. package/dist/assets/presentation-DGBuGP6i.js +1 -0
  193. package/dist/assets/{product-CxmUIxmr.js → product-BN31wSnB.js} +1 -1
  194. package/dist/assets/{profiler.action-Dzy9DuAc.js → profiler.action-D57Kj9ym.js} +1 -1
  195. package/dist/assets/{profiler.menu-jLDO3U6N.js → profiler.menu-Dh9Q5DDx.js} +1 -1
  196. package/dist/assets/{profiler.utility-Do2Bw7MY.js → profiler.utility-DLNySW3w.js} +1 -1
  197. package/dist/assets/{project-authoring-session-C3eusefK.js → project-authoring-session-LCJAwGrD.js} +2 -2
  198. package/dist/assets/{properties-bone-constraints.inspector-B_PbSMV7.js → properties-bone-constraints.inspector-CaIDq5nN.js} +1 -1
  199. package/dist/assets/{properties-bone.inspector-CMDEQuBd.js → properties-bone.inspector-D2fcQGMF.js} +1 -1
  200. package/dist/assets/{properties-collection.inspector-D7Ay8yRj.js → properties-collection.inspector-CF5AtTAd.js} +1 -1
  201. package/dist/assets/{properties-constraints.inspector-DS1fZgXK.js → properties-constraints.inspector-Bj2itDrS.js} +1 -1
  202. package/dist/assets/{properties-data.inspector-k2pGN2Mp.js → properties-data.inspector-BfRqk0Xo.js} +1 -1
  203. package/dist/assets/{properties-material.inspector-Bb3yAGUx.js → properties-material.inspector-Bf8H0mvu.js} +1 -1
  204. package/dist/assets/{properties-modifiers.inspector-BcJfe-Wy.js → properties-modifiers.inspector-BKShc1TH.js} +1 -1
  205. package/dist/assets/{properties-object.inspector-CUSfXJuq.js → properties-object.inspector-YBh8ABnN.js} +1 -1
  206. package/dist/assets/{properties-output.inspector-BTVW2kn1.js → properties-output.inspector-CVkzfs-l.js} +1 -1
  207. package/dist/assets/{properties-particles.inspector-Cw0fxx3B.js → properties-particles.inspector-ChDpAq-2.js} +1 -1
  208. package/dist/assets/{properties-physics.inspector-C-0bD2bu.js → properties-physics.inspector-BLEM7aMj.js} +1 -1
  209. package/dist/assets/{properties-render.inspector-C8D5UpjX.js → properties-render.inspector-vU4D9xLL.js} +1 -1
  210. package/dist/assets/{properties-scene.inspector-HjK6QHGg.js → properties-scene.inspector-C-DoN-kL.js} +1 -1
  211. package/dist/assets/{properties-texture.inspector-CckZgUaI.js → properties-texture.inspector-DySxy1oU.js} +1 -1
  212. package/dist/assets/{properties-view-layer.inspector-C1ajtVSk.js → properties-view-layer.inspector-DEKxMahJ.js} +1 -1
  213. package/dist/assets/{properties-world.inspector-BiT_EdT-.js → properties-world.inspector-m5qL_TQV.js} +1 -1
  214. package/dist/assets/r3f-design-session-C0DPEChS.js +2 -0
  215. package/dist/assets/{r3f-physics-binding-DzrbpqjM.js → r3f-physics-binding-Bgzzd4ol.js} +1 -1
  216. package/dist/assets/{r3f-source-authoring-adapter-DbbeRcvt.js → r3f-source-authoring-adapter-C8oMjdTL.js} +2 -2
  217. package/dist/assets/{react-canvas-navigation-Cp3cOHJa.js → react-canvas-navigation-Jowa_lJq.js} +1 -1
  218. package/dist/assets/react-inspector.service-TfTdj_Qk.js +1 -0
  219. package/dist/assets/{react-story-board-GaXqr03H.js → react-story-board-Bx7qYytV.js} +1 -1
  220. package/dist/assets/{react-three-rapier.esm-U8J7g6tH.js → react-three-rapier.esm-BR2ttgLS.js} +1 -1
  221. package/dist/assets/{react-world-authoring-adapter-DOjv2pYm.js → react-world-authoring-adapter-C1jPW_cN.js} +1 -1
  222. package/dist/assets/{realm-services-CnY105XU.js → realm-services-DefTrXnY.js} +1 -1
  223. package/dist/assets/{reflection-probe-capture.inspector-DqSW9p1v.js → reflection-probe-capture.inspector-C-6zrzZb.js} +1 -1
  224. package/dist/assets/{registry-CaCdF63N.js → registry-Z28XSZHF.js} +1 -1
  225. package/dist/assets/{relative-import-specifier-BFKIWEWs.js → relative-import-specifier-DQzkawgj.js} +1 -1
  226. package/dist/assets/{render-env-BkKZ4uMA.js → render-env-BZ7LsGfk.js} +1 -1
  227. package/dist/assets/{render-features-rxbawsRb.js → render-features-C7QwmhCo.js} +1 -1
  228. package/dist/assets/{render-settings-DS5leCed.js → render-settings-BBvkacR3.js} +1 -1
  229. package/dist/assets/{resolve-three-CVnMRHxw.js → resolve-three-C7zDbK29.js} +9 -9
  230. package/dist/assets/{root-seam-contract-CxLZaRio.js → root-seam-contract-rGNbiX6q.js} +1 -1
  231. package/dist/assets/run-selection-BUeubtHj.js +2 -0
  232. package/dist/assets/{scene-capture-0a-bTjT8.js → scene-capture-BTWgUzhI.js} +1 -1
  233. package/dist/assets/{scene-document.service-CeDwVA7t.js → scene-document.service-DJJp-la1.js} +2 -2
  234. package/dist/assets/{scene-framing-BQt72ZCw.js → scene-framing-PVMqGU8h.js} +1 -1
  235. package/dist/assets/{seeded-random-BgCwIAAU.js → seeded-random-38To73fI.js} +1 -1
  236. package/dist/assets/{setup-renderer-Cwkl1Ar6.js → setup-renderer-OOw1SykJ.js} +1 -1
  237. package/dist/assets/{source-object3d-authoring-adapter-DF679Ncb.js → source-object3d-authoring-adapter-RmutT5Dt.js} +1 -1
  238. package/dist/assets/{source-persistence-backend-CwLYVPXj.js → source-persistence-backend-HviqjKZ2.js} +1 -1
  239. package/dist/assets/{stage-keyboard-B8BEW592.js → stage-keyboard-DDi7S27C.js} +1 -1
  240. package/dist/assets/stage-overlay-set-olkNSZmq.js +1 -0
  241. package/dist/assets/{stage-presence-markers-DIP7YMcO.js → stage-presence-markers-cznMN_qq.js} +1 -1
  242. package/dist/assets/stage-transform-tools-BDUZqRIR.js +1 -0
  243. package/dist/assets/{standard-viewport-dressing-BCA51Tum.js → standard-viewport-dressing-BZyuxyVl.js} +1 -1
  244. package/dist/assets/{state-watch.action-DnR5Zjr-.js → state-watch.action-DEdb1mNa.js} +1 -1
  245. package/dist/assets/{state-watch.menu-wYLCLsAw.js → state-watch.menu-jWbUM3kw.js} +1 -1
  246. package/dist/assets/{state-watch.utility-CFG1Tu1m.js → state-watch.utility-DDmn3G25.js} +1 -1
  247. package/dist/assets/{story-capture-BmnwHGDV.js → story-capture-Dj1xkeKH.js} +1 -1
  248. package/dist/assets/{story-documents-BTo90DiA.js → story-documents-8ehMyYHo.js} +2 -2
  249. package/dist/assets/{story-documents.service-yagl1wGp.js → story-documents.service-BzQCuNBu.js} +1 -1
  250. package/dist/assets/{story-documents.service-B6v7Z-WE.js → story-documents.service-iNP-ORNr.js} +1 -1
  251. package/dist/assets/{story-media-presence-BqRMu572.js → story-media-presence-zTPlU9HR.js} +1 -1
  252. package/dist/assets/{story-pixi-preview-Da6afqLg.js → story-pixi-preview-B7THvSl7.js} +1 -1
  253. package/dist/assets/{story-presentation-DMSYRWaz.js → story-presentation-BLXYPadR.js} +1 -1
  254. package/dist/assets/{story-three-preview-R1JvrggS.js → story-three-preview-B1nNiPwP.js} +2 -2
  255. package/dist/assets/{studio-environment-DRxxq_QX.js → studio-environment-yaKaHPxH.js} +1 -1
  256. package/dist/assets/{surface-state-1lTOi8FD.js → surface-state-D9j6qNu8.js} +1 -1
  257. package/dist/assets/{syntactic-prop-specs-eiQXwMIc.js → syntactic-prop-specs-BTnsMOvH.js} +1 -1
  258. package/dist/assets/team-playtest.service-Ds9tkO4q.js +1 -0
  259. package/dist/assets/{three-authoring-adapter-htbnVej2.js → three-authoring-adapter-BrkGH4cd.js} +1 -1
  260. package/dist/assets/three-authoring.service-DoamZDMx.js +2 -0
  261. package/dist/assets/{three-ingest-runtime-B7rtg3QE.js → three-ingest-runtime-CXKjNysA.js} +1 -1
  262. package/dist/assets/{three-integration-BdN5Nhsg.js → three-integration-CuAnYaTW.js} +2 -2
  263. package/dist/assets/three-integration.service-Db-VabIm.js +1 -0
  264. package/dist/assets/{three-TCuY32m_.js → three-oYrcK5SQ.js} +1 -1
  265. package/dist/assets/{three-projection-core-CG01r5Ta.js → three-projection-core-jBJVt6O0.js} +1 -1
  266. package/dist/assets/{three-state-DwFE3ay2.js → three-state-wXRU3rLr.js} +1 -1
  267. package/dist/assets/{three-story-capture.service-CvpV3v5a.js → three-story-capture.service-DMJRcqjr.js} +2 -2
  268. package/dist/assets/{three-story-model-C2r2BuiA.js → three-story-model-DgiAP-oQ.js} +1 -1
  269. package/dist/assets/{three-viewport-presentation-B0z_cECu.js → three-viewport-presentation-CgO3eWJ-.js} +1 -1
  270. package/dist/assets/transform-mode-request-BnKpgRUW.js +1 -0
  271. package/dist/assets/transport-strip-a9yLoPsI.js +1 -0
  272. package/dist/assets/transport.header-CpfoppXc.js +1 -0
  273. package/dist/assets/{tuples-DfWSY2tr.js → tuples-CKsHOV9T.js} +1 -1
  274. package/dist/assets/ui-board-document-DtTR_mBr.js +2 -0
  275. package/dist/assets/{user-data-Bpj7diUS.js → user-data-CqOoAowZ.js} +1 -1
  276. package/dist/assets/{utility-view-state-CAfbFbKQ.js → utility-view-state-Db97zwDz.js} +1 -1
  277. package/dist/assets/{viewport-door-Bj_ZIP85.js → viewport-door-DVkMQazS.js} +1 -1
  278. package/dist/assets/{viewport-root-presentation-vgxsTyj4.js → viewport-root-presentation-B35t51xX.js} +1 -1
  279. package/dist/assets/{viewport-surface-status-cwCiBGa7.js → viewport-surface-status-D5kZtFW5.js} +1 -1
  280. package/dist/assets/{webworkerAll-Cm3gTjWi.js → webworkerAll-CfKEb4Ao.js} +1 -1
  281. package/dist/assets/{workspace-arrangement-BdAlBwvd.js → workspace-arrangement-DIMM7ska.js} +1 -1
  282. package/dist/assets/world-documents-C4t3iOD-.js +1 -0
  283. package/dist/assets/world-root-stage-binding-ydl3JN1a.js +1 -0
  284. package/dist/assets/{xstate-animation-binding-BGLxcZT_.js → xstate-animation-binding-aQEmNSpm.js} +1 -1
  285. package/dist/assets/{xstate-animation-meta-D_T441Ru.js → xstate-animation-meta-CnMX1Sc1.js} +1 -1
  286. package/dist-node/cli.js +29 -24
  287. package/dist-node/create.js +14 -9
  288. package/package.json +18 -16
  289. package/template/.agents/skills/vgai-music/SKILL.md +28 -4
  290. package/template/package.json +13 -11
  291. package/template/src/input.ts +1 -1
  292. package/template/src/main.ts +74 -3
  293. package/dist/assets/CanvasBoardDocument-mxL0oJ3N.js +0 -1
  294. package/dist/assets/CanvasSceneViewport-C_mapCwC.js +0 -1
  295. package/dist/assets/InspectorObjectPreview-W-y079DS.js +0 -1
  296. package/dist/assets/ModelAssetDocument-De1HKuxG.js +0 -1
  297. package/dist/assets/Object3DDocumentToolbar-Cks81kCS.js +0 -1
  298. package/dist/assets/Object3DDocumentViewport-DCwiSY3O.js +0 -2
  299. package/dist/assets/OnlineAssetDetail-CNuwSQRQ.js +0 -1
  300. package/dist/assets/PlayBar-bT8Xdrap.js +0 -1
  301. package/dist/assets/ReactCanvasControls-CnJrPj-B.js +0 -1
  302. package/dist/assets/RootSelectionOverlay-CpaGluQu.js +0 -1
  303. package/dist/assets/ShadowEditor-CVtMlALn.js +0 -1
  304. package/dist/assets/StageHost-B89HKcvd.js +0 -2
  305. package/dist/assets/Toolbar-DkTHnQto.js +0 -1
  306. package/dist/assets/ViewportShadingMenu-CXPi6fl8.js +0 -1
  307. package/dist/assets/adapter-runtime-bindings-4cmsRvRh.js +0 -2
  308. package/dist/assets/autoplay.service-CjPnv3QW.js +0 -1
  309. package/dist/assets/binding-resolver-dE0GnZT5.js +0 -2
  310. package/dist/assets/blender.keymap-_rF_vRX8.js +0 -1
  311. package/dist/assets/bridge.command-BF00Iefm.js +0 -3
  312. package/dist/assets/build-profiles.document-CqNrDdh9.js +0 -2
  313. package/dist/assets/build-session-GZcSAfPN.js +0 -9
  314. package/dist/assets/build.header-Bt1kwHWl.js +0 -1
  315. package/dist/assets/canvas-design-mount-BbLW_Nci.js +0 -6
  316. package/dist/assets/canvas-entry-runtime-UNYuSfG0.js +0 -2
  317. package/dist/assets/component-verbs.service-CnA11bJq.js +0 -1
  318. package/dist/assets/create-runtime-DBfUy0SO.js +0 -3
  319. package/dist/assets/debug-bridge-D3_-EgRE.js +0 -1
  320. package/dist/assets/editor-api-BFTIRlWa.js +0 -1
  321. package/dist/assets/entry-adjudication-Dc18TIqT.js +0 -1
  322. package/dist/assets/fork-menu-DpKqRhF5.js +0 -1
  323. package/dist/assets/game-document.service-Chmt4065.js +0 -1
  324. package/dist/assets/game-eval.command-DRSvOJ_1.js +0 -2
  325. package/dist/assets/game-network-Ct2FQYmu.js +0 -1
  326. package/dist/assets/gameplay.command-Boqv1hnc.js +0 -1
  327. package/dist/assets/generation.service-o9aXlsx4.js +0 -1
  328. package/dist/assets/index-BHoAKyAC.js +0 -1
  329. package/dist/assets/ingest-siblings-BtiEXLnh.js +0 -1
  330. package/dist/assets/instances.command-BwayrqNm.js +0 -1
  331. package/dist/assets/layered-pick-kiQf53t5.js +0 -1
  332. package/dist/assets/model-asset-sections.service-CqSclZGY.js +0 -1
  333. package/dist/assets/module-mode-BH2R93XP.js +0 -2
  334. package/dist/assets/mount-canvas-ingest-root-D1z9i5B3.js +0 -2
  335. package/dist/assets/mount-dom-ingest-root-BAmmNxlm.js +0 -2
  336. package/dist/assets/mount-ingest-root-DYR0TMIt.js +0 -2
  337. package/dist/assets/mount-manifest-DdkFYdVA.js +0 -1
  338. package/dist/assets/network-observer.service-Ce83TdsU.js +0 -1
  339. package/dist/assets/network.utility-DFDul2Xb.js +0 -1
  340. package/dist/assets/pixi-authoring-adapter-BChknIdC.js +0 -1
  341. package/dist/assets/play-mode-DICV4cKP.js +0 -22
  342. package/dist/assets/play.command-NHyi5rzF.js +0 -2
  343. package/dist/assets/presentation-BeNFBfKg.js +0 -1
  344. package/dist/assets/r3f-design-session-B5GsZI5M.js +0 -2
  345. package/dist/assets/react-inspector.service-Bm0OnanU.js +0 -1
  346. package/dist/assets/run-selection-DzEkGesJ.js +0 -2
  347. package/dist/assets/stage-overlay-set-BGE03mqb.js +0 -1
  348. package/dist/assets/stage-transform-tools-BQB7EY4l.js +0 -1
  349. package/dist/assets/team-playtest.service-hLfjgScx.js +0 -1
  350. package/dist/assets/three-authoring.service-BIQAtVdX.js +0 -2
  351. package/dist/assets/three-integration.service-CS8Nvbd2.js +0 -1
  352. package/dist/assets/transform-mode-request-DzD9aUNA.js +0 -1
  353. package/dist/assets/transport-strip-CUjNltnb.js +0 -1
  354. package/dist/assets/transport.header-Bb4FpQ8J.js +0 -1
  355. package/dist/assets/ui-board-document-CCiiXjX9.js +0 -2
  356. package/dist/assets/world-documents-DBybpBq8.js +0 -1
  357. package/dist/assets/world-root-stage-binding-ZVYIgr74.js +0 -1
package/BUNDLED_NOTICES CHANGED
@@ -735,9 +735,9 @@ Public License instead of this License. But first, please read
735
735
  <https://www.gnu.org/licenses/why-not-lgpl.html>.
736
736
 
737
737
 
738
- @volter/editor-blender@0.1.10
738
+ @volter/editor-blender@0.1.11
739
739
  Declared license: AGPL-3.0-only AND GPL-3.0-or-later
740
- Source: the unmodified npm package @volter/editor-blender@0.1.10, from https://github.com/volter-ai/editor.git
740
+ Source: the unmodified npm package @volter/editor-blender@0.1.11, from https://github.com/volter-ai/editor.git
741
741
 
742
742
  --- packages/editor-blender/LICENSE ---
743
743
 
@@ -2176,9 +2176,9 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2176
2176
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2177
2177
  SOFTWARE.
2178
2178
 
2179
- @volter/editor-core@0.5.67
2179
+ @volter/editor-core@0.5.68
2180
2180
  Declared license: AGPL-3.0-only AND Apache-2.0
2181
- Source: the unmodified npm package @volter/editor-core@0.5.67, from https://github.com/volter-ai/editor.git
2181
+ Source: the unmodified npm package @volter/editor-core@0.5.68, from https://github.com/volter-ai/editor.git
2182
2182
 
2183
2183
  --- packages/editor-core/LICENSE ---
2184
2184
 
@@ -3100,9 +3100,9 @@ server/support/ modules transferred from @vgai/sdk are Apache-2.0.
3100
3100
  Their source paths and hashes are recorded in provenance/editor-server.json.
3101
3101
 
3102
3102
 
3103
- @volter/editor-game@0.5.67
3103
+ @volter/editor-game@0.5.68
3104
3104
  Declared license: AGPL-3.0-only
3105
- Source: the unmodified npm package @volter/editor-game@0.5.67, from https://github.com/volter-ai/editor.git
3105
+ Source: the unmodified npm package @volter/editor-game@0.5.68, from https://github.com/volter-ai/editor.git
3106
3106
 
3107
3107
  --- packages/editor-game/LICENSE ---
3108
3108
 
@@ -3796,9 +3796,9 @@ the Apache-2.0 @vgai/sdk package, and retains that license. It re-exports the
3796
3796
  Apache-2.0 tool contract of @volter/editor-sdk.
3797
3797
 
3798
3798
 
3799
- @volter/editor-project@0.5.67
3799
+ @volter/editor-project@0.5.68
3800
3800
  Declared license: Apache-2.0
3801
- Source: the unmodified npm package @volter/editor-project@0.5.67, from https://github.com/volter-ai/editor.git
3801
+ Source: the unmodified npm package @volter/editor-project@0.5.68, from https://github.com/volter-ai/editor.git
3802
3802
 
3803
3803
  --- packages/editor-project/LICENSE ---
3804
3804
 
@@ -4006,9 +4006,9 @@ Source: the unmodified npm package @volter/editor-project@0.5.67, from https://g
4006
4006
  limitations under the License.
4007
4007
 
4008
4008
 
4009
- @volter/editor-react@0.5.67
4009
+ @volter/editor-react@0.5.68
4010
4010
  Declared license: AGPL-3.0-only
4011
- Source: the unmodified npm package @volter/editor-react@0.5.67, from https://github.com/volter-ai/editor.git
4011
+ Source: the unmodified npm package @volter/editor-react@0.5.68, from https://github.com/volter-ai/editor.git
4012
4012
 
4013
4013
  --- packages/editor-react/LICENSE ---
4014
4014
 
@@ -4683,9 +4683,9 @@ The files in this package were imported from volter-ai/vgai-engine at commit
4683
4683
  09c2749ce. LICENSE contains the AGPL-3.0-only license they retain.
4684
4684
 
4685
4685
 
4686
- @volter/editor-sdk@0.5.67
4686
+ @volter/editor-sdk@0.5.68
4687
4687
  Declared license: Apache-2.0
4688
- Source: the unmodified npm package @volter/editor-sdk@0.5.67, from https://github.com/volter-ai/editor.git
4688
+ Source: the unmodified npm package @volter/editor-sdk@0.5.68, from https://github.com/volter-ai/editor.git
4689
4689
 
4690
4690
  --- packages/editor-sdk/LICENSE ---
4691
4691
 
@@ -4905,9 +4905,9 @@ The project output-root policy is Apache-2.0, transferred from the original
4905
4905
  SDK; its exact source is recorded in provenance/editor-server.json.
4906
4906
 
4907
4907
 
4908
- @volter/editor-threejs@0.5.67
4908
+ @volter/editor-threejs@0.5.68
4909
4909
  Declared license: AGPL-3.0-only AND Apache-2.0
4910
- Source: the unmodified npm package @volter/editor-threejs@0.5.67, from https://github.com/volter-ai/editor.git
4910
+ Source: the unmodified npm package @volter/editor-threejs@0.5.68, from https://github.com/volter-ai/editor.git
4911
4911
 
4912
4912
  --- packages/editor-threejs/LICENSE ---
4913
4913
 
@@ -5798,9 +5798,9 @@ Source revisions and original file hashes are recorded in the repository's
5798
5798
  provenance/blender-integration.json and provenance/editor-host.json.
5799
5799
 
5800
5800
 
5801
- @volter/editor-xstate@0.5.67
5801
+ @volter/editor-xstate@0.5.68
5802
5802
  Declared license: AGPL-3.0-only
5803
- Source: the unmodified npm package @volter/editor-xstate@0.5.67, from https://github.com/volter-ai/editor.git
5803
+ Source: the unmodified npm package @volter/editor-xstate@0.5.68, from https://github.com/volter-ai/editor.git
5804
5804
 
5805
5805
  --- packages/editor-xstate/LICENSE ---
5806
5806
 
@@ -6475,9 +6475,9 @@ Copyright 2026 Volter AI, Inc.
6475
6475
  LICENSE contains the AGPL-3.0-only license this package is distributed under.
6476
6476
 
6477
6477
 
6478
- @volter/game-runtime@0.5.67
6478
+ @volter/game-runtime@0.5.68
6479
6479
  Declared license: Apache-2.0
6480
- Source: the unmodified npm package @volter/game-runtime@0.5.67, from https://github.com/volter-ai/editor.git
6480
+ Source: the unmodified npm package @volter/game-runtime@0.5.68, from https://github.com/volter-ai/editor.git
6481
6481
 
6482
6482
  --- packages/game-runtime/LICENSE ---
6483
6483
 
@@ -6695,9 +6695,9 @@ Apache-2.0 @vgai/game-runtime package. They retain that license; LICENSE
6695
6695
  contains its text.
6696
6696
 
6697
6697
 
6698
- @volter/threejs-runtime@0.5.67
6698
+ @volter/threejs-runtime@0.5.68
6699
6699
  Declared license: Apache-2.0
6700
- Source: the unmodified npm package @volter/threejs-runtime@0.5.67, from https://github.com/volter-ai/editor.git
6700
+ Source: the unmodified npm package @volter/threejs-runtime@0.5.68, from https://github.com/volter-ai/editor.git
6701
6701
 
6702
6702
  --- packages/threejs-runtime/LICENSE ---
6703
6703
 
@@ -4,7 +4,7 @@
4
4
  "id": "blender",
5
5
  "packageJson": {
6
6
  "dependencies": {
7
- "@volter/editor-blender": "0.1.10",
7
+ "@volter/editor-blender": "0.1.11",
8
8
  "@volter/blender-engine": "0.1.9"
9
9
  }
10
10
  },
@@ -15,8 +15,8 @@
15
15
  "id": "music",
16
16
  "packageJson": {
17
17
  "dependencies": {
18
- "@volter/dawproject": "0.5.67",
19
- "@volter/editor-dawproject": "0.5.67"
18
+ "@volter/dawproject": "0.5.68",
19
+ "@volter/editor-dawproject": "0.5.68"
20
20
  },
21
21
  "vgaiTools": [
22
22
  "./src/tools/music-render.tool.ts"
@@ -27,5 +27,5 @@
27
27
  "vgai-music"
28
28
  ],
29
29
  "title": "Music (rendered pieces)",
30
- "version": "0.4.1"
30
+ "version": "0.4.2"
31
31
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * The game's MUSIC, played from a piece's render (`render-piece`'s output folder): the looped
3
- * mix, a section loop per `<Marker>` (`--sections`), the stems, and one-shot stingers
4
- * (`--one-shot`), all through the game's own Web Audio graph.
3
+ * mix, a section loop per `<Marker>` (`--sections`), a loop per launcher `<Scene>`, the stems,
4
+ * and one-shot stingers (`--one-shot`), all through the game's own Web Audio graph.
5
5
  *
6
6
  * horizontal `queue('Battle')` switches loops on the next bar line of what is playing
7
7
  * (`barSeconds` in the report), or at its loop end; the old loop fades out
@@ -27,6 +27,8 @@ export interface MusicRender {
27
27
  readonly barSeconds: readonly number[];
28
28
  /** A section per marker: `start` is its second in the whole piece, where its loop begins. */
29
29
  readonly sections?: readonly { readonly name: string; readonly start: number; readonly seconds: number; readonly file: string; readonly fileM4a?: string }[];
30
+ /** A loop per launcher scene (one state of the music), `bars` whole bars from its own start. */
31
+ readonly scenes?: readonly { readonly name: string; readonly bars: number; readonly seconds: number; readonly file: string; readonly fileM4a?: string }[];
30
32
  readonly stems?: { readonly files?: readonly { readonly track: string; readonly file: string; readonly fileM4a?: string }[] };
31
33
  }
32
34
 
@@ -35,7 +37,7 @@ export interface MusicRender {
35
37
  * that cannot decode Vorbis (Safari on iOS before 17.4) gets the same loop from its `.m4a`.
36
38
  */
37
39
  export async function loadMusic(context: BaseAudioContext, baseUrl: string, render: MusicRender): Promise<Map<string, AudioBuffer>> {
38
- const entries = [render, ...(render.sections ?? []), ...(render.stems?.files ?? [])];
40
+ const entries = [render, ...(render.sections ?? []), ...(render.scenes ?? []), ...(render.stems?.files ?? [])];
39
41
  const base = baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`;
40
42
  const decode = async (file: string): Promise<AudioBuffer> => {
41
43
  const response = await fetch(new URL(file, base));
@@ -65,7 +67,7 @@ interface Playing {
65
67
  export interface MusicPlayer {
66
68
  /** The player's output; connect it where the game's music bus is. */
67
69
  readonly output: GainNode;
68
- /** Start a section's loop (by marker name), or the whole piece's with `null`, at `when` (now). */
70
+ /** Start a section's loop (by marker name) or a scene's (by scene name), or the whole piece's with `null`, at `when` (now). */
69
71
  play(section: string | null, options?: { stems?: boolean; when?: number }): void;
70
72
  /** Switch to another loop at the next bar line, or at the playing loop's end. Returns the context time it switches. */
71
73
  queue(section: string | null, options?: { at?: 'bar' | 'end'; fade?: number; stems?: boolean }): number;
@@ -104,20 +106,24 @@ export function createMusicPlayer(options: {
104
106
  };
105
107
 
106
108
  const start = (name: string | null, stems: boolean, when: number): Playing => {
107
- const section = name === null ? null : render.sections?.find((candidate) => candidate.name === name);
108
- if (name !== null && !section) throw new Error(`No section "${name}" in this render (render it with --sections).`);
109
- if (stems && section) throw new Error('Stems are rendered for the whole piece, not per section.');
110
- const files = stems ? (render.stems?.files ?? []).map((stem) => [stem.track, stem.file] as const) : [[name ?? 'mix', section?.file ?? render.file] as const];
109
+ const section = name === null ? undefined : render.sections?.find((candidate) => candidate.name === name);
110
+ const scene = name === null ? undefined : render.scenes?.find((candidate) => candidate.name === name);
111
+ if (section && scene) throw new Error(`"${name}" names both a section and a scene in this render; rename one of them.`);
112
+ if (name !== null && !section && !scene) {
113
+ throw new Error(`No section or scene "${name}" in this render (sections render with --sections; scenes always render).`);
114
+ }
115
+ if (stems && (section || scene)) throw new Error('Stems are rendered for the whole piece, not per section or scene.');
116
+ const files = stems ? (render.stems?.files ?? []).map((stem) => [stem.track, stem.file] as const) : [[name ?? 'mix', (section ?? scene)?.file ?? render.file] as const];
111
117
  if (files.length === 0) throw new Error('This render has no stems.');
112
118
  // The loop is the decoded buffer's own length (the context may resample the file); its bar
113
119
  // lines are the piece's that fall inside it, from its start. A marker off a downbeat starts a
114
120
  // loop mid-bar, and its bar lines are still the piece's.
115
121
  const seconds = buffer(files[0]![1]).duration;
116
122
  const from = section?.start ?? 0;
117
- const bars = [
118
- ...render.barSeconds.map((second) => second - from).filter((second) => second >= -1e-6 && second < seconds - 1e-3),
119
- seconds,
120
- ];
123
+ // A scene's loop is its own: its bar lines divide it evenly, from its start.
124
+ const bars = scene
125
+ ? [...Array.from({ length: scene.bars }, (_, bar) => (bar * seconds) / scene.bars), seconds]
126
+ : [...render.barSeconds.map((second) => second - from).filter((second) => second >= -1e-6 && second < seconds - 1e-3), seconds];
121
127
  const gain = context.createGain();
122
128
  gain.connect(output);
123
129
  const sources = new Map<string, { source: AudioBufferSourceNode; gain: GainNode }>();