@codexo/exojs 0.13.0 → 0.15.0

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 (822) hide show
  1. package/CHANGELOG.md +265 -6
  2. package/README.md +82 -67
  3. package/dist/esm/animation/Tween.d.ts.map +1 -1
  4. package/dist/esm/animation/Tween.js +1 -2
  5. package/dist/esm/animation/Tween.js.map +1 -1
  6. package/dist/esm/animation/TweenManager.d.ts +50 -7
  7. package/dist/esm/animation/TweenManager.d.ts.map +1 -1
  8. package/dist/esm/animation/TweenManager.js +68 -10
  9. package/dist/esm/animation/TweenManager.js.map +1 -1
  10. package/dist/esm/animation/TweenSequencer.d.ts +139 -0
  11. package/dist/esm/animation/TweenSequencer.d.ts.map +1 -0
  12. package/dist/esm/animation/TweenSequencer.js +305 -0
  13. package/dist/esm/animation/TweenSequencer.js.map +1 -0
  14. package/dist/esm/animation/index.d.ts +7 -4
  15. package/dist/esm/animation/index.d.ts.map +1 -1
  16. package/dist/esm/audio/AudioBus.d.ts +12 -12
  17. package/dist/esm/audio/AudioBus.js +29 -29
  18. package/dist/esm/audio/AudioEffect.d.ts +18 -0
  19. package/dist/esm/audio/AudioEffect.d.ts.map +1 -0
  20. package/dist/esm/audio/AudioEffect.js +16 -0
  21. package/dist/esm/audio/AudioEffect.js.map +1 -0
  22. package/dist/esm/audio/AudioGenerator.d.ts +91 -0
  23. package/dist/esm/audio/AudioGenerator.d.ts.map +1 -0
  24. package/dist/esm/audio/AudioGenerator.js +165 -0
  25. package/dist/esm/audio/AudioGenerator.js.map +1 -0
  26. package/dist/esm/audio/AudioGeneratorVoice.d.ts +52 -0
  27. package/dist/esm/audio/AudioGeneratorVoice.d.ts.map +1 -0
  28. package/dist/esm/audio/AudioGeneratorVoice.js +141 -0
  29. package/dist/esm/audio/AudioGeneratorVoice.js.map +1 -0
  30. package/dist/esm/audio/AudioInput.d.ts +39 -0
  31. package/dist/esm/audio/AudioInput.d.ts.map +1 -0
  32. package/dist/esm/audio/AudioInput.js +53 -0
  33. package/dist/esm/audio/AudioInput.js.map +1 -0
  34. package/dist/esm/audio/AudioManager.d.ts +72 -34
  35. package/dist/esm/audio/AudioManager.d.ts.map +1 -1
  36. package/dist/esm/audio/AudioManager.js +97 -51
  37. package/dist/esm/audio/AudioManager.js.map +1 -1
  38. package/dist/esm/audio/AudioStream.d.ts +49 -0
  39. package/dist/esm/audio/AudioStream.d.ts.map +1 -0
  40. package/dist/esm/audio/AudioStream.js +109 -0
  41. package/dist/esm/audio/AudioStream.js.map +1 -0
  42. package/dist/esm/audio/AudioStreamVoice.d.ts +61 -0
  43. package/dist/esm/audio/AudioStreamVoice.d.ts.map +1 -0
  44. package/dist/esm/audio/AudioStreamVoice.js +137 -0
  45. package/dist/esm/audio/AudioStreamVoice.js.map +1 -0
  46. package/dist/esm/audio/BaseVoice.d.ts +111 -0
  47. package/dist/esm/audio/BaseVoice.d.ts.map +1 -0
  48. package/dist/esm/audio/BaseVoice.js +298 -0
  49. package/dist/esm/audio/BaseVoice.js.map +1 -0
  50. package/dist/esm/audio/BiquadEffect.d.ts +53 -0
  51. package/dist/esm/audio/BiquadEffect.d.ts.map +1 -0
  52. package/dist/esm/audio/BiquadEffect.js +110 -0
  53. package/dist/esm/audio/BiquadEffect.js.map +1 -0
  54. package/dist/esm/audio/InputVoice.d.ts +41 -0
  55. package/dist/esm/audio/InputVoice.d.ts.map +1 -0
  56. package/dist/esm/audio/InputVoice.js +85 -0
  57. package/dist/esm/audio/InputVoice.js.map +1 -0
  58. package/dist/esm/audio/NoopVoice.d.ts +29 -0
  59. package/dist/esm/audio/NoopVoice.d.ts.map +1 -0
  60. package/dist/esm/audio/NoopVoice.js +52 -0
  61. package/dist/esm/audio/NoopVoice.js.map +1 -0
  62. package/dist/esm/audio/Playable.d.ts +135 -0
  63. package/dist/esm/audio/Playable.d.ts.map +1 -0
  64. package/dist/esm/audio/Sound.d.ts +64 -69
  65. package/dist/esm/audio/Sound.d.ts.map +1 -1
  66. package/dist/esm/audio/Sound.js +176 -377
  67. package/dist/esm/audio/Sound.js.map +1 -1
  68. package/dist/esm/audio/SoundVoice.d.ts +63 -0
  69. package/dist/esm/audio/SoundVoice.d.ts.map +1 -0
  70. package/dist/esm/audio/SoundVoice.js +168 -0
  71. package/dist/esm/audio/SoundVoice.js.map +1 -0
  72. package/dist/esm/audio/WorkletEffect.d.ts +68 -0
  73. package/dist/esm/audio/WorkletEffect.d.ts.map +1 -0
  74. package/dist/esm/audio/WorkletEffect.js +177 -0
  75. package/dist/esm/audio/WorkletEffect.js.map +1 -0
  76. package/dist/esm/audio/audio-context.js +1 -1
  77. package/dist/esm/audio/audio-context.js.map +1 -1
  78. package/dist/esm/audio/crossFade.d.ts +22 -13
  79. package/dist/esm/audio/crossFade.d.ts.map +1 -1
  80. package/dist/esm/audio/crossFade.js +21 -13
  81. package/dist/esm/audio/crossFade.js.map +1 -1
  82. package/dist/esm/audio/filters/HighpassFilter.d.ts +2 -2
  83. package/dist/esm/audio/filters/HighpassFilter.js +2 -2
  84. package/dist/esm/audio/filters/LowpassFilter.d.ts +2 -2
  85. package/dist/esm/audio/filters/LowpassFilter.js +2 -2
  86. package/dist/esm/audio/filters/index.d.ts +0 -10
  87. package/dist/esm/audio/filters/index.d.ts.map +1 -1
  88. package/dist/esm/audio/index.d.ts +13 -15
  89. package/dist/esm/audio/index.d.ts.map +1 -1
  90. package/dist/esm/core/Application.d.ts +169 -14
  91. package/dist/esm/core/Application.d.ts.map +1 -1
  92. package/dist/esm/core/Application.js +306 -31
  93. package/dist/esm/core/Application.js.map +1 -1
  94. package/dist/esm/core/BuildInfo.js +2 -2
  95. package/dist/esm/core/Codec.d.ts +41 -0
  96. package/dist/esm/core/Codec.d.ts.map +1 -0
  97. package/dist/esm/core/Codec.js +79 -0
  98. package/dist/esm/core/Codec.js.map +1 -0
  99. package/dist/esm/core/Color.d.ts +6 -4
  100. package/dist/esm/core/Color.d.ts.map +1 -1
  101. package/dist/esm/core/Color.js +19 -15
  102. package/dist/esm/core/Color.js.map +1 -1
  103. package/dist/esm/core/DisposalScope.d.ts +50 -0
  104. package/dist/esm/core/DisposalScope.d.ts.map +1 -0
  105. package/dist/esm/core/DisposalScope.js +86 -0
  106. package/dist/esm/core/DisposalScope.js.map +1 -0
  107. package/dist/esm/core/FixedTimestep.d.ts +28 -0
  108. package/dist/esm/core/FixedTimestep.d.ts.map +1 -0
  109. package/dist/esm/core/FixedTimestep.js +62 -0
  110. package/dist/esm/core/FixedTimestep.js.map +1 -0
  111. package/dist/esm/core/Perf.d.ts +10 -22
  112. package/dist/esm/core/Perf.d.ts.map +1 -1
  113. package/dist/esm/core/Perf.js +15 -8
  114. package/dist/esm/core/Perf.js.map +1 -1
  115. package/dist/esm/core/Registry.d.ts +64 -0
  116. package/dist/esm/core/Registry.d.ts.map +1 -0
  117. package/dist/esm/core/Registry.js +79 -0
  118. package/dist/esm/core/Registry.js.map +1 -0
  119. package/dist/esm/core/Scene.d.ts +83 -21
  120. package/dist/esm/core/Scene.d.ts.map +1 -1
  121. package/dist/esm/core/Scene.js +127 -16
  122. package/dist/esm/core/Scene.js.map +1 -1
  123. package/dist/esm/core/SceneManager.d.ts +28 -59
  124. package/dist/esm/core/SceneManager.d.ts.map +1 -1
  125. package/dist/esm/core/SceneManager.js +86 -155
  126. package/dist/esm/core/SceneManager.js.map +1 -1
  127. package/dist/esm/core/SceneNode.d.ts +78 -7
  128. package/dist/esm/core/SceneNode.d.ts.map +1 -1
  129. package/dist/esm/core/SceneNode.js +162 -21
  130. package/dist/esm/core/SceneNode.js.map +1 -1
  131. package/dist/esm/core/Signal.js.map +1 -1
  132. package/dist/esm/core/Stage.d.ts +49 -0
  133. package/dist/esm/core/Stage.d.ts.map +1 -0
  134. package/dist/esm/core/System.d.ts +22 -0
  135. package/dist/esm/core/System.d.ts.map +1 -0
  136. package/dist/esm/core/SystemRegistry.d.ts +40 -0
  137. package/dist/esm/core/SystemRegistry.d.ts.map +1 -0
  138. package/dist/esm/core/SystemRegistry.js +114 -0
  139. package/dist/esm/core/SystemRegistry.js.map +1 -0
  140. package/dist/esm/core/Time.d.ts +15 -0
  141. package/dist/esm/core/Time.d.ts.map +1 -1
  142. package/dist/esm/core/Time.js +25 -0
  143. package/dist/esm/core/Time.js.map +1 -1
  144. package/dist/esm/core/dev.d.ts +9 -4
  145. package/dist/esm/core/dev.d.ts.map +1 -1
  146. package/dist/esm/core/dev.js +5 -0
  147. package/dist/esm/core/dev.js.map +1 -1
  148. package/dist/esm/core/index.d.ts +30 -15
  149. package/dist/esm/core/index.d.ts.map +1 -1
  150. package/dist/esm/core/letterbox.d.ts +25 -0
  151. package/dist/esm/core/letterbox.d.ts.map +1 -0
  152. package/dist/esm/core/letterbox.js +26 -0
  153. package/dist/esm/core/letterbox.js.map +1 -0
  154. package/dist/esm/core/logging.d.ts +34 -0
  155. package/dist/esm/core/logging.d.ts.map +1 -0
  156. package/dist/esm/core/logging.js +59 -0
  157. package/dist/esm/core/logging.js.map +1 -0
  158. package/dist/esm/core/serialization/NodeSerializer.d.ts +71 -0
  159. package/dist/esm/core/serialization/NodeSerializer.d.ts.map +1 -0
  160. package/dist/esm/core/serialization/Prefab.d.ts +49 -0
  161. package/dist/esm/core/serialization/Prefab.d.ts.map +1 -0
  162. package/dist/esm/core/serialization/Prefab.js +61 -0
  163. package/dist/esm/core/serialization/Prefab.js.map +1 -0
  164. package/dist/esm/core/serialization/SerializationRegistry.d.ts +95 -0
  165. package/dist/esm/core/serialization/SerializationRegistry.d.ts.map +1 -0
  166. package/dist/esm/core/serialization/SerializationRegistry.js +108 -0
  167. package/dist/esm/core/serialization/SerializationRegistry.js.map +1 -0
  168. package/dist/esm/core/serialization/commonFields.d.ts +20 -0
  169. package/dist/esm/core/serialization/commonFields.d.ts.map +1 -0
  170. package/dist/esm/core/serialization/commonFields.js +155 -0
  171. package/dist/esm/core/serialization/commonFields.js.map +1 -0
  172. package/dist/esm/core/serialization/coreSerializers.d.ts +9 -0
  173. package/dist/esm/core/serialization/coreSerializers.d.ts.map +1 -0
  174. package/dist/esm/core/serialization/coreSerializers.js +101 -0
  175. package/dist/esm/core/serialization/coreSerializers.js.map +1 -0
  176. package/dist/esm/core/serialization/index.d.ts +6 -0
  177. package/dist/esm/core/serialization/index.d.ts.map +1 -0
  178. package/dist/esm/core/serialization/read.d.ts +65 -0
  179. package/dist/esm/core/serialization/read.d.ts.map +1 -0
  180. package/dist/esm/core/serialization/read.js +48 -0
  181. package/dist/esm/core/serialization/read.js.map +1 -0
  182. package/dist/esm/core/serialization/renderingSerializers.d.ts +7 -0
  183. package/dist/esm/core/serialization/renderingSerializers.d.ts.map +1 -0
  184. package/dist/esm/core/serialization/renderingSerializers.js +320 -0
  185. package/dist/esm/core/serialization/renderingSerializers.js.map +1 -0
  186. package/dist/esm/core/serialization/serialize.d.ts +56 -0
  187. package/dist/esm/core/serialization/serialize.d.ts.map +1 -0
  188. package/dist/esm/core/serialization/serialize.js +144 -0
  189. package/dist/esm/core/serialization/serialize.js.map +1 -0
  190. package/dist/esm/core/serialization/serializerHelpers.d.ts +46 -0
  191. package/dist/esm/core/serialization/serializerHelpers.d.ts.map +1 -0
  192. package/dist/esm/core/serialization/serializerHelpers.js +161 -0
  193. package/dist/esm/core/serialization/serializerHelpers.js.map +1 -0
  194. package/dist/esm/core/serialization/types.d.ts +49 -0
  195. package/dist/esm/core/serialization/types.d.ts.map +1 -0
  196. package/dist/esm/core/serialization/types.js +9 -0
  197. package/dist/esm/core/serialization/types.js.map +1 -0
  198. package/dist/esm/core/serialization/uiSerializers.d.ts +7 -0
  199. package/dist/esm/core/serialization/uiSerializers.d.ts.map +1 -0
  200. package/dist/esm/core/serialization/uiSerializers.js +206 -0
  201. package/dist/esm/core/serialization/uiSerializers.js.map +1 -0
  202. package/dist/esm/core/types.d.ts +1 -1
  203. package/dist/esm/core/types.d.ts.map +1 -1
  204. package/dist/esm/core/utils.d.ts +1 -16
  205. package/dist/esm/core/utils.d.ts.map +1 -1
  206. package/dist/esm/core/utils.js +2 -100
  207. package/dist/esm/core/utils.js.map +1 -1
  208. package/dist/esm/debug/PerformanceLayer.js +8 -9
  209. package/dist/esm/debug/PerformanceLayer.js.map +1 -1
  210. package/dist/esm/debug/PointerStackLayer.d.ts.map +1 -1
  211. package/dist/esm/debug/PointerStackLayer.js +9 -6
  212. package/dist/esm/debug/PointerStackLayer.js.map +1 -1
  213. package/dist/esm/debug/RenderPassInspectorLayer.d.ts.map +1 -1
  214. package/dist/esm/debug/RenderPassInspectorLayer.js +19 -12
  215. package/dist/esm/debug/RenderPassInspectorLayer.js.map +1 -1
  216. package/dist/esm/extensions/Extension.d.ts +39 -4
  217. package/dist/esm/extensions/Extension.d.ts.map +1 -1
  218. package/dist/esm/extensions/materialize.d.ts +9 -1
  219. package/dist/esm/extensions/materialize.d.ts.map +1 -1
  220. package/dist/esm/extensions/materialize.js +17 -2
  221. package/dist/esm/extensions/materialize.js.map +1 -1
  222. package/dist/esm/extensions/snapshot.d.ts +2 -1
  223. package/dist/esm/extensions/snapshot.d.ts.map +1 -1
  224. package/dist/esm/extensions/snapshot.js +8 -0
  225. package/dist/esm/extensions/snapshot.js.map +1 -1
  226. package/dist/esm/index.d.ts +2 -1
  227. package/dist/esm/index.d.ts.map +1 -1
  228. package/dist/esm/index.js +41 -61
  229. package/dist/esm/index.js.map +1 -1
  230. package/dist/esm/input/FocusManager.d.ts +59 -0
  231. package/dist/esm/input/FocusManager.d.ts.map +1 -0
  232. package/dist/esm/input/FocusManager.js +175 -0
  233. package/dist/esm/input/FocusManager.js.map +1 -0
  234. package/dist/esm/input/Gamepad.d.ts +10 -0
  235. package/dist/esm/input/Gamepad.d.ts.map +1 -1
  236. package/dist/esm/input/Gamepad.js +20 -4
  237. package/dist/esm/input/Gamepad.js.map +1 -1
  238. package/dist/esm/input/GamepadAxis.js +2 -2
  239. package/dist/esm/input/GamepadDefinitions.d.ts.map +1 -1
  240. package/dist/esm/input/GamepadDefinitions.js +6 -2
  241. package/dist/esm/input/GamepadDefinitions.js.map +1 -1
  242. package/dist/esm/input/GestureRecognizer.d.ts +1 -2
  243. package/dist/esm/input/GestureRecognizer.d.ts.map +1 -1
  244. package/dist/esm/input/GestureRecognizer.js +1 -3
  245. package/dist/esm/input/GestureRecognizer.js.map +1 -1
  246. package/dist/esm/input/InputBinding.js +3 -3
  247. package/dist/esm/input/InputBinding.js.map +1 -1
  248. package/dist/esm/input/InputManager.d.ts +7 -2
  249. package/dist/esm/input/InputManager.d.ts.map +1 -1
  250. package/dist/esm/input/InputManager.js +40 -21
  251. package/dist/esm/input/InputManager.js.map +1 -1
  252. package/dist/esm/input/InteractionManager.d.ts +67 -2
  253. package/dist/esm/input/InteractionManager.d.ts.map +1 -1
  254. package/dist/esm/input/InteractionManager.js +165 -41
  255. package/dist/esm/input/InteractionManager.js.map +1 -1
  256. package/dist/esm/input/KeyEvent.d.ts +25 -0
  257. package/dist/esm/input/KeyEvent.d.ts.map +1 -0
  258. package/dist/esm/input/KeyEvent.js +32 -0
  259. package/dist/esm/input/KeyEvent.js.map +1 -0
  260. package/dist/esm/input/Pointer.d.ts +21 -4
  261. package/dist/esm/input/Pointer.d.ts.map +1 -1
  262. package/dist/esm/input/Pointer.js +54 -15
  263. package/dist/esm/input/Pointer.js.map +1 -1
  264. package/dist/esm/input/index.d.ts +3 -1
  265. package/dist/esm/input/index.d.ts.map +1 -1
  266. package/dist/esm/math/AbstractVector.d.ts.map +1 -1
  267. package/dist/esm/math/AbstractVector.js +7 -2
  268. package/dist/esm/math/AbstractVector.js.map +1 -1
  269. package/dist/esm/math/Circle.d.ts.map +1 -1
  270. package/dist/esm/math/Circle.js +5 -1
  271. package/dist/esm/math/Circle.js.map +1 -1
  272. package/dist/esm/math/Line.d.ts +1 -1
  273. package/dist/esm/math/Line.d.ts.map +1 -1
  274. package/dist/esm/math/Line.js +1 -1
  275. package/dist/esm/math/Line.js.map +1 -1
  276. package/dist/esm/math/Matrix.d.ts.map +1 -1
  277. package/dist/esm/math/Matrix.js +6 -1
  278. package/dist/esm/math/Matrix.js.map +1 -1
  279. package/dist/esm/math/ObservableVector.d.ts +26 -8
  280. package/dist/esm/math/ObservableVector.d.ts.map +1 -1
  281. package/dist/esm/math/ObservableVector.js +24 -16
  282. package/dist/esm/math/ObservableVector.js.map +1 -1
  283. package/dist/esm/math/Polygon.d.ts +5 -0
  284. package/dist/esm/math/Polygon.d.ts.map +1 -1
  285. package/dist/esm/math/Polygon.js +27 -3
  286. package/dist/esm/math/Polygon.js.map +1 -1
  287. package/dist/esm/math/Random.d.ts +9 -9
  288. package/dist/esm/math/Random.d.ts.map +1 -1
  289. package/dist/esm/math/Random.js +46 -46
  290. package/dist/esm/math/Random.js.map +1 -1
  291. package/dist/esm/math/Rectangle.d.ts +11 -4
  292. package/dist/esm/math/Rectangle.d.ts.map +1 -1
  293. package/dist/esm/math/Rectangle.js +12 -6
  294. package/dist/esm/math/Rectangle.js.map +1 -1
  295. package/dist/esm/math/Vector.d.ts +1 -1
  296. package/dist/esm/math/Vector.d.ts.map +1 -1
  297. package/dist/esm/math/Vector.js +1 -1
  298. package/dist/esm/math/Vector.js.map +1 -1
  299. package/dist/esm/math/collision-detection.d.ts +42 -0
  300. package/dist/esm/math/collision-detection.d.ts.map +1 -1
  301. package/dist/esm/math/collision-detection.js +54 -4
  302. package/dist/esm/math/collision-detection.js.map +1 -1
  303. package/dist/esm/math/collision-primitives.d.ts.map +1 -1
  304. package/dist/esm/math/collision-primitives.js +4 -0
  305. package/dist/esm/math/collision-primitives.js.map +1 -1
  306. package/dist/esm/math/geometry.d.ts +26 -0
  307. package/dist/esm/math/geometry.d.ts.map +1 -1
  308. package/dist/esm/math/geometry.js +89 -2
  309. package/dist/esm/math/geometry.js.map +1 -1
  310. package/dist/esm/math/index.d.ts +7 -5
  311. package/dist/esm/math/index.d.ts.map +1 -1
  312. package/dist/esm/math/swept-collision.d.ts +13 -0
  313. package/dist/esm/math/swept-collision.d.ts.map +1 -1
  314. package/dist/esm/math/swept-collision.js +15 -1
  315. package/dist/esm/math/swept-collision.js.map +1 -1
  316. package/dist/esm/math/triangulate.d.ts.map +1 -1
  317. package/dist/esm/math/triangulate.js +9 -1
  318. package/dist/esm/math/triangulate.js.map +1 -1
  319. package/dist/esm/math/utils.d.ts +20 -0
  320. package/dist/esm/math/utils.d.ts.map +1 -1
  321. package/dist/esm/math/utils.js +18 -15
  322. package/dist/esm/math/utils.js.map +1 -1
  323. package/dist/esm/renderer-sdk.d.ts +2 -0
  324. package/dist/esm/renderer-sdk.d.ts.map +1 -1
  325. package/dist/esm/{rendering.js → renderer-sdk.js} +1 -1
  326. package/dist/esm/renderer-sdk.js.map +1 -0
  327. package/dist/esm/rendering/BackendTargetPass.d.ts +1 -1
  328. package/dist/esm/rendering/BackendTargetPass.d.ts.map +1 -1
  329. package/dist/esm/rendering/CallbackRenderPass.d.ts +14 -10
  330. package/dist/esm/rendering/CallbackRenderPass.d.ts.map +1 -1
  331. package/dist/esm/rendering/CallbackRenderPass.js +17 -12
  332. package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
  333. package/dist/esm/rendering/Container.d.ts +3 -0
  334. package/dist/esm/rendering/Container.d.ts.map +1 -1
  335. package/dist/esm/rendering/Container.js +28 -5
  336. package/dist/esm/rendering/Container.js.map +1 -1
  337. package/dist/esm/rendering/DrawContext.d.ts +48 -0
  338. package/dist/esm/rendering/DrawContext.d.ts.map +1 -0
  339. package/dist/esm/rendering/Drawable.d.ts +24 -0
  340. package/dist/esm/rendering/Drawable.d.ts.map +1 -1
  341. package/dist/esm/rendering/Drawable.js +54 -0
  342. package/dist/esm/rendering/Drawable.js.map +1 -1
  343. package/dist/esm/rendering/GpuResourceAccountant.d.ts +65 -0
  344. package/dist/esm/rendering/GpuResourceAccountant.d.ts.map +1 -0
  345. package/dist/esm/rendering/GpuResourceAccountant.js +130 -0
  346. package/dist/esm/rendering/GpuResourceAccountant.js.map +1 -0
  347. package/dist/esm/rendering/PassContext.d.ts +42 -0
  348. package/dist/esm/rendering/PassContext.d.ts.map +1 -0
  349. package/dist/esm/rendering/PassContext.js +48 -0
  350. package/dist/esm/rendering/PassContext.js.map +1 -0
  351. package/dist/esm/rendering/RenderBackend.d.ts +29 -1
  352. package/dist/esm/rendering/RenderBackend.d.ts.map +1 -1
  353. package/dist/esm/rendering/RenderBatch.d.ts +55 -0
  354. package/dist/esm/rendering/RenderBatch.d.ts.map +1 -0
  355. package/dist/esm/rendering/RenderBatch.js +107 -0
  356. package/dist/esm/rendering/RenderBatch.js.map +1 -0
  357. package/dist/esm/rendering/RenderNode.d.ts +50 -10
  358. package/dist/esm/rendering/RenderNode.d.ts.map +1 -1
  359. package/dist/esm/rendering/RenderNode.js +115 -22
  360. package/dist/esm/rendering/RenderNode.js.map +1 -1
  361. package/dist/esm/rendering/RenderNodePass.d.ts +1 -1
  362. package/dist/esm/rendering/RenderNodePass.d.ts.map +1 -1
  363. package/dist/esm/rendering/RenderNodePass.js +2 -2
  364. package/dist/esm/rendering/RenderNodePass.js.map +1 -1
  365. package/dist/esm/rendering/RenderStats.d.ts +39 -0
  366. package/dist/esm/rendering/RenderStats.d.ts.map +1 -1
  367. package/dist/esm/rendering/RenderStats.js +14 -0
  368. package/dist/esm/rendering/RenderStats.js.map +1 -1
  369. package/dist/esm/rendering/RendererRegistry.d.ts.map +1 -1
  370. package/dist/esm/rendering/RendererRegistry.js +20 -23
  371. package/dist/esm/rendering/RendererRegistry.js.map +1 -1
  372. package/dist/esm/rendering/RenderingContext.d.ts +132 -17
  373. package/dist/esm/rendering/RenderingContext.d.ts.map +1 -1
  374. package/dist/esm/rendering/RenderingContext.js +228 -28
  375. package/dist/esm/rendering/RenderingContext.js.map +1 -1
  376. package/dist/esm/rendering/TransformBuffer.d.ts +23 -0
  377. package/dist/esm/rendering/TransformBuffer.d.ts.map +1 -1
  378. package/dist/esm/rendering/TransformBuffer.js +60 -0
  379. package/dist/esm/rendering/TransformBuffer.js.map +1 -1
  380. package/dist/esm/rendering/View.d.ts +85 -15
  381. package/dist/esm/rendering/View.d.ts.map +1 -1
  382. package/dist/esm/rendering/View.js +81 -27
  383. package/dist/esm/rendering/View.js.map +1 -1
  384. package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts.map +1 -1
  385. package/dist/esm/rendering/filters/WebGpuShaderFilter.js +10 -1
  386. package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
  387. package/dist/esm/rendering/geometry/Geometry.d.ts.map +1 -1
  388. package/dist/esm/rendering/geometry/Geometry.js +4 -2
  389. package/dist/esm/rendering/geometry/Geometry.js.map +1 -1
  390. package/dist/esm/rendering/gradient/Gradient.d.ts.map +1 -1
  391. package/dist/esm/rendering/gradient/Gradient.js +7 -2
  392. package/dist/esm/rendering/gradient/Gradient.js.map +1 -1
  393. package/dist/esm/rendering/material/MaterialKey.d.ts.map +1 -1
  394. package/dist/esm/rendering/material/MaterialKey.js +2 -0
  395. package/dist/esm/rendering/material/MaterialKey.js.map +1 -1
  396. package/dist/esm/rendering/material/MeshMaterial.d.ts +20 -1
  397. package/dist/esm/rendering/material/MeshMaterial.d.ts.map +1 -1
  398. package/dist/esm/rendering/material/MeshMaterial.js +17 -0
  399. package/dist/esm/rendering/material/MeshMaterial.js.map +1 -1
  400. package/dist/esm/rendering/material/ShaderSource.js +6 -0
  401. package/dist/esm/rendering/material/ShaderSource.js.map +1 -1
  402. package/dist/esm/rendering/material/SpriteMaterial.d.ts +20 -1
  403. package/dist/esm/rendering/material/SpriteMaterial.d.ts.map +1 -1
  404. package/dist/esm/rendering/material/SpriteMaterial.js +17 -0
  405. package/dist/esm/rendering/material/SpriteMaterial.js.map +1 -1
  406. package/dist/esm/rendering/mesh/ImmediateMesh.d.ts +48 -0
  407. package/dist/esm/rendering/mesh/ImmediateMesh.d.ts.map +1 -0
  408. package/dist/esm/rendering/mesh/ImmediateMesh.js +85 -0
  409. package/dist/esm/rendering/mesh/ImmediateMesh.js.map +1 -0
  410. package/dist/esm/rendering/mesh/Mesh.d.ts +29 -6
  411. package/dist/esm/rendering/mesh/Mesh.d.ts.map +1 -1
  412. package/dist/esm/rendering/mesh/Mesh.js +40 -13
  413. package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
  414. package/dist/esm/rendering/pixelSnap.d.ts.map +1 -1
  415. package/dist/esm/rendering/pixelSnap.js +1 -0
  416. package/dist/esm/rendering/pixelSnap.js.map +1 -1
  417. package/dist/esm/rendering/plan/RenderCommand.d.ts +31 -9
  418. package/dist/esm/rendering/plan/RenderCommand.d.ts.map +1 -1
  419. package/dist/esm/rendering/plan/RenderCommand.js +23 -21
  420. package/dist/esm/rendering/plan/RenderCommand.js.map +1 -1
  421. package/dist/esm/rendering/plan/RenderEffectExecutor.d.ts.map +1 -1
  422. package/dist/esm/rendering/plan/RenderEffectExecutor.js +8 -2
  423. package/dist/esm/rendering/plan/RenderEffectExecutor.js.map +1 -1
  424. package/dist/esm/rendering/plan/RenderInstruction.d.ts +12 -39
  425. package/dist/esm/rendering/plan/RenderInstruction.d.ts.map +1 -1
  426. package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts +17 -2
  427. package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts.map +1 -1
  428. package/dist/esm/rendering/plan/RenderPlanBuilder.js +154 -50
  429. package/dist/esm/rendering/plan/RenderPlanBuilder.js.map +1 -1
  430. package/dist/esm/rendering/plan/RenderPlanOptimizer.d.ts.map +1 -1
  431. package/dist/esm/rendering/plan/RenderPlanOptimizer.js +31 -4
  432. package/dist/esm/rendering/plan/RenderPlanOptimizer.js.map +1 -1
  433. package/dist/esm/rendering/plan/RenderPlanPlayer.d.ts.map +1 -1
  434. package/dist/esm/rendering/plan/RenderPlanPlayer.js +54 -17
  435. package/dist/esm/rendering/plan/RenderPlanPlayer.js.map +1 -1
  436. package/dist/esm/rendering/plan/RenderScope.d.ts +23 -10
  437. package/dist/esm/rendering/plan/RenderScope.d.ts.map +1 -1
  438. package/dist/esm/rendering/primitives/Graphics.d.ts +16 -1
  439. package/dist/esm/rendering/primitives/Graphics.d.ts.map +1 -1
  440. package/dist/esm/rendering/primitives/Graphics.js +46 -9
  441. package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
  442. package/dist/esm/rendering/{index.d.ts → public.d.ts} +9 -39
  443. package/dist/esm/rendering/public.d.ts.map +1 -0
  444. package/dist/esm/rendering/shader/ShaderAttribute.d.ts.map +1 -1
  445. package/dist/esm/rendering/shader/ShaderAttribute.js +2 -0
  446. package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
  447. package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +60 -12
  448. package/dist/esm/rendering/sprite/AnimatedSprite.d.ts.map +1 -1
  449. package/dist/esm/rendering/sprite/AnimatedSprite.js +142 -30
  450. package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
  451. package/dist/esm/rendering/sprite/NineSliceSprite.d.ts.map +1 -1
  452. package/dist/esm/rendering/sprite/NineSliceSprite.js +10 -11
  453. package/dist/esm/rendering/sprite/NineSliceSprite.js.map +1 -1
  454. package/dist/esm/rendering/sprite/RepeatingSprite.d.ts.map +1 -1
  455. package/dist/esm/rendering/sprite/RepeatingSprite.js +1 -3
  456. package/dist/esm/rendering/sprite/RepeatingSprite.js.map +1 -1
  457. package/dist/esm/rendering/sprite/Sprite.d.ts.map +1 -1
  458. package/dist/esm/rendering/sprite/Sprite.js +30 -3
  459. package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
  460. package/dist/esm/rendering/sprite/nineSlice.d.ts.map +1 -1
  461. package/dist/esm/rendering/sprite/nineSlice.js +12 -18
  462. package/dist/esm/rendering/sprite/nineSlice.js.map +1 -1
  463. package/dist/esm/rendering/sprite/repeatingSpritePlan.d.ts.map +1 -1
  464. package/dist/esm/rendering/sprite/repeatingSpritePlan.js +2 -2
  465. package/dist/esm/rendering/sprite/repeatingSpritePlan.js.map +1 -1
  466. package/dist/esm/rendering/text/BitmapText.d.ts +2 -0
  467. package/dist/esm/rendering/text/BitmapText.d.ts.map +1 -1
  468. package/dist/esm/rendering/text/BitmapText.js +6 -0
  469. package/dist/esm/rendering/text/BitmapText.js.map +1 -1
  470. package/dist/esm/rendering/text/GlyphAtlas.d.ts.map +1 -1
  471. package/dist/esm/rendering/text/GlyphAtlas.js +2 -1
  472. package/dist/esm/rendering/text/GlyphAtlas.js.map +1 -1
  473. package/dist/esm/rendering/text/GlyphAtlasPool.d.ts +8 -1
  474. package/dist/esm/rendering/text/GlyphAtlasPool.d.ts.map +1 -1
  475. package/dist/esm/rendering/text/GlyphAtlasPool.js +9 -12
  476. package/dist/esm/rendering/text/GlyphAtlasPool.js.map +1 -1
  477. package/dist/esm/rendering/text/GlyphSdf.d.ts.map +1 -1
  478. package/dist/esm/rendering/text/GlyphSdf.js +5 -1
  479. package/dist/esm/rendering/text/GlyphSdf.js.map +1 -1
  480. package/dist/esm/rendering/text/HTMLText.d.ts.map +1 -1
  481. package/dist/esm/rendering/text/HTMLText.js +3 -2
  482. package/dist/esm/rendering/text/HTMLText.js.map +1 -1
  483. package/dist/esm/rendering/text/Text.d.ts +17 -6
  484. package/dist/esm/rendering/text/Text.d.ts.map +1 -1
  485. package/dist/esm/rendering/text/Text.js +9 -12
  486. package/dist/esm/rendering/text/Text.js.map +1 -1
  487. package/dist/esm/rendering/text/TextLayout.d.ts.map +1 -1
  488. package/dist/esm/rendering/text/TextLayout.js +4 -18
  489. package/dist/esm/rendering/text/TextLayout.js.map +1 -1
  490. package/dist/esm/rendering/texture/DataTexture.js +2 -2
  491. package/dist/esm/rendering/texture/DataTexture.js.map +1 -1
  492. package/dist/esm/rendering/texture/Texture.d.ts +6 -0
  493. package/dist/esm/rendering/texture/Texture.d.ts.map +1 -1
  494. package/dist/esm/rendering/texture/Texture.js +8 -0
  495. package/dist/esm/rendering/texture/Texture.js.map +1 -1
  496. package/dist/esm/rendering/texture/TextureRegion.d.ts.map +1 -1
  497. package/dist/esm/rendering/texture/TextureRegion.js.map +1 -1
  498. package/dist/esm/rendering/texture/repeat.d.ts.map +1 -1
  499. package/dist/esm/rendering/texture/repeat.js +2 -2
  500. package/dist/esm/rendering/texture/repeat.js.map +1 -1
  501. package/dist/esm/rendering/types.d.ts +37 -2
  502. package/dist/esm/rendering/types.d.ts.map +1 -1
  503. package/dist/esm/rendering/types.js +37 -2
  504. package/dist/esm/rendering/types.js.map +1 -1
  505. package/dist/esm/rendering/video/Video.d.ts +7 -3
  506. package/dist/esm/rendering/video/Video.d.ts.map +1 -1
  507. package/dist/esm/rendering/video/Video.js +7 -3
  508. package/dist/esm/rendering/video/Video.js.map +1 -1
  509. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts.map +1 -1
  510. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +2 -2
  511. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
  512. package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.d.ts +41 -0
  513. package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.d.ts.map +1 -0
  514. package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.js +222 -0
  515. package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.js.map +1 -0
  516. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +55 -3
  517. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts.map +1 -1
  518. package/dist/esm/rendering/webgl2/WebGl2Backend.js +209 -61
  519. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
  520. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.d.ts.map +1 -1
  521. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js +2 -2
  522. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js.map +1 -1
  523. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +17 -0
  524. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts.map +1 -1
  525. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +122 -38
  526. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -1
  527. package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.d.ts.map +1 -1
  528. package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js +2 -1
  529. package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js.map +1 -1
  530. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +16 -1
  531. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts.map +1 -1
  532. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +32 -1
  533. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
  534. package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.d.ts.map +1 -1
  535. package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js +15 -11
  536. package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js.map +1 -1
  537. package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.d.ts.map +1 -1
  538. package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js +14 -3
  539. package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js.map +1 -1
  540. package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js +3 -3
  541. package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js.map +1 -1
  542. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.d.ts.map +1 -1
  543. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js +11 -2
  544. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js.map +1 -1
  545. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts.map +1 -1
  546. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +7 -2
  547. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
  548. package/dist/esm/rendering/webgl2/WebGl2StencilClipper.d.ts.map +1 -1
  549. package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js +3 -2
  550. package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js.map +1 -1
  551. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.d.ts.map +1 -1
  552. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js +60 -15
  553. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js.map +1 -1
  554. package/dist/esm/rendering/webgl2/glsl/backdrop-blend.frag.js +4 -0
  555. package/dist/esm/rendering/webgl2/glsl/backdrop-blend.frag.js.map +1 -0
  556. package/dist/esm/rendering/webgl2/glsl/backdrop-blend.vert.js +4 -0
  557. package/dist/esm/rendering/webgl2/glsl/backdrop-blend.vert.js.map +1 -0
  558. package/dist/esm/rendering/webgl2/glsl/text.vert.js +1 -1
  559. package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.d.ts +72 -0
  560. package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.d.ts.map +1 -0
  561. package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.js +494 -0
  562. package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.js.map +1 -0
  563. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +45 -2
  564. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts.map +1 -1
  565. package/dist/esm/rendering/webgpu/WebGpuBackend.js +247 -69
  566. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
  567. package/dist/esm/rendering/webgpu/WebGpuBlendState.d.ts.map +1 -1
  568. package/dist/esm/rendering/webgpu/WebGpuBlendState.js +5 -26
  569. package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -1
  570. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts +2 -0
  571. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts.map +1 -1
  572. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +2 -1
  573. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
  574. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +17 -0
  575. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts.map +1 -1
  576. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +105 -25
  577. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
  578. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts +2 -0
  579. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts.map +1 -1
  580. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js +8 -2
  581. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js.map +1 -1
  582. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts +8 -0
  583. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts.map +1 -1
  584. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js +20 -0
  585. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js.map +1 -1
  586. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts +6 -0
  587. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts.map +1 -1
  588. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js +23 -10
  589. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js.map +1 -1
  590. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +2 -0
  591. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts.map +1 -1
  592. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +10 -5
  593. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
  594. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts +2 -0
  595. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts.map +1 -1
  596. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js +3 -1
  597. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js.map +1 -1
  598. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts +2 -0
  599. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts.map +1 -1
  600. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js +22 -9
  601. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -1
  602. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +16 -3
  603. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts.map +1 -1
  604. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +50 -6
  605. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js.map +1 -1
  606. package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js +1 -1
  607. package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js.map +1 -1
  608. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.d.ts +7 -0
  609. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.d.ts.map +1 -1
  610. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js +8 -0
  611. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js.map +1 -1
  612. package/dist/esm/resources/Asset.d.ts +1 -1
  613. package/dist/esm/resources/Asset.d.ts.map +1 -1
  614. package/dist/esm/resources/Asset.js +0 -2
  615. package/dist/esm/resources/Asset.js.map +1 -1
  616. package/dist/esm/resources/AssetContainer.d.ts +75 -0
  617. package/dist/esm/resources/AssetContainer.d.ts.map +1 -0
  618. package/dist/esm/resources/AssetContainer.js +100 -0
  619. package/dist/esm/resources/AssetContainer.js.map +1 -0
  620. package/dist/esm/resources/AssetDefinitions.d.ts +3 -3
  621. package/dist/esm/resources/AssetDefinitions.d.ts.map +1 -1
  622. package/dist/esm/resources/Assets.d.ts.map +1 -1
  623. package/dist/esm/resources/Assets.js +0 -1
  624. package/dist/esm/resources/Assets.js.map +1 -1
  625. package/dist/esm/resources/FactoryRegistry.d.ts.map +1 -1
  626. package/dist/esm/resources/FactoryRegistry.js +14 -23
  627. package/dist/esm/resources/FactoryRegistry.js.map +1 -1
  628. package/dist/esm/resources/IndexedDbDatabase.d.ts.map +1 -1
  629. package/dist/esm/resources/IndexedDbDatabase.js +8 -1
  630. package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
  631. package/dist/esm/resources/IndexedDbKeyValueStore.d.ts +37 -0
  632. package/dist/esm/resources/IndexedDbKeyValueStore.d.ts.map +1 -0
  633. package/dist/esm/resources/IndexedDbKeyValueStore.js +58 -0
  634. package/dist/esm/resources/IndexedDbKeyValueStore.js.map +1 -0
  635. package/dist/esm/resources/KeyValueStore.d.ts +31 -0
  636. package/dist/esm/resources/KeyValueStore.d.ts.map +1 -0
  637. package/dist/esm/resources/Loader.d.ts +55 -2
  638. package/dist/esm/resources/Loader.d.ts.map +1 -1
  639. package/dist/esm/resources/Loader.js +159 -14
  640. package/dist/esm/resources/Loader.js.map +1 -1
  641. package/dist/esm/resources/MemoryStore.d.ts +17 -0
  642. package/dist/esm/resources/MemoryStore.d.ts.map +1 -0
  643. package/dist/esm/resources/MemoryStore.js +30 -0
  644. package/dist/esm/resources/MemoryStore.js.map +1 -0
  645. package/dist/esm/resources/WebStorageStore.d.ts +40 -0
  646. package/dist/esm/resources/WebStorageStore.d.ts.map +1 -0
  647. package/dist/esm/resources/WebStorageStore.js +84 -0
  648. package/dist/esm/resources/WebStorageStore.js.map +1 -0
  649. package/dist/esm/resources/coreAssetBindings.d.ts.map +1 -1
  650. package/dist/esm/resources/coreAssetBindings.js +16 -5
  651. package/dist/esm/resources/coreAssetBindings.js.map +1 -1
  652. package/dist/esm/resources/factories/BmFontFactory.js +4 -4
  653. package/dist/esm/resources/factories/BmFontFactory.js.map +1 -1
  654. package/dist/esm/resources/factories/MusicFactory.d.ts +9 -9
  655. package/dist/esm/resources/factories/MusicFactory.d.ts.map +1 -1
  656. package/dist/esm/resources/factories/MusicFactory.js +7 -7
  657. package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
  658. package/dist/esm/resources/factories/SoundFactory.js +2 -2
  659. package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
  660. package/dist/esm/resources/factories/SubtitleFactory.d.ts +11 -1
  661. package/dist/esm/resources/factories/SubtitleFactory.d.ts.map +1 -1
  662. package/dist/esm/resources/factories/SubtitleFactory.js +13 -9
  663. package/dist/esm/resources/factories/SubtitleFactory.js.map +1 -1
  664. package/dist/esm/resources/index.d.ts +51 -34
  665. package/dist/esm/resources/index.d.ts.map +1 -1
  666. package/dist/esm/resources/utils.js +4 -4
  667. package/dist/esm/resources/utils.js.map +1 -1
  668. package/dist/esm/ui/Button.d.ts +54 -0
  669. package/dist/esm/ui/Button.d.ts.map +1 -0
  670. package/dist/esm/ui/Button.js +139 -0
  671. package/dist/esm/ui/Button.js.map +1 -0
  672. package/dist/esm/ui/Label.d.ts +17 -0
  673. package/dist/esm/ui/Label.d.ts.map +1 -0
  674. package/dist/esm/ui/Label.js +37 -0
  675. package/dist/esm/ui/Label.js.map +1 -0
  676. package/dist/esm/ui/Panel.d.ts +38 -0
  677. package/dist/esm/ui/Panel.d.ts.map +1 -0
  678. package/dist/esm/ui/Panel.js +61 -0
  679. package/dist/esm/ui/Panel.js.map +1 -0
  680. package/dist/esm/ui/ProgressBar.d.ts +37 -0
  681. package/dist/esm/ui/ProgressBar.d.ts.map +1 -0
  682. package/dist/esm/ui/ProgressBar.js +76 -0
  683. package/dist/esm/ui/ProgressBar.js.map +1 -0
  684. package/dist/esm/ui/ScrollContainer.d.ts +63 -0
  685. package/dist/esm/ui/ScrollContainer.d.ts.map +1 -0
  686. package/dist/esm/ui/ScrollContainer.js +99 -0
  687. package/dist/esm/ui/ScrollContainer.js.map +1 -0
  688. package/dist/esm/ui/Stack.d.ts +34 -0
  689. package/dist/esm/ui/Stack.d.ts.map +1 -0
  690. package/dist/esm/ui/Stack.js +69 -0
  691. package/dist/esm/ui/Stack.js.map +1 -0
  692. package/dist/esm/ui/Tooltip.d.ts +67 -0
  693. package/dist/esm/ui/Tooltip.d.ts.map +1 -0
  694. package/dist/esm/ui/Tooltip.js +133 -0
  695. package/dist/esm/ui/Tooltip.js.map +1 -0
  696. package/dist/esm/ui/UIRoot.d.ts +31 -0
  697. package/dist/esm/ui/UIRoot.d.ts.map +1 -0
  698. package/dist/esm/ui/UIRoot.js +49 -0
  699. package/dist/esm/ui/UIRoot.js.map +1 -0
  700. package/dist/esm/ui/Widget.d.ts +45 -0
  701. package/dist/esm/ui/Widget.d.ts.map +1 -0
  702. package/dist/esm/ui/Widget.js +113 -0
  703. package/dist/esm/ui/Widget.js.map +1 -0
  704. package/dist/esm/ui/index.d.ts +17 -0
  705. package/dist/esm/ui/index.d.ts.map +1 -0
  706. package/dist/exo.debug.esm.js +1 -948
  707. package/dist/exo.debug.esm.js.map +1 -1
  708. package/dist/exo.esm.js +1 -40945
  709. package/dist/exo.esm.js.map +1 -1
  710. package/dist/exo.iife.js +45202 -0
  711. package/dist/exo.iife.js.map +1 -0
  712. package/dist/exo.iife.min.js +2 -0
  713. package/dist/exo.iife.min.js.map +1 -0
  714. package/package.json +37 -14
  715. package/dist/esm/audio/AbstractMedia.d.ts +0 -75
  716. package/dist/esm/audio/AbstractMedia.d.ts.map +0 -1
  717. package/dist/esm/audio/AbstractMedia.js +0 -179
  718. package/dist/esm/audio/AbstractMedia.js.map +0 -1
  719. package/dist/esm/audio/AudioAnalyser.d.ts +0 -128
  720. package/dist/esm/audio/AudioAnalyser.d.ts.map +0 -1
  721. package/dist/esm/audio/AudioAnalyser.js +0 -473
  722. package/dist/esm/audio/AudioAnalyser.js.map +0 -1
  723. package/dist/esm/audio/AudioFilter.d.ts +0 -17
  724. package/dist/esm/audio/AudioFilter.d.ts.map +0 -1
  725. package/dist/esm/audio/AudioFilter.js +0 -15
  726. package/dist/esm/audio/AudioFilter.js.map +0 -1
  727. package/dist/esm/audio/BeatDetector.d.ts +0 -207
  728. package/dist/esm/audio/BeatDetector.d.ts.map +0 -1
  729. package/dist/esm/audio/BeatDetector.js +0 -424
  730. package/dist/esm/audio/BeatDetector.js.map +0 -1
  731. package/dist/esm/audio/Media.d.ts +0 -37
  732. package/dist/esm/audio/Media.d.ts.map +0 -1
  733. package/dist/esm/audio/Music.d.ts +0 -42
  734. package/dist/esm/audio/Music.d.ts.map +0 -1
  735. package/dist/esm/audio/Music.js +0 -164
  736. package/dist/esm/audio/Music.js.map +0 -1
  737. package/dist/esm/audio/OscillatorSound.d.ts +0 -100
  738. package/dist/esm/audio/OscillatorSound.d.ts.map +0 -1
  739. package/dist/esm/audio/OscillatorSound.js +0 -346
  740. package/dist/esm/audio/OscillatorSound.js.map +0 -1
  741. package/dist/esm/audio/dsp/fft.d.ts +0 -23
  742. package/dist/esm/audio/dsp/fft.d.ts.map +0 -1
  743. package/dist/esm/audio/dsp/mel.d.ts +0 -44
  744. package/dist/esm/audio/dsp/mel.d.ts.map +0 -1
  745. package/dist/esm/audio/dsp/mel.js +0 -70
  746. package/dist/esm/audio/dsp/mel.js.map +0 -1
  747. package/dist/esm/audio/dsp/tempogram.d.ts +0 -52
  748. package/dist/esm/audio/dsp/tempogram.d.ts.map +0 -1
  749. package/dist/esm/audio/filters/ChorusFilter.d.ts +0 -54
  750. package/dist/esm/audio/filters/ChorusFilter.d.ts.map +0 -1
  751. package/dist/esm/audio/filters/ChorusFilter.js +0 -155
  752. package/dist/esm/audio/filters/ChorusFilter.js.map +0 -1
  753. package/dist/esm/audio/filters/CompressorFilter.d.ts +0 -54
  754. package/dist/esm/audio/filters/CompressorFilter.d.ts.map +0 -1
  755. package/dist/esm/audio/filters/CompressorFilter.js +0 -123
  756. package/dist/esm/audio/filters/CompressorFilter.js.map +0 -1
  757. package/dist/esm/audio/filters/DelayFilter.d.ts +0 -36
  758. package/dist/esm/audio/filters/DelayFilter.d.ts.map +0 -1
  759. package/dist/esm/audio/filters/DelayFilter.js +0 -114
  760. package/dist/esm/audio/filters/DelayFilter.js.map +0 -1
  761. package/dist/esm/audio/filters/DuckingFilter.d.ts +0 -45
  762. package/dist/esm/audio/filters/DuckingFilter.d.ts.map +0 -1
  763. package/dist/esm/audio/filters/DuckingFilter.js +0 -172
  764. package/dist/esm/audio/filters/DuckingFilter.js.map +0 -1
  765. package/dist/esm/audio/filters/EqualizerFilter.d.ts +0 -51
  766. package/dist/esm/audio/filters/EqualizerFilter.d.ts.map +0 -1
  767. package/dist/esm/audio/filters/EqualizerFilter.js +0 -138
  768. package/dist/esm/audio/filters/EqualizerFilter.js.map +0 -1
  769. package/dist/esm/audio/filters/GranularFilter.d.ts +0 -63
  770. package/dist/esm/audio/filters/GranularFilter.d.ts.map +0 -1
  771. package/dist/esm/audio/filters/GranularFilter.js +0 -107
  772. package/dist/esm/audio/filters/GranularFilter.js.map +0 -1
  773. package/dist/esm/audio/filters/PitchShiftFilter.d.ts +0 -45
  774. package/dist/esm/audio/filters/PitchShiftFilter.d.ts.map +0 -1
  775. package/dist/esm/audio/filters/PitchShiftFilter.js +0 -66
  776. package/dist/esm/audio/filters/PitchShiftFilter.js.map +0 -1
  777. package/dist/esm/audio/filters/ReverbFilter.d.ts +0 -38
  778. package/dist/esm/audio/filters/ReverbFilter.d.ts.map +0 -1
  779. package/dist/esm/audio/filters/ReverbFilter.js +0 -122
  780. package/dist/esm/audio/filters/ReverbFilter.js.map +0 -1
  781. package/dist/esm/audio/filters/VocoderFilter.d.ts +0 -50
  782. package/dist/esm/audio/filters/VocoderFilter.d.ts.map +0 -1
  783. package/dist/esm/audio/filters/VocoderFilter.js +0 -94
  784. package/dist/esm/audio/filters/VocoderFilter.js.map +0 -1
  785. package/dist/esm/audio/filters/WorkletFilter.d.ts +0 -54
  786. package/dist/esm/audio/filters/WorkletFilter.d.ts.map +0 -1
  787. package/dist/esm/audio/filters/WorkletFilter.js +0 -110
  788. package/dist/esm/audio/filters/WorkletFilter.js.map +0 -1
  789. package/dist/esm/audio/worklets/beat-detector.worklet.d.ts +0 -2
  790. package/dist/esm/audio/worklets/beat-detector.worklet.d.ts.map +0 -1
  791. package/dist/esm/audio/worklets/beat-detector.worklet.js +0 -647
  792. package/dist/esm/audio/worklets/beat-detector.worklet.js.map +0 -1
  793. package/dist/esm/audio/worklets/granular.worklet.d.ts +0 -2
  794. package/dist/esm/audio/worklets/granular.worklet.d.ts.map +0 -1
  795. package/dist/esm/audio/worklets/granular.worklet.js +0 -89
  796. package/dist/esm/audio/worklets/granular.worklet.js.map +0 -1
  797. package/dist/esm/audio/worklets/pitch-shift.worklet.d.ts +0 -2
  798. package/dist/esm/audio/worklets/pitch-shift.worklet.d.ts.map +0 -1
  799. package/dist/esm/audio/worklets/pitch-shift.worklet.js +0 -74
  800. package/dist/esm/audio/worklets/pitch-shift.worklet.js.map +0 -1
  801. package/dist/esm/audio/worklets/vocoder.worklet.d.ts +0 -2
  802. package/dist/esm/audio/worklets/vocoder.worklet.d.ts.map +0 -1
  803. package/dist/esm/audio/worklets/vocoder.worklet.js +0 -92
  804. package/dist/esm/audio/worklets/vocoder.worklet.js.map +0 -1
  805. package/dist/esm/input/internal/interactionManagerRegistry.d.ts +0 -10
  806. package/dist/esm/input/internal/interactionManagerRegistry.d.ts.map +0 -1
  807. package/dist/esm/input/internal/interactionManagerRegistry.js +0 -10
  808. package/dist/esm/input/internal/interactionManagerRegistry.js.map +0 -1
  809. package/dist/esm/rendering/Camera.d.ts +0 -34
  810. package/dist/esm/rendering/Camera.d.ts.map +0 -1
  811. package/dist/esm/rendering/Camera.js +0 -38
  812. package/dist/esm/rendering/Camera.js.map +0 -1
  813. package/dist/esm/rendering/index.d.ts.map +0 -1
  814. package/dist/esm/rendering/plan/RenderInstruction.js +0 -45
  815. package/dist/esm/rendering/plan/RenderInstruction.js.map +0 -1
  816. package/dist/esm/rendering.d.ts +0 -29
  817. package/dist/esm/rendering.d.ts.map +0 -1
  818. package/dist/esm/rendering.js.map +0 -1
  819. package/dist/esm/resources/JsonStore.d.ts +0 -19
  820. package/dist/esm/resources/JsonStore.d.ts.map +0 -1
  821. package/dist/esm/resources/JsonStore.js +0 -62
  822. package/dist/esm/resources/JsonStore.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioGenerator.d.ts","sourceRoot":"","sources":["../../../src/audio/AudioGenerator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;AAEzE,uDAAuD;AACvD,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAQD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAC7C,2EAA2E;IACpE,SAAS,EAAE,MAAM,CAAC;IACzB,mCAAmC;IAC5B,IAAI,EAAE,cAAc,CAAC;IAC5B,qCAAqC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACtB,oDAAoD;IAC7C,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACjC,mDAAmD;IAC5C,MAAM,EAAE,MAAM,CAAC;IACtB,uDAAuD;IAChD,KAAK,EAAE,OAAO,CAAC;IAEtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAoB;IACzC,2DAA2D;IACpD,QAAQ,EAAE,MAAM,CAAC;IAExB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAE5D,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED,IAAW,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEhC;IAED,IAAW,YAAY,IAAI,iBAAiB,CAE3C;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,iBAAiB,EAE/C;gBAEkB,OAAO,GAAE,qBAA0B;IAatD,uFAAuF;IAChF,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKtC,8EAA8E;WAChE,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIvD;;;;;;;OAOG;IACI,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,KAAK;IA+CvE,6DAA6D;IACtD,OAAO,IAAI,IAAI;IAStB,8BAA8B;IACvB,OAAO,IAAI,IAAI;IAItB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,mBAAmB;CAiB5B"}
