@vpmedia/phaser 1.112.0 → 1.113.0

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 (295) hide show
  1. package/dist/index.js +1261 -1314
  2. package/dist/index.js.map +1 -1
  3. package/dist/phaser/core/animation.d.ts +14 -10
  4. package/dist/phaser/core/animation.d.ts.map +1 -1
  5. package/dist/phaser/core/animation_manager.d.ts +10 -8
  6. package/dist/phaser/core/animation_manager.d.ts.map +1 -1
  7. package/dist/phaser/core/animation_parser.d.ts +5 -4
  8. package/dist/phaser/core/animation_parser.d.ts.map +1 -1
  9. package/dist/phaser/core/array_set.d.ts.map +1 -1
  10. package/dist/phaser/core/cache.d.ts +4 -3
  11. package/dist/phaser/core/cache.d.ts.map +1 -1
  12. package/dist/phaser/core/const.d.ts.map +1 -1
  13. package/dist/phaser/core/device.d.ts.map +1 -1
  14. package/dist/phaser/core/device_util.d.ts.map +1 -1
  15. package/dist/phaser/core/dom.d.ts +3 -2
  16. package/dist/phaser/core/dom.d.ts.map +1 -1
  17. package/dist/phaser/core/event_manager.d.ts.map +1 -1
  18. package/dist/phaser/core/factory.d.ts +1 -1
  19. package/dist/phaser/core/factory.d.ts.map +1 -1
  20. package/dist/phaser/core/frame.d.ts.map +1 -1
  21. package/dist/phaser/core/frame_data.d.ts.map +1 -1
  22. package/dist/phaser/core/game.d.ts.map +1 -1
  23. package/dist/phaser/core/input.d.ts +8 -6
  24. package/dist/phaser/core/input.d.ts.map +1 -1
  25. package/dist/phaser/core/input_handler.d.ts +40 -30
  26. package/dist/phaser/core/input_handler.d.ts.map +1 -1
  27. package/dist/phaser/core/input_mouse.d.ts +3 -2
  28. package/dist/phaser/core/input_mouse.d.ts.map +1 -1
  29. package/dist/phaser/core/input_mspointer.d.ts +3 -2
  30. package/dist/phaser/core/input_mspointer.d.ts.map +1 -1
  31. package/dist/phaser/core/input_pointer.d.ts +6 -4
  32. package/dist/phaser/core/input_pointer.d.ts.map +1 -1
  33. package/dist/phaser/core/input_touch.d.ts +3 -2
  34. package/dist/phaser/core/input_touch.d.ts.map +1 -1
  35. package/dist/phaser/core/loader.d.ts +4 -3
  36. package/dist/phaser/core/loader.d.ts.map +1 -1
  37. package/dist/phaser/core/loader_parser.d.ts +9 -8
  38. package/dist/phaser/core/loader_parser.d.ts.map +1 -1
  39. package/dist/phaser/core/raf.d.ts +3 -2
  40. package/dist/phaser/core/raf.d.ts.map +1 -1
  41. package/dist/phaser/core/registry.d.ts +7 -0
  42. package/dist/phaser/core/registry.d.ts.map +1 -0
  43. package/dist/phaser/core/scale_manager.d.ts +1 -1
  44. package/dist/phaser/core/scale_manager.d.ts.map +1 -1
  45. package/dist/phaser/core/scene.d.ts +0 -1
  46. package/dist/phaser/core/scene.d.ts.map +1 -1
  47. package/dist/phaser/core/scene_manager.d.ts +1 -1
  48. package/dist/phaser/core/scene_manager.d.ts.map +1 -1
  49. package/dist/phaser/core/signal.d.ts +0 -1
  50. package/dist/phaser/core/signal.d.ts.map +1 -1
  51. package/dist/phaser/core/signal_binding.d.ts +4 -3
  52. package/dist/phaser/core/signal_binding.d.ts.map +1 -1
  53. package/dist/phaser/core/sound.d.ts +6 -4
  54. package/dist/phaser/core/sound.d.ts.map +1 -1
  55. package/dist/phaser/core/sound_manager.d.ts +3 -2
  56. package/dist/phaser/core/sound_manager.d.ts.map +1 -1
  57. package/dist/phaser/core/sound_sprite.d.ts +5 -4
  58. package/dist/phaser/core/sound_sprite.d.ts.map +1 -1
  59. package/dist/phaser/core/stage.d.ts +3 -2
  60. package/dist/phaser/core/stage.d.ts.map +1 -1
  61. package/dist/phaser/core/time.d.ts +1 -1
  62. package/dist/phaser/core/time.d.ts.map +1 -1
  63. package/dist/phaser/core/timer.d.ts +1 -1
  64. package/dist/phaser/core/timer.d.ts.map +1 -1
  65. package/dist/phaser/core/timer_event.d.ts.map +1 -1
  66. package/dist/phaser/core/tween.d.ts +10 -7
  67. package/dist/phaser/core/tween.d.ts.map +1 -1
  68. package/dist/phaser/core/tween_data.d.ts +3 -2
  69. package/dist/phaser/core/tween_data.d.ts.map +1 -1
  70. package/dist/phaser/core/tween_easing.d.ts.map +1 -1
  71. package/dist/phaser/core/tween_manager.d.ts +3 -2
  72. package/dist/phaser/core/tween_manager.d.ts.map +1 -1
  73. package/dist/phaser/core/world.d.ts +3 -2
  74. package/dist/phaser/core/world.d.ts.map +1 -1
  75. package/dist/phaser/display/bitmap_text.d.ts +3 -2
  76. package/dist/phaser/display/bitmap_text.d.ts.map +1 -1
  77. package/dist/phaser/display/button.d.ts +3 -2
  78. package/dist/phaser/display/button.d.ts.map +1 -1
  79. package/dist/phaser/display/canvas/buffer.d.ts.map +1 -1
  80. package/dist/phaser/display/canvas/graphics.d.ts +7 -6
  81. package/dist/phaser/display/canvas/graphics.d.ts.map +1 -1
  82. package/dist/phaser/display/canvas/pool.d.ts +2 -2
  83. package/dist/phaser/display/canvas/pool.d.ts.map +1 -1
  84. package/dist/phaser/display/canvas/renderer.d.ts +10 -8
  85. package/dist/phaser/display/canvas/renderer.d.ts.map +1 -1
  86. package/dist/phaser/display/canvas/tinter.d.ts +3 -2
  87. package/dist/phaser/display/canvas/tinter.d.ts.map +1 -1
  88. package/dist/phaser/display/canvas/util.d.ts +2 -2
  89. package/dist/phaser/display/canvas/util.d.ts.map +1 -1
  90. package/dist/phaser/display/display_object.d.ts +14 -12
  91. package/dist/phaser/display/display_object.d.ts.map +1 -1
  92. package/dist/phaser/display/graphics.d.ts +8 -5
  93. package/dist/phaser/display/graphics.d.ts.map +1 -1
  94. package/dist/phaser/display/graphics_data.d.ts.map +1 -1
  95. package/dist/phaser/display/graphics_data_util.d.ts.map +1 -1
  96. package/dist/phaser/display/group.d.ts +4 -3
  97. package/dist/phaser/display/group.d.ts.map +1 -1
  98. package/dist/phaser/display/image.d.ts +13 -10
  99. package/dist/phaser/display/image.d.ts.map +1 -1
  100. package/dist/phaser/display/sprite_batch.d.ts +3 -2
  101. package/dist/phaser/display/sprite_batch.d.ts.map +1 -1
  102. package/dist/phaser/display/sprite_util.d.ts +18 -15
  103. package/dist/phaser/display/sprite_util.d.ts.map +1 -1
  104. package/dist/phaser/display/text.d.ts +11 -9
  105. package/dist/phaser/display/text.d.ts.map +1 -1
  106. package/dist/phaser/display/webgl/abstract_filter.d.ts.map +1 -1
  107. package/dist/phaser/display/webgl/base_texture.d.ts.map +1 -1
  108. package/dist/phaser/display/webgl/blend_manager.d.ts +0 -1
  109. package/dist/phaser/display/webgl/blend_manager.d.ts.map +1 -1
  110. package/dist/phaser/display/webgl/earcut.d.ts +1 -1
  111. package/dist/phaser/display/webgl/earcut.d.ts.map +1 -1
  112. package/dist/phaser/display/webgl/earcut_node.d.ts.map +1 -1
  113. package/dist/phaser/display/webgl/fast_sprite_batch.d.ts +4 -3
  114. package/dist/phaser/display/webgl/fast_sprite_batch.d.ts.map +1 -1
  115. package/dist/phaser/display/webgl/filter_manager.d.ts +2 -1
  116. package/dist/phaser/display/webgl/filter_manager.d.ts.map +1 -1
  117. package/dist/phaser/display/webgl/filter_texture.d.ts +2 -1
  118. package/dist/phaser/display/webgl/filter_texture.d.ts.map +1 -1
  119. package/dist/phaser/display/webgl/graphics.d.ts +7 -6
  120. package/dist/phaser/display/webgl/graphics.d.ts.map +1 -1
  121. package/dist/phaser/display/webgl/graphics_data.d.ts +2 -1
  122. package/dist/phaser/display/webgl/graphics_data.d.ts.map +1 -1
  123. package/dist/phaser/display/webgl/render_texture.d.ts +4 -2
  124. package/dist/phaser/display/webgl/render_texture.d.ts.map +1 -1
  125. package/dist/phaser/display/webgl/renderer.d.ts +16 -11
  126. package/dist/phaser/display/webgl/renderer.d.ts.map +1 -1
  127. package/dist/phaser/display/webgl/shader/complex.d.ts +16 -6
  128. package/dist/phaser/display/webgl/shader/complex.d.ts.map +1 -1
  129. package/dist/phaser/display/webgl/shader/fast.d.ts +19 -7
  130. package/dist/phaser/display/webgl/shader/fast.d.ts.map +1 -1
  131. package/dist/phaser/display/webgl/shader/normal.d.ts +33 -12
  132. package/dist/phaser/display/webgl/shader/normal.d.ts.map +1 -1
  133. package/dist/phaser/display/webgl/shader/primitive.d.ts +15 -6
  134. package/dist/phaser/display/webgl/shader/primitive.d.ts.map +1 -1
  135. package/dist/phaser/display/webgl/shader/strip.d.ts +15 -6
  136. package/dist/phaser/display/webgl/shader/strip.d.ts.map +1 -1
  137. package/dist/phaser/display/webgl/shader_manager.d.ts +16 -11
  138. package/dist/phaser/display/webgl/shader_manager.d.ts.map +1 -1
  139. package/dist/phaser/display/webgl/sprite_batch.d.ts +29 -20
  140. package/dist/phaser/display/webgl/sprite_batch.d.ts.map +1 -1
  141. package/dist/phaser/display/webgl/stencil_manager.d.ts +12 -10
  142. package/dist/phaser/display/webgl/stencil_manager.d.ts.map +1 -1
  143. package/dist/phaser/display/webgl/texture.d.ts +3 -2
  144. package/dist/phaser/display/webgl/texture.d.ts.map +1 -1
  145. package/dist/phaser/display/webgl/texture_util.d.ts.map +1 -1
  146. package/dist/phaser/display/webgl/util.d.ts.map +1 -1
  147. package/dist/phaser/geom/circle.d.ts +4 -1
  148. package/dist/phaser/geom/circle.d.ts.map +1 -1
  149. package/dist/phaser/geom/ellipse.d.ts.map +1 -1
  150. package/dist/phaser/geom/line.d.ts +1 -1
  151. package/dist/phaser/geom/line.d.ts.map +1 -1
  152. package/dist/phaser/geom/matrix.d.ts.map +1 -1
  153. package/dist/phaser/geom/point.d.ts.map +1 -1
  154. package/dist/phaser/geom/polygon.d.ts.map +1 -1
  155. package/dist/phaser/geom/rectangle.d.ts.map +1 -1
  156. package/dist/phaser/geom/rounded_rectangle.d.ts.map +1 -1
  157. package/dist/phaser/geom/util/circle.d.ts.map +1 -1
  158. package/dist/phaser/geom/util/ellipse.d.ts +3 -2
  159. package/dist/phaser/geom/util/ellipse.d.ts.map +1 -1
  160. package/dist/phaser/geom/util/line.d.ts.map +1 -1
  161. package/dist/phaser/geom/util/matrix.d.ts +2 -2
  162. package/dist/phaser/geom/util/matrix.d.ts.map +1 -1
  163. package/dist/phaser/geom/util/point.d.ts.map +1 -1
  164. package/dist/phaser/geom/util/rectangle.d.ts +1 -1
  165. package/dist/phaser/geom/util/rectangle.d.ts.map +1 -1
  166. package/dist/phaser/util/math.d.ts.map +1 -1
  167. package/package.json +5 -5
  168. package/src/phaser/core/animation.ts +64 -60
  169. package/src/phaser/core/animation_manager.ts +50 -53
  170. package/src/phaser/core/animation_parser.ts +9 -9
  171. package/src/phaser/core/array_set.ts +16 -17
  172. package/src/phaser/core/cache.ts +92 -93
  173. package/src/phaser/core/const.ts +1 -1
  174. package/src/phaser/core/device.ts +24 -29
  175. package/src/phaser/core/device_util.ts +22 -26
  176. package/src/phaser/core/dom.ts +54 -65
  177. package/src/phaser/core/event_manager.ts +64 -94
  178. package/src/phaser/core/factory.ts +14 -14
  179. package/src/phaser/core/frame.ts +28 -28
  180. package/src/phaser/core/frame_data.test.ts +100 -0
  181. package/src/phaser/core/frame_data.ts +24 -24
  182. package/src/phaser/core/frame_util.ts +2 -2
  183. package/src/phaser/core/game.ts +47 -48
  184. package/src/phaser/core/input.ts +104 -110
  185. package/src/phaser/core/input_handler.test.ts +113 -0
  186. package/src/phaser/core/input_handler.ts +199 -218
  187. package/src/phaser/core/input_mouse.ts +71 -54
  188. package/src/phaser/core/input_mspointer.ts +52 -39
  189. package/src/phaser/core/input_pointer.ts +81 -80
  190. package/src/phaser/core/input_touch.ts +49 -36
  191. package/src/phaser/core/loader.ts +173 -152
  192. package/src/phaser/core/loader_parser.ts +39 -57
  193. package/src/phaser/core/raf.ts +8 -7
  194. package/src/phaser/core/registry.test.ts +31 -0
  195. package/src/phaser/core/registry.ts +9 -0
  196. package/src/phaser/core/scale_manager.ts +156 -152
  197. package/src/phaser/core/scene.ts +9 -13
  198. package/src/phaser/core/scene_manager.ts +47 -47
  199. package/src/phaser/core/signal.test.ts +4 -4
  200. package/src/phaser/core/signal.ts +41 -52
  201. package/src/phaser/core/signal_binding.ts +26 -25
  202. package/src/phaser/core/signal_dispatch.test.ts +180 -0
  203. package/src/phaser/core/sound.ts +75 -83
  204. package/src/phaser/core/sound_manager.ts +52 -51
  205. package/src/phaser/core/sound_sprite.ts +17 -16
  206. package/src/phaser/core/stage.ts +25 -24
  207. package/src/phaser/core/time.ts +52 -52
  208. package/src/phaser/core/timer.test.ts +187 -0
  209. package/src/phaser/core/timer.ts +82 -69
  210. package/src/phaser/core/timer_event.ts +10 -10
  211. package/src/phaser/core/tween.ts +90 -93
  212. package/src/phaser/core/tween_data.ts +45 -51
  213. package/src/phaser/core/tween_easing.test.ts +106 -0
  214. package/src/phaser/core/tween_easing.ts +151 -123
  215. package/src/phaser/core/tween_manager.ts +19 -18
  216. package/src/phaser/core/world.ts +4 -3
  217. package/src/phaser/display/bitmap_text.ts +56 -64
  218. package/src/phaser/display/button.ts +33 -32
  219. package/src/phaser/display/canvas/buffer.ts +8 -8
  220. package/src/phaser/display/canvas/graphics.ts +36 -37
  221. package/src/phaser/display/canvas/masker.ts +2 -2
  222. package/src/phaser/display/canvas/pool.test.ts +106 -0
  223. package/src/phaser/display/canvas/pool.ts +25 -27
  224. package/src/phaser/display/canvas/renderer.ts +32 -31
  225. package/src/phaser/display/canvas/tinter.ts +25 -25
  226. package/src/phaser/display/canvas/util.ts +7 -10
  227. package/src/phaser/display/display_object.ts +114 -118
  228. package/src/phaser/display/graphics.ts +121 -119
  229. package/src/phaser/display/graphics_data.ts +12 -12
  230. package/src/phaser/display/graphics_data_util.ts +2 -3
  231. package/src/phaser/display/group.ts +50 -57
  232. package/src/phaser/display/image.ts +55 -52
  233. package/src/phaser/display/sprite_batch.ts +3 -2
  234. package/src/phaser/display/sprite_util.ts +48 -54
  235. package/src/phaser/display/text.ts +199 -204
  236. package/src/phaser/display/webgl/abstract_filter.ts +9 -9
  237. package/src/phaser/display/webgl/base_texture.ts +21 -24
  238. package/src/phaser/display/webgl/blend_manager.ts +6 -10
  239. package/src/phaser/display/webgl/earcut.ts +73 -37
  240. package/src/phaser/display/webgl/earcut_node.ts +10 -10
  241. package/src/phaser/display/webgl/fast_sprite_batch.ts +34 -34
  242. package/src/phaser/display/webgl/filter_manager.ts +13 -12
  243. package/src/phaser/display/webgl/filter_texture.ts +14 -13
  244. package/src/phaser/display/webgl/graphics.ts +51 -57
  245. package/src/phaser/display/webgl/graphics_data.ts +15 -14
  246. package/src/phaser/display/webgl/mask_manager.ts +2 -2
  247. package/src/phaser/display/webgl/render_texture.ts +26 -25
  248. package/src/phaser/display/webgl/renderer.ts +57 -62
  249. package/src/phaser/display/webgl/shader/complex.ts +28 -12
  250. package/src/phaser/display/webgl/shader/fast.ts +30 -12
  251. package/src/phaser/display/webgl/shader/normal.ts +70 -57
  252. package/src/phaser/display/webgl/shader/primitive.ts +26 -11
  253. package/src/phaser/display/webgl/shader/shader.test.ts +148 -0
  254. package/src/phaser/display/webgl/shader/strip.ts +27 -12
  255. package/src/phaser/display/webgl/shader_manager.test.ts +124 -0
  256. package/src/phaser/display/webgl/shader_manager.ts +26 -34
  257. package/src/phaser/display/webgl/sprite_batch.ts +67 -61
  258. package/src/phaser/display/webgl/stencil_manager.ts +23 -34
  259. package/src/phaser/display/webgl/texture.ts +43 -50
  260. package/src/phaser/display/webgl/texture_util.ts +2 -3
  261. package/src/phaser/display/webgl/util.ts +26 -25
  262. package/src/phaser/geom/circle.test.ts +2 -3
  263. package/src/phaser/geom/circle.ts +36 -36
  264. package/src/phaser/geom/ellipse.test.ts +73 -71
  265. package/src/phaser/geom/ellipse.ts +14 -14
  266. package/src/phaser/geom/line.test.ts +5 -5
  267. package/src/phaser/geom/line.ts +35 -35
  268. package/src/phaser/geom/matrix.test.ts +1 -1
  269. package/src/phaser/geom/matrix.ts +27 -27
  270. package/src/phaser/geom/point.test.ts +1 -2
  271. package/src/phaser/geom/point.ts +35 -35
  272. package/src/phaser/geom/polygon.test.ts +82 -0
  273. package/src/phaser/geom/polygon.ts +16 -16
  274. package/src/phaser/geom/rectangle.test.ts +14 -14
  275. package/src/phaser/geom/rectangle.ts +83 -75
  276. package/src/phaser/geom/rounded_rectangle.test.ts +1 -7
  277. package/src/phaser/geom/rounded_rectangle.ts +9 -9
  278. package/src/phaser/geom/util/circle.test.ts +25 -23
  279. package/src/phaser/geom/util/circle.ts +9 -18
  280. package/src/phaser/geom/util/ellipse.test.ts +7 -5
  281. package/src/phaser/geom/util/ellipse.ts +3 -2
  282. package/src/phaser/geom/util/line.test.ts +10 -8
  283. package/src/phaser/geom/util/line.ts +6 -16
  284. package/src/phaser/geom/util/matrix.test.ts +20 -18
  285. package/src/phaser/geom/util/matrix.ts +8 -15
  286. package/src/phaser/geom/util/point.test.ts +8 -6
  287. package/src/phaser/geom/util/point.ts +24 -28
  288. package/src/phaser/geom/util/polygon.test.ts +12 -10
  289. package/src/phaser/geom/util/polygon.ts +2 -2
  290. package/src/phaser/geom/util/rectangle.test.ts +10 -8
  291. package/src/phaser/geom/util/rectangle.ts +18 -37
  292. package/src/phaser/geom/util/rounded_rectangle.test.ts +11 -9
  293. package/src/phaser/geom/util/rounded_rectangle.ts +1 -1
  294. package/src/phaser/util/math.test.ts +11 -11
  295. package/src/phaser/util/math.ts +29 -46
