@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
@@ -0,0 +1,575 @@
1
+ import { Container } from '../rendering/Container.js';
2
+ import { InteractionEvent } from './InteractionEvent.js';
3
+ import { Rectangle } from '../math/Rectangle.js';
4
+ import { Quadtree } from '../math/Quadtree.js';
5
+ import { _setCurrentInteractionManager } from './interaction-hooks.js';
6
+
7
+ // ---------------------------------------------------------------------------
8
+ // Internal types
9
+ // ---------------------------------------------------------------------------
10
+ var PointerEventFlag;
11
+ (function (PointerEventFlag) {
12
+ PointerEventFlag[PointerEventFlag["None"] = 0] = "None";
13
+ PointerEventFlag[PointerEventFlag["Down"] = 1] = "Down";
14
+ PointerEventFlag[PointerEventFlag["Move"] = 2] = "Move";
15
+ PointerEventFlag[PointerEventFlag["Up"] = 4] = "Up";
16
+ PointerEventFlag[PointerEventFlag["Tap"] = 8] = "Tap";
17
+ PointerEventFlag[PointerEventFlag["Cancel"] = 16] = "Cancel";
18
+ PointerEventFlag[PointerEventFlag["Leave"] = 32] = "Leave";
19
+ })(PointerEventFlag || (PointerEventFlag = {}));
20
+ // ---------------------------------------------------------------------------
21
+ /**
22
+ * Routes pointer events from the {@link InputManager} to interactive
23
+ * scene-graph nodes via DOM-style event bubbling. Maintains a persistent
24
+ * quadtree spatial index of interactive {@link RenderNode}s for hit-testing
25
+ * and updates it incrementally — nodes notify the manager via the
26
+ * `_notify*` hooks when they enter/leave the scene, change interactivity,
27
+ * or move (causing bounds to dirty).
28
+ *
29
+ * Dispatches {@link InteractionEvent}s of every type in
30
+ * {@link InteractionEventType}: `pointerdown` / `pointerup` /
31
+ * `pointermove` / `pointerover` / `pointerout` / `pointertap` /
32
+ * `dragstart` / `drag` / `dragend`. Drag events are derived from
33
+ * threshold-based pointer movement after a `pointerdown`.
34
+ *
35
+ * Constructed automatically by {@link Application}; you do not instantiate
36
+ * this class yourself.
37
+ */
38
+ class InteractionManager {
39
+ _app;
40
+ // Persistent quadtree — null when no interactive nodes are present.
41
+ _quadtree = null;
42
+ // All currently-tracked interactive RenderNodes.
43
+ _interactiveNodes = new Set();
44
+ // Nodes whose quadtree entry is stale (bounds changed since last insert).
45
+ _staleNodes = new Set();
46
+ // Items stored in the quadtree, keyed by node for fast removal.
47
+ _quadtreeItems = new Map();
48
+ // Running insertion-order counter used to break hit-test ties.
49
+ _quadtreeOrderCounter = 0;
50
+ _quadtreeQueryBuffer = [];
51
+ /** Maps pointerId → the deepest interactive RenderNode that pointer is currently over. */
52
+ _lastHit = new Map();
53
+ /** Pending per-pointer event queues, filled by signal handlers each frame. */
54
+ _pending = new Map();
55
+ /** Active pointer captures set up by drag-start. Maps pointerId → the captured node. */
56
+ _capturedPointers = new Map();
57
+ /** Active drag states. Maps pointerId → drag metadata. */
58
+ _drags = new Map();
59
+ /** Whether any pointer enqueued events since the last update(). */
60
+ _dirty = false;
61
+ _onPointerDownHandler;
62
+ _onPointerMoveHandler;
63
+ _onPointerUpHandler;
64
+ _onPointerTapHandler;
65
+ _onPointerCancelHandler;
66
+ _onPointerLeaveHandler;
67
+ constructor(app) {
68
+ this._app = app;
69
+ // Register as the active singleton so RenderNode / Container / SceneNode hooks
70
+ // can reach the manager without holding an explicit reference.
71
+ _setCurrentInteractionManager(this);
72
+ this._onPointerDownHandler = this._handlePointerDown.bind(this);
73
+ this._onPointerMoveHandler = this._handlePointerMove.bind(this);
74
+ this._onPointerUpHandler = this._handlePointerUp.bind(this);
75
+ this._onPointerTapHandler = this._handlePointerTap.bind(this);
76
+ this._onPointerCancelHandler = this._handlePointerCancel.bind(this);
77
+ this._onPointerLeaveHandler = this._handlePointerLeave.bind(this);
78
+ app.inputManager.onPointerDown.add(this._onPointerDownHandler);
79
+ app.inputManager.onPointerMove.add(this._onPointerMoveHandler);
80
+ app.inputManager.onPointerUp.add(this._onPointerUpHandler);
81
+ app.inputManager.onPointerTap.add(this._onPointerTapHandler);
82
+ app.inputManager.onPointerCancel.add(this._onPointerCancelHandler);
83
+ app.inputManager.onPointerLeave.add(this._onPointerLeaveHandler);
84
+ }
85
+ /**
86
+ * Returns the RenderNode currently hovered by the given pointer, or null.
87
+ * If pointerId is omitted, returns the hovered node for the first pointer
88
+ * in iteration order (typically the primary mouse pointer).
89
+ */
90
+ /**
91
+ * Return the deepest interactive node currently under the given pointer,
92
+ * or under any active pointer when `pointerId` is omitted (the first
93
+ * pointer with a hit wins). `null` when no pointer is hovering an
94
+ * interactive node.
95
+ */
96
+ getHoveredNode(pointerId) {
97
+ if (pointerId !== undefined) {
98
+ return this._lastHit.get(pointerId) ?? null;
99
+ }
100
+ const firstEntry = this._lastHit.values().next();
101
+ return firstEntry.done ? null : firstEntry.value;
102
+ }
103
+ /**
104
+ * Returns all currently captured RenderNodes (nodes that have an active
105
+ * drag / pointer-capture in progress). Used by debug layers.
106
+ */
107
+ /**
108
+ * Snapshot of nodes that currently have pointer-capture (a pointer
109
+ * pressed inside them and is being dragged). Used internally for drag
110
+ * routing; exposed read-only for diagnostic / debug consumers.
111
+ */
112
+ getCapturedNodes() {
113
+ return Array.from(this._capturedPointers.values());
114
+ }
115
+ /**
116
+ * Returns the internal quadtree used for spatial hit-testing, or null when
117
+ * no interactive nodes are present. Used by {@link HitTestLayer} to render
118
+ * the quadtree partitioning during development. Not part of the stable
119
+ * public API — friend-class access only.
120
+ *
121
+ * @internal
122
+ */
123
+ _getDebugQuadtree() {
124
+ return this._quadtree;
125
+ }
126
+ destroy() {
127
+ this._app.inputManager.onPointerDown.remove(this._onPointerDownHandler);
128
+ this._app.inputManager.onPointerMove.remove(this._onPointerMoveHandler);
129
+ this._app.inputManager.onPointerUp.remove(this._onPointerUpHandler);
130
+ this._app.inputManager.onPointerTap.remove(this._onPointerTapHandler);
131
+ this._app.inputManager.onPointerCancel.remove(this._onPointerCancelHandler);
132
+ this._app.inputManager.onPointerLeave.remove(this._onPointerLeaveHandler);
133
+ this._lastHit.clear();
134
+ this._pending.clear();
135
+ this._capturedPointers.clear();
136
+ this._drags.clear();
137
+ this._interactiveNodes.clear();
138
+ this._staleNodes.clear();
139
+ this._quadtreeItems.clear();
140
+ this._dirty = false;
141
+ if (this._quadtree !== null) {
142
+ this._quadtree.destroy();
143
+ this._quadtree = null;
144
+ }
145
+ _setCurrentInteractionManager(null);
146
+ }
147
+ /**
148
+ * Process all pending pointer events accumulated since the last frame.
149
+ * Must be called once per frame from {@link Application.update}, after
150
+ * `inputManager.update()` has run (so signals are already dispatched and
151
+ * queued here) and before game-state updates so that user listeners on
152
+ * `onPointerDown` etc. fire before per-frame logic mutates state.
153
+ *
154
+ * The dirty flag ensures this is a no-op on frames with no pointer
155
+ * activity; every signal handler that enqueues an event sets `_dirty =
156
+ * true`, and `update()` clears it at the top before draining the queue.
157
+ */
158
+ update() {
159
+ if (!this._dirty)
160
+ return;
161
+ this._dirty = false;
162
+ this._flushStaleEntries();
163
+ for (const queue of this._pending.values()) {
164
+ this._processQueue(queue);
165
+ }
166
+ this._pending.clear();
167
+ this._updateCursor();
168
+ }
169
+ // ---------------------------------------------------------------------------
170
+ // Hooks called by RenderNode / Container / SceneNode
171
+ // These are prefixed _ to signal "internal-but-public".
172
+ // ---------------------------------------------------------------------------
173
+ /**
174
+ * Called when a subtree rooted at `node` has been added to the scene.
175
+ * Walks the subtree and registers any interactive nodes found.
176
+ *
177
+ * @internal
178
+ */
179
+ _notifyNodeAdded(node) {
180
+ this._walkSubtree(node, (n) => {
181
+ if (n.interactive) {
182
+ this._registerNode(n);
183
+ }
184
+ });
185
+ }
186
+ /**
187
+ * Called when a subtree rooted at `node` is about to be removed from the
188
+ * scene. Walks the subtree and unregisters any interactive nodes found.
189
+ *
190
+ * @internal
191
+ */
192
+ _notifyNodeRemoved(node) {
193
+ this._walkSubtree(node, (n) => {
194
+ if (this._interactiveNodes.has(n)) {
195
+ this._unregisterNode(n);
196
+ }
197
+ });
198
+ }
199
+ /**
200
+ * Called when a node's `interactive` property changes.
201
+ *
202
+ * @internal
203
+ */
204
+ _notifyInteractiveChanged(node, becameInteractive) {
205
+ if (becameInteractive) {
206
+ this._registerNode(node);
207
+ }
208
+ else {
209
+ this._unregisterNode(node);
210
+ }
211
+ }
212
+ /**
213
+ * Called when a node's world transform / bounds are invalidated. If the
214
+ * node is currently tracked as interactive, mark it stale so its quadtree
215
+ * entry is refreshed on the next query.
216
+ *
217
+ * @internal
218
+ */
219
+ _notifyBoundsInvalidated(node) {
220
+ if (this._interactiveNodes.has(node)) {
221
+ this._staleNodes.add(node);
222
+ }
223
+ }
224
+ // ---------------------------------------------------------------------------
225
+ // Signal handlers — only enqueue flags, never hit-test
226
+ // ---------------------------------------------------------------------------
227
+ _handlePointerDown(pointer) {
228
+ this._enqueue(pointer, PointerEventFlag.Down);
229
+ }
230
+ _handlePointerMove(pointer) {
231
+ this._enqueue(pointer, PointerEventFlag.Move);
232
+ }
233
+ _handlePointerUp(pointer) {
234
+ this._enqueue(pointer, PointerEventFlag.Up);
235
+ }
236
+ _handlePointerTap(pointer) {
237
+ this._enqueue(pointer, PointerEventFlag.Tap);
238
+ }
239
+ _handlePointerCancel(pointer) {
240
+ this._enqueue(pointer, PointerEventFlag.Cancel);
241
+ }
242
+ _handlePointerLeave(pointer) {
243
+ this._enqueue(pointer, PointerEventFlag.Leave);
244
+ }
245
+ _enqueue(pointer, flag) {
246
+ let q = this._pending.get(pointer.id);
247
+ if (!q) {
248
+ q = { pointer, events: 0 };
249
+ this._pending.set(pointer.id, q);
250
+ }
251
+ else {
252
+ // Refresh to latest pointer ref (same object usually, but be defensive).
253
+ q.pointer = pointer;
254
+ }
255
+ q.events |= flag;
256
+ this._dirty = true;
257
+ }
258
+ // ---------------------------------------------------------------------------
259
+ // Per-frame queue processing
260
+ // ---------------------------------------------------------------------------
261
+ _processQueue(queue) {
262
+ const { pointer, events } = queue;
263
+ const { id, x, y } = pointer;
264
+ // Determine the hit node. Captured pointers short-circuit hit-testing.
265
+ const captured = this._capturedPointers.get(id) ?? null;
266
+ const hit = captured !== null ? captured : this._hitTest(x, y);
267
+ // --- Over / Out transitions ---
268
+ // Skip while a drag is active for this pointer — the dragged node
269
+ // stays "hovered" by definition and we don't want spurious events.
270
+ const drag = this._drags.get(id) ?? null;
271
+ const last = this._lastHit.get(id) ?? null;
272
+ const isExitEvent = (events & (PointerEventFlag.Cancel | PointerEventFlag.Leave)) !== 0;
273
+ if (captured === null && hit !== last && !isExitEvent) {
274
+ if (last !== null) {
275
+ this._dispatchBubble(new InteractionEvent('pointerout', last, pointer, x, y));
276
+ }
277
+ if (hit !== null) {
278
+ this._dispatchBubble(new InteractionEvent('pointerover', hit, pointer, x, y));
279
+ }
280
+ this._setLastHit(id, hit);
281
+ }
282
+ // --- Down ---
283
+ if ((events & PointerEventFlag.Down) !== 0) {
284
+ if (hit !== null) {
285
+ this._dispatchBubble(new InteractionEvent('pointerdown', hit, pointer, x, y));
286
+ // Start drag if node is draggable and no existing drag for this pointer.
287
+ if (hit.draggable && !this._drags.has(id)) {
288
+ const offsetX = hit.position.x - x;
289
+ const offsetY = hit.position.y - y;
290
+ this._drags.set(id, { pointerId: id, node: hit, offsetX, offsetY });
291
+ this._capturedPointers.set(id, hit);
292
+ try {
293
+ this._app.canvas.setPointerCapture(id);
294
+ }
295
+ catch {
296
+ // Best-effort — jsdom and some browsers may not support this.
297
+ }
298
+ this._dispatchDirect(new InteractionEvent('dragstart', hit, pointer, x, y), hit.onDragStart);
299
+ }
300
+ }
301
+ }
302
+ // --- Move ---
303
+ if ((events & PointerEventFlag.Move) !== 0) {
304
+ if (drag !== null) {
305
+ // Auto-position the dragged node, preserving the grab offset.
306
+ drag.node.position.x = x + drag.offsetX;
307
+ drag.node.position.y = y + drag.offsetY;
308
+ }
309
+ if (hit !== null) {
310
+ this._dispatchBubble(new InteractionEvent('pointermove', hit, pointer, x, y));
311
+ }
312
+ if (drag !== null) {
313
+ this._dispatchDirect(new InteractionEvent('drag', drag.node, pointer, x, y), drag.node.onDrag);
314
+ }
315
+ }
316
+ // --- Up ---
317
+ if ((events & PointerEventFlag.Up) !== 0) {
318
+ if (hit !== null) {
319
+ this._dispatchBubble(new InteractionEvent('pointerup', hit, pointer, x, y));
320
+ }
321
+ if (drag !== null) {
322
+ this._dispatchDirect(new InteractionEvent('dragend', drag.node, pointer, x, y), drag.node.onDragEnd);
323
+ this._endDrag(id);
324
+ }
325
+ }
326
+ // --- Tap ---
327
+ if ((events & PointerEventFlag.Tap) !== 0) {
328
+ if (hit !== null) {
329
+ this._dispatchBubble(new InteractionEvent('pointertap', hit, pointer, x, y));
330
+ }
331
+ }
332
+ // --- Cancel / Leave ---
333
+ if (isExitEvent) {
334
+ if (drag !== null) {
335
+ this._dispatchDirect(new InteractionEvent('dragend', drag.node, pointer, x, y), drag.node.onDragEnd);
336
+ this._endDrag(id);
337
+ }
338
+ else if (last !== null) {
339
+ this._dispatchBubble(new InteractionEvent('pointerout', last, pointer, x, y));
340
+ }
341
+ this._lastHit.delete(id);
342
+ }
343
+ }
344
+ _endDrag(pointerId) {
345
+ this._drags.delete(pointerId);
346
+ this._capturedPointers.delete(pointerId);
347
+ try {
348
+ this._app.canvas.releasePointerCapture(pointerId);
349
+ }
350
+ catch {
351
+ // Releasing an already-released pointer throws in some browsers; swallow it.
352
+ }
353
+ }
354
+ // ---------------------------------------------------------------------------
355
+ // Hit-testing
356
+ // ---------------------------------------------------------------------------
357
+ _hitTest(x, y) {
358
+ if (this._quadtree !== null) {
359
+ return this._hitTestIndexed(x, y);
360
+ }
361
+ const root = this._app.sceneManager.scene?.root;
362
+ if (!root) {
363
+ return null;
364
+ }
365
+ return this._hitTestNode(root, x, y);
366
+ }
367
+ _hitTestIndexed(x, y) {
368
+ const candidates = this._quadtreeQueryBuffer;
369
+ candidates.length = 0;
370
+ this._quadtree.queryPoint(x, y, candidates);
371
+ let bestOrder = -1;
372
+ let bestNode = null;
373
+ for (const candidate of candidates) {
374
+ const indexed = candidate.payload;
375
+ if (indexed.order > bestOrder && indexed.node.contains(x, y)) {
376
+ bestOrder = indexed.order;
377
+ bestNode = indexed.node;
378
+ }
379
+ }
380
+ return bestNode;
381
+ }
382
+ // Walk children in REVERSE order (top z-order first). Recurse into Container children even
383
+ // when the container itself isn't interactive (so children can be hit through a non-interactive parent).
384
+ // Return the FIRST (deepest, top-most) interactive node whose contains(x, y) returns true.
385
+ _hitTestNode(node, x, y) {
386
+ if (!node.visible) {
387
+ return null;
388
+ }
389
+ if (node instanceof Container) {
390
+ const children = node.children;
391
+ for (let i = children.length - 1; i >= 0; i--) {
392
+ const hit = this._hitTestNode(children[i], x, y);
393
+ if (hit) {
394
+ return hit;
395
+ }
396
+ }
397
+ }
398
+ if (node.interactive && node.contains(x, y)) {
399
+ return node;
400
+ }
401
+ return null;
402
+ }
403
+ // ---------------------------------------------------------------------------
404
+ // Persistent spatial index management
405
+ // ---------------------------------------------------------------------------
406
+ /**
407
+ * Register an interactive node: add it to the tracking set, create the
408
+ * quadtree if this is the first interactive node, and insert the node.
409
+ */
410
+ _registerNode(node) {
411
+ if (this._interactiveNodes.has(node)) {
412
+ return;
413
+ }
414
+ this._interactiveNodes.add(node);
415
+ // Lazy-init the quadtree on the first interactive node.
416
+ if (this._quadtree === null) {
417
+ this._quadtree = this._createQuadtree();
418
+ }
419
+ this._insertNode(node);
420
+ }
421
+ /**
422
+ * Unregister an interactive node: remove from the quadtree and tracking
423
+ * set. Dispose the quadtree when it becomes empty.
424
+ */
425
+ _unregisterNode(node) {
426
+ if (!this._interactiveNodes.has(node)) {
427
+ return;
428
+ }
429
+ this._interactiveNodes.delete(node);
430
+ this._staleNodes.delete(node);
431
+ const item = this._quadtreeItems.get(node);
432
+ if (item !== undefined && this._quadtree !== null) {
433
+ this._quadtree.remove(item);
434
+ }
435
+ this._quadtreeItems.delete(node);
436
+ if (this._interactiveNodes.size === 0 && this._quadtree !== null) {
437
+ this._quadtree.destroy();
438
+ this._quadtree = null;
439
+ this._quadtreeOrderCounter = 0;
440
+ }
441
+ }
442
+ /**
443
+ * Insert a single node into the quadtree (or mark it stale to be inserted
444
+ * at next flush if the quadtree is not yet ready).
445
+ */
446
+ _insertNode(node) {
447
+ if (this._quadtree === null) {
448
+ return;
449
+ }
450
+ const bounds = node.getBounds();
451
+ const item = {
452
+ bounds: new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height),
453
+ payload: { node, order: this._quadtreeOrderCounter++ },
454
+ };
455
+ this._quadtree.insert(item);
456
+ this._quadtreeItems.set(node, item);
457
+ }
458
+ /**
459
+ * Flush stale entries: remove each stale node's old quadtree entry and
460
+ * re-insert it with fresh bounds. Called at the start of update().
461
+ */
462
+ _flushStaleEntries() {
463
+ if (this._quadtree === null || this._staleNodes.size === 0) {
464
+ return;
465
+ }
466
+ for (const node of this._staleNodes) {
467
+ const oldItem = this._quadtreeItems.get(node);
468
+ if (oldItem !== undefined) {
469
+ this._quadtree.remove(oldItem);
470
+ oldItem.bounds.destroy();
471
+ }
472
+ this._quadtreeItems.delete(node);
473
+ // Re-insert with current bounds.
474
+ const bounds = node.getBounds();
475
+ const newItem = {
476
+ bounds: new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height),
477
+ payload: { node, order: oldItem?.payload.order ?? this._quadtreeOrderCounter++ },
478
+ };
479
+ this._quadtree.insert(newItem);
480
+ this._quadtreeItems.set(node, newItem);
481
+ }
482
+ this._staleNodes.clear();
483
+ }
484
+ /** Build a fresh Quadtree sized to encompass the canvas + current scene root. */
485
+ _createQuadtree() {
486
+ const canvas = this._app.canvas;
487
+ const bounds = new Rectangle(0, 0, canvas.width || 800, canvas.height || 600);
488
+ const root = this._app.sceneManager.scene?.root;
489
+ if (root) {
490
+ const rootBounds = root.getBounds();
491
+ const minX = Math.min(bounds.left, rootBounds.left);
492
+ const minY = Math.min(bounds.top, rootBounds.top);
493
+ const maxX = Math.max(bounds.right, rootBounds.right);
494
+ const maxY = Math.max(bounds.bottom, rootBounds.bottom);
495
+ bounds.set(minX, minY, maxX - minX, maxY - minY);
496
+ }
497
+ return new Quadtree(bounds);
498
+ }
499
+ /** Walk a subtree, calling `callback` for every RenderNode (including root). */
500
+ _walkSubtree(node, callback) {
501
+ callback(node);
502
+ if (node instanceof Container) {
503
+ for (const child of node.children) {
504
+ this._walkSubtree(child, callback);
505
+ }
506
+ }
507
+ }
508
+ // ---------------------------------------------------------------------------
509
+ // Dispatch helpers
510
+ // ---------------------------------------------------------------------------
511
+ _dispatchBubble(event) {
512
+ let current = event.target;
513
+ while (current !== null && !event.propagationStopped) {
514
+ event.currentTarget = current;
515
+ const signal = this._signalFor(event.type, current);
516
+ signal.dispatch(event);
517
+ if (event.propagationStopped) {
518
+ break;
519
+ }
520
+ // Walk up to interactive ancestor only (parent must opt in to receive bubble).
521
+ const parent = current.parentNode;
522
+ current = (parent !== null && parent.interactive) ? parent : null;
523
+ }
524
+ }
525
+ /** Dispatch an event directly on a single node without bubbling. */
526
+ _dispatchDirect(event, signal) {
527
+ event.currentTarget = event.target;
528
+ signal.dispatch(event);
529
+ }
530
+ _signalFor(type, node) {
531
+ switch (type) {
532
+ case 'pointerdown': return node.onPointerDown;
533
+ case 'pointerup': return node.onPointerUp;
534
+ case 'pointermove': return node.onPointerMove;
535
+ case 'pointerover': return node.onPointerOver;
536
+ case 'pointerout': return node.onPointerOut;
537
+ case 'pointertap': return node.onPointerTap;
538
+ case 'dragstart': return node.onDragStart;
539
+ case 'drag': return node.onDrag;
540
+ case 'dragend': return node.onDragEnd;
541
+ }
542
+ }
543
+ // ---------------------------------------------------------------------------
544
+ // Cursor
545
+ // ---------------------------------------------------------------------------
546
+ _setLastHit(id, node) {
547
+ if (node !== null) {
548
+ this._lastHit.set(id, node);
549
+ }
550
+ else {
551
+ this._lastHit.delete(id);
552
+ }
553
+ }
554
+ _updateCursor() {
555
+ let cursor = null;
556
+ for (const node of this._lastHit.values()) {
557
+ let n = node;
558
+ while (n !== null) {
559
+ if (n.cursor !== null) {
560
+ cursor = n.cursor;
561
+ break;
562
+ }
563
+ const p = n.parentNode;
564
+ n = p;
565
+ }
566
+ if (cursor !== null) {
567
+ break;
568
+ }
569
+ }
570
+ this._app.canvas.style.cursor = cursor ?? '';
571
+ }
572
+ }
573
+
574
+ export { InteractionManager };
575
+ //# sourceMappingURL=InteractionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InteractionManager.js","sources":["../../../../src/input/InteractionManager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,5 +1,14 @@
1
1
  import { GenericDualAnalogGamepadMapping } from './GenericDualAnalogGamepadMapping';