@@ -0,0 +1,165 @@
1
+ import { clamp } from '../math/utils.js';
2
+ import { isAudioContextReady, getAudioContext } from './audio-context.js';
3
+ import { AudioGeneratorVoice } from './AudioGeneratorVoice.js';
4
+ import { NoopVoice } from './NoopVoice.js';
5
+ import { SoundPoolStrategy } from './Sound.js';
6
+
7
+ /**
8
+ * Procedural tone generator — produces audio from an `OscillatorNode` without
9
+ * any decoded asset. Good for prototyping, game-jam SFX, retro bleeps, and
10
+ * synth-style tones.
11
+ *
12
+ * `AudioGenerator` is a **data descriptor**: it holds the current synth settings
13
+ * (`frequency`, `type`, `detune`, `envelope`) and default playback parameters.
14
+ * Each `AudioManager.play(generator, options)` snapshots those settings into a
15
+ * fresh {@link AudioGeneratorVoice} and returns it. For per-note playback, set
16
+ * `generator.frequency` (or use {@link AudioGenerator.setNote}) before playing:
17
+ *
18
+ * ```ts
19
+ * generator.setNote(69); // A4
20
+ * const voice = app.audio.play(generator);
21
+ * // ...later
22
+ * voice.frequency = 880; // retune the live voice
23
+ * voice.stop(); // triggers the envelope release, if any
24
+ * ```
25
+ *
26
+ * Routes through the manager's `sound` bus by default.
27
+ */
28
+ class AudioGenerator {
29
+ /** Current oscillator frequency in Hz. Snapshotted into each new voice. */
30
+ frequency;
31
+ /** Current oscillator waveform. */
32
+ type;
33
+ /** Current pitch detune in cents. */
34
+ detune;
35
+ /** Optional ADSR envelope applied to each voice. */
36
+ envelope;
37
+ /** Default volume for new voices. Range [0, 1]. */
38
+ volume;
39
+ /** Default muted flag (starts a voice at volume 0). */
40
+ muted;
41
+ _poolSize;
42
+ _poolStrategy;
43
+ /** Priority for the `LowestPriority` eviction strategy. */
44
+ priority;
45
+ _activeVoices = [];
46
+ get poolSize() {
47
+ return this._poolSize;
48
+ }
49
+ set poolSize(value) {
50
+ this._poolSize = Math.max(1, Math.floor(value));
51
+ }
52
+ get poolStrategy() {
53
+ return this._poolStrategy;
54
+ }
55
+ set poolStrategy(value) {
56
+ this._poolStrategy = value;
57
+ }
58
+ constructor(options = {}) {
59
+ this.frequency = options.frequency ?? 440;
60
+ this.type = options.type ?? 'sine';
61
+ this.detune = options.detune ?? 0;
62
+ this.envelope = options.envelope ?? null;
63
+ this.volume = clamp(options.volume ?? 1, 0, 1);
64
+ this.muted = options.muted ?? false;
65
+ this._poolSize = Math.max(1, Math.floor(options.poolSize ?? 8));
66
+ this._poolStrategy = options.poolStrategy ?? SoundPoolStrategy.FirstInFirstOut;
67
+ this.priority = options.priority ?? 0;
68
+ }
69
+ /** Set {@link AudioGenerator.frequency} from a MIDI note number (69 = A4 = 440 Hz). */
70
+ setNote(midiNote) {
71
+ this.frequency = AudioGenerator.midiToFrequency(midiNote);
72
+ return this;
73
+ }
74
+ /** Frequency in Hz for a MIDI note number, without mutating the generator. */
75
+ static midiToFrequency(midiNote) {
76
+ return 440 * Math.pow(2, (midiNote - 69) / 12);
77
+ }
78
+ /**
79
+ * Implements {@link Playable}. Called by {@link AudioManager.play}.
80
+ *
81
+ * Snapshots the current synth settings into a new {@link AudioGeneratorVoice}.
82
+ * Returns an already-ended {@link NoopVoice} when the `AudioContext` is still
83
+ * locked by the autoplay policy — oscillators are ephemeral and cannot be
84
+ * deferred.
85
+ */
86
+ _createVoice(manager, options) {
87
+ const bus = options.bus ?? manager.sound;
88
+ if (!isAudioContextReady()) {
89
+ return new NoopVoice(bus);
90
+ }
91
+ this._pruneEndedVoices();
92
+ if (this._activeVoices.length >= this._poolSize) {
93
+ const victimIndex = this._pickEvictionVictim();
94
+ const victim = this._activeVoices[victimIndex];
95
+ if (victim) {
96
+ this._activeVoices.splice(victimIndex, 1);
97
+ victim.voice.stop();
98
+ }
99
+ }
100
+ const audioContext = getAudioContext();
101
+ const output = audioContext.createGain();
102
+ const detune = options.detune ?? this.detune;
103
+ const volume = clamp(options.muted ? 0 : (options.volume ?? (this.muted ? 0 : this.volume)), 0, 1);
104
+ const voice = new AudioGeneratorVoice({
105
+ audioContext,
106
+ output,
107
+ bus,
108
+ manager,
109
+ volume,
110
+ frequency: this.frequency,
111
+ type: this.type,
112
+ detune,
113
+ envelope: this.envelope,
114
+ });
115
+ const pooled = { voice, startedAt: audioContext.currentTime };
116
+ voice.onEnd.add(() => {
117
+ const index = this._activeVoices.indexOf(pooled);
118
+ if (index !== -1) {
119
+ this._activeVoices.splice(index, 1);
120
+ }
121
+ });
122
+ this._activeVoices.push(pooled);
123
+ return voice;
124
+ }
125
+ /** Stop every currently active voice from this generator. */
126
+ stopAll() {
127
+ const voices = [...this._activeVoices];
128
+ this._activeVoices.length = 0;
129
+ for (const pooled of voices) {
130
+ pooled.voice.stop();
131
+ }
132
+ return this;
133
+ }
134
+ /** Stop all active voices. */
135
+ destroy() {
136
+ this.stopAll();
137
+ }
138
+ _pruneEndedVoices() {
139
+ for (let i = this._activeVoices.length - 1; i >= 0; i--) {
140
+ if (this._activeVoices[i]?.voice.ended === true) {
141
+ this._activeVoices.splice(i, 1);
142
+ }
143
+ }
144
+ }
145
+ _pickEvictionVictim() {
146
+ if (this._poolStrategy === SoundPoolStrategy.LeastRecentlyUsed) {
147
+ // Oscillators are open-ended, so "closest to end" degenerates to oldest.
148
+ let oldest = 0;
149
+ let oldestTime = Infinity;
150
+ for (let i = 0; i < this._activeVoices.length; i++) {
151
+ const pooled = this._activeVoices[i];
152
+ if (pooled !== undefined && pooled.startedAt < oldestTime) {
153
+ oldestTime = pooled.startedAt;
154
+ oldest = i;
155
+ }
156
+ }
157
+ return oldest;
158
+ }
159
+ // FirstInFirstOut and LowestPriority (shared priority) → oldest.
160
+ return 0;
161
+ }
162
+ }
163
+
164
+ export { AudioGenerator };
165
+ //# sourceMappingURL=AudioGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioGenerator.js","sources":["../../../../src/audio/AudioGenerator.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { OscillatorType } from './AudioGenerator';
2
+ import { BaseVoice, type BaseVoiceInit } from './BaseVoice';
3
+ import type { Envelope } from './Envelope';
4
+ import type { RatePitched } from './Playable';
5
+ /** Construction parameters for {@link AudioGeneratorVoice}. */
6
+ export interface AudioGeneratorVoiceInit extends BaseVoiceInit {
7
+ frequency: number;
8
+ type: OscillatorType;
9
+ detune: number;
10
+ envelope: Envelope | null;
11
+ }
12
+ /**
13
+ * Active playback handle for one {@link AudioGenerator} play call, backed by an
14
+ * `OscillatorNode` plus a per-voice envelope gain. Each `AudioManager.play`
15
+ * creates an independent voice.
16
+ *
17
+ * Exposes the generator parameters (`frequency`, `type`), mixes in
18
+ * {@link RatePitched} (`detune` is real; `playbackRate` is stored but inert — an
19
+ * oscillator has no playback rate, retune via `frequency`/`detune`), and (via
20
+ * {@link BaseVoice}) {@link Spatializable}.
21
+ *
22
+ * Graph: `oscillator → envelopeGain → [panner] → output(volume) → bus`. The
23
+ * envelope shapes the ADSR; the output gain carries the overall volume.
24
+ *
25
+ * @internal
26
+ */
27
+ export declare class AudioGeneratorVoice extends BaseVoice implements RatePitched {
28
+ private readonly _oscillator;
29
+ private readonly _envelopeGain;
30
+ private readonly _envelope;
31
+ private _frequency;
32
+ private _type;
33
+ private _detune;
34
+ private _playbackRate;
35
+ constructor(init: AudioGeneratorVoiceInit);
36
+ get frequency(): number;
37
+ set frequency(value: number);
38
+ get type(): OscillatorType;
39
+ set type(value: OscillatorType);
40
+ /**
41
+ * Stored but inert — an `OscillatorNode` has no playback rate. Retune via
42
+ * {@link AudioGeneratorVoice.frequency} or {@link AudioGeneratorVoice.detune}.
43
+ */
44
+ get playbackRate(): number;
45
+ set playbackRate(value: number);
46
+ get detune(): number;
47
+ set detune(value: number);
48
+ stop(fadeMs?: number): void;
49
+ protected _routeThroughPanner(panner: PannerNode): void;
50
+ protected _teardownSource(): void;
51
+ }
52
+ //# sourceMappingURL=AudioGeneratorVoice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioGeneratorVoice.d.ts","sourceRoot":"","sources":["../../../src/audio/AudioGeneratorVoice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,+DAA+D;AAC/D,MAAM,WAAW,uBAAwB,SAAQ,aAAa;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,mBAAoB,SAAQ,SAAU,YAAW,WAAW;IACvE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAW;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAK;gBAEP,IAAI,EAAE,uBAAuB;IAmChD,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,SAAS,CAAC,KAAK,EAAE,MAAM,EAKjC;IAED,IAAW,IAAI,IAAI,cAAc,CAEhC;IAED,IAAW,IAAI,CAAC,KAAK,EAAE,cAAc,EAKpC;IAMD;;;OAGG;IACH,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,MAAM,EAEpC;IAED,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAK9B;IAMe,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;cA4BxB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;cAM7C,eAAe,IAAI,IAAI;CAU3C"}
@@ -0,0 +1,141 @@
1
+ import { BaseVoice } from './BaseVoice.js';
2
+
3
+ /**
4
+ * Active playback handle for one {@link AudioGenerator} play call, backed by an
5
+ * `OscillatorNode` plus a per-voice envelope gain. Each `AudioManager.play`
6
+ * creates an independent voice.
7
+ *
8
+ * Exposes the generator parameters (`frequency`, `type`), mixes in
9
+ * {@link RatePitched} (`detune` is real; `playbackRate` is stored but inert — an
10
+ * oscillator has no playback rate, retune via `frequency`/`detune`), and (via
11
+ * {@link BaseVoice}) {@link Spatializable}.
12
+ *
13
+ * Graph: `oscillator → envelopeGain → [panner] → output(volume) → bus`. The
14
+ * envelope shapes the ADSR; the output gain carries the overall volume.
15
+ *
16
+ * @internal
17
+ */
18
+ class AudioGeneratorVoice extends BaseVoice {
19
+ _oscillator;
20
+ _envelopeGain;
21
+ _envelope;
22
+ _frequency;
23
+ _type;
24
+ _detune;
25
+ _playbackRate = 1;
26
+ constructor(init) {
27
+ super(init);
28
+ const ctx = this._audioContext;
29
+ const now = ctx.currentTime;
30
+ this._frequency = init.frequency;
31
+ this._type = init.type;
32
+ this._detune = init.detune;
33
+ this._envelope = init.envelope;
34
+ this._envelopeGain = ctx.createGain();
35
+ this._envelopeGain.connect(this._output);
36
+ const oscillator = ctx.createOscillator();
37
+ oscillator.type = init.type;
38
+ oscillator.frequency.value = init.frequency;
39
+ oscillator.detune.value = init.detune;
40
+ oscillator.connect(this._envelopeGain);
41
+ oscillator.onended = () => this._finish();
42
+ if (this._envelope) {
43
+ this._envelope.trigger(this._envelopeGain.gain, now);
44
+ }
45
+ else {
46
+ this._envelopeGain.gain.value = 1;
47
+ }
48
+ oscillator.start(now);
49
+ this._oscillator = oscillator;
50
+ }
51
+ // -------------------------------------------------------------------------
52
+ // Generator parameters
53
+ // -------------------------------------------------------------------------
54
+ get frequency() {
55
+ return this._frequency;
56
+ }
57
+ set frequency(value) {
58
+ this._frequency = value;
59
+ if (!this._ended) {
60
+ this._oscillator.frequency.setTargetAtTime(value, this._audioContext.currentTime, 0.01);
61
+ }
62
+ }
63
+ get type() {
64
+ return this._type;
65
+ }
66
+ set type(value) {
67
+ this._type = value;
68
+ if (!this._ended) {
69
+ this._oscillator.type = value;
70
+ }
71
+ }
72
+ // -------------------------------------------------------------------------
73
+ // RatePitched
74
+ // -------------------------------------------------------------------------
75
+ /**
76
+ * Stored but inert — an `OscillatorNode` has no playback rate. Retune via
77
+ * {@link AudioGeneratorVoice.frequency} or {@link AudioGeneratorVoice.detune}.
78
+ */
79
+ get playbackRate() {
80
+ return this._playbackRate;
81
+ }
82
+ set playbackRate(value) {
83
+ this._playbackRate = value;
84
+ }
85
+ get detune() {
86
+ return this._detune;
87
+ }
88
+ set detune(value) {
89
+ this._detune = value;
90
+ if (!this._ended) {
91
+ this._oscillator.detune.setTargetAtTime(value, this._audioContext.currentTime, 0.01);
92
+ }
93
+ }
94
+ // -------------------------------------------------------------------------
95
+ // Stop (envelope-aware)
96
+ // -------------------------------------------------------------------------
97
+ stop(fadeMs) {
98
+ if (this._ended)
99
+ return;
100
+ if (fadeMs !== undefined && fadeMs > 0) {
101
+ super.stop(fadeMs);
102
+ return;
103
+ }
104
+ if (this._envelope) {
105
+ const now = this._audioContext.currentTime;
106
+ this._envelope.release(this._envelopeGain.gain, now);
107
+ const stopAt = now + this._envelope.releaseMs / 1000;
108
+ try {
109
+ this._oscillator.stop(stopAt);
110
+ }
111
+ catch {
112
+ // already stopped
113
+ }
114
+ // _finish runs on the oscillator's onended at stopAt.
115
+ return;
116
+ }
117
+ super.stop();
118
+ }
119
+ // -------------------------------------------------------------------------
120
+ // BaseVoice hooks
121
+ // -------------------------------------------------------------------------
122
+ _routeThroughPanner(panner) {
123
+ this._envelopeGain.disconnect();
124
+ this._envelopeGain.connect(panner);
125
+ panner.connect(this._output);
126
+ }
127
+ _teardownSource() {
128
+ this._oscillator.onended = null;
129
+ try {
130
+ this._oscillator.stop(0);
131
+ }
132
+ catch {
133
+ // already stopped
134
+ }
135
+ this._oscillator.disconnect();
136
+ this._envelopeGain.disconnect();
137
+ }
138
+ }
139
+
140
+ export { AudioGeneratorVoice };
141
+ //# sourceMappingURL=AudioGeneratorVoice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioGeneratorVoice.js","sources":["../../../../src/audio/AudioGeneratorVoice.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /** Options for {@link AudioInput.open} — forwarded to `getUserMedia` audio constraints. */
2
+ export interface AudioInputOptions {
3
+ /** Specific input device id (from `enumerateDevices`). */
4
+ deviceId?: string;
5
+ /** Enable browser echo cancellation. Default: browser default. */
6
+ echoCancellation?: boolean;
7
+ /** Enable browser noise suppression. */
8
+ noiseSuppression?: boolean;
9
+ /** Enable browser automatic gain control. */
10
+ autoGainControl?: boolean;
11
+ }
12
+ /**
13
+ * A live audio capture source — a microphone or WebRTC `MediaStream` obtained
14
+ * via `getUserMedia`. **Not a {@link Playable}**: you don't "play" a mic, you
15
+ * *open* it. Pass it to {@link AudioManager.open} to get an
16
+ * {@link InputVoice} for monitoring, analysis, or recording.
17
+ *
18
+ * ```ts
19
+ * const mic = await AudioInput.open({ echoCancellation: true });
20
+ * const input = app.audio.open(mic);
21
+ * new AudioAnalyser({ source: input }); // visualise / beat-detect (no feedback)
22
+ * const clip = await input.record(2000); // capture 2s -> Sound
23
+ * mic.close(); // release the device
24
+ * ```
25
+ */
26
+ export declare class AudioInput {
27
+ private readonly _stream;
28
+ private constructor();
29
+ /** The underlying `MediaStream`. */
30
+ get stream(): MediaStream;
31
+ /**
32
+ * Request microphone access and resolve with an `AudioInput`. Throws / rejects
33
+ * if the user denies permission or no input device is available.
34
+ */
35
+ static open(options?: AudioInputOptions): Promise<AudioInput>;
36
+ /** Stop every track in the stream, releasing the input device. */
37
+ close(): void;
38
+ }
39
+ //# sourceMappingURL=AudioInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioInput.d.ts","sourceRoot":"","sources":["../../../src/audio/AudioInput.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,6CAA6C;IAC7C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IAEtC,OAAO;IAIP,oCAAoC;IACpC,IAAW,MAAM,IAAI,WAAW,CAE/B;IAED;;;OAGG;WACiB,IAAI,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IAe9E,kEAAkE;IAC3D,KAAK,IAAI,IAAI;CAKrB"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * A live audio capture source — a microphone or WebRTC `MediaStream` obtained
3
+ * via `getUserMedia`. **Not a {@link Playable}**: you don't "play" a mic, you
4
+ * *open* it. Pass it to {@link AudioManager.open} to get an
5
+ * {@link InputVoice} for monitoring, analysis, or recording.
6
+ *
7
+ * ```ts
8
+ * const mic = await AudioInput.open({ echoCancellation: true });
9
+ * const input = app.audio.open(mic);
10
+ * new AudioAnalyser({ source: input }); // visualise / beat-detect (no feedback)
11
+ * const clip = await input.record(2000); // capture 2s -> Sound
12
+ * mic.close(); // release the device
13
+ * ```
14
+ */
15
+ class AudioInput {
16
+ _stream;
17
+ constructor(stream) {
18
+ this._stream = stream;
19
+ }
20
+ /** The underlying `MediaStream`. */
21
+ get stream() {
22
+ return this._stream;
23
+ }
24
+ /**
25
+ * Request microphone access and resolve with an `AudioInput`. Throws / rejects
26
+ * if the user denies permission or no input device is available.
27
+ */
28
+ static async open(options = {}) {
29
+ if (typeof navigator === 'undefined' || !navigator.mediaDevices?.getUserMedia) {
30
+ throw new Error('AudioInput.open: getUserMedia is not available in this environment.');
31
+ }
32
+ const constraints = {};
33
+ if (options.deviceId !== undefined)
34
+ constraints.deviceId = options.deviceId;
35
+ if (options.echoCancellation !== undefined)
36
+ constraints.echoCancellation = options.echoCancellation;
37
+ if (options.noiseSuppression !== undefined)
38
+ constraints.noiseSuppression = options.noiseSuppression;
39
+ if (options.autoGainControl !== undefined)
40
+ constraints.autoGainControl = options.autoGainControl;
41
+ const stream = await navigator.mediaDevices.getUserMedia({ audio: Object.keys(constraints).length > 0 ? constraints : true });
42
+ return new AudioInput(stream);
43
+ }
44
+ /** Stop every track in the stream, releasing the input device. */
45
+ close() {
46
+ for (const track of this._stream.getTracks()) {
47
+ track.stop();
48
+ }
49
+ }
50
+ }
51
+
52
+ export { AudioInput };
53
+ //# sourceMappingURL=AudioInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioInput.js","sources":["../../../../src/audio/AudioInput.ts"],"sourcesContent":[null],"names":[],"mappings":"AAYA;;;;;;;;;;;;;AAaG;MACU,UAAU,CAAA;AACJ,IAAA,OAAO;AAExB,IAAA,WAAA,CAAoB,MAAmB,EAAA;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;IACvB;;AAGA,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,OAAO;IACrB;AAEA;;;AAGG;AACI,IAAA,aAAa,IAAI,CAAC,UAA6B,EAAE,EAAA;AACtD,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,EAAE;AAC7E,YAAA,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC;QACxF;QAEA,MAAM,WAAW,GAA0B,EAAE;AAC7C,QAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;AAAE,YAAA,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ;AAC3E,QAAA,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS;AAAE,YAAA,WAAW,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB;AACnG,QAAA,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS;AAAE,YAAA,WAAW,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB;AACnG,QAAA,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;AAAE,YAAA,WAAW,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe;AAEhG,QAAA,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,WAAW,GAAG,IAAI,EAAE,CAAC;AAC7H,QAAA,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC;IAC/B;;IAGO,KAAK,GAAA;QACV,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE;YAC5C,KAAK,CAAC,IAAI,EAAE;QACd;IACF;AACD;;;;"}
@@ -1,27 +1,40 @@
1
+ import { Signal } from '#core/Signal';
2
+ import type { System } from '#core/System';
3
+ import type { Time } from '#core/Time';
1
4
  import { AudioBus } from './AudioBus';
