@vpmedia/phaser 1.104.0 → 1.105.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 +151 -574
- package/dist/index.js.map +1 -1
- package/dist/phaser/core/animation.d.ts +35 -57
- package/dist/phaser/core/animation.d.ts.map +1 -1
- package/dist/phaser/core/animation_manager.d.ts +11 -10
- package/dist/phaser/core/animation_manager.d.ts.map +1 -1
- package/dist/phaser/core/animation_parser.d.ts +2 -2
- package/dist/phaser/core/animation_parser.d.ts.map +1 -1
- package/dist/phaser/core/array_set.d.ts +3 -3
- package/dist/phaser/core/array_set.d.ts.map +1 -1
- package/dist/phaser/core/cache.d.ts +60 -60
- package/dist/phaser/core/cache.d.ts.map +1 -1
- package/dist/phaser/core/device.d.ts.map +1 -1
- package/dist/phaser/core/device_util.d.ts +10 -10
- package/dist/phaser/core/device_util.d.ts.map +1 -1
- package/dist/phaser/core/dom.d.ts +6 -5
- package/dist/phaser/core/dom.d.ts.map +1 -1
- package/dist/phaser/core/event_manager.d.ts +49 -174
- package/dist/phaser/core/event_manager.d.ts.map +1 -1
- package/dist/phaser/core/factory.d.ts +7 -7
- package/dist/phaser/core/factory.d.ts.map +1 -1
- package/dist/phaser/core/frame.d.ts +27 -48
- package/dist/phaser/core/frame.d.ts.map +1 -1
- package/dist/phaser/core/frame_data.d.ts +11 -60
- package/dist/phaser/core/frame_data.d.ts.map +1 -1
- package/dist/phaser/core/frame_util.d.ts +4 -14
- package/dist/phaser/core/frame_util.d.ts.map +1 -1
- package/dist/phaser/core/game.d.ts +49 -58
- package/dist/phaser/core/game.d.ts.map +1 -1
- package/dist/phaser/core/input.d.ts +15 -13
- package/dist/phaser/core/input.d.ts.map +1 -1
- package/dist/phaser/core/input_handler.d.ts +23 -20
- package/dist/phaser/core/input_handler.d.ts.map +1 -1
- package/dist/phaser/core/input_mouse.d.ts +26 -1
- package/dist/phaser/core/input_mouse.d.ts.map +1 -1
- package/dist/phaser/core/input_mspointer.d.ts +2 -2
- package/dist/phaser/core/input_mspointer.d.ts.map +1 -1
- package/dist/phaser/core/input_pointer.d.ts +9 -9
- package/dist/phaser/core/input_pointer.d.ts.map +1 -1
- package/dist/phaser/core/input_touch.d.ts +2 -1
- package/dist/phaser/core/input_touch.d.ts.map +1 -1
- package/dist/phaser/core/loader.d.ts +28 -28
- package/dist/phaser/core/loader.d.ts.map +1 -1
- package/dist/phaser/core/loader_parser.d.ts +4 -4
- package/dist/phaser/core/loader_parser.d.ts.map +1 -1
- package/dist/phaser/core/raf.d.ts +2 -2
- package/dist/phaser/core/raf.d.ts.map +1 -1
- package/dist/phaser/core/scale_manager.d.ts +22 -17
- package/dist/phaser/core/scale_manager.d.ts.map +1 -1
- package/dist/phaser/core/scene.d.ts +1 -1
- package/dist/phaser/core/scene.d.ts.map +1 -1
- package/dist/phaser/core/scene_manager.d.ts +10 -9
- package/dist/phaser/core/scene_manager.d.ts.map +1 -1
- package/dist/phaser/core/signal.d.ts +9 -8
- package/dist/phaser/core/signal.d.ts.map +1 -1
- package/dist/phaser/core/signal_binding.d.ts +2 -2
- package/dist/phaser/core/signal_binding.d.ts.map +1 -1
- package/dist/phaser/core/sound.d.ts +56 -101
- package/dist/phaser/core/sound.d.ts.map +1 -1
- package/dist/phaser/core/sound_manager.d.ts +11 -9
- package/dist/phaser/core/sound_manager.d.ts.map +1 -1
- package/dist/phaser/core/sound_sprite.d.ts +4 -4
- package/dist/phaser/core/sound_sprite.d.ts.map +1 -1
- package/dist/phaser/core/stage.d.ts +3 -3
- package/dist/phaser/core/stage.d.ts.map +1 -1
- package/dist/phaser/core/time.d.ts +5 -5
- package/dist/phaser/core/time.d.ts.map +1 -1
- package/dist/phaser/core/timer.d.ts +10 -10
- package/dist/phaser/core/timer.d.ts.map +1 -1
- package/dist/phaser/core/timer_event.d.ts +11 -21
- package/dist/phaser/core/timer_event.d.ts.map +1 -1
- package/dist/phaser/core/tween.d.ts +37 -59
- package/dist/phaser/core/tween.d.ts.map +1 -1
- package/dist/phaser/core/tween_data.d.ts +6 -5
- package/dist/phaser/core/tween_data.d.ts.map +1 -1
- package/dist/phaser/core/tween_easing.d.ts +31 -31
- package/dist/phaser/core/tween_easing.d.ts.map +1 -1
- package/dist/phaser/core/tween_manager.d.ts +4 -4
- package/dist/phaser/core/tween_manager.d.ts.map +1 -1
- package/dist/phaser/core/world.d.ts +1 -1
- package/dist/phaser/core/world.d.ts.map +1 -1
- package/dist/phaser/display/bitmap_text.d.ts +22 -20
- package/dist/phaser/display/bitmap_text.d.ts.map +1 -1
- package/dist/phaser/display/button.d.ts +23 -35
- package/dist/phaser/display/button.d.ts.map +1 -1
- package/dist/phaser/display/canvas/buffer.d.ts +2 -2
- package/dist/phaser/display/canvas/buffer.d.ts.map +1 -1
- package/dist/phaser/display/canvas/graphics.d.ts +3 -3
- package/dist/phaser/display/canvas/graphics.d.ts.map +1 -1
- package/dist/phaser/display/canvas/masker.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 +5 -5
- package/dist/phaser/display/canvas/renderer.d.ts.map +1 -1
- package/dist/phaser/display/canvas/tinter.d.ts +3 -3
- package/dist/phaser/display/canvas/tinter.d.ts.map +1 -1
- package/dist/phaser/display/canvas/util.d.ts +9 -9
- package/dist/phaser/display/canvas/util.d.ts.map +1 -1
- package/dist/phaser/display/display_object.d.ts +45 -42
- package/dist/phaser/display/display_object.d.ts.map +1 -1
- package/dist/phaser/display/graphics.d.ts +24 -16
- package/dist/phaser/display/graphics.d.ts.map +1 -1
- package/dist/phaser/display/graphics_data.d.ts +1 -1
- package/dist/phaser/display/graphics_data.d.ts.map +1 -1
- package/dist/phaser/display/graphics_data_util.d.ts +1 -1
- package/dist/phaser/display/graphics_data_util.d.ts.map +1 -1
- package/dist/phaser/display/group.d.ts +24 -37
- package/dist/phaser/display/group.d.ts.map +1 -1
- package/dist/phaser/display/image.d.ts +34 -49
- package/dist/phaser/display/image.d.ts.map +1 -1
- package/dist/phaser/display/sprite_batch.d.ts +1 -1
- package/dist/phaser/display/sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/sprite_util.d.ts +5 -5
- package/dist/phaser/display/sprite_util.d.ts.map +1 -1
- package/dist/phaser/display/text.d.ts +86 -66
- package/dist/phaser/display/text.d.ts.map +1 -1
- package/dist/phaser/display/webgl/abstract_filter.d.ts +2 -1
- package/dist/phaser/display/webgl/abstract_filter.d.ts.map +1 -1
- package/dist/phaser/display/webgl/base_texture.d.ts +2 -2
- package/dist/phaser/display/webgl/base_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/blend_manager.d.ts +3 -2
- package/dist/phaser/display/webgl/blend_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/earcut.d.ts +10 -10
- package/dist/phaser/display/webgl/earcut.d.ts.map +1 -1
- package/dist/phaser/display/webgl/earcut_node.d.ts +1 -1
- package/dist/phaser/display/webgl/earcut_node.d.ts.map +1 -1
- package/dist/phaser/display/webgl/fast_sprite_batch.d.ts +2 -1
- 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 +3 -2
- package/dist/phaser/display/webgl/filter_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/graphics.d.ts +11 -10
- 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/mask_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/render_texture.d.ts +2 -1
- package/dist/phaser/display/webgl/render_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/renderer.d.ts +8 -6
- package/dist/phaser/display/webgl/renderer.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/complex.d.ts +2 -1
- package/dist/phaser/display/webgl/shader/complex.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/fast.d.ts +2 -1
- package/dist/phaser/display/webgl/shader/fast.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/normal.d.ts +1 -0
- package/dist/phaser/display/webgl/shader/normal.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/primitive.d.ts +2 -1
- package/dist/phaser/display/webgl/shader/primitive.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/strip.d.ts +2 -1
- package/dist/phaser/display/webgl/shader/strip.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader_manager.d.ts +4 -2
- package/dist/phaser/display/webgl/shader_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/sprite_batch.d.ts +3 -2
- package/dist/phaser/display/webgl/sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/webgl/stencil_manager.d.ts +5 -4
- package/dist/phaser/display/webgl/stencil_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/texture.d.ts +15 -2
- package/dist/phaser/display/webgl/texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/texture_util.d.ts +2 -2
- package/dist/phaser/display/webgl/texture_util.d.ts.map +1 -1
- package/dist/phaser/display/webgl/util.d.ts +6 -6
- package/dist/phaser/display/webgl/util.d.ts.map +1 -1
- package/dist/phaser/geom/circle.d.ts +11 -10
- package/dist/phaser/geom/circle.d.ts.map +1 -1
- package/dist/phaser/geom/ellipse.d.ts +6 -5
- package/dist/phaser/geom/ellipse.d.ts.map +1 -1
- package/dist/phaser/geom/line.d.ts +14 -14
- package/dist/phaser/geom/line.d.ts.map +1 -1
- package/dist/phaser/geom/matrix.d.ts +13 -12
- package/dist/phaser/geom/matrix.d.ts.map +1 -1
- package/dist/phaser/geom/point.d.ts +19 -19
- package/dist/phaser/geom/point.d.ts.map +1 -1
- package/dist/phaser/geom/polygon.d.ts +6 -6
- package/dist/phaser/geom/polygon.d.ts.map +1 -1
- package/dist/phaser/geom/rectangle.d.ts +20 -20
- package/dist/phaser/geom/rectangle.d.ts.map +1 -1
- package/dist/phaser/geom/rounded_rectangle.d.ts +2 -2
- package/dist/phaser/geom/rounded_rectangle.d.ts.map +1 -1
- package/dist/phaser/geom/util/circle.d.ts +9 -7
- package/dist/phaser/geom/util/circle.d.ts.map +1 -1
- package/dist/phaser/geom/util/ellipse.d.ts +1 -1
- package/dist/phaser/geom/util/ellipse.d.ts.map +1 -1
- package/dist/phaser/geom/util/line.d.ts +5 -3
- package/dist/phaser/geom/util/line.d.ts.map +1 -1
- package/dist/phaser/geom/util/matrix.d.ts +2 -1
- package/dist/phaser/geom/util/matrix.d.ts.map +1 -1
- package/dist/phaser/geom/util/point.d.ts +19 -19
- package/dist/phaser/geom/util/point.d.ts.map +1 -1
- package/dist/phaser/geom/util/polygon.d.ts +2 -1
- package/dist/phaser/geom/util/polygon.d.ts.map +1 -1
- package/dist/phaser/geom/util/rectangle.d.ts +17 -15
- package/dist/phaser/geom/util/rectangle.d.ts.map +1 -1
- package/dist/phaser/geom/util/rounded_rectangle.d.ts +2 -1
- package/dist/phaser/geom/util/rounded_rectangle.d.ts.map +1 -1
- package/dist/phaser/util/math.d.ts +51 -142
- package/dist/phaser/util/math.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/phaser/core/animation.ts +38 -61
- package/src/phaser/core/animation_manager.ts +21 -21
- package/src/phaser/core/animation_parser.ts +11 -3
- package/src/phaser/core/array_set.ts +8 -8
- package/src/phaser/core/cache.ts +75 -68
- package/src/phaser/core/device.ts +23 -24
- package/src/phaser/core/device_util.ts +10 -10
- package/src/phaser/core/dom.ts +5 -5
- package/src/phaser/core/event_manager.ts +52 -193
- package/src/phaser/core/factory.ts +25 -18
- package/src/phaser/core/frame.ts +37 -51
- package/src/phaser/core/frame_data.ts +29 -76
- package/src/phaser/core/frame_util.ts +3 -16
- package/src/phaser/core/game.ts +36 -63
- package/src/phaser/core/input.ts +68 -68
- package/src/phaser/core/input_handler.ts +81 -86
- package/src/phaser/core/input_mouse.ts +42 -36
- package/src/phaser/core/input_mspointer.ts +24 -25
- package/src/phaser/core/input_pointer.ts +55 -56
- package/src/phaser/core/input_touch.ts +26 -26
- package/src/phaser/core/loader.ts +97 -70
- package/src/phaser/core/loader_parser.ts +6 -7
- package/src/phaser/core/raf.ts +2 -2
- package/src/phaser/core/scale_manager.ts +85 -82
- package/src/phaser/core/scene.ts +3 -4
- package/src/phaser/core/scene_manager.ts +26 -26
- package/src/phaser/core/signal.ts +10 -10
- package/src/phaser/core/signal_binding.ts +2 -2
- package/src/phaser/core/sound.ts +65 -112
- package/src/phaser/core/sound_manager.ts +31 -30
- package/src/phaser/core/sound_sprite.ts +10 -11
- package/src/phaser/core/stage.ts +8 -8
- package/src/phaser/core/time.ts +33 -34
- package/src/phaser/core/timer.ts +40 -34
- package/src/phaser/core/timer_event.ts +23 -23
- package/src/phaser/core/tween.ts +42 -68
- package/src/phaser/core/tween_data.ts +31 -31
- package/src/phaser/core/tween_easing.ts +31 -31
- package/src/phaser/core/tween_manager.ts +10 -11
- package/src/phaser/core/world.ts +1 -2
- package/src/phaser/display/bitmap_text.ts +41 -31
- package/src/phaser/display/button.ts +24 -51
- package/src/phaser/display/canvas/buffer.ts +6 -7
- package/src/phaser/display/canvas/graphics.ts +3 -4
- package/src/phaser/display/canvas/masker.ts +2 -3
- package/src/phaser/display/canvas/pool.ts +3 -4
- package/src/phaser/display/canvas/renderer.ts +19 -20
- package/src/phaser/display/canvas/tinter.ts +4 -5
- package/src/phaser/display/canvas/util.ts +9 -9
- package/src/phaser/display/display_object.ts +49 -50
- package/src/phaser/display/graphics.ts +56 -43
- package/src/phaser/display/graphics_data.ts +11 -12
- package/src/phaser/display/graphics_data_util.ts +1 -2
- package/src/phaser/display/group.ts +32 -42
- package/src/phaser/display/image.ts +32 -52
- package/src/phaser/display/sprite_batch.ts +1 -2
- package/src/phaser/display/sprite_util.ts +5 -6
- package/src/phaser/display/text.ts +82 -56
- package/src/phaser/display/webgl/abstract_filter.ts +8 -8
- package/src/phaser/display/webgl/base_texture.ts +14 -15
- package/src/phaser/display/webgl/blend_manager.ts +5 -5
- package/src/phaser/display/webgl/earcut.ts +27 -27
- package/src/phaser/display/webgl/earcut_node.ts +1 -1
- package/src/phaser/display/webgl/fast_sprite_batch.ts +19 -19
- package/src/phaser/display/webgl/filter_manager.ts +5 -5
- package/src/phaser/display/webgl/filter_texture.ts +7 -7
- package/src/phaser/display/webgl/graphics.ts +10 -11
- package/src/phaser/display/webgl/graphics_data.ts +11 -11
- package/src/phaser/display/webgl/mask_manager.ts +2 -3
- package/src/phaser/display/webgl/render_texture.ts +12 -12
- package/src/phaser/display/webgl/renderer.ts +24 -24
- package/src/phaser/display/webgl/shader/complex.ts +7 -7
- package/src/phaser/display/webgl/shader/fast.ts +8 -8
- package/src/phaser/display/webgl/shader/normal.ts +12 -12
- package/src/phaser/display/webgl/shader/primitive.ts +7 -7
- package/src/phaser/display/webgl/shader/strip.ts +7 -7
- package/src/phaser/display/webgl/shader_manager.ts +13 -13
- package/src/phaser/display/webgl/sprite_batch.ts +20 -20
- package/src/phaser/display/webgl/stencil_manager.ts +8 -8
- package/src/phaser/display/webgl/texture.ts +35 -24
- package/src/phaser/display/webgl/texture_util.ts +2 -3
- package/src/phaser/display/webgl/util.ts +6 -6
- package/src/phaser/geom/circle.ts +10 -10
- package/src/phaser/geom/ellipse.ts +6 -6
- package/src/phaser/geom/line.ts +14 -14
- package/src/phaser/geom/matrix.ts +12 -12
- package/src/phaser/geom/point.ts +19 -19
- package/src/phaser/geom/polygon.ts +5 -5
- package/src/phaser/geom/rectangle.ts +21 -21
- package/src/phaser/geom/rounded_rectangle.ts +2 -2
- package/src/phaser/geom/util/circle.ts +7 -7
- package/src/phaser/geom/util/ellipse.ts +1 -1
- package/src/phaser/geom/util/line.ts +5 -5
- package/src/phaser/geom/util/matrix.ts +1 -1
- package/src/phaser/geom/util/point.ts +20 -20
- package/src/phaser/geom/util/polygon.ts +1 -1
- package/src/phaser/geom/util/rectangle.ts +15 -15
- package/src/phaser/geom/util/rounded_rectangle.ts +1 -1
- package/src/phaser/util/math.ts +65 -151
package/src/phaser/util/math.ts
CHANGED
|
@@ -2,31 +2,39 @@ export const DEG_TO_RAD = Math.PI / 180;
|
|
|
2
2
|
export const RAD_TO_DEG = 180 / Math.PI;
|
|
3
3
|
export const PI_2 = Math.PI * 2;
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
export interface ColorTarget {
|
|
6
|
+
r?: number;
|
|
7
|
+
g?: number;
|
|
8
|
+
b?: number;
|
|
9
|
+
a?: number;
|
|
10
|
+
rgba?: string;
|
|
11
|
+
color?: number;
|
|
12
|
+
color32?: number;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface ColorComponents {
|
|
16
|
+
alpha: number;
|
|
17
|
+
red: number;
|
|
18
|
+
green: number;
|
|
19
|
+
blue: number;
|
|
20
|
+
a: number;
|
|
21
|
+
r: number;
|
|
22
|
+
g: number;
|
|
23
|
+
b: number;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** Converts a hexadecimal color value to RGB components. */
|
|
27
|
+
export const hex2rgb = (hex: number): [number, number, number] => {
|
|
11
28
|
return [((hex >> 16) & 0xff) / 255, ((hex >> 8) & 0xff) / 255, (hex & 0xff) / 255];
|
|
12
29
|
};
|
|
13
30
|
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
* @param {number} rgb - The RGB components array [r, g, b].
|
|
17
|
-
* @returns {number} The hexadecimal color value.
|
|
18
|
-
*/
|
|
19
|
-
export const rgb2hex = (rgb) => {
|
|
31
|
+
/** Converts RGB components to a hexadecimal color value. */
|
|
32
|
+
export const rgb2hex = (rgb: number[]): number => {
|
|
20
33
|
return ((rgb[0] * 255) << 16) + ((rgb[1] * 255) << 8) + rgb[2] * 255;
|
|
21
34
|
};
|
|
22
35
|
|
|
23
|
-
/**
|
|
24
|
-
|
|
25
|
-
* @param {number} value - The input value.
|
|
26
|
-
* @returns {number} The next power of two.
|
|
27
|
-
*/
|
|
28
|
-
export const getNextPowerOfTwo = (value) => {
|
|
29
|
-
// see: https://en.wikipedia.org/wiki/Power_of_two#Fast_algorithm_to_check_if_a_positive_number_is_a_power_of_two
|
|
36
|
+
/** Gets the next power of two greater than or equal to a value. */
|
|
37
|
+
export const getNextPowerOfTwo = (value: number): number => {
|
|
30
38
|
if (value > 0 && (value & (value - 1)) === 0) {
|
|
31
39
|
return value;
|
|
32
40
|
}
|
|
@@ -37,52 +45,28 @@ export const getNextPowerOfTwo = (value) => {
|
|
|
37
45
|
return result;
|
|
38
46
|
};
|
|
39
47
|
|
|
40
|
-
/**
|
|
41
|
-
|
|
42
|
-
* @param {number} width - The width to check.
|
|
43
|
-
* @param {number} height - The height to check.
|
|
44
|
-
* @returns {boolean} True if both width and height are powers of two, false otherwise.
|
|
45
|
-
*/
|
|
46
|
-
export const isPowerOfTwo = (width, height) => {
|
|
48
|
+
/** Checks if both width and height are powers of two. */
|
|
49
|
+
export const isPowerOfTwo = (width: number, height: number): boolean => {
|
|
47
50
|
return width > 0 && (width & (width - 1)) === 0 && height > 0 && (height & (height - 1)) === 0;
|
|
48
51
|
};
|
|
49
52
|
|
|
50
|
-
/**
|
|
51
|
-
|
|
52
|
-
* @param {number} degrees - The angle in degrees.
|
|
53
|
-
* @returns {number} The angle in radians.
|
|
54
|
-
*/
|
|
55
|
-
export const degToRad = (degrees) => {
|
|
53
|
+
/** Converts degrees to radians. */
|
|
54
|
+
export const degToRad = (degrees: number): number => {
|
|
56
55
|
return degrees * DEG_TO_RAD;
|
|
57
56
|
};
|
|
58
57
|
|
|
59
|
-
/**
|
|
60
|
-
|
|
61
|
-
* @param {number} radians - The angle in radians.
|
|
62
|
-
* @returns {number} The angle in degrees.
|
|
63
|
-
*/
|
|
64
|
-
export const radToDeg = (radians) => {
|
|
58
|
+
/** Converts radians to degrees. */
|
|
59
|
+
export const radToDeg = (radians: number): number => {
|
|
65
60
|
return radians * RAD_TO_DEG;
|
|
66
61
|
};
|
|
67
62
|
|
|
68
|
-
/**
|
|
69
|
-
|
|
70
|
-
* @param {number} min - The minimum value.
|
|
71
|
-
* @param {number} max - The maximum value.
|
|
72
|
-
* @returns {number} A random integer between min and max.
|
|
73
|
-
*/
|
|
74
|
-
export const between = (min, max) => {
|
|
63
|
+
/** Gets a random integer between min and max (inclusive). */
|
|
64
|
+
export const between = (min: number, max: number): number => {
|
|
75
65
|
return Math.floor(Math.random() * (max - min + 1) + min);
|
|
76
66
|
};
|
|
77
67
|
|
|
78
|
-
/**
|
|
79
|
-
|
|
80
|
-
* @param {number} input - The value to snap.
|
|
81
|
-
* @param {number} gap - The gap size to snap to.
|
|
82
|
-
* @param {number} start - The starting offset for snapping.
|
|
83
|
-
* @returns {number} The snapped value.
|
|
84
|
-
*/
|
|
85
|
-
export const snapToCeil = (input, gap = 0, start = 0) => {
|
|
68
|
+
/** 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 => {
|
|
86
70
|
if (gap === 0) {
|
|
87
71
|
return input;
|
|
88
72
|
}
|
|
@@ -91,14 +75,8 @@ export const snapToCeil = (input, gap = 0, start = 0) => {
|
|
|
91
75
|
return start + input;
|
|
92
76
|
};
|
|
93
77
|
|
|
94
|
-
/**
|
|
95
|
-
|
|
96
|
-
* @param {number} value - The value to wrap.
|
|
97
|
-
* @param {number} min - The minimum value of the range.
|
|
98
|
-
* @param {number} max - The maximum value of the range.
|
|
99
|
-
* @returns {number} The wrapped value.
|
|
100
|
-
*/
|
|
101
|
-
export const wrap = (value, min, max) => {
|
|
78
|
+
/** Wraps a value within a range. */
|
|
79
|
+
export const wrap = (value: number, min: number, max: number): number => {
|
|
102
80
|
const range = max - min;
|
|
103
81
|
if (range <= 0) {
|
|
104
82
|
return 0;
|
|
@@ -110,34 +88,18 @@ export const wrap = (value, min, max) => {
|
|
|
110
88
|
return result + min;
|
|
111
89
|
};
|
|
112
90
|
|
|
113
|
-
/**
|
|
114
|
-
|
|
115
|
-
* @param {number} p0 - The first point.
|
|
116
|
-
* @param {number} p1 - The second point.
|
|
117
|
-
* @param {number} t - The interpolation factor (0 to 1).
|
|
118
|
-
* @returns {number} The interpolated value.
|
|
119
|
-
*/
|
|
120
|
-
export const linear = (p0, p1, t) => {
|
|
91
|
+
/** Performs linear interpolation between two values. */
|
|
92
|
+
export const linear = (p0: number, p1: number, t: number): number => {
|
|
121
93
|
return (p1 - p0) * t + p0;
|
|
122
94
|
};
|
|
123
95
|
|
|
124
|
-
/**
|
|
125
|
-
|
|
126
|
-
* @param {number} a - The first number.
|
|
127
|
-
* @param {number} b - The second number.
|
|
128
|
-
* @returns {number} The absolute difference between a and b.
|
|
129
|
-
*/
|
|
130
|
-
export const difference = (a, b) => {
|
|
96
|
+
/** Calculates the absolute difference between two numbers. */
|
|
97
|
+
export const difference = (a: number, b: number): number => {
|
|
131
98
|
return Math.abs(a - b);
|
|
132
99
|
};
|
|
133
100
|
|
|
134
|
-
/**
|
|
135
|
-
|
|
136
|
-
* @param {number[]} v - The array of values.
|
|
137
|
-
* @param {number} k - The interpolation factor (0 to 1).
|
|
138
|
-
* @returns {number} The interpolated value.
|
|
139
|
-
*/
|
|
140
|
-
export const linearInterpolation = (v, k) => {
|
|
101
|
+
/** Performs linear interpolation on an array of values. */
|
|
102
|
+
export const linearInterpolation = (v: number[], k: number): number => {
|
|
141
103
|
const m = v.length - 1;
|
|
142
104
|
const f = m * k;
|
|
143
105
|
const i = Math.floor(f);
|
|
@@ -150,62 +112,31 @@ export const linearInterpolation = (v, k) => {
|
|
|
150
112
|
return linear(v[i], v[i + 1 > m ? m : i + 1], f - i);
|
|
151
113
|
};
|
|
152
114
|
|
|
153
|
-
/**
|
|
154
|
-
|
|
155
|
-
* @param {number} x1 - The x-coordinate of the first point.
|
|
156
|
-
* @param {number} y1 - The y-coordinate of the first point.
|
|
157
|
-
* @param {number} x2 - The x-coordinate of the second point.
|
|
158
|
-
* @param {number} y2 - The y-coordinate of the second point.
|
|
159
|
-
* @returns {number} The distance between the two points.
|
|
160
|
-
*/
|
|
161
|
-
export const distance = (x1, y1, x2, y2) => {
|
|
115
|
+
/** Calculates the distance between two points. */
|
|
116
|
+
export const distance = (x1: number, y1: number, x2: number, y2: number): number => {
|
|
162
117
|
const dx = x1 - x2;
|
|
163
118
|
const dy = y1 - y2;
|
|
164
119
|
return Math.sqrt(dx * dx + dy * dy);
|
|
165
120
|
};
|
|
166
121
|
|
|
167
|
-
/**
|
|
168
|
-
|
|
169
|
-
* @param {number} a - The first number.
|
|
170
|
-
* @param {number} b - The second number.
|
|
171
|
-
* @param {number} tolerance - The tolerance value.
|
|
172
|
-
* @returns {boolean} True if the numbers are within tolerance, false otherwise.
|
|
173
|
-
*/
|
|
174
|
-
export const within = (a, b, tolerance) => {
|
|
122
|
+
/** Checks if two numbers are within a tolerance of each other. */
|
|
123
|
+
export const within = (a: number, b: number, tolerance: number): boolean => {
|
|
175
124
|
return Math.abs(a - b) <= tolerance;
|
|
176
125
|
};
|
|
177
126
|
|
|
178
|
-
/**
|
|
179
|
-
|
|
180
|
-
* @param {number} a - The alpha component (0-255).
|
|
181
|
-
* @param {number} r - The red component (0-255).
|
|
182
|
-
* @param {number} g - The green component (0-255).
|
|
183
|
-
* @param {number} b - The blue component (0-255).
|
|
184
|
-
* @returns {number} The 32-bit color value.
|
|
185
|
-
*/
|
|
186
|
-
export const getColor32 = (a, r, g, b) => {
|
|
127
|
+
/** 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 => {
|
|
187
129
|
return (a << 24) | (r << 16) | (g << 8) | b;
|
|
188
130
|
};
|
|
189
131
|
|
|
190
|
-
/**
|
|
191
|
-
|
|
192
|
-
* @param {number} r - The red component (0-255).
|
|
193
|
-
* @param {number} g - The green component (0-255).
|
|
194
|
-
* @param {number} b - The blue component (0-255).
|
|
195
|
-
* @returns {number} The 24-bit color value.
|
|
196
|
-
*/
|
|
197
|
-
export const getColor = (r, g, b) => {
|
|
132
|
+
/** Creates a 24-bit color value from red, green, and blue components. */
|
|
133
|
+
export const getColor = (r: number, g: number, b: number): number => {
|
|
198
134
|
return (r << 16) | (g << 8) | b;
|
|
199
135
|
};
|
|
200
136
|
|
|
201
|
-
/**
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
* @param {{r?: number, g?: number, b?: number}} out - The object to store the result in.
|
|
205
|
-
*/
|
|
206
|
-
export const hexToColor = (value, out) => {
|
|
207
|
-
// Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
|
|
208
|
-
value = value.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i, (m, r, g, b) => r + r + g + g + b + b);
|
|
137
|
+
/** Converts a hex color string to RGB components. */
|
|
138
|
+
export const hexToColor = (value: string, out: ColorTarget): void => {
|
|
139
|
+
value = value.replace(/^(?:#|0x)?([a-f\d])([a-f\d])([a-f\d])$/i, (_m, r, g, b) => r + r + g + g + b + b);
|
|
209
140
|
const result = /^(?:#|0x)?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(value);
|
|
210
141
|
if (result) {
|
|
211
142
|
out.r = Number.parseInt(result[1], 16);
|
|
@@ -214,12 +145,8 @@ export const hexToColor = (value, out) => {
|
|
|
214
145
|
}
|
|
215
146
|
};
|
|
216
147
|
|
|
217
|
-
/**
|
|
218
|
-
|
|
219
|
-
* @param {string} value - The web color string (e.g. "rgba(255, 0, 0, 0.5)").
|
|
220
|
-
* @param {{r?: number, g?: number, b?: number, a?: number}} out - The object to store the result in.
|
|
221
|
-
*/
|
|
222
|
-
export const webToColor = (value, out) => {
|
|
148
|
+
/** Converts a web color string (e.g. "rgb(255, 0, 0)") to RGB components with alpha. */
|
|
149
|
+
export const webToColor = (value: string, out: ColorTarget): void => {
|
|
223
150
|
const result = /^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+(?:\.\d+)?))?\s*\)$/.exec(value);
|
|
224
151
|
if (result) {
|
|
225
152
|
out.r = Number.parseInt(result[1], 10);
|
|
@@ -229,14 +156,9 @@ export const webToColor = (value, out) => {
|
|
|
229
156
|
}
|
|
230
157
|
};
|
|
231
158
|
|
|
232
|
-
/**
|
|
233
|
-
|
|
234
|
-
* @param {number} color - The 32-bit color value.
|
|
235
|
-
* @returns {{ alpha: number, red: number, green: number, blue: number, a: number, r: number, g: number, b: number}} An object containing the color components.
|
|
236
|
-
*/
|
|
237
|
-
export const getRGB = (color) => {
|
|
159
|
+
/** Extracts RGB components from a 32-bit color value. */
|
|
160
|
+
export const getRGB = (color: number): ColorComponents => {
|
|
238
161
|
if (color > 16777215) {
|
|
239
|
-
// The color value has an alpha component
|
|
240
162
|
return {
|
|
241
163
|
alpha: color >>> 24,
|
|
242
164
|
red: (color >> 16) & 0xff,
|
|
@@ -260,32 +182,24 @@ export const getRGB = (color) => {
|
|
|
260
182
|
};
|
|
261
183
|
};
|
|
262
184
|
|
|
263
|
-
/**
|
|
264
|
-
|
|
265
|
-
* @param {string|number} value - The color value (e.g. "#FF0000" or 0xFF0000).
|
|
266
|
-
* @param {{a?: number, r?: number, g?: number, b?: number, rgba?: string, color?: number, color32?: number}} out - The object to store the result in.
|
|
267
|
-
* @returns {{a?: number, r?: number, g?: number, b?: number, rgba?: string, color?: number, color32?: number}} The updated out object.
|
|
268
|
-
*/
|
|
269
|
-
export const valueToColor = (value, out) => {
|
|
185
|
+
/** Converts a color value (string or number) to an object with various color formats. */
|
|
186
|
+
export const valueToColor = (value: string | number, out: ColorTarget): ColorTarget => {
|
|
270
187
|
if (typeof value === 'string') {
|
|
271
188
|
if (value.indexOf('rgb') === 0) {
|
|
272
189
|
webToColor(value, out);
|
|
273
190
|
} else {
|
|
274
|
-
// `hexToColor` does not support alpha; match `createColor`.
|
|
275
191
|
out.a = 1;
|
|
276
192
|
hexToColor(value, out);
|
|
277
193
|
}
|
|
278
194
|
} else if (typeof value === 'number') {
|
|
279
|
-
// `getRGB` does not take optional object to modify;
|
|
280
|
-
// alpha is also adjusted to match `createColor`.
|
|
281
195
|
const tempColor = getRGB(value);
|
|
282
196
|
out.r = tempColor.r;
|
|
283
197
|
out.g = tempColor.g;
|
|
284
198
|
out.b = tempColor.b;
|
|
285
199
|
out.a = tempColor.a / 255;
|
|
286
200
|
}
|
|
287
|
-
out.rgba = `rgba(${out.r
|
|
288
|
-
out.color = getColor(out.r
|
|
289
|
-
out.color32 = getColor32(out.a * 255, out.r
|
|
201
|
+
out.rgba = `rgba(${out.r!.toString()},${out.g!.toString()},${out.b!.toString()},${out.a!.toString()})`;
|
|
202
|
+
out.color = getColor(out.r!, out.g!, out.b!);
|
|
203
|
+
out.color32 = getColor32(out.a! * 255, out.r!, out.g!, out.b!);
|
|
290
204
|
return out;
|
|
291
205
|
};
|