2
2
  import { GamepadMappingFamily } from './GamepadMapping';
3
+ /**
4
+ * Mapping for the Nintendo Switch Joy-Con (L) held horizontally or used as
5
+ * a standalone controller.
6
+ *
7
+ * Inherits the {@link GenericDualAnalogGamepadMapping} layout. Because the
8
+ * Joy-Con Left has only one physical stick, right-stick channels will never
9
+ * receive input when this mapping is active. The SL/SR shoulder buttons are
10
+ * surfaced through the standard LeftShoulder/RightShoulder channels.
11
+ */
3
12
  export declare class JoyConLeftGamepadMapping extends GenericDualAnalogGamepadMapping {
4
13
  readonly family = GamepadMappingFamily.JoyConLeft;
5
14
  }
@@ -1,6 +1,15 @@
1
1
  import { GenericDualAnalogGamepadMapping } from './GenericDualAnalogGamepadMapping.js';
2
2
  import { GamepadMappingFamily } from './GamepadMapping.js';
3
3
 
4
+ /**
5
+ * Mapping for the Nintendo Switch Joy-Con (L) held horizontally or used as
6
+ * a standalone controller.
7
+ *
8
+ * Inherits the {@link GenericDualAnalogGamepadMapping} layout. Because the
9
+ * Joy-Con Left has only one physical stick, right-stick channels will never
10
+ * receive input when this mapping is active. The SL/SR shoulder buttons are
11
+ * surfaced through the standard LeftShoulder/RightShoulder channels.
12
+ */
4
13
  class JoyConLeftGamepadMapping extends GenericDualAnalogGamepadMapping {
5
14
  family = GamepadMappingFamily.JoyConLeft;
6
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"JoyConLeftGamepadMapping.js","sources":["../../../../src/input/JoyConLeftGamepadMapping.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAGM,MAAO,wBAAyB,SAAQ,+BAA+B,CAAA;AAChD,IAAA,MAAM,GAAG,oBAAoB,CAAC,UAAU;AACpE;;;;"}
1
+ {"version":3,"file":"JoyConLeftGamepadMapping.js","sources":["../../../../src/input/JoyConLeftGamepadMapping.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAGA;;;;;;;;AAQG;AACG,MAAO,wBAAyB,SAAQ,+BAA+B,CAAA;AAChD,IAAA,MAAM,GAAG,oBAAoB,CAAC,UAAU;AACpE;;;;"}
@@ -1,5 +1,14 @@
1
1
  import { GenericDualAnalogGamepadMapping } from './GenericDualAnalogGamepadMapping';
2
2
  import { GamepadMappingFamily } from './GamepadMapping';
3
+ /**
4
+ * Mapping for the Nintendo Switch Joy-Con (R) held horizontally or used as
5
+ * a standalone controller.
6
+ *
7
+ * Inherits the {@link GenericDualAnalogGamepadMapping} layout. Because the
8
+ * Joy-Con Right has only one physical stick, left-stick channels will never
9
+ * receive input when this mapping is active. The SL/SR shoulder buttons are
10
+ * surfaced through the standard LeftShoulder/RightShoulder channels.
11
+ */
3
12
  export declare class JoyConRightGamepadMapping extends GenericDualAnalogGamepadMapping {
4
13
  readonly family = GamepadMappingFamily.JoyConRight;
5
14
  }
@@ -1,6 +1,15 @@
1
1
  import { GenericDualAnalogGamepadMapping } from './GenericDualAnalogGamepadMapping.js';
2
2
  import { GamepadMappingFamily } from './GamepadMapping.js';
3
3
 
4
+ /**
5
+ * Mapping for the Nintendo Switch Joy-Con (R) held horizontally or used as
6
+ * a standalone controller.
7
+ *
8
+ * Inherits the {@link GenericDualAnalogGamepadMapping} layout. Because the
9
+ * Joy-Con Right has only one physical stick, left-stick channels will never
10
+ * receive input when this mapping is active. The SL/SR shoulder buttons are
11
+ * surfaced through the standard LeftShoulder/RightShoulder channels.
12
+ */
4
13
  class JoyConRightGamepadMapping extends GenericDualAnalogGamepadMapping {
5
14
  family = GamepadMappingFamily.JoyConRight;
6
15
  }