5
+ import type { AudioInput } from './AudioInput';
2
6
  import { AudioListener } from './AudioListener';
3
- import type { Sound } from './Sound';
7
+ import type { SpatialVoice } from './BaseVoice';
8
+ import { InputVoice } from './InputVoice';
9
+ import type { Playable, PlayOptions, Voice } from './Playable';
4
10
  /**
5
- * Module-level singleton that owns the engine-wide audio mix: three
6
- * pre-configured {@link AudioBus} instances (`master` ← `music` + `sound`),
7
- * a single shared {@link AudioListener} for spatial audio, and a registry
8
- * of any extra busses the user constructs.
11
+ * Per-{@link Application} owner of the audio mix: three pre-configured
12
+ * {@link AudioBus} instances (`master` ← `music` + `sound`), a single
13
+ * {@link AudioListener} for spatial audio, and a registry of any extra busses
14
+ * the user constructs.
9
15
  *
10
- * Access the singleton via {@link getAudioManager} (or `app.audio`). The
11
- * instance is constructed lazily on first access so client code that does
12
- * not need audio pays no startup cost.
13
- *
14
- * Drives the per-frame `_tick()` on the listener and every spatial sound;
15
- * propagates visibility-driven mute when {@link AudioManager.muteOnHidden}
16
- * is enabled.
16
+ * The `AudioContext` is shared process-wide, but each Application owns its own
17
+ * bus subtree, so multiple Applications mix independently. Access it via
18
+ * `app.audio`. Drives the per-frame `_tick()` on the listener and every spatial
19
+ * voice, and propagates visibility-driven mute when
20
+ * {@link AudioManager.muteOnHidden} is enabled.
17
21
  */
