@codexo/exojs 0.6.12 → 0.7.12

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 (512) hide show
  1. package/CHANGELOG.md +1424 -0
  2. package/dist/esm/animation/Tween.d.ts +60 -1
  3. package/dist/esm/animation/Tween.js +60 -1
  4. package/dist/esm/animation/Tween.js.map +1 -1
  5. package/dist/esm/animation/TweenManager.d.ts +10 -0
  6. package/dist/esm/animation/TweenManager.js +10 -0
  7. package/dist/esm/animation/TweenManager.js.map +1 -1
  8. package/dist/esm/animation/types.d.ts +15 -0
  9. package/dist/esm/animation/types.js +6 -0
  10. package/dist/esm/animation/types.js.map +1 -1
  11. package/dist/esm/audio/AbstractMedia.d.ts +29 -0
  12. package/dist/esm/audio/AbstractMedia.js +76 -0
  13. package/dist/esm/audio/AbstractMedia.js.map +1 -1
  14. package/dist/esm/audio/AudioAnalyser.d.ts +83 -23
  15. package/dist/esm/audio/AudioAnalyser.js +277 -57
  16. package/dist/esm/audio/AudioAnalyser.js.map +1 -1
  17. package/dist/esm/audio/AudioBus.d.ts +82 -0
  18. package/dist/esm/audio/AudioBus.js +255 -0
  19. package/dist/esm/audio/AudioBus.js.map +1 -0
  20. package/dist/esm/audio/AudioFilter.d.ts +16 -0
  21. package/dist/esm/audio/AudioFilter.js +13 -0
  22. package/dist/esm/audio/AudioFilter.js.map +1 -0
  23. package/dist/esm/audio/AudioListener.d.ts +39 -0
  24. package/dist/esm/audio/AudioListener.js +97 -0
  25. package/dist/esm/audio/AudioListener.js.map +1 -0
  26. package/dist/esm/audio/AudioManager.d.ts +68 -0
  27. package/dist/esm/audio/AudioManager.js +139 -0
  28. package/dist/esm/audio/AudioManager.js.map +1 -0
  29. package/dist/esm/audio/BeatDetector.d.ts +142 -0
  30. package/dist/esm/audio/BeatDetector.js +957 -0
  31. package/dist/esm/audio/BeatDetector.js.map +1 -0
  32. package/dist/esm/audio/Envelope.d.ts +44 -0
  33. package/dist/esm/audio/Envelope.js +60 -0
  34. package/dist/esm/audio/Envelope.js.map +1 -0
  35. package/dist/esm/audio/Media.d.ts +11 -0
  36. package/dist/esm/audio/Music.d.ts +20 -0
  37. package/dist/esm/audio/Music.js +45 -4
  38. package/dist/esm/audio/Music.js.map +1 -1
  39. package/dist/esm/audio/OscillatorSound.d.ts +98 -0
  40. package/dist/esm/audio/OscillatorSound.js +342 -0
  41. package/dist/esm/audio/OscillatorSound.js.map +1 -0
  42. package/dist/esm/audio/Sound.d.ts +119 -9
  43. package/dist/esm/audio/Sound.js +301 -117
  44. package/dist/esm/audio/Sound.js.map +1 -1
  45. package/dist/esm/audio/audio-context.d.ts +48 -0
  46. package/dist/esm/audio/audio-context.js +48 -5
  47. package/dist/esm/audio/audio-context.js.map +1 -1
  48. package/dist/esm/audio/crossFade.d.ts +19 -0
  49. package/dist/esm/audio/crossFade.js +26 -0
  50. package/dist/esm/audio/crossFade.js.map +1 -0
  51. package/dist/esm/audio/dsp/fft.d.ts +22 -0
  52. package/dist/esm/audio/dsp/mel.d.ts +43 -0
  53. package/dist/esm/audio/dsp/tempogram.d.ts +51 -0
  54. package/dist/esm/audio/filters/ChorusFilter.d.ts +52 -0
  55. package/dist/esm/audio/filters/ChorusFilter.js +143 -0
  56. package/dist/esm/audio/filters/ChorusFilter.js.map +1 -0
  57. package/dist/esm/audio/filters/CompressorFilter.d.ts +43 -0
  58. package/dist/esm/audio/filters/CompressorFilter.js +108 -0
  59. package/dist/esm/audio/filters/CompressorFilter.js.map +1 -0
  60. package/dist/esm/audio/filters/DelayFilter.d.ts +34 -0
  61. package/dist/esm/audio/filters/DelayFilter.js +110 -0
  62. package/dist/esm/audio/filters/DelayFilter.js.map +1 -0
  63. package/dist/esm/audio/filters/DuckingFilter.d.ts +44 -0
  64. package/dist/esm/audio/filters/DuckingFilter.js +164 -0
  65. package/dist/esm/audio/filters/DuckingFilter.js.map +1 -0
  66. package/dist/esm/audio/filters/EqualizerFilter.d.ts +49 -0
  67. package/dist/esm/audio/filters/EqualizerFilter.js +134 -0
  68. package/dist/esm/audio/filters/EqualizerFilter.js.map +1 -0
  69. package/dist/esm/audio/filters/GranularFilter.d.ts +62 -0
  70. package/dist/esm/audio/filters/GranularFilter.js +176 -0
  71. package/dist/esm/audio/filters/GranularFilter.js.map +1 -0
  72. package/dist/esm/audio/filters/HighpassFilter.d.ts +29 -0
  73. package/dist/esm/audio/filters/HighpassFilter.js +71 -0
  74. package/dist/esm/audio/filters/HighpassFilter.js.map +1 -0
  75. package/dist/esm/audio/filters/LowpassFilter.d.ts +29 -0
  76. package/dist/esm/audio/filters/LowpassFilter.js +71 -0
  77. package/dist/esm/audio/filters/LowpassFilter.js.map +1 -0
  78. package/dist/esm/audio/filters/PitchShiftFilter.d.ts +44 -0
  79. package/dist/esm/audio/filters/PitchShiftFilter.js +132 -0
  80. package/dist/esm/audio/filters/PitchShiftFilter.js.map +1 -0
  81. package/dist/esm/audio/filters/ReverbFilter.d.ts +36 -0
  82. package/dist/esm/audio/filters/ReverbFilter.js +118 -0
  83. package/dist/esm/audio/filters/ReverbFilter.js.map +1 -0
  84. package/dist/esm/audio/filters/VocoderFilter.d.ts +49 -0
  85. package/dist/esm/audio/filters/VocoderFilter.js +174 -0
  86. package/dist/esm/audio/filters/VocoderFilter.js.map +1 -0
  87. package/dist/esm/audio/filters/WorkletFilter.d.ts +51 -0
  88. package/dist/esm/audio/filters/WorkletFilter.js +106 -0
  89. package/dist/esm/audio/filters/WorkletFilter.js.map +1 -0
  90. package/dist/esm/audio/filters/index.d.ts +12 -0
  91. package/dist/esm/audio/index.d.ts +15 -1
  92. package/dist/esm/audio/worklet/registerWorklet.d.ts +10 -0
  93. package/dist/esm/audio/worklet/registerWorklet.js +44 -0
  94. package/dist/esm/audio/worklet/registerWorklet.js.map +1 -0
  95. package/dist/esm/core/Application.d.ts +82 -0
  96. package/dist/esm/core/Application.js +137 -2
  97. package/dist/esm/core/Application.js.map +1 -1
  98. package/dist/esm/core/Bounds.d.ts +23 -0
  99. package/dist/esm/core/Bounds.js +23 -0
  100. package/dist/esm/core/Bounds.js.map +1 -1
  101. package/dist/esm/core/Clock.d.ts +21 -0
  102. package/dist/esm/core/Clock.js +21 -0
  103. package/dist/esm/core/Clock.js.map +1 -1
  104. package/dist/esm/core/Color.d.ts +35 -0
  105. package/dist/esm/core/Color.js +35 -0
  106. package/dist/esm/core/Color.js.map +1 -1
  107. package/dist/esm/core/Scene.d.ts +46 -0
  108. package/dist/esm/core/Scene.js +27 -0
  109. package/dist/esm/core/Scene.js.map +1 -1
  110. package/dist/esm/core/SceneManager.d.ts +62 -0
  111. package/dist/esm/core/SceneManager.js +49 -0
  112. package/dist/esm/core/SceneManager.js.map +1 -1
  113. package/dist/esm/core/SceneNode.d.ts +40 -1
  114. package/dist/esm/core/SceneNode.js +75 -6
  115. package/dist/esm/core/SceneNode.js.map +1 -1
  116. package/dist/esm/core/Signal.d.ts +44 -0
  117. package/dist/esm/core/Signal.js +39 -0
  118. package/dist/esm/core/Signal.js.map +1 -1
  119. package/dist/esm/core/Time.d.ts +21 -0
  120. package/dist/esm/core/Time.js +22 -1
  121. package/dist/esm/core/Time.js.map +1 -1
  122. package/dist/esm/core/Timer.d.ts +7 -0
  123. package/dist/esm/core/Timer.js +7 -0
  124. package/dist/esm/core/Timer.js.map +1 -1
  125. package/dist/esm/core/capabilities.d.ts +12 -0
  126. package/dist/esm/core/capabilities.js +12 -0
  127. package/dist/esm/core/capabilities.js.map +1 -1
  128. package/dist/esm/core/index.d.ts +0 -1
  129. package/dist/esm/core/types.d.ts +37 -0
  130. package/dist/esm/core/utils.d.ts +48 -0
  131. package/dist/esm/core/utils.js +48 -0
  132. package/dist/esm/core/utils.js.map +1 -1
  133. package/dist/esm/debug/BoundingBoxesLayer.d.ts +26 -0
  134. package/dist/esm/debug/BoundingBoxesLayer.js +136 -0
  135. package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -0
  136. package/dist/esm/debug/DebugLayer.d.ts +42 -0
  137. package/dist/esm/debug/DebugLayer.js +34 -0
  138. package/dist/esm/debug/DebugLayer.js.map +1 -0
  139. package/dist/esm/debug/DebugOverlay.d.ts +59 -0
  140. package/dist/esm/debug/DebugOverlay.js +123 -0
  141. package/dist/esm/debug/DebugOverlay.js.map +1 -0
  142. package/dist/esm/debug/HitTestLayer.d.ts +32 -0
  143. package/dist/esm/debug/HitTestLayer.js +118 -0
  144. package/dist/esm/debug/HitTestLayer.js.map +1 -0
  145. package/dist/esm/debug/PerformanceLayer.d.ts +37 -0
  146. package/dist/esm/debug/PerformanceLayer.js +193 -0
  147. package/dist/esm/debug/PerformanceLayer.js.map +1 -0
  148. package/dist/esm/debug/PointerStackLayer.d.ts +31 -0
  149. package/dist/esm/debug/PointerStackLayer.js +160 -0
  150. package/dist/esm/debug/PointerStackLayer.js.map +1 -0
  151. package/dist/esm/debug/index.d.ts +6 -0
  152. package/dist/esm/debug/index.js +7 -0
  153. package/dist/esm/debug/index.js.map +1 -0
  154. package/dist/esm/index.js +30 -4
  155. package/dist/esm/index.js.map +1 -1
  156. package/dist/esm/input/ArcadeStickGamepadMapping.d.ts +7 -0
  157. package/dist/esm/input/ArcadeStickGamepadMapping.js +7 -0
  158. package/dist/esm/input/ArcadeStickGamepadMapping.js.map +1 -1
  159. package/dist/esm/input/GameCubeGamepadMapping.d.ts +9 -0
  160. package/dist/esm/input/GameCubeGamepadMapping.js +9 -0
  161. package/dist/esm/input/GameCubeGamepadMapping.js.map +1 -1
  162. package/dist/esm/input/Gamepad.d.ts +48 -0
  163. package/dist/esm/input/Gamepad.js +43 -0
  164. package/dist/esm/input/Gamepad.js.map +1 -1
  165. package/dist/esm/input/GamepadChannels.d.ts +8 -0
  166. package/dist/esm/input/GamepadChannels.js +8 -0
  167. package/dist/esm/input/GamepadChannels.js.map +1 -1
  168. package/dist/esm/input/GamepadControl.d.ts +18 -0
  169. package/dist/esm/input/GamepadControl.js +13 -0
  170. package/dist/esm/input/GamepadControl.js.map +1 -1
  171. package/dist/esm/input/GamepadDefinitions.d.ts +64 -1
  172. package/dist/esm/input/GamepadDefinitions.js +40 -1
  173. package/dist/esm/input/GamepadDefinitions.js.map +1 -1
  174. package/dist/esm/input/GamepadMapping.d.ts +32 -2
  175. package/dist/esm/input/GamepadMapping.js +24 -0
  176. package/dist/esm/input/GamepadMapping.js.map +1 -1
  177. package/dist/esm/input/GamepadPromptLayouts.d.ts +32 -1
  178. package/dist/esm/input/GamepadPromptLayouts.js +25 -1
  179. package/dist/esm/input/GamepadPromptLayouts.js.map +1 -1
  180. package/dist/esm/input/GenericDualAnalogGamepadMapping.d.ts +10 -0
  181. package/dist/esm/input/GenericDualAnalogGamepadMapping.js +10 -0
  182. package/dist/esm/input/GenericDualAnalogGamepadMapping.js.map +1 -1
  183. package/dist/esm/input/GestureRecognizer.d.ts +11 -2
  184. package/dist/esm/input/GestureRecognizer.js +11 -2
  185. package/dist/esm/input/GestureRecognizer.js.map +1 -1
  186. package/dist/esm/input/Input.d.ts +24 -0
  187. package/dist/esm/input/Input.js +22 -0
  188. package/dist/esm/input/Input.js.map +1 -1
  189. package/dist/esm/input/InputManager.d.ts +43 -0
  190. package/dist/esm/input/InputManager.js +68 -5
  191. package/dist/esm/input/InputManager.js.map +1 -1
  192. package/dist/esm/input/InteractionEvent.d.ts +31 -0
  193. package/dist/esm/input/InteractionEvent.js +37 -0
  194. package/dist/esm/input/InteractionEvent.js.map +1 -0
  195. package/dist/esm/input/InteractionManager.d.ts +163 -0
  196. package/dist/esm/input/InteractionManager.js +575 -0
  197. package/dist/esm/input/InteractionManager.js.map +1 -0
  198. package/dist/esm/input/JoyConLeftGamepadMapping.d.ts +9 -0
  199. package/dist/esm/input/JoyConLeftGamepadMapping.js +9 -0
  200. package/dist/esm/input/JoyConLeftGamepadMapping.js.map +1 -1
  201. package/dist/esm/input/JoyConRightGamepadMapping.d.ts +9 -0
  202. package/dist/esm/input/JoyConRightGamepadMapping.js +9 -0
  203. package/dist/esm/input/JoyConRightGamepadMapping.js.map +1 -1
  204. package/dist/esm/input/PlayStationGamepadMapping.d.ts +8 -0
  205. package/dist/esm/input/PlayStationGamepadMapping.js +8 -0
  206. package/dist/esm/input/PlayStationGamepadMapping.js.map +1 -1
  207. package/dist/esm/input/Pointer.d.ts +22 -0
  208. package/dist/esm/input/Pointer.js +22 -0
  209. package/dist/esm/input/Pointer.js.map +1 -1
  210. package/dist/esm/input/SteamControllerGamepadMapping.d.ts +8 -0
  211. package/dist/esm/input/SteamControllerGamepadMapping.js +8 -0
  212. package/dist/esm/input/SteamControllerGamepadMapping.js.map +1 -1
  213. package/dist/esm/input/SwitchProGamepadMapping.d.ts +9 -0
  214. package/dist/esm/input/SwitchProGamepadMapping.js +9 -0
  215. package/dist/esm/input/SwitchProGamepadMapping.js.map +1 -1
  216. package/dist/esm/input/XboxGamepadMapping.d.ts +8 -0
  217. package/dist/esm/input/XboxGamepadMapping.js +8 -0
  218. package/dist/esm/input/XboxGamepadMapping.js.map +1 -1
  219. package/dist/esm/input/index.d.ts +2 -0
  220. package/dist/esm/input/interaction-hooks.d.ts +34 -0
  221. package/dist/esm/input/interaction-hooks.js +35 -0
  222. package/dist/esm/input/interaction-hooks.js.map +1 -0
  223. package/dist/esm/input/types.d.ts +20 -0
  224. package/dist/esm/input/types.js +20 -0
  225. package/dist/esm/input/types.js.map +1 -1
  226. package/dist/esm/math/AbstractVector.d.ts +83 -0
  227. package/dist/esm/math/AbstractVector.js +83 -0
  228. package/dist/esm/math/AbstractVector.js.map +1 -1
  229. package/dist/esm/math/Circle.d.ts +44 -2
  230. package/dist/esm/math/Circle.js +116 -16
  231. package/dist/esm/math/Circle.js.map +1 -1
  232. package/dist/esm/math/CircleLike.d.ts +1 -0
  233. package/dist/esm/math/Collision.d.ts +39 -0
  234. package/dist/esm/math/Collision.js +5 -0
  235. package/dist/esm/math/Collision.js.map +1 -1
  236. package/dist/esm/math/Ellipse.d.ts +11 -0
  237. package/dist/esm/math/Ellipse.js +18 -2
  238. package/dist/esm/math/Ellipse.js.map +1 -1
  239. package/dist/esm/math/EllipseLike.d.ts +3 -0
  240. package/dist/esm/math/Flags.d.ts +31 -0
  241. package/dist/esm/math/Flags.js +31 -0
  242. package/dist/esm/math/Flags.js.map +1 -1
  243. package/dist/esm/math/Interval.d.ts +15 -0
  244. package/dist/esm/math/Interval.js +16 -1
  245. package/dist/esm/math/Interval.js.map +1 -1
  246. package/dist/esm/math/Line.d.ts +17 -1
  247. package/dist/esm/math/Line.js +17 -1
  248. package/dist/esm/math/Line.js.map +1 -1
  249. package/dist/esm/math/LineLike.d.ts +1 -0
  250. package/dist/esm/math/Matrix.d.ts +44 -3
  251. package/dist/esm/math/Matrix.js +44 -3
  252. package/dist/esm/math/Matrix.js.map +1 -1
  253. package/dist/esm/math/ObservableSize.d.ts +7 -0
  254. package/dist/esm/math/ObservableSize.js +7 -0
  255. package/dist/esm/math/ObservableSize.js.map +1 -1
  256. package/dist/esm/math/ObservableVector.d.ts +11 -2
  257. package/dist/esm/math/ObservableVector.js +13 -2
  258. package/dist/esm/math/ObservableVector.js.map +1 -1
  259. package/dist/esm/math/PointLike.d.ts +1 -0
  260. package/dist/esm/math/PolarVector.d.ts +15 -0
  261. package/dist/esm/math/PolarVector.js +16 -1
  262. package/dist/esm/math/PolarVector.js.map +1 -1
  263. package/dist/esm/math/Polygon.d.ts +35 -1
  264. package/dist/esm/math/Polygon.js +78 -6
  265. package/dist/esm/math/Polygon.js.map +1 -1
  266. package/dist/esm/math/PolygonLike.d.ts +4 -0
  267. package/dist/esm/math/Quadtree.d.ts +84 -0
  268. package/dist/esm/math/Quadtree.js +204 -0
  269. package/dist/esm/math/Quadtree.js.map +1 -0
  270. package/dist/esm/math/Random.d.ts +25 -0
  271. package/dist/esm/math/Random.js +26 -1
  272. package/dist/esm/math/Random.js.map +1 -1
  273. package/dist/esm/math/Rectangle.d.ts +15 -0
  274. package/dist/esm/math/Rectangle.js +17 -2
  275. package/dist/esm/math/Rectangle.js.map +1 -1
  276. package/dist/esm/math/RectangleLike.d.ts +1 -0
  277. package/dist/esm/math/Segment.d.ts +7 -0
  278. package/dist/esm/math/Segment.js +7 -0
  279. package/dist/esm/math/Segment.js.map +1 -1
  280. package/dist/esm/math/ShapeLike.d.ts +6 -0
  281. package/dist/esm/math/Size.d.ts +9 -0
  282. package/dist/esm/math/Size.js +10 -1
  283. package/dist/esm/math/Size.js.map +1 -1
  284. package/dist/esm/math/Vector.d.ts +16 -0
  285. package/dist/esm/math/Vector.js +17 -1
  286. package/dist/esm/math/Vector.js.map +1 -1
  287. package/dist/esm/math/collision-detection.d.ts +47 -1
  288. package/dist/esm/math/collision-detection.js +231 -17
  289. package/dist/esm/math/collision-detection.js.map +1 -1
  290. package/dist/esm/math/collision-primitives.d.ts +23 -0
  291. package/dist/esm/math/collision-primitives.js +23 -0
  292. package/dist/esm/math/collision-primitives.js.map +1 -1
  293. package/dist/esm/math/geometry.d.ts +42 -0
  294. package/dist/esm/math/geometry.js +37 -0
  295. package/dist/esm/math/geometry.js.map +1 -1
  296. package/dist/esm/math/index.d.ts +1 -0
  297. package/dist/esm/math/utils.d.ts +41 -0
  298. package/dist/esm/math/utils.js +41 -0
  299. package/dist/esm/math/utils.js.map +1 -1
  300. package/dist/esm/particles/Particle.d.ts +37 -0
  301. package/dist/esm/particles/Particle.js +37 -0
  302. package/dist/esm/particles/Particle.js.map +1 -1
  303. package/dist/esm/particles/ParticleProperties.d.ts +15 -0
  304. package/dist/esm/particles/ParticleSystem.d.ts +69 -0
  305. package/dist/esm/particles/ParticleSystem.js +70 -0
  306. package/dist/esm/particles/ParticleSystem.js.map +1 -1
  307. package/dist/esm/particles/affectors/ColorAffector.d.ts +13 -0
  308. package/dist/esm/particles/affectors/ColorAffector.js +13 -0
  309. package/dist/esm/particles/affectors/ColorAffector.js.map +1 -1
  310. package/dist/esm/particles/affectors/ForceAffector.d.ts +11 -0
  311. package/dist/esm/particles/affectors/ForceAffector.js +11 -0
  312. package/dist/esm/particles/affectors/ForceAffector.js.map +1 -1
  313. package/dist/esm/particles/affectors/ParticleAffector.d.ts +13 -0
  314. package/dist/esm/particles/affectors/ScaleAffector.d.ts +10 -0
  315. package/dist/esm/particles/affectors/ScaleAffector.js +10 -0
  316. package/dist/esm/particles/affectors/ScaleAffector.js.map +1 -1
  317. package/dist/esm/particles/affectors/TorqueAffector.d.ts +11 -0
  318. package/dist/esm/particles/affectors/TorqueAffector.js +12 -1
  319. package/dist/esm/particles/affectors/TorqueAffector.js.map +1 -1
  320. package/dist/esm/particles/emitters/ParticleEmitter.d.ts +13 -0
  321. package/dist/esm/particles/emitters/ParticleOptions.d.ts +16 -0
  322. package/dist/esm/particles/emitters/ParticleOptions.js +16 -0
  323. package/dist/esm/particles/emitters/ParticleOptions.js.map +1 -1
  324. package/dist/esm/particles/emitters/UniversalEmitter.d.ts +23 -0
  325. package/dist/esm/particles/emitters/UniversalEmitter.js +23 -0
  326. package/dist/esm/particles/emitters/UniversalEmitter.js.map +1 -1
  327. package/dist/esm/rendering/CallbackRenderPass.d.ts +12 -0
  328. package/dist/esm/rendering/CallbackRenderPass.js +12 -0
  329. package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
  330. package/dist/esm/rendering/Container.d.ts +44 -0
  331. package/dist/esm/rendering/Container.js +62 -0
  332. package/dist/esm/rendering/Container.js.map +1 -1
  333. package/dist/esm/rendering/Drawable.d.ts +22 -0
  334. package/dist/esm/rendering/Drawable.js +22 -0
  335. package/dist/esm/rendering/Drawable.js.map +1 -1
  336. package/dist/esm/rendering/RenderBackend.d.ts +13 -0
  337. package/dist/esm/rendering/RenderBackendType.d.ts +4 -0
  338. package/dist/esm/rendering/RenderBackendType.js +4 -0
  339. package/dist/esm/rendering/RenderBackendType.js.map +1 -1
  340. package/dist/esm/rendering/RenderNode.d.ts +45 -0
  341. package/dist/esm/rendering/RenderNode.js +62 -0
  342. package/dist/esm/rendering/RenderNode.js.map +1 -1
  343. package/dist/esm/rendering/RenderPass.d.ts +8 -0
  344. package/dist/esm/rendering/RenderStats.d.ts +19 -0
  345. package/dist/esm/rendering/RenderStats.js +7 -0
  346. package/dist/esm/rendering/RenderStats.js.map +1 -1
  347. package/dist/esm/rendering/RenderTarget.d.ts +17 -0
  348. package/dist/esm/rendering/RenderTarget.js +17 -0
  349. package/dist/esm/rendering/RenderTarget.js.map +1 -1
  350. package/dist/esm/rendering/RenderTargetPass.d.ts +11 -0
  351. package/dist/esm/rendering/RenderTargetPass.js +7 -0
  352. package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
  353. package/dist/esm/rendering/Renderer.d.ts +15 -0
  354. package/dist/esm/rendering/RendererRegistry.d.ts +7 -0
  355. package/dist/esm/rendering/RendererRegistry.js +7 -0
  356. package/dist/esm/rendering/RendererRegistry.js.map +1 -1
  357. package/dist/esm/rendering/View.d.ts +73 -6
  358. package/dist/esm/rendering/View.js +69 -2
  359. package/dist/esm/rendering/View.js.map +1 -1
  360. package/dist/esm/rendering/filters/BlurFilter.d.ts +9 -0
  361. package/dist/esm/rendering/filters/BlurFilter.js +8 -0
  362. package/dist/esm/rendering/filters/BlurFilter.js.map +1 -1
  363. package/dist/esm/rendering/filters/ColorFilter.d.ts +7 -0
  364. package/dist/esm/rendering/filters/ColorFilter.js +7 -0
  365. package/dist/esm/rendering/filters/ColorFilter.js.map +1 -1
  366. package/dist/esm/rendering/filters/Filter.d.ts +23 -0
  367. package/dist/esm/rendering/filters/Filter.js +20 -0
  368. package/dist/esm/rendering/filters/Filter.js.map +1 -1
  369. package/dist/esm/rendering/filters/WebGl2ShaderFilter.d.ts +114 -0
  370. package/dist/esm/rendering/filters/WebGl2ShaderFilter.js +273 -0
  371. package/dist/esm/rendering/filters/WebGl2ShaderFilter.js.map +1 -0
  372. package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts +116 -0
  373. package/dist/esm/rendering/filters/WebGpuShaderFilter.js +402 -0
  374. package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -0
  375. package/dist/esm/rendering/index.d.ts +3 -0
  376. package/dist/esm/rendering/mesh/Mesh.d.ts +2 -0
  377. package/dist/esm/rendering/mesh/Mesh.js +3 -0
  378. package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
  379. package/dist/esm/rendering/primitives/Graphics.d.ts +34 -0
  380. package/dist/esm/rendering/primitives/Graphics.js +34 -0
  381. package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
  382. package/dist/esm/rendering/shader/Shader.d.ts +36 -0
  383. package/dist/esm/rendering/shader/Shader.js +26 -0
  384. package/dist/esm/rendering/shader/Shader.js.map +1 -1
  385. package/dist/esm/rendering/shader/ShaderAttribute.d.ts +13 -0
  386. package/dist/esm/rendering/shader/ShaderAttribute.js +13 -0
  387. package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
  388. package/dist/esm/rendering/shader/ShaderUniform.d.ts +27 -0
  389. package/dist/esm/rendering/shader/ShaderUniform.js +28 -1
  390. package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -1
  391. package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.d.ts +34 -0
  392. package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js +60 -0
  393. package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js.map +1 -0
  394. package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +38 -0
  395. package/dist/esm/rendering/sprite/AnimatedSprite.js +36 -0
  396. package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
  397. package/dist/esm/rendering/sprite/Sprite.d.ts +62 -1
  398. package/dist/esm/rendering/sprite/Sprite.js +97 -19
  399. package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
  400. package/dist/esm/rendering/sprite/Spritesheet.d.ts +25 -0
  401. package/dist/esm/rendering/sprite/Spritesheet.js +20 -0
  402. package/dist/esm/rendering/sprite/Spritesheet.js.map +1 -1
  403. package/dist/esm/rendering/text/Text.d.ts +2 -0
  404. package/dist/esm/rendering/text/Text.js +2 -0
  405. package/dist/esm/rendering/text/Text.js.map +1 -1
  406. package/dist/esm/rendering/text/TextStyle.d.ts +29 -0
  407. package/dist/esm/rendering/text/TextStyle.js +24 -0
  408. package/dist/esm/rendering/text/TextStyle.js.map +1 -1
  409. package/dist/esm/rendering/text/types.d.ts +1 -0
  410. package/dist/esm/rendering/texture/RenderTexture.d.ts +16 -0
  411. package/dist/esm/rendering/texture/RenderTexture.js +16 -0
  412. package/dist/esm/rendering/texture/RenderTexture.js.map +1 -1
  413. package/dist/esm/rendering/texture/Sampler.d.ts +23 -0
  414. package/dist/esm/rendering/texture/Sampler.js +13 -0
  415. package/dist/esm/rendering/texture/Sampler.js.map +1 -1
  416. package/dist/esm/rendering/texture/Texture.d.ts +30 -0
  417. package/dist/esm/rendering/texture/Texture.js +30 -0
  418. package/dist/esm/rendering/texture/Texture.js.map +1 -1
  419. package/dist/esm/rendering/types.d.ts +29 -0
  420. package/dist/esm/rendering/types.js +29 -0
  421. package/dist/esm/rendering/types.js.map +1 -1
  422. package/dist/esm/rendering/utils.d.ts +20 -0
  423. package/dist/esm/rendering/utils.js +10 -0
  424. package/dist/esm/rendering/utils.js.map +1 -1
  425. package/dist/esm/rendering/video/Video.d.ts +39 -1
  426. package/dist/esm/rendering/video/Video.js +68 -6
  427. package/dist/esm/rendering/video/Video.js.map +1 -1
  428. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +7 -0
  429. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +7 -0
  430. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
  431. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +17 -4
  432. package/dist/esm/rendering/webgl2/WebGl2Backend.js +20 -16
  433. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
  434. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +8 -0
  435. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +8 -0
  436. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
  437. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +45 -8
  438. package/dist/esm/rendering/webgpu/WebGpuBackend.js +160 -40
  439. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
  440. package/dist/esm/resources/AbstractAssetFactory.d.ts +20 -0
  441. package/dist/esm/resources/AbstractAssetFactory.js +20 -0
  442. package/dist/esm/resources/AbstractAssetFactory.js.map +1 -1
  443. package/dist/esm/resources/AssetFactory.d.ts +26 -0
  444. package/dist/esm/resources/AssetManifest.d.ts +45 -0
  445. package/dist/esm/resources/AssetManifest.js +25 -0
  446. package/dist/esm/resources/AssetManifest.js.map +1 -1
  447. package/dist/esm/resources/CacheFirstStrategy.d.ts +12 -0
  448. package/dist/esm/resources/CacheFirstStrategy.js +12 -0
  449. package/dist/esm/resources/CacheFirstStrategy.js.map +1 -1
  450. package/dist/esm/resources/CacheStore.d.ts +23 -0
  451. package/dist/esm/resources/CacheStrategy.d.ts +20 -0
  452. package/dist/esm/resources/Database.d.ts +45 -0
  453. package/dist/esm/resources/FactoryRegistry.d.ts +28 -0
  454. package/dist/esm/resources/FactoryRegistry.js +24 -0
  455. package/dist/esm/resources/FactoryRegistry.js.map +1 -1
  456. package/dist/esm/resources/IndexedDbDatabase.d.ts +22 -1
  457. package/dist/esm/resources/IndexedDbDatabase.js +21 -0
  458. package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
  459. package/dist/esm/resources/IndexedDbStore.d.ts +20 -0
  460. package/dist/esm/resources/IndexedDbStore.js +12 -0
  461. package/dist/esm/resources/IndexedDbStore.js.map +1 -1
  462. package/dist/esm/resources/Loader.d.ts +167 -0
  463. package/dist/esm/resources/Loader.js +110 -0
  464. package/dist/esm/resources/Loader.js.map +1 -1
  465. package/dist/esm/resources/NetworkOnlyStrategy.d.ts +8 -0
  466. package/dist/esm/resources/NetworkOnlyStrategy.js +8 -0
  467. package/dist/esm/resources/NetworkOnlyStrategy.js.map +1 -1
  468. package/dist/esm/resources/factories/BinaryFactory.d.ts +13 -0
  469. package/dist/esm/resources/factories/BinaryFactory.js +13 -0
  470. package/dist/esm/resources/factories/BinaryFactory.js.map +1 -1
  471. package/dist/esm/resources/factories/FontFactory.d.ts +37 -0
  472. package/dist/esm/resources/factories/FontFactory.js +26 -0
  473. package/dist/esm/resources/factories/FontFactory.js.map +1 -1
  474. package/dist/esm/resources/factories/ImageFactory.d.ts +24 -0
  475. package/dist/esm/resources/factories/ImageFactory.js +19 -0
  476. package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
  477. package/dist/esm/resources/factories/JsonFactory.d.ts +13 -0
  478. package/dist/esm/resources/factories/JsonFactory.js +13 -0
  479. package/dist/esm/resources/factories/JsonFactory.js.map +1 -1
  480. package/dist/esm/resources/factories/MusicFactory.d.ts +36 -0
  481. package/dist/esm/resources/factories/MusicFactory.js +44 -4
  482. package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
  483. package/dist/esm/resources/factories/SoundFactory.d.ts +29 -0
  484. package/dist/esm/resources/factories/SoundFactory.js +18 -0
  485. package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
  486. package/dist/esm/resources/factories/SvgFactory.d.ts +19 -0
  487. package/dist/esm/resources/factories/SvgFactory.js +19 -0
  488. package/dist/esm/resources/factories/SvgFactory.js.map +1 -1
  489. package/dist/esm/resources/factories/TextFactory.d.ts +11 -0
  490. package/dist/esm/resources/factories/TextFactory.js +11 -0
  491. package/dist/esm/resources/factories/TextFactory.js.map +1 -1
  492. package/dist/esm/resources/factories/TextureFactory.d.ts +25 -0
  493. package/dist/esm/resources/factories/TextureFactory.js +20 -0
  494. package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
  495. package/dist/esm/resources/factories/VideoFactory.d.ts +37 -0
  496. package/dist/esm/resources/factories/VideoFactory.js +48 -5
  497. package/dist/esm/resources/factories/VideoFactory.js.map +1 -1
  498. package/dist/esm/resources/factories/VttFactory.d.ts +18 -0
  499. package/dist/esm/resources/factories/VttFactory.js +24 -0
  500. package/dist/esm/resources/factories/VttFactory.js.map +1 -1
  501. package/dist/esm/resources/factories/WasmFactory.d.ts +16 -0
  502. package/dist/esm/resources/factories/WasmFactory.js +16 -0
  503. package/dist/esm/resources/factories/WasmFactory.js.map +1 -1
  504. package/dist/esm/resources/utils.d.ts +10 -0
  505. package/dist/esm/resources/utils.js +10 -0
  506. package/dist/esm/resources/utils.js.map +1 -1
  507. package/dist/exo.esm.js +11182 -2538
  508. package/dist/exo.esm.js.map +1 -1
  509. package/package.json +20 -9
  510. package/dist/esm/core/Quadtree.d.ts +0 -20
  511. package/dist/esm/core/Quadtree.js +0 -86
  512. package/dist/esm/core/Quadtree.js.map +0 -1
