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.
Files changed (168) hide show
  1. package/README.md +2 -2
  2. package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
  3. package/dist/melonjs.mjs/_virtual/earcut.js +1 -1
  4. package/dist/melonjs.mjs/_virtual/howler.js +1 -1
  5. package/dist/melonjs.mjs/_virtual/index.js +1 -1
  6. package/dist/melonjs.mjs/application/application.js +3 -3
  7. package/dist/melonjs.mjs/application/header.js +1 -1
  8. package/dist/melonjs.mjs/application/resize.js +1 -1
  9. package/dist/melonjs.mjs/application/settings.js +1 -1
  10. package/dist/melonjs.mjs/audio/audio.js +1 -1
  11. package/dist/melonjs.mjs/camera/camera2d.js +3 -3
  12. package/dist/melonjs.mjs/const.js +1 -1
  13. package/dist/melonjs.mjs/entity/entity.js +1 -1
  14. package/dist/melonjs.mjs/geometries/ellipse.js +1 -1
  15. package/dist/melonjs.mjs/geometries/line.js +1 -1
  16. package/dist/melonjs.mjs/geometries/path2d.js +1 -1
  17. package/dist/melonjs.mjs/geometries/point.js +1 -1
  18. package/dist/melonjs.mjs/geometries/poly.js +1 -1
  19. package/dist/melonjs.mjs/geometries/rectangle.js +1 -1
  20. package/dist/melonjs.mjs/geometries/roundrect.js +1 -1
  21. package/dist/melonjs.mjs/index.js +12 -7
  22. package/dist/melonjs.mjs/input/gamepad.js +1 -1
  23. package/dist/melonjs.mjs/input/input.js +1 -1
  24. package/dist/melonjs.mjs/input/keyboard.js +1 -1
  25. package/dist/melonjs.mjs/input/pointer.js +1 -1
  26. package/dist/melonjs.mjs/input/pointerevent.js +1 -1
  27. package/dist/melonjs.mjs/lang/console.js +1 -1
  28. package/dist/melonjs.mjs/lang/deprecated.js +3 -2
  29. package/dist/melonjs.mjs/level/level.js +5 -4
  30. package/dist/melonjs.mjs/level/tiled/TMXGroup.js +1 -1
  31. package/dist/melonjs.mjs/level/tiled/TMXLayer.js +1 -1
  32. package/dist/melonjs.mjs/level/tiled/TMXObject.js +1 -1
  33. package/dist/melonjs.mjs/level/tiled/TMXTile.js +1 -1
  34. package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +3 -3
  35. package/dist/melonjs.mjs/level/tiled/TMXTileset.js +1 -1
  36. package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +1 -1
  37. package/dist/melonjs.mjs/level/tiled/TMXUtils.js +6 -8
  38. package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
  39. package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +1 -1
  40. package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
  41. package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
  42. package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +1 -1
  43. package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +1 -1
  44. package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +1 -1
  45. package/dist/melonjs.mjs/loader/cache.js +1 -1
  46. package/dist/melonjs.mjs/loader/loader.js +1 -1
  47. package/dist/melonjs.mjs/loader/loadingscreen.js +1 -1
  48. package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
  49. package/dist/melonjs.mjs/loader/parser.js +1 -1
  50. package/dist/melonjs.mjs/loader/settings.js +1 -1
  51. package/dist/melonjs.mjs/math/color.js +1 -1
  52. package/dist/melonjs.mjs/math/math.js +1 -1
  53. package/dist/melonjs.mjs/math/matrix2.js +1 -1
  54. package/dist/melonjs.mjs/math/matrix3.js +1 -1
  55. package/dist/melonjs.mjs/math/observable_vector2.js +1 -1
  56. package/dist/melonjs.mjs/math/observable_vector3.js +1 -1
  57. package/dist/melonjs.mjs/math/vector2.js +1 -1
  58. package/dist/melonjs.mjs/math/vector3.js +1 -1
  59. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/arraymultimap.js +1 -1
  60. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +1 -1
  61. package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
  62. package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +1 -1
  63. package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +1 -1
  64. package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +1 -1
  65. package/dist/melonjs.mjs/particles/emitter.js +1 -1
  66. package/dist/melonjs.mjs/particles/particle.js +1 -1
  67. package/dist/melonjs.mjs/particles/settings.js +1 -1
  68. package/dist/melonjs.mjs/physics/body.js +3 -3
  69. package/dist/melonjs.mjs/physics/bounds.js +1 -1
  70. package/dist/melonjs.mjs/physics/collision.js +1 -1
  71. package/dist/melonjs.mjs/physics/detector.js +4 -4
  72. package/dist/melonjs.mjs/physics/quadtree.js +1 -1
  73. package/dist/melonjs.mjs/physics/response.js +1 -1
  74. package/dist/melonjs.mjs/physics/sat.js +9 -9
  75. package/dist/melonjs.mjs/physics/world.js +1 -1
  76. package/dist/melonjs.mjs/plugin/plugin.js +106 -108
  77. package/dist/melonjs.mjs/renderable/collectable.js +1 -1
  78. package/dist/melonjs.mjs/renderable/colorlayer.js +1 -1
  79. package/dist/melonjs.mjs/renderable/container.js +20 -19
  80. package/dist/melonjs.mjs/renderable/draggable.js +121 -0
  81. package/dist/melonjs.mjs/renderable/dragndrop.js +3 -113
  82. package/dist/melonjs.mjs/renderable/imagelayer.js +1 -1
  83. package/dist/melonjs.mjs/renderable/light2d.js +1 -1
  84. package/dist/melonjs.mjs/renderable/nineslicesprite.js +1 -1
  85. package/dist/melonjs.mjs/renderable/renderable.js +2 -2
  86. package/dist/melonjs.mjs/renderable/sprite.js +1 -1
  87. package/dist/melonjs.mjs/renderable/trigger.js +2 -2
  88. package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +1 -1
  89. package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +1 -1
  90. package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +1 -1
  91. package/dist/melonjs.mjs/state/stage.js +1 -1
  92. package/dist/melonjs.mjs/state/state.js +1 -1
  93. package/dist/melonjs.mjs/system/device.js +1 -1
  94. package/dist/melonjs.mjs/system/dom.js +1 -1
  95. package/dist/melonjs.mjs/system/event.js +1 -1
  96. package/dist/melonjs.mjs/system/platform.js +1 -1
  97. package/dist/melonjs.mjs/system/pooling.js +1 -1
  98. package/dist/melonjs.mjs/system/save.js +1 -1
  99. package/dist/melonjs.mjs/system/timer.js +4 -4
  100. package/dist/melonjs.mjs/text/bitmaptext.js +1 -1
  101. package/dist/melonjs.mjs/text/bitmaptextdata.js +1 -1
  102. package/dist/melonjs.mjs/text/glyph.js +1 -1
  103. package/dist/melonjs.mjs/text/text.js +1 -1
  104. package/dist/melonjs.mjs/text/textmetrics.js +1 -1
  105. package/dist/melonjs.mjs/text/textstyle.js +1 -1
  106. package/dist/melonjs.mjs/tweens/easing.js +1 -1
  107. package/dist/melonjs.mjs/tweens/interpolation.js +1 -1
  108. package/dist/melonjs.mjs/tweens/tween.js +1 -1
  109. package/dist/melonjs.mjs/utils/agent.js +1 -1
  110. package/dist/melonjs.mjs/utils/array.js +1 -1
  111. package/dist/melonjs.mjs/utils/file.js +1 -1
  112. package/dist/melonjs.mjs/utils/function.js +1 -1
  113. package/dist/melonjs.mjs/utils/string.js +1 -1
  114. package/dist/melonjs.mjs/utils/utils.js +105 -111
  115. package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +1 -1
  116. package/dist/melonjs.mjs/video/renderer.js +1 -1
  117. package/dist/melonjs.mjs/video/texture/atlas.js +1 -1
  118. package/dist/melonjs.mjs/video/texture/cache.js +1 -1
  119. package/dist/melonjs.mjs/video/texture/canvas_texture.js +1 -1
  120. package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
  121. package/dist/melonjs.mjs/video/video.js +4 -4
  122. package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +1 -1
  123. package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +1 -1
  124. package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +1 -1
  125. package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +1 -1
  126. package/dist/melonjs.mjs/video/webgl/glshader.js +1 -1
  127. package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
  128. package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +1 -1
  129. package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
  130. package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +1 -1
  131. package/dist/melonjs.mjs/video/webgl/utils/attributes.js +1 -1
  132. package/dist/melonjs.mjs/video/webgl/utils/precision.js +1 -1
  133. package/dist/melonjs.mjs/video/webgl/utils/program.js +1 -1
  134. package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
  135. package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +1 -1
  136. package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +1 -1
  137. package/dist/melonjs.module.js +516 -500
  138. package/dist/types/camera/camera2d.d.ts +4 -4
  139. package/dist/types/index.d.ts +4 -4
  140. package/dist/types/physics/body.d.ts +4 -4
  141. package/dist/types/physics/detector.d.ts +5 -5
  142. package/dist/types/physics/sat.d.ts +12 -12
  143. package/dist/types/plugin/plugin.d.ts +60 -5
  144. package/dist/types/renderable/container.d.ts +25 -25
  145. package/dist/types/renderable/draggable.d.ts +53 -0
  146. package/dist/types/renderable/dragndrop.d.ts +0 -52
  147. package/dist/types/renderable/renderable.d.ts +2 -2
  148. package/dist/types/utils/utils.d.ts +56 -17
  149. package/package.json +8 -8
  150. package/src/application/application.js +2 -2
  151. package/src/camera/camera2d.js +2 -2
  152. package/src/index.js +5 -3
  153. package/src/lang/deprecated.js +2 -1
  154. package/src/level/level.js +4 -3
  155. package/src/level/tiled/TMXTileMap.js +2 -2
  156. package/src/level/tiled/TMXUtils.js +4 -3
  157. package/src/physics/body.js +2 -2
  158. package/src/physics/detector.js +3 -3
  159. package/src/physics/sat.js +8 -8
  160. package/src/plugin/plugin.js +103 -105
  161. package/src/renderable/container.js +19 -18
  162. package/src/renderable/draggable.js +114 -0
  163. package/src/renderable/dragndrop.js +0 -109
  164. package/src/renderable/renderable.js +1 -1
  165. package/src/renderable/trigger.js +1 -1
  166. package/src/system/timer.js +3 -3
  167. package/src/utils/utils.js +102 -111
  168. package/src/video/video.js +3 -3
@@ -1,12 +1,13 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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 utils from '../utils/utils.js';
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 = utils.createGUID(child.id);
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 = utils.createGUID();
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 {Renderable} child
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
- utils.function.defer(deferredRemove, this, child, keepalive);
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 = utils.function.defer(function () {
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.1.5
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 Vector2d from '../math/vector2.js';
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 { Draggable, DropTarget };
114
+ export { DropTarget };
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,11 +1,11 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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 utils from '../utils/utils.js';
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
- utils.function.defer(this.clearTimer.bind(this), this, timeoutID);
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
- utils.function.defer(this.clearTimer.bind(this), this, intervalID);
181
+ defer(this.clearTimer.bind(this), this, intervalID);
182
182
  }
183
183
  }
184
184
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.1.5
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