@codexo/exojs 0.6.12 → 0.7.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (512) hide show
  1. package/CHANGELOG.md +1424 -0
  2. package/dist/esm/animation/Tween.d.ts +60 -1
  3. package/dist/esm/animation/Tween.js +60 -1
  4. package/dist/esm/animation/Tween.js.map +1 -1
  5. package/dist/esm/animation/TweenManager.d.ts +10 -0
  6. package/dist/esm/animation/TweenManager.js +10 -0
  7. package/dist/esm/animation/TweenManager.js.map +1 -1
  8. package/dist/esm/animation/types.d.ts +15 -0
  9. package/dist/esm/animation/types.js +6 -0
  10. package/dist/esm/animation/types.js.map +1 -1
  11. package/dist/esm/audio/AbstractMedia.d.ts +29 -0
  12. package/dist/esm/audio/AbstractMedia.js +76 -0
  13. package/dist/esm/audio/AbstractMedia.js.map +1 -1
  14. package/dist/esm/audio/AudioAnalyser.d.ts +83 -23
  15. package/dist/esm/audio/AudioAnalyser.js +277 -57
  16. package/dist/esm/audio/AudioAnalyser.js.map +1 -1
  17. package/dist/esm/audio/AudioBus.d.ts +82 -0
  18. package/dist/esm/audio/AudioBus.js +255 -0
  19. package/dist/esm/audio/AudioBus.js.map +1 -0
  20. package/dist/esm/audio/AudioFilter.d.ts +16 -0
  21. package/dist/esm/audio/AudioFilter.js +13 -0
  22. package/dist/esm/audio/AudioFilter.js.map +1 -0
  23. package/dist/esm/audio/AudioListener.d.ts +39 -0
  24. package/dist/esm/audio/AudioListener.js +97 -0
  25. package/dist/esm/audio/AudioListener.js.map +1 -0
  26. package/dist/esm/audio/AudioManager.d.ts +68 -0
  27. package/dist/esm/audio/AudioManager.js +139 -0
  28. package/dist/esm/audio/AudioManager.js.map +1 -0
  29. package/dist/esm/audio/BeatDetector.d.ts +142 -0
  30. package/dist/esm/audio/BeatDetector.js +957 -0
  31. package/dist/esm/audio/BeatDetector.js.map +1 -0
  32. package/dist/esm/audio/Envelope.d.ts +44 -0
  33. package/dist/esm/audio/Envelope.js +60 -0
  34. package/dist/esm/audio/Envelope.js.map +1 -0
  35. package/dist/esm/audio/Media.d.ts +11 -0
  36. package/dist/esm/audio/Music.d.ts +20 -0
  37. package/dist/esm/audio/Music.js +45 -4
  38. package/dist/esm/audio/Music.js.map +1 -1
  39. package/dist/esm/audio/OscillatorSound.d.ts +98 -0
  40. package/dist/esm/audio/OscillatorSound.js +342 -0
  41. package/dist/esm/audio/OscillatorSound.js.map +1 -0
  42. package/dist/esm/audio/Sound.d.ts +119 -9
  43. package/dist/esm/audio/Sound.js +301 -117
  44. package/dist/esm/audio/Sound.js.map +1 -1
  45. package/dist/esm/audio/audio-context.d.ts +48 -0
  46. package/dist/esm/audio/audio-context.js +48 -5
  47. package/dist/esm/audio/audio-context.js.map +1 -1
  48. package/dist/esm/audio/crossFade.d.ts +19 -0
  49. package/dist/esm/audio/crossFade.js +26 -0
  50. package/dist/esm/audio/crossFade.js.map +1 -0
  51. package/dist/esm/audio/dsp/fft.d.ts +22 -0
  52. package/dist/esm/audio/dsp/mel.d.ts +43 -0
  53. package/dist/esm/audio/dsp/tempogram.d.ts +51 -0
  54. package/dist/esm/audio/filters/ChorusFilter.d.ts +52 -0
  55. package/dist/esm/audio/filters/ChorusFilter.js +143 -0
  56. package/dist/esm/audio/filters/ChorusFilter.js.map +1 -0
  57. package/dist/esm/audio/filters/CompressorFilter.d.ts +43 -0
  58. package/dist/esm/audio/filters/CompressorFilter.js +108 -0
  59. package/dist/esm/audio/filters/CompressorFilter.js.map +1 -0
  60. package/dist/esm/audio/filters/DelayFilter.d.ts +34 -0
  61. package/dist/esm/audio/filters/DelayFilter.js +110 -0
  62. package/dist/esm/audio/filters/DelayFilter.js.map +1 -0
  63. package/dist/esm/audio/filters/DuckingFilter.d.ts +44 -0
  64. package/dist/esm/audio/filters/DuckingFilter.js +164 -0
  65. package/dist/esm/audio/filters/DuckingFilter.js.map +1 -0
  66. package/dist/esm/audio/filters/EqualizerFilter.d.ts +49 -0
  67. package/dist/esm/audio/filters/EqualizerFilter.js +134 -0
  68. package/dist/esm/audio/filters/EqualizerFilter.js.map +1 -0
  69. package/dist/esm/audio/filters/GranularFilter.d.ts +62 -0
  70. package/dist/esm/audio/filters/GranularFilter.js +176 -0
  71. package/dist/esm/audio/filters/GranularFilter.js.map +1 -0
  72. package/dist/esm/audio/filters/HighpassFilter.d.ts +29 -0
  73. package/dist/esm/audio/filters/HighpassFilter.js +71 -0
  74. package/dist/esm/audio/filters/HighpassFilter.js.map +1 -0
  75. package/dist/esm/audio/filters/LowpassFilter.d.ts +29 -0
  76. package/dist/esm/audio/filters/LowpassFilter.js +71 -0
  77. package/dist/esm/audio/filters/LowpassFilter.js.map +1 -0
  78. package/dist/esm/audio/filters/PitchShiftFilter.d.ts +44 -0
  79. package/dist/esm/audio/filters/PitchShiftFilter.js +132 -0
  80. package/dist/esm/audio/filters/PitchShiftFilter.js.map +1 -0
  81. package/dist/esm/audio/filters/ReverbFilter.d.ts +36 -0
  82. package/dist/esm/audio/filters/ReverbFilter.js +118 -0
  83. package/dist/esm/audio/filters/ReverbFilter.js.map +1 -0
  84. package/dist/esm/audio/filters/VocoderFilter.d.ts +49 -0
  85. package/dist/esm/audio/filters/VocoderFilter.js +174 -0
  86. package/dist/esm/audio/filters/VocoderFilter.js.map +1 -0
  87. package/dist/esm/audio/filters/WorkletFilter.d.ts +51 -0
  88. package/dist/esm/audio/filters/WorkletFilter.js +106 -0
  89. package/dist/esm/audio/filters/WorkletFilter.js.map +1 -0
  90. package/dist/esm/audio/filters/index.d.ts +12 -0
  91. package/dist/esm/audio/index.d.ts +15 -1
  92. package/dist/esm/audio/worklet/registerWorklet.d.ts +10 -0
  93. package/dist/esm/audio/worklet/registerWorklet.js +44 -0
  94. package/dist/esm/audio/worklet/registerWorklet.js.map +1 -0
  95. package/dist/esm/core/Application.d.ts +82 -0
  96. package/dist/esm/core/Application.js +137 -2
  97. package/dist/esm/core/Application.js.map +1 -1
  98. package/dist/esm/core/Bounds.d.ts +23 -0
  99. package/dist/esm/core/Bounds.js +23 -0
  100. package/dist/esm/core/Bounds.js.map +1 -1
  101. package/dist/esm/core/Clock.d.ts +21 -0
  102. package/dist/esm/core/Clock.js +21 -0
  103. package/dist/esm/core/Clock.js.map +1 -1
  104. package/dist/esm/core/Color.d.ts +35 -0
  105. package/dist/esm/core/Color.js +35 -0
  106. package/dist/esm/core/Color.js.map +1 -1
  107. package/dist/esm/core/Scene.d.ts +46 -0
  108. package/dist/esm/core/Scene.js +27 -0
  109. package/dist/esm/core/Scene.js.map +1 -1
  110. package/dist/esm/core/SceneManager.d.ts +62 -0
  111. package/dist/esm/core/SceneManager.js +49 -0
  112. package/dist/esm/core/SceneManager.js.map +1 -1
  113. package/dist/esm/core/SceneNode.d.ts +40 -1
  114. package/dist/esm/core/SceneNode.js +75 -6
  115. package/dist/esm/core/SceneNode.js.map +1 -1
  116. package/dist/esm/core/Signal.d.ts +44 -0
  117. package/dist/esm/core/Signal.js +39 -0
  118. package/dist/esm/core/Signal.js.map +1 -1
  119. package/dist/esm/core/Time.d.ts +21 -0
  120. package/dist/esm/core/Time.js +22 -1
  121. package/dist/esm/core/Time.js.map +1 -1
  122. package/dist/esm/core/Timer.d.ts +7 -0
  123. package/dist/esm/core/Timer.js +7 -0
  124. package/dist/esm/core/Timer.js.map +1 -1
  125. package/dist/esm/core/capabilities.d.ts +12 -0
  126. package/dist/esm/core/capabilities.js +12 -0
  127. package/dist/esm/core/capabilities.js.map +1 -1
  128. package/dist/esm/core/index.d.ts +0 -1
  129. package/dist/esm/core/types.d.ts +37 -0
  130. package/dist/esm/core/utils.d.ts +48 -0
  131. package/dist/esm/core/utils.js +48 -0
  132. package/dist/esm/core/utils.js.map +1 -1
  133. package/dist/esm/debug/BoundingBoxesLayer.d.ts +26 -0
  134. package/dist/esm/debug/BoundingBoxesLayer.js +136 -0
  135. package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -0
  136. package/dist/esm/debug/DebugLayer.d.ts +42 -0
  137. package/dist/esm/debug/DebugLayer.js +34 -0
  138. package/dist/esm/debug/DebugLayer.js.map +1 -0
  139. package/dist/esm/debug/DebugOverlay.d.ts +59 -0
  140. package/dist/esm/debug/DebugOverlay.js +123 -0
  141. package/dist/esm/debug/DebugOverlay.js.map +1 -0
  142. package/dist/esm/debug/HitTestLayer.d.ts +32 -0
  143. package/dist/esm/debug/HitTestLayer.js +118 -0
  144. package/dist/esm/debug/HitTestLayer.js.map +1 -0
  145. package/dist/esm/debug/PerformanceLayer.d.ts +37 -0
  146. package/dist/esm/debug/PerformanceLayer.js +193 -0
  147. package/dist/esm/debug/PerformanceLayer.js.map +1 -0
  148. package/dist/esm/debug/PointerStackLayer.d.ts +31 -0
  149. package/dist/esm/debug/PointerStackLayer.js +160 -0
  150. package/dist/esm/debug/PointerStackLayer.js.map +1 -0
  151. package/dist/esm/debug/index.d.ts +6 -0
  152. package/dist/esm/debug/index.js +7 -0
  153. package/dist/esm/debug/index.js.map +1 -0
  154. package/dist/esm/index.js +30 -4
  155. package/dist/esm/index.js.map +1 -1
  156. package/dist/esm/input/ArcadeStickGamepadMapping.d.ts +7 -0
  157. package/dist/esm/input/ArcadeStickGamepadMapping.js +7 -0
  158. package/dist/esm/input/ArcadeStickGamepadMapping.js.map +1 -1
  159. package/dist/esm/input/GameCubeGamepadMapping.d.ts +9 -0
  160. package/dist/esm/input/GameCubeGamepadMapping.js +9 -0
  161. package/dist/esm/input/GameCubeGamepadMapping.js.map +1 -1
  162. package/dist/esm/input/Gamepad.d.ts +48 -0
  163. package/dist/esm/input/Gamepad.js +43 -0
  164. package/dist/esm/input/Gamepad.js.map +1 -1
  165. package/dist/esm/input/GamepadChannels.d.ts +8 -0
  166. package/dist/esm/input/GamepadChannels.js +8 -0
  167. package/dist/esm/input/GamepadChannels.js.map +1 -1
  168. package/dist/esm/input/GamepadControl.d.ts +18 -0
  169. package/dist/esm/input/GamepadControl.js +13 -0
  170. package/dist/esm/input/GamepadControl.js.map +1 -1
  171. package/dist/esm/input/GamepadDefinitions.d.ts +64 -1
  172. package/dist/esm/input/GamepadDefinitions.js +40 -1
  173. package/dist/esm/input/GamepadDefinitions.js.map +1 -1
  174. package/dist/esm/input/GamepadMapping.d.ts +32 -2
  175. package/dist/esm/input/GamepadMapping.js +24 -0
  176. package/dist/esm/input/GamepadMapping.js.map +1 -1
  177. package/dist/esm/input/GamepadPromptLayouts.d.ts +32 -1
  178. package/dist/esm/input/GamepadPromptLayouts.js +25 -1
  179. package/dist/esm/input/GamepadPromptLayouts.js.map +1 -1
  180. package/dist/esm/input/GenericDualAnalogGamepadMapping.d.ts +10 -0
  181. package/dist/esm/input/GenericDualAnalogGamepadMapping.js +10 -0
  182. package/dist/esm/input/GenericDualAnalogGamepadMapping.js.map +1 -1
  183. package/dist/esm/input/GestureRecognizer.d.ts +11 -2
  184. package/dist/esm/input/GestureRecognizer.js +11 -2
  185. package/dist/esm/input/GestureRecognizer.js.map +1 -1
  186. package/dist/esm/input/Input.d.ts +24 -0
  187. package/dist/esm/input/Input.js +22 -0
  188. package/dist/esm/input/Input.js.map +1 -1
  189. package/dist/esm/input/InputManager.d.ts +43 -0
  190. package/dist/esm/input/InputManager.js +68 -5
  191. package/dist/esm/input/InputManager.js.map +1 -1
  192. package/dist/esm/input/InteractionEvent.d.ts +31 -0
  193. package/dist/esm/input/InteractionEvent.js +37 -0
  194. package/dist/esm/input/InteractionEvent.js.map +1 -0
  195. package/dist/esm/input/InteractionManager.d.ts +163 -0
  196. package/dist/esm/input/InteractionManager.js +575 -0
  197. package/dist/esm/input/InteractionManager.js.map +1 -0
  198. package/dist/esm/input/JoyConLeftGamepadMapping.d.ts +9 -0
  199. package/dist/esm/input/JoyConLeftGamepadMapping.js +9 -0
  200. package/dist/esm/input/JoyConLeftGamepadMapping.js.map +1 -1
  201. package/dist/esm/input/JoyConRightGamepadMapping.d.ts +9 -0
  202. package/dist/esm/input/JoyConRightGamepadMapping.js +9 -0
  203. package/dist/esm/input/JoyConRightGamepadMapping.js.map +1 -1
  204. package/dist/esm/input/PlayStationGamepadMapping.d.ts +8 -0
  205. package/dist/esm/input/PlayStationGamepadMapping.js +8 -0
  206. package/dist/esm/input/PlayStationGamepadMapping.js.map +1 -1
  207. package/dist/esm/input/Pointer.d.ts +22 -0
  208. package/dist/esm/input/Pointer.js +22 -0
  209. package/dist/esm/input/Pointer.js.map +1 -1
  210. package/dist/esm/input/SteamControllerGamepadMapping.d.ts +8 -0
  211. package/dist/esm/input/SteamControllerGamepadMapping.js +8 -0
  212. package/dist/esm/input/SteamControllerGamepadMapping.js.map +1 -1
  213. package/dist/esm/input/SwitchProGamepadMapping.d.ts +9 -0
  214. package/dist/esm/input/SwitchProGamepadMapping.js +9 -0
  215. package/dist/esm/input/SwitchProGamepadMapping.js.map +1 -1
  216. package/dist/esm/input/XboxGamepadMapping.d.ts +8 -0
  217. package/dist/esm/input/XboxGamepadMapping.js +8 -0
  218. package/dist/esm/input/XboxGamepadMapping.js.map +1 -1
  219. package/dist/esm/input/index.d.ts +2 -0
  220. package/dist/esm/input/interaction-hooks.d.ts +34 -0
  221. package/dist/esm/input/interaction-hooks.js +35 -0
  222. package/dist/esm/input/interaction-hooks.js.map +1 -0
  223. package/dist/esm/input/types.d.ts +20 -0
  224. package/dist/esm/input/types.js +20 -0
  225. package/dist/esm/input/types.js.map +1 -1
  226. package/dist/esm/math/AbstractVector.d.ts +83 -0
  227. package/dist/esm/math/AbstractVector.js +83 -0
  228. package/dist/esm/math/AbstractVector.js.map +1 -1
  229. package/dist/esm/math/Circle.d.ts +44 -2
  230. package/dist/esm/math/Circle.js +116 -16
  231. package/dist/esm/math/Circle.js.map +1 -1
  232. package/dist/esm/math/CircleLike.d.ts +1 -0
  233. package/dist/esm/math/Collision.d.ts +39 -0
  234. package/dist/esm/math/Collision.js +5 -0
  235. package/dist/esm/math/Collision.js.map +1 -1
  236. package/dist/esm/math/Ellipse.d.ts +11 -0
  237. package/dist/esm/math/Ellipse.js +18 -2
  238. package/dist/esm/math/Ellipse.js.map +1 -1
  239. package/dist/esm/math/EllipseLike.d.ts +3 -0
  240. package/dist/esm/math/Flags.d.ts +31 -0
  241. package/dist/esm/math/Flags.js +31 -0
  242. package/dist/esm/math/Flags.js.map +1 -1
  243. package/dist/esm/math/Interval.d.ts +15 -0
  244. package/dist/esm/math/Interval.js +16 -1
  245. package/dist/esm/math/Interval.js.map +1 -1
  246. package/dist/esm/math/Line.d.ts +17 -1
  247. package/dist/esm/math/Line.js +17 -1
  248. package/dist/esm/math/Line.js.map +1 -1
  249. package/dist/esm/math/LineLike.d.ts +1 -0
  250. package/dist/esm/math/Matrix.d.ts +44 -3
  251. package/dist/esm/math/Matrix.js +44 -3
  252. package/dist/esm/math/Matrix.js.map +1 -1
  253. package/dist/esm/math/ObservableSize.d.ts +7 -0
  254. package/dist/esm/math/ObservableSize.js +7 -0
  255. package/dist/esm/math/ObservableSize.js.map +1 -1
  256. package/dist/esm/math/ObservableVector.d.ts +11 -2
  257. package/dist/esm/math/ObservableVector.js +13 -2
  258. package/dist/esm/math/ObservableVector.js.map +1 -1
  259. package/dist/esm/math/PointLike.d.ts +1 -0
  260. package/dist/esm/math/PolarVector.d.ts +15 -0
  261. package/dist/esm/math/PolarVector.js +16 -1
  262. package/dist/esm/math/PolarVector.js.map +1 -1
  263. package/dist/esm/math/Polygon.d.ts +35 -1
  264. package/dist/esm/math/Polygon.js +78 -6
  265. package/dist/esm/math/Polygon.js.map +1 -1
  266. package/dist/esm/math/PolygonLike.d.ts +4 -0
  267. package/dist/esm/math/Quadtree.d.ts +84 -0
  268. package/dist/esm/math/Quadtree.js +204 -0
  269. package/dist/esm/math/Quadtree.js.map +1 -0
  270. package/dist/esm/math/Random.d.ts +25 -0
  271. package/dist/esm/math/Random.js +26 -1
  272. package/dist/esm/math/Random.js.map +1 -1
  273. package/dist/esm/math/Rectangle.d.ts +15 -0
  274. package/dist/esm/math/Rectangle.js +17 -2
  275. package/dist/esm/math/Rectangle.js.map +1 -1
  276. package/dist/esm/math/RectangleLike.d.ts +1 -0
  277. package/dist/esm/math/Segment.d.ts +7 -0
  278. package/dist/esm/math/Segment.js +7 -0
  279. package/dist/esm/math/Segment.js.map +1 -1
  280. package/dist/esm/math/ShapeLike.d.ts +6 -0
  281. package/dist/esm/math/Size.d.ts +9 -0
  282. package/dist/esm/math/Size.js +10 -1
  283. package/dist/esm/math/Size.js.map +1 -1
  284. package/dist/esm/math/Vector.d.ts +16 -0
  285. package/dist/esm/math/Vector.js +17 -1
  286. package/dist/esm/math/Vector.js.map +1 -1
  287. package/dist/esm/math/collision-detection.d.ts +47 -1
  288. package/dist/esm/math/collision-detection.js +231 -17
  289. package/dist/esm/math/collision-detection.js.map +1 -1
  290. package/dist/esm/math/collision-primitives.d.ts +23 -0
  291. package/dist/esm/math/collision-primitives.js +23 -0
  292. package/dist/esm/math/collision-primitives.js.map +1 -1
  293. package/dist/esm/math/geometry.d.ts +42 -0
  294. package/dist/esm/math/geometry.js +37 -0
  295. package/dist/esm/math/geometry.js.map +1 -1
  296. package/dist/esm/math/index.d.ts +1 -0
  297. package/dist/esm/math/utils.d.ts +41 -0
  298. package/dist/esm/math/utils.js +41 -0
  299. package/dist/esm/math/utils.js.map +1 -1
  300. package/dist/esm/particles/Particle.d.ts +37 -0
  301. package/dist/esm/particles/Particle.js +37 -0
  302. package/dist/esm/particles/Particle.js.map +1 -1
  303. package/dist/esm/particles/ParticleProperties.d.ts +15 -0
  304. package/dist/esm/particles/ParticleSystem.d.ts +69 -0
  305. package/dist/esm/particles/ParticleSystem.js +70 -0
  306. package/dist/esm/particles/ParticleSystem.js.map +1 -1
  307. package/dist/esm/particles/affectors/ColorAffector.d.ts +13 -0
  308. package/dist/esm/particles/affectors/ColorAffector.js +13 -0
  309. package/dist/esm/particles/affectors/ColorAffector.js.map +1 -1
  310. package/dist/esm/particles/affectors/ForceAffector.d.ts +11 -0
  311. package/dist/esm/particles/affectors/ForceAffector.js +11 -0
  312. package/dist/esm/particles/affectors/ForceAffector.js.map +1 -1
  313. package/dist/esm/particles/affectors/ParticleAffector.d.ts +13 -0
  314. package/dist/esm/particles/affectors/ScaleAffector.d.ts +10 -0
  315. package/dist/esm/particles/affectors/ScaleAffector.js +10 -0
  316. package/dist/esm/particles/affectors/ScaleAffector.js.map +1 -1
  317. package/dist/esm/particles/affectors/TorqueAffector.d.ts +11 -0
  318. package/dist/esm/particles/affectors/TorqueAffector.js +12 -1
  319. package/dist/esm/particles/affectors/TorqueAffector.js.map +1 -1
  320. package/dist/esm/particles/emitters/ParticleEmitter.d.ts +13 -0
  321. package/dist/esm/particles/emitters/ParticleOptions.d.ts +16 -0
  322. package/dist/esm/particles/emitters/ParticleOptions.js +16 -0
  323. package/dist/esm/particles/emitters/ParticleOptions.js.map +1 -1
  324. package/dist/esm/particles/emitters/UniversalEmitter.d.ts +23 -0
  325. package/dist/esm/particles/emitters/UniversalEmitter.js +23 -0
  326. package/dist/esm/particles/emitters/UniversalEmitter.js.map +1 -1
  327. package/dist/esm/rendering/CallbackRenderPass.d.ts +12 -0
  328. package/dist/esm/rendering/CallbackRenderPass.js +12 -0
  329. package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
  330. package/dist/esm/rendering/Container.d.ts +44 -0
  331. package/dist/esm/rendering/Container.js +62 -0
  332. package/dist/esm/rendering/Container.js.map +1 -1
  333. package/dist/esm/rendering/Drawable.d.ts +22 -0
  334. package/dist/esm/rendering/Drawable.js +22 -0
  335. package/dist/esm/rendering/Drawable.js.map +1 -1
  336. package/dist/esm/rendering/RenderBackend.d.ts +13 -0
  337. package/dist/esm/rendering/RenderBackendType.d.ts +4 -0
  338. package/dist/esm/rendering/RenderBackendType.js +4 -0
  339. package/dist/esm/rendering/RenderBackendType.js.map +1 -1
  340. package/dist/esm/rendering/RenderNode.d.ts +45 -0
  341. package/dist/esm/rendering/RenderNode.js +62 -0
  342. package/dist/esm/rendering/RenderNode.js.map +1 -1
  343. package/dist/esm/rendering/RenderPass.d.ts +8 -0
  344. package/dist/esm/rendering/RenderStats.d.ts +19 -0
  345. package/dist/esm/rendering/RenderStats.js +7 -0
  346. package/dist/esm/rendering/RenderStats.js.map +1 -1
  347. package/dist/esm/rendering/RenderTarget.d.ts +17 -0
  348. package/dist/esm/rendering/RenderTarget.js +17 -0
  349. package/dist/esm/rendering/RenderTarget.js.map +1 -1
  350. package/dist/esm/rendering/RenderTargetPass.d.ts +11 -0
  351. package/dist/esm/rendering/RenderTargetPass.js +7 -0
  352. package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
  353. package/dist/esm/rendering/Renderer.d.ts +15 -0
  354. package/dist/esm/rendering/RendererRegistry.d.ts +7 -0
  355. package/dist/esm/rendering/RendererRegistry.js +7 -0
  356. package/dist/esm/rendering/RendererRegistry.js.map +1 -1
  357. package/dist/esm/rendering/View.d.ts +73 -6
  358. package/dist/esm/rendering/View.js +69 -2
  359. package/dist/esm/rendering/View.js.map +1 -1
  360. package/dist/esm/rendering/filters/BlurFilter.d.ts +9 -0
  361. package/dist/esm/rendering/filters/BlurFilter.js +8 -0
  362. package/dist/esm/rendering/filters/BlurFilter.js.map +1 -1
  363. package/dist/esm/rendering/filters/ColorFilter.d.ts +7 -0
  364. package/dist/esm/rendering/filters/ColorFilter.js +7 -0
  365. package/dist/esm/rendering/filters/ColorFilter.js.map +1 -1
  366. package/dist/esm/rendering/filters/Filter.d.ts +23 -0
  367. package/dist/esm/rendering/filters/Filter.js +20 -0
  368. package/dist/esm/rendering/filters/Filter.js.map +1 -1
  369. package/dist/esm/rendering/filters/WebGl2ShaderFilter.d.ts +114 -0
  370. package/dist/esm/rendering/filters/WebGl2ShaderFilter.js +273 -0
  371. package/dist/esm/rendering/filters/WebGl2ShaderFilter.js.map +1 -0
  372. package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts +116 -0
  373. package/dist/esm/rendering/filters/WebGpuShaderFilter.js +402 -0
  374. package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -0
  375. package/dist/esm/rendering/index.d.ts +3 -0
  376. package/dist/esm/rendering/mesh/Mesh.d.ts +2 -0
  377. package/dist/esm/rendering/mesh/Mesh.js +3 -0
  378. package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
  379. package/dist/esm/rendering/primitives/Graphics.d.ts +34 -0
  380. package/dist/esm/rendering/primitives/Graphics.js +34 -0
  381. package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
  382. package/dist/esm/rendering/shader/Shader.d.ts +36 -0
  383. package/dist/esm/rendering/shader/Shader.js +26 -0
  384. package/dist/esm/rendering/shader/Shader.js.map +1 -1
  385. package/dist/esm/rendering/shader/ShaderAttribute.d.ts +13 -0
  386. package/dist/esm/rendering/shader/ShaderAttribute.js +13 -0
  387. package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
  388. package/dist/esm/rendering/shader/ShaderUniform.d.ts +27 -0
  389. package/dist/esm/rendering/shader/ShaderUniform.js +28 -1
  390. package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -1
  391. package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.d.ts +34 -0
  392. package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js +60 -0
  393. package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js.map +1 -0
  394. package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +38 -0
  395. package/dist/esm/rendering/sprite/AnimatedSprite.js +36 -0
  396. package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
  397. package/dist/esm/rendering/sprite/Sprite.d.ts +62 -1
  398. package/dist/esm/rendering/sprite/Sprite.js +97 -19
  399. package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
  400. package/dist/esm/rendering/sprite/Spritesheet.d.ts +25 -0
  401. package/dist/esm/rendering/sprite/Spritesheet.js +20 -0
  402. package/dist/esm/rendering/sprite/Spritesheet.js.map +1 -1
  403. package/dist/esm/rendering/text/Text.d.ts +2 -0
  404. package/dist/esm/rendering/text/Text.js +2 -0
  405. package/dist/esm/rendering/text/Text.js.map +1 -1
  406. package/dist/esm/rendering/text/TextStyle.d.ts +29 -0
  407. package/dist/esm/rendering/text/TextStyle.js +24 -0
  408. package/dist/esm/rendering/text/TextStyle.js.map +1 -1
  409. package/dist/esm/rendering/text/types.d.ts +1 -0
  410. package/dist/esm/rendering/texture/RenderTexture.d.ts +16 -0
  411. package/dist/esm/rendering/texture/RenderTexture.js +16 -0
  412. package/dist/esm/rendering/texture/RenderTexture.js.map +1 -1
  413. package/dist/esm/rendering/texture/Sampler.d.ts +23 -0
  414. package/dist/esm/rendering/texture/Sampler.js +13 -0
  415. package/dist/esm/rendering/texture/Sampler.js.map +1 -1
  416. package/dist/esm/rendering/texture/Texture.d.ts +30 -0
  417. package/dist/esm/rendering/texture/Texture.js +30 -0
  418. package/dist/esm/rendering/texture/Texture.js.map +1 -1
  419. package/dist/esm/rendering/types.d.ts +29 -0
  420. package/dist/esm/rendering/types.js +29 -0
  421. package/dist/esm/rendering/types.js.map +1 -1
  422. package/dist/esm/rendering/utils.d.ts +20 -0
  423. package/dist/esm/rendering/utils.js +10 -0
  424. package/dist/esm/rendering/utils.js.map +1 -1
  425. package/dist/esm/rendering/video/Video.d.ts +39 -1
  426. package/dist/esm/rendering/video/Video.js +68 -6
  427. package/dist/esm/rendering/video/Video.js.map +1 -1
  428. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +7 -0
  429. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +7 -0
  430. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
  431. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +17 -4
  432. package/dist/esm/rendering/webgl2/WebGl2Backend.js +20 -16
  433. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
  434. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +8 -0
  435. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +8 -0
  436. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
  437. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +45 -8
  438. package/dist/esm/rendering/webgpu/WebGpuBackend.js +160 -40
  439. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
  440. package/dist/esm/resources/AbstractAssetFactory.d.ts +20 -0
  441. package/dist/esm/resources/AbstractAssetFactory.js +20 -0
  442. package/dist/esm/resources/AbstractAssetFactory.js.map +1 -1
  443. package/dist/esm/resources/AssetFactory.d.ts +26 -0
  444. package/dist/esm/resources/AssetManifest.d.ts +45 -0
  445. package/dist/esm/resources/AssetManifest.js +25 -0
  446. package/dist/esm/resources/AssetManifest.js.map +1 -1
  447. package/dist/esm/resources/CacheFirstStrategy.d.ts +12 -0
  448. package/dist/esm/resources/CacheFirstStrategy.js +12 -0
  449. package/dist/esm/resources/CacheFirstStrategy.js.map +1 -1
  450. package/dist/esm/resources/CacheStore.d.ts +23 -0
  451. package/dist/esm/resources/CacheStrategy.d.ts +20 -0
  452. package/dist/esm/resources/Database.d.ts +45 -0
  453. package/dist/esm/resources/FactoryRegistry.d.ts +28 -0
  454. package/dist/esm/resources/FactoryRegistry.js +24 -0
  455. package/dist/esm/resources/FactoryRegistry.js.map +1 -1
  456. package/dist/esm/resources/IndexedDbDatabase.d.ts +22 -1
  457. package/dist/esm/resources/IndexedDbDatabase.js +21 -0
  458. package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
  459. package/dist/esm/resources/IndexedDbStore.d.ts +20 -0
  460. package/dist/esm/resources/IndexedDbStore.js +12 -0
  461. package/dist/esm/resources/IndexedDbStore.js.map +1 -1
  462. package/dist/esm/resources/Loader.d.ts +167 -0
  463. package/dist/esm/resources/Loader.js +110 -0
  464. package/dist/esm/resources/Loader.js.map +1 -1
  465. package/dist/esm/resources/NetworkOnlyStrategy.d.ts +8 -0
  466. package/dist/esm/resources/NetworkOnlyStrategy.js +8 -0
  467. package/dist/esm/resources/NetworkOnlyStrategy.js.map +1 -1
  468. package/dist/esm/resources/factories/BinaryFactory.d.ts +13 -0
  469. package/dist/esm/resources/factories/BinaryFactory.js +13 -0
  470. package/dist/esm/resources/factories/BinaryFactory.js.map +1 -1
  471. package/dist/esm/resources/factories/FontFactory.d.ts +37 -0
  472. package/dist/esm/resources/factories/FontFactory.js +26 -0
  473. package/dist/esm/resources/factories/FontFactory.js.map +1 -1
  474. package/dist/esm/resources/factories/ImageFactory.d.ts +24 -0
  475. package/dist/esm/resources/factories/ImageFactory.js +19 -0
  476. package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
  477. package/dist/esm/resources/factories/JsonFactory.d.ts +13 -0
  478. package/dist/esm/resources/factories/JsonFactory.js +13 -0
  479. package/dist/esm/resources/factories/JsonFactory.js.map +1 -1
  480. package/dist/esm/resources/factories/MusicFactory.d.ts +36 -0
  481. package/dist/esm/resources/factories/MusicFactory.js +44 -4
  482. package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
  483. package/dist/esm/resources/factories/SoundFactory.d.ts +29 -0
  484. package/dist/esm/resources/factories/SoundFactory.js +18 -0
  485. package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
  486. package/dist/esm/resources/factories/SvgFactory.d.ts +19 -0
  487. package/dist/esm/resources/factories/SvgFactory.js +19 -0
  488. package/dist/esm/resources/factories/SvgFactory.js.map +1 -1
  489. package/dist/esm/resources/factories/TextFactory.d.ts +11 -0
  490. package/dist/esm/resources/factories/TextFactory.js +11 -0
  491. package/dist/esm/resources/factories/TextFactory.js.map +1 -1
  492. package/dist/esm/resources/factories/TextureFactory.d.ts +25 -0
  493. package/dist/esm/resources/factories/TextureFactory.js +20 -0
  494. package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
  495. package/dist/esm/resources/factories/VideoFactory.d.ts +37 -0
  496. package/dist/esm/resources/factories/VideoFactory.js +48 -5
  497. package/dist/esm/resources/factories/VideoFactory.js.map +1 -1
  498. package/dist/esm/resources/factories/VttFactory.d.ts +18 -0
  499. package/dist/esm/resources/factories/VttFactory.js +24 -0
  500. package/dist/esm/resources/factories/VttFactory.js.map +1 -1
  501. package/dist/esm/resources/factories/WasmFactory.d.ts +16 -0
  502. package/dist/esm/resources/factories/WasmFactory.js +16 -0
  503. package/dist/esm/resources/factories/WasmFactory.js.map +1 -1
  504. package/dist/esm/resources/utils.d.ts +10 -0
  505. package/dist/esm/resources/utils.js +10 -0
  506. package/dist/esm/resources/utils.js.map +1 -1
  507. package/dist/exo.esm.js +11182 -2538
  508. package/dist/exo.esm.js.map +1 -1
  509. package/package.json +20 -9
  510. package/dist/esm/core/Quadtree.d.ts +0 -20
  511. package/dist/esm/core/Quadtree.js +0 -86
  512. package/dist/esm/core/Quadtree.js.map +0 -1
