melonjs 10.10.0 → 11.0.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/README.md +4 -3
- package/dist/melonjs.js +1071 -2102
- package/dist/melonjs.min.js +4 -4
- package/dist/melonjs.module.d.ts +600 -1351
- package/dist/melonjs.module.js +996 -2029
- package/package.json +16 -19
- package/src/audio/audio.js +0 -1
- package/src/camera/camera2d.js +1 -16
- package/src/entity/entity.js +6 -11
- package/src/geometries/ellipse.js +3 -12
- package/src/geometries/line.js +1 -4
- package/src/geometries/path2d.js +4 -14
- package/src/geometries/poly.js +6 -24
- package/src/geometries/rectangle.js +3 -15
- package/src/geometries/roundrect.js +2 -6
- package/src/index.js +0 -1
- package/src/input/gamepad.js +3 -14
- package/src/input/keyboard.js +1 -9
- package/src/input/pointer.js +0 -1
- package/src/input/pointerevent.js +14 -23
- package/src/lang/deprecated.js +4 -3
- package/src/level/level.js +0 -9
- package/src/level/tiled/TMXGroup.js +0 -4
- package/src/level/tiled/TMXLayer.js +0 -8
- package/src/level/tiled/TMXObject.js +0 -3
- package/src/level/tiled/TMXTile.js +4 -5
- package/src/level/tiled/TMXTileMap.js +1 -7
- package/src/level/tiled/TMXTileset.js +0 -5
- package/src/level/tiled/TMXTilesetGroup.js +1 -4
- package/src/level/tiled/TMXUtils.js +0 -3
- package/src/level/tiled/renderer/TMXHexagonalRenderer.js +2 -3
- package/src/level/tiled/renderer/TMXIsometricRenderer.js +0 -1
- package/src/level/tiled/renderer/TMXRenderer.js +1 -7
- package/src/loader/loader.js +0 -11
- package/src/loader/loadingscreen.js +1 -1
- package/src/math/color.js +5 -26
- package/src/math/math.js +0 -10
- package/src/math/matrix2.js +12 -27
- package/src/math/matrix3.js +1 -22
- package/src/math/observable_vector2.js +0 -29
- package/src/math/observable_vector3.js +0 -29
- package/src/math/vector2.js +3 -40
- package/src/math/vector3.js +4 -41
- package/src/particles/emitter.js +1 -1
- package/src/physics/body.js +4 -5
- package/src/physics/bounds.js +5 -19
- package/src/physics/collision.js +1 -13
- package/src/physics/detector.js +6 -56
- package/src/physics/quadtree.js +0 -7
- package/src/physics/response.js +48 -0
- package/src/physics/sat.js +4 -4
- package/src/physics/world.js +0 -4
- package/src/plugin/plugin.js +0 -2
- package/src/polyfill/roundrect.js +4 -2
- package/src/renderable/GUI.js +6 -9
- package/src/renderable/collectable.js +1 -0
- package/src/renderable/colorlayer.js +9 -7
- package/src/renderable/container.js +12 -38
- package/src/renderable/dragndrop.js +1 -10
- package/src/renderable/imagelayer.js +6 -10
- package/src/renderable/light2d.js +48 -16
- package/src/renderable/renderable.js +6 -28
- package/src/renderable/sprite.js +4 -16
- package/src/renderable/trigger.js +10 -3
- package/src/state/stage.js +0 -4
- package/src/state/state.js +22 -23
- package/src/system/device.js +16 -119
- package/src/system/dom.js +69 -0
- package/src/system/event.js +22 -0
- package/src/system/pooling.js +20 -9
- package/src/system/save.js +9 -11
- package/src/system/timer.js +239 -218
- package/src/text/bitmaptextdata.js +1 -4
- package/src/text/glyph.js +2 -2
- package/src/text/text.js +13 -8
- package/src/text/textmetrics.js +0 -2
- package/src/tweens/easing.js +1 -1
- package/src/tweens/interpolation.js +2 -2
- package/src/tweens/tween.js +1 -13
- package/src/utils/agent.js +1 -3
- package/src/utils/array.js +0 -3
- package/src/utils/file.js +0 -2
- package/src/utils/function.js +0 -2
- package/src/utils/string.js +0 -6
- package/src/utils/utils.js +0 -3
- package/src/video/canvas/canvas_renderer.js +4 -39
- package/src/video/renderer.js +1 -23
- package/src/video/texture/atlas.js +2 -0
- package/src/video/texture/cache.js +0 -1
- package/src/video/texture/canvas_texture.js +16 -4
- package/src/video/video.js +3 -3
- package/src/video/webgl/glshader.js +0 -5
- package/src/video/webgl/utils/uniforms.js +3 -6
- package/src/video/webgl/webgl_compositor.js +0 -14
- package/src/video/webgl/webgl_renderer.js +0 -42
|
@@ -4,19 +4,41 @@ import Renderable from "./renderable.js";
|
|
|
4
4
|
/** @ignore */
|
|
5
5
|
function createGradient(light) {
|
|
6
6
|
var context = light.texture.context;
|
|
7
|
-
|
|
8
|
-
var
|
|
9
|
-
|
|
7
|
+
|
|
8
|
+
var x1 = light.texture.width / 2,
|
|
9
|
+
y1 = light.texture.height / 2;
|
|
10
|
+
|
|
11
|
+
var radiusX = light.radiusX,
|
|
12
|
+
radiusY = light.radiusY;
|
|
13
|
+
|
|
14
|
+
var scaleX, scaleY, invScaleX, invScaleY;
|
|
15
|
+
var gradient;
|
|
16
|
+
|
|
10
17
|
|
|
11
18
|
light.texture.clear();
|
|
12
19
|
|
|
20
|
+
if (radiusX >= radiusY) {
|
|
21
|
+
scaleX = 1;
|
|
22
|
+
invScaleX = 1;
|
|
23
|
+
scaleY = radiusY/radiusX;
|
|
24
|
+
invScaleY = radiusX/radiusY;
|
|
25
|
+
gradient = context.createRadialGradient(x1, y1 * invScaleY, 0, x1, radiusY * invScaleY, radiusX);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
scaleY = 1;
|
|
29
|
+
invScaleY = 1;
|
|
30
|
+
scaleX = radiusX/radiusY;
|
|
31
|
+
invScaleX = radiusY/radiusX;
|
|
32
|
+
gradient = context.createRadialGradient(x1 * invScaleX, y1, 0, x1 * invScaleX, y1, radiusY);
|
|
33
|
+
}
|
|
34
|
+
|
|
13
35
|
gradient.addColorStop( 0, light.color.toRGBA(light.intensity));
|
|
14
36
|
gradient.addColorStop( 1, light.color.toRGBA(0.0));
|
|
15
37
|
|
|
16
|
-
context.beginPath();
|
|
17
38
|
context.fillStyle = gradient;
|
|
18
|
-
|
|
19
|
-
context.
|
|
39
|
+
|
|
40
|
+
context.setTransform(scaleX, 0, 0, scaleY, 0, 0);
|
|
41
|
+
context.fillRect(0, 0, light.texture.width * invScaleX, light.texture.height * invScaleY);
|
|
20
42
|
}
|
|
21
43
|
|
|
22
44
|
/**
|
|
@@ -31,13 +53,14 @@ class Light2d extends Renderable {
|
|
|
31
53
|
/**
|
|
32
54
|
* @param {number} x - The horizontal position of the light.
|
|
33
55
|
* @param {number} y - The vertical position of the light.
|
|
34
|
-
* @param {number}
|
|
56
|
+
* @param {number} radiusX - The horizontal radius of the light.
|
|
57
|
+
* @param {number} [radiusY=radiusX] - The vertical radius of the light.
|
|
35
58
|
* @param {Color|string} [color="#FFF"] the color of the light
|
|
36
59
|
* @param {number} [intensity=0.7] - The intensity of the light.
|
|
37
60
|
*/
|
|
38
|
-
constructor(x, y,
|
|
61
|
+
constructor(x, y, radiusX, radiusY = radiusX, color = "#FFF", intensity = 0.7) {
|
|
39
62
|
// call the parent constructor
|
|
40
|
-
super(x, y,
|
|
63
|
+
super(x, y, radiusX * 2, radiusY * 2);
|
|
41
64
|
|
|
42
65
|
/**
|
|
43
66
|
* the color of the light
|
|
@@ -47,10 +70,16 @@ class Light2d extends Renderable {
|
|
|
47
70
|
this.color = pool.pull("Color").parseCSS(color);
|
|
48
71
|
|
|
49
72
|
/**
|
|
50
|
-
* The radius of the light
|
|
73
|
+
* The horizontal radius of the light
|
|
51
74
|
* @type {number}
|
|
52
75
|
*/
|
|
53
|
-
this.
|
|
76
|
+
this.radiusX = radiusX;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* The vertical radius of the light
|
|
80
|
+
* @type {number}
|
|
81
|
+
*/
|
|
82
|
+
this.radiusY = radiusY;
|
|
54
83
|
|
|
55
84
|
/**
|
|
56
85
|
* The intensity of the light
|
|
@@ -72,7 +101,7 @@ class Light2d extends Renderable {
|
|
|
72
101
|
this.visibleArea = pool.pull("Ellipse", this.centerX, this.centerY, this.width, this.height);
|
|
73
102
|
|
|
74
103
|
/** @ignore */
|
|
75
|
-
this.texture = pool.pull("CanvasTexture", this.width, this.height, false);
|
|
104
|
+
this.texture = pool.pull("CanvasTexture", this.width, this.height, { offscreenCanvas: false });
|
|
76
105
|
|
|
77
106
|
this.anchorPoint.set(0, 0);
|
|
78
107
|
|
|
@@ -83,7 +112,6 @@ class Light2d extends Renderable {
|
|
|
83
112
|
* returns a geometry representing the visible area of this light
|
|
84
113
|
* @name getVisibleArea
|
|
85
114
|
* @memberof Light2d
|
|
86
|
-
* @function
|
|
87
115
|
* @returns {Ellipse} the light visible mask
|
|
88
116
|
*/
|
|
89
117
|
getVisibleArea() {
|
|
@@ -91,10 +119,14 @@ class Light2d extends Renderable {
|
|
|
91
119
|
}
|
|
92
120
|
|
|
93
121
|
/**
|
|
94
|
-
*
|
|
95
|
-
* @
|
|
122
|
+
* draw this Light2d (automatically called by melonJS)
|
|
123
|
+
* @name draw
|
|
124
|
+
* @memberof Light2d
|
|
125
|
+
* @protected
|
|
126
|
+
* @param {CanvasRenderer|WebGLRenderer} renderer a renderer instance
|
|
127
|
+
* @param {Camera2d} [viewport] the viewport to (re)draw
|
|
96
128
|
*/
|
|
97
|
-
draw(renderer) {
|
|
129
|
+
draw(renderer, viewport) { // eslint-disable-line no-unused-vars
|
|
98
130
|
renderer.drawImage(this.texture.canvas, this.getBounds().x, this.getBounds().y);
|
|
99
131
|
}
|
|
100
132
|
|
|
@@ -381,7 +381,6 @@ class Renderable extends Rect {
|
|
|
381
381
|
* returns the bounding box for this renderable
|
|
382
382
|
* @name getBounds
|
|
383
383
|
* @memberof Renderable
|
|
384
|
-
* @function
|
|
385
384
|
* @returns {Bounds} bounding box Rectangle object
|
|
386
385
|
*/
|
|
387
386
|
getBounds() {
|
|
@@ -402,7 +401,6 @@ class Renderable extends Rect {
|
|
|
402
401
|
* get the renderable alpha channel value<br>
|
|
403
402
|
* @name getOpacity
|
|
404
403
|
* @memberof Renderable
|
|
405
|
-
* @function
|
|
406
404
|
* @returns {number} current opacity value between 0 and 1
|
|
407
405
|
*/
|
|
408
406
|
getOpacity() {
|
|
@@ -413,7 +411,6 @@ class Renderable extends Rect {
|
|
|
413
411
|
* set the renderable alpha channel value<br>
|
|
414
412
|
* @name setOpacity
|
|
415
413
|
* @memberof Renderable
|
|
416
|
-
* @function
|
|
417
414
|
* @param {number} alpha opacity value between 0.0 and 1.0
|
|
418
415
|
*/
|
|
419
416
|
setOpacity(alpha) {
|
|
@@ -432,7 +429,6 @@ class Renderable extends Rect {
|
|
|
432
429
|
* @see Matrix2d#scaleX
|
|
433
430
|
* @name flipX
|
|
434
431
|
* @memberof Renderable
|
|
435
|
-
* @function
|
|
436
432
|
* @param {boolean} [flip=true] `true` to flip this renderable.
|
|
437
433
|
* @returns {Renderable} Reference to this object for method chaining
|
|
438
434
|
*/
|
|
@@ -447,7 +443,6 @@ class Renderable extends Rect {
|
|
|
447
443
|
* @see Matrix2d#scaleY
|
|
448
444
|
* @name flipY
|
|
449
445
|
* @memberof Renderable
|
|
450
|
-
* @function
|
|
451
446
|
* @param {boolean} [flip=true] `true` to flip this renderable.
|
|
452
447
|
* @returns {Renderable} Reference to this object for method chaining
|
|
453
448
|
*/
|
|
@@ -462,7 +457,6 @@ class Renderable extends Rect {
|
|
|
462
457
|
* @name transform
|
|
463
458
|
* @memberof Renderable
|
|
464
459
|
* @see Renderable#currentTransform
|
|
465
|
-
* @function
|
|
466
460
|
* @param {Matrix2d} m the transformation matrix
|
|
467
461
|
* @returns {Renderable} Reference to this object for method chaining
|
|
468
462
|
*/
|
|
@@ -478,7 +472,6 @@ class Renderable extends Rect {
|
|
|
478
472
|
* return the angle to the specified target
|
|
479
473
|
* @name angleTo
|
|
480
474
|
* @memberof Renderable
|
|
481
|
-
* @function
|
|
482
475
|
* @param {Renderable|Vector2d|Vector3d} target
|
|
483
476
|
* @returns {number} angle in radians
|
|
484
477
|
*/
|
|
@@ -502,7 +495,6 @@ class Renderable extends Rect {
|
|
|
502
495
|
* return the distance to the specified target
|
|
503
496
|
* @name distanceTo
|
|
504
497
|
* @memberof Renderable
|
|
505
|
-
* @function
|
|
506
498
|
* @param {Renderable|Vector2d|Vector3d} target
|
|
507
499
|
* @returns {number} distance
|
|
508
500
|
*/
|
|
@@ -526,7 +518,6 @@ class Renderable extends Rect {
|
|
|
526
518
|
* Rotate this renderable towards the given target.
|
|
527
519
|
* @name lookAt
|
|
528
520
|
* @memberof Renderable
|
|
529
|
-
* @function
|
|
530
521
|
* @param {Renderable|Vector2d|Vector3d} target the renderable or position to look at
|
|
531
522
|
* @returns {Renderable} Reference to this object for method chaining
|
|
532
523
|
*/
|
|
@@ -550,7 +541,6 @@ class Renderable extends Rect {
|
|
|
550
541
|
* Rotate this renderable by the specified angle (in radians).
|
|
551
542
|
* @name rotate
|
|
552
543
|
* @memberof Renderable
|
|
553
|
-
* @function
|
|
554
544
|
* @param {number} angle The angle to rotate (in radians)
|
|
555
545
|
* @param {Vector2d|ObservableVector2d} [v] an optional point to rotate around
|
|
556
546
|
* @returns {Renderable} Reference to this object for method chaining
|
|
@@ -572,7 +562,6 @@ class Renderable extends Rect {
|
|
|
572
562
|
* member will be changed.
|
|
573
563
|
* @name scale
|
|
574
564
|
* @memberof Renderable
|
|
575
|
-
* @function
|
|
576
565
|
* @param {number} x a number representing the abscissa of the scaling vector.
|
|
577
566
|
* @param {number} [y=x] a number representing the ordinate of the scaling vector.
|
|
578
567
|
* @returns {Renderable} Reference to this object for method chaining
|
|
@@ -588,7 +577,6 @@ class Renderable extends Rect {
|
|
|
588
577
|
* scale the renderable around his anchor point
|
|
589
578
|
* @name scaleV
|
|
590
579
|
* @memberof Renderable
|
|
591
|
-
* @function
|
|
592
580
|
* @param {Vector2d} v scaling vector
|
|
593
581
|
* @returns {Renderable} Reference to this object for method chaining
|
|
594
582
|
*/
|
|
@@ -602,7 +590,6 @@ class Renderable extends Rect {
|
|
|
602
590
|
* automatically called by the game manager {@link game}
|
|
603
591
|
* @name update
|
|
604
592
|
* @memberof Renderable
|
|
605
|
-
* @function
|
|
606
593
|
* @protected
|
|
607
594
|
* @param {number} dt time since the last update in milliseconds.
|
|
608
595
|
* @returns {boolean} true if the renderable is dirty
|
|
@@ -616,7 +603,6 @@ class Renderable extends Rect {
|
|
|
616
603
|
* @ignore
|
|
617
604
|
* @name updateBounds
|
|
618
605
|
* @memberof Renderable
|
|
619
|
-
* @function
|
|
620
606
|
* @returns {Bounds} this shape bounding box Rectangle object
|
|
621
607
|
*/
|
|
622
608
|
updateBounds() {
|
|
@@ -630,7 +616,6 @@ class Renderable extends Rect {
|
|
|
630
616
|
* @ignore
|
|
631
617
|
* @name updateBoundsPos
|
|
632
618
|
* @memberof Renderable
|
|
633
|
-
* @function
|
|
634
619
|
*/
|
|
635
620
|
updateBoundsPos(newX, newY) {
|
|
636
621
|
var bounds = this.getBounds();
|
|
@@ -663,7 +648,6 @@ class Renderable extends Rect {
|
|
|
663
648
|
* return the renderable absolute position in the game world
|
|
664
649
|
* @name getAbsolutePosition
|
|
665
650
|
* @memberof Renderable
|
|
666
|
-
* @function
|
|
667
651
|
* @returns {Vector2d}
|
|
668
652
|
*/
|
|
669
653
|
getAbsolutePosition() {
|
|
@@ -683,7 +667,6 @@ class Renderable extends Rect {
|
|
|
683
667
|
* @private
|
|
684
668
|
* @name onAnchorUpdate
|
|
685
669
|
* @memberof Renderable
|
|
686
|
-
* @function
|
|
687
670
|
* @param {number} x the new X value to be set for the anchor
|
|
688
671
|
* @param {number} y the new Y value to be set for the anchor
|
|
689
672
|
*/
|
|
@@ -701,7 +684,6 @@ class Renderable extends Rect {
|
|
|
701
684
|
* automatically called by the game manager {@link game}
|
|
702
685
|
* @name preDraw
|
|
703
686
|
* @memberof Renderable
|
|
704
|
-
* @function
|
|
705
687
|
* @protected
|
|
706
688
|
* @param {CanvasRenderer|WebGLRenderer} renderer a renderer object
|
|
707
689
|
*/
|
|
@@ -753,15 +735,14 @@ class Renderable extends Rect {
|
|
|
753
735
|
}
|
|
754
736
|
|
|
755
737
|
/**
|
|
756
|
-
*
|
|
757
|
-
* automatically called by the game manager {@link game}
|
|
738
|
+
* draw this renderable (automatically called by melonJS)
|
|
758
739
|
* @name draw
|
|
759
740
|
* @memberof Renderable
|
|
760
|
-
* @function
|
|
761
741
|
* @protected
|
|
762
|
-
* @param {CanvasRenderer|WebGLRenderer} renderer a renderer
|
|
742
|
+
* @param {CanvasRenderer|WebGLRenderer} renderer a renderer instance
|
|
743
|
+
* @param {Camera2d} [viewport] the viewport to (re)draw
|
|
763
744
|
*/
|
|
764
|
-
draw(renderer) { // eslint-disable-line no-unused-vars
|
|
745
|
+
draw(renderer, viewport) { // eslint-disable-line no-unused-vars
|
|
765
746
|
// empty one !
|
|
766
747
|
}
|
|
767
748
|
|
|
@@ -770,7 +751,6 @@ class Renderable extends Rect {
|
|
|
770
751
|
* automatically called by the game manager {@link game}
|
|
771
752
|
* @name postDraw
|
|
772
753
|
* @memberof Renderable
|
|
773
|
-
* @function
|
|
774
754
|
* @protected
|
|
775
755
|
* @param {CanvasRenderer|WebGLRenderer} renderer a renderer object
|
|
776
756
|
*/
|
|
@@ -795,8 +775,7 @@ class Renderable extends Rect {
|
|
|
795
775
|
* when this renderable body is colliding with another one
|
|
796
776
|
* @name onCollision
|
|
797
777
|
* @memberof Renderable
|
|
798
|
-
* @
|
|
799
|
-
* @param {collision.ResponseObject} response the collision response object
|
|
778
|
+
* @param {ResponseObject} response the collision response object
|
|
800
779
|
* @param {Renderable} other the other renderable touching this one (a reference to response.a or response.b)
|
|
801
780
|
* @returns {boolean} true if the object should respond to the collision (its position and velocity will be corrected)
|
|
802
781
|
* @example
|
|
@@ -813,7 +792,7 @@ class Renderable extends Rect {
|
|
|
813
792
|
* return true;
|
|
814
793
|
* },
|
|
815
794
|
*/
|
|
816
|
-
onCollision() {
|
|
795
|
+
onCollision(response, other) { // eslint-disable-line no-unused-vars
|
|
817
796
|
return false;
|
|
818
797
|
}
|
|
819
798
|
|
|
@@ -872,7 +851,6 @@ class Renderable extends Rect {
|
|
|
872
851
|
* Called by engine before deleting the object
|
|
873
852
|
* @name onDestroyEvent
|
|
874
853
|
* @memberof Renderable
|
|
875
|
-
* @function
|
|
876
854
|
*/
|
|
877
855
|
onDestroyEvent() {
|
|
878
856
|
// to be extended !
|
package/src/renderable/sprite.js
CHANGED
|
@@ -210,7 +210,6 @@ class Sprite extends Renderable {
|
|
|
210
210
|
* return the flickering state of the object
|
|
211
211
|
* @name isFlickering
|
|
212
212
|
* @memberof Sprite
|
|
213
|
-
* @function
|
|
214
213
|
* @returns {boolean}
|
|
215
214
|
*/
|
|
216
215
|
isFlickering() {
|
|
@@ -221,7 +220,6 @@ class Sprite extends Renderable {
|
|
|
221
220
|
* make the object flicker
|
|
222
221
|
* @name flicker
|
|
223
222
|
* @memberof Sprite
|
|
224
|
-
* @function
|
|
225
223
|
* @param {number} duration expressed in milliseconds
|
|
226
224
|
* @param {Function} callback Function to call when flickering ends
|
|
227
225
|
* @returns {Sprite} Reference to this object for method chaining
|
|
@@ -252,7 +250,6 @@ class Sprite extends Renderable {
|
|
|
252
250
|
* <img src="images/spritesheet_grid.png"/>
|
|
253
251
|
* @name addAnimation
|
|
254
252
|
* @memberof Sprite
|
|
255
|
-
* @function
|
|
256
253
|
* @param {string} name animation id
|
|
257
254
|
* @param {number[]|string[]|object[]} index list of sprite index or name
|
|
258
255
|
* defining the animation. Can also use objects to specify delay for each frame, see below
|
|
@@ -352,7 +349,6 @@ class Sprite extends Renderable {
|
|
|
352
349
|
* this will always change the animation & set the frame to zero
|
|
353
350
|
* @name setCurrentAnimation
|
|
354
351
|
* @memberof Sprite
|
|
355
|
-
* @function
|
|
356
352
|
* @param {string} name animation id
|
|
357
353
|
* @param {string|Function} [resetAnim] animation id to switch to when complete, or callback
|
|
358
354
|
* @param {boolean} [preserve_dt=false] if false will reset the elapsed time counter since last frame
|
|
@@ -413,7 +409,6 @@ class Sprite extends Renderable {
|
|
|
413
409
|
* reverse the given or current animation if none is specified
|
|
414
410
|
* @name reverseAnimation
|
|
415
411
|
* @memberof Sprite
|
|
416
|
-
* @function
|
|
417
412
|
* @param {string} [name] animation id
|
|
418
413
|
* @returns {Sprite} Reference to this object for method chaining
|
|
419
414
|
* @see Sprite#animationspeed
|
|
@@ -432,7 +427,6 @@ class Sprite extends Renderable {
|
|
|
432
427
|
* return true if the specified animation is the current one.
|
|
433
428
|
* @name isCurrentAnimation
|
|
434
429
|
* @memberof Sprite
|
|
435
|
-
* @function
|
|
436
430
|
* @param {string} name animation id
|
|
437
431
|
* @returns {boolean}
|
|
438
432
|
* @example
|
|
@@ -449,7 +443,6 @@ class Sprite extends Renderable {
|
|
|
449
443
|
* @see Texture.getRegion
|
|
450
444
|
* @name setRegion
|
|
451
445
|
* @memberof Sprite
|
|
452
|
-
* @function
|
|
453
446
|
* @param {object} region typically returned through me.Texture.getRegion()
|
|
454
447
|
* @returns {Sprite} Reference to this object for method chaining
|
|
455
448
|
* @example
|
|
@@ -481,7 +474,6 @@ class Sprite extends Renderable {
|
|
|
481
474
|
* force the current animation frame index.
|
|
482
475
|
* @name setAnimationFrame
|
|
483
476
|
* @memberof Sprite
|
|
484
|
-
* @function
|
|
485
477
|
* @param {number} [idx=0] animation frame index
|
|
486
478
|
* @returns {Sprite} Reference to this object for method chaining
|
|
487
479
|
* @example
|
|
@@ -497,7 +489,6 @@ class Sprite extends Renderable {
|
|
|
497
489
|
* return the current animation frame index.
|
|
498
490
|
* @name getCurrentAnimationFrame
|
|
499
491
|
* @memberof Sprite
|
|
500
|
-
* @function
|
|
501
492
|
* @returns {number} current animation frame index
|
|
502
493
|
*/
|
|
503
494
|
getCurrentAnimationFrame() {
|
|
@@ -508,7 +499,6 @@ class Sprite extends Renderable {
|
|
|
508
499
|
* Returns the frame object by the index.
|
|
509
500
|
* @name getAnimationFrameObjectByIndex
|
|
510
501
|
* @memberof Sprite
|
|
511
|
-
* @function
|
|
512
502
|
* @ignore
|
|
513
503
|
* @param {number} id the frame id
|
|
514
504
|
* @returns {number} if using number indices. Returns {object} containing frame data if using texture atlas
|
|
@@ -522,7 +512,6 @@ class Sprite extends Renderable {
|
|
|
522
512
|
* automatically called by the game manager {@link game}
|
|
523
513
|
* @name update
|
|
524
514
|
* @memberof Sprite
|
|
525
|
-
* @function
|
|
526
515
|
* @protected
|
|
527
516
|
* @param {number} dt time since the last update in milliseconds.
|
|
528
517
|
* @returns {boolean} true if the Sprite is dirty
|
|
@@ -597,15 +586,14 @@ class Sprite extends Renderable {
|
|
|
597
586
|
}
|
|
598
587
|
|
|
599
588
|
/**
|
|
600
|
-
*
|
|
601
|
-
* automatically called by the game manager {@link game}
|
|
589
|
+
* draw this srite (automatically called by melonJS)
|
|
602
590
|
* @name draw
|
|
603
591
|
* @memberof Sprite
|
|
604
|
-
* @function
|
|
605
592
|
* @protected
|
|
606
|
-
* @param {CanvasRenderer|WebGLRenderer} renderer a renderer
|
|
593
|
+
* @param {CanvasRenderer|WebGLRenderer} renderer a renderer instance
|
|
594
|
+
* @param {Camera2d} [viewport] the viewport to (re)draw
|
|
607
595
|
*/
|
|
608
|
-
draw(renderer) {
|
|
596
|
+
draw(renderer, viewport) { // eslint-disable-line no-unused-vars
|
|
609
597
|
// do nothing if we are flickering
|
|
610
598
|
if (this._flicker.isFlickering) {
|
|
611
599
|
this._flicker.state = !this._flicker.state;
|
|
@@ -3,6 +3,7 @@ import collision from "./../physics/collision.js";
|
|
|
3
3
|
import Body from "./../physics/body.js";
|
|
4
4
|
import level from "./../level/level.js";
|
|
5
5
|
import { world, viewport } from "./../game.js";
|
|
6
|
+
import pool from "./../system/pooling.js";
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* @classdesc
|
|
@@ -105,7 +106,6 @@ class Trigger extends Renderable {
|
|
|
105
106
|
* trigger this event
|
|
106
107
|
* @name triggerEvent
|
|
107
108
|
* @memberof Trigger
|
|
108
|
-
* @function
|
|
109
109
|
* @protected
|
|
110
110
|
*/
|
|
111
111
|
triggerEvent() {
|
|
@@ -129,8 +129,15 @@ class Trigger extends Renderable {
|
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
-
/**
|
|
133
|
-
|
|
132
|
+
/**
|
|
133
|
+
* onCollision callback, triggered in case of collision with this trigger
|
|
134
|
+
* @name onCollision
|
|
135
|
+
* @memberof Trigger
|
|
136
|
+
* @param {ResponseObject} response the collision response object
|
|
137
|
+
* @param {Renderable} other the other renderable touching this one (a reference to response.a or response.b)
|
|
138
|
+
* @returns {boolean} true if the object should respond to the collision (its position and velocity will be corrected)
|
|
139
|
+
*/
|
|
140
|
+
onCollision(response, other) { // eslint-disable-line no-unused-vars
|
|
134
141
|
if (this.name === "Trigger") {
|
|
135
142
|
this.triggerEvent.apply(this);
|
|
136
143
|
}
|
package/src/state/stage.js
CHANGED
|
@@ -116,7 +116,6 @@ class Stage {
|
|
|
116
116
|
* @name update
|
|
117
117
|
* @memberof Stage
|
|
118
118
|
* @ignore
|
|
119
|
-
* @function
|
|
120
119
|
* @param {number} dt time since the last update in milliseconds.
|
|
121
120
|
* @returns {boolean}
|
|
122
121
|
*/
|
|
@@ -147,7 +146,6 @@ class Stage {
|
|
|
147
146
|
* @name draw
|
|
148
147
|
* @memberof Stage
|
|
149
148
|
* @ignore
|
|
150
|
-
* @function
|
|
151
149
|
* @param {CanvasRenderer|WebGLRenderer} renderer a renderer object
|
|
152
150
|
*/
|
|
153
151
|
draw(renderer) {
|
|
@@ -203,7 +201,6 @@ class Stage {
|
|
|
203
201
|
* this is typically where you will load a level, add renderables, etc...
|
|
204
202
|
* @name onResetEvent
|
|
205
203
|
* @memberof Stage
|
|
206
|
-
* @function
|
|
207
204
|
* @param {object} [...arguments] optional arguments passed when switching state
|
|
208
205
|
* @see state#change
|
|
209
206
|
*/
|
|
@@ -220,7 +217,6 @@ class Stage {
|
|
|
220
217
|
* called by the state manager before switching to another state
|
|
221
218
|
* @name onDestroyEvent
|
|
222
219
|
* @memberof Stage
|
|
223
|
-
* @function
|
|
224
220
|
*/
|
|
225
221
|
onDestroyEvent() {
|
|
226
222
|
// execute onDestroyEvent function if given through the constructor
|
package/src/state/state.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { pauseTrack, resumeTrack } from "./../audio/audio.js";
|
|
2
2
|
import * as fctUtil from "./../utils/function.js";
|
|
3
3
|
import * as event from "./../system/event.js";
|
|
4
|
-
import timer from "./../system/timer.js";
|
|
5
4
|
import * as game from "./../game.js";
|
|
6
5
|
import Stage from "./../state/stage.js";
|
|
7
6
|
import DefaultLoadingScreen from "./../loader/loadingscreen.js";
|
|
@@ -41,9 +40,6 @@ var _pauseTime = 0;
|
|
|
41
40
|
function _startRunLoop() {
|
|
42
41
|
// ensure nothing is running first and in valid state
|
|
43
42
|
if ((_animFrameId === -1) && (_state !== -1)) {
|
|
44
|
-
// reset the timer
|
|
45
|
-
timer.reset();
|
|
46
|
-
|
|
47
43
|
// start the main loop
|
|
48
44
|
_animFrameId = globalThis.requestAnimationFrame(_renderFrame);
|
|
49
45
|
}
|
|
@@ -56,9 +52,6 @@ function _startRunLoop() {
|
|
|
56
52
|
function _resumeRunLoop() {
|
|
57
53
|
// ensure game is actually paused and in valid state
|
|
58
54
|
if (_isPaused && (_state !== -1)) {
|
|
59
|
-
// reset the timer
|
|
60
|
-
timer.reset();
|
|
61
|
-
|
|
62
55
|
_isPaused = false;
|
|
63
56
|
}
|
|
64
57
|
}
|
|
@@ -124,6 +117,9 @@ function _switchState(state) {
|
|
|
124
117
|
// new requested state
|
|
125
118
|
_startRunLoop();
|
|
126
119
|
|
|
120
|
+
// publish the pause event
|
|
121
|
+
event.emit(event.STATE_CHANGE);
|
|
122
|
+
|
|
127
123
|
// execute callback if defined
|
|
128
124
|
if (_onSwitchComplete) {
|
|
129
125
|
_onSwitchComplete();
|
|
@@ -253,7 +249,6 @@ var state = {
|
|
|
253
249
|
* @name stop
|
|
254
250
|
* @memberof state
|
|
255
251
|
* @public
|
|
256
|
-
* @function
|
|
257
252
|
* @param {boolean} [pauseTrack=false] pause current track on screen stop.
|
|
258
253
|
*/
|
|
259
254
|
stop(pauseTrack=false) {
|
|
@@ -280,7 +275,6 @@ var state = {
|
|
|
280
275
|
* @name pause
|
|
281
276
|
* @memberof state
|
|
282
277
|
* @public
|
|
283
|
-
* @function
|
|
284
278
|
* @param {boolean} [music=false] pause current music track on screen pause
|
|
285
279
|
*/
|
|
286
280
|
pause(music=false) {
|
|
@@ -306,7 +300,6 @@ var state = {
|
|
|
306
300
|
* @name restart
|
|
307
301
|
* @memberof state
|
|
308
302
|
* @public
|
|
309
|
-
* @function
|
|
310
303
|
* @param {boolean} [music=false] resume current music track on screen resume
|
|
311
304
|
*/
|
|
312
305
|
restart(music=false) {
|
|
@@ -334,7 +327,6 @@ var state = {
|
|
|
334
327
|
* @name resume
|
|
335
328
|
* @memberof state
|
|
336
329
|
* @public
|
|
337
|
-
* @function
|
|
338
330
|
* @param {boolean} [music=false] resume current music track on screen resume
|
|
339
331
|
*/
|
|
340
332
|
resume(music=false) {
|
|
@@ -359,7 +351,6 @@ var state = {
|
|
|
359
351
|
* @name isRunning
|
|
360
352
|
* @memberof state
|
|
361
353
|
* @public
|
|
362
|
-
* @function
|
|
363
354
|
* @returns {boolean} true if a "process is running"
|
|
364
355
|
*/
|
|
365
356
|
isRunning() {
|
|
@@ -371,7 +362,6 @@ var state = {
|
|
|
371
362
|
* @name isPaused
|
|
372
363
|
* @memberof state
|
|
373
364
|
* @public
|
|
374
|
-
* @function
|
|
375
365
|
* @returns {boolean} true if the game is paused
|
|
376
366
|
*/
|
|
377
367
|
isPaused() {
|
|
@@ -383,7 +373,6 @@ var state = {
|
|
|
383
373
|
* @name set
|
|
384
374
|
* @memberof state
|
|
385
375
|
* @public
|
|
386
|
-
* @function
|
|
387
376
|
* @param {number} state State ID (see constants)
|
|
388
377
|
* @param {Stage} stage Instantiated Stage to associate with state ID
|
|
389
378
|
* @param {boolean} [start = false] if true the state will be changed immediately after adding it.
|
|
@@ -437,19 +426,34 @@ var state = {
|
|
|
437
426
|
}
|
|
438
427
|
},
|
|
439
428
|
|
|
429
|
+
/**
|
|
430
|
+
* returns the stage associated with the specified state
|
|
431
|
+
* (or the current one if none is specified)
|
|
432
|
+
* @name set
|
|
433
|
+
* @memberof state
|
|
434
|
+
* @public
|
|
435
|
+
* @param {number} [state] State ID (see constants)
|
|
436
|
+
* @returns {Stage}
|
|
437
|
+
*/
|
|
438
|
+
get(state = _state) {
|
|
439
|
+
if (typeof _stages[state] !== "undefined") {
|
|
440
|
+
return _stages[state].stage;
|
|
441
|
+
} else {
|
|
442
|
+
return undefined;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
},
|
|
446
|
+
|
|
440
447
|
/**
|
|
441
448
|
* return a reference to the current stage<br>
|
|
442
449
|
* useful to call a object specific method
|
|
443
450
|
* @name current
|
|
444
451
|
* @memberof state
|
|
445
452
|
* @public
|
|
446
|
-
* @function
|
|
447
453
|
* @returns {Stage}
|
|
448
454
|
*/
|
|
449
455
|
current() {
|
|
450
|
-
|
|
451
|
-
return _stages[_state].stage;
|
|
452
|
-
}
|
|
456
|
+
return this.get();
|
|
453
457
|
},
|
|
454
458
|
|
|
455
459
|
/**
|
|
@@ -457,7 +461,6 @@ var state = {
|
|
|
457
461
|
* @name transition
|
|
458
462
|
* @memberof state
|
|
459
463
|
* @public
|
|
460
|
-
* @function
|
|
461
464
|
* @param {string} effect (only "fade" is supported for now)
|
|
462
465
|
* @param {Color|string} color a CSS color value
|
|
463
466
|
* @param {number} [duration=1000] expressed in milliseconds
|
|
@@ -474,7 +477,6 @@ var state = {
|
|
|
474
477
|
* @name setTransition
|
|
475
478
|
* @memberof state
|
|
476
479
|
* @public
|
|
477
|
-
* @function
|
|
478
480
|
* @param {number} state State ID (see constants)
|
|
479
481
|
* @param {boolean} enable
|
|
480
482
|
*/
|
|
@@ -487,7 +489,6 @@ var state = {
|
|
|
487
489
|
* @name change
|
|
488
490
|
* @memberof state
|
|
489
491
|
* @public
|
|
490
|
-
* @function
|
|
491
492
|
* @param {number} state State ID (see constants)
|
|
492
493
|
* @param {boolean} forceChange if true the state will be changed immediately
|
|
493
494
|
* @param {object} [...arguments] extra arguments to be passed to the reset functions
|
|
@@ -511,7 +512,6 @@ var state = {
|
|
|
511
512
|
}
|
|
512
513
|
// if fading effect
|
|
513
514
|
if (_fade.duration && _stages[state].transition) {
|
|
514
|
-
/** @ignore */
|
|
515
515
|
_onSwitchComplete = () => {
|
|
516
516
|
game.viewport.fadeOut(_fade.color, _fade.duration);
|
|
517
517
|
};
|
|
@@ -542,7 +542,6 @@ var state = {
|
|
|
542
542
|
* @name isCurrent
|
|
543
543
|
* @memberof state
|
|
544
544
|
* @public
|
|
545
|
-
* @function
|
|
546
545
|
* @param {number} state State ID (see constants)
|
|
547
546
|
* @returns {boolean} true if the specified state is the current one
|
|
548
547
|
*/
|