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
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.2.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
6
6
|
* @copyright (C) 2011 - 2023 Olivier Biot (AltByte Pte Ltd)
|
|
7
7
|
*/
|
|
8
8
|
import Renderable from './renderable.js';
|
|
9
|
-
import
|
|
9
|
+
import { createGUID } from '../utils/utils.js';
|
|
10
|
+
import { defer } from '../utils/function.js';
|
|
10
11
|
import { game } from '../index.js';
|
|
11
12
|
import { on, CANVAS_ONRESIZE } from '../system/event.js';
|
|
12
13
|
import pool from '../system/pooling.js';
|
|
@@ -183,7 +184,7 @@ let globalFloatingCounter = 0;
|
|
|
183
184
|
* will not be in any container. <br>
|
|
184
185
|
* if the given child implements a onActivateEvent method, that method will be called
|
|
185
186
|
* once the child is added to this container.
|
|
186
|
-
* @param {Renderable} child
|
|
187
|
+
* @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
|
|
187
188
|
* @param {number} [z] - forces the z index of the child to the specified value
|
|
188
189
|
* @returns {Renderable} the added child
|
|
189
190
|
*/
|
|
@@ -196,7 +197,7 @@ let globalFloatingCounter = 0;
|
|
|
196
197
|
// (e.g. move one child from one container to another)
|
|
197
198
|
if (child.isRenderable) {
|
|
198
199
|
// allocated a GUID value (use child.id as based index if defined)
|
|
199
|
-
child.GUID =
|
|
200
|
+
child.GUID = createGUID(child.id);
|
|
200
201
|
}
|
|
201
202
|
}
|
|
202
203
|
|
|
@@ -265,7 +266,7 @@ let globalFloatingCounter = 0;
|
|
|
265
266
|
/**
|
|
266
267
|
* Add a child to the container at the specified index<br>
|
|
267
268
|
* (the list won't be sorted after insertion)
|
|
268
|
-
* @param {Renderable} child
|
|
269
|
+
* @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
|
|
269
270
|
* @param {number} index
|
|
270
271
|
* @returns {Renderable} the added child
|
|
271
272
|
*/
|
|
@@ -279,7 +280,7 @@ let globalFloatingCounter = 0;
|
|
|
279
280
|
// (e.g. move one child from one container to another)
|
|
280
281
|
if (child.isRenderable) {
|
|
281
282
|
// allocated a GUID value
|
|
282
|
-
child.GUID =
|
|
283
|
+
child.GUID = createGUID();
|
|
283
284
|
}
|
|
284
285
|
}
|
|
285
286
|
|
|
@@ -376,8 +377,8 @@ let globalFloatingCounter = 0;
|
|
|
376
377
|
|
|
377
378
|
/**
|
|
378
379
|
* Swaps the position (z-index) of 2 children
|
|
379
|
-
* @param {Renderable} child
|
|
380
|
-
* @param {Renderable} child2
|
|
380
|
+
* @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
|
|
381
|
+
* @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child2
|
|
381
382
|
*/
|
|
382
383
|
swapChildren(child, child2) {
|
|
383
384
|
let index = this.getChildIndex(child);
|
|
@@ -415,7 +416,7 @@ let globalFloatingCounter = 0;
|
|
|
415
416
|
|
|
416
417
|
/**
|
|
417
418
|
* Returns the index of the given Child
|
|
418
|
-
* @param {Renderable} child
|
|
419
|
+
* @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
|
|
419
420
|
* @returns {number} index
|
|
420
421
|
*/
|
|
421
422
|
getChildIndex(child) {
|
|
@@ -424,7 +425,7 @@ let globalFloatingCounter = 0;
|
|
|
424
425
|
|
|
425
426
|
/**
|
|
426
427
|
* Returns the next child within the container or undefined if none
|
|
427
|
-
* @param {Renderable} child
|
|
428
|
+
* @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
|
|
428
429
|
* @returns {Renderable} child
|
|
429
430
|
*/
|
|
430
431
|
getNextChild(child) {
|
|
@@ -437,7 +438,7 @@ let globalFloatingCounter = 0;
|
|
|
437
438
|
|
|
438
439
|
/**
|
|
439
440
|
* Returns true if contains the specified Child
|
|
440
|
-
* @param {Renderable} child
|
|
441
|
+
* @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
|
|
441
442
|
* @returns {boolean}
|
|
442
443
|
*/
|
|
443
444
|
hasChild(child) {
|
|
@@ -645,12 +646,12 @@ let globalFloatingCounter = 0;
|
|
|
645
646
|
/**
|
|
646
647
|
* Invokes the removeChildNow in a defer, to ensure the child is removed safely after the update & draw stack has completed. <br>
|
|
647
648
|
* if the given child implements a onDeactivateEvent() method, that method will be called once the child is removed from this container.
|
|
648
|
-
* @param {
|
|
649
|
+
* @param {RendRenderable|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapTexterable} child
|
|
649
650
|
* @param {boolean} [keepalive=false] - true to prevent calling child.destroy()
|
|
650
651
|
*/
|
|
651
652
|
removeChild(child, keepalive) {
|
|
652
653
|
if (this.hasChild(child)) {
|
|
653
|
-
|
|
654
|
+
defer(deferredRemove, this, child, keepalive);
|
|
654
655
|
}
|
|
655
656
|
else {
|
|
656
657
|
throw new Error("Child is not mine.");
|
|
@@ -661,7 +662,7 @@ let globalFloatingCounter = 0;
|
|
|
661
662
|
* Removes (and optionally destroys) a child from the container.<br>
|
|
662
663
|
* (removal is immediate and unconditional)<br>
|
|
663
664
|
* Never use keepalive=true with objects from {@link pool}. Doing so will create a memory leak.
|
|
664
|
-
* @param {Renderable} child
|
|
665
|
+
* @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
|
|
665
666
|
* @param {boolean} [keepalive=False] - True to prevent calling child.destroy()
|
|
666
667
|
*/
|
|
667
668
|
removeChildNow(child, keepalive) {
|
|
@@ -724,7 +725,7 @@ let globalFloatingCounter = 0;
|
|
|
724
725
|
|
|
725
726
|
/**
|
|
726
727
|
* Move the child in the group one step forward (z depth).
|
|
727
|
-
* @param {Renderable} child
|
|
728
|
+
* @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
|
|
728
729
|
*/
|
|
729
730
|
moveUp(child) {
|
|
730
731
|
let childIndex = this.getChildIndex(child);
|
|
@@ -738,7 +739,7 @@ let globalFloatingCounter = 0;
|
|
|
738
739
|
|
|
739
740
|
/**
|
|
740
741
|
* Move the child in the group one step backward (z depth).
|
|
741
|
-
* @param {Renderable} child
|
|
742
|
+
* @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
|
|
742
743
|
*/
|
|
743
744
|
moveDown(child) {
|
|
744
745
|
let childIndex = this.getChildIndex(child);
|
|
@@ -752,7 +753,7 @@ let globalFloatingCounter = 0;
|
|
|
752
753
|
|
|
753
754
|
/**
|
|
754
755
|
* Move the specified child to the top(z depth).
|
|
755
|
-
* @param {Renderable} child
|
|
756
|
+
* @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
|
|
756
757
|
*/
|
|
757
758
|
moveToTop(child) {
|
|
758
759
|
let childIndex = this.getChildIndex(child);
|
|
@@ -769,7 +770,7 @@ let globalFloatingCounter = 0;
|
|
|
769
770
|
|
|
770
771
|
/**
|
|
771
772
|
* Move the specified child the bottom (z depth).
|
|
772
|
-
* @param {Renderable} child
|
|
773
|
+
* @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
|
|
773
774
|
*/
|
|
774
775
|
moveToBottom(child) {
|
|
775
776
|
let childIndex = this.getChildIndex(child);
|
|
@@ -801,7 +802,7 @@ let globalFloatingCounter = 0;
|
|
|
801
802
|
});
|
|
802
803
|
}
|
|
803
804
|
/** @ignore */
|
|
804
|
-
this.pendingSort =
|
|
805
|
+
this.pendingSort = defer(function () {
|
|
805
806
|
// sort everything in this container
|
|
806
807
|
this.getChildren().sort(this["_sort" + this.sortOn.toUpperCase()]);
|
|
807
808
|
// clear the defer id
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v15.2.0
|
|
3
|
+
* http://www.melonjs.org
|
|
4
|
+
* melonjs is licensed under the MIT License.
|
|
5
|
+
* http://www.opensource.org/licenses/mit-license
|
|
6
|
+
* @copyright (C) 2011 - 2023 Olivier Biot (AltByte Pte Ltd)
|
|
7
|
+
*/
|
|
8
|
+
import Vector2d from '../math/vector2.js';
|
|
9
|
+
import { emit, DRAGSTART, DRAGEND, on, POINTERMOVE, off } from '../system/event.js';
|
|
10
|
+
import Renderable from './renderable.js';
|
|
11
|
+
import { registerPointerEvent, releasePointerEvent } from '../input/pointerevent.js';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @classdesc
|
|
15
|
+
* A Draggable base object
|
|
16
|
+
* @see DropTarget
|
|
17
|
+
* @augments Renderable
|
|
18
|
+
*/
|
|
19
|
+
class Draggable extends Renderable {
|
|
20
|
+
/**
|
|
21
|
+
* @param {number} x - the x coordinates of the draggable object
|
|
22
|
+
* @param {number} y - the y coordinates of the draggable object
|
|
23
|
+
* @param {number} width - draggable object width
|
|
24
|
+
* @param {number} height - draggable object height
|
|
25
|
+
*/
|
|
26
|
+
constructor(x, y, width, height) {
|
|
27
|
+
super(x, y, width, height);
|
|
28
|
+
this.isKinematic = false;
|
|
29
|
+
this.dragging = false;
|
|
30
|
+
this.dragId = null;
|
|
31
|
+
this.grabOffset = new Vector2d(0, 0);
|
|
32
|
+
this.initEvents();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Initializes the events the modules needs to listen to
|
|
37
|
+
* It translates the pointer events to me.events
|
|
38
|
+
* in order to make them pass through the system and to make
|
|
39
|
+
* this module testable. Then we subscribe this module to the
|
|
40
|
+
* transformed events.
|
|
41
|
+
* @name initEvents
|
|
42
|
+
* @memberof Draggable
|
|
43
|
+
* @private
|
|
44
|
+
*/
|
|
45
|
+
initEvents() {
|
|
46
|
+
registerPointerEvent("pointerdown", this, (e) => emit(DRAGSTART, e, this));
|
|
47
|
+
registerPointerEvent("pointerup", this, (e) => emit(DRAGEND, e, this));
|
|
48
|
+
registerPointerEvent("pointercancel", this, (e) => emit(DRAGEND, e, this));
|
|
49
|
+
on(POINTERMOVE, (e) => this.dragMove(e));
|
|
50
|
+
on(DRAGSTART, (e, draggable) => {
|
|
51
|
+
if (draggable === this) {
|
|
52
|
+
this.dragStart(e);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
on(DRAGEND, (e, draggable) => {
|
|
56
|
+
if (draggable === this) {
|
|
57
|
+
this.dragEnd(e);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Gets called when the user starts dragging the entity
|
|
64
|
+
* @name dragStart
|
|
65
|
+
* @memberof Draggable
|
|
66
|
+
* @param {object} e - the pointer event
|
|
67
|
+
* @returns {boolean} false if the object is being dragged
|
|
68
|
+
*/
|
|
69
|
+
dragStart(e) {
|
|
70
|
+
if (this.dragging === false) {
|
|
71
|
+
this.dragging = true;
|
|
72
|
+
this.grabOffset.set(e.gameX, e.gameY);
|
|
73
|
+
this.grabOffset.sub(this.pos);
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Gets called when the user drags this entity around
|
|
80
|
+
* @name dragMove
|
|
81
|
+
* @memberof Draggable
|
|
82
|
+
* @param {object} e - the pointer event
|
|
83
|
+
*/
|
|
84
|
+
dragMove(e) {
|
|
85
|
+
if (this.dragging === true) {
|
|
86
|
+
this.pos.set(e.gameX, e.gameY, this.pos.z); //TODO : z ?
|
|
87
|
+
this.pos.sub(this.grabOffset);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Gets called when the user stops dragging the entity
|
|
93
|
+
* @name dragEnd
|
|
94
|
+
* @memberof Draggable
|
|
95
|
+
* @returns {boolean} false if the object stopped being dragged
|
|
96
|
+
*/
|
|
97
|
+
dragEnd() {
|
|
98
|
+
if (this.dragging === true) {
|
|
99
|
+
this.dragging = false;
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Destructor
|
|
106
|
+
* @name destroy
|
|
107
|
+
* @memberof Draggable
|
|
108
|
+
* @ignore
|
|
109
|
+
*/
|
|
110
|
+
destroy() {
|
|
111
|
+
off(POINTERMOVE, this.dragMove);
|
|
112
|
+
off(DRAGSTART, this.dragStart);
|
|
113
|
+
off(DRAGEND, this.dragEnd);
|
|
114
|
+
releasePointerEvent("pointerdown", this);
|
|
115
|
+
releasePointerEvent("pointerup", this);
|
|
116
|
+
releasePointerEvent("pointercancel", this);
|
|
117
|
+
super.destroy();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export { Draggable };
|
|
@@ -1,122 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.2.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
6
6
|
* @copyright (C) 2011 - 2023 Olivier Biot (AltByte Pte Ltd)
|
|
7
7
|
*/
|
|
8
|
-
import
|
|
9
|
-
import { emit, DRAGSTART, DRAGEND, on, POINTERMOVE, off } from '../system/event.js';
|
|
8
|
+
import { on, DRAGEND, off } from '../system/event.js';
|
|
10
9
|
import Renderable from './renderable.js';
|
|
11
|
-
import { registerPointerEvent, releasePointerEvent } from '../input/pointerevent.js';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @classdesc
|
|
15
|
-
* A Draggable base object
|
|
16
|
-
* @see DropTarget
|
|
17
|
-
* @augments Renderable
|
|
18
|
-
*/
|
|
19
|
-
class Draggable extends Renderable {
|
|
20
|
-
/**
|
|
21
|
-
* @param {number} x - the x coordinates of the draggable object
|
|
22
|
-
* @param {number} y - the y coordinates of the draggable object
|
|
23
|
-
* @param {number} width - draggable object width
|
|
24
|
-
* @param {number} height - draggable object height
|
|
25
|
-
*/
|
|
26
|
-
constructor(x, y, width, height) {
|
|
27
|
-
super(x, y, width, height);
|
|
28
|
-
this.isKinematic = false;
|
|
29
|
-
this.dragging = false;
|
|
30
|
-
this.dragId = null;
|
|
31
|
-
this.grabOffset = new Vector2d(0, 0);
|
|
32
|
-
this.initEvents();
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Initializes the events the modules needs to listen to
|
|
37
|
-
* It translates the pointer events to me.events
|
|
38
|
-
* in order to make them pass through the system and to make
|
|
39
|
-
* this module testable. Then we subscribe this module to the
|
|
40
|
-
* transformed events.
|
|
41
|
-
* @name initEvents
|
|
42
|
-
* @memberof Draggable
|
|
43
|
-
* @private
|
|
44
|
-
*/
|
|
45
|
-
initEvents() {
|
|
46
|
-
registerPointerEvent("pointerdown", this, (e) => emit(DRAGSTART, e, this));
|
|
47
|
-
registerPointerEvent("pointerup", this, (e) => emit(DRAGEND, e, this));
|
|
48
|
-
registerPointerEvent("pointercancel", this, (e) => emit(DRAGEND, e, this));
|
|
49
|
-
on(POINTERMOVE, (e) => this.dragMove(e));
|
|
50
|
-
on(DRAGSTART, (e, draggable) => {
|
|
51
|
-
if (draggable === this) {
|
|
52
|
-
this.dragStart(e);
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
on(DRAGEND, (e, draggable) => {
|
|
56
|
-
if (draggable === this) {
|
|
57
|
-
this.dragEnd(e);
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Gets called when the user starts dragging the entity
|
|
64
|
-
* @name dragStart
|
|
65
|
-
* @memberof Draggable
|
|
66
|
-
* @param {object} e - the pointer event
|
|
67
|
-
* @returns {boolean} false if the object is being dragged
|
|
68
|
-
*/
|
|
69
|
-
dragStart(e) {
|
|
70
|
-
if (this.dragging === false) {
|
|
71
|
-
this.dragging = true;
|
|
72
|
-
this.grabOffset.set(e.gameX, e.gameY);
|
|
73
|
-
this.grabOffset.sub(this.pos);
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Gets called when the user drags this entity around
|
|
80
|
-
* @name dragMove
|
|
81
|
-
* @memberof Draggable
|
|
82
|
-
* @param {object} e - the pointer event
|
|
83
|
-
*/
|
|
84
|
-
dragMove(e) {
|
|
85
|
-
if (this.dragging === true) {
|
|
86
|
-
this.pos.set(e.gameX, e.gameY, this.pos.z); //TODO : z ?
|
|
87
|
-
this.pos.sub(this.grabOffset);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Gets called when the user stops dragging the entity
|
|
93
|
-
* @name dragEnd
|
|
94
|
-
* @memberof Draggable
|
|
95
|
-
* @returns {boolean} false if the object stopped being dragged
|
|
96
|
-
*/
|
|
97
|
-
dragEnd() {
|
|
98
|
-
if (this.dragging === true) {
|
|
99
|
-
this.dragging = false;
|
|
100
|
-
return false;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Destructor
|
|
106
|
-
* @name destroy
|
|
107
|
-
* @memberof Draggable
|
|
108
|
-
* @ignore
|
|
109
|
-
*/
|
|
110
|
-
destroy() {
|
|
111
|
-
off(POINTERMOVE, this.dragMove);
|
|
112
|
-
off(DRAGSTART, this.dragStart);
|
|
113
|
-
off(DRAGEND, this.dragEnd);
|
|
114
|
-
releasePointerEvent("pointerdown", this);
|
|
115
|
-
releasePointerEvent("pointerup", this);
|
|
116
|
-
releasePointerEvent("pointercancel", this);
|
|
117
|
-
super.destroy();
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
10
|
|
|
121
11
|
/**
|
|
122
12
|
* @classdesc
|
|
@@ -221,4 +111,4 @@ class DropTarget extends Renderable {
|
|
|
221
111
|
}
|
|
222
112
|
}
|
|
223
113
|
|
|
224
|
-
export {
|
|
114
|
+
export { DropTarget };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.2.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -732,7 +732,7 @@ import { releaseAllPointerEvents } from '../input/pointerevent.js';
|
|
|
732
732
|
* onCollision callback, triggered in case of collision,
|
|
733
733
|
* when this renderable body is colliding with another one
|
|
734
734
|
* @param {ResponseObject} response - the collision response object
|
|
735
|
-
* @param {Renderable} other - the other renderable touching this one (a reference to response.a or response.b)
|
|
735
|
+
* @param {Renderable|Container|Entity|Sprite|NineSliceSprite} other - the other renderable touching this one (a reference to response.a or response.b)
|
|
736
736
|
* @returns {boolean} true if the object should respond to the collision (its position and velocity will be corrected)
|
|
737
737
|
* @example
|
|
738
738
|
* // colision handler
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.2.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -143,7 +143,7 @@ import pool from '../system/pooling.js';
|
|
|
143
143
|
* @name onCollision
|
|
144
144
|
* @memberof Trigger
|
|
145
145
|
* @param {ResponseObject} response - the collision response object
|
|
146
|
-
* @param {Renderable} other - the other renderable touching this one (a reference to response.a or response.b)
|
|
146
|
+
* @param {Renderable|Container|Entity|Sprite|NineSliceSprite} other - the other renderable touching this one (a reference to response.a or response.b)
|
|
147
147
|
* @returns {boolean} true if the object should respond to the collision (its position and velocity will be corrected)
|
|
148
148
|
*/
|
|
149
149
|
onCollision(response, other) { // eslint-disable-line no-unused-vars
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.2.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
6
6
|
* @copyright (C) 2011 - 2023 Olivier Biot (AltByte Pte Ltd)
|
|
7
7
|
*/
|
|
8
|
-
import
|
|
8
|
+
import { defer } from '../utils/function.js';
|
|
9
9
|
import { on, GAME_BEFORE_UPDATE, BOOT, STATE_RESUME, STATE_RESTART, STATE_CHANGE } from './event.js';
|
|
10
10
|
import state from '../state/state.js';
|
|
11
11
|
import { clamp } from '../math/math.js';
|
|
@@ -168,7 +168,7 @@ class Timer {
|
|
|
168
168
|
*/
|
|
169
169
|
clearTimeout(timeoutID) {
|
|
170
170
|
if (timeoutID > 0) {
|
|
171
|
-
|
|
171
|
+
defer(this.clearTimer.bind(this), this, timeoutID);
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
|
|
@@ -178,7 +178,7 @@ class Timer {
|
|
|
178
178
|
*/
|
|
179
179
|
clearInterval(intervalID) {
|
|
180
180
|
if (intervalID > 0) {
|
|
181
|
-
|
|
181
|
+
defer(this.clearTimer.bind(this), this, intervalID);
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
184
|
|