@codexo/exojs 0.7.11 → 0.7.13

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 (492) hide show
  1. package/CHANGELOG.md +442 -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 +11 -0
  12. package/dist/esm/audio/AbstractMedia.js +10 -0
  13. package/dist/esm/audio/AbstractMedia.js.map +1 -1
  14. package/dist/esm/audio/AudioAnalyser.d.ts +21 -0
  15. package/dist/esm/audio/AudioAnalyser.js +16 -0
  16. package/dist/esm/audio/AudioAnalyser.js.map +1 -1
  17. package/dist/esm/audio/AudioBus.d.ts +37 -0
  18. package/dist/esm/audio/AudioBus.js +36 -0
  19. package/dist/esm/audio/AudioBus.js.map +1 -1
  20. package/dist/esm/audio/AudioFilter.d.ts +7 -0
  21. package/dist/esm/audio/AudioFilter.js +6 -0
  22. package/dist/esm/audio/AudioFilter.js.map +1 -1
  23. package/dist/esm/audio/AudioListener.d.ts +19 -0
  24. package/dist/esm/audio/AudioListener.js +11 -0
  25. package/dist/esm/audio/AudioListener.js.map +1 -1
  26. package/dist/esm/audio/AudioManager.d.ts +37 -0
  27. package/dist/esm/audio/AudioManager.js +37 -0
  28. package/dist/esm/audio/AudioManager.js.map +1 -1
  29. package/dist/esm/audio/BeatDetector.d.ts +21 -0
  30. package/dist/esm/audio/BeatDetector.js +21 -0
  31. package/dist/esm/audio/BeatDetector.js.map +1 -1
  32. package/dist/esm/audio/Media.d.ts +11 -0
  33. package/dist/esm/audio/Music.d.ts +12 -0
  34. package/dist/esm/audio/Music.js +12 -0
  35. package/dist/esm/audio/Music.js.map +1 -1
  36. package/dist/esm/audio/Sound.d.ts +25 -0
  37. package/dist/esm/audio/Sound.js +18 -0
  38. package/dist/esm/audio/Sound.js.map +1 -1
  39. package/dist/esm/audio/audio-context.d.ts +48 -0
  40. package/dist/esm/audio/audio-context.js +48 -5
  41. package/dist/esm/audio/audio-context.js.map +1 -1
  42. package/dist/esm/audio/filters/ChorusFilter.d.ts +5 -0
  43. package/dist/esm/audio/filters/ChorusFilter.js +4 -0
  44. package/dist/esm/audio/filters/ChorusFilter.js.map +1 -1
  45. package/dist/esm/audio/filters/CompressorFilter.d.ts +12 -0
  46. package/dist/esm/audio/filters/CompressorFilter.js +11 -0
  47. package/dist/esm/audio/filters/CompressorFilter.js.map +1 -1
  48. package/dist/esm/audio/filters/DelayFilter.d.ts +11 -0
  49. package/dist/esm/audio/filters/DelayFilter.js +10 -0
  50. package/dist/esm/audio/filters/DelayFilter.js.map +1 -1
  51. package/dist/esm/audio/filters/DuckingFilter.d.ts +13 -0
  52. package/dist/esm/audio/filters/DuckingFilter.js +12 -0
  53. package/dist/esm/audio/filters/DuckingFilter.js.map +1 -1
  54. package/dist/esm/audio/filters/EqualizerFilter.d.ts +20 -0
  55. package/dist/esm/audio/filters/EqualizerFilter.js +40 -0
  56. package/dist/esm/audio/filters/EqualizerFilter.js.map +1 -1
  57. package/dist/esm/audio/filters/GranularFilter.d.ts +6 -0
  58. package/dist/esm/audio/filters/GranularFilter.js +6 -0
  59. package/dist/esm/audio/filters/GranularFilter.js.map +1 -1
  60. package/dist/esm/audio/filters/HighpassFilter.d.ts +10 -0
  61. package/dist/esm/audio/filters/HighpassFilter.js +9 -0
  62. package/dist/esm/audio/filters/HighpassFilter.js.map +1 -1
  63. package/dist/esm/audio/filters/LowpassFilter.d.ts +10 -0
  64. package/dist/esm/audio/filters/LowpassFilter.js +9 -0
  65. package/dist/esm/audio/filters/LowpassFilter.js.map +1 -1
  66. package/dist/esm/audio/filters/PitchShiftFilter.d.ts +2 -0
  67. package/dist/esm/audio/filters/PitchShiftFilter.js +2 -0
  68. package/dist/esm/audio/filters/PitchShiftFilter.js.map +1 -1
  69. package/dist/esm/audio/filters/ReverbFilter.d.ts +12 -0
  70. package/dist/esm/audio/filters/ReverbFilter.js +11 -0
  71. package/dist/esm/audio/filters/ReverbFilter.js.map +1 -1
  72. package/dist/esm/audio/filters/VocoderFilter.d.ts +11 -0
  73. package/dist/esm/audio/filters/VocoderFilter.js +11 -0
  74. package/dist/esm/audio/filters/VocoderFilter.js.map +1 -1
  75. package/dist/esm/audio/filters/WorkletFilter.d.ts +6 -1
  76. package/dist/esm/audio/filters/WorkletFilter.js +6 -1
  77. package/dist/esm/audio/filters/WorkletFilter.js.map +1 -1
  78. package/dist/esm/core/Application.d.ts +66 -1
  79. package/dist/esm/core/Application.js +68 -6
  80. package/dist/esm/core/Application.js.map +1 -1
  81. package/dist/esm/core/Bounds.d.ts +23 -0
  82. package/dist/esm/core/Bounds.js +23 -0
  83. package/dist/esm/core/Bounds.js.map +1 -1
  84. package/dist/esm/core/Clock.d.ts +21 -0
  85. package/dist/esm/core/Clock.js +21 -0
  86. package/dist/esm/core/Clock.js.map +1 -1
  87. package/dist/esm/core/Color.d.ts +35 -0
  88. package/dist/esm/core/Color.js +35 -0
  89. package/dist/esm/core/Color.js.map +1 -1
  90. package/dist/esm/core/Scene.d.ts +76 -0
  91. package/dist/esm/core/Scene.js +83 -0
  92. package/dist/esm/core/Scene.js.map +1 -1
  93. package/dist/esm/core/SceneManager.d.ts +62 -0
  94. package/dist/esm/core/SceneManager.js +51 -2
  95. package/dist/esm/core/SceneManager.js.map +1 -1
  96. package/dist/esm/core/SceneNode.d.ts +31 -0
  97. package/dist/esm/core/SceneNode.js +31 -0
  98. package/dist/esm/core/SceneNode.js.map +1 -1
  99. package/dist/esm/core/Signal.d.ts +44 -0
  100. package/dist/esm/core/Signal.js +39 -0
  101. package/dist/esm/core/Signal.js.map +1 -1
  102. package/dist/esm/core/Time.d.ts +21 -0
  103. package/dist/esm/core/Time.js +21 -0
  104. package/dist/esm/core/Time.js.map +1 -1
  105. package/dist/esm/core/Timer.d.ts +7 -0
  106. package/dist/esm/core/Timer.js +7 -0
  107. package/dist/esm/core/Timer.js.map +1 -1
  108. package/dist/esm/core/capabilities.d.ts +12 -0
  109. package/dist/esm/core/capabilities.js +12 -0
  110. package/dist/esm/core/capabilities.js.map +1 -1
  111. package/dist/esm/core/types.d.ts +37 -0
  112. package/dist/esm/core/utils.d.ts +48 -0
  113. package/dist/esm/core/utils.js +48 -0
  114. package/dist/esm/core/utils.js.map +1 -1
  115. package/dist/esm/debug/BoundingBoxesLayer.d.ts +8 -0
  116. package/dist/esm/debug/BoundingBoxesLayer.js +8 -0
  117. package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -1
  118. package/dist/esm/debug/DebugLayer.d.ts +16 -3
  119. package/dist/esm/debug/DebugLayer.js +11 -3
  120. package/dist/esm/debug/DebugLayer.js.map +1 -1
  121. package/dist/esm/debug/DebugOverlay.d.ts +11 -0
  122. package/dist/esm/debug/DebugOverlay.js +8 -2
  123. package/dist/esm/debug/DebugOverlay.js.map +1 -1
  124. package/dist/esm/debug/HitTestLayer.d.ts +9 -0
  125. package/dist/esm/debug/HitTestLayer.js +9 -0
  126. package/dist/esm/debug/HitTestLayer.js.map +1 -1
  127. package/dist/esm/debug/PerformanceLayer.d.ts +17 -1
  128. package/dist/esm/debug/PerformanceLayer.js +18 -0
  129. package/dist/esm/debug/PerformanceLayer.js.map +1 -1
  130. package/dist/esm/debug/PointerStackLayer.d.ts +8 -0
  131. package/dist/esm/debug/PointerStackLayer.js +11 -3
  132. package/dist/esm/debug/PointerStackLayer.js.map +1 -1
  133. package/dist/esm/index.js +6 -5
  134. package/dist/esm/index.js.map +1 -1
  135. package/dist/esm/input/ArcadeStickGamepadMapping.d.ts +7 -0
  136. package/dist/esm/input/ArcadeStickGamepadMapping.js +25 -19
  137. package/dist/esm/input/ArcadeStickGamepadMapping.js.map +1 -1
  138. package/dist/esm/input/GameCubeGamepadMapping.d.ts +9 -0
  139. package/dist/esm/input/GameCubeGamepadMapping.js +9 -0
  140. package/dist/esm/input/GameCubeGamepadMapping.js.map +1 -1
  141. package/dist/esm/input/Gamepad.d.ts +181 -31
  142. package/dist/esm/input/Gamepad.js +307 -108
  143. package/dist/esm/input/Gamepad.js.map +1 -1
  144. package/dist/esm/input/GamepadAxis.d.ts +120 -0
  145. package/dist/esm/input/GamepadAxis.js +106 -0
  146. package/dist/esm/input/GamepadAxis.js.map +1 -0
  147. package/dist/esm/input/GamepadButton.d.ts +110 -0
  148. package/dist/esm/input/GamepadButton.js +99 -0
  149. package/dist/esm/input/GamepadButton.js.map +1 -0
  150. package/dist/esm/input/GamepadDefinitions.d.ts +64 -1
  151. package/dist/esm/input/GamepadDefinitions.js +44 -1
  152. package/dist/esm/input/GamepadDefinitions.js.map +1 -1
  153. package/dist/esm/input/GamepadMapping.d.ts +42 -8
  154. package/dist/esm/input/GamepadMapping.js +46 -5
  155. package/dist/esm/input/GamepadMapping.js.map +1 -1
  156. package/dist/esm/input/GamepadPromptLayouts.d.ts +35 -2
  157. package/dist/esm/input/GamepadPromptLayouts.js +43 -18
  158. package/dist/esm/input/GamepadPromptLayouts.js.map +1 -1
  159. package/dist/esm/input/GenericDualAnalogGamepadMapping.d.ts +13 -0
  160. package/dist/esm/input/GenericDualAnalogGamepadMapping.js +62 -43
  161. package/dist/esm/input/GenericDualAnalogGamepadMapping.js.map +1 -1
  162. package/dist/esm/input/GestureRecognizer.d.ts +11 -2
  163. package/dist/esm/input/GestureRecognizer.js +11 -2
  164. package/dist/esm/input/GestureRecognizer.js.map +1 -1
  165. package/dist/esm/input/InputBinding.d.ts +74 -0
  166. package/dist/esm/input/InputBinding.js +100 -0
  167. package/dist/esm/input/InputBinding.js.map +1 -0
  168. package/dist/esm/input/InputManager.d.ts +100 -21
  169. package/dist/esm/input/InputManager.js +248 -90
  170. package/dist/esm/input/InputManager.js.map +1 -1
  171. package/dist/esm/input/InteractionEvent.d.ts +13 -0
  172. package/dist/esm/input/InteractionEvent.js +8 -0
  173. package/dist/esm/input/InteractionEvent.js.map +1 -1
  174. package/dist/esm/input/InteractionManager.d.ts +34 -5
  175. package/dist/esm/input/InteractionManager.js +46 -17
  176. package/dist/esm/input/InteractionManager.js.map +1 -1
  177. package/dist/esm/input/JoyConLeftGamepadMapping.d.ts +17 -3
  178. package/dist/esm/input/JoyConLeftGamepadMapping.js +42 -3
  179. package/dist/esm/input/JoyConLeftGamepadMapping.js.map +1 -1
  180. package/dist/esm/input/JoyConRightGamepadMapping.d.ts +17 -3
  181. package/dist/esm/input/JoyConRightGamepadMapping.js +38 -3
  182. package/dist/esm/input/JoyConRightGamepadMapping.js.map +1 -1
  183. package/dist/esm/input/PlayStationGamepadMapping.d.ts +8 -0
  184. package/dist/esm/input/PlayStationGamepadMapping.js +8 -0
  185. package/dist/esm/input/PlayStationGamepadMapping.js.map +1 -1
  186. package/dist/esm/input/Pointer.d.ts +106 -71
  187. package/dist/esm/input/Pointer.js +93 -71
  188. package/dist/esm/input/Pointer.js.map +1 -1
  189. package/dist/esm/input/SteamControllerGamepadMapping.d.ts +8 -0
  190. package/dist/esm/input/SteamControllerGamepadMapping.js +8 -0
  191. package/dist/esm/input/SteamControllerGamepadMapping.js.map +1 -1
  192. package/dist/esm/input/SteamDeckGamepadMapping.d.ts +18 -0
  193. package/dist/esm/input/SteamDeckGamepadMapping.js +76 -0
  194. package/dist/esm/input/SteamDeckGamepadMapping.js.map +1 -0
  195. package/dist/esm/input/SwitchProGamepadMapping.d.ts +9 -0
  196. package/dist/esm/input/SwitchProGamepadMapping.js +9 -0
  197. package/dist/esm/input/SwitchProGamepadMapping.js.map +1 -1
  198. package/dist/esm/input/XboxGamepadMapping.d.ts +8 -0
  199. package/dist/esm/input/XboxGamepadMapping.js +8 -0
  200. package/dist/esm/input/XboxGamepadMapping.js.map +1 -1
  201. package/dist/esm/input/index.d.ts +7 -4
  202. package/dist/esm/input/types.d.ts +17 -73
  203. package/dist/esm/input/types.js +18 -77
  204. package/dist/esm/input/types.js.map +1 -1
  205. package/dist/esm/math/AbstractVector.d.ts +83 -0
  206. package/dist/esm/math/AbstractVector.js +83 -0
  207. package/dist/esm/math/AbstractVector.js.map +1 -1
  208. package/dist/esm/math/Circle.d.ts +32 -0
  209. package/dist/esm/math/Circle.js +34 -2
  210. package/dist/esm/math/Circle.js.map +1 -1
  211. package/dist/esm/math/CircleLike.d.ts +1 -0
  212. package/dist/esm/math/Collision.d.ts +39 -0
  213. package/dist/esm/math/Collision.js +5 -0
  214. package/dist/esm/math/Collision.js.map +1 -1
  215. package/dist/esm/math/Ellipse.d.ts +11 -0
  216. package/dist/esm/math/Ellipse.js +18 -2
  217. package/dist/esm/math/Ellipse.js.map +1 -1
  218. package/dist/esm/math/EllipseLike.d.ts +3 -0
  219. package/dist/esm/math/Flags.d.ts +31 -0
  220. package/dist/esm/math/Flags.js +31 -0
  221. package/dist/esm/math/Flags.js.map +1 -1
  222. package/dist/esm/math/Interval.d.ts +15 -0
  223. package/dist/esm/math/Interval.js +15 -0
  224. package/dist/esm/math/Interval.js.map +1 -1
  225. package/dist/esm/math/Line.d.ts +17 -1
  226. package/dist/esm/math/Line.js +17 -1
  227. package/dist/esm/math/Line.js.map +1 -1
  228. package/dist/esm/math/LineLike.d.ts +1 -0
  229. package/dist/esm/math/Matrix.d.ts +44 -3
  230. package/dist/esm/math/Matrix.js +44 -3
  231. package/dist/esm/math/Matrix.js.map +1 -1
  232. package/dist/esm/math/ObservableSize.d.ts +7 -0
  233. package/dist/esm/math/ObservableSize.js +7 -0
  234. package/dist/esm/math/ObservableSize.js.map +1 -1
  235. package/dist/esm/math/ObservableVector.d.ts +9 -0
  236. package/dist/esm/math/ObservableVector.js +9 -0
  237. package/dist/esm/math/ObservableVector.js.map +1 -1
  238. package/dist/esm/math/PointLike.d.ts +1 -0
  239. package/dist/esm/math/PolarVector.d.ts +15 -0
  240. package/dist/esm/math/PolarVector.js +16 -1
  241. package/dist/esm/math/PolarVector.js.map +1 -1
  242. package/dist/esm/math/Polygon.d.ts +20 -0
  243. package/dist/esm/math/Polygon.js +20 -0
  244. package/dist/esm/math/Polygon.js.map +1 -1
  245. package/dist/esm/math/PolygonLike.d.ts +4 -0
  246. package/dist/esm/math/Quadtree.d.ts +40 -3
  247. package/dist/esm/math/Quadtree.js +39 -3
  248. package/dist/esm/math/Quadtree.js.map +1 -1
  249. package/dist/esm/math/Random.d.ts +25 -0
  250. package/dist/esm/math/Random.js +25 -0
  251. package/dist/esm/math/Random.js.map +1 -1
  252. package/dist/esm/math/Rectangle.d.ts +15 -0
  253. package/dist/esm/math/Rectangle.js +17 -2
  254. package/dist/esm/math/Rectangle.js.map +1 -1
  255. package/dist/esm/math/RectangleLike.d.ts +1 -0
  256. package/dist/esm/math/Segment.d.ts +7 -0
  257. package/dist/esm/math/Segment.js +7 -0
  258. package/dist/esm/math/Segment.js.map +1 -1
  259. package/dist/esm/math/ShapeLike.d.ts +6 -0
  260. package/dist/esm/math/Size.d.ts +9 -0
  261. package/dist/esm/math/Size.js +9 -0
  262. package/dist/esm/math/Size.js.map +1 -1
  263. package/dist/esm/math/Vector.d.ts +16 -0
  264. package/dist/esm/math/Vector.js +16 -0
  265. package/dist/esm/math/Vector.js.map +1 -1
  266. package/dist/esm/math/collision-detection.d.ts +47 -1
  267. package/dist/esm/math/collision-detection.js +228 -17
  268. package/dist/esm/math/collision-detection.js.map +1 -1
  269. package/dist/esm/math/collision-primitives.d.ts +23 -0
  270. package/dist/esm/math/collision-primitives.js +23 -0
  271. package/dist/esm/math/collision-primitives.js.map +1 -1
  272. package/dist/esm/math/geometry.d.ts +42 -0
  273. package/dist/esm/math/geometry.js +37 -0
  274. package/dist/esm/math/geometry.js.map +1 -1
  275. package/dist/esm/math/utils.d.ts +41 -0
  276. package/dist/esm/math/utils.js +41 -0
  277. package/dist/esm/math/utils.js.map +1 -1
  278. package/dist/esm/particles/Particle.d.ts +37 -0
  279. package/dist/esm/particles/Particle.js +37 -0
  280. package/dist/esm/particles/Particle.js.map +1 -1
  281. package/dist/esm/particles/ParticleProperties.d.ts +15 -0
  282. package/dist/esm/particles/ParticleSystem.d.ts +69 -0
  283. package/dist/esm/particles/ParticleSystem.js +69 -0
  284. package/dist/esm/particles/ParticleSystem.js.map +1 -1
  285. package/dist/esm/particles/affectors/ColorAffector.d.ts +13 -0
  286. package/dist/esm/particles/affectors/ColorAffector.js +13 -0
  287. package/dist/esm/particles/affectors/ColorAffector.js.map +1 -1
  288. package/dist/esm/particles/affectors/ForceAffector.d.ts +11 -0
  289. package/dist/esm/particles/affectors/ForceAffector.js +11 -0
  290. package/dist/esm/particles/affectors/ForceAffector.js.map +1 -1
  291. package/dist/esm/particles/affectors/ParticleAffector.d.ts +13 -0
  292. package/dist/esm/particles/affectors/ScaleAffector.d.ts +10 -0
  293. package/dist/esm/particles/affectors/ScaleAffector.js +10 -0
  294. package/dist/esm/particles/affectors/ScaleAffector.js.map +1 -1
  295. package/dist/esm/particles/affectors/TorqueAffector.d.ts +11 -0
  296. package/dist/esm/particles/affectors/TorqueAffector.js +11 -0
  297. package/dist/esm/particles/affectors/TorqueAffector.js.map +1 -1
  298. package/dist/esm/particles/emitters/ParticleEmitter.d.ts +13 -0
  299. package/dist/esm/particles/emitters/ParticleOptions.d.ts +16 -0
  300. package/dist/esm/particles/emitters/ParticleOptions.js +16 -0
  301. package/dist/esm/particles/emitters/ParticleOptions.js.map +1 -1
  302. package/dist/esm/particles/emitters/UniversalEmitter.d.ts +23 -0
  303. package/dist/esm/particles/emitters/UniversalEmitter.js +23 -0
  304. package/dist/esm/particles/emitters/UniversalEmitter.js.map +1 -1
  305. package/dist/esm/rendering/CallbackRenderPass.d.ts +12 -0
  306. package/dist/esm/rendering/CallbackRenderPass.js +12 -0
  307. package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
  308. package/dist/esm/rendering/Container.d.ts +43 -0
  309. package/dist/esm/rendering/Container.js +43 -0
  310. package/dist/esm/rendering/Container.js.map +1 -1
  311. package/dist/esm/rendering/Drawable.d.ts +22 -0
  312. package/dist/esm/rendering/Drawable.js +22 -0
  313. package/dist/esm/rendering/Drawable.js.map +1 -1
  314. package/dist/esm/rendering/RenderBackend.d.ts +13 -0
  315. package/dist/esm/rendering/RenderBackendType.d.ts +4 -0
  316. package/dist/esm/rendering/RenderBackendType.js +4 -0
  317. package/dist/esm/rendering/RenderBackendType.js.map +1 -1
  318. package/dist/esm/rendering/RenderNode.d.ts +18 -0
  319. package/dist/esm/rendering/RenderNode.js +18 -0
  320. package/dist/esm/rendering/RenderNode.js.map +1 -1
  321. package/dist/esm/rendering/RenderPass.d.ts +8 -0
  322. package/dist/esm/rendering/RenderStats.d.ts +19 -0
  323. package/dist/esm/rendering/RenderStats.js +7 -0
  324. package/dist/esm/rendering/RenderStats.js.map +1 -1
  325. package/dist/esm/rendering/RenderTarget.d.ts +17 -0
  326. package/dist/esm/rendering/RenderTarget.js +17 -0
  327. package/dist/esm/rendering/RenderTarget.js.map +1 -1
  328. package/dist/esm/rendering/RenderTargetPass.d.ts +11 -0
  329. package/dist/esm/rendering/RenderTargetPass.js +7 -0
  330. package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
  331. package/dist/esm/rendering/Renderer.d.ts +15 -0
  332. package/dist/esm/rendering/RendererRegistry.d.ts +7 -0
  333. package/dist/esm/rendering/RendererRegistry.js +7 -0
  334. package/dist/esm/rendering/RendererRegistry.js.map +1 -1
  335. package/dist/esm/rendering/View.d.ts +67 -2
  336. package/dist/esm/rendering/View.js +57 -0
  337. package/dist/esm/rendering/View.js.map +1 -1
  338. package/dist/esm/rendering/filters/BlurFilter.d.ts +9 -0
  339. package/dist/esm/rendering/filters/BlurFilter.js +8 -0
  340. package/dist/esm/rendering/filters/BlurFilter.js.map +1 -1
  341. package/dist/esm/rendering/filters/ColorFilter.d.ts +7 -0
  342. package/dist/esm/rendering/filters/ColorFilter.js +7 -0
  343. package/dist/esm/rendering/filters/ColorFilter.js.map +1 -1
  344. package/dist/esm/rendering/filters/Filter.d.ts +23 -0
  345. package/dist/esm/rendering/filters/Filter.js +20 -0
  346. package/dist/esm/rendering/filters/Filter.js.map +1 -1
  347. package/dist/esm/rendering/filters/WebGl2ShaderFilter.d.ts +5 -0
  348. package/dist/esm/rendering/filters/WebGl2ShaderFilter.js +5 -0
  349. package/dist/esm/rendering/filters/WebGl2ShaderFilter.js.map +1 -1
  350. package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts +5 -0
  351. package/dist/esm/rendering/filters/WebGpuShaderFilter.js +5 -0
  352. package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
  353. package/dist/esm/rendering/mesh/Mesh.d.ts +2 -0
  354. package/dist/esm/rendering/mesh/Mesh.js +2 -0
  355. package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
  356. package/dist/esm/rendering/primitives/Graphics.d.ts +34 -0
  357. package/dist/esm/rendering/primitives/Graphics.js +34 -0
  358. package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
  359. package/dist/esm/rendering/shader/Shader.d.ts +36 -0
  360. package/dist/esm/rendering/shader/Shader.js +26 -0
  361. package/dist/esm/rendering/shader/Shader.js.map +1 -1
  362. package/dist/esm/rendering/shader/ShaderAttribute.d.ts +13 -0
  363. package/dist/esm/rendering/shader/ShaderAttribute.js +13 -0
  364. package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
  365. package/dist/esm/rendering/shader/ShaderUniform.d.ts +27 -0
  366. package/dist/esm/rendering/shader/ShaderUniform.js +28 -1
  367. package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -1
  368. package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +38 -0
  369. package/dist/esm/rendering/sprite/AnimatedSprite.js +36 -0
  370. package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
  371. package/dist/esm/rendering/sprite/Sprite.d.ts +56 -0
  372. package/dist/esm/rendering/sprite/Sprite.js +56 -0
  373. package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
  374. package/dist/esm/rendering/sprite/Spritesheet.d.ts +25 -0
  375. package/dist/esm/rendering/sprite/Spritesheet.js +20 -0
  376. package/dist/esm/rendering/sprite/Spritesheet.js.map +1 -1
  377. package/dist/esm/rendering/text/Text.d.ts +2 -0
  378. package/dist/esm/rendering/text/Text.js +2 -0
  379. package/dist/esm/rendering/text/Text.js.map +1 -1
  380. package/dist/esm/rendering/text/TextStyle.d.ts +29 -0
  381. package/dist/esm/rendering/text/TextStyle.js +24 -0
  382. package/dist/esm/rendering/text/TextStyle.js.map +1 -1
  383. package/dist/esm/rendering/text/types.d.ts +1 -0
  384. package/dist/esm/rendering/texture/RenderTexture.d.ts +16 -0
  385. package/dist/esm/rendering/texture/RenderTexture.js +16 -0
  386. package/dist/esm/rendering/texture/RenderTexture.js.map +1 -1
  387. package/dist/esm/rendering/texture/Sampler.d.ts +23 -0
  388. package/dist/esm/rendering/texture/Sampler.js +13 -0
  389. package/dist/esm/rendering/texture/Sampler.js.map +1 -1
  390. package/dist/esm/rendering/texture/Texture.d.ts +30 -0
  391. package/dist/esm/rendering/texture/Texture.js +30 -0
  392. package/dist/esm/rendering/texture/Texture.js.map +1 -1
  393. package/dist/esm/rendering/types.d.ts +29 -0
  394. package/dist/esm/rendering/types.js +29 -0
  395. package/dist/esm/rendering/types.js.map +1 -1
  396. package/dist/esm/rendering/utils.d.ts +20 -0
  397. package/dist/esm/rendering/utils.js +10 -0
  398. package/dist/esm/rendering/utils.js.map +1 -1
  399. package/dist/esm/rendering/video/Video.d.ts +35 -1
  400. package/dist/esm/rendering/video/Video.js +36 -2
  401. package/dist/esm/rendering/video/Video.js.map +1 -1
  402. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +7 -0
  403. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +7 -0
  404. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
  405. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +13 -0
  406. package/dist/esm/rendering/webgl2/WebGl2Backend.js +13 -0
  407. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
  408. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +8 -0
  409. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +8 -0
  410. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
  411. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +35 -0
  412. package/dist/esm/rendering/webgpu/WebGpuBackend.js +135 -5
  413. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
  414. package/dist/esm/resources/AbstractAssetFactory.d.ts +20 -0
  415. package/dist/esm/resources/AbstractAssetFactory.js +20 -0
  416. package/dist/esm/resources/AbstractAssetFactory.js.map +1 -1
  417. package/dist/esm/resources/AssetFactory.d.ts +26 -0
  418. package/dist/esm/resources/AssetManifest.d.ts +45 -0
  419. package/dist/esm/resources/AssetManifest.js +25 -0
  420. package/dist/esm/resources/AssetManifest.js.map +1 -1
  421. package/dist/esm/resources/CacheFirstStrategy.d.ts +15 -0
  422. package/dist/esm/resources/CacheFirstStrategy.js +19 -4
  423. package/dist/esm/resources/CacheFirstStrategy.js.map +1 -1
  424. package/dist/esm/resources/CacheStore.d.ts +23 -0
  425. package/dist/esm/resources/CacheStrategy.d.ts +28 -0
  426. package/dist/esm/resources/Database.d.ts +45 -0
  427. package/dist/esm/resources/FactoryRegistry.d.ts +28 -0
  428. package/dist/esm/resources/FactoryRegistry.js +24 -0
  429. package/dist/esm/resources/FactoryRegistry.js.map +1 -1
  430. package/dist/esm/resources/IndexedDbDatabase.d.ts +22 -1
  431. package/dist/esm/resources/IndexedDbDatabase.js +21 -0
  432. package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
  433. package/dist/esm/resources/IndexedDbStore.d.ts +20 -0
  434. package/dist/esm/resources/IndexedDbStore.js +12 -0
  435. package/dist/esm/resources/IndexedDbStore.js.map +1 -1
  436. package/dist/esm/resources/Loader.d.ts +172 -0
  437. package/dist/esm/resources/Loader.js +129 -37
  438. package/dist/esm/resources/Loader.js.map +1 -1
  439. package/dist/esm/resources/NetworkOnlyStrategy.d.ts +11 -0
  440. package/dist/esm/resources/NetworkOnlyStrategy.js +16 -3
  441. package/dist/esm/resources/NetworkOnlyStrategy.js.map +1 -1
  442. package/dist/esm/resources/factories/BinaryFactory.d.ts +13 -0
  443. package/dist/esm/resources/factories/BinaryFactory.js +13 -0
  444. package/dist/esm/resources/factories/BinaryFactory.js.map +1 -1
  445. package/dist/esm/resources/factories/FontFactory.d.ts +37 -0
  446. package/dist/esm/resources/factories/FontFactory.js +26 -0
  447. package/dist/esm/resources/factories/FontFactory.js.map +1 -1
  448. package/dist/esm/resources/factories/ImageFactory.d.ts +26 -2
  449. package/dist/esm/resources/factories/ImageFactory.js +19 -0
  450. package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
  451. package/dist/esm/resources/factories/JsonFactory.d.ts +13 -0
  452. package/dist/esm/resources/factories/JsonFactory.js +13 -0
  453. package/dist/esm/resources/factories/JsonFactory.js.map +1 -1
  454. package/dist/esm/resources/factories/MusicFactory.d.ts +36 -0
  455. package/dist/esm/resources/factories/MusicFactory.js +44 -4
  456. package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
  457. package/dist/esm/resources/factories/SoundFactory.d.ts +29 -0
  458. package/dist/esm/resources/factories/SoundFactory.js +18 -0
  459. package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
  460. package/dist/esm/resources/factories/SvgFactory.d.ts +19 -0
  461. package/dist/esm/resources/factories/SvgFactory.js +19 -0
  462. package/dist/esm/resources/factories/SvgFactory.js.map +1 -1
  463. package/dist/esm/resources/factories/TextFactory.d.ts +11 -0
  464. package/dist/esm/resources/factories/TextFactory.js +11 -0
  465. package/dist/esm/resources/factories/TextFactory.js.map +1 -1
  466. package/dist/esm/resources/factories/TextureFactory.d.ts +27 -2
  467. package/dist/esm/resources/factories/TextureFactory.js +20 -0
  468. package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
  469. package/dist/esm/resources/factories/VideoFactory.d.ts +37 -0
  470. package/dist/esm/resources/factories/VideoFactory.js +48 -5
  471. package/dist/esm/resources/factories/VideoFactory.js.map +1 -1
  472. package/dist/esm/resources/factories/VttFactory.d.ts +18 -0
  473. package/dist/esm/resources/factories/VttFactory.js +104 -3
  474. package/dist/esm/resources/factories/VttFactory.js.map +1 -1
  475. package/dist/esm/resources/factories/WasmFactory.d.ts +16 -0
  476. package/dist/esm/resources/factories/WasmFactory.js +16 -0
  477. package/dist/esm/resources/factories/WasmFactory.js.map +1 -1
  478. package/dist/esm/resources/utils.d.ts +10 -0
  479. package/dist/esm/resources/utils.js +10 -0
  480. package/dist/esm/resources/utils.js.map +1 -1
  481. package/dist/exo.esm.js +4673 -745
  482. package/dist/exo.esm.js.map +1 -1
  483. package/package.json +8 -8
  484. package/dist/esm/input/GamepadChannels.d.ts +0 -39
  485. package/dist/esm/input/GamepadChannels.js +0 -45
  486. package/dist/esm/input/GamepadChannels.js.map +0 -1
  487. package/dist/esm/input/GamepadControl.d.ts +0 -15
  488. package/dist/esm/input/GamepadControl.js +0 -29
  489. package/dist/esm/input/GamepadControl.js.map +0 -1
  490. package/dist/esm/input/Input.d.ts +0 -28
  491. package/dist/esm/input/Input.js +0 -68
  492. package/dist/esm/input/Input.js.map +0 -1