@@ -2,6 +2,11 @@ import { triangulate } from './triangulate.js';
2
2
  import { Vector } from './Vector.js';
3
3
  import { tau } from './utils.js';
4
4
 
5
+ /**
6
+ * Build a single straight line segment as a triangle-list mesh with the given
7
+ * pixel `width`. Returns {@link MeshGeometryData} with 4 vertices and 2
8
+ * triangles.
9
+ */
5
10
  const buildLine = (startX, startY, endX, endY, width) => {
6
11
  const points = [startX, startY, endX, endY];
7
12
  const distance = width / 2;
@@ -18,6 +23,15 @@ const buildLine = (startX, startY, endX, endY, width) => {
18
23
  const indices = new Uint16Array([0, 1, 3, 0, 3, 2]);
19
24
  return { vertices, indices, points };
20
25
  };
26
+ /**
27
+ * Build a multi-point polyline as a triangle-list mesh. `points` must contain
28
+ * at least two `(x, y)` pairs (minimum 4 values). When the first and last
29
+ * points coincide the path is treated as closed and an interpolated midpoint
30
+ * is inserted to avoid degenerate geometry.
31
+ *
32
+ * Uses miter joints at each interior vertex; joints exceeding 14× lineWidth
33
+ * are bevelled to avoid extremely long spikes.
34
+ */
21
35
  const buildPath = (points, width) => {
22
36
  if (points.length < 4) {
23
37
  throw new Error('At least two X/Y pairs are required to build a line.');
@@ -149,6 +163,11 @@ const buildPath = (points, width) => {
149
163
  }
150
164
  return { vertices, indices, points: outlinePoints };
151
165
  };
166
+ /**
167
+ * Build a filled circle as a triangle-list mesh. Vertex count scales with
168
+ * `radius` (approximately `15√(2r)` segments) so small circles use fewer
169
+ * triangles than large ones.
170
+ */
152
171
  const buildCircle = (centerX, centerY, radius) => {
153
172
  const length = Math.floor(15 * Math.sqrt(radius + radius));
154
173
  const segment = (Math.PI * 2) / length;
@@ -174,6 +193,10 @@ const buildCircle = (centerX, centerY, radius) => {
174
193
  }
175
194
  return { vertices, indices, points };
176
195
  };
196
+ /**
197
+ * Build a filled axis-aligned ellipse as a triangle-list mesh. Segment count
198
+ * scales with the sum of the two radii so elongated ellipses remain smooth.
199
+ */
177
200
  const buildEllipse = (centerX, centerY, radiusX, radiusY) => {
178
201
  const length = Math.floor(15 * Math.sqrt(radiusX + radiusY));
179
202
  const segment = (Math.PI * 2) / length;
@@ -198,6 +221,11 @@ const buildEllipse = (centerX, centerY, radiusX, radiusY) => {
198
221
  }
199
222
  return { vertices, indices, points };
200
223
  };
224
+ /**
225
+ * Build a filled simple (non-self-intersecting) polygon as a triangle-list
226
+ * mesh via ear-clipping triangulation. `points` must contain at least three
227
+ * `(x, y)` pairs (minimum 6 values); throws otherwise.
228
+ */
201
229
  const buildPolygon = (points) => {
202
230
  if (points.length < 6) {
203
231
  throw new Error('At least three X/Y pairs are required to build a polygon.');
@@ -212,6 +240,10 @@ const buildPolygon = (points) => {
212
240
  const indices = new Uint16Array(triangles);
213
241
  return { vertices, indices, points };
214
242
  };
243
+ /**
244
+ * Build a filled axis-aligned rectangle as a triangle-list mesh. Produces
245
+ * exactly 4 vertices and 2 triangles regardless of dimensions.
246
+ */
215
247
  const buildRectangle = (x, y, width, height) => {
216
248
  // 4 vertices: TL, TR, BL, BR. Triangles [0, 1, 2, 1, 3, 2] (clockwise).
217
249
  const vertices = new Float32Array([
@@ -225,6 +257,11 @@ const buildRectangle = (x, y, width, height) => {
225
257
  const points = [x, y, x + width, y, x + width, y + height, x, y + height];
226
258
  return { vertices, indices, points };
227
259
  };
260
+ /**
261
+ * Build a filled star polygon as a triangle-list mesh. `points` is the number
262
+ * of outer tips (e.g. `5` for a five-pointed star). `innerRadius` defaults to
263
+ * half of `radius`. `rotation` offsets the first tip angle in radians.
264
+ */
228
265
  const buildStar = (centerX, centerY, points, radius, innerRadius = radius / 2, rotation = 0) => {
229
266
  const startAngle = (Math.PI / -2) + rotation;
230
267
  const length = points * 2;
@@ -1 +1 @@
1
- {"version":3,"file":"geometry.js","sources":["../../../../src/math/geometry.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"geometry.js","sources":["../../../../src/math/geometry.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAeA;;;;AAIG;AACI,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,MAAc,EAAE,IAAY,EAAE,IAAY,EAAE,KAAa,KAAsB;IACrH,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;AAC3C,IAAA,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC;IAC1B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC5F,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAE5F,IAAA,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC;QAC9B,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;QAClC,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;QAClC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;QAC9B,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;AACjC,KAAA,CAAC;IAEF,KAAK,CAAC,OAAO,EAAE;IACf,KAAK,CAAC,OAAO,EAAE;AAEf,IAAA,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEnD,IAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;AACxC;AAEA;;;;;;;;AAQG;MACU,SAAS,GAAG,CAAC,MAAqB,EAAE,KAAa,KAAsB;AAChF,IAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,QAAA,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;IAC3E;AAEA,IAAA,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC;AAC3B,IAAA,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClF,MAAM,aAAa,GAAG,MAAM;AAE5B,IAAA,IAAI,UAAU,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,EAAE;AAC9D,QAAA,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE;QAEvB,MAAM,CAAC,GAAG,EAAE;QACZ,MAAM,CAAC,GAAG,EAAE;QAEZ,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEnE,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC;AACpE,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC;AAEpE,QAAA,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;AACpC,QAAA,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;IACrC;IAEA,UAAU,CAAC,OAAO,EAAE;IACpB,SAAS,CAAC,OAAO,EAAE;AAEnB,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;IAChC,MAAM,aAAa,GAAkB,EAAE;AAEvC,IAAA,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;AACnB,IAAA,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;AACnB,IAAA,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;AACnB,IAAA,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;IACnB,IAAI,GAAG,GAAG,CAAC;IACX,IAAI,GAAG,GAAG,CAAC;IAEX,IAAI,KAAK,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;AACxB,IAAA,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG;IACrB,IAAI,MAAM,GAAG,CAAC;IACd,IAAI,MAAM,GAAG,CAAC;IACd,IAAI,MAAM,GAAG,CAAC;IACd,IAAI,MAAM,GAAG,CAAC;AAEd,IAAA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC,CAAC;IAEvD,KAAK,IAAI,IAAI;IACb,KAAK,IAAI,IAAI;IACb,KAAK,IAAI,SAAS;IAClB,KAAK,IAAI,SAAS;IAElB,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;IAC5C,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;AAE5C,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACjC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE/B,QAAA,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEzB,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE/B,QAAA,KAAK,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;AACpB,QAAA,KAAK,GAAG,GAAG,GAAG,GAAG;AAEjB,QAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC,CAAC;QAEnD,KAAK,IAAI,IAAI;QACb,KAAK,IAAI,IAAI;QACb,KAAK,IAAI,SAAS;QAClB,KAAK,IAAI,SAAS;AAElB,QAAA,MAAM,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;AACrB,QAAA,MAAM,GAAG,GAAG,GAAG,GAAG;AAElB,QAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC,CAAC;QAEvD,MAAM,IAAI,IAAI;QACd,MAAM,IAAI,IAAI;QACd,MAAM,IAAI,SAAS;QACnB,MAAM,IAAI,SAAS;AAEnB,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;AAC1C,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;AAC1C,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;AAChF,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;AAC5C,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;AAC5C,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;AAEpF,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAEjC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE;YACvB,KAAK,IAAI,IAAI;YAEb,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;YAC5C,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;YAE5C;QACJ;AAEA,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK;AAC1C,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK;AAC1C,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;QAEnE,IAAI,KAAK,IAAI,GAAG,GAAG,SAAS,GAAG,SAAS,CAAC,EAAE;AACvC,YAAA,MAAM,GAAG,KAAK,GAAG,MAAM;AACvB,YAAA,MAAM,GAAG,KAAK,GAAG,MAAM;AAEvB,YAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC,CAAC;YAEvD,MAAM,IAAI,IAAI;YACd,MAAM,IAAI,IAAI;YACd,MAAM,IAAI,SAAS;YACnB,MAAM,IAAI,SAAS;YAEnB,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,EAAE,GAAG,GAAG,MAAM,CAAC;YAC9C,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,EAAE,GAAG,GAAG,MAAM,CAAC;YAC9C,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,EAAE,GAAG,GAAG,MAAM,CAAC;QAClD;aAAO;AACH,YAAA,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;AAC1B,YAAA,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC;QAC1D;IACJ;IAEA,GAAG,GAAG,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAA,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEpC,GAAG,GAAG,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAA,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEpC,IAAA,KAAK,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;AACpB,IAAA,KAAK,GAAG,GAAG,GAAG,GAAG;AAEjB,IAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC,CAAC;IAEnD,KAAK,IAAI,IAAI;IACb,KAAK,IAAI,IAAI;IACb,KAAK,IAAI,SAAS;IAClB,KAAK,IAAI,SAAS;IAElB,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;IAC5C,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;;;;;AAM5C,IAAA,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC;AACjD,IAAA,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,aAAa,CAAC;AAChD,IAAA,MAAM,aAAa,GAAG,gBAAgB,IAAI,CAAC,GAAG,gBAAgB,GAAG,CAAC,GAAG,CAAC;IACtE,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,aAAa,GAAG,CAAC,CAAC;AAElD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE;AACpC,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC;QAElB,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACf,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YACjB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;YACzB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAC7B;aAAO;AACH,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACrB,YAAA,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;YACrB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAC7B;IACJ;IAEA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE;AACvD;AAEA;;;;AAIG;AACI,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,OAAe,EAAE,MAAc,KAAsB;AAC9F,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM;IACtC,MAAM,MAAM,GAAkB,EAAE;;AAGhC,IAAA,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AAEnD,IAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO;AACrB,IAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO;AAErB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7B,QAAA,MAAM,QAAQ,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAC3D,QAAA,MAAM,QAAQ,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAE3D,QAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAE/B,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AAE1B,QAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ;AAC3B,QAAA,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ;IACnC;IAEA,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AAE3C,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7B,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC;AAElB,QAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACjB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACzB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;IAClD;AAEA,IAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;AACxC;AAEA;;;AAGG;AACI,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,OAAe,EAAE,OAAe,EAAE,OAAe,KAAsB;AACjH,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM;IACtC,MAAM,MAAM,GAAkB,EAAE;AAEhC,IAAA,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AAEnD,IAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO;AACrB,IAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO;AAErB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7B,QAAA,MAAM,QAAQ,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AAC5D,QAAA,MAAM,QAAQ,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AAE5D,QAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAE/B,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AAE1B,QAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ;AAC3B,QAAA,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ;IACnC;IAEA,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AAE3C,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7B,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC;AAElB,QAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACjB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACzB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;IAClD;AAEA,IAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;AACxC;AAEA;;;;AAIG;AACI,MAAM,YAAY,GAAG,CAAC,MAAqB,KAAsB;AACpE,IAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,QAAA,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC;IAChF;AAEA,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;AAChC,IAAA,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;AAEhD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7B,QAAA,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/B,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/C;AAEA,IAAA,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC;AAE1C,IAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;AACxC;AAEA;;;AAGG;AACI,MAAM,cAAc,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc,KAAsB;;AAEpG,IAAA,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC;QAC9B,CAAC,EAAE,CAAC;AACJ,QAAA,CAAC,GAAG,KAAK,EAAE,CAAC;AACZ,QAAA,CAAC,EAAE,CAAC,GAAG,MAAM;AACb,QAAA,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM;AACxB,KAAA,CAAC;AACF,IAAA,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;;IAEnD,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;AAEzE,IAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;AACxC;AAEA;;;;AAIG;MACU,SAAS,GAAG,CAAC,OAAe,EAAE,OAAe,EAAE,MAAc,EAAE,MAAc,EAAE,WAAA,GAAsB,MAAM,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,KAAsB;AAC5J,IAAA,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,QAAQ;AAC5C,IAAA,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC;AACzB,IAAA,MAAM,KAAK,GAAG,GAAG,GAAG,MAAM;IAC1B,MAAM,IAAI,GAAkB,EAAE;AAE9B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,UAAU,IAAI,CAAC,GAAG,KAAK,CAAC;AACtC,QAAA,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,GAAG,MAAM;AAExC,QAAA,IAAI,CAAC,IAAI,CACL,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EACjC,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CACpC;IACL;AAEA,IAAA,OAAO,YAAY,CAAC,IAAI,CAAC;AAC7B;;;;"}
@@ -25,3 +25,4 @@ export * from './Segment';
25
25
  export * from './Size';
26
26
  export * from './PolarVector';
27
27
  export * from './swept-collision';
28
+ export * from './Quadtree';
@@ -1,21 +1,62 @@
1
1
  import type { Vector } from '@/math/Vector';
2
+ /** τ = 2π, the full-circle radian constant. */
2
3
  export declare const tau: number;
4
+ /** Multiply a degree value by this constant to convert to radians. */
3
5
  export declare const radiansPerDegree: number;
6
+ /** Multiply a radian value by this constant to convert to degrees. */
4
7
  export declare const degreesPerRadian: number;
8
+ /**
9
+ * Classification of a point relative to a directed edge, used by the SAT
10
+ * circle-vs-polygon solver to identify which feature (vertex or edge face) the
11
+ * circle centre is closest to.
12
+ */
5
13
  export declare const enum VoronoiRegion {
6
14
  left = -1,
7
15
  middle = 0,
8
16
  right = 1
9
17
  }
18
+ /**
19
+ * Normalise a rotation in degrees to the range `[0, 360)`. Negative values
20
+ * are wrapped into the positive range.
21
+ */
10
22
  export declare const trimRotation: (degrees: number) => number;
23
+ /** Convert `degree` to radians. */
11
24
  export declare const degreesToRadians: (degree: number) => number;
25
+ /** Convert `radian` to degrees. */
12
26
  export declare const radiansToDegrees: (radian: number) => number;
27
+ /** Clamp `value` to the closed interval `[min, max]`. */
13
28
  export declare const clamp: (value: number, min: number, max: number) => number;
29
+ /**
30
+ * Return the sign of `value` as `-1`, `0`, or `1`. Unlike `Math.sign`,
31
+ * returns `0` only for strict zero (not `-0`).
32
+ */
14
33
  export declare const sign: (value: number) => number;
34
+ /** Linear interpolation between `startValue` and `endValue` at normalized `ratio` ∈ [0, 1]. */
15
35
  export declare const lerp: (startValue: number, endValue: number, ratio: number) => number;
36
+ /** Return `true` when `value` is a non-zero power of two. */
16
37
  export declare const isPowerOfTwo: (value: number) => boolean;
38
+ /**
39
+ * Return `true` when `value` lies within `[min, max]` (inclusive, regardless
40
+ * of whether `min < max`).
41
+ */
17
42
  export declare const inRange: (value: number, min: number, max: number) => boolean;
43
+ /** Euclidean distance between `(x1, y1)` and `(x2, y2)`. */
18
44
  export declare const getDistance: (x1: number, y1: number, x2: number, y2: number) => number;
45
+ /**
46
+ * Sample a cubic Bézier curve at `len` evenly-spaced `t` values and append
47
+ * the resulting `(x, y)` pairs to `path`. The starting point `(fromX, fromY)`
48
+ * is always pushed first. Returns `path` for chaining.
49
+ */
19
50
  export declare const bezierCurveTo: (fromX: number, fromY: number, cpX1: number, cpY1: number, cpX2: number, cpY2: number, toX: number, toY: number, path?: Array<number>, len?: number) => Array<number>;
51
+ /**
52
+ * Sample a quadratic Bézier curve at `len + 1` evenly-spaced `t` values
53
+ * (including `t = 0` and `t = 1`) and append the resulting `(x, y)` pairs to
54
+ * `path`. Returns `path` for chaining.
55
+ */
20
56
  export declare const quadraticCurveTo: (fromX: number, fromY: number, cpX: number, cpY: number, toX: number, toY: number, path?: Array<number>, len?: number) => Array<number>;
57
+ /**
58
+ * Classify `point` relative to the directed `line` using the dot product.
59
+ * Returns `left` when the point is before the line start, `right` when it is
60
+ * past the line end, and `middle` when it projects onto the segment.
61
+ */
21
62
  export declare const getVoronoiRegion: (line: Vector, point: Vector) => VoronoiRegion;
@@ -1,28 +1,59 @@
1
+ /** τ = 2π, the full-circle radian constant. */
1
2
  const tau = Math.PI * 2;
3
+ /** Multiply a degree value by this constant to convert to radians. */
2
4
  const radiansPerDegree = Math.PI / 180;
5
+ /** Multiply a radian value by this constant to convert to degrees. */
3
6
  const degreesPerRadian = 180 / Math.PI;
7
+ /**
8
+ * Classification of a point relative to a directed edge, used by the SAT
9
+ * circle-vs-polygon solver to identify which feature (vertex or edge face) the
10
+ * circle centre is closest to.
11
+ */
4
12
  var VoronoiRegion;
5
13
  (function (VoronoiRegion) {
6
14
  VoronoiRegion[VoronoiRegion["left"] = -1] = "left";
7
15
  VoronoiRegion[VoronoiRegion["middle"] = 0] = "middle";
8
16
  VoronoiRegion[VoronoiRegion["right"] = 1] = "right";
9
17
  })(VoronoiRegion || (VoronoiRegion = {}));
18
+ /**
19
+ * Normalise a rotation in degrees to the range `[0, 360)`. Negative values
20
+ * are wrapped into the positive range.
21
+ */
10
22
  const trimRotation = (degrees) => {
11
23
  const rotation = degrees % 360;
12
24
  return rotation < 0 ? rotation + 360 : rotation;
13
25
  };
26
+ /** Convert `degree` to radians. */
14
27
  const degreesToRadians = (degree) => degree * radiansPerDegree;
28
+ /** Convert `radian` to degrees. */
15
29
  const radiansToDegrees = (radian) => radian * degreesPerRadian;
30
+ /** Clamp `value` to the closed interval `[min, max]`. */
16
31
  const clamp = (value, min, max) => Math.min(max, Math.max(min, value));
32
+ /**
33
+ * Return the sign of `value` as `-1`, `0`, or `1`. Unlike `Math.sign`,
34
+ * returns `0` only for strict zero (not `-0`).
35
+ */
17
36
  const sign = (value) => (value && (value < 0 ? -1 : 1));
37
+ /** Linear interpolation between `startValue` and `endValue` at normalized `ratio` ∈ [0, 1]. */
18
38
  const lerp = (startValue, endValue, ratio) => (((1 - ratio) * startValue) + (ratio * endValue));
39
+ /** Return `true` when `value` is a non-zero power of two. */
19
40
  const isPowerOfTwo = (value) => ((value !== 0) && ((value & (value - 1)) === 0));
41
+ /**
42
+ * Return `true` when `value` lies within `[min, max]` (inclusive, regardless
43
+ * of whether `min < max`).
44
+ */
20
45
  const inRange = (value, min, max) => (value >= Math.min(min, max) && value <= Math.max(min, max));
46
+ /** Euclidean distance between `(x1, y1)` and `(x2, y2)`. */
21
47
  const getDistance = (x1, y1, x2, y2) => {
22
48
  const offsetX = x1 - x2;
23
49
  const offsetY = y1 - y2;
24
50
  return Math.sqrt((offsetX * offsetX) + (offsetY * offsetY));
25
51
  };
52
+ /**
53
+ * Sample a cubic Bézier curve at `len` evenly-spaced `t` values and append
54
+ * the resulting `(x, y)` pairs to `path`. The starting point `(fromX, fromY)`
55
+ * is always pushed first. Returns `path` for chaining.
56
+ */
26
57
  const bezierCurveTo = (fromX, fromY, cpX1, cpY1, cpX2, cpY2, toX, toY, path = [], len = 20) => {
27
58
  path.push(fromX, fromY);
28
59
  for (let i = 1; i <= len; i++) {
@@ -36,6 +67,11 @@ const bezierCurveTo = (fromX, fromY, cpX1, cpY1, cpX2, cpY2, toX, toY, path = []
36
67
  }
37
68
  return path;
38
69
  };
70
+ /**
71
+ * Sample a quadratic Bézier curve at `len + 1` evenly-spaced `t` values
72
+ * (including `t = 0` and `t = 1`) and append the resulting `(x, y)` pairs to
73
+ * `path`. Returns `path` for chaining.
74
+ */
39
75
  const quadraticCurveTo = (fromX, fromY, cpX, cpY, toX, toY, path = [], len = 20) => {
40
76
  for (let i = 0; i <= len; i++) {
41
77
  const ratio = i / len;
@@ -43,6 +79,11 @@ const quadraticCurveTo = (fromX, fromY, cpX, cpY, toX, toY, path = [], len = 20)
43
79
  }
44
80
  return path;
45
81
  };
82
+ /**
83
+ * Classify `point` relative to the directed `line` using the dot product.
84
+ * Returns `left` when the point is before the line start, `right` when it is
85
+ * past the line end, and `middle` when it projects onto the segment.
86
+ */
46
87
  const getVoronoiRegion = (line, point) => {
47
88
  const product = point.dot(line.x, line.y);
48
89
  if (product < 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../src/math/utils.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../src/math/utils.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -3,6 +3,17 @@ import { Color } from '@/core/Color';
3
3
  import { Time } from '@/core/Time';
4
4
  import type { ParticleOptions } from './emitters/ParticleOptions';
5
5
  import type { ParticleProperties } from '@/particles/ParticleProperties';
6
+ /**
7
+ * Mutable per-instance state for a single live particle. Implements
8
+ * {@link ParticleProperties} so affectors can mutate it through the shared
9
+ * interface. Particles are pooled by {@link ParticleSystem}: expired instances
10
+ * are moved to the graveyard and reused via {@link ParticleSystem.requestParticle}
11
+ * rather than garbage-collected.
12
+ *
13
+ * Do not construct directly — use {@link ParticleSystem.requestParticle} to
14
+ * obtain a recycled or fresh instance, then configure it through
15
+ * {@link Particle.applyOptions}.
16
+ */
6
17
  export declare class Particle implements ParticleProperties {
7
18
  private _totalLifetime;
8
19
  private _elapsedLifetime;
@@ -31,10 +42,36 @@ export declare class Particle implements ParticleProperties {
31
42
  set rotationSpeed(rotationSpeed: number);
32
43
  get textureIndex(): number;
33
44
  set textureIndex(textureIndex: number);
45
+ /**
46
+ * Time remaining before this particle expires, returned via the shared
47
+ * `Time.temp` scratch value — copy before storing if you need it beyond
48
+ * the current frame.
49
+ */
34
50
  get remainingLifetime(): Time;
51
+ /**
52
+ * Fraction of total lifetime already elapsed, in [0, 1]. Used by
53
+ * {@link ColorAffector} as the interpolation factor for tint blending.
54
+ */
35
55
  get elapsedRatio(): number;
56
+ /** Fraction of total lifetime still remaining, in [0, 1]. */
36
57
  get remainingRatio(): number;
58
+ /**
59
+ * Returns `true` once `elapsedLifetime` exceeds `totalLifetime`. Expired
60
+ * particles are moved to the graveyard by {@link ParticleSystem.update}
61
+ * before affectors run.
62
+ */
37
63
  get expired(): boolean;
64
+ /**
65
+ * Bulk-copies every field from `options` into this particle, replacing all
66
+ * previous state. Called immediately after {@link ParticleSystem.requestParticle}
67
+ * to configure a recycled particle for reuse.
68
+ */
38
69
  applyOptions(options: ParticleOptions): this;
70
+ /**
71
+ * Destroys all owned value objects. Called by
72
+ * {@link ParticleSystem.clearParticles} when the pool is flushed entirely.
73
+ * Do not call on individual particles mid-simulation; let the system
74
+ * recycle them via the graveyard instead.
75
+ */
39
76
  destroy(): void;
40
77
  }
@@ -3,6 +3,17 @@ import { Color } from '../core/Color.js';
3
3
  import { Time } from '../core/Time.js';
4
4
  import { trimRotation } from '../math/utils.js';
5
5
 
6
+ /**
7
+ * Mutable per-instance state for a single live particle. Implements
8
+ * {@link ParticleProperties} so affectors can mutate it through the shared
9
+ * interface. Particles are pooled by {@link ParticleSystem}: expired instances
10
+ * are moved to the graveyard and reused via {@link ParticleSystem.requestParticle}
11
+ * rather than garbage-collected.
12
+ *
13
+ * Do not construct directly — use {@link ParticleSystem.requestParticle} to
14
+ * obtain a recycled or fresh instance, then configure it through
15
+ * {@link Particle.applyOptions}.
16
+ */
6
17
  class Particle {
7
18
  _totalLifetime = Time.oneSecond.clone();
8
19
  _elapsedLifetime = Time.zero.clone();
@@ -67,18 +78,38 @@ class Particle {
67
78
  set textureIndex(textureIndex) {
68
79
  this._textureIndex = textureIndex;
69
80
  }
81
+ /**
82
+ * Time remaining before this particle expires, returned via the shared
83
+ * `Time.temp` scratch value — copy before storing if you need it beyond
84
+ * the current frame.
85
+ */
70
86
  get remainingLifetime() {
71
87
  return Time.temp.set(this._totalLifetime.milliseconds - this._elapsedLifetime.milliseconds);
72
88
  }
89
+ /**
90
+ * Fraction of total lifetime already elapsed, in [0, 1]. Used by
91
+ * {@link ColorAffector} as the interpolation factor for tint blending.
92
+ */
73
93
  get elapsedRatio() {
74
94
  return this._elapsedLifetime.milliseconds / this._totalLifetime.milliseconds;
75
95
  }
96
+ /** Fraction of total lifetime still remaining, in [0, 1]. */
76
97
  get remainingRatio() {
77
98
  return this.remainingLifetime.milliseconds / this._totalLifetime.milliseconds;
78
99
  }
100
+ /**
101
+ * Returns `true` once `elapsedLifetime` exceeds `totalLifetime`. Expired
102
+ * particles are moved to the graveyard by {@link ParticleSystem.update}
103
+ * before affectors run.
104
+ */
79
105
  get expired() {
80
106
  return this._elapsedLifetime.greaterThan(this._totalLifetime);
81
107
  }
108
+ /**
109
+ * Bulk-copies every field from `options` into this particle, replacing all
110
+ * previous state. Called immediately after {@link ParticleSystem.requestParticle}
111
+ * to configure a recycled particle for reuse.
112
+ */
82
113
  applyOptions(options) {
83
114
  const { totalLifetime, elapsedLifetime, position, velocity, scale, tint, rotation, rotationSpeed, textureIndex, } = options;
84
115
  this._totalLifetime.copy(totalLifetime);
@@ -92,6 +123,12 @@ class Particle {
92
123
  this._textureIndex = textureIndex;
93
124
  return this;
94
125
  }
126
+ /**
127
+ * Destroys all owned value objects. Called by
128
+ * {@link ParticleSystem.clearParticles} when the pool is flushed entirely.
129
+ * Do not call on individual particles mid-simulation; let the system
130
+ * recycle them via the graveyard instead.
131
+ */
95
132
  destroy() {
96
133
  this._totalLifetime.destroy();
97
134
  this._elapsedLifetime.destroy();
@@ -1 +1 @@
1
- {"version":3,"file":"Particle.js","sources":["../../../../src/particles/Particle.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Particle.js","sources":["../../../../src/particles/Particle.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,14 +1,29 @@
1
1
  import type { Time } from '@/core/Time';
2
2
  import type { Vector } from '@/math/Vector';
3
3
  import type { Color } from '@/core/Color';
4
+ /**
5
+ * Shared property contract for both {@link Particle} (live instance) and
6
+ * {@link ParticleOptions} (spawn configuration). Every field represents a
7
+ * mutable, per-particle attribute that affectors and the system update each
8
+ * tick.
9
+ */
4
10
  export interface ParticleProperties {
11
+ /** Total time the particle lives before expiring. */
5
12
  totalLifetime: Time;
13
+ /** Time that has passed since the particle was spawned. */
6
14
  elapsedLifetime: Time;
15
+ /** Position in the owning {@link ParticleSystem}'s local coordinate space. */
7
16
  position: Vector;
17
+ /** Pixels-per-second movement vector applied by the system each tick. */
8
18
  velocity: Vector;
19
+ /** Multiplicative scale applied to the particle sprite on both axes. */
9
20
  scale: Vector;
21
+ /** Rotation in degrees, normalised to [0, 360) by {@link trimRotation}. */
10
22
  rotation: number;
23
+ /** Degrees-per-second angular velocity accumulated by {@link TorqueAffector}. */
11
24
  rotationSpeed: number;
25
+ /** Index into the atlas frame list used to choose the particle sprite. */
12
26
  textureIndex: number;
27
+ /** RGBA tint blended onto the particle sprite, interpolated by {@link ColorAffector}. */
13
28
  tint: Color;
14
29
  }
@@ -5,6 +5,20 @@ import { Drawable } from '@/rendering/Drawable';
5
5
  import type { Texture } from '@/rendering/texture/Texture';
6
6
  import type { ParticleEmitter } from '@/particles/emitters/ParticleEmitter';
7
7
  import type { ParticleAffector } from '@/particles/affectors/ParticleAffector';
8
+ /**
9
+ * The central coordinator of the particle triad. `ParticleSystem` is a
10
+ * {@link Drawable} that owns a list of {@link ParticleEmitter} spawners, a
11
+ * list of {@link ParticleAffector} mutators, and the live/graveyard particle
12
+ * pools. Each call to {@link ParticleSystem.update} runs all emitters to
13
+ * spawn new particles, advances every live particle's position and lifetime,
14
+ * retires expired ones to the graveyard for pooling, and runs all affectors
15
+ * on the survivors.
16
+ *
17
+ * Rendering reads {@link ParticleSystem.vertices} and
18
+ * {@link ParticleSystem.texCoords} (lazily recomputed on texture-frame
19
+ * changes) plus the live {@link ParticleSystem.particles} array to draw each
20
+ * sprite.
21
+ */
8
22
  export declare class ParticleSystem extends Drawable {
9
23
  private _emitters;
10
24
  private _affectors;
@@ -21,23 +35,78 @@ export declare class ParticleSystem extends Drawable {
21
35
  set texture(texture: Texture);
22
36
  get textureFrame(): Rectangle;
23
37
  set textureFrame(frame: Rectangle);
38
+ /**
39
+ * Quad corner offsets for the current {@link textureFrame}, in local
40
+ * space as `[minX, minY, maxX, maxY]`. Recomputed lazily whenever
41
+ * `textureFrame` changes. Used by the renderer to position each particle
42
+ * sprite relative to its world position.
43
+ */
24
44
  get vertices(): Float32Array;
45
+ /**
46
+ * Packed UV coordinates for the current {@link textureFrame} as four
47
+ * `Uint32` values, each encoding a `(u, v)` pair in the upper/lower 16
48
+ * bits (normalised to 0–65535). Vertex order respects
49
+ * {@link Texture.flipY}. Recomputed lazily on texture or frame changes.
50
+ */
25
51
  get texCoords(): Uint32Array;
26
52
  get emitters(): Array<ParticleEmitter>;
27
53
  get affectors(): Array<ParticleAffector>;
28
54
  get particles(): Array<Particle>;
55
+ /**
56
+ * Pool of expired {@link Particle} instances waiting to be recycled.
57
+ * {@link requestParticle} pops from this array before allocating a new
58
+ * instance, keeping GC pressure low during sustained emission.
59
+ */
29
60
  get graveyard(): Array<Particle>;
61
+ /**
62
+ * Replaces the particle sprite texture and resets the texture frame to
63
+ * cover the full new texture. No-ops if `texture` is the same instance.
64
+ */
30
65
  setTexture(texture: Texture): this;
66
+ /**
67
+ * Sets the sub-rectangle of the texture used as the particle sprite,
68
+ * invalidating cached vertices and UV coordinates and updating the system's
69
+ * local bounds to match the frame dimensions.
70
+ */
31
71
  setTextureFrame(frame: Rectangle): this;
72
+ /** Resets the texture frame to the full dimensions of the current texture. */
32
73
  resetTextureFrame(): this;
74
+ /** Registers `emitter` to be called each tick during {@link update}. */
33
75
  addEmitter(emitter: ParticleEmitter): this;
76
+ /** Destroys and removes all registered emitters. */
34
77
  clearEmitters(): this;
78
+ /** Registers `affector` to run on every live particle each tick during {@link update}. */
35
79
  addAffector(affector: ParticleAffector): this;
80
+ /** Destroys and removes all registered affectors. */
36
81
  clearAffectors(): this;
82
+ /**
83
+ * Returns a recycled particle from the {@link graveyard}, or allocates a
84
+ * new one if the pool is empty. Call {@link Particle.applyOptions}
85
+ * immediately after to reset its state before passing it to
86
+ * {@link emitParticle}.
87
+ */
37
88
  requestParticle(): Particle;
89
+ /** Adds a fully-configured `particle` to the live pool. Typically called by emitters. */
38
90
  emitParticle(particle: Particle): this;
91
+ /**
92
+ * Advances a single particle by one `delta` step: increments
93
+ * `elapsedLifetime`, integrates velocity into position, and applies
94
+ * `rotationSpeed` to rotation. Called for every live particle by
95
+ * {@link update} before the affector pass.
96
+ */
39
97
  updateParticle(particle: Particle, delta: Time): this;
98
+ /**
99
+ * Destroys and removes all particles from both the live pool and the
100
+ * graveyard. Use when resetting or recycling the entire system.
101
+ */
40
102
  clearParticles(): this;
103
+ /**
104
+ * Advances the full simulation by one `delta` step: runs all emitters,
105
+ * then for each live particle calls {@link updateParticle}, moves expired
106
+ * ones to the {@link graveyard}, and runs all affectors on survivors.
107
+ * The particle array is iterated in reverse to allow in-place splice
108
+ * without re-indexing.
109
+ */
41
110
  update(delta: Time): this;
42
111
  destroy(): void;
43
112
  }