@@ -0,0 +1,123 @@
1
+ import { View } from '../rendering/View.js';
2
+ import { Keyboard } from '../input/types.js';
3
+ import { PerformanceLayer } from './PerformanceLayer.js';
4
+ import { BoundingBoxesLayer } from './BoundingBoxesLayer.js';
5
+ import { HitTestLayer } from './HitTestLayer.js';
6
+ import { PointerStackLayer } from './PointerStackLayer.js';
7
+
8
+ /**
9
+ * Canvas-native debug overlay. Instantiate AFTER Application is constructed:
10
+ *
11
+ * import { DebugOverlay } from '@codexo/exojs/debug';
12
+ * const debug = new DebugOverlay(app);
13
+ * debug.layers.performance.visible = true; // or press F1
14
+ *
15
+ * The overlay subscribes to `app.onFrame` and renders its visible layers.
16
+ * World-space layers render first (under text panels) in the scene view;
17
+ * screen-space layers then render in the overlay's pixel-space view.
18
+ *
19
+ * Keybindings (while canvas has focus):
20
+ * F1 — toggle Performance layer
21
+ * F2 — toggle BoundingBoxes layer
22
+ * F3 — toggle HitTest layer
23
+ * F4 — toggle PointerStack layer
24
+ *
25
+ * NOTE: F-keys only fire while the canvas has focus (engine convention).
26
+ *
27
+ * The master `visible` switch suppresses all layer rendering when false
28
+ * without changing individual layer visibility flags.
29
+ */
30
+ class DebugOverlay {
31
+ /** Master visibility switch. When false, no layers render regardless of their individual flags. */
32
+ visible = true;
33
+ /** The four built-in diagnostic layers. Toggle each layer's `visible` flag or use the F1–F4 keybindings. */
34
+ layers;
35
+ _app;
36
+ _view;
37
+ _onFrameHandler;
38
+ _onKeyDownHandler;
39
+ _onResizeHandler;
40
+ constructor(app) {
41
+ this._app = app;
42
+ this._view = new View(app.canvas.width / 2, app.canvas.height / 2, app.canvas.width, app.canvas.height);
43
+ this.layers = {
44
+ performance: new PerformanceLayer(app),
45
+ boundingBoxes: new BoundingBoxesLayer(app),
46
+ hitTest: new HitTestLayer(app),
47
+ pointerStack: new PointerStackLayer(app),
48
+ };
49
+ this._onFrameHandler = this._onFrame.bind(this);
50
+ this._onKeyDownHandler = this._onKeyDown.bind(this);
51
+ this._onResizeHandler = this._onResize.bind(this);
52
+ app.onFrame.add(this._onFrameHandler);
53
+ app.inputManager.onKeyDown.add(this._onKeyDownHandler);
54
+ app.onResize.add(this._onResizeHandler);
55
+ }
56
+ /**
57
+ * Unsubscribe from all application events, destroy every layer, and
58
+ * release the overlay's internal {@link View}. Call this when you no
59
+ * longer need the overlay to avoid memory leaks.
60
+ */
61
+ destroy() {
62
+ this._app.onFrame.remove(this._onFrameHandler);
63
+ this._app.inputManager.onKeyDown.remove(this._onKeyDownHandler);
64
+ this._app.onResize.remove(this._onResizeHandler);
65
+ for (const layer of Object.values(this.layers)) {
66
+ layer.destroy();
67
+ }
68
+ this._view.destroy();
69
+ }
70
+ _onResize(width, height) {
71
+ this._view.resize(width, height);
72
+ this._view.setCenter(width / 2, height / 2);
73
+ }
74
+ _onFrame(delta) {
75
+ if (!this.visible)
76
+ return;
77
+ const layers = Object.values(this.layers);
78
+ const visibleLayers = layers.filter(l => l.visible);
79
+ if (visibleLayers.length === 0)
80
+ return;
81
+ const backend = this._app.backend;
82
+ const sceneView = backend.view; // capture scene's current view
83
+ // --- World-space layers first (render under screen-space text panels) ---
84
+ const worldLayers = visibleLayers.filter(l => l.viewMode === 'world');
85
+ for (const layer of worldLayers) {
86
+ layer.update(delta);
87
+ layer.render(backend);
88
+ }
89
+ // --- Screen-space layers: swap to overlay's pixel view ---
90
+ const screenLayers = visibleLayers.filter(l => l.viewMode === 'screen');
91
+ if (screenLayers.length > 0) {
92
+ backend.setView(this._view);
93
+ try {
94
+ for (const layer of screenLayers) {
95
+ layer.update(delta);
96
+ layer.render(backend);
97
+ }
98
+ }
99
+ finally {
100
+ backend.setView(sceneView);
101
+ }
102
+ }
103
+ }
104
+ _onKeyDown(channel) {
105
+ switch (channel) {
106
+ case Keyboard.F1:
107
+ this.layers.performance.visible = !this.layers.performance.visible;
108
+ break;
109
+ case Keyboard.F2:
110
+ this.layers.boundingBoxes.visible = !this.layers.boundingBoxes.visible;
111
+ break;
112
+ case Keyboard.F3:
113
+ this.layers.hitTest.visible = !this.layers.hitTest.visible;
114
+ break;
115
+ case Keyboard.F4:
116
+ this.layers.pointerStack.visible = !this.layers.pointerStack.visible;
117
+ break;
118
+ }
119
+ }
120
+ }
121
+
122
+ export { DebugOverlay };
123
+ //# sourceMappingURL=DebugOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugOverlay.js","sources":["../../../../src/debug/DebugOverlay.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { DebugLayer } from './DebugLayer';
2
+ import type { DebugLayerViewMode } from './DebugLayer';
3
+ import type { Time } from '@/core/Time';
4
+ import type { RenderBackend } from '@/rendering/RenderBackend';
5
+ import type { Application } from '@/core/Application';
6
+ /**
7
+ * Debug layer that draws outlines around interactive scene nodes.
8
+ * - Magenta: interactive but idle.
9
+ * - Yellow: currently hovered.
10
+ * - Cyan: pointer-captured (drag in progress).
11
+ * - Faint gray quadrant outlines when the spatial index is active (i.e.
12
+ * at least one interactive node is present in the scene).
13
+ * World-space.
14
+ */
15
+ export declare class HitTestLayer extends DebugLayer {
16
+ private _graphics;
17
+ constructor(app: Application);
18
+ /** Renders in world-space so outlines align with interactive node positions. */
19
+ get viewMode(): DebugLayerViewMode;
20
+ /** No per-frame pre-computation required; all state is derived in {@link render}. */
21
+ update(_delta: Time): void;
22
+ /**
23
+ * Walk the scene tree and draw color-coded outlines around interactive
24
+ * nodes (magenta = idle, yellow = hovered, cyan = pointer-captured).
25
+ * Also draws faint gray quadrant boundaries when the spatial index is
26
+ * active, helping diagnose partitioning behavior.
27
+ */
28
+ render(backend: RenderBackend): void;
29
+ /** Release the internal {@link Graphics} primitive. */
30
+ destroy(): void;
31
+ private _walkNode;
32
+ }
@@ -0,0 +1,118 @@
1
+ import { DebugLayer } from './DebugLayer.js';
2
+ import { Graphics } from '../rendering/primitives/Graphics.js';
3
+ import { Color } from '../core/Color.js';
4
+ import '../math/Size.js';
5
+ import '../core/Time.js';
6
+ import '../core/SceneNode.js';
7
+ import '../math/Rectangle.js';
8
+ import '../rendering/types.js';
9
+ import '../rendering/View.js';
10
+ import '../rendering/texture/RenderTexture.js';
11
+
12
+ // Color constants (created once, reused).
13
+ const colorIdle = new Color(1, 0, 1, 0.6); // magenta
14
+ const colorHovered = new Color(1, 1, 0, 0.9); // yellow
15
+ const colorCaptured = new Color(0, 1, 1, 0.9); // cyan
16
+ const colorQuadrant = new Color(0.5, 0.5, 0.5, 0.3); // faint gray
17
+ /**
18
+ * Debug layer that draws outlines around interactive scene nodes.
19
+ * - Magenta: interactive but idle.
20
+ * - Yellow: currently hovered.
21
+ * - Cyan: pointer-captured (drag in progress).
22
+ * - Faint gray quadrant outlines when the spatial index is active (i.e.
23
+ * at least one interactive node is present in the scene).
24
+ * World-space.
25
+ */
26
+ class HitTestLayer extends DebugLayer {
27
+ _graphics = null;
28
+ constructor(app) {
29
+ super(app);
30
+ }
31
+ /** Renders in world-space so outlines align with interactive node positions. */
32
+ get viewMode() {
33
+ return 'world';
34
+ }
35
+ /** No per-frame pre-computation required; all state is derived in {@link render}. */
36
+ update(_delta) {
37
+ // Nothing to pre-compute; all state is read in render().
38
+ }
39
+ /**
40
+ * Walk the scene tree and draw color-coded outlines around interactive
41
+ * nodes (magenta = idle, yellow = hovered, cyan = pointer-captured).
42
+ * Also draws faint gray quadrant boundaries when the spatial index is
43
+ * active, helping diagnose partitioning behavior.
44
+ */
45
+ render(backend) {
46
+ const root = this._app.sceneManager.scene?.root;
47
+ if (!root) {
48
+ return;
49
+ }
50
+ if (this._graphics === null) {
51
+ this._graphics = new Graphics();
52
+ }
53
+ const gfx = this._graphics;
54
+ gfx.clear();
55
+ gfx.lineWidth = 1;
56
+ // Determine hovered and captured sets for color-coding.
57
+ const interaction = this._app.interaction;
58
+ const hoveredNode = interaction.getHoveredNode();
59
+ const capturedNodes = new Set(interaction.getCapturedNodes());
60
+ // Walk scene and draw outlines for interactive nodes.
61
+ this._walkNode(root, gfx, hoveredNode, capturedNodes);
62
+ // Draw quadtree regions when the spatial index is active.
63
+ const quadtree = interaction._getDebugQuadtree();
64
+ if (quadtree !== null) {
65
+ gfx.lineColor = colorQuadrant;
66
+ quadtree._walkBounds((rect) => {
67
+ gfx.moveTo(rect.left, rect.top);
68
+ gfx.lineTo(rect.right, rect.top);
69
+ gfx.lineTo(rect.right, rect.bottom);
70
+ gfx.lineTo(rect.left, rect.bottom);
71
+ gfx.lineTo(rect.left, rect.top);
72
+ });
73
+ }
74
+ gfx.render(backend);
75
+ }
76
+ /** Release the internal {@link Graphics} primitive. */
77
+ destroy() {
78
+ if (this._graphics !== null) {
79
+ this._graphics.destroy();
80
+ this._graphics = null;
81
+ }
82
+ }
83
+ // -----------------------------------------------------------------------
84
+ _walkNode(node, gfx, hovered, captured) {
85
+ if (!node.visible) {
86
+ return;
87
+ }
88
+ if (node.interactive) {
89
+ const bounds = node.getBounds();
90
+ if (bounds.width > 0 && bounds.height > 0) {
91
+ if (captured.has(node)) {
92
+ gfx.lineColor = colorCaptured;
93
+ }
94
+ else if (node === hovered) {
95
+ gfx.lineColor = colorHovered;
96
+ }
97
+ else {
98
+ gfx.lineColor = colorIdle;
99
+ }
100
+ gfx.moveTo(bounds.left, bounds.top);
101
+ gfx.lineTo(bounds.right, bounds.top);
102
+ gfx.lineTo(bounds.right, bounds.bottom);
103
+ gfx.lineTo(bounds.left, bounds.bottom);
104
+ gfx.lineTo(bounds.left, bounds.top);
105
+ }
106
+ }
107
+ // Recurse into Container children.
108
+ const container = node;
109
+ if (Array.isArray(container.children)) {
110
+ for (const child of container.children) {
111
+ this._walkNode(child, gfx, hovered, captured);
112
+ }
113
+ }
114
+ }
115
+ }
116
+
117
+ export { HitTestLayer };
118
+ //# sourceMappingURL=HitTestLayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HitTestLayer.js","sources":["../../../../src/debug/HitTestLayer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { DebugLayer, type DebugLayerViewMode } from './DebugLayer';
2
+ import type { Time } from '@/core/Time';
3
+ import type { RenderBackend } from '@/rendering/RenderBackend';
4
+ import type { Application } from '@/core/Application';
5
+ /**
6
+ * Debug layer that renders a compact screen-space HUD (top-left) showing
7
+ * rolling-average FPS, per-frame time in milliseconds, draw-call count, and
8
+ * scene-node count, alongside a 120-sample frame-time sparkline.
9
+ *
10
+ * Enable via {@link DebugOverlay} or by pressing F1 while the canvas has focus.
11
+ */
12
+ export declare class PerformanceLayer extends DebugLayer {
13
+ private readonly _fpsSamples;
14
+ private _fpsSampleIndex;
15
+ private readonly _sparkSamples;
16
+ private _sparkSampleIndex;
17
+ private _root;
18
+ private _textFps;
19
+ private _textFrame;
20
+ private _textDraws;
21
+ private _textNodes;
22
+ private _sparkline;
23
+ constructor(app: Application);
24
+ get viewMode(): DebugLayerViewMode;
25
+ /**
26
+ * Sample the current frame time, recompute the rolling FPS average,
27
+ * update stat text nodes, and rebuild the sparkline geometry. Lazily
28
+ * initializes the panel scene graph on first call to avoid touching the
29
+ * glyph atlas until the layer is actually shown.
30
+ */
31
+ update(delta: Time): void;
32
+ /** Submit the panel's {@link Container} subtree to the backend for drawing. */
33
+ render(backend: RenderBackend): void;
34
+ /** Destroy the panel's {@link Container} subtree and release all child references. */
35
+ destroy(): void;
36
+ private _build;
37
+ }
@@ -0,0 +1,193 @@
1
+ import { DebugLayer } from './DebugLayer.js';
2
+ import { Graphics } from '../rendering/primitives/Graphics.js';
3
+ import { Text } from '../rendering/text/Text.js';
4
+ import { TextStyle } from '../rendering/text/TextStyle.js';
5
+ import { Color } from '../core/Color.js';
6
+ import { Container } from '../rendering/Container.js';
7
+
8
+ // --- layout constants (camelCase to satisfy lint naming convention) ----------
9
+ const panelX = 8;
10
+ const panelY = 8;
11
+ const panelW = 180;
12
+ const panelH = 130;
13
+ const lineH = 14;
14
+ const textSize = 11;
15
+ const textRowCount = 4;
16
+ const sparklineY = panelY + 8 + textRowCount * lineH + 4;
17
+ const sparklineH = panelH - (sparklineY - panelY) - 4;
18
+ const sparklineW = panelW - 16;
19
+ const sparklineX = panelX + 8;
20
+ const fpsSampleCount = 60;
21
+ const sparklineSampleCount = 120;
22
+ const sparklineMaxMs = 33; // 100% height = 33ms (~30 fps)
23
+ // Semi-transparent dark background.
24
+ const bgColor = new Color(0, 0, 0, 0.7);
25
+ // Bright text color (light blue-white).
26
+ const textColor = Color.white.clone();
27
+ // Cyan sparkline.
28
+ const sparklineColor = new Color(0, 1, 1, 1.0);
29
+ // -----------------------------------------------------------------------------
30
+ /** Recursively count nodes under a RenderNode. */
31
+ function countNodes(node) {
32
+ let count = 1;
33
+ const container = node;
34
+ if (Array.isArray(container.children)) {
35
+ for (const child of container.children) {
36
+ count += countNodes(child);
37
+ }
38
+ }
39
+ return count;
40
+ }
41
+ /**
42
+ * Debug layer that renders a compact screen-space HUD (top-left) showing
43
+ * rolling-average FPS, per-frame time in milliseconds, draw-call count, and
44
+ * scene-node count, alongside a 120-sample frame-time sparkline.
45
+ *
46
+ * Enable via {@link DebugOverlay} or by pressing F1 while the canvas has focus.
47
+ */
48
+ class PerformanceLayer extends DebugLayer {
49
+ // Rolling FPS sample buffer (60 samples).
50
+ _fpsSamples = new Float32Array(fpsSampleCount);
51
+ _fpsSampleIndex = 0;
52
+ // Rolling frame-time buffer (120 samples) for sparkline.
53
+ _sparkSamples = new Float32Array(sparklineSampleCount);
54
+ _sparkSampleIndex = 0;
55
+ // Root container — lazily initialized on first update() call so the
56
+ // glyph atlas is not touched in environments where canvas 2D is absent.
57
+ _root = null;
58
+ _textFps = null;
59
+ _textFrame = null;
60
+ _textDraws = null;
61
+ _textNodes = null;
62
+ _sparkline = null;
63
+ constructor(app) {
64
+ super(app);
65
+ }
66
+ get viewMode() {
67
+ return 'screen';
68
+ }
69
+ /**
70
+ * Sample the current frame time, recompute the rolling FPS average,
71
+ * update stat text nodes, and rebuild the sparkline geometry. Lazily
72
+ * initializes the panel scene graph on first call to avoid touching the
73
+ * glyph atlas until the layer is actually shown.
74
+ */
75
+ update(delta) {
76
+ // Lazily build the scene graph on first update so that Text (which
77
+ // touches the glyph atlas immediately) is only constructed when the
78
+ // layer is first made visible — not at DebugOverlay construction time.
79
+ if (this._root === null) {
80
+ this._build();
81
+ }
82
+ // --- FPS rolling average ---
83
+ const frameMs = delta.milliseconds;
84
+ this._fpsSamples[this._fpsSampleIndex] = frameMs;
85
+ this._fpsSampleIndex = (this._fpsSampleIndex + 1) % fpsSampleCount;
86
+ let totalMs = 0;
87
+ let validSamples = 0;
88
+ for (let i = 0; i < fpsSampleCount; i++) {
89
+ const s = this._fpsSamples[i];
90
+ if (s > 0) {
91
+ totalMs += s;
92
+ validSamples++;
93
+ }
94
+ }
95
+ const avgMs = validSamples > 0 ? totalMs / validSamples : 0;
96
+ const fps = avgMs > 0 ? 1000 / avgMs : 0;
97
+ // --- Sparkline sample ---
98
+ this._sparkSamples[this._sparkSampleIndex] = frameMs;
99
+ this._sparkSampleIndex = (this._sparkSampleIndex + 1) % sparklineSampleCount;
100
+ // --- Stats ---
101
+ const stats = this._app.backend.stats;
102
+ const scene = this._app.sceneManager.scene;
103
+ const nodeCount = scene ? countNodes(scene.root) : 0;
104
+ // --- Update text ---
105
+ if (this._textFps !== null) {
106
+ this._textFps.text = `FPS: ${fps.toFixed(1)}`;
107
+ }
108
+ if (this._textFrame !== null) {
109
+ this._textFrame.text = `Frame: ${frameMs.toFixed(1)}ms`;
110
+ }
111
+ if (this._textDraws !== null) {
112
+ this._textDraws.text = `Draws: ${stats.drawCalls}`;
113
+ }
114
+ if (this._textNodes !== null) {
115
+ this._textNodes.text = `Nodes: ${nodeCount}`;
116
+ }
117
+ // --- Rebuild sparkline geometry ---
118
+ if (this._sparkline !== null) {
119
+ this._sparkline.clear();
120
+ this._sparkline.lineWidth = 1;
121
+ this._sparkline.lineColor = sparklineColor;
122
+ // Walk samples in chronological order (oldest first).
123
+ const oldest = this._sparkSampleIndex;
124
+ const stepX = sparklineW / (sparklineSampleCount - 1);
125
+ let started = false;
126
+ for (let i = 0; i < sparklineSampleCount; i++) {
127
+ const idx = (oldest + i) % sparklineSampleCount;
128
+ const ms = this._sparkSamples[idx];
129
+ const px = sparklineX + i * stepX;
130
+ const py = sparklineY + sparklineH - Math.min(1, ms / sparklineMaxMs) * sparklineH;
131
+ if (!started) {
132
+ this._sparkline.moveTo(px, py);
133
+ started = true;
134
+ }
135
+ else {
136
+ this._sparkline.lineTo(px, py);
137
+ }
138
+ }
139
+ }
140
+ }
141
+ /** Submit the panel's {@link Container} subtree to the backend for drawing. */
142
+ render(backend) {
143
+ this._root?.render(backend);
144
+ }
145
+ /** Destroy the panel's {@link Container} subtree and release all child references. */
146
+ destroy() {
147
+ if (this._root !== null) {
148
+ this._root.destroy();
149
+ this._root = null;
150
+ }
151
+ this._textFps = null;
152
+ this._textFrame = null;
153
+ this._textDraws = null;
154
+ this._textNodes = null;
155
+ this._sparkline = null;
156
+ }
157
+ // -----------------------------------------------------------------------
158
+ _build() {
159
+ const style = new TextStyle({
160
+ fontSize: textSize,
161
+ fontFamily: 'Arial',
162
+ fontWeight: 'normal',
163
+ fillColor: textColor,
164
+ strokeThickness: 0,
165
+ });
166
+ const bg = new Graphics();
167
+ bg.fillColor = bgColor;
168
+ bg.drawRectangle(panelX, panelY, panelW, panelH);
169
+ this._textFps = new Text('FPS: -', style.clone());
170
+ this._textFrame = new Text('Frame: -', style.clone());
171
+ this._textDraws = new Text('Draws: -', style.clone());
172
+ this._textNodes = new Text('Nodes: -', style.clone());
173
+ this._textFps.x = panelX + 8;
174
+ this._textFps.y = panelY + 8;
175
+ this._textFrame.x = panelX + 8;
176
+ this._textFrame.y = panelY + 8 + lineH;
177
+ this._textDraws.x = panelX + 8;
178
+ this._textDraws.y = panelY + 8 + lineH * 2;
179
+ this._textNodes.x = panelX + 8;
180
+ this._textNodes.y = panelY + 8 + lineH * 3;
181
+ this._sparkline = new Graphics();
182
+ this._root = new Container();
183
+ this._root.addChild(bg);
184
+ this._root.addChild(this._textFps);
185
+ this._root.addChild(this._textFrame);
186
+ this._root.addChild(this._textDraws);
187
+ this._root.addChild(this._textNodes);
188
+ this._root.addChild(this._sparkline);
189
+ }
190
+ }
191
+
192
+ export { PerformanceLayer };
193
+ //# sourceMappingURL=PerformanceLayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PerformanceLayer.js","sources":["../../../../src/debug/PerformanceLayer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { DebugLayer } from './DebugLayer';
2
+ import type { DebugLayerViewMode } from './DebugLayer';
3
+ import type { Time } from '@/core/Time';
4
+ import type { RenderBackend } from '@/rendering/RenderBackend';
5
+ import type { Application } from '@/core/Application';
6
+ /**
7
+ * Debug layer that shows a screen-space panel (top-right corner) listing all
8
+ * RenderNodes under the current pointer position, sorted by zIndex descending.
9
+ * Screen-space.
10
+ */
11
+ export declare class PointerStackLayer extends DebugLayer {
12
+ private _root;
13
+ private _bg;
14
+ private _lines;
15
+ constructor(app: Application);
16
+ /** Renders in screen-space so the panel stays fixed in the top-right corner. */
17
+ get viewMode(): DebugLayerViewMode;
18
+ /**
19
+ * Lazily initialize the panel on first call, reposition it to the
20
+ * top-right corner, and populate text lines with the current pointer
21
+ * stack (up to 10 entries, sorted by zIndex descending).
22
+ */
23
+ update(_delta: Time): void;
24
+ /** Submit the panel's {@link Container} subtree to the backend for drawing. */
25
+ render(backend: RenderBackend): void;
26
+ /** Destroy the panel's {@link Container} subtree and release all child references. */
27
+ destroy(): void;
28
+ private _build;
29
+ private _buildLines;
30
+ private _collectContaining;
31
+ }