@vpmedia/phaser 1.120.0 → 1.121.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 (153) hide show
  1. package/dist/index.js +499 -607
  2. package/dist/index.js.map +1 -1
  3. package/dist/phaser/core/animation.d.ts.map +1 -1
  4. package/dist/phaser/core/animation_manager.d.ts.map +1 -1
  5. package/dist/phaser/core/animation_parser.d.ts +1 -1
  6. package/dist/phaser/core/array_set.d.ts.map +1 -1
  7. package/dist/phaser/core/callback.d.ts +12 -0
  8. package/dist/phaser/core/callback.d.ts.map +1 -0
  9. package/dist/phaser/core/device.d.ts +1 -5
  10. package/dist/phaser/core/device.d.ts.map +1 -1
  11. package/dist/phaser/core/dom.d.ts.map +1 -1
  12. package/dist/phaser/core/factory.d.ts +2 -1
  13. package/dist/phaser/core/factory.d.ts.map +1 -1
  14. package/dist/phaser/core/game.d.ts +3 -0
  15. package/dist/phaser/core/game.d.ts.map +1 -1
  16. package/dist/phaser/core/input.d.ts +11 -9
  17. package/dist/phaser/core/input.d.ts.map +1 -1
  18. package/dist/phaser/core/input_event.d.ts +1 -1
  19. package/dist/phaser/core/input_event.d.ts.map +1 -1
  20. package/dist/phaser/core/input_handler.d.ts.map +1 -1
  21. package/dist/phaser/core/input_mouse.d.ts.map +1 -1
  22. package/dist/phaser/core/input_mspointer.d.ts.map +1 -1
  23. package/dist/phaser/core/input_pointer.d.ts +3 -2
  24. package/dist/phaser/core/input_pointer.d.ts.map +1 -1
  25. package/dist/phaser/core/input_touch.d.ts.map +1 -1
  26. package/dist/phaser/core/loader.d.ts +5 -4
  27. package/dist/phaser/core/loader.d.ts.map +1 -1
  28. package/dist/phaser/core/scale_manager.d.ts +5 -4
  29. package/dist/phaser/core/scale_manager.d.ts.map +1 -1
  30. package/dist/phaser/core/scene_manager.d.ts.map +1 -1
  31. package/dist/phaser/core/signal.d.ts +14 -7
  32. package/dist/phaser/core/signal.d.ts.map +1 -1
  33. package/dist/phaser/core/signal_binding.d.ts +10 -10
  34. package/dist/phaser/core/signal_binding.d.ts.map +1 -1
  35. package/dist/phaser/core/sound.d.ts +3 -3
  36. package/dist/phaser/core/sound.d.ts.map +1 -1
  37. package/dist/phaser/core/sound_manager.d.ts +9 -3
  38. package/dist/phaser/core/sound_manager.d.ts.map +1 -1
  39. package/dist/phaser/core/sound_sprite.d.ts +19 -7
  40. package/dist/phaser/core/sound_sprite.d.ts.map +1 -1
  41. package/dist/phaser/core/timer.d.ts +5 -4
  42. package/dist/phaser/core/timer.d.ts.map +1 -1
  43. package/dist/phaser/core/timer_event.d.ts +3 -2
  44. package/dist/phaser/core/timer_event.d.ts.map +1 -1
  45. package/dist/phaser/core/tween.d.ts +7 -6
  46. package/dist/phaser/core/tween.d.ts.map +1 -1
  47. package/dist/phaser/core/tween_data.d.ts +2 -1
  48. package/dist/phaser/core/tween_data.d.ts.map +1 -1
  49. package/dist/phaser/core/tween_easing.d.ts +31 -31
  50. package/dist/phaser/core/tween_manager.d.ts.map +1 -1
  51. package/dist/phaser/display/bitmap_text.d.ts.map +1 -1
  52. package/dist/phaser/display/button.d.ts +2 -1
  53. package/dist/phaser/display/button.d.ts.map +1 -1
  54. package/dist/phaser/display/canvas/pool.d.ts.map +1 -1
  55. package/dist/phaser/display/canvas/renderer.d.ts +1 -1
  56. package/dist/phaser/display/canvas/renderer.d.ts.map +1 -1
  57. package/dist/phaser/display/canvas/tinter.d.ts.map +1 -1
  58. package/dist/phaser/display/canvas/util.d.ts +2 -2
  59. package/dist/phaser/display/canvas/util.d.ts.map +1 -1
  60. package/dist/phaser/display/display_object.d.ts +8 -6
  61. package/dist/phaser/display/display_object.d.ts.map +1 -1
  62. package/dist/phaser/display/graphics.d.ts +7 -3
  63. package/dist/phaser/display/graphics.d.ts.map +1 -1
  64. package/dist/phaser/display/group.d.ts +1 -1
  65. package/dist/phaser/display/group.d.ts.map +1 -1
  66. package/dist/phaser/display/image.d.ts.map +1 -1
  67. package/dist/phaser/display/sprite_util.d.ts.map +1 -1
  68. package/dist/phaser/display/text.d.ts +5 -0
  69. package/dist/phaser/display/text.d.ts.map +1 -1
  70. package/dist/phaser/display/webgl/base_texture.d.ts.map +1 -1
  71. package/dist/phaser/display/webgl/earcut.d.ts.map +1 -1
  72. package/dist/phaser/display/webgl/fast_sprite_batch.d.ts.map +1 -1
  73. package/dist/phaser/display/webgl/filter_manager.d.ts.map +1 -1
  74. package/dist/phaser/display/webgl/graphics.d.ts.map +1 -1
  75. package/dist/phaser/display/webgl/graphics_data.d.ts.map +1 -1
  76. package/dist/phaser/display/webgl/render_texture.d.ts.map +1 -1
  77. package/dist/phaser/display/webgl/renderer.d.ts.map +1 -1
  78. package/dist/phaser/display/webgl/sprite_batch.d.ts.map +1 -1
  79. package/dist/phaser/display/webgl/texture.d.ts.map +1 -1
  80. package/dist/phaser/geom/polygon.d.ts +11 -5
  81. package/dist/phaser/geom/polygon.d.ts.map +1 -1
  82. package/dist/phaser/geom/rectangle.d.ts.map +1 -1
  83. package/dist/phaser/geom/rounded_rectangle.d.ts.map +1 -1
  84. package/dist/phaser/util/math.d.ts.map +1 -1
  85. package/package.json +1 -1
  86. package/src/phaser/core/animation.ts +1 -2
  87. package/src/phaser/core/animation_manager.ts +3 -11
  88. package/src/phaser/core/animation_parser.ts +2 -2
  89. package/src/phaser/core/array_set.ts +8 -10
  90. package/src/phaser/core/cache.ts +2 -2
  91. package/src/phaser/core/callback.ts +14 -0
  92. package/src/phaser/core/device.ts +24 -53
  93. package/src/phaser/core/device_util.ts +6 -6
  94. package/src/phaser/core/dom.ts +10 -7
  95. package/src/phaser/core/factory.ts +3 -2
  96. package/src/phaser/core/game.ts +4 -5
  97. package/src/phaser/core/input.ts +16 -12
  98. package/src/phaser/core/input_event.ts +1 -1
  99. package/src/phaser/core/input_handler.ts +21 -22
  100. package/src/phaser/core/input_mouse.ts +12 -17
  101. package/src/phaser/core/input_mspointer.ts +8 -11
  102. package/src/phaser/core/input_pointer.ts +22 -21
  103. package/src/phaser/core/input_touch.ts +16 -19
  104. package/src/phaser/core/loader.ts +75 -86
  105. package/src/phaser/core/loader_parser.ts +6 -6
  106. package/src/phaser/core/scale_manager.ts +34 -42
  107. package/src/phaser/core/scene_manager.ts +2 -1
  108. package/src/phaser/core/signal.ts +21 -13
  109. package/src/phaser/core/signal_binding.ts +20 -21
  110. package/src/phaser/core/sound.ts +9 -11
  111. package/src/phaser/core/sound_manager.ts +53 -47
  112. package/src/phaser/core/sound_sprite.ts +34 -21
  113. package/src/phaser/core/stage.ts +4 -4
  114. package/src/phaser/core/timer.ts +13 -30
  115. package/src/phaser/core/timer_event.ts +3 -2
  116. package/src/phaser/core/tween.ts +9 -8
  117. package/src/phaser/core/tween_data.ts +15 -41
  118. package/src/phaser/core/tween_easing.test.ts +35 -35
  119. package/src/phaser/core/tween_easing.ts +33 -33
  120. package/src/phaser/core/tween_manager.ts +77 -75
  121. package/src/phaser/display/bitmap_text.ts +7 -11
  122. package/src/phaser/display/button.ts +3 -2
  123. package/src/phaser/display/canvas/graphics.ts +7 -7
  124. package/src/phaser/display/canvas/pool.ts +5 -6
  125. package/src/phaser/display/canvas/renderer.ts +7 -4
  126. package/src/phaser/display/canvas/tinter.ts +9 -11
  127. package/src/phaser/display/canvas/util.test.ts +122 -0
  128. package/src/phaser/display/canvas/util.ts +34 -35
  129. package/src/phaser/display/display_object.ts +30 -43
  130. package/src/phaser/display/graphics.ts +30 -45
  131. package/src/phaser/display/group.ts +1 -1
  132. package/src/phaser/display/image.ts +9 -16
  133. package/src/phaser/display/sprite_util.ts +0 -1
  134. package/src/phaser/display/text.ts +27 -43
  135. package/src/phaser/display/webgl/base_texture.ts +3 -3
  136. package/src/phaser/display/webgl/earcut.ts +2 -3
  137. package/src/phaser/display/webgl/fast_sprite_batch.ts +1 -2
  138. package/src/phaser/display/webgl/filter_manager.ts +6 -18
  139. package/src/phaser/display/webgl/filter_texture.ts +3 -3
  140. package/src/phaser/display/webgl/graphics.ts +28 -38
  141. package/src/phaser/display/webgl/graphics_data.ts +0 -1
  142. package/src/phaser/display/webgl/render_texture.ts +4 -13
  143. package/src/phaser/display/webgl/renderer.ts +0 -1
  144. package/src/phaser/display/webgl/sprite_batch.ts +2 -9
  145. package/src/phaser/display/webgl/texture.ts +12 -15
  146. package/src/phaser/geom/point.ts +1 -1
  147. package/src/phaser/geom/polygon.test.ts +59 -0
  148. package/src/phaser/geom/polygon.ts +43 -45
  149. package/src/phaser/geom/rectangle.ts +3 -15
  150. package/src/phaser/geom/rounded_rectangle.ts +2 -4
  151. package/src/phaser/geom/util/point.ts +1 -1
  152. package/src/phaser/geom/util/rectangle.ts +2 -2
  153. package/src/phaser/util/math.ts +1 -5