@@ -1,5 +1,7 @@
1
- import { GamepadControl } from './GamepadControl.js';
2
-
1
+ /**
2
+ * Discriminant tag identifying which device family a {@link GamepadMapping} belongs to.
3
+ * Used to select the correct mapping at runtime when a gamepad connects.
4
+ */
3
5
  var GamepadMappingFamily;
4
6
  (function (GamepadMappingFamily) {
5
7
  GamepadMappingFamily["GenericDualAnalog"] = "genericDualAnalog";
@@ -10,22 +12,61 @@ var GamepadMappingFamily;
10
12
  GamepadMappingFamily["JoyConRight"] = "joyConRight";
11
13
  GamepadMappingFamily["GameCube"] = "gameCube";
12
14
  GamepadMappingFamily["SteamController"] = "steamController";
15
+ GamepadMappingFamily["SteamDeck"] = "steamDeck";
13
16
  GamepadMappingFamily["ArcadeStick"] = "arcadeStick";
14
17
  })(GamepadMappingFamily || (GamepadMappingFamily = {}));
18
+ /**
19
+ * Abstract translation layer between the browser's raw {@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad Gamepad API}
20
+ * indices and ExoJS-canonical channel buffers.
21
+ *
22
+ * Each concrete subclass encodes one device family's button/axis layout as
23
+ * ordered arrays of {@link GamepadButton} / {@link GamepadAxis} instances.
24
+ * The engine selects the appropriate mapping when a gamepad connects and
25
+ * uses it to route raw values to the correct input channels every frame.
26
+ */
15
27
  class GamepadMapping {
28
+ /** Ordered list of buttons, indexed by the Gamepad API button index. */
16
29
  buttons;
30
+ /** Ordered list of axes, indexed by the Gamepad API axis index. */
17
31
  axes;
18
32
  constructor(buttons, axes) {
19
33
  this.buttons = buttons;
20
34
  this.axes = axes;
21
35
  }
36
+ /**
37
+ * Returns `true` when this mapping declares at least one button or axis
38
+ * control that writes to `channel`. Use to detect device-specific
39
+ * capabilities at runtime — e.g. before binding an input to a
40
+ * right-stick channel that may not exist on a single Joy-Con.
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * if (gamepad.mapping?.hasChannel(GamepadAxis.RightStickX)) {
45
+ * pad.onActive(GamepadAxis.RightStickX, (v) => crosshair.x += v * 8);
46
+ * }
47
+ * ```
48
+ */
49
+ hasChannel(channel) {
50
+ for (const button of this.buttons) {
51
+ if (button.channel === channel) {
52
+ return true;
53
+ }
54
+ }
55
+ for (const axis of this.axes) {
56
+ if (axis.channel === channel) {
57
+ return true;
58
+ }
59
+ }
60
+ return false;
61
+ }
62
+ /**
63
+ * Releases all button and axis control references held by this mapping.
64
+ * Call when the associated gamepad disconnects to allow garbage collection.
65
+ */
22
66
  destroy() {
23
67
  this.buttons.length = 0;
24
68
  this.axes.length = 0;
25
69
  }
26
- static createControls(definitions) {
27
- return definitions.map(([index, channel, options]) => new GamepadControl(index, channel, options));
28
- }
29
70
  }
