@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.
- package/dist/index.js +499 -607
- package/dist/index.js.map +1 -1
- package/dist/phaser/core/animation.d.ts.map +1 -1
- package/dist/phaser/core/animation_manager.d.ts.map +1 -1
- package/dist/phaser/core/animation_parser.d.ts +1 -1
- package/dist/phaser/core/array_set.d.ts.map +1 -1
- package/dist/phaser/core/callback.d.ts +12 -0
- package/dist/phaser/core/callback.d.ts.map +1 -0
- package/dist/phaser/core/device.d.ts +1 -5
- package/dist/phaser/core/device.d.ts.map +1 -1
- package/dist/phaser/core/dom.d.ts.map +1 -1
- package/dist/phaser/core/factory.d.ts +2 -1
- package/dist/phaser/core/factory.d.ts.map +1 -1
- package/dist/phaser/core/game.d.ts +3 -0
- package/dist/phaser/core/game.d.ts.map +1 -1
- package/dist/phaser/core/input.d.ts +11 -9
- package/dist/phaser/core/input.d.ts.map +1 -1
- package/dist/phaser/core/input_event.d.ts +1 -1
- package/dist/phaser/core/input_event.d.ts.map +1 -1
- package/dist/phaser/core/input_handler.d.ts.map +1 -1
- package/dist/phaser/core/input_mouse.d.ts.map +1 -1
- package/dist/phaser/core/input_mspointer.d.ts.map +1 -1
- package/dist/phaser/core/input_pointer.d.ts +3 -2
- package/dist/phaser/core/input_pointer.d.ts.map +1 -1
- package/dist/phaser/core/input_touch.d.ts.map +1 -1
- package/dist/phaser/core/loader.d.ts +5 -4
- package/dist/phaser/core/loader.d.ts.map +1 -1
- package/dist/phaser/core/scale_manager.d.ts +5 -4
- package/dist/phaser/core/scale_manager.d.ts.map +1 -1
- package/dist/phaser/core/scene_manager.d.ts.map +1 -1
- package/dist/phaser/core/signal.d.ts +14 -7
- package/dist/phaser/core/signal.d.ts.map +1 -1
- package/dist/phaser/core/signal_binding.d.ts +10 -10
- package/dist/phaser/core/signal_binding.d.ts.map +1 -1
- package/dist/phaser/core/sound.d.ts +3 -3
- package/dist/phaser/core/sound.d.ts.map +1 -1
- package/dist/phaser/core/sound_manager.d.ts +9 -3
- package/dist/phaser/core/sound_manager.d.ts.map +1 -1
- package/dist/phaser/core/sound_sprite.d.ts +19 -7
- package/dist/phaser/core/sound_sprite.d.ts.map +1 -1
- package/dist/phaser/core/timer.d.ts +5 -4
- package/dist/phaser/core/timer.d.ts.map +1 -1
- package/dist/phaser/core/timer_event.d.ts +3 -2
- package/dist/phaser/core/timer_event.d.ts.map +1 -1
- package/dist/phaser/core/tween.d.ts +7 -6
- package/dist/phaser/core/tween.d.ts.map +1 -1
- package/dist/phaser/core/tween_data.d.ts +2 -1
- 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_manager.d.ts.map +1 -1
- package/dist/phaser/display/bitmap_text.d.ts.map +1 -1
- package/dist/phaser/display/button.d.ts +2 -1
- package/dist/phaser/display/button.d.ts.map +1 -1
- package/dist/phaser/display/canvas/pool.d.ts.map +1 -1
- package/dist/phaser/display/canvas/renderer.d.ts +1 -1
- package/dist/phaser/display/canvas/renderer.d.ts.map +1 -1
- 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 +8 -6
- package/dist/phaser/display/display_object.d.ts.map +1 -1
- package/dist/phaser/display/graphics.d.ts +7 -3
- package/dist/phaser/display/graphics.d.ts.map +1 -1
- package/dist/phaser/display/group.d.ts +1 -1
- package/dist/phaser/display/group.d.ts.map +1 -1
- package/dist/phaser/display/image.d.ts.map +1 -1
- package/dist/phaser/display/sprite_util.d.ts.map +1 -1
- package/dist/phaser/display/text.d.ts +5 -0
- package/dist/phaser/display/text.d.ts.map +1 -1
- package/dist/phaser/display/webgl/base_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/earcut.d.ts.map +1 -1
- package/dist/phaser/display/webgl/fast_sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/webgl/filter_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/graphics.d.ts.map +1 -1
- package/dist/phaser/display/webgl/graphics_data.d.ts.map +1 -1
- package/dist/phaser/display/webgl/render_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/renderer.d.ts.map +1 -1
- package/dist/phaser/display/webgl/sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/webgl/texture.d.ts.map +1 -1
- package/dist/phaser/geom/polygon.d.ts +11 -5
- 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/util/math.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/phaser/core/animation.ts +1 -2
- package/src/phaser/core/animation_manager.ts +3 -11
- package/src/phaser/core/animation_parser.ts +2 -2
- package/src/phaser/core/array_set.ts +8 -10
- package/src/phaser/core/cache.ts +2 -2
- package/src/phaser/core/callback.ts +14 -0
- package/src/phaser/core/device.ts +24 -53
- package/src/phaser/core/device_util.ts +6 -6
- package/src/phaser/core/dom.ts +10 -7
- package/src/phaser/core/factory.ts +3 -2
- package/src/phaser/core/game.ts +4 -5
- package/src/phaser/core/input.ts +16 -12
- package/src/phaser/core/input_event.ts +1 -1
- package/src/phaser/core/input_handler.ts +21 -22
- package/src/phaser/core/input_mouse.ts +12 -17
- package/src/phaser/core/input_mspointer.ts +8 -11
- package/src/phaser/core/input_pointer.ts +22 -21
- package/src/phaser/core/input_touch.ts +16 -19
- package/src/phaser/core/loader.ts +75 -86
- package/src/phaser/core/loader_parser.ts +6 -6
- package/src/phaser/core/scale_manager.ts +34 -42
- package/src/phaser/core/scene_manager.ts +2 -1
- package/src/phaser/core/signal.ts +21 -13
- package/src/phaser/core/signal_binding.ts +20 -21
- package/src/phaser/core/sound.ts +9 -11
- package/src/phaser/core/sound_manager.ts +53 -47
- package/src/phaser/core/sound_sprite.ts +34 -21
- package/src/phaser/core/stage.ts +4 -4
- package/src/phaser/core/timer.ts +13 -30
- package/src/phaser/core/timer_event.ts +3 -2
- package/src/phaser/core/tween.ts +9 -8
- package/src/phaser/core/tween_data.ts +15 -41
- package/src/phaser/core/tween_easing.test.ts +35 -35
- package/src/phaser/core/tween_easing.ts +33 -33
- package/src/phaser/core/tween_manager.ts +77 -75
- package/src/phaser/display/bitmap_text.ts +7 -11
- package/src/phaser/display/button.ts +3 -2
- package/src/phaser/display/canvas/graphics.ts +7 -7
- package/src/phaser/display/canvas/pool.ts +5 -6
- package/src/phaser/display/canvas/renderer.ts +7 -4
- package/src/phaser/display/canvas/tinter.ts +9 -11
- package/src/phaser/display/canvas/util.test.ts +122 -0
- package/src/phaser/display/canvas/util.ts +34 -35
- package/src/phaser/display/display_object.ts +30 -43
- package/src/phaser/display/graphics.ts +30 -45
- package/src/phaser/display/group.ts +1 -1
- package/src/phaser/display/image.ts +9 -16
- package/src/phaser/display/sprite_util.ts +0 -1
- package/src/phaser/display/text.ts +27 -43
- package/src/phaser/display/webgl/base_texture.ts +3 -3
- package/src/phaser/display/webgl/earcut.ts +2 -3
- package/src/phaser/display/webgl/fast_sprite_batch.ts +1 -2
- package/src/phaser/display/webgl/filter_manager.ts +6 -18
- package/src/phaser/display/webgl/filter_texture.ts +3 -3
- package/src/phaser/display/webgl/graphics.ts +28 -38
- package/src/phaser/display/webgl/graphics_data.ts +0 -1
- package/src/phaser/display/webgl/render_texture.ts +4 -13
- package/src/phaser/display/webgl/renderer.ts +0 -1
- package/src/phaser/display/webgl/sprite_batch.ts +2 -9
- package/src/phaser/display/webgl/texture.ts +12 -15
- package/src/phaser/geom/point.ts +1 -1
- package/src/phaser/geom/polygon.test.ts +59 -0
- package/src/phaser/geom/polygon.ts +43 -45
- package/src/phaser/geom/rectangle.ts +3 -15
- package/src/phaser/geom/rounded_rectangle.ts +2 -4
- package/src/phaser/geom/util/point.ts +1 -1
- package/src/phaser/geom/util/rectangle.ts +2 -2
- 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:
|
|
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:
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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(
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
const
|
|
82
|
-
const
|
|
83
|
-
const
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
const iy =
|
|
92
|
-
const jx =
|
|
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:
|
|
110
|
+
public setTo(points: PolygonVertex[]): this {
|
|
108
111
|
this.area = 0;
|
|
109
|
-
|
|
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
|
|
123
|
-
p = new Point(
|
|
127
|
+
if (typeof vertex === 'number') {
|
|
128
|
+
p = new Point(vertex, points[i + 1] as number);
|
|
124
129
|
i += 1;
|
|
125
|
-
} else if (Array.isArray(
|
|
126
|
-
p = new Point(
|
|
130
|
+
} else if (Array.isArray(vertex)) {
|
|
131
|
+
p = new Point(vertex[0], vertex[1]);
|
|
127
132
|
} else {
|
|
128
|
-
p = new Point(
|
|
133
|
+
p = new Point(vertex.x, vertex.y);
|
|
129
134
|
}
|
|
130
|
-
|
|
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
|
-
|
|
148
|
-
let
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
};
|
package/src/phaser/util/math.ts
CHANGED
|
@@ -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;
|