@@ -2,9 +2,12 @@ import { Point } from './point.js';
2
2
  import { clone } from './util/polygon.js';
3
3
  import { GEOM_POLYGON } from '../core/const.js';
4
4
 
5
+ /** A vertex as `setTo` accepts it: a point, an `{x, y}` pair, an `[x, y]` tuple, or a loose number. */
6
+ export type PolygonVertex = Point | { x: number; y: number } | [number, number] | number;
7
+
5
8
  export class Polygon {
6
9
  public area = 0;
7
- public _points: any[];
10
+ public _points: Point[] | number[];
8
11
  public closed: boolean;
9
12
  public flattened: boolean;
10
13
  public type: number;
@@ -13,7 +16,7 @@ export class Polygon {
13
16
  * Creates a new Polygon instance.
14
17
  * @param {object[]} points - The array of points to define the polygon (optional).
15
18
  */
16
- public constructor(points: any[] | null = null) {
19
+ public constructor(points: PolygonVertex[] | null = null) {
17
20
  /** @type {number} */
18
21
 
19
22
  /** @type {Point[]} */
@@ -35,14 +38,14 @@ export class Polygon {
35
38
  * @returns {number[]} An array of numbers representing the polygon's points.
36
39
  */
37
40
  public toNumberArray(output: number[] = []): number[] {
38
- for (let i = 0; i < this._points.length; i += 1) {
39
- if (typeof this._points[i] === 'number') {
40
- output.push(this._points[i]);
41
- output.push(this._points[i + 1]);
41
+ const points: (Point | number | undefined)[] = this._points;
42
+ for (let i = 0; i < points.length; i += 1) {
43
+ const point = points[i];
44
+ if (typeof point === 'number') {
45
+ output.push(point, points[i + 1] as number);
42
46
  i += 1;
43
- } else {
44
- output.push(this._points[i].x);
45
- output.push(this._points[i].y);
47
+ } else if (point) {
48
+ output.push(point.x, point.y);
46
49
  }
47
50
  }
48
51
  return output;
@@ -76,21 +79,21 @@ export class Polygon {
76
79
  // Adapted from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html by Jonas Raoni Soares Silva
77
80
  let inside = false;
78
81
  if (this.flattened) {
79
- for (let i = -2, j = this._points.length - 2; (i += 2) < this._points.length; j = i) {
80
- const ix = this._points[i];
81
- const iy = this._points[i + 1];
82
- const jx = this._points[j];
83
- const jy = this._points[j + 1];
82
+ const points = this._points as number[];
83
+ for (let i = -2, j = points.length - 2; (i += 2) < points.length; j = i) {
84
+ const ix = points[i]!;
85
+ const iy = points[i + 1]!;
86
+ const jx = points[j]!;
87
+ const jy = points[j + 1]!;
84
88
  if (((iy <= y && y < jy) || (jy <= y && y < iy)) && x < ((jx - ix) * (y - iy)) / (jy - iy) + ix) {
85
89
  inside = !inside;
86
90
  }
87
91
  }
88
92
  } else {
89
- for (let i = 0, j = this._points.length - 1; i < this._points.length; j = i, i += 1) {
90
- const ix = this._points[i].x;
91
- const iy = this._points[i].y;
92
- const jx = this._points[j].x;
93
- const jy = this._points[j].y;
93
+ const points = this._points as Point[];
94
+ for (let i = 0, j = points.length - 1; i < points.length; j = i, i += 1) {
95
+ const { x: ix, y: iy } = points[i]!;
96
+ const { x: jx, y: jy } = points[j]!;
94
97
  if (((iy <= y && y < jy) || (jy <= y && y < iy)) && x < ((jx - ix) * (y - iy)) / (jy - iy) + ix) {
95
98
  inside = !inside;
96
99
  }
@@ -104,9 +107,10 @@ export class Polygon {
104
107
  * @param {object[]} points - The array of points to define the polygon.
105
108
  * @returns {Polygon} This polygon instance for chaining.
106
109
  */
107
- public setTo(points: any[]): this {
110
+ public setTo(points: PolygonVertex[]): this {
108
111
  this.area = 0;
109
- this._points = [];
112
+ const vertices: Point[] = [];
113
+ this._points = vertices;
110
114
  if (points) {
111
115
  // If points isn't an array, use arguments as the array
112
116
  if (!Array.isArray(points)) {
@@ -118,16 +122,17 @@ export class Polygon {
118
122
  let y0 = Number.MAX_VALUE;
119
123
  // Allows for mixed-type arguments
120
124
  for (let i = 0, len = points.length; i < len; i += 1) {
125
+ const vertex = points[i]!;
121
126
  let p;
122
- if (typeof points[i] === 'number') {
123
- p = new Point(points[i], points[i + 1]);
127
+ if (typeof vertex === 'number') {
128
+ p = new Point(vertex, points[i + 1] as number);
124
129
  i += 1;
125
- } else if (Array.isArray(points[i])) {
126
- p = new Point(points[i][0], points[i][1]);
130
+ } else if (Array.isArray(vertex)) {
131
+ p = new Point(vertex[0], vertex[1]);
127
132
  } else {
128
- p = new Point(points[i].x, points[i].y);
133
+ p = new Point(vertex.x, vertex.y);
129
134
  }
130
- this._points.push(p);
135
+ vertices.push(p);
131
136
  // Lowest boundary
132
137
  if (p.y < y0) {
133
138
  y0 = p.y;
@@ -144,19 +149,12 @@ export class Polygon {
144
149
  * @returns {number} The area of this polygon.
145
150
  */
146
151
  public calculateArea(y0: number): number {
147
- let p1;
148
- let p2;
149
- let avgHeight;
150
- let width;
151
- for (let i = 0, len = this._points.length; i < len; i += 1) {
152
- p1 = this._points[i];
153
- if (i === len - 1) {
154
- p2 = this._points[0];
155
- } else {
156
- p2 = this._points[i + 1];
157
- }
158
- avgHeight = (p1.y - y0 + (p2.y - y0)) / 2;
159
- width = p1.x - p2.x;
152
+ const points = this._points as Point[];
153
+ for (let i = 0, len = points.length; i < len; i += 1) {
154
+ const p1 = points[i]!;
155
+ const p2 = (i === len - 1 ? points[0] : points[i + 1])!;
156
+ const avgHeight = (p1.y - y0 + (p2.y - y0)) / 2;
157
+ const width = p1.x - p2.x;
160
158
  this.area += avgHeight * width;
161
159
  }
162
160
  return this.area;
@@ -166,19 +164,19 @@ export class Polygon {
166
164
  * Gets the points of this polygon.
167
165
  * @returns {object[]} The array of points that define this polygon.
168
166
  */
169
- public get points() {
167
+ public get points(): Point[] | number[] {
170
168
  return this._points;
171
169
  }
172
170
 
173
171
  /**
174
172
  * Sets the points of this polygon.
175
173
  */
176
- public set points(value) {
177
- if (value !== null) {
178
- this.setTo(value);
179
- } else {
174
+ public set points(value: PolygonVertex[] | null) {
175
+ if (value === null) {
180
176
  this.area = 0;
181
177
  this._points = [];
178
+ } else {
179
+ this.setTo(value);
182
180
  }
183
181
  }
184
182
  }
@@ -423,11 +423,7 @@ export class Rectangle {
423
423
  * Sets the bottom coordinate of this rectangle.
424
424
  */
425
425
  public set bottom(value) {
426
- if (value <= this.y) {
427
- this.height = 0;
428
- } else {
429
- this.height = value - this.y;
430
- }
426
+ this.height = value <= this.y ? 0 : value - this.y;
431
427
  }
432
428
 
433
429
  /**
@@ -474,11 +470,7 @@ export class Rectangle {
474
470
  * Sets the left coordinate of this rectangle.
475
471
  */
476
472
  public set left(value) {
477
- if (value >= this.right) {
478
- this.width = 0;
479
- } else {
480
- this.width = this.right - value;
481
- }
473
+ this.width = value >= this.right ? 0 : this.right - value;
482
474
  this.x = value;
483
475
  }
484
476
 
@@ -494,11 +486,7 @@ export class Rectangle {
494
486
  * Sets the right coordinate of this rectangle.
495
487
  */
496
488
  public set right(value) {
497
- if (value <= this.x) {
498
- this.width = 0;
499
- } else {
500
- this.width = value - this.x;
501
- }
489
+ this.width = value <= this.x ? 0 : value - this.x;
502
490
  }
503
491
 
504
492
  /**
@@ -36,10 +36,8 @@ export class RoundedRectangle {
36
36
  if (this.width <= 0 || this.height <= 0) {
37
37
  return false;
38
38
  }
39
- if (x >= this.x && x <= this.x + this.width) {
40
- if (y >= this.y && y <= this.y + this.height) {
41
- return true;
42
- }
39
+ if (x >= this.x && x <= this.x + this.width && y >= this.y && y <= this.y + this.height) {
40
+ return true;
43
41
  }
44
42
  return false;
45
43
  }
@@ -141,7 +141,7 @@ export const rperp = (a: Point, output: Point | null = null): Point => {
141
141
  export const distance = (a: Point, b: Point, round = false): number => {
142
142
  const dx = a.x - b.x;
143
143
  const dy = a.y - b.y;
144
- const abDistance = Math.sqrt(dx * dx + dy * dy);
144
+ const abDistance = Math.hypot(dx, dy);
145
145
  return round ? Math.round(abDistance) : abDistance;
146
146
  };
147
147
 
@@ -209,7 +209,7 @@ export const aabb = (points: Point[], output: Rectangle | null = null): Rectangl
209
209
  let xMin = Number.POSITIVE_INFINITY;
210
210
  let yMax = Number.NEGATIVE_INFINITY;
211
211
  let yMin = Number.POSITIVE_INFINITY;
212
- points.forEach((point): void => {
212
+ for (const point of points) {
213
213
  if (point.x > xMax) {
214
214
  xMax = point.x;
215
215
  }
@@ -222,7 +222,7 @@ export const aabb = (points: Point[], output: Rectangle | null = null): Rectangl
222
222
  if (point.y < yMin) {
223
223
  yMin = point.y;
224
224
  }
225
- });
225
+ }
226
226
  result.setTo(xMin, yMin, xMax - xMin, yMax - yMin);
227
227
  return result;
228
228
  };
@@ -102,11 +102,7 @@ export const linearInterpolation = (v: number[], k: number): number => {
102
102
  };
103
103
 
104
104
  /** Calculates the distance between two points. */
105
- export const distance = (x1: number, y1: number, x2: number, y2: number): number => {
106
- const dx = x1 - x2;
107
- const dy = y1 - y2;
108
- return Math.sqrt(dx * dx + dy * dy);
109
- };
105
+ export const distance = (x1: number, y1: number, x2: number, y2: number): number => Math.hypot(x1 - x2, y1 - y2);
110
106
 
111
107
  /** Checks if two numbers are within a tolerance of each other. */
112
108
  export const within = (a: number, b: number, tolerance: number): boolean => Math.abs(a - b) <= tolerance;