30
71
 
31
72
  export { GamepadMapping, GamepadMappingFamily };
@@ -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,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC/B,CAAC,EAXW,oBAAoB,KAApB,oBAAoB,GAAA,EAAA,CAAA,CAAA;AAahC;;;;;;;;AAQG;MACmB,cAAc,CAAA;;AAKhB,IAAA,OAAO;;AAGP,IAAA,IAAI;IAEpB,WAAA,CAAsB,OAAqC,EAAE,IAAgC,EAAA;AACzF,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IACpB;AAEA;;;;;;;;;;;;AAYG;AACI,IAAA,UAAU,CAAC,OAAkD,EAAA;AAChE,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AAC/B,YAAA,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE;AAC5B,gBAAA,OAAO,IAAI;YACf;QACJ;AAEA,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AAC1B,YAAA,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE;AAC1B,gBAAA,OAAO,IAAI;YACf;QACJ;AAEA,QAAA,OAAO,KAAK;IAChB;AAEA;;;AAGG;IACI,OAAO,GAAA;AACT,QAAA,IAAI,CAAC,OAAgC,CAAC,MAAM,GAAG,CAAC;AAChD,QAAA,IAAI,CAAC,IAA2B,CAAC,MAAM,GAAG,CAAC;IAChD;AACH;;;;"}
@@ -1,9 +1,42 @@
1
- import { GamepadChannel } from './GamepadChannels';
2
1
  import { GamepadMappingFamily } from './GamepadMapping';
