@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
@@ -1,5 +1,12 @@
1
1
  import { clamp } from '../math/utils.js';
2
2
 
3
+ /**
4
+ * Represents a single mappable control — one button or one axis — on a physical gamepad.
5
+ *
6
+ * Stores the raw Gamepad API `index`, the target {@link GamepadChannel}, and the
7
+ * transform parameters (`invert`, `normalize`, `threshold`) applied each frame
8
+ * by {@link transformValue} before the value is written to the channel buffer.
9
+ */
3
10
  class GamepadControl {
4
11
  index;
5
12
  channel;
@@ -13,6 +20,12 @@ class GamepadControl {
13
20
  this.normalize = options.normalize ?? false;
14
21
  this.threshold = clamp(options.threshold ?? 0.2, 0, 1);
15
22
  }
23
+ /**
24
+ * Applies the control's transform pipeline to a raw browser value.
25
+ *
26
+ * Pipeline: clamp to [-1, 1] → optional invert → optional normalize to [0, 1]
27
+ * → dead-zone (returns 0 when the absolute result is at or below `threshold`).
28
+ */
16
29
  transformValue(value) {
17
30
  let result = clamp(value, -1, 1);
18
31
  if (this.invert) {
@@ -1 +1 @@
1
- {"version":3,"file":"GamepadControl.js","sources":["../../../../src/input/GamepadControl.ts"],"sourcesContent":[null],"names":[],"mappings":";;MAUa,cAAc,CAAA;AACP,IAAA,KAAK;AACL,IAAA,OAAO;AACP,IAAA,MAAM;AACN,IAAA,SAAS;AACT,IAAA,SAAS;AAEzB,IAAA,WAAA,CAAmB,KAAa,EAAE,OAAuB,EAAE,UAAiC,EAAE,EAAA;AAC1F,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;QACtB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK;QACrC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK;AAC3C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1D;AAEO,IAAA,cAAc,CAAC,KAAa,EAAA;QAC/B,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAEhC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,MAAM,IAAI,EAAE;QAChB;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;QAC7B;AAEA,QAAA,OAAO,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,MAAM,GAAG,CAAC;IAC/C;AACH;;;;"}
1
+ {"version":3,"file":"GamepadControl.js","sources":["../../../../src/input/GamepadControl.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAeA;;;;;;AAMG;MACU,cAAc,CAAA;AACP,IAAA,KAAK;AACL,IAAA,OAAO;AACP,IAAA,MAAM;AACN,IAAA,SAAS;AACT,IAAA,SAAS;AAEzB,IAAA,WAAA,CAAmB,KAAa,EAAE,OAAuB,EAAE,UAAiC,EAAE,EAAA;AAC1F,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;QACtB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK;QACrC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK;AAC3C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1D;AAEA;;;;;AAKG;AACI,IAAA,cAAc,CAAC,KAAa,EAAA;QAC/B,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAEhC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,MAAM,IAAI,EAAE;QAChB;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;QAC7B;AAEA,QAAA,OAAO,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,MAAM,GAAG,CAAC;IAC/C;AACH;;;;"}
@@ -1,9 +1,25 @@
1
1
  import type { GamepadMapping } from './GamepadMapping';
2
+ /** Convenience alias for the non-null element type returned by `navigator.getGamepads()`. */
2
3
  export type BrowserGamepad = NonNullable<ReturnType<Navigator['getGamepads']>[number]>;
4
+ /**
5
+ * Value a {@link GamepadDefinition.resolve} callback may return.
6
+ *
7
+ * Return a bare {@link GamepadMapping} to accept the device with the definition's
8
+ * default name, an object with an optional `name` override, or `null`/`undefined`
9
+ * to decline the device and let the next definition in the list try.
10
+ */
3
11
  export type GamepadDefinitionResult = GamepadMapping | {
4
12
  name?: string;
5
13
  mapping: GamepadMapping;
6
14
  } | null | undefined;
15
+ /**
16
+ * Parsed metadata extracted from a browser `Gamepad.id` string.
17
+ *
18
+ * `vendorId` and `productId` are four-hex-digit strings (e.g. `"045e"`, `"028e"`).
19
+ * `productKey` is the colon-joined pair (`"045e:028e"`), used as a compact lookup key.
20
+ * `name` is the human-readable portion of the id with the vendor/product tokens removed,
21
+ * or `null` when the id contained only identifiers.
22
+ */
7
23
  export interface GamepadDescriptor {
8
24
  id: string;
9
25
  index: number;
@@ -13,19 +29,66 @@ export interface GamepadDescriptor {
13
29
  productKey: string | null;
14
30
  name: string | null;
15
31
  }
32
+ /**
33
+ * A rule that matches one or more physical gamepads and produces a {@link GamepadMapping}.
34
+ *
35
+ * `ids` is an optional allow-list of vendor IDs (`"045e"`) or `vendorId:productId`
36
+ * pairs (`"045e:028e"`); when omitted the definition matches every device.
37
+ * `resolve` is called with the parsed {@link GamepadDescriptor} and must return a
38
+ * {@link GamepadDefinitionResult} — `null`/`undefined` to skip, a mapping otherwise.
39
+ */
16
40
  export interface GamepadDefinition {
17
41
  ids?: string | Array<string>;
18
42
  name?: string;
19
43
  resolve: (descriptor: GamepadDescriptor) => GamepadDefinitionResult;
20
44
  }
45
+ /**
46
+ * The fully resolved product of running a {@link GamepadDefinition} against a
47
+ * connected gamepad — bundles the original descriptor, the resolved display name,
48
+ * and the chosen {@link GamepadMapping} together for use by {@link Gamepad}.
49
+ */
21
50
  export interface ResolvedGamepadDefinition {
22
51
  descriptor: GamepadDescriptor;
23
52
  name: string;
24
53
  mapping: GamepadMapping;
25
54
  }
26
- export declare const normalizeIds: (ids?: string | Array<string>) => Array<string>;
55
+ /**
56
+ * Returns `true` when `descriptor` matches any entry in `ids`.
57
+ *
58
+ * A colon-containing id (e.g. `"045e:028e"`) is matched against
59
+ * `descriptor.productKey`; a bare four-hex id is matched against
60
+ * `descriptor.vendorId`. Passing no `ids` always returns `true`.
61
+ */
27
62
  export declare const matchesIds: (descriptor: GamepadDescriptor, ids?: string | Array<string>) => boolean;
63
+ /**
64
+ * Parses the raw browser `Gamepad.id` string into a structured {@link GamepadDescriptor}.
65
+ *
66
+ * Attempts multiple vendor/product ID patterns (hex-prefixed, plain, VID/PID, bare pair)
67
+ * in order of specificity, then strips the matched tokens to derive a clean `name`.
68
+ */
28
69
  export declare const parseGamepadDescriptor: (gamepad: BrowserGamepad) => GamepadDescriptor;
70
+ /**
71
+ * Runs a single {@link GamepadDefinition} against a descriptor, respecting its
72
+ * `ids` filter. Returns `null` when the definition declines the device.
73
+ */
29
74
  export declare const resolveDefinition: (definition: GamepadDefinition, descriptor: GamepadDescriptor) => ResolvedGamepadDefinition | null;
75
+ /**
76
+ * Resolves the best-matching {@link ResolvedGamepadDefinition} for a connected gamepad.
77
+ *
78
+ * Iterates `definitions` in order — exact product IDs first, then vendor fallbacks,
79
+ * then a generic catch-all — and returns the first match. Falls back to
80
+ * {@link GenericDualAnalogGamepadMapping} when no definition matches.
81
+ *
82
+ * @example
83
+ * const resolved = resolveGamepadDefinition(navigator.getGamepads()[0]!);
84
+ * const gamepad = new Gamepad(browserGamepad, channels, resolved);
85
+ */
30
86
  export declare const resolveGamepadDefinition: (gamepadOrDescriptor: BrowserGamepad | GamepadDescriptor, definitions?: ReadonlyArray<GamepadDefinition>) => ResolvedGamepadDefinition;
87
+ /**
88
+ * The default ordered list of {@link GamepadDefinition} entries used by
89
+ * {@link resolveGamepadDefinition} when no custom list is supplied.
90
+ *
91
+ * Ordered as: exact product-ID matches → vendor-ID fallbacks → generic catch-all.
92
+ * Register custom definitions by prepending to a copy and passing it explicitly.
93
+ */
31
94
  export declare const builtInGamepadDefinitions: Array<GamepadDefinition>;
@@ -59,6 +59,10 @@ const resolveDefinitionResult = (definition, descriptor) => {
59
59
  mapping: result,
60
60
  };
61
61
  };
62
+ /**
63
+ * Normalises an `ids` value into a trimmed, lower-case string array ready for
64
+ * comparison against a {@link GamepadDescriptor}.
65
+ */
62
66
  const normalizeIds = (ids) => {
63
67
  if (!ids) {
64
68
  return [];
@@ -66,6 +70,13 @@ const normalizeIds = (ids) => {
66
70
  const values = Array.isArray(ids) ? ids : [ids];
67
71
  return values.map(normalizeId);
68
72
  };
73
+ /**
74
+ * Returns `true` when `descriptor` matches any entry in `ids`.
75
+ *
76
+ * A colon-containing id (e.g. `"045e:028e"`) is matched against
77
+ * `descriptor.productKey`; a bare four-hex id is matched against
78
+ * `descriptor.vendorId`. Passing no `ids` always returns `true`.
79
+ */
69
80
  const matchesIds = (descriptor, ids) => {
70
81
  if (!ids) {
71
82
  return true;
@@ -83,6 +94,12 @@ const matchesIds = (descriptor, ids) => {
83
94
  }
84
95
  return false;
85
96
  };
97
+ /**
98
+ * Parses the raw browser `Gamepad.id` string into a structured {@link GamepadDescriptor}.
99
+ *
100
+ * Attempts multiple vendor/product ID patterns (hex-prefixed, plain, VID/PID, bare pair)
101
+ * in order of specificity, then strips the matched tokens to derive a clean `name`.
102
+ */
86
103
  const parseGamepadDescriptor = (gamepad) => {
87
104
  const label = gamepad.id.trim() || `Gamepad ${gamepad.index}`;
88
105
  const productKey = parseProductKey(label);
@@ -98,12 +115,27 @@ const parseGamepadDescriptor = (gamepad) => {
98
115
  name: parseName(label),
99
116
  };
100
117
  };
118
+ /**
119
+ * Runs a single {@link GamepadDefinition} against a descriptor, respecting its
120
+ * `ids` filter. Returns `null` when the definition declines the device.
121
+ */
101
122
  const resolveDefinition = (definition, descriptor) => {
102
123
  if (!matchesIds(descriptor, definition.ids)) {
103
124
  return null;
104
125
  }
105
126
  return resolveDefinitionResult(definition, descriptor);
106
127
  };
128
+ /**
129
+ * Resolves the best-matching {@link ResolvedGamepadDefinition} for a connected gamepad.
130
+ *
131
+ * Iterates `definitions` in order — exact product IDs first, then vendor fallbacks,
132
+ * then a generic catch-all — and returns the first match. Falls back to
133
+ * {@link GenericDualAnalogGamepadMapping} when no definition matches.
134
+ *
135
+ * @example
136
+ * const resolved = resolveGamepadDefinition(navigator.getGamepads()[0]!);
137
+ * const gamepad = new Gamepad(browserGamepad, channels, resolved);
138
+ */
107
139
  const resolveGamepadDefinition = (gamepadOrDescriptor, definitions = builtInGamepadDefinitions) => {
108
140
  const descriptor = 'connected' in gamepadOrDescriptor
109
141
  ? parseGamepadDescriptor(gamepadOrDescriptor)
@@ -165,11 +197,18 @@ const vendorFallbackDefinitions = [
165
197
  createStaticGamepadDefinition('Sony Controller', () => new PlayStationGamepadMapping(), '054c'),
166
198
  ];
167
199
  const genericFallbackDefinition = createStaticGamepadDefinition('Generic Gamepad', () => new GenericDualAnalogGamepadMapping());
200
+ /**
201
+ * The default ordered list of {@link GamepadDefinition} entries used by
202
+ * {@link resolveGamepadDefinition} when no custom list is supplied.
203
+ *
204
+ * Ordered as: exact product-ID matches → vendor-ID fallbacks → generic catch-all.
205
+ * Register custom definitions by prepending to a copy and passing it explicitly.
206
+ */
168
207
  const builtInGamepadDefinitions = [
169
208
  ...exactDeviceDefinitions,
170
209
  ...vendorFallbackDefinitions,
171
210
  genericFallbackDefinition,
172
211
  ];
173
212
 
174
- export { builtInGamepadDefinitions, matchesIds, normalizeIds, parseGamepadDescriptor, resolveDefinition, resolveGamepadDefinition };
213
+ export { builtInGamepadDefinitions, matchesIds, parseGamepadDescriptor, resolveDefinition, resolveGamepadDefinition };
175
214
  //# sourceMappingURL=GamepadDefinitions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GamepadDefinitions.js","sources":["../../../../src/input/GamepadDefinitions.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GamepadDefinitions.js","sources":["../../../../src/input/GamepadDefinitions.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  import { GamepadControl } from './GamepadControl';
2
2
  import type { GamepadControlOptions } from './GamepadControl';
3
3
  import type { GamepadChannel } from './GamepadChannels';
4
+ /**
5
+ * Discriminant tag identifying which device family a {@link GamepadMapping} belongs to.
6
+ * Used to select the correct mapping at runtime when a gamepad connects.
7
+ */
4
8
  export declare enum GamepadMappingFamily {
5
9
  GenericDualAnalog = "genericDualAnalog",
6
10
  Xbox = "xbox",
@@ -12,12 +16,38 @@ export declare enum GamepadMappingFamily {
12
16
  SteamController = "steamController",
13
17
  ArcadeStick = "arcadeStick"
14
18
  }
19
+ /**
20
+ * Compact descriptor for a single gamepad control.
21
+ * Tuple of `[rawIndex, channel, options?]` where `rawIndex` is the
22
+ * Gamepad API button or axis index reported by the browser.
23
+ */
15
24
  export type GamepadControlDefinition = readonly [number, GamepadChannel, GamepadControlOptions?];
25
+ /**
26
+ * Abstract translation layer between the browser's raw {@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad Gamepad API}
27
+ * indices and ExoJS-canonical {@link GamepadChannel} controls.
28
+ *
29
+ * Each concrete subclass encodes one device family's button/axis layout as
30
+ * ordered arrays of {@link GamepadControl} objects. The engine selects the
31
+ * appropriate mapping when a gamepad connects and uses it to route raw
32
+ * values to the correct input channels every frame.
33
+ */
16
34
  export declare abstract class GamepadMapping {
35
+ /** Identifies the device family this mapping targets. */
17
36
  abstract readonly family: GamepadMappingFamily;
18
- readonly buttons: Array<GamepadControl>;
19
- readonly axes: Array<GamepadControl>;
37
+ /** Ordered list of button controls, indexed by the Gamepad API button index. */
38
+ readonly buttons: ReadonlyArray<GamepadControl>;
39
+ /** Ordered list of axis controls, indexed by the Gamepad API axis index. */
40
+ readonly axes: ReadonlyArray<GamepadControl>;
20
41
  protected constructor(buttons: Array<GamepadControl>, axes: Array<GamepadControl>);
42
+ /**
43
+ * Releases all button and axis control references held by this mapping.
44
+ * Call when the associated gamepad disconnects to allow garbage collection.
45
+ */
21
46
  destroy(): void;
47
+ /**
48
+ * Converts an array of {@link GamepadControlDefinition} tuples into fully
49
+ * constructed {@link GamepadControl} instances.
50
+ * Shared factory used by all concrete mapping constructors.
51
+ */
22
52
  static createControls(definitions: ReadonlyArray<GamepadControlDefinition>): Array<GamepadControl>;
23
53
  }
@@ -1,5 +1,9 @@
1
1
  import { GamepadControl } from './GamepadControl.js';
2
2
 
3
+ /**
4
+ * Discriminant tag identifying which device family a {@link GamepadMapping} belongs to.
5
+ * Used to select the correct mapping at runtime when a gamepad connects.
6
+ */
3
7
  var GamepadMappingFamily;
4
8
  (function (GamepadMappingFamily) {
5
9
  GamepadMappingFamily["GenericDualAnalog"] = "genericDualAnalog";
@@ -12,17 +16,37 @@ var GamepadMappingFamily;
12
16
  GamepadMappingFamily["SteamController"] = "steamController";
13
17
  GamepadMappingFamily["ArcadeStick"] = "arcadeStick";
14
18
  })(GamepadMappingFamily || (GamepadMappingFamily = {}));
19
+ /**
20
+ * Abstract translation layer between the browser's raw {@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad Gamepad API}
21
+ * indices and ExoJS-canonical {@link GamepadChannel} controls.
22
+ *
23
+ * Each concrete subclass encodes one device family's button/axis layout as
24
+ * ordered arrays of {@link GamepadControl} objects. The engine selects the
25
+ * appropriate mapping when a gamepad connects and uses it to route raw
26
+ * values to the correct input channels every frame.
27
+ */
15
28
  class GamepadMapping {
29
+ /** Ordered list of button controls, indexed by the Gamepad API button index. */
16
30
  buttons;
31
+ /** Ordered list of axis controls, indexed by the Gamepad API axis index. */
17
32
  axes;
18
33
  constructor(buttons, axes) {
19
34
  this.buttons = buttons;
20
35
  this.axes = axes;
21
36
  }
37
+ /**
38
+ * Releases all button and axis control references held by this mapping.
39
+ * Call when the associated gamepad disconnects to allow garbage collection.
40
+ */
22
41
  destroy() {
23
42
  this.buttons.length = 0;
24
43
  this.axes.length = 0;
25
44
  }
45
+ /**
46
+ * Converts an array of {@link GamepadControlDefinition} tuples into fully
47
+ * constructed {@link GamepadControl} instances.
48
+ * Shared factory used by all concrete mapping constructors.
49
+ */
26
50
  static createControls(definitions) {
27
51
  return definitions.map(([index, channel, options]) => new GamepadControl(index, channel, options));
28
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GamepadMapping.js","sources":["../../../../src/input/GamepadMapping.ts"],"sourcesContent":[null],"names":[],"mappings":";;IAKY;AAAZ,CAAA,UAAY,oBAAoB,EAAA;AAC5B,IAAA,oBAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AACvC,IAAA,oBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,oBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,oBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,oBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,oBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC/B,CAAC,EAVW,oBAAoB,KAApB,oBAAoB,GAAA,EAAA,CAAA,CAAA;MAcV,cAAc,CAAA;AAGhB,IAAA,OAAO;AACP,IAAA,IAAI;IAEpB,WAAA,CAAsB,OAA8B,EAAE,IAA2B,EAAA;AAC7E,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IACpB;IAEO,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;IACxB;IAEO,OAAO,cAAc,CAAC,WAAoD,EAAA;QAC7E,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtG;AACH;;;;"}
1
+ {"version":3,"file":"GamepadMapping.js","sources":["../../../../src/input/GamepadMapping.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA;;;AAGG;IACS;AAAZ,CAAA,UAAY,oBAAoB,EAAA;AAC5B,IAAA,oBAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AACvC,IAAA,oBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,oBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,oBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,oBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,oBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC/B,CAAC,EAVW,oBAAoB,KAApB,oBAAoB,GAAA,EAAA,CAAA,CAAA;AAmBhC;;;;;;;;AAQG;MACmB,cAAc,CAAA;;AAKhB,IAAA,OAAO;;AAGP,IAAA,IAAI;IAEpB,WAAA,CAAsB,OAA8B,EAAE,IAA2B,EAAA;AAC7E,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IACpB;AAEA;;;AAGG;IACI,OAAO,GAAA;AACT,QAAA,IAAI,CAAC,OAAiC,CAAC,MAAM,GAAG,CAAC;AACjD,QAAA,IAAI,CAAC,IAA8B,CAAC,MAAM,GAAG,CAAC;IACnD;AAEA;;;;AAIG;IACI,OAAO,cAAc,CAAC,WAAoD,EAAA;QAC7E,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtG;AACH;;;;"}
@@ -1,9 +1,40 @@
1
1
  import { GamepadChannel } from './GamepadChannels';
2
2
  import { GamepadMappingFamily } from './GamepadMapping';
3
+ /**
4
+ * Named controls that can appear in an in-game prompt or button-hint UI.
5
+ *
6
+ * Intentionally a subset of {@link GamepadChannel} — covers the controls a
7
+ * typical prompt overlay needs to label, including the composite `'DPad'` token
8
+ * which has no single channel equivalent.
9
+ */
3
10
  export type GamepadPromptControl = 'DPad' | 'DPadUp' | 'DPadDown' | 'DPadLeft' | 'DPadRight' | 'ButtonNorth' | 'ButtonWest' | 'ButtonEast' | 'ButtonSouth' | 'LeftShoulder' | 'RightShoulder' | 'LeftTrigger' | 'RightTrigger' | 'Select' | 'Start' | 'LeftStick' | 'RightStick';
11
+ /**
12
+ * Static utility that drives in-game controller-prompt UI.
13
+ *
14
+ * Provides the canonical set of prompt controls, their normalised [x, y] positions
15
+ * on a generic controller silhouette, device-family label strings (e.g. "A" for
16
+ * Xbox, "Cross" for PlayStation, "B" for Switch), and the mapping from prompt
17
+ * control names to {@link GamepadChannel} values.
18
+ */
4
19
  export declare class GamepadPromptLayouts {
20
+ /** Complete ordered list of every {@link GamepadPromptControl} token. */
5
21
  static readonly controls: Array<GamepadPromptControl>;
22
+ /**
23
+ * Returns the normalised [x, y] position of `control` on a generic controller
24
+ * silhouette, where (0, 0) is the top-left and (1, 1) the bottom-right.
25
+ * Falls back to [0.5, 0.5] (centre) when the control has no registered position.
26
+ */
6
27
  static getControlPosition(control: GamepadPromptControl): readonly [number, number];
28
+ /**
29
+ * Returns the label map for the given device family, e.g. `{ ButtonSouth → "A" }`
30
+ * for Xbox or `{ ButtonSouth → "Cross" }` for PlayStation.
31
+ * Falls back to generic labels when `family` has no registered label set.
32
+ */
7
33
  static getControlLabels(family: GamepadMappingFamily): ReadonlyMap<GamepadPromptControl, string>;
8
- static buildControlChannelMap(): ReadonlyMap<GamepadPromptControl, GamepadChannel>;
34
+ /**
35
+ * Returns the static mapping from each {@link GamepadPromptControl} to its
36
+ * corresponding {@link GamepadChannel}. The composite `'DPad'` control has no
37
+ * channel entry and is absent from the returned map.
38
+ */
39
+ static getControlChannelMap(): ReadonlyMap<GamepadPromptControl, GamepadChannel>;
9
40
  }
@@ -105,7 +105,16 @@ const promptLabelsByFamily = new Map([
105
105
  [GamepadMappingFamily.SteamController, genericLabels],
106
106
  [GamepadMappingFamily.ArcadeStick, genericLabels],
107
107
  ]);
108
+ /**
109
+ * Static utility that drives in-game controller-prompt UI.
110
+ *
111
+ * Provides the canonical set of prompt controls, their normalised [x, y] positions
112
+ * on a generic controller silhouette, device-family label strings (e.g. "A" for
113
+ * Xbox, "Cross" for PlayStation, "B" for Switch), and the mapping from prompt
114
+ * control names to {@link GamepadChannel} values.
115
+ */
108
116
  class GamepadPromptLayouts {
117
+ /** Complete ordered list of every {@link GamepadPromptControl} token. */
109
118
  static controls = [
110
119
  'DPad',
111
120
  'DPadUp',
@@ -125,13 +134,28 @@ class GamepadPromptLayouts {
125
134
  'LeftStick',
126
135
  'RightStick',
127
136
  ];
137
+ /**
138
+ * Returns the normalised [x, y] position of `control` on a generic controller
139
+ * silhouette, where (0, 0) is the top-left and (1, 1) the bottom-right.
140
+ * Falls back to [0.5, 0.5] (centre) when the control has no registered position.
141
+ */
128
142
  static getControlPosition(control) {
129
143
  return basePositions.get(control) ?? [0.5, 0.5];
130
144
  }
145
+ /**
146
+ * Returns the label map for the given device family, e.g. `{ ButtonSouth → "A" }`
147
+ * for Xbox or `{ ButtonSouth → "Cross" }` for PlayStation.
148
+ * Falls back to generic labels when `family` has no registered label set.
149
+ */
131
150
  static getControlLabels(family) {
132
151
  return promptLabelsByFamily.get(family) ?? genericLabels;
133
152
  }
134
- static buildControlChannelMap() {
153
+ /**
154
+ * Returns the static mapping from each {@link GamepadPromptControl} to its
155
+ * corresponding {@link GamepadChannel}. The composite `'DPad'` control has no
156
+ * channel entry and is absent from the returned map.
157
+ */
158
+ static getControlChannelMap() {
135
159
  return channelMap;
136
160
  }
137
161
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GamepadPromptLayouts.js","sources":["../../../../src/input/GamepadPromptLayouts.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GamepadPromptLayouts.js","sources":["../../../../src/input/GamepadPromptLayouts.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,4 +1,14 @@
1
1
  import { GamepadMapping, GamepadMappingFamily } from './GamepadMapping';
2
+ /**
3
+ * Baseline mapping for dual-analog controllers that follow the standard
4
+ * W3C Gamepad API layout (axes 0–3 for both sticks, axes 4–7 auxiliary).
5
+ *
6
+ * Each signed axis is split into two directional channels — one for the
7
+ * negative half and one for the positive half — with the negative channel
8
+ * inverted so all channel values are non-negative during normal use.
9
+ * Device-specific subclasses (Xbox, PlayStation, Switch Pro, etc.) inherit
10
+ * this layout and override only {@link GamepadMapping.family}.
11
+ */
2
12
  export declare class GenericDualAnalogGamepadMapping extends GamepadMapping {
3
13
  readonly family: GamepadMappingFamily;
4
14
  constructor();
@@ -42,6 +42,16 @@ const genericDualAnalogAxisDefinitions = [
42
42
  [7, GamepadChannel.AuxiliaryAxis3Negative, { invert: true }],
43
43
  [7, GamepadChannel.AuxiliaryAxis3Positive],
44
44
  ];
45
+ /**
46
+ * Baseline mapping for dual-analog controllers that follow the standard
47
+ * W3C Gamepad API layout (axes 0–3 for both sticks, axes 4–7 auxiliary).
48
+ *
49
+ * Each signed axis is split into two directional channels — one for the
50
+ * negative half and one for the positive half — with the negative channel
51
+ * inverted so all channel values are non-negative during normal use.
52
+ * Device-specific subclasses (Xbox, PlayStation, Switch Pro, etc.) inherit
53
+ * this layout and override only {@link GamepadMapping.family}.
54
+ */
45
55
  class GenericDualAnalogGamepadMapping extends GamepadMapping {
46
56
  family = GamepadMappingFamily.GenericDualAnalog;
47
57
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"GenericDualAnalogGamepadMapping.js","sources":["../../../../src/input/GenericDualAnalogGamepadMapping.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GenericDualAnalogGamepadMapping.js","sources":["../../../../src/input/GenericDualAnalogGamepadMapping.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -2,8 +2,17 @@ import { Vector } from '@/math/Vector';
2
2
  import type { Signal } from '@/core/Signal';
3
3
  import type { Pointer } from './Pointer';
4
4
  /**
5
- * Internal gesture recognizer NOT exported publicly.
6
- * Receives pointer lifecycle events from InputManager and fires gesture signals.
5
+ * Internal multi-touch gesture recognizer used by {@link InputManager}.
6
+ * Tracks active touch pointers, derives pinch/rotate deltas from the two
7
+ * primary touches, and fires long-press signals when a single pointer is
8
+ * held still for {@link longPressMs} (500 ms). Long-press cancels if the
9
+ * pointer moves beyond `distanceThreshold` pixels from the down position.
10
+ *
11
+ * The associated Signals (`onPinch`, `onRotate`, `onLongPress`) are owned
12
+ * by {@link InputManager} and re-exposed there as part of the public API;
13
+ * the recognizer just dispatches into them.
14
+ *
15
+ * @internal
7
16
  */
8
17
  export declare class GestureRecognizer {
9
18
  readonly onPinch: Signal<[scale: number, center: Vector]>;
@@ -3,8 +3,17 @@ import { Vector } from '../math/Vector.js';
3
3
  /** Long-press threshold in milliseconds. */
4
4
  const longPressMs = 500;
5
5
  /**
6
- * Internal gesture recognizer NOT exported publicly.
7
- * Receives pointer lifecycle events from InputManager and fires gesture signals.
6
+ * Internal multi-touch gesture recognizer used by {@link InputManager}.
7
+ * Tracks active touch pointers, derives pinch/rotate deltas from the two
8
+ * primary touches, and fires long-press signals when a single pointer is
9
+ * held still for {@link longPressMs} (500 ms). Long-press cancels if the
10
+ * pointer moves beyond `distanceThreshold` pixels from the down position.
11
+ *
12
+ * The associated Signals (`onPinch`, `onRotate`, `onLongPress`) are owned
13
+ * by {@link InputManager} and re-exposed there as part of the public API;
14
+ * the recognizer just dispatches into them.
15
+ *
16
+ * @internal
8
17
  */
9
18
  class GestureRecognizer {
10
19
  onPinch;
@@ -1 +1 @@
1
- {"version":3,"file":"GestureRecognizer.js","sources":["../../../../src/input/GestureRecognizer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GestureRecognizer.js","sources":["../../../../src/input/GestureRecognizer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { Signal } from '@/core/Signal';
2
2
  import type { Keyboard } from '@/input/types';
3
3
  import type { GamepadChannel } from './GamepadChannels';
4
+ /** Convenience options accepted by the {@link Input} constructor. */
4
5
  interface InputOptions {
5
6
  onStart?: () => void;
6
7
  onStop?: () => void;
@@ -9,7 +10,25 @@ interface InputOptions {
9
10
  context?: object;
10
11
  threshold?: number;
11
12
  }
13
+ /** Union of channel identifiers an {@link Input} can subscribe to. */
12
14
  export type InputChannel = GamepadChannel | Keyboard;
15
+ /**
16
+ * Bind one or more input channels (keyboard keys, gamepad buttons, gamepad
17
+ * axes) to a set of high-level events: `onStart` (became active),
18
+ * `onStop` (became inactive), `onActive` (per-frame while active), and
19
+ * `onTrigger` (released within the threshold window — a "tap"). The current
20
+ * raw value is the max across all subscribed channels.
21
+ *
22
+ * Construct ad-hoc, or via {@link InputManager.add}. Driven by the
23
+ * {@link InputManager} update loop which feeds the unified channel buffer.
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * const jump = new Input([Keyboard.Space, GamepadChannel.FaceA], {
28
+ * onTrigger: () => player.jump(),
29
+ * });
30
+ * ```
31
+ */
13
32
  export declare class Input {
14
33
  static triggerThreshold: number;
15
34
  private readonly channels;
@@ -22,6 +41,11 @@ export declare class Input {
22
41
  constructor(channels: Array<InputChannel> | InputChannel, { onStart, onStop, onActive, onTrigger, context, threshold }?: InputOptions);
23
42
  get activeChannels(): Set<number>;
24
43
  get value(): number;
44
+ /**
45
+ * Read the latest values from the unified channel buffer and dispatch
46
+ * the appropriate Signals. Called once per frame by {@link InputManager}.
47
+ * No-op for inputs not bound to any channel.
48
+ */
25
49
  update(channels: Float32Array): this;
26
50
  destroy(): void;
27
51
  }