@@ -1,5 +1,6 @@
1
1
  import { Point } from '../point.js';
2
2
  import { Rectangle } from '../rectangle.js';
3
+ import { getRegistry } from '../../core/registry.js';
3
4
 
4
5
  /**
5
6
  * Inflates the rectangle by the specified amounts on each axis.
@@ -22,9 +23,7 @@ export const inflate = (a: Rectangle, dx: number, dy: number) => {
22
23
  * @param {object} point - The point containing x and y values to inflate the rectangle by.
23
24
  * @returns {Rectangle} The inflated rectangle.
24
25
  */
25
- export const inflatePoint = (a: Rectangle, point: any) => {
26
- return inflate(a, point.x, point.y);
27
- };
26
+ export const inflatePoint = (a: Rectangle, point: any) => inflate(a, point.x, point.y);
28
27
 
29
28
  /**
30
29
  * Gets the size of the rectangle as a point.
@@ -33,7 +32,7 @@ export const inflatePoint = (a: Rectangle, point: any) => {
33
32
  * @returns {Point} The size of the rectangle as a point (width, height).
34
33
  */
35
34
  export const size = (a: Rectangle, output: Point | null = null) => {
36
- const result = output || new Point();
35
+ const result = output ?? new Point();
37
36
  result.setTo(a.width, a.height);
38
37
  return result;
39
38
  };