18
- export declare class AudioManager {
22
+ export declare class AudioManager implements System {
23
+ /** App-systems tick band — audio after interaction. @internal */
24
+ readonly order = 300;
19
25
  readonly master: AudioBus;
20
26
  readonly music: AudioBus;
21
27
  readonly sound: AudioBus;
22
28
  readonly listener: AudioListener;
29
+ /**
30
+ * Fires once when the AudioContext transitions to "running" — i.e. the first
31
+ * user gesture unlocks audio under the browser's autoplay policy. Check
32
+ * {@link AudioManager.locked} for the current state; sounds played while
33
+ * locked are deferred and start automatically on that gesture.
34
+ */
35
+ readonly onUnlock: Signal<[]>;
23
36
  private readonly _registered;
24
- private readonly _spatialSounds;
37
+ private readonly _spatial;
25
38
  private _muteOnHidden;
26
39
  constructor();
27
40
  /**
@@ -32,12 +45,51 @@ export declare class AudioManager {
32
45
  */
33
46
  get muteOnHidden(): boolean;
34
47
  set muteOnHidden(value: boolean);
35
- /** Called once per frame from Application.update(). */
36
- update(): void;
37
- /** Internal: called by Sound when it becomes spatial. */
38
- _registerSpatialSound(sound: Sound): void;
39
- /** Internal: called by Sound when it stops being spatial. */
40
- _unregisterSpatialSound(sound: Sound): void;
48
+ /**
49
+ * `true` while audio is blocked by the browser's autoplay policy — no user
50
+ * gesture has resumed the AudioContext yet. Voices played while locked are
51
+ * deferred (streams) or skipped (generators) until that gesture.
52
+ */
53
+ get locked(): boolean;
54
+ /**
55
+ * Play a {@link Playable} asset and return a {@link Voice} handle.
56
+ *
57
+ * Each call creates an independent playback instance. Call `play()` again
58
+ * to start another concurrent voice. The returned Voice lets you control
59
+ * this specific instance (`stop()`, `volume`, `fade()`, capabilities).
60
+ *
61
+ * @example
62
+ * ```ts
63
+ * const voice = app.audio.play(shootSfx);
64
+ * // Later:
65
+ * voice.stop();
66
+ * ```
67
+ *
68
+ * @param source - Any {@link Playable} asset (Sound, AudioStream, AudioGenerator).
69
+ * @param options - Per-play overrides (bus, volume, loop, playbackRate, detune, time, muted).
70
+ * @returns A {@link Voice} handle for the new instance.
71
+ */
72
+ play(source: Playable, options?: PlayOptions): Voice;
73
+ /**
74
+ * Open a live {@link AudioInput} (microphone / WebRTC stream) and return an
75
+ * {@link InputVoice}. The input is analysis-only by default (not audible) —
76
+ * tap it with an analyser, route it to a bus to monitor, or record it.
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * const mic = await AudioInput.open();
81
+ * const input = app.audio.open(mic);
82
+ * input.analyse(analyser);
83
+ * ```
84
+ */
85
+ open(input: AudioInput): InputVoice;
86
+ /** Called once per frame from Application.update(). The frame delta is unused here (hence `_delta`); present for {@link System} contract compliance. */
87
+ update(_delta: Time): void;
88
+ /**
89
+ * Internal: register a spatial voice for per-frame position updates. Called by
90
+ * a {@link Voice} the first time it is spatialized (position set or follow).
91
+ */
92
+ _registerSpatial(voice: SpatialVoice): void;
41
93
  /** Internal: called by Application when visibility changes. */
42
94
  _applyVisibility(visible: boolean): void;
43
95
  /**
@@ -58,18 +110,4 @@ export declare class AudioManager {
58
110
  hasBus(name: string): boolean;
59
111
  destroy(): void;
60
112
  }
61
- /**
62
- * Lazy accessor for the singleton {@link AudioManager}. Constructs the
63
- * instance on first call, returns the same instance for every subsequent
64
- * call. Equivalent to `app.audio`.
65
- */
66
- export declare function getAudioManager(): AudioManager;
67
- /**
68
- * Dispose and clear the module-level audio singleton.
69
- *
70
- * Useful for deterministic teardown between independent engine lifecycles
71
- * (for example hot-reload flows, embedded runtimes, or test harnesses that
72
- * spin up multiple isolated apps in one process).
73
- */
74
- export declare function disposeAudioManager(): void;
75
113
  //# sourceMappingURL=AudioManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudioManager.d.ts","sourceRoot":"","sources":["../../../src/audio/AudioManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAY;IACvB,SAAgB,MAAM,EAAE,QAAQ,CAAC;IACjC,SAAgB,KAAK,EAAE,QAAQ,CAAC;IAChC,SAAgB,KAAK,EAAE,QAAQ,CAAC;IAChC,SAAgB,QAAQ,EAAE,aAAa,CAAC;IAExC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IACnD,OAAO,CAAC,aAAa,CAAS;;IAc9B;;;;;OAKG;IACH,IAAW,YAAY,IAAI,OAAO,CAEjC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,OAAO,EAKrC;IAED,uDAAuD;IAChD,MAAM,IAAI,IAAI;IAOrB,yDAAyD;IAClD,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIhD,6DAA6D;IACtD,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIlD,+DAA+D;IACxD,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAM/C;;;;OAIG;IACI,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAQvC;;;;OAIG;IACI,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAczC,mEAAmE;IAC5D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAQrC,yDAAyD;IAClD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI7B,OAAO,IAAI,IAAI;CASvB;AAKD;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAK9C;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAK1C"}
1
+ {"version":3,"file":"AudioManager.d.ts","sourceRoot":"","sources":["../../../src/audio/AudioManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,qBAAa,YAAa,YAAW,MAAM;IACzC,iEAAiE;IACjE,SAAgB,KAAK,OAAO;IAC5B,SAAgB,MAAM,EAAE,QAAQ,CAAC;IACjC,SAAgB,KAAK,EAAE,QAAQ,CAAC;IAChC,SAAgB,KAAK,EAAE,QAAQ,CAAC;IAChC,SAAgB,QAAQ,EAAE,aAAa,CAAC;IACxC;;;;;OAKG;IACH,SAAgB,QAAQ,aAAgB;IAExC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,aAAa,CAAS;;IAkB9B;;;;;OAKG;IACH,IAAW,YAAY,IAAI,OAAO,CAEjC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,OAAO,EAKrC;IAED;;;;OAIG;IACH,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED;;;;;;;;;;;;;;;;;OAiBG;IACI,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,KAAK;IAI3D;;;;;;;;;;;OAWG;IACI,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;IAgB1C,wJAAwJ;IACjJ,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAYjC;;;OAGG;IACI,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAIlD,+DAA+D;IACxD,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAM/C;;;;OAIG;IACI,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAQvC;;;;OAIG;IACI,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAczC,mEAAmE;IAC5D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAQrC,yDAAyD;IAClD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI7B,OAAO,IAAI,IAAI;CASvB"}