melonjs 15.1.5 → 15.2.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 +2 -2
- package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
- package/dist/melonjs.mjs/_virtual/earcut.js +1 -1
- package/dist/melonjs.mjs/_virtual/howler.js +1 -1
- package/dist/melonjs.mjs/_virtual/index.js +1 -1
- package/dist/melonjs.mjs/application/application.js +3 -3
- package/dist/melonjs.mjs/application/header.js +1 -1
- package/dist/melonjs.mjs/application/resize.js +1 -1
- package/dist/melonjs.mjs/application/settings.js +1 -1
- package/dist/melonjs.mjs/audio/audio.js +1 -1
- package/dist/melonjs.mjs/camera/camera2d.js +3 -3
- package/dist/melonjs.mjs/const.js +1 -1
- package/dist/melonjs.mjs/entity/entity.js +1 -1
- package/dist/melonjs.mjs/geometries/ellipse.js +1 -1
- package/dist/melonjs.mjs/geometries/line.js +1 -1
- package/dist/melonjs.mjs/geometries/path2d.js +1 -1
- package/dist/melonjs.mjs/geometries/point.js +1 -1
- package/dist/melonjs.mjs/geometries/poly.js +1 -1
- package/dist/melonjs.mjs/geometries/rectangle.js +1 -1
- package/dist/melonjs.mjs/geometries/roundrect.js +1 -1
- package/dist/melonjs.mjs/index.js +12 -7
- package/dist/melonjs.mjs/input/gamepad.js +1 -1
- package/dist/melonjs.mjs/input/input.js +1 -1
- package/dist/melonjs.mjs/input/keyboard.js +1 -1
- package/dist/melonjs.mjs/input/pointer.js +1 -1
- package/dist/melonjs.mjs/input/pointerevent.js +1 -1
- package/dist/melonjs.mjs/lang/console.js +1 -1
- package/dist/melonjs.mjs/lang/deprecated.js +3 -2
- package/dist/melonjs.mjs/level/level.js +5 -4
- package/dist/melonjs.mjs/level/tiled/TMXGroup.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXLayer.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXObject.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXTile.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +3 -3
- package/dist/melonjs.mjs/level/tiled/TMXTileset.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXUtils.js +6 -8
- package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +1 -1
- package/dist/melonjs.mjs/loader/cache.js +1 -1
- package/dist/melonjs.mjs/loader/loader.js +1 -1
- package/dist/melonjs.mjs/loader/loadingscreen.js +1 -1
- package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
- package/dist/melonjs.mjs/loader/parser.js +1 -1
- package/dist/melonjs.mjs/loader/settings.js +1 -1
- package/dist/melonjs.mjs/math/color.js +1 -1
- package/dist/melonjs.mjs/math/math.js +1 -1
- package/dist/melonjs.mjs/math/matrix2.js +1 -1
- package/dist/melonjs.mjs/math/matrix3.js +1 -1
- package/dist/melonjs.mjs/math/observable_vector2.js +1 -1
- package/dist/melonjs.mjs/math/observable_vector3.js +1 -1
- package/dist/melonjs.mjs/math/vector2.js +1 -1
- package/dist/melonjs.mjs/math/vector3.js +1 -1
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/arraymultimap.js +1 -1
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +1 -1
- package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
- package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +1 -1
- package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +1 -1
- package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +1 -1
- package/dist/melonjs.mjs/particles/emitter.js +1 -1
- package/dist/melonjs.mjs/particles/particle.js +1 -1
- package/dist/melonjs.mjs/particles/settings.js +1 -1
- package/dist/melonjs.mjs/physics/body.js +3 -3
- package/dist/melonjs.mjs/physics/bounds.js +1 -1
- package/dist/melonjs.mjs/physics/collision.js +1 -1
- package/dist/melonjs.mjs/physics/detector.js +4 -4
- package/dist/melonjs.mjs/physics/quadtree.js +1 -1
- package/dist/melonjs.mjs/physics/response.js +1 -1
- package/dist/melonjs.mjs/physics/sat.js +9 -9
- package/dist/melonjs.mjs/physics/world.js +1 -1
- package/dist/melonjs.mjs/plugin/plugin.js +106 -108
- package/dist/melonjs.mjs/renderable/collectable.js +1 -1
- package/dist/melonjs.mjs/renderable/colorlayer.js +1 -1
- package/dist/melonjs.mjs/renderable/container.js +20 -19
- package/dist/melonjs.mjs/renderable/draggable.js +121 -0
- package/dist/melonjs.mjs/renderable/dragndrop.js +3 -113
- package/dist/melonjs.mjs/renderable/imagelayer.js +1 -1
- package/dist/melonjs.mjs/renderable/light2d.js +1 -1
- package/dist/melonjs.mjs/renderable/nineslicesprite.js +1 -1
- package/dist/melonjs.mjs/renderable/renderable.js +2 -2
- package/dist/melonjs.mjs/renderable/sprite.js +1 -1
- package/dist/melonjs.mjs/renderable/trigger.js +2 -2
- package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +1 -1
- package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +1 -1
- package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +1 -1
- package/dist/melonjs.mjs/state/stage.js +1 -1
- package/dist/melonjs.mjs/state/state.js +1 -1
- package/dist/melonjs.mjs/system/device.js +1 -1
- package/dist/melonjs.mjs/system/dom.js +1 -1
- package/dist/melonjs.mjs/system/event.js +1 -1
- package/dist/melonjs.mjs/system/platform.js +1 -1
- package/dist/melonjs.mjs/system/pooling.js +1 -1
- package/dist/melonjs.mjs/system/save.js +1 -1
- package/dist/melonjs.mjs/system/timer.js +4 -4
- package/dist/melonjs.mjs/text/bitmaptext.js +1 -1
- package/dist/melonjs.mjs/text/bitmaptextdata.js +1 -1
- package/dist/melonjs.mjs/text/glyph.js +1 -1
- package/dist/melonjs.mjs/text/text.js +1 -1
- package/dist/melonjs.mjs/text/textmetrics.js +1 -1
- package/dist/melonjs.mjs/text/textstyle.js +1 -1
- package/dist/melonjs.mjs/tweens/easing.js +1 -1
- package/dist/melonjs.mjs/tweens/interpolation.js +1 -1
- package/dist/melonjs.mjs/tweens/tween.js +1 -1
- package/dist/melonjs.mjs/utils/agent.js +1 -1
- package/dist/melonjs.mjs/utils/array.js +1 -1
- package/dist/melonjs.mjs/utils/file.js +1 -1
- package/dist/melonjs.mjs/utils/function.js +1 -1
- package/dist/melonjs.mjs/utils/string.js +1 -1
- package/dist/melonjs.mjs/utils/utils.js +105 -111
- package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +1 -1
- package/dist/melonjs.mjs/video/renderer.js +1 -1
- package/dist/melonjs.mjs/video/texture/atlas.js +1 -1
- package/dist/melonjs.mjs/video/texture/cache.js +1 -1
- package/dist/melonjs.mjs/video/texture/canvas_texture.js +1 -1
- package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
- package/dist/melonjs.mjs/video/video.js +4 -4
- package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +1 -1
- package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +1 -1
- package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +1 -1
- package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +1 -1
- package/dist/melonjs.mjs/video/webgl/glshader.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/attributes.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/precision.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/program.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +1 -1
- package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +1 -1
- package/dist/melonjs.module.js +516 -500
- package/dist/types/camera/camera2d.d.ts +4 -4
- package/dist/types/index.d.ts +4 -4
- package/dist/types/physics/body.d.ts +4 -4
- package/dist/types/physics/detector.d.ts +5 -5
- package/dist/types/physics/sat.d.ts +12 -12
- package/dist/types/plugin/plugin.d.ts +60 -5
- package/dist/types/renderable/container.d.ts +25 -25
- package/dist/types/renderable/draggable.d.ts +53 -0
- package/dist/types/renderable/dragndrop.d.ts +0 -52
- package/dist/types/renderable/renderable.d.ts +2 -2
- package/dist/types/utils/utils.d.ts +56 -17
- package/package.json +8 -8
- package/src/application/application.js +2 -2
- package/src/camera/camera2d.js +2 -2
- package/src/index.js +5 -3
- package/src/lang/deprecated.js +2 -1
- package/src/level/level.js +4 -3
- package/src/level/tiled/TMXTileMap.js +2 -2
- package/src/level/tiled/TMXUtils.js +4 -3
- package/src/physics/body.js +2 -2
- package/src/physics/detector.js +3 -3
- package/src/physics/sat.js +8 -8
- package/src/plugin/plugin.js +103 -105
- package/src/renderable/container.js +19 -18
- package/src/renderable/draggable.js +114 -0
- package/src/renderable/dragndrop.js +0 -109
- package/src/renderable/renderable.js +1 -1
- package/src/renderable/trigger.js +1 -1
- package/src/system/timer.js +3 -3
- package/src/utils/utils.js +102 -111
- package/src/video/video.js +3 -3
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import Vector2d from "./../math/vector2.js";
|
|
2
|
+
import * as input from "./../input/input.js";
|
|
3
|
+
import * as event from "./../system/event.js";
|
|
4
|
+
import Renderable from "./../renderable/renderable.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @classdesc
|
|
8
|
+
* A Draggable base object
|
|
9
|
+
* @see DropTarget
|
|
10
|
+
* @augments Renderable
|
|
11
|
+
*/
|
|
12
|
+
export class Draggable extends Renderable {
|
|
13
|
+
/**
|
|
14
|
+
* @param {number} x - the x coordinates of the draggable object
|
|
15
|
+
* @param {number} y - the y coordinates of the draggable object
|
|
16
|
+
* @param {number} width - draggable object width
|
|
17
|
+
* @param {number} height - draggable object height
|
|
18
|
+
*/
|
|
19
|
+
constructor(x, y, width, height) {
|
|
20
|
+
super(x, y, width, height);
|
|
21
|
+
this.isKinematic = false;
|
|
22
|
+
this.dragging = false;
|
|
23
|
+
this.dragId = null;
|
|
24
|
+
this.grabOffset = new Vector2d(0, 0);
|
|
25
|
+
this.initEvents();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Initializes the events the modules needs to listen to
|
|
30
|
+
* It translates the pointer events to me.events
|
|
31
|
+
* in order to make them pass through the system and to make
|
|
32
|
+
* this module testable. Then we subscribe this module to the
|
|
33
|
+
* transformed events.
|
|
34
|
+
* @name initEvents
|
|
35
|
+
* @memberof Draggable
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
38
|
+
initEvents() {
|
|
39
|
+
input.registerPointerEvent("pointerdown", this, (e) => event.emit(event.DRAGSTART, e, this));
|
|
40
|
+
input.registerPointerEvent("pointerup", this, (e) => event.emit(event.DRAGEND, e, this));
|
|
41
|
+
input.registerPointerEvent("pointercancel", this, (e) => event.emit(event.DRAGEND, e, this));
|
|
42
|
+
event.on(event.POINTERMOVE, (e) => this.dragMove(e));
|
|
43
|
+
event.on(event.DRAGSTART, (e, draggable) => {
|
|
44
|
+
if (draggable === this) {
|
|
45
|
+
this.dragStart(e);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
event.on(event.DRAGEND, (e, draggable) => {
|
|
49
|
+
if (draggable === this) {
|
|
50
|
+
this.dragEnd(e);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Gets called when the user starts dragging the entity
|
|
57
|
+
* @name dragStart
|
|
58
|
+
* @memberof Draggable
|
|
59
|
+
* @param {object} e - the pointer event
|
|
60
|
+
* @returns {boolean} false if the object is being dragged
|
|
61
|
+
*/
|
|
62
|
+
dragStart(e) {
|
|
63
|
+
if (this.dragging === false) {
|
|
64
|
+
this.dragging = true;
|
|
65
|
+
this.grabOffset.set(e.gameX, e.gameY);
|
|
66
|
+
this.grabOffset.sub(this.pos);
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Gets called when the user drags this entity around
|
|
73
|
+
* @name dragMove
|
|
74
|
+
* @memberof Draggable
|
|
75
|
+
* @param {object} e - the pointer event
|
|
76
|
+
*/
|
|
77
|
+
dragMove(e) {
|
|
78
|
+
if (this.dragging === true) {
|
|
79
|
+
this.pos.set(e.gameX, e.gameY, this.pos.z); //TODO : z ?
|
|
80
|
+
this.pos.sub(this.grabOffset);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Gets called when the user stops dragging the entity
|
|
86
|
+
* @name dragEnd
|
|
87
|
+
* @memberof Draggable
|
|
88
|
+
* @returns {boolean} false if the object stopped being dragged
|
|
89
|
+
*/
|
|
90
|
+
dragEnd() {
|
|
91
|
+
if (this.dragging === true) {
|
|
92
|
+
this.dragging = false;
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Destructor
|
|
99
|
+
* @name destroy
|
|
100
|
+
* @memberof Draggable
|
|
101
|
+
* @ignore
|
|
102
|
+
*/
|
|
103
|
+
destroy() {
|
|
104
|
+
event.off(event.POINTERMOVE, this.dragMove);
|
|
105
|
+
event.off(event.DRAGSTART, this.dragStart);
|
|
106
|
+
event.off(event.DRAGEND, this.dragEnd);
|
|
107
|
+
input.releasePointerEvent("pointerdown", this);
|
|
108
|
+
input.releasePointerEvent("pointerup", this);
|
|
109
|
+
input.releasePointerEvent("pointercancel", this);
|
|
110
|
+
super.destroy();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
|
|
@@ -1,115 +1,6 @@
|
|
|
1
|
-
import Vector2d from "./../math/vector2.js";
|
|
2
|
-
import * as input from "./../input/input.js";
|
|
3
1
|
import * as event from "./../system/event.js";
|
|
4
2
|
import Renderable from "./../renderable/renderable.js";
|
|
5
3
|
|
|
6
|
-
/**
|
|
7
|
-
* @classdesc
|
|
8
|
-
* A Draggable base object
|
|
9
|
-
* @see DropTarget
|
|
10
|
-
* @augments Renderable
|
|
11
|
-
*/
|
|
12
|
-
export class Draggable extends Renderable {
|
|
13
|
-
/**
|
|
14
|
-
* @param {number} x - the x coordinates of the draggable object
|
|
15
|
-
* @param {number} y - the y coordinates of the draggable object
|
|
16
|
-
* @param {number} width - draggable object width
|
|
17
|
-
* @param {number} height - draggable object height
|
|
18
|
-
*/
|
|
19
|
-
constructor(x, y, width, height) {
|
|
20
|
-
super(x, y, width, height);
|
|
21
|
-
this.isKinematic = false;
|
|
22
|
-
this.dragging = false;
|
|
23
|
-
this.dragId = null;
|
|
24
|
-
this.grabOffset = new Vector2d(0, 0);
|
|
25
|
-
this.initEvents();
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Initializes the events the modules needs to listen to
|
|
30
|
-
* It translates the pointer events to me.events
|
|
31
|
-
* in order to make them pass through the system and to make
|
|
32
|
-
* this module testable. Then we subscribe this module to the
|
|
33
|
-
* transformed events.
|
|
34
|
-
* @name initEvents
|
|
35
|
-
* @memberof Draggable
|
|
36
|
-
* @private
|
|
37
|
-
*/
|
|
38
|
-
initEvents() {
|
|
39
|
-
input.registerPointerEvent("pointerdown", this, (e) => event.emit(event.DRAGSTART, e, this));
|
|
40
|
-
input.registerPointerEvent("pointerup", this, (e) => event.emit(event.DRAGEND, e, this));
|
|
41
|
-
input.registerPointerEvent("pointercancel", this, (e) => event.emit(event.DRAGEND, e, this));
|
|
42
|
-
event.on(event.POINTERMOVE, (e) => this.dragMove(e));
|
|
43
|
-
event.on(event.DRAGSTART, (e, draggable) => {
|
|
44
|
-
if (draggable === this) {
|
|
45
|
-
this.dragStart(e);
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
event.on(event.DRAGEND, (e, draggable) => {
|
|
49
|
-
if (draggable === this) {
|
|
50
|
-
this.dragEnd(e);
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Gets called when the user starts dragging the entity
|
|
57
|
-
* @name dragStart
|
|
58
|
-
* @memberof Draggable
|
|
59
|
-
* @param {object} e - the pointer event
|
|
60
|
-
* @returns {boolean} false if the object is being dragged
|
|
61
|
-
*/
|
|
62
|
-
dragStart(e) {
|
|
63
|
-
if (this.dragging === false) {
|
|
64
|
-
this.dragging = true;
|
|
65
|
-
this.grabOffset.set(e.gameX, e.gameY);
|
|
66
|
-
this.grabOffset.sub(this.pos);
|
|
67
|
-
return false;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Gets called when the user drags this entity around
|
|
73
|
-
* @name dragMove
|
|
74
|
-
* @memberof Draggable
|
|
75
|
-
* @param {object} e - the pointer event
|
|
76
|
-
*/
|
|
77
|
-
dragMove(e) {
|
|
78
|
-
if (this.dragging === true) {
|
|
79
|
-
this.pos.set(e.gameX, e.gameY, this.pos.z); //TODO : z ?
|
|
80
|
-
this.pos.sub(this.grabOffset);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Gets called when the user stops dragging the entity
|
|
86
|
-
* @name dragEnd
|
|
87
|
-
* @memberof Draggable
|
|
88
|
-
* @returns {boolean} false if the object stopped being dragged
|
|
89
|
-
*/
|
|
90
|
-
dragEnd() {
|
|
91
|
-
if (this.dragging === true) {
|
|
92
|
-
this.dragging = false;
|
|
93
|
-
return false;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Destructor
|
|
99
|
-
* @name destroy
|
|
100
|
-
* @memberof Draggable
|
|
101
|
-
* @ignore
|
|
102
|
-
*/
|
|
103
|
-
destroy() {
|
|
104
|
-
event.off(event.POINTERMOVE, this.dragMove);
|
|
105
|
-
event.off(event.DRAGSTART, this.dragStart);
|
|
106
|
-
event.off(event.DRAGEND, this.dragEnd);
|
|
107
|
-
input.releasePointerEvent("pointerdown", this);
|
|
108
|
-
input.releasePointerEvent("pointerup", this);
|
|
109
|
-
input.releasePointerEvent("pointercancel", this);
|
|
110
|
-
super.destroy();
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
4
|
|
|
114
5
|
/**
|
|
115
6
|
* @classdesc
|
|
@@ -725,7 +725,7 @@ import Color from "./../math/color.js";
|
|
|
725
725
|
* onCollision callback, triggered in case of collision,
|
|
726
726
|
* when this renderable body is colliding with another one
|
|
727
727
|
* @param {ResponseObject} response - the collision response object
|
|
728
|
-
* @param {Renderable} other - the other renderable touching this one (a reference to response.a or response.b)
|
|
728
|
+
* @param {Renderable|Container|Entity|Sprite|NineSliceSprite} other - the other renderable touching this one (a reference to response.a or response.b)
|
|
729
729
|
* @returns {boolean} true if the object should respond to the collision (its position and velocity will be corrected)
|
|
730
730
|
* @example
|
|
731
731
|
* // colision handler
|
|
@@ -136,7 +136,7 @@ import pool from "./../system/pooling.js";
|
|
|
136
136
|
* @name onCollision
|
|
137
137
|
* @memberof Trigger
|
|
138
138
|
* @param {ResponseObject} response - the collision response object
|
|
139
|
-
* @param {Renderable} other - the other renderable touching this one (a reference to response.a or response.b)
|
|
139
|
+
* @param {Renderable|Container|Entity|Sprite|NineSliceSprite} other - the other renderable touching this one (a reference to response.a or response.b)
|
|
140
140
|
* @returns {boolean} true if the object should respond to the collision (its position and velocity will be corrected)
|
|
141
141
|
*/
|
|
142
142
|
onCollision(response, other) { // eslint-disable-line no-unused-vars
|
package/src/system/timer.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { defer } from "./../utils/function.js";
|
|
2
2
|
import * as event from "./event.js";
|
|
3
3
|
import state from "./../state/state.js";
|
|
4
4
|
import { clamp } from "./../math/math.js";
|
|
@@ -161,7 +161,7 @@ class Timer {
|
|
|
161
161
|
*/
|
|
162
162
|
clearTimeout(timeoutID) {
|
|
163
163
|
if (timeoutID > 0) {
|
|
164
|
-
|
|
164
|
+
defer(this.clearTimer.bind(this), this, timeoutID);
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
|
|
@@ -171,7 +171,7 @@ class Timer {
|
|
|
171
171
|
*/
|
|
172
172
|
clearInterval(intervalID) {
|
|
173
173
|
if (intervalID > 0) {
|
|
174
|
-
|
|
174
|
+
defer(this.clearTimer.bind(this), this, intervalID);
|
|
175
175
|
}
|
|
176
176
|
}
|
|
177
177
|
|
package/src/utils/utils.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { toHex } from "./string.js";
|
|
2
|
+
|
|
3
|
+
export * as agent from "./agent.js";
|
|
4
|
+
export * as array from "./array.js";
|
|
5
|
+
export * as file from "./file.js";
|
|
6
|
+
export * as string from "./string.js";
|
|
7
|
+
export * as function from "./function.js";
|
|
6
8
|
|
|
7
9
|
/**
|
|
8
10
|
* a collection of utility functions
|
|
@@ -13,124 +15,113 @@ import * as fnUtils from "./function.js";
|
|
|
13
15
|
let GUID_base = "";
|
|
14
16
|
let GUID_index = 0;
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
* );
|
|
39
|
-
* }
|
|
40
|
-
*/
|
|
41
|
-
checkVersion : function (first, second) {
|
|
42
|
-
let a = first.split(".");
|
|
43
|
-
let b = second.split(".");
|
|
44
|
-
let len = Math.min(a.length, b.length);
|
|
45
|
-
let result = 0;
|
|
18
|
+
/**
|
|
19
|
+
* Compare two version strings
|
|
20
|
+
* @public
|
|
21
|
+
* @memberof utils
|
|
22
|
+
* @name checkVersion
|
|
23
|
+
* @param {string} first - First version string to compare
|
|
24
|
+
* @param {string} second - second version string to compare
|
|
25
|
+
* @returns {number} comparison result <br>< 0 : first < second<br>
|
|
26
|
+
* 0 : first == second<br>
|
|
27
|
+
* > 0 : first > second
|
|
28
|
+
* @example
|
|
29
|
+
* if (me.utils.checkVersion("7.0.0") > 0) {
|
|
30
|
+
* console.error(
|
|
31
|
+
* "melonJS is too old. Expected: 7.0.0, Got: 6.3.0"
|
|
32
|
+
* );
|
|
33
|
+
* }
|
|
34
|
+
*/
|
|
35
|
+
export function checkVersion(first, second) {
|
|
36
|
+
let a = first.split(".");
|
|
37
|
+
let b = second.split(".");
|
|
38
|
+
let len = Math.min(a.length, b.length);
|
|
39
|
+
let result = 0;
|
|
46
40
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
41
|
+
for (let i = 0; i < len; i++) {
|
|
42
|
+
if ((result = +a[i] - +b[i])) {
|
|
43
|
+
break;
|
|
51
44
|
}
|
|
45
|
+
}
|
|
52
46
|
|
|
53
|
-
|
|
54
|
-
|
|
47
|
+
return result ? result : a.length - b.length;
|
|
48
|
+
}
|
|
55
49
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
50
|
+
/**
|
|
51
|
+
* parse the fragment (hash) from a URL and returns them into
|
|
52
|
+
* @public
|
|
53
|
+
* @memberof utils
|
|
54
|
+
* @name getUriFragment
|
|
55
|
+
* @param {string} [url=document.location] - an optional params string or URL containing fragment (hash) params to be parsed
|
|
56
|
+
* @returns {object} an object representing the deserialized params string.
|
|
57
|
+
* @property {boolean} [hitbox=false] draw the hitbox in the debug panel (if enabled)
|
|
58
|
+
* @property {boolean} [velocity=false] draw the entities velocity in the debug panel (if enabled)
|
|
59
|
+
* @property {boolean} [quadtree=false] draw the quadtree in the debug panel (if enabled)
|
|
60
|
+
* @property {boolean} [webgl=false] force the renderer to WebGL
|
|
61
|
+
* @property {boolean} [debug=false] display the debug panel (if preloaded)
|
|
62
|
+
* @property {string} [debugToggleKey="s"] show/hide the debug panel (if preloaded)
|
|
63
|
+
* @example
|
|
64
|
+
* // http://www.example.com/index.html#debug&hitbox=true&mytag=value
|
|
65
|
+
* let UriFragment = me.utils.getUriFragment();
|
|
66
|
+
* console.log(UriFragment["mytag"]); //> "value"
|
|
67
|
+
*/
|
|
68
|
+
export function getUriFragment(url) {
|
|
69
|
+
let hash = {};
|
|
76
70
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
71
|
+
if (typeof url === "undefined") {
|
|
72
|
+
if (typeof globalThis.document !== "undefined") {
|
|
73
|
+
let location = globalThis.document.location;
|
|
80
74
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
} else {
|
|
84
|
-
// No "document.location" exist for Wechat mini game platform.
|
|
85
|
-
return hash;
|
|
86
|
-
}
|
|
75
|
+
if (location && location.hash) {
|
|
76
|
+
url = location.hash;
|
|
87
77
|
} else {
|
|
88
|
-
// "document"
|
|
78
|
+
// No "document.location" exist for Wechat mini game platform.
|
|
89
79
|
return hash;
|
|
90
80
|
}
|
|
91
81
|
} else {
|
|
92
|
-
//
|
|
93
|
-
|
|
94
|
-
if (index !== -1) {
|
|
95
|
-
url = url.slice(index, url.length);
|
|
96
|
-
} else {
|
|
97
|
-
return hash;
|
|
98
|
-
}
|
|
82
|
+
// "document" undefined on node.js
|
|
83
|
+
return hash;
|
|
99
84
|
}
|
|
85
|
+
} else {
|
|
86
|
+
// never cache if a url is passed as parameter
|
|
87
|
+
let index = url.indexOf("#");
|
|
88
|
+
if (index !== -1) {
|
|
89
|
+
url = url.slice(index, url.length);
|
|
90
|
+
} else {
|
|
91
|
+
return hash;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
100
94
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
return hash;
|
|
110
|
-
},
|
|
95
|
+
// parse the url
|
|
96
|
+
url.slice(1).split("&").filter((value) => value !== "").forEach((value) => {
|
|
97
|
+
let kv = value.split("=");
|
|
98
|
+
let k = kv.shift();
|
|
99
|
+
let v = kv.join("=");
|
|
100
|
+
hash[k] = v || true;
|
|
101
|
+
});
|
|
111
102
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
* the idea here being to have a unique ID
|
|
115
|
-
* per level / object
|
|
116
|
-
* @ignore
|
|
117
|
-
*/
|
|
118
|
-
resetGUID : function (base, index = 0) {
|
|
119
|
-
// also ensure it's only 8bit ASCII characters
|
|
120
|
-
GUID_base = stringUtils.toHex(base.toString().toUpperCase());
|
|
121
|
-
GUID_index = index;
|
|
122
|
-
},
|
|
103
|
+
return hash;
|
|
104
|
+
}
|
|
123
105
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
}
|
|
106
|
+
/**
|
|
107
|
+
* reset the GUID Base Name
|
|
108
|
+
* the idea here being to have a unique ID
|
|
109
|
+
* per level / object
|
|
110
|
+
* @ignore
|
|
111
|
+
*/
|
|
112
|
+
export function resetGUID(base, index = 0) {
|
|
113
|
+
// also ensure it's only 8bit ASCII characters
|
|
114
|
+
GUID_base = toHex(base.toString().toUpperCase());
|
|
115
|
+
GUID_index = index;
|
|
116
|
+
}
|
|
135
117
|
|
|
136
|
-
|
|
118
|
+
/**
|
|
119
|
+
* create and return a very simple GUID
|
|
120
|
+
* Game Unique ID
|
|
121
|
+
* @ignore
|
|
122
|
+
*/
|
|
123
|
+
export function createGUID(index = 1) {
|
|
124
|
+
// to cover the case of undefined id for groups
|
|
125
|
+
GUID_index += index;
|
|
126
|
+
return GUID_base + "-" + (index || GUID_index);
|
|
127
|
+
}
|
package/src/video/video.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as event from "./../system/event.js";
|
|
2
2
|
import { initialized, game } from "./../index.js";
|
|
3
3
|
import * as device from "./../system/device.js";
|
|
4
|
-
import
|
|
4
|
+
import { throttle } from "../utils/function.js";
|
|
5
5
|
import * as vc from "../const";
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -98,7 +98,7 @@ export function init(width, height, options) {
|
|
|
98
98
|
//add a channel for the onresize/onorientationchange event
|
|
99
99
|
globalThis.addEventListener(
|
|
100
100
|
"resize",
|
|
101
|
-
|
|
101
|
+
throttle(
|
|
102
102
|
(e) => {
|
|
103
103
|
event.emit(event.WINDOW_ONRESIZE, e);
|
|
104
104
|
}, 100
|
|
@@ -130,7 +130,7 @@ export function init(width, height, options) {
|
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
// Automatically update relative canvas position on scroll
|
|
133
|
-
globalThis.addEventListener("scroll",
|
|
133
|
+
globalThis.addEventListener("scroll", throttle((e) => {
|
|
134
134
|
event.emit(event.WINDOW_ONSCROLL, e);
|
|
135
135
|
}, 100), false);
|
|
136
136
|
|