2
+ import type { GamepadButtonChannel } from './GamepadButton';
3
+ /**
4
+ * Named controls that can appear in an in-game prompt or button-hint UI.
5
+ *
6
+ * Intentionally a subset of {@link GamepadButton} channels — covers the
7
+ * controls a typical prompt overlay needs to label, including the composite
8
+ * `'DPad'` token which has no single channel equivalent. The names retain
9
+ * a `'Button'` prefix on the face cluster for compatibility with prompt
10
+ * artwork file names.
11
+ */
3
12
  export type GamepadPromptControl = 'DPad' | 'DPadUp' | 'DPadDown' | 'DPadLeft' | 'DPadRight' | 'ButtonNorth' | 'ButtonWest' | 'ButtonEast' | 'ButtonSouth' | 'LeftShoulder' | 'RightShoulder' | 'LeftTrigger' | 'RightTrigger' | 'Select' | 'Start' | 'LeftStick' | 'RightStick';
13
+ /**
14
+ * Static utility that drives in-game controller-prompt UI.
15
+ *
16
+ * Provides the canonical set of prompt controls, their normalised [x, y] positions
17
+ * on a generic controller silhouette, device-family label strings (e.g. "A" for
18
+ * Xbox, "Cross" for PlayStation, "B" for Switch), and the mapping from prompt
19
+ * control names to {@link GamepadButton} channel values.
20
+ */
4
21
  export declare class GamepadPromptLayouts {
22
+ /** Complete ordered list of every {@link GamepadPromptControl} token. */
5
23
  static readonly controls: Array<GamepadPromptControl>;
24
+ /**
25
+ * Returns the normalised [x, y] position of `control` on a generic controller
26
+ * silhouette, where (0, 0) is the top-left and (1, 1) the bottom-right.
27
+ * Falls back to [0.5, 0.5] (centre) when the control has no registered position.
28
+ */
6
29
  static getControlPosition(control: GamepadPromptControl): readonly [number, number];
30
+ /**
31
+ * Returns the label map for the given device family, e.g. `{ ButtonSouth → "A" }`
32
+ * for Xbox or `{ ButtonSouth → "Cross" }` for PlayStation.
33
+ * Falls back to generic labels when `family` has no registered label set.
34
+ */
7
35
  static getControlLabels(family: GamepadMappingFamily): ReadonlyMap<GamepadPromptControl, string>;
8
- static buildControlChannelMap(): ReadonlyMap<GamepadPromptControl, GamepadChannel>;
36
+ /**
37
+ * Returns the static mapping from each {@link GamepadPromptControl} to its
38
+ * corresponding {@link GamepadButton} channel. The composite `'DPad'`
39
+ * control has no channel entry and is absent from the returned map.
40
+ */
41
+ static getControlChannelMap(): ReadonlyMap<GamepadPromptControl, GamepadButtonChannel>;
9
42
  }