@@ -45,7 +44,7 @@ export const size = (a: Rectangle, output: Point | null = null) => {
45
44
  * @returns {Rectangle} The cloned rectangle.
46
45
  */
47
46
  export const clone = (input: Rectangle, output: Rectangle | null = null) => {
48
- const result = output || new Rectangle();
47
+ const result = output ?? new Rectangle();
49
48
  result.setTo(input.x, input.y, input.width, input.height);
50
49
  return result;
51
50
  };
@@ -74,9 +73,8 @@ export const contains = (a: Rectangle, x: number, y: number) => {
74
73
  * @param {number} y - The y coordinate of the point.
75
74
  * @returns {boolean} True if the point is contained within the rectangle, false otherwise.
76
75
  */
77
- export const containsRaw = (rx: number, ry: number, rw: number, rh: number, x: number, y: number) => {
78
- return x >= rx && x < rx + rw && y >= ry && y < ry + rh;
79
- };
76
+ export const containsRaw = (rx: number, ry: number, rw: number, rh: number, x: number, y: number) =>
77
+ x >= rx && x < rx + rw && y >= ry && y < ry + rh;
80
78
 
81
79
  /**
82
80
  * Checks if a point is contained within the rectangle.
@@ -84,9 +82,7 @@ export const containsRaw = (rx: number, ry: number, rw: number, rh: number, x: n
84
82
  * @param {Point} point - The point to check.
85
83
  * @returns {boolean} True if the point is contained within the rectangle, false otherwise.
86
84
  */
87
- export const containsPoint = (a: Rectangle, point: Point) => {
88
- return contains(a, point.x, point.y);
89
- };
85
+ export const containsPoint = (a: Rectangle, point: Point) => contains(a, point.x, point.y);
90
86
 
91
87
  /**
92
88
  * Checks if rectangle a contains rectangle b.
@@ -107,9 +103,8 @@ export const containsRect = (a: Rectangle, b: Rectangle) => {
107
103
  * @param {Rectangle} b - The second rectangle to compare.
108
104
  * @returns {boolean} True if the rectangles are equal, false otherwise.
109
105
  */
110
- export const equals = (a: Rectangle, b: Rectangle) => {
111
- return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;
112
- };
106
+ export const equals = (a: Rectangle, b: Rectangle) =>
107
+ a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;
113
108
 
114
109
  /**
115
110
  * Checks if two rectangles have the same dimensions.
@@ -117,9 +112,7 @@ export const equals = (a: Rectangle, b: Rectangle) => {
117
112
  * @param {Rectangle} b - The second rectangle to compare.
118
113
  * @returns {boolean} True if the rectangles have the same dimensions, false otherwise.
119
114
  */
120
- export const sameDimensions = (a: Rectangle, b: Rectangle) => {
121
- return a.width === b.width && a.height === b.height;
122
- };
115
+ export const sameDimensions = (a: Rectangle, b: Rectangle) => a.width === b.width && a.height === b.height;
123
116
 
124
117
  /**
125
118
  * Checks if two rectangles intersect.
@@ -142,7 +135,7 @@ export const intersects = (a: Rectangle, b: Rectangle) => {
142
135
  * @returns {Rectangle} The intersection of the rectangles, or an empty rectangle if they don't intersect.
143
136
  */
144
137
  export const intersection = (a: Rectangle, b: Rectangle, output: Rectangle | null = null) => {
145
- const result = output || new Rectangle();
138
+ const result = output ?? new Rectangle();
146
139
  if (intersects(a, b)) {
147
140
  result.x = Math.max(a.x, b.x);
148
141
  result.y = Math.max(a.y, b.y);
@@ -162,21 +155,13 @@ export const intersection = (a: Rectangle, b: Rectangle, output: Rectangle | nul
162
155
  * @param {number} tolerance - Optional tolerance value for intersection.
163
156
  * @returns {boolean} True if the rectangle intersects with the area, false otherwise.
164
157
  */
165
- export const intersectsRaw = (
166
- a: Rectangle,
167
- left: number,
168
- right: number,
169
- top: number,
170
- bottom: number,
171
- tolerance: number = 0
172
- ) => {
173
- return !(
158
+ export const intersectsRaw = (a: Rectangle, left: number, right: number, top: number, bottom: number, tolerance = 0) =>
159
+ !(
174
160
  left > a.right + tolerance ||
175
161
  right < a.left - tolerance ||
176
162
  top > a.bottom + tolerance ||
177
163
  bottom < a.top - tolerance
178
164
  );
179
- };
180
165
 
181
166
  /**
182
167
  * Gets the union of two rectangles.
@@ -186,7 +171,7 @@ export const intersectsRaw = (
186
171
  * @returns {Rectangle} The union of the rectangles.
187
172
  */
188
173
  export const union = (a: Rectangle, b: Rectangle, output: Rectangle | null = null) => {
189
- const result = output || new Rectangle();
174
+ const result = output ?? new Rectangle();
190
175
  return result.setTo(
191
176
  Math.min(a.x, b.x),
192
177
  Math.min(a.y, b.y),
@@ -202,7 +187,7 @@ export const union = (a: Rectangle, b: Rectangle, output: Rectangle | null = nul
202
187
  * @returns {Rectangle} The AABB of the points.
203
188
  */
204
189
  export const aabb = (points: Point[], output: Rectangle | null = null) => {
205
- const result = output || new Rectangle();
190
+ const result = output ?? new Rectangle();
206
191
  let xMax = Number.NEGATIVE_INFINITY;
207
192
  let xMin = Number.POSITIVE_INFINITY;
208
193
  let yMax = Number.NEGATIVE_INFINITY;
@@ -230,11 +215,7 @@ export const aabb = (points: Point[], output: Rectangle | null = null) => {
230
215
  * @returns {Rectangle} An empty rectangle.
231
216
  */
232
217
  export const getEmptyRectangle = () => {
233
- if (!window.PhaserRegistry) {
234
- window.PhaserRegistry = {};
235
- }
236
- if (!window.PhaserRegistry.EMPTY_RECTANGLE) {
237
- window.PhaserRegistry.EMPTY_RECTANGLE = new Rectangle();
238
- }
239
- return window.PhaserRegistry.EMPTY_RECTANGLE;
218
+ getRegistry();
219
+ globalThis.PhaserRegistry.EMPTY_RECTANGLE ??= new Rectangle();
220
+ return globalThis.PhaserRegistry.EMPTY_RECTANGLE;
240
221
  };
@@ -1,13 +1,15 @@
1
- import { expect } from 'vitest';
1
+ import { describe, expect, it } from 'vitest';
2
2
  import { RoundedRectangle } from '../rounded_rectangle.js';
3
3
  import { clone } from './rounded_rectangle.js';
4
4
 
5
- it('should clone a rounded rectangle', () => {
6
- const rectangle1 = new RoundedRectangle(0, 0, 10, 10, 2);
7
- const rectangle2 = clone(rectangle1);
8
- expect(rectangle1.x).toBe(rectangle2.x);
9
- expect(rectangle1.y).toBe(rectangle2.y);
10
- expect(rectangle1.width).toBe(rectangle2.width);
11
- expect(rectangle1.height).toBe(rectangle2.height);
12
- expect(rectangle1.radius).toBe(rectangle2.radius);
5
+ describe('rounded rectangle utils', () => {
6
+ it('should clone a rounded rectangle', () => {
7
+ const rectangle1 = new RoundedRectangle(0, 0, 10, 10, 2);
8
+ const rectangle2 = clone(rectangle1);
9
+ expect(rectangle1.x).toBe(rectangle2.x);
10
+ expect(rectangle1.y).toBe(rectangle2.y);
11
+ expect(rectangle1.width).toBe(rectangle2.width);
12
+ expect(rectangle1.height).toBe(rectangle2.height);
13
+ expect(rectangle1.radius).toBe(rectangle2.radius);
14
+ });
13
15
  });
@@ -7,7 +7,7 @@ import { RoundedRectangle } from '../rounded_rectangle.js';
7
7
  * @returns {RoundedRectangle} The cloned rounded rectangle.
8
8
  */
9
9
  export const clone = (input: RoundedRectangle, output: RoundedRectangle | null = null) => {
10
- const result = output || new RoundedRectangle();
10
+ const result = output ?? new RoundedRectangle();
11
11
  result.x = input.x;
12
12
  result.y = input.y;
13
13
  result.width = input.width;
@@ -1,4 +1,4 @@
1
- import { expect } from 'vitest';
1
+ import { expect, describe, it } from 'vitest';
2
2
  import {
3
3
  between,
4
4
  DEG_TO_RAD,
@@ -80,8 +80,8 @@ describe('between', () => {
80
80
  const min = 1;
81
81
  const max = 100;
82
82
  const result = between(min, max);
83
- expect(result >= min).toBe(true);
84
- expect(result <= max).toBe(true);
83
+ expect(result).toBeGreaterThanOrEqual(min);
84
+ expect(result).toBeLessThanOrEqual(max);
85
85
  });
86
86
  });
87
87
 
@@ -100,16 +100,16 @@ describe('wrap', () => {
100
100
  const min = 0;
101
101
  const max = 100;
102
102
  const result = wrap(150, min, max);
103
- expect(result >= min).toBe(true);
104
- expect(result <= max).toBe(true);
103
+ expect(result).toBeGreaterThanOrEqual(min);
104
+ expect(result).toBeLessThanOrEqual(max);
105
105
  });
106
106
 
107
107
  it('returns the correct wrapped value for an invalid input', () => {
108
108
  const min = -1;
109
109
  const max = 10;
110
110
  const result = wrap(-20, min, max);
111
- expect(result >= min).toBe(true);
112
- expect(result <= max).toBe(true);
111
+ expect(result).toBeGreaterThanOrEqual(min);
112
+ expect(result).toBeLessThanOrEqual(max);
113
113
  });
114
114
  });
115
115
 
@@ -118,14 +118,14 @@ describe('linear', () => {
118
118
  const p0 = 1;
119
119
  const p1 = 2;
120
120
  const t = 0.5;
121
- expect(linear(p0, p1, t)).toEqual(1.5);
121
+ expect(linear(p0, p1, t)).toStrictEqual(1.5);
122
122
  });
123
123
 
124
124
  it('returns the correct interpolated value for an invalid input', () => {
125
125
  const p0 = 1;
126
126
  const p1 = 2;
127
127
  const t = 2;
128
- expect(linear(p0, p1, t)).toEqual(3);
128
+ expect(linear(p0, p1, t)).toBe(3);
129
129
  });
130
130
  });
131
131
 
@@ -143,13 +143,13 @@ describe('linearInterpolation', () => {
143
143
  it('returns the correct interpolated value for a valid input', () => {
144
144
  const v = [1, 2, 3];
145
145
  const k = 0.5;
146
- expect(linearInterpolation(v, k)).toEqual(2);
146
+ expect(linearInterpolation(v, k)).toBe(2);
147
147
  });
148
148
 
149
149
  it('returns the correct interpolated value for an invalid input', () => {
150
150
  const v = [-10, -20, -30];
151
151
  const k = -1;
152
- expect(linearInterpolation(v, k)).toEqual(10);
152
+ expect(linearInterpolation(v, k)).toBe(10);
153
153
  });
154
154
  });
155
155
 
@@ -24,14 +24,14 @@ export interface ColorComponents {
24
24
  }
25
25
 
26
26
  /** Converts a hexadecimal color value to RGB components. */
27
- export const hex2rgb = (hex: number): [number, number, number] => {
28
- return [((hex >> 16) & 0xff) / 255, ((hex >> 8) & 0xff) / 255, (hex & 0xff) / 255];
29
- };
27
+ export const hex2rgb = (hex: number): [number, number, number] => [
28
+ ((hex >> 16) & 0xff) / 255,
29
+ ((hex >> 8) & 0xff) / 255,
30
+ (hex & 0xff) / 255,
31
+ ];
30
32
 
31
33
  /** Converts RGB components to a hexadecimal color value. */
32
- export const rgb2hex = (rgb: number[]): number => {
33
- return ((rgb[0] * 255) << 16) + ((rgb[1] * 255) << 8) + rgb[2] * 255;
34
- };
34
+ export const rgb2hex = (rgb: number[]): number => ((rgb[0]! * 255) << 16) + ((rgb[1]! * 255) << 8) + rgb[2]! * 255;
35
35
 
36
36
  /** Gets the next power of two greater than or equal to a value. */
37
37
  export const getNextPowerOfTwo = (value: number): number => {
@@ -46,27 +46,20 @@ export const getNextPowerOfTwo = (value: number): number => {
46
46
  };
47
47
 
48
48
  /** Checks if both width and height are powers of two. */
49
- export const isPowerOfTwo = (width: number, height: number): boolean => {
50
- return width > 0 && (width & (width - 1)) === 0 && height > 0 && (height & (height - 1)) === 0;
51
- };
49
+ export const isPowerOfTwo = (width: number, height: number): boolean =>
50
+ width > 0 && (width & (width - 1)) === 0 && height > 0 && (height & (height - 1)) === 0;
52
51
 
53
52
  /** Converts degrees to radians. */
54
- export const degToRad = (degrees: number): number => {
55
- return degrees * DEG_TO_RAD;
56
- };
53
+ export const degToRad = (degrees: number): number => degrees * DEG_TO_RAD;
57
54
 
58
55
  /** Converts radians to degrees. */
59
- export const radToDeg = (radians: number): number => {
60
- return radians * RAD_TO_DEG;
61
- };
56
+ export const radToDeg = (radians: number): number => radians * RAD_TO_DEG;
62
57
 
63
58
  /** Gets a random integer between min and max (inclusive). */
64
- export const between = (min: number, max: number): number => {
65
- return Math.floor(Math.random() * (max - min + 1) + min);
66
- };
59
+ export const between = (min: number, max: number): number => Math.floor(Math.random() * (max - min + 1) + min);
67
60
 
68
61
  /** Snaps a value to the nearest multiple of gap, starting from start. */
69
- export const snapToCeil = (input: number, gap: number = 0, start: number = 0): number => {
62
+ export const snapToCeil = (input: number, gap = 0, start = 0): number => {
70
63
  if (gap === 0) {
71
64
  return input;
72
65
  }
@@ -89,14 +82,10 @@ export const wrap = (value: number, min: number, max: number): number => {
89
82
  };
90
83
 
91
84
  /** Performs linear interpolation between two values. */
92
- export const linear = (p0: number, p1: number, t: number): number => {
93
- return (p1 - p0) * t + p0;
94
- };
85
+ export const linear = (p0: number, p1: number, t: number): number => (p1 - p0) * t + p0;
95
86
 
96
87
  /** Calculates the absolute difference between two numbers. */
97
- export const difference = (a: number, b: number): number => {
98
- return Math.abs(a - b);
99
- };
88
+ export const difference = (a: number, b: number): number => Math.abs(a - b);
100
89
 
101
90
  /** Performs linear interpolation on an array of values. */
102
91
  export const linearInterpolation = (v: number[], k: number): number => {
@@ -104,12 +93,12 @@ export const linearInterpolation = (v: number[], k: number): number => {
104
93
  const f = m * k;
105
94
  const i = Math.floor(f);
106
95
  if (k < 0) {
107
- return linear(v[0], v[1], f);
96
+ return linear(v[0]!, v[1]!, f);
108
97
  }
109
98
  if (k > 1) {
110
- return linear(v[m], v[m - 1], m - f);
99
+ return linear(v[m]!, v[m - 1]!, m - f);
111
100
  }
112
- return linear(v[i], v[i + 1 > m ? m : i + 1], f - i);
101
+ return linear(v[i]!, v[i + 1 > m ? m : i + 1]!, f - i);
113
102
  };
114
103
 
115
104
  /** Calculates the distance between two points. */
@@ -120,28 +109,22 @@ export const distance = (x1: number, y1: number, x2: number, y2: number): number
120
109
  };
121
110
 
122
111
  /** Checks if two numbers are within a tolerance of each other. */
123
- export const within = (a: number, b: number, tolerance: number): boolean => {
124
- return Math.abs(a - b) <= tolerance;
125
- };
112
+ export const within = (a: number, b: number, tolerance: number): boolean => Math.abs(a - b) <= tolerance;
126
113
 
127
114
  /** Creates a 32-bit color value from alpha, red, green, and blue components. */
128
- export const getColor32 = (a: number, r: number, g: number, b: number): number => {
129
- return (a << 24) | (r << 16) | (g << 8) | b;
130
- };
115
+ export const getColor32 = (a: number, r: number, g: number, b: number): number => (a << 24) | (r << 16) | (g << 8) | b;
131
116
 
132
117
  /** Creates a 24-bit color value from red, green, and blue components. */
133
- export const getColor = (r: number, g: number, b: number): number => {
134
- return (r << 16) | (g << 8) | b;
135
- };
118
+ export const getColor = (r: number, g: number, b: number): number => (r << 16) | (g << 8) | b;
136
119
 
137
120
  /** Converts a hex color string to RGB components. */
138
121
  export const hexToColor = (value: string, out: ColorTarget): void => {
139
122
  value = value.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i, (_m, r, g, b) => r + r + g + g + b + b);
140
123
  const result = /^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(value);
141
124
  if (result) {
142
- out.r = Number.parseInt(result[1], 16);
143
- out.g = Number.parseInt(result[2], 16);
144
- out.b = Number.parseInt(result[3], 16);
125
+ out.r = Number.parseInt(result[1]!, 16);
126
+ out.g = Number.parseInt(result[2]!, 16);
127
+ out.b = Number.parseInt(result[3]!, 16);
145
128
  }
146
129
  };
147
130
 
@@ -149,16 +132,16 @@ export const hexToColor = (value: string, out: ColorTarget): void => {
149
132
  export const webToColor = (value: string, out: ColorTarget): void => {
150
133
  const result = /^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(value);
151
134
  if (result) {
152
- out.r = Number.parseInt(result[1], 10);
153
- out.g = Number.parseInt(result[2], 10);
154
- out.b = Number.parseInt(result[3], 10);
155
- out.a = result[4] !== undefined ? Number.parseFloat(result[4]) : 1;
135
+ out.r = Math.trunc(Number(result[1]));
136
+ out.g = Math.trunc(Number(result[2]));
137
+ out.b = Math.trunc(Number(result[3]));
138
+ out.a = result[4] !== undefined ? Number(result[4]) : 1;
156
139
  }
157
140
  };
158
141
 
159
142
  /** Extracts RGB components from a 32-bit color value. */
160
143
  export const getRGB = (color: number): ColorComponents => {
161
- if (color > 16777215) {
144
+ if (color > 16_777_215) {
162
145
  return {
163
146
  alpha: color >>> 24,
164
147
  red: (color >> 16) & 0xff,
@@ -185,7 +168,7 @@ export const getRGB = (color: number): ColorComponents => {
185
168
  /** Converts a color value (string or number) to an object with various color formats. */
186
169
  export const valueToColor = (value: string | number, out: ColorTarget): ColorTarget => {
187
170
  if (typeof value === 'string') {
188
- if (value.indexOf('rgb') === 0) {
171
+ if (value.startsWith('rgb')) {
189
172
  webToColor(value, out);
190
173
  } else {
191
174
  out.a = 1;