@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.
- package/dist/index.js +1261 -1314
- package/dist/index.js.map +1 -1
- package/dist/phaser/core/animation.d.ts +14 -10
- package/dist/phaser/core/animation.d.ts.map +1 -1
- package/dist/phaser/core/animation_manager.d.ts +10 -8
- package/dist/phaser/core/animation_manager.d.ts.map +1 -1
- package/dist/phaser/core/animation_parser.d.ts +5 -4
- package/dist/phaser/core/animation_parser.d.ts.map +1 -1
- package/dist/phaser/core/array_set.d.ts.map +1 -1
- package/dist/phaser/core/cache.d.ts +4 -3
- package/dist/phaser/core/cache.d.ts.map +1 -1
- package/dist/phaser/core/const.d.ts.map +1 -1
- package/dist/phaser/core/device.d.ts.map +1 -1
- package/dist/phaser/core/device_util.d.ts.map +1 -1
- package/dist/phaser/core/dom.d.ts +3 -2
- package/dist/phaser/core/dom.d.ts.map +1 -1
- package/dist/phaser/core/event_manager.d.ts.map +1 -1
- package/dist/phaser/core/factory.d.ts +1 -1
- package/dist/phaser/core/factory.d.ts.map +1 -1
- package/dist/phaser/core/frame.d.ts.map +1 -1
- package/dist/phaser/core/frame_data.d.ts.map +1 -1
- package/dist/phaser/core/game.d.ts.map +1 -1
- package/dist/phaser/core/input.d.ts +8 -6
- package/dist/phaser/core/input.d.ts.map +1 -1
- package/dist/phaser/core/input_handler.d.ts +40 -30
- package/dist/phaser/core/input_handler.d.ts.map +1 -1
- package/dist/phaser/core/input_mouse.d.ts +3 -2
- package/dist/phaser/core/input_mouse.d.ts.map +1 -1
- package/dist/phaser/core/input_mspointer.d.ts +3 -2
- package/dist/phaser/core/input_mspointer.d.ts.map +1 -1
- package/dist/phaser/core/input_pointer.d.ts +6 -4
- package/dist/phaser/core/input_pointer.d.ts.map +1 -1
- package/dist/phaser/core/input_touch.d.ts +3 -2
- package/dist/phaser/core/input_touch.d.ts.map +1 -1
- package/dist/phaser/core/loader.d.ts +4 -3
- package/dist/phaser/core/loader.d.ts.map +1 -1
- package/dist/phaser/core/loader_parser.d.ts +9 -8
- package/dist/phaser/core/loader_parser.d.ts.map +1 -1
- package/dist/phaser/core/raf.d.ts +3 -2
- package/dist/phaser/core/raf.d.ts.map +1 -1
- package/dist/phaser/core/registry.d.ts +7 -0
- package/dist/phaser/core/registry.d.ts.map +1 -0
- package/dist/phaser/core/scale_manager.d.ts +1 -1
- package/dist/phaser/core/scale_manager.d.ts.map +1 -1
- package/dist/phaser/core/scene.d.ts +0 -1
- package/dist/phaser/core/scene.d.ts.map +1 -1
- package/dist/phaser/core/scene_manager.d.ts +1 -1
- package/dist/phaser/core/scene_manager.d.ts.map +1 -1
- package/dist/phaser/core/signal.d.ts +0 -1
- package/dist/phaser/core/signal.d.ts.map +1 -1
- package/dist/phaser/core/signal_binding.d.ts +4 -3
- package/dist/phaser/core/signal_binding.d.ts.map +1 -1
- package/dist/phaser/core/sound.d.ts +6 -4
- package/dist/phaser/core/sound.d.ts.map +1 -1
- package/dist/phaser/core/sound_manager.d.ts +3 -2
- package/dist/phaser/core/sound_manager.d.ts.map +1 -1
- package/dist/phaser/core/sound_sprite.d.ts +5 -4
- package/dist/phaser/core/sound_sprite.d.ts.map +1 -1
- package/dist/phaser/core/stage.d.ts +3 -2
- package/dist/phaser/core/stage.d.ts.map +1 -1
- package/dist/phaser/core/time.d.ts +1 -1
- package/dist/phaser/core/time.d.ts.map +1 -1
- package/dist/phaser/core/timer.d.ts +1 -1
- package/dist/phaser/core/timer.d.ts.map +1 -1
- package/dist/phaser/core/timer_event.d.ts.map +1 -1
- package/dist/phaser/core/tween.d.ts +10 -7
- package/dist/phaser/core/tween.d.ts.map +1 -1
- package/dist/phaser/core/tween_data.d.ts +3 -2
- package/dist/phaser/core/tween_data.d.ts.map +1 -1
- package/dist/phaser/core/tween_easing.d.ts.map +1 -1
- package/dist/phaser/core/tween_manager.d.ts +3 -2
- package/dist/phaser/core/tween_manager.d.ts.map +1 -1
- package/dist/phaser/core/world.d.ts +3 -2
- package/dist/phaser/core/world.d.ts.map +1 -1
- package/dist/phaser/display/bitmap_text.d.ts +3 -2
- package/dist/phaser/display/bitmap_text.d.ts.map +1 -1
- package/dist/phaser/display/button.d.ts +3 -2
- package/dist/phaser/display/button.d.ts.map +1 -1
- package/dist/phaser/display/canvas/buffer.d.ts.map +1 -1
- package/dist/phaser/display/canvas/graphics.d.ts +7 -6
- package/dist/phaser/display/canvas/graphics.d.ts.map +1 -1
- package/dist/phaser/display/canvas/pool.d.ts +2 -2
- package/dist/phaser/display/canvas/pool.d.ts.map +1 -1
- package/dist/phaser/display/canvas/renderer.d.ts +10 -8
- package/dist/phaser/display/canvas/renderer.d.ts.map +1 -1
- package/dist/phaser/display/canvas/tinter.d.ts +3 -2
- package/dist/phaser/display/canvas/tinter.d.ts.map +1 -1
- package/dist/phaser/display/canvas/util.d.ts +2 -2
- package/dist/phaser/display/canvas/util.d.ts.map +1 -1
- package/dist/phaser/display/display_object.d.ts +14 -12
- package/dist/phaser/display/display_object.d.ts.map +1 -1
- package/dist/phaser/display/graphics.d.ts +8 -5
- package/dist/phaser/display/graphics.d.ts.map +1 -1
- package/dist/phaser/display/graphics_data.d.ts.map +1 -1
- package/dist/phaser/display/graphics_data_util.d.ts.map +1 -1
- package/dist/phaser/display/group.d.ts +4 -3
- package/dist/phaser/display/group.d.ts.map +1 -1
- package/dist/phaser/display/image.d.ts +13 -10
- package/dist/phaser/display/image.d.ts.map +1 -1
- package/dist/phaser/display/sprite_batch.d.ts +3 -2
- package/dist/phaser/display/sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/sprite_util.d.ts +18 -15
- package/dist/phaser/display/sprite_util.d.ts.map +1 -1
- package/dist/phaser/display/text.d.ts +11 -9
- package/dist/phaser/display/text.d.ts.map +1 -1
- package/dist/phaser/display/webgl/abstract_filter.d.ts.map +1 -1
- package/dist/phaser/display/webgl/base_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/blend_manager.d.ts +0 -1
- package/dist/phaser/display/webgl/blend_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/earcut.d.ts +1 -1
- package/dist/phaser/display/webgl/earcut.d.ts.map +1 -1
- package/dist/phaser/display/webgl/earcut_node.d.ts.map +1 -1
- package/dist/phaser/display/webgl/fast_sprite_batch.d.ts +4 -3
- package/dist/phaser/display/webgl/fast_sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/webgl/filter_manager.d.ts +2 -1
- package/dist/phaser/display/webgl/filter_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/filter_texture.d.ts +2 -1
- package/dist/phaser/display/webgl/filter_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/graphics.d.ts +7 -6
- package/dist/phaser/display/webgl/graphics.d.ts.map +1 -1
- package/dist/phaser/display/webgl/graphics_data.d.ts +2 -1
- package/dist/phaser/display/webgl/graphics_data.d.ts.map +1 -1
- package/dist/phaser/display/webgl/render_texture.d.ts +4 -2
- package/dist/phaser/display/webgl/render_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/renderer.d.ts +16 -11
- package/dist/phaser/display/webgl/renderer.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/complex.d.ts +16 -6
- package/dist/phaser/display/webgl/shader/complex.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/fast.d.ts +19 -7
- package/dist/phaser/display/webgl/shader/fast.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/normal.d.ts +33 -12
- package/dist/phaser/display/webgl/shader/normal.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/primitive.d.ts +15 -6
- package/dist/phaser/display/webgl/shader/primitive.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/strip.d.ts +15 -6
- package/dist/phaser/display/webgl/shader/strip.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader_manager.d.ts +16 -11
- package/dist/phaser/display/webgl/shader_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/sprite_batch.d.ts +29 -20
- package/dist/phaser/display/webgl/sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/webgl/stencil_manager.d.ts +12 -10
- package/dist/phaser/display/webgl/stencil_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/texture.d.ts +3 -2
- package/dist/phaser/display/webgl/texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/texture_util.d.ts.map +1 -1
- package/dist/phaser/display/webgl/util.d.ts.map +1 -1
- package/dist/phaser/geom/circle.d.ts +4 -1
- package/dist/phaser/geom/circle.d.ts.map +1 -1
- package/dist/phaser/geom/ellipse.d.ts.map +1 -1
- package/dist/phaser/geom/line.d.ts +1 -1
- package/dist/phaser/geom/line.d.ts.map +1 -1
- package/dist/phaser/geom/matrix.d.ts.map +1 -1
- package/dist/phaser/geom/point.d.ts.map +1 -1
- package/dist/phaser/geom/polygon.d.ts.map +1 -1
- package/dist/phaser/geom/rectangle.d.ts.map +1 -1
- package/dist/phaser/geom/rounded_rectangle.d.ts.map +1 -1
- package/dist/phaser/geom/util/circle.d.ts.map +1 -1
- package/dist/phaser/geom/util/ellipse.d.ts +3 -2
- package/dist/phaser/geom/util/ellipse.d.ts.map +1 -1
- package/dist/phaser/geom/util/line.d.ts.map +1 -1
- package/dist/phaser/geom/util/matrix.d.ts +2 -2
- package/dist/phaser/geom/util/matrix.d.ts.map +1 -1
- package/dist/phaser/geom/util/point.d.ts.map +1 -1
- package/dist/phaser/geom/util/rectangle.d.ts +1 -1
- package/dist/phaser/geom/util/rectangle.d.ts.map +1 -1
- package/dist/phaser/util/math.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/phaser/core/animation.ts +64 -60
- package/src/phaser/core/animation_manager.ts +50 -53
- package/src/phaser/core/animation_parser.ts +9 -9
- package/src/phaser/core/array_set.ts +16 -17
- package/src/phaser/core/cache.ts +92 -93
- package/src/phaser/core/const.ts +1 -1
- package/src/phaser/core/device.ts +24 -29
- package/src/phaser/core/device_util.ts +22 -26
- package/src/phaser/core/dom.ts +54 -65
- package/src/phaser/core/event_manager.ts +64 -94
- package/src/phaser/core/factory.ts +14 -14
- package/src/phaser/core/frame.ts +28 -28
- package/src/phaser/core/frame_data.test.ts +100 -0
- package/src/phaser/core/frame_data.ts +24 -24
- package/src/phaser/core/frame_util.ts +2 -2
- package/src/phaser/core/game.ts +47 -48
- package/src/phaser/core/input.ts +104 -110
- package/src/phaser/core/input_handler.test.ts +113 -0
- package/src/phaser/core/input_handler.ts +199 -218
- package/src/phaser/core/input_mouse.ts +71 -54
- package/src/phaser/core/input_mspointer.ts +52 -39
- package/src/phaser/core/input_pointer.ts +81 -80
- package/src/phaser/core/input_touch.ts +49 -36
- package/src/phaser/core/loader.ts +173 -152
- package/src/phaser/core/loader_parser.ts +39 -57
- package/src/phaser/core/raf.ts +8 -7
- package/src/phaser/core/registry.test.ts +31 -0
- package/src/phaser/core/registry.ts +9 -0
- package/src/phaser/core/scale_manager.ts +156 -152
- package/src/phaser/core/scene.ts +9 -13
- package/src/phaser/core/scene_manager.ts +47 -47
- package/src/phaser/core/signal.test.ts +4 -4
- package/src/phaser/core/signal.ts +41 -52
- package/src/phaser/core/signal_binding.ts +26 -25
- package/src/phaser/core/signal_dispatch.test.ts +180 -0
- package/src/phaser/core/sound.ts +75 -83
- package/src/phaser/core/sound_manager.ts +52 -51
- package/src/phaser/core/sound_sprite.ts +17 -16
- package/src/phaser/core/stage.ts +25 -24
- package/src/phaser/core/time.ts +52 -52
- package/src/phaser/core/timer.test.ts +187 -0
- package/src/phaser/core/timer.ts +82 -69
- package/src/phaser/core/timer_event.ts +10 -10
- package/src/phaser/core/tween.ts +90 -93
- package/src/phaser/core/tween_data.ts +45 -51
- package/src/phaser/core/tween_easing.test.ts +106 -0
- package/src/phaser/core/tween_easing.ts +151 -123
- package/src/phaser/core/tween_manager.ts +19 -18
- package/src/phaser/core/world.ts +4 -3
- package/src/phaser/display/bitmap_text.ts +56 -64
- package/src/phaser/display/button.ts +33 -32
- package/src/phaser/display/canvas/buffer.ts +8 -8
- package/src/phaser/display/canvas/graphics.ts +36 -37
- package/src/phaser/display/canvas/masker.ts +2 -2
- package/src/phaser/display/canvas/pool.test.ts +106 -0
- package/src/phaser/display/canvas/pool.ts +25 -27
- package/src/phaser/display/canvas/renderer.ts +32 -31
- package/src/phaser/display/canvas/tinter.ts +25 -25
- package/src/phaser/display/canvas/util.ts +7 -10
- package/src/phaser/display/display_object.ts +114 -118
- package/src/phaser/display/graphics.ts +121 -119
- package/src/phaser/display/graphics_data.ts +12 -12
- package/src/phaser/display/graphics_data_util.ts +2 -3
- package/src/phaser/display/group.ts +50 -57
- package/src/phaser/display/image.ts +55 -52
- package/src/phaser/display/sprite_batch.ts +3 -2
- package/src/phaser/display/sprite_util.ts +48 -54
- package/src/phaser/display/text.ts +199 -204
- package/src/phaser/display/webgl/abstract_filter.ts +9 -9
- package/src/phaser/display/webgl/base_texture.ts +21 -24
- package/src/phaser/display/webgl/blend_manager.ts +6 -10
- package/src/phaser/display/webgl/earcut.ts +73 -37
- package/src/phaser/display/webgl/earcut_node.ts +10 -10
- package/src/phaser/display/webgl/fast_sprite_batch.ts +34 -34
- package/src/phaser/display/webgl/filter_manager.ts +13 -12
- package/src/phaser/display/webgl/filter_texture.ts +14 -13
- package/src/phaser/display/webgl/graphics.ts +51 -57
- package/src/phaser/display/webgl/graphics_data.ts +15 -14
- package/src/phaser/display/webgl/mask_manager.ts +2 -2
- package/src/phaser/display/webgl/render_texture.ts +26 -25
- package/src/phaser/display/webgl/renderer.ts +57 -62
- package/src/phaser/display/webgl/shader/complex.ts +28 -12
- package/src/phaser/display/webgl/shader/fast.ts +30 -12
- package/src/phaser/display/webgl/shader/normal.ts +70 -57
- package/src/phaser/display/webgl/shader/primitive.ts +26 -11
- package/src/phaser/display/webgl/shader/shader.test.ts +148 -0
- package/src/phaser/display/webgl/shader/strip.ts +27 -12
- package/src/phaser/display/webgl/shader_manager.test.ts +124 -0
- package/src/phaser/display/webgl/shader_manager.ts +26 -34
- package/src/phaser/display/webgl/sprite_batch.ts +67 -61
- package/src/phaser/display/webgl/stencil_manager.ts +23 -34
- package/src/phaser/display/webgl/texture.ts +43 -50
- package/src/phaser/display/webgl/texture_util.ts +2 -3
- package/src/phaser/display/webgl/util.ts +26 -25
- package/src/phaser/geom/circle.test.ts +2 -3
- package/src/phaser/geom/circle.ts +36 -36
- package/src/phaser/geom/ellipse.test.ts +73 -71
- package/src/phaser/geom/ellipse.ts +14 -14
- package/src/phaser/geom/line.test.ts +5 -5
- package/src/phaser/geom/line.ts +35 -35
- package/src/phaser/geom/matrix.test.ts +1 -1
- package/src/phaser/geom/matrix.ts +27 -27
- package/src/phaser/geom/point.test.ts +1 -2
- package/src/phaser/geom/point.ts +35 -35
- package/src/phaser/geom/polygon.test.ts +82 -0
- package/src/phaser/geom/polygon.ts +16 -16
- package/src/phaser/geom/rectangle.test.ts +14 -14
- package/src/phaser/geom/rectangle.ts +83 -75
- package/src/phaser/geom/rounded_rectangle.test.ts +1 -7
- package/src/phaser/geom/rounded_rectangle.ts +9 -9
- package/src/phaser/geom/util/circle.test.ts +25 -23
- package/src/phaser/geom/util/circle.ts +9 -18
- package/src/phaser/geom/util/ellipse.test.ts +7 -5
- package/src/phaser/geom/util/ellipse.ts +3 -2
- package/src/phaser/geom/util/line.test.ts +10 -8
- package/src/phaser/geom/util/line.ts +6 -16
- package/src/phaser/geom/util/matrix.test.ts +20 -18
- package/src/phaser/geom/util/matrix.ts +8 -15
- package/src/phaser/geom/util/point.test.ts +8 -6
- package/src/phaser/geom/util/point.ts +24 -28
- package/src/phaser/geom/util/polygon.test.ts +12 -10
- package/src/phaser/geom/util/polygon.ts +2 -2
- package/src/phaser/geom/util/rectangle.test.ts +10 -8
- package/src/phaser/geom/util/rectangle.ts +18 -37
- package/src/phaser/geom/util/rounded_rectangle.test.ts +11 -9
- package/src/phaser/geom/util/rounded_rectangle.ts +1 -1
- package/src/phaser/util/math.test.ts +11 -11
- 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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
234
|
-
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
|
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
|
|
84
|
-
expect(result
|
|
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
|
|
104
|
-
expect(result
|
|
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
|
|
112
|
-
expect(result
|
|
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)).
|
|
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)).
|
|
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)).
|
|
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)).
|
|
152
|
+
expect(linearInterpolation(v, k)).toBe(10);
|
|
153
153
|
});
|
|
154
154
|
});
|
|
155
155
|
|
package/src/phaser/util/math.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|
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]
|
|
96
|
+
return linear(v[0]!, v[1]!, f);
|
|
108
97
|
}
|
|
109
98
|
if (k > 1) {
|
|
110
|
-
return linear(v[m]
|
|
99
|
+
return linear(v[m]!, v[m - 1]!, m - f);
|
|
111
100
|
}
|
|
112
|
-
return linear(v[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]
|
|
143
|
-
out.g = Number.parseInt(result[2]
|
|
144
|
-
out.b = Number.parseInt(result[3]
|
|
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 =
|
|
153
|
-
out.g =
|
|
154
|
-
out.b =
|
|
155
|
-
out.a = result[4] !== undefined ? Number
|
|
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 >
|
|
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.
|
|
171
|
+
if (value.startsWith('rgb')) {
|
|
189
172
|
webToColor(value, out);
|
|
190
173
|
} else {
|
|
191
174
|
out.a = 1;
|