@@ -1,4 +1,4 @@
1
- import { GamepadChannel } from './GamepadChannels.js';
1
+ import { GamepadButton } from './GamepadButton.js';
2
2
  import { GamepadMappingFamily } from './GamepadMapping.js';
3
3
 
4
4
  const basePositions = new Map([
@@ -21,22 +21,22 @@ const basePositions = new Map([
21
21
  ['RightStick', [0.62, 0.66]],
22
22
  ]);
23
23
  const channelMap = new Map([
24
- ['ButtonNorth', GamepadChannel.ButtonNorth],
25
- ['ButtonWest', GamepadChannel.ButtonWest],
26
- ['ButtonEast', GamepadChannel.ButtonEast],
27
- ['ButtonSouth', GamepadChannel.ButtonSouth],
28
- ['LeftShoulder', GamepadChannel.LeftShoulder],
29
- ['RightShoulder', GamepadChannel.RightShoulder],
30
- ['LeftTrigger', GamepadChannel.LeftTrigger],
31
- ['RightTrigger', GamepadChannel.RightTrigger],
32
- ['Select', GamepadChannel.Select],
33
- ['Start', GamepadChannel.Start],
34
- ['LeftStick', GamepadChannel.LeftStick],
35
- ['RightStick', GamepadChannel.RightStick],
36
- ['DPadUp', GamepadChannel.DPadUp],
37
- ['DPadDown', GamepadChannel.DPadDown],
38
- ['DPadLeft', GamepadChannel.DPadLeft],
39
- ['DPadRight', GamepadChannel.DPadRight],
24
+ ['ButtonNorth', GamepadButton.North],
25
+ ['ButtonWest', GamepadButton.West],
26
+ ['ButtonEast', GamepadButton.East],
27
+ ['ButtonSouth', GamepadButton.South],
28
+ ['LeftShoulder', GamepadButton.LeftShoulder],
29
+ ['RightShoulder', GamepadButton.RightShoulder],
30
+ ['LeftTrigger', GamepadButton.LeftTrigger],
31
+ ['RightTrigger', GamepadButton.RightTrigger],
32
+ ['Select', GamepadButton.Select],
33
+ ['Start', GamepadButton.Start],
34
+ ['LeftStick', GamepadButton.LeftStick],
35
+ ['RightStick', GamepadButton.RightStick],
36
+ ['DPadUp', GamepadButton.DPadUp],
37
+ ['DPadDown', GamepadButton.DPadDown],
38
+ ['DPadLeft', GamepadButton.DPadLeft],
39
+ ['DPadRight', GamepadButton.DPadRight],
40
40
  ]);
41
41
  const genericLabels = new Map([
42
42
  ['ButtonNorth', 'North'],
@@ -103,9 +103,19 @@ const promptLabelsByFamily = new Map([
103
103
  [GamepadMappingFamily.JoyConRight, switchLabels],
104
104
  [GamepadMappingFamily.GameCube, genericLabels],
105
105
  [GamepadMappingFamily.SteamController, genericLabels],
106
+ [GamepadMappingFamily.SteamDeck, genericLabels],
106
107
  [GamepadMappingFamily.ArcadeStick, genericLabels],
107
108
  ]);
109
+ /**
110
+ * Static utility that drives in-game controller-prompt UI.
111
+ *
112
+ * Provides the canonical set of prompt controls, their normalised [x, y] positions
113
+ * on a generic controller silhouette, device-family label strings (e.g. "A" for
114
+ * Xbox, "Cross" for PlayStation, "B" for Switch), and the mapping from prompt
115
+ * control names to {@link GamepadButton} channel values.
116
+ */
108
117
  class GamepadPromptLayouts {
118
+ /** Complete ordered list of every {@link GamepadPromptControl} token. */
109
119
  static controls = [
110
120
  'DPad',
111
121
  'DPadUp',
@@ -125,13 +135,28 @@ class GamepadPromptLayouts {
125
135
  'LeftStick',
126
136
  'RightStick',
127
137
  ];
138
+ /**
139
+ * Returns the normalised [x, y] position of `control` on a generic controller
140
+ * silhouette, where (0, 0) is the top-left and (1, 1) the bottom-right.
141
+ * Falls back to [0.5, 0.5] (centre) when the control has no registered position.
142
+ */
128
143
  static getControlPosition(control) {
129
144
  return basePositions.get(control) ?? [0.5, 0.5];
130
145
  }
146
+ /**
147
+ * Returns the label map for the given device family, e.g. `{ ButtonSouth → "A" }`
148
+ * for Xbox or `{ ButtonSouth → "Cross" }` for PlayStation.
149
+ * Falls back to generic labels when `family` has no registered label set.
150
+ */
131
151
  static getControlLabels(family) {
132
152
  return promptLabelsByFamily.get(family) ?? genericLabels;
133
153
  }
134
- static buildControlChannelMap() {
154
+ /**
155
+ * Returns the static mapping from each {@link GamepadPromptControl} to its
156
+ * corresponding {@link GamepadButton} channel. The composite `'DPad'`
157
+ * control has no channel entry and is absent from the returned map.
158
+ */
159
+ static getControlChannelMap() {
135
160
  return channelMap;
136
161
  }
137
162
  }
@@ -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":";;;AAiCA,MAAM,aAAa,GAAG,IAAI,GAAG,CAAkD;AAC3E,IAAA,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtB,IAAA,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxB,IAAA,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1B,IAAA,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1B,IAAA,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3B,IAAA,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7B,IAAA,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5B,IAAA,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5B,IAAA,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7B,IAAA,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9B,IAAA,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/B,IAAA,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7B,IAAA,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9B,IAAA,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxB,IAAA,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACvB,IAAA,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3B,IAAA,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAA,CAAC;AAEF,MAAM,UAAU,GAAG,IAAI,GAAG,CAA6C;AACnE,IAAA,CAAC,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC;AACpC,IAAA,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC;AAClC,IAAA,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC;AAClC,IAAA,CAAC,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC;AACpC,IAAA,CAAC,cAAc,EAAE,aAAa,CAAC,YAAY,CAAC;AAC5C,IAAA,CAAC,eAAe,EAAE,aAAa,CAAC,aAAa,CAAC;AAC9C,IAAA,CAAC,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC;AAC1C,IAAA,CAAC,cAAc,EAAE,aAAa,CAAC,YAAY,CAAC;AAC5C,IAAA,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC;AAChC,IAAA,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC;AAC9B,IAAA,CAAC,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC;AACtC,IAAA,CAAC,YAAY,EAAE,aAAa,CAAC,UAAU,CAAC;AACxC,IAAA,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC;AAChC,IAAA,CAAC,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC;AACpC,IAAA,CAAC,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC;AACpC,IAAA,CAAC,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC;AACzC,CAAA,CAAC;AAEF,MAAM,aAAa,GAAG,IAAI,GAAG,CAA+B;IACxD,CAAC,aAAa,EAAE,OAAO,CAAC;IACxB,CAAC,YAAY,EAAE,MAAM,CAAC;IACtB,CAAC,YAAY,EAAE,MAAM,CAAC;IACtB,CAAC,aAAa,EAAE,OAAO,CAAC;IACxB,CAAC,cAAc,EAAE,IAAI,CAAC;IACtB,CAAC,eAAe,EAAE,IAAI,CAAC;IACvB,CAAC,aAAa,EAAE,IAAI,CAAC;IACrB,CAAC,cAAc,EAAE,IAAI,CAAC;IACtB,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,WAAW,EAAE,IAAI,CAAC;IACnB,CAAC,YAAY,EAAE,IAAI,CAAC;AACvB,CAAA,CAAC;AAEF,MAAM,UAAU,GAAG,IAAI,GAAG,CAA+B;IACrD,CAAC,aAAa,EAAE,GAAG,CAAC;IACpB,CAAC,YAAY,EAAE,GAAG,CAAC;IACnB,CAAC,YAAY,EAAE,GAAG,CAAC;IACnB,CAAC,aAAa,EAAE,GAAG,CAAC;IACpB,CAAC,cAAc,EAAE,IAAI,CAAC;IACtB,CAAC,eAAe,EAAE,IAAI,CAAC;IACvB,CAAC,aAAa,EAAE,IAAI,CAAC;IACrB,CAAC,cAAc,EAAE,IAAI,CAAC;IACtB,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClB,CAAC,OAAO,EAAE,MAAM,CAAC;IACjB,CAAC,WAAW,EAAE,IAAI,CAAC;IACnB,CAAC,YAAY,EAAE,IAAI,CAAC;AACvB,CAAA,CAAC;AAEF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAA+B;IAC5D,CAAC,aAAa,EAAE,UAAU,CAAC;IAC3B,CAAC,YAAY,EAAE,QAAQ,CAAC;IACxB,CAAC,YAAY,EAAE,QAAQ,CAAC;IACxB,CAAC,aAAa,EAAE,OAAO,CAAC;IACxB,CAAC,cAAc,EAAE,IAAI,CAAC;IACtB,CAAC,eAAe,EAAE,IAAI,CAAC;IACvB,CAAC,aAAa,EAAE,IAAI,CAAC;IACrB,CAAC,cAAc,EAAE,IAAI,CAAC;IACtB,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,OAAO,EAAE,SAAS,CAAC;IACpB,CAAC,WAAW,EAAE,IAAI,CAAC;IACnB,CAAC,YAAY,EAAE,IAAI,CAAC;AACvB,CAAA,CAAC;AAEF,MAAM,YAAY,GAAG,IAAI,GAAG,CAA+B;IACvD,CAAC,aAAa,EAAE,GAAG,CAAC;IACpB,CAAC,YAAY,EAAE,GAAG,CAAC;IACnB,CAAC,YAAY,EAAE,GAAG,CAAC;IACnB,CAAC,aAAa,EAAE,GAAG,CAAC;IACpB,CAAC,cAAc,EAAE,GAAG,CAAC;IACrB,CAAC,eAAe,EAAE,GAAG,CAAC;IACtB,CAAC,aAAa,EAAE,IAAI,CAAC;IACrB,CAAC,cAAc,EAAE,IAAI,CAAC;IACtB,CAAC,QAAQ,EAAE,OAAO,CAAC;IACnB,CAAC,OAAO,EAAE,MAAM,CAAC;IACjB,CAAC,WAAW,EAAE,IAAI,CAAC;IACnB,CAAC,YAAY,EAAE,IAAI,CAAC;AACvB,CAAA,CAAC;AAEF,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAkE;AAClG,IAAA,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,aAAa,CAAC;AACvD,IAAA,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC;AACvC,IAAA,CAAC,oBAAoB,CAAC,WAAW,EAAE,iBAAiB,CAAC;AACrD,IAAA,CAAC,oBAAoB,CAAC,SAAS,EAAE,YAAY,CAAC;AAC9C,IAAA,CAAC,oBAAoB,CAAC,UAAU,EAAE,YAAY,CAAC;AAC/C,IAAA,CAAC,oBAAoB,CAAC,WAAW,EAAE,YAAY,CAAC;AAChD,IAAA,CAAC,oBAAoB,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC9C,IAAA,CAAC,oBAAoB,CAAC,eAAe,EAAE,aAAa,CAAC;AACrD,IAAA,CAAC,oBAAoB,CAAC,SAAS,EAAE,aAAa,CAAC;AAC/C,IAAA,CAAC,oBAAoB,CAAC,WAAW,EAAE,aAAa,CAAC;AACpD,CAAA,CAAC;AAEF;;;;;;;AAOG;MACU,oBAAoB,CAAA;;IAEtB,OAAgB,QAAQ,GAAgC;QAC3D,MAAM;QACN,QAAQ;QACR,UAAU;QACV,UAAU;QACV,WAAW;QACX,aAAa;QACb,YAAY;QACZ,YAAY;QACZ,aAAa;QACb,cAAc;QACd,eAAe;QACf,aAAa;QACb,cAAc;QACd,QAAQ;QACR,OAAO;QACP,WAAW;QACX,YAAY;KACf;AAED;;;;AAIG;IACI,OAAO,kBAAkB,CAAC,OAA6B,EAAA;AAC1D,QAAA,OAAO,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;IACnD;AAEA;;;;AAIG;IACI,OAAO,gBAAgB,CAAC,MAA4B,EAAA;QACvD,OAAO,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,aAAa;IAC5D;AAEA;;;;AAIG;AACI,IAAA,OAAO,oBAAoB,GAAA;AAC9B,QAAA,OAAO,UAAU;IACrB;;;;;"}
@@ -1,4 +1,17 @@
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 stick axis is exposed three ways for ergonomic binding:
7
+ * - Two direction-split, non-negative channels (e.g. `LeftStickLeft` /
8
+ * `LeftStickRight`) for "buttons-style" subscriptions.
9
+ * - One signed aggregate channel (e.g. `LeftStickX`) for direct -1..1
10
+ * consumption — useful for movement or aiming.
11
+ *
12
+ * Device-specific subclasses (Xbox, PlayStation, Switch Pro, etc.) inherit
13
+ * this layout and override only {@link GamepadMapping.family}.
14
+ */
2
15
  export declare class GenericDualAnalogGamepadMapping extends GamepadMapping {
3
16
  readonly family: GamepadMappingFamily;
4
17
  constructor();
@@ -1,51 +1,70 @@
1
- import { GamepadChannel } from './GamepadChannels.js';
1
+ import { GamepadAxis } from './GamepadAxis.js';
2
+ import { GamepadButton } from './GamepadButton.js';
2
3
  import { GamepadMapping, GamepadMappingFamily } from './GamepadMapping.js';
3
4
 
4
- const genericDualAnalogButtonDefinitions = [
5
- [0, GamepadChannel.ButtonSouth],
6
- [1, GamepadChannel.ButtonEast],
7
- [2, GamepadChannel.ButtonWest],
8
- [3, GamepadChannel.ButtonNorth],
9
- [4, GamepadChannel.LeftShoulder],
10
- [5, GamepadChannel.RightShoulder],
11
- [6, GamepadChannel.LeftTrigger],
12
- [7, GamepadChannel.RightTrigger],
13
- [8, GamepadChannel.Select],
14
- [9, GamepadChannel.Start],
15
- [10, GamepadChannel.LeftStick],
16
- [11, GamepadChannel.RightStick],
17
- [12, GamepadChannel.DPadUp],
18
- [13, GamepadChannel.DPadDown],
19
- [14, GamepadChannel.DPadLeft],
20
- [15, GamepadChannel.DPadRight],
21
- [16, GamepadChannel.Guide],
22
- [17, GamepadChannel.Share],
23
- [18, GamepadChannel.Capture],
24
- [19, GamepadChannel.Touchpad],
25
- [20, GamepadChannel.Paddle1],
26
- ];
27
- const genericDualAnalogAxisDefinitions = [
28
- [0, GamepadChannel.LeftStickLeft, { invert: true }],
29
- [0, GamepadChannel.LeftStickRight],
30
- [1, GamepadChannel.LeftStickUp, { invert: true }],
31
- [1, GamepadChannel.LeftStickDown],
32
- [2, GamepadChannel.RightStickLeft, { invert: true }],
33
- [2, GamepadChannel.RightStickRight],
34
- [3, GamepadChannel.RightStickUp, { invert: true }],
35
- [3, GamepadChannel.RightStickDown],
36
- [4, GamepadChannel.AuxiliaryAxis0Negative, { invert: true }],
37
- [4, GamepadChannel.AuxiliaryAxis0Positive],
38
- [5, GamepadChannel.AuxiliaryAxis1Negative, { invert: true }],
39
- [5, GamepadChannel.AuxiliaryAxis1Positive],
40
- [6, GamepadChannel.AuxiliaryAxis2Negative, { invert: true }],
41
- [6, GamepadChannel.AuxiliaryAxis2Positive],
42
- [7, GamepadChannel.AuxiliaryAxis3Negative, { invert: true }],
43
- [7, GamepadChannel.AuxiliaryAxis3Positive],
44
- ];
5
+ /**
6
+ * Baseline mapping for dual-analog controllers that follow the standard
7
+ * W3C Gamepad API layout (axes 0–3 for both sticks, axes 4–7 auxiliary).
8
+ *
9
+ * Each signed stick axis is exposed three ways for ergonomic binding:
10
+ * - Two direction-split, non-negative channels (e.g. `LeftStickLeft` /
11
+ * `LeftStickRight`) for "buttons-style" subscriptions.
12
+ * - One signed aggregate channel (e.g. `LeftStickX`) for direct -1..1
13
+ * consumption — useful for movement or aiming.
14
+ *
15
+ * Device-specific subclasses (Xbox, PlayStation, Switch Pro, etc.) inherit
16
+ * this layout and override only {@link GamepadMapping.family}.
17
+ */
45
18
  class GenericDualAnalogGamepadMapping extends GamepadMapping {
46
19
  family = GamepadMappingFamily.GenericDualAnalog;
47
20
  constructor() {
48
- super(GamepadMapping.createControls(genericDualAnalogButtonDefinitions), GamepadMapping.createControls(genericDualAnalogAxisDefinitions));
21
+ super([
22
+ new GamepadButton(0, GamepadButton.South),
23
+ new GamepadButton(1, GamepadButton.East),
24
+ new GamepadButton(2, GamepadButton.West),
25
+ new GamepadButton(3, GamepadButton.North),
26
+ new GamepadButton(4, GamepadButton.LeftShoulder),
27
+ new GamepadButton(5, GamepadButton.RightShoulder),
28
+ new GamepadButton(6, GamepadButton.LeftTrigger),
29
+ new GamepadButton(7, GamepadButton.RightTrigger),
30
+ new GamepadButton(8, GamepadButton.Select),
31
+ new GamepadButton(9, GamepadButton.Start),
32
+ new GamepadButton(10, GamepadButton.LeftStick),
33
+ new GamepadButton(11, GamepadButton.RightStick),
34
+ new GamepadButton(12, GamepadButton.DPadUp),
35
+ new GamepadButton(13, GamepadButton.DPadDown),
36
+ new GamepadButton(14, GamepadButton.DPadLeft),
37
+ new GamepadButton(15, GamepadButton.DPadRight),
38
+ new GamepadButton(16, GamepadButton.Guide),
39
+ new GamepadButton(17, GamepadButton.Share),
40
+ new GamepadButton(18, GamepadButton.Capture),
41
+ new GamepadButton(19, GamepadButton.Touchpad),
42
+ new GamepadButton(20, GamepadButton.Paddle1),
43
+ ], [
44
+ // Direction-split (0..1).
45
+ new GamepadAxis(0, GamepadAxis.LeftStickLeft, { invert: true }),
46
+ new GamepadAxis(0, GamepadAxis.LeftStickRight),
47
+ new GamepadAxis(1, GamepadAxis.LeftStickUp, { invert: true }),
48
+ new GamepadAxis(1, GamepadAxis.LeftStickDown),
49
+ new GamepadAxis(2, GamepadAxis.RightStickLeft, { invert: true }),
50
+ new GamepadAxis(2, GamepadAxis.RightStickRight),
51
+ new GamepadAxis(3, GamepadAxis.RightStickUp, { invert: true }),
52
+ new GamepadAxis(3, GamepadAxis.RightStickDown),
53
+ // Aggregate signed channels (-1..1).
54
+ new GamepadAxis(0, GamepadAxis.LeftStickX, { bipolar: true }),
55
+ new GamepadAxis(1, GamepadAxis.LeftStickY, { bipolar: true }),
56
+ new GamepadAxis(2, GamepadAxis.RightStickX, { bipolar: true }),
57
+ new GamepadAxis(3, GamepadAxis.RightStickY, { bipolar: true }),
58
+ // Auxiliary axes (4 bipolar physical axes split into 8 half-channels).
59
+ new GamepadAxis(4, GamepadAxis.AuxiliaryAxis0Negative, { invert: true }),
60
+ new GamepadAxis(4, GamepadAxis.AuxiliaryAxis0Positive),
61
+ new GamepadAxis(5, GamepadAxis.AuxiliaryAxis1Negative, { invert: true }),
62
+ new GamepadAxis(5, GamepadAxis.AuxiliaryAxis1Positive),
63
+ new GamepadAxis(6, GamepadAxis.AuxiliaryAxis2Negative, { invert: true }),
64
+ new GamepadAxis(6, GamepadAxis.AuxiliaryAxis2Positive),
65
+ new GamepadAxis(7, GamepadAxis.AuxiliaryAxis3Negative, { invert: true }),
66
+ new GamepadAxis(7, GamepadAxis.AuxiliaryAxis3Positive),
67
+ ]);
49
68
  }
50
69
  }
51
70
 
@@ -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":";;AAKA;AACA,MAAM,WAAW,GAAG,GAAG;AAUvB;;;AAGG;MACU,iBAAiB,CAAA;AACV,IAAA,OAAO;AACP,IAAA,QAAQ;AACR,IAAA,WAAW;AAEV,IAAA,iBAAiB;;AAGjB,IAAA,aAAa,GAAyB,IAAI,GAAG,EAAE;;AAG/C,IAAA,gBAAgB,GAAgC,IAAI,GAAG,EAAE;;IAGlE,YAAY,GAAG,EAAE;IACjB,SAAS,GAAG,CAAC;;AAGJ,IAAA,SAAS,GAAG,IAAI,MAAM,EAAE;AAEzC,IAAA,WAAA,CACI,iBAAyB,EACzB,OAAgD,EAChD,QAAsD,EACtD,WAAuC,EAAA;AAEvC,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;AAC1C,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;IAClC;AAEO,IAAA,aAAa,CAAC,OAAgB,EAAA;AACjC,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE;YAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC;YAC3C,IAAI,CAAC,sBAAsB,EAAE;QACjC;;AAGA,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAK;YAC5B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AACxC,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtC,CAAC,EAAE,WAAW,CAAC;QAEf,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE;YAClC,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,OAAO;YACP,OAAO;YACP,MAAM,EAAE,OAAO,CAAC,CAAC;YACjB,MAAM,EAAE,OAAO,CAAC,CAAC;AACpB,SAAA,CAAC;IACN;IAEO,aAAa,CAAC,OAAgB,EAAE,iBAAyB,EAAA;;AAE5D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAEnD,IAAI,KAAK,EAAE;YACP,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM;YACnC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM;AAEnC,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,iBAAiB,EAAE;AAClD,gBAAA,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC3B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5C;QACJ;AAEA,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE;YAC1B;QACJ;;;QAIA,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE;YAC7B;QACJ;QAEA,IAAI,CAAC,wBAAwB,EAAE;IACnC;AAEO,IAAA,WAAW,CAAC,OAAgB,EAAA;AAC/B,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC;AAEO,IAAA,cAAc,CAAC,OAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;AAEjC,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE;YAC1B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,sBAAsB,EAAE;QACjC;IACJ;AAEO,IAAA,eAAe,CAAC,OAAgB,EAAA;AACnC,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;AAEjC,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE;YAC1B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,sBAAsB,EAAE;QACjC;IACJ;IAEO,OAAO,GAAA;QACV,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE;AAChD,YAAA,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;QAC/B;AAEA,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAC7B,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;IAC5B;AAEQ,IAAA,gBAAgB,CAAC,SAAiB,EAAA;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC;QAElD,IAAI,KAAK,EAAE;AACP,YAAA,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;AAC3B,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC;QAC3C;IACJ;IAEQ,sBAAsB,GAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC;IACtB;IAEQ,wBAAwB,GAAA;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;QACxC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAgB;QACvC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAgB;QAEvC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACtB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;AAEvC,QAAA,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC;AACjC,QAAA,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC;QAEjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;AAEpC,QAAA,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;AACvB,YAAA,MAAM,KAAK,GAAG,eAAe,GAAG,IAAI,CAAC,YAAY;;YAGjD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE;gBAC9B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;YAChD;AAEA,YAAA,MAAM,UAAU,GAAG,YAAY,GAAG,IAAI,CAAC,SAAS;YAEhD,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE;gBAC/B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;YACtD;QACJ;AAEA,QAAA,IAAI,CAAC,YAAY,GAAG,eAAe;AACnC,QAAA,IAAI,CAAC,SAAS,GAAG,YAAY;IACjC;AACH;;;;"}
1
+ {"version":3,"file":"GestureRecognizer.js","sources":["../../../../src/input/GestureRecognizer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import { Signal } from '@/core/Signal';
2
+ import type { Keyboard } from '@/input/types';
3
+ import type { GamepadButtonChannel } from './GamepadButton';
4
+ import type { GamepadAxisChannel } from './GamepadAxis';
5
+ /** Channel a single {@link InputBinding} can subscribe to. */
6
+ export type InputChannel = GamepadButtonChannel | GamepadAxisChannel | Keyboard;
7
+ /** Construction options shared by every binding factory method. */
8
+ export interface InputBindingOptions {
9
+ /**
10
+ * Tap-window for {@link InputBinding.onTrigger} in milliseconds. The
11
+ * trigger fires when the input is released within this window after
12
+ * activation. Defaults to {@link InputBinding.defaultTriggerThreshold}
13
+ * (300 ms).
14
+ */
15
+ threshold?: number;
16
+ /**
17
+ * Pin this binding to a specific gamepad slot (0..3). Channel offsets
18
+ * are resolved at construction time. When unset, gamepad channels read
19
+ * from slot 0 (the primary pad).
20
+ */
21
+ gamepadSlot?: 0 | 1 | 2 | 3;
22
+ }
23
+ interface InternalChannelDetacher {
24
+ detach(binding: InputBinding): void;
25
+ }
26
+ /**
27
+ * One subscription to one or more input channels. Tracks active state, fires
28
+ * the {@link onStart} / {@link onActive} / {@link onStop} / {@link onTrigger}
29
+ * Signals each frame, and registers itself with whichever owner created it
30
+ * (typically an {@link InputManager}, {@link Gamepad}, or scene-bound
31
+ * proxy).
32
+ *
33
+ * Construct via the owner's `onStart` / `onActive` / `onStop` /
34
+ * `onTrigger` factory methods rather than `new InputBinding(...)` directly.
35
+ *
36
+ * Lifecycle: a binding lives until {@link unbind} is called, the owner
37
+ * disposes it, or — for scene-bound bindings — the scene unloads.
38
+ *
39
+ * @internal
40
+ */
41
+ export declare class InputBinding {
42
+ /**
43
+ * Default tap-window for `onTrigger`. Override per binding via the
44
+ * `threshold` option. Mutating this static affects only newly created
45
+ * bindings.
46
+ */
47
+ static defaultTriggerThreshold: number;
48
+ readonly channels: ReadonlyArray<number>;
49
+ readonly onStart: Signal<[number]>;
50
+ readonly onActive: Signal<[number]>;
51
+ readonly onStop: Signal<[number]>;
52
+ readonly onTrigger: Signal<[number]>;
53
+ private readonly _triggerTimer;
54
+ private readonly _detacher;
55
+ private _value;
56
+ private _unbound;
57
+ constructor(channels: ReadonlyArray<number>, options?: InputBindingOptions, detacher?: InternalChannelDetacher | null);
58
+ /** Last value sampled this frame. 0 when inactive. */
59
+ get value(): number;
60
+ /** `true` when the last sampled value exceeded the channel's threshold. */
61
+ get active(): boolean;
62
+ /**
63
+ * Read the latest values from the unified channel buffer and dispatch
64
+ * the appropriate Signals. Called once per frame by the owning manager.
65
+ *
66
+ * @internal
67
+ */
68
+ update(channels: Float32Array): void;
69
+ /**
70
+ * Detach this binding from its owner and release its Signals. Idempotent.
71
+ */
72
+ unbind(): void;
73
+ }
74
+ export {};
@@ -0,0 +1,100 @@
1
+ import { Signal } from '../core/Signal.js';
2
+ import { Timer } from '../core/Timer.js';
3
+ import { milliseconds } from '../core/utils.js';
4
+
5
+ /**
6
+ * One subscription to one or more input channels. Tracks active state, fires
7
+ * the {@link onStart} / {@link onActive} / {@link onStop} / {@link onTrigger}
8
+ * Signals each frame, and registers itself with whichever owner created it
9
+ * (typically an {@link InputManager}, {@link Gamepad}, or scene-bound
10
+ * proxy).
11
+ *
12
+ * Construct via the owner's `onStart` / `onActive` / `onStop` /
13
+ * `onTrigger` factory methods rather than `new InputBinding(...)` directly.
14
+ *
15
+ * Lifecycle: a binding lives until {@link unbind} is called, the owner
16
+ * disposes it, or — for scene-bound bindings — the scene unloads.
17
+ *
18
+ * @internal
19
+ */
20
+ class InputBinding {
21
+ /**
22
+ * Default tap-window for `onTrigger`. Override per binding via the
23
+ * `threshold` option. Mutating this static affects only newly created
24
+ * bindings.
25
+ */
26
+ static defaultTriggerThreshold = 300;
27
+ channels;
28
+ onStart = new Signal();
29
+ onActive = new Signal();
30
+ onStop = new Signal();
31
+ onTrigger = new Signal();
32
+ _triggerTimer;
33
+ _detacher;
34
+ _value = 0;
35
+ _unbound = false;
36
+ constructor(channels, options = {}, detacher = null) {
37
+ this.channels = channels;
38
+ this._triggerTimer = new Timer(milliseconds(options.threshold ?? InputBinding.defaultTriggerThreshold));
39
+ this._detacher = detacher;
40
+ }
41
+ /** Last value sampled this frame. 0 when inactive. */
42
+ get value() {
43
+ return this._value;
44
+ }
45
+ /** `true` when the last sampled value exceeded the channel's threshold. */
46
+ get active() {
47
+ return this._value > 0;
48
+ }
49
+ /**
50
+ * Read the latest values from the unified channel buffer and dispatch
51
+ * the appropriate Signals. Called once per frame by the owning manager.
52
+ *
53
+ * @internal
54
+ */
55
+ update(channels) {
56
+ if (this._unbound) {
57
+ return;
58
+ }
59
+ let value = 0;
60
+ for (const channel of this.channels) {
61
+ const sample = channels[channel];
62
+ if (Math.abs(sample) > Math.abs(value)) {
63
+ value = sample;
64
+ }
65
+ }
66
+ this._value = value;
67
+ if (value !== 0) {
68
+ if (!this._triggerTimer.running) {
69
+ this._triggerTimer.restart();
70
+ this.onStart.dispatch(value);
71
+ }
72
+ this.onActive.dispatch(value);
73
+ }
74
+ else if (this._triggerTimer.running) {
75
+ this.onStop.dispatch(0);
76
+ if (!this._triggerTimer.expired) {
77
+ this.onTrigger.dispatch(0);
78
+ }
79
+ this._triggerTimer.stop();
80
+ }
81
+ }
82
+ /**
83
+ * Detach this binding from its owner and release its Signals. Idempotent.
84
+ */
85
+ unbind() {
86
+ if (this._unbound) {
87
+ return;
88
+ }
89
+ this._unbound = true;
90
+ this._detacher?.detach(this);
91
+ this._triggerTimer.destroy();
92
+ this.onStart.destroy();
93
+ this.onActive.destroy();
94
+ this.onStop.destroy();
95
+ this.onTrigger.destroy();
96
+ }
97
+ }
98
+
99
+ export { InputBinding };
100
+ //# sourceMappingURL=InputBinding.js.map