melonjs 15.1.5 → 15.1.6

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 (157) hide show
  1. package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
  2. package/dist/melonjs.mjs/_virtual/earcut.js +1 -1
  3. package/dist/melonjs.mjs/_virtual/howler.js +1 -1
  4. package/dist/melonjs.mjs/_virtual/index.js +1 -1
  5. package/dist/melonjs.mjs/application/application.js +1 -1
  6. package/dist/melonjs.mjs/application/header.js +1 -1
  7. package/dist/melonjs.mjs/application/resize.js +1 -1
  8. package/dist/melonjs.mjs/application/settings.js +1 -1
  9. package/dist/melonjs.mjs/audio/audio.js +1 -1
  10. package/dist/melonjs.mjs/camera/camera2d.js +3 -3
  11. package/dist/melonjs.mjs/const.js +1 -1
  12. package/dist/melonjs.mjs/entity/entity.js +1 -1
  13. package/dist/melonjs.mjs/geometries/ellipse.js +1 -1
  14. package/dist/melonjs.mjs/geometries/line.js +1 -1
  15. package/dist/melonjs.mjs/geometries/path2d.js +1 -1
  16. package/dist/melonjs.mjs/geometries/point.js +1 -1
  17. package/dist/melonjs.mjs/geometries/poly.js +1 -1
  18. package/dist/melonjs.mjs/geometries/rectangle.js +1 -1
  19. package/dist/melonjs.mjs/geometries/roundrect.js +1 -1
  20. package/dist/melonjs.mjs/index.js +4 -3
  21. package/dist/melonjs.mjs/input/gamepad.js +1 -1
  22. package/dist/melonjs.mjs/input/input.js +1 -1
  23. package/dist/melonjs.mjs/input/keyboard.js +1 -1
  24. package/dist/melonjs.mjs/input/pointer.js +1 -1
  25. package/dist/melonjs.mjs/input/pointerevent.js +1 -1
  26. package/dist/melonjs.mjs/lang/console.js +1 -1
  27. package/dist/melonjs.mjs/lang/deprecated.js +3 -2
  28. package/dist/melonjs.mjs/level/level.js +1 -1
  29. package/dist/melonjs.mjs/level/tiled/TMXGroup.js +1 -1
  30. package/dist/melonjs.mjs/level/tiled/TMXLayer.js +1 -1
  31. package/dist/melonjs.mjs/level/tiled/TMXObject.js +1 -1
  32. package/dist/melonjs.mjs/level/tiled/TMXTile.js +1 -1
  33. package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +1 -1
  34. package/dist/melonjs.mjs/level/tiled/TMXTileset.js +1 -1
  35. package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +1 -1
  36. package/dist/melonjs.mjs/level/tiled/TMXUtils.js +1 -1
  37. package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
  38. package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +1 -1
  39. package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
  40. package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
  41. package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +1 -1
  42. package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +1 -1
  43. package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +1 -1
  44. package/dist/melonjs.mjs/loader/cache.js +1 -1
  45. package/dist/melonjs.mjs/loader/loader.js +1 -1
  46. package/dist/melonjs.mjs/loader/loadingscreen.js +1 -1
  47. package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
  48. package/dist/melonjs.mjs/loader/parser.js +1 -1
  49. package/dist/melonjs.mjs/loader/settings.js +1 -1
  50. package/dist/melonjs.mjs/math/color.js +1 -1
  51. package/dist/melonjs.mjs/math/math.js +1 -1
  52. package/dist/melonjs.mjs/math/matrix2.js +1 -1
  53. package/dist/melonjs.mjs/math/matrix3.js +1 -1
  54. package/dist/melonjs.mjs/math/observable_vector2.js +1 -1
  55. package/dist/melonjs.mjs/math/observable_vector3.js +1 -1
  56. package/dist/melonjs.mjs/math/vector2.js +1 -1
  57. package/dist/melonjs.mjs/math/vector3.js +1 -1
  58. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/arraymultimap.js +1 -1
  59. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +1 -1
  60. package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
  61. package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +1 -1
  62. package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +1 -1
  63. package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +1 -1
  64. package/dist/melonjs.mjs/particles/emitter.js +1 -1
  65. package/dist/melonjs.mjs/particles/particle.js +1 -1
  66. package/dist/melonjs.mjs/particles/settings.js +1 -1
  67. package/dist/melonjs.mjs/physics/body.js +3 -3
  68. package/dist/melonjs.mjs/physics/bounds.js +1 -1
  69. package/dist/melonjs.mjs/physics/collision.js +1 -1
  70. package/dist/melonjs.mjs/physics/detector.js +4 -4
  71. package/dist/melonjs.mjs/physics/quadtree.js +1 -1
  72. package/dist/melonjs.mjs/physics/response.js +1 -1
  73. package/dist/melonjs.mjs/physics/sat.js +9 -9
  74. package/dist/melonjs.mjs/physics/world.js +1 -1
  75. package/dist/melonjs.mjs/plugin/plugin.js +3 -3
  76. package/dist/melonjs.mjs/renderable/collectable.js +1 -1
  77. package/dist/melonjs.mjs/renderable/colorlayer.js +1 -1
  78. package/dist/melonjs.mjs/renderable/container.js +14 -14
  79. package/dist/melonjs.mjs/renderable/draggable.js +121 -0
  80. package/dist/melonjs.mjs/renderable/dragndrop.js +3 -113
  81. package/dist/melonjs.mjs/renderable/imagelayer.js +1 -1
  82. package/dist/melonjs.mjs/renderable/light2d.js +1 -1
  83. package/dist/melonjs.mjs/renderable/nineslicesprite.js +1 -1
  84. package/dist/melonjs.mjs/renderable/renderable.js +2 -2
  85. package/dist/melonjs.mjs/renderable/sprite.js +1 -1
  86. package/dist/melonjs.mjs/renderable/trigger.js +2 -2
  87. package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +1 -1
  88. package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +1 -1
  89. package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +1 -1
  90. package/dist/melonjs.mjs/state/stage.js +1 -1
  91. package/dist/melonjs.mjs/state/state.js +1 -1
  92. package/dist/melonjs.mjs/system/device.js +1 -1
  93. package/dist/melonjs.mjs/system/dom.js +1 -1
  94. package/dist/melonjs.mjs/system/event.js +1 -1
  95. package/dist/melonjs.mjs/system/platform.js +1 -1
  96. package/dist/melonjs.mjs/system/pooling.js +1 -1
  97. package/dist/melonjs.mjs/system/save.js +1 -1
  98. package/dist/melonjs.mjs/system/timer.js +1 -1
  99. package/dist/melonjs.mjs/text/bitmaptext.js +1 -1
  100. package/dist/melonjs.mjs/text/bitmaptextdata.js +1 -1
  101. package/dist/melonjs.mjs/text/glyph.js +1 -1
  102. package/dist/melonjs.mjs/text/text.js +1 -1
  103. package/dist/melonjs.mjs/text/textmetrics.js +1 -1
  104. package/dist/melonjs.mjs/text/textstyle.js +1 -1
  105. package/dist/melonjs.mjs/tweens/easing.js +1 -1
  106. package/dist/melonjs.mjs/tweens/interpolation.js +1 -1
  107. package/dist/melonjs.mjs/tweens/tween.js +1 -1
  108. package/dist/melonjs.mjs/utils/agent.js +1 -1
  109. package/dist/melonjs.mjs/utils/array.js +1 -1
  110. package/dist/melonjs.mjs/utils/file.js +1 -1
  111. package/dist/melonjs.mjs/utils/function.js +1 -1
  112. package/dist/melonjs.mjs/utils/string.js +1 -1
  113. package/dist/melonjs.mjs/utils/utils.js +1 -1
  114. package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +1 -1
  115. package/dist/melonjs.mjs/video/renderer.js +1 -1
  116. package/dist/melonjs.mjs/video/texture/atlas.js +1 -1
  117. package/dist/melonjs.mjs/video/texture/cache.js +1 -1
  118. package/dist/melonjs.mjs/video/texture/canvas_texture.js +1 -1
  119. package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
  120. package/dist/melonjs.mjs/video/video.js +1 -1
  121. package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +1 -1
  122. package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +1 -1
  123. package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +1 -1
  124. package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +1 -1
  125. package/dist/melonjs.mjs/video/webgl/glshader.js +1 -1
  126. package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
  127. package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +1 -1
  128. package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
  129. package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +1 -1
  130. package/dist/melonjs.mjs/video/webgl/utils/attributes.js +1 -1
  131. package/dist/melonjs.mjs/video/webgl/utils/precision.js +1 -1
  132. package/dist/melonjs.mjs/video/webgl/utils/program.js +1 -1
  133. package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
  134. package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +1 -1
  135. package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +1 -1
  136. package/dist/melonjs.module.js +60 -55
  137. package/dist/types/camera/camera2d.d.ts +4 -4
  138. package/dist/types/index.d.ts +1 -1
  139. package/dist/types/physics/body.d.ts +4 -4
  140. package/dist/types/physics/detector.d.ts +5 -5
  141. package/dist/types/physics/sat.d.ts +12 -12
  142. package/dist/types/renderable/container.d.ts +25 -25
  143. package/dist/types/renderable/draggable.d.ts +53 -0
  144. package/dist/types/renderable/dragndrop.d.ts +0 -52
  145. package/dist/types/renderable/renderable.d.ts +2 -2
  146. package/package.json +8 -8
  147. package/src/camera/camera2d.js +2 -2
  148. package/src/index.js +2 -1
  149. package/src/lang/deprecated.js +2 -1
  150. package/src/physics/body.js +2 -2
  151. package/src/physics/detector.js +3 -3
  152. package/src/physics/sat.js +8 -8
  153. package/src/renderable/container.js +13 -13
  154. package/src/renderable/draggable.js +114 -0
  155. package/src/renderable/dragndrop.js +0 -109
  156. package/src/renderable/renderable.js +1 -1
  157. package/src/renderable/trigger.js +1 -1
@@ -93,19 +93,19 @@ export default class Container extends Renderable {
93
93
  * will not be in any container. <br>
94
94
  * if the given child implements a onActivateEvent method, that method will be called
95
95
  * once the child is added to this container.
96
- * @param {Renderable} child
96
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
97
97
  * @param {number} [z] - forces the z index of the child to the specified value
98
98
  * @returns {Renderable} the added child
99
99
  */
100
- addChild(child: Renderable, z?: number | undefined): Renderable;
100
+ addChild(child: Renderable | Entity | Sprite | Collectable | Trigger | Draggable | DropTarget | NineSliceSprite | ImageLayer | ColorLayer | Light2d | UIBaseElement | UISpriteElement | UITextButton | Text | BitmapText, z?: number | undefined): Renderable;
101
101
  /**
102
102
  * Add a child to the container at the specified index<br>
103
103
  * (the list won't be sorted after insertion)
104
- * @param {Renderable} child
104
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
105
105
  * @param {number} index
106
106
  * @returns {Renderable} the added child
107
107
  */
108
- addChildAt(child: Renderable, index: number): Renderable;
108
+ addChildAt(child: Renderable | Entity | Sprite | Collectable | Trigger | Draggable | DropTarget | NineSliceSprite | ImageLayer | ColorLayer | Light2d | UIBaseElement | UISpriteElement | UITextButton | Text | BitmapText, index: number): Renderable;
109
109
  /**
110
110
  * The forEach() method executes a provided function once per child element. <br>
111
111
  * the callback function is invoked with three arguments: <br>
@@ -127,10 +127,10 @@ export default class Container extends Renderable {
127
127
  forEach(callback: Function, thisArg?: object | undefined, ...args: any[]): void;
128
128
  /**
129
129
  * Swaps the position (z-index) of 2 children
130
- * @param {Renderable} child
131
- * @param {Renderable} child2
130
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
131
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child2
132
132
  */
133
- swapChildren(child: Renderable, child2: Renderable): void;
133
+ swapChildren(child: Renderable | Entity | Sprite | Collectable | Trigger | Draggable | DropTarget | NineSliceSprite | ImageLayer | ColorLayer | Light2d | UIBaseElement | UISpriteElement | UITextButton | Text | BitmapText, child2: Renderable | Entity | Sprite | Collectable | Trigger | Draggable | DropTarget | NineSliceSprite | ImageLayer | ColorLayer | Light2d | UIBaseElement | UISpriteElement | UITextButton | Text | BitmapText): void;
134
134
  /**
135
135
  * Returns the Child at the specified index
136
136
  * @param {number} index
@@ -139,22 +139,22 @@ export default class Container extends Renderable {
139
139
  getChildAt(index: number): Renderable;
140
140
  /**
141
141
  * Returns the index of the given Child
142
- * @param {Renderable} child
142
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
143
143
  * @returns {number} index
144
144
  */
145
- getChildIndex(child: Renderable): number;
145
+ getChildIndex(child: Renderable | Entity | Sprite | Collectable | Trigger | Draggable | DropTarget | NineSliceSprite | ImageLayer | ColorLayer | Light2d | UIBaseElement | UISpriteElement | UITextButton | Text | BitmapText): number;
146
146
  /**
147
147
  * Returns the next child within the container or undefined if none
148
- * @param {Renderable} child
148
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
149
149
  * @returns {Renderable} child
150
150
  */
151
- getNextChild(child: Renderable): Renderable;
151
+ getNextChild(child: Renderable | Entity | Sprite | Collectable | Trigger | Draggable | DropTarget | NineSliceSprite | ImageLayer | ColorLayer | Light2d | UIBaseElement | UISpriteElement | UITextButton | Text | BitmapText): Renderable;
152
152
  /**
153
153
  * Returns true if contains the specified Child
154
- * @param {Renderable} child
154
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
155
155
  * @returns {boolean}
156
156
  */
157
- hasChild(child: Renderable): boolean;
157
+ hasChild(child: Renderable | Entity | Sprite | Collectable | Trigger | Draggable | DropTarget | NineSliceSprite | ImageLayer | ColorLayer | Light2d | UIBaseElement | UISpriteElement | UITextButton | Text | BitmapText): boolean;
158
158
  /**
159
159
  * return the child corresponding to the given property and value.<br>
160
160
  * note : avoid calling this function every frame since
@@ -223,18 +223,18 @@ export default class Container extends Renderable {
223
223
  /**
224
224
  * Invokes the removeChildNow in a defer, to ensure the child is removed safely after the update & draw stack has completed. <br>
225
225
  * if the given child implements a onDeactivateEvent() method, that method will be called once the child is removed from this container.
226
- * @param {Renderable} child
226
+ * @param {RendRenderable|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapTexterable} child
227
227
  * @param {boolean} [keepalive=false] - true to prevent calling child.destroy()
228
228
  */
229
- removeChild(child: Renderable, keepalive?: boolean | undefined): void;
229
+ removeChild(child: RendRenderable | Sprite | Collectable | Trigger | Draggable | DropTarget | NineSliceSprite | ImageLayer | ColorLayer | Light2d | UIBaseElement | UISpriteElement | UITextButton | Text | BitmapTexterable, keepalive?: boolean | undefined): void;
230
230
  /**
231
231
  * Removes (and optionally destroys) a child from the container.<br>
232
232
  * (removal is immediate and unconditional)<br>
233
233
  * Never use keepalive=true with objects from {@link pool}. Doing so will create a memory leak.
234
- * @param {Renderable} child
234
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
235
235
  * @param {boolean} [keepalive=False] - True to prevent calling child.destroy()
236
236
  */
237
- removeChildNow(child: Renderable, keepalive?: boolean | undefined): void;
237
+ removeChildNow(child: Renderable | Entity | Sprite | Collectable | Trigger | Draggable | DropTarget | NineSliceSprite | ImageLayer | ColorLayer | Light2d | UIBaseElement | UISpriteElement | UITextButton | Text | BitmapText, keepalive?: boolean | undefined): void;
238
238
  /**
239
239
  * Automatically set the specified property of all childs to the given value
240
240
  * @param {string} prop - property name
@@ -244,24 +244,24 @@ export default class Container extends Renderable {
244
244
  setChildsProperty(prop: string, value: object, recursive?: boolean | undefined): void;
245
245
  /**
246
246
  * Move the child in the group one step forward (z depth).
247
- * @param {Renderable} child
247
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
248
248
  */
249
- moveUp(child: Renderable): void;
249
+ moveUp(child: Renderable | Entity | Sprite | Collectable | Trigger | Draggable | DropTarget | NineSliceSprite | ImageLayer | ColorLayer | Light2d | UIBaseElement | UISpriteElement | UITextButton | Text | BitmapText): void;
250
250
  /**
251
251
  * Move the child in the group one step backward (z depth).
252
- * @param {Renderable} child
252
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
253
253
  */
254
- moveDown(child: Renderable): void;
254
+ moveDown(child: Renderable | Entity | Sprite | Collectable | Trigger | Draggable | DropTarget | NineSliceSprite | ImageLayer | ColorLayer | Light2d | UIBaseElement | UISpriteElement | UITextButton | Text | BitmapText): void;
255
255
  /**
256
256
  * Move the specified child to the top(z depth).
257
- * @param {Renderable} child
257
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
258
258
  */
259
- moveToTop(child: Renderable): void;
259
+ moveToTop(child: Renderable | Entity | Sprite | Collectable | Trigger | Draggable | DropTarget | NineSliceSprite | ImageLayer | ColorLayer | Light2d | UIBaseElement | UISpriteElement | UITextButton | Text | BitmapText): void;
260
260
  /**
261
261
  * Move the specified child the bottom (z depth).
262
- * @param {Renderable} child
262
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
263
263
  */
264
- moveToBottom(child: Renderable): void;
264
+ moveToBottom(child: Renderable | Entity | Sprite | Collectable | Trigger | Draggable | DropTarget | NineSliceSprite | ImageLayer | ColorLayer | Light2d | UIBaseElement | UISpriteElement | UITextButton | Text | BitmapText): void;
265
265
  /**
266
266
  * Manually trigger the sort of all the childs in the container</p>
267
267
  * @param {boolean} [recursive=false] - recursively sort all containers if true
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @classdesc
3
+ * A Draggable base object
4
+ * @see DropTarget
5
+ * @augments Renderable
6
+ */
7
+ export class Draggable extends Renderable {
8
+ dragging: boolean;
9
+ dragId: any;
10
+ grabOffset: Vector2d;
11
+ /**
12
+ * Initializes the events the modules needs to listen to
13
+ * It translates the pointer events to me.events
14
+ * in order to make them pass through the system and to make
15
+ * this module testable. Then we subscribe this module to the
16
+ * transformed events.
17
+ * @name initEvents
18
+ * @memberof Draggable
19
+ * @private
20
+ */
21
+ private initEvents;
22
+ /**
23
+ * Gets called when the user starts dragging the entity
24
+ * @name dragStart
25
+ * @memberof Draggable
26
+ * @param {object} e - the pointer event
27
+ * @returns {boolean} false if the object is being dragged
28
+ */
29
+ dragStart(e: object): boolean;
30
+ /**
31
+ * Gets called when the user drags this entity around
32
+ * @name dragMove
33
+ * @memberof Draggable
34
+ * @param {object} e - the pointer event
35
+ */
36
+ dragMove(e: object): void;
37
+ /**
38
+ * Gets called when the user stops dragging the entity
39
+ * @name dragEnd
40
+ * @memberof Draggable
41
+ * @returns {boolean} false if the object stopped being dragged
42
+ */
43
+ dragEnd(): boolean;
44
+ /**
45
+ * Destructor
46
+ * @name destroy
47
+ * @memberof Draggable
48
+ * @ignore
49
+ */
50
+ destroy(): void;
51
+ }
52
+ import Renderable from "./../renderable/renderable.js";
53
+ import Vector2d from "./../math/vector2.js";
@@ -1,54 +1,3 @@
1
- /**
2
- * @classdesc
3
- * A Draggable base object
4
- * @see DropTarget
5
- * @augments Renderable
6
- */
7
- export class Draggable extends Renderable {
8
- dragging: boolean;
9
- dragId: any;
10
- grabOffset: Vector2d;
11
- /**
12
- * Initializes the events the modules needs to listen to
13
- * It translates the pointer events to me.events
14
- * in order to make them pass through the system and to make
15
- * this module testable. Then we subscribe this module to the
16
- * transformed events.
17
- * @name initEvents
18
- * @memberof Draggable
19
- * @private
20
- */
21
- private initEvents;
22
- /**
23
- * Gets called when the user starts dragging the entity
24
- * @name dragStart
25
- * @memberof Draggable
26
- * @param {object} e - the pointer event
27
- * @returns {boolean} false if the object is being dragged
28
- */
29
- dragStart(e: object): boolean;
30
- /**
31
- * Gets called when the user drags this entity around
32
- * @name dragMove
33
- * @memberof Draggable
34
- * @param {object} e - the pointer event
35
- */
36
- dragMove(e: object): void;
37
- /**
38
- * Gets called when the user stops dragging the entity
39
- * @name dragEnd
40
- * @memberof Draggable
41
- * @returns {boolean} false if the object stopped being dragged
42
- */
43
- dragEnd(): boolean;
44
- /**
45
- * Destructor
46
- * @name destroy
47
- * @memberof Draggable
48
- * @ignore
49
- */
50
- destroy(): void;
51
- }
52
1
  /**
53
2
  * @classdesc
54
3
  * a base drop target object
@@ -115,4 +64,3 @@ export class DropTarget extends Renderable {
115
64
  destroy(): void;
116
65
  }
117
66
  import Renderable from "./../renderable/renderable.js";
118
- import Vector2d from "./../math/vector2.js";
@@ -380,7 +380,7 @@ export default class Renderable extends Rect {
380
380
  * onCollision callback, triggered in case of collision,
381
381
  * when this renderable body is colliding with another one
382
382
  * @param {ResponseObject} response - the collision response object
383
- * @param {Renderable} other - the other renderable touching this one (a reference to response.a or response.b)
383
+ * @param {Renderable|Container|Entity|Sprite|NineSliceSprite} other - the other renderable touching this one (a reference to response.a or response.b)
384
384
  * @returns {boolean} true if the object should respond to the collision (its position and velocity will be corrected)
385
385
  * @example
386
386
  * // colision handler
@@ -396,7 +396,7 @@ export default class Renderable extends Rect {
396
396
  * return true;
397
397
  * },
398
398
  */
399
- onCollision(response: ResponseObject, other: Renderable): boolean;
399
+ onCollision(response: ResponseObject, other: Renderable | Container | Entity | Sprite | NineSliceSprite): boolean;
400
400
  /**
401
401
  * Destroy function<br>
402
402
  * @ignore
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "melonjs",
3
- "version": "15.1.5",
3
+ "version": "15.1.6",
4
4
  "description": "melonJS Game Engine",
5
5
  "homepage": "http://www.melonjs.org/",
6
6
  "type": "module",
@@ -53,7 +53,7 @@
53
53
  ],
54
54
  "dependencies": {
55
55
  "@teppeis/multimaps": "^3.0.0",
56
- "core-js": "^3.30.1",
56
+ "core-js": "^3.30.2",
57
57
  "earcut": "2.2.4",
58
58
  "eventemitter3": "^5.0.1",
59
59
  "howler": "2.2.3"
@@ -68,21 +68,21 @@
68
68
  "@rollup/plugin-node-resolve": "^15.0.2",
69
69
  "@rollup/plugin-replace": "^5.0.2",
70
70
  "@webdoc/cli": "^2.2.0",
71
- "chromedriver": "^112.0.1",
71
+ "chromedriver": "^113.0.0",
72
72
  "cross-env": "^7.0.3",
73
73
  "del-cli": "^5.0.0",
74
- "eslint": "^8.39.0",
75
- "eslint-plugin-jsdoc": "^43.1.1",
74
+ "eslint": "^8.40.0",
75
+ "eslint-plugin-jsdoc": "^44.1.0",
76
76
  "expect": "^29.5.0",
77
77
  "expect-mocha-image-snapshot": "^3.0.13",
78
78
  "fastify": "^4.17.0",
79
79
  "mocha": "^10.2.0",
80
80
  "npm-self-link": "^1.1.7",
81
- "puppeteer": "^20.1.0",
82
- "rollup": "^3.21.5",
81
+ "puppeteer": "^20.1.2",
82
+ "rollup": "^3.21.6",
83
83
  "rollup-plugin-bundle-size": "^1.0.3",
84
84
  "rollup-plugin-string": "^3.0.0",
85
- "terser": "^5.17.1",
85
+ "terser": "^5.17.3",
86
86
  "typescript": "^5.0.4"
87
87
  },
88
88
  "scripts": {
@@ -574,7 +574,7 @@ let targetV = new Vector2d();
574
574
  * set the camera position around the specified object
575
575
  * @name focusOn
576
576
  * @memberof Camera2d
577
- * @param {Renderable} target - the renderable to focus the camera on
577
+ * @param {Renderable|Entity|Sprite|NineSliceSprite} target - the renderable to focus the camera on
578
578
  */
579
579
  focusOn(target) {
580
580
  let bounds = target.getBounds();
@@ -588,7 +588,7 @@ let targetV = new Vector2d();
588
588
  * check if the specified renderable is in the camera
589
589
  * @name isVisible
590
590
  * @memberof Camera2d
591
- * @param {Renderable} obj - to be checked against
591
+ * @param {Renderable|Entity|Sprite|NineSliceSprite} obj - to be checked against
592
592
  * @param {boolean} [floating = obj.floating] - if visibility check should be done against screen coordinates
593
593
  * @returns {boolean}
594
594
  */
package/src/index.js CHANGED
@@ -42,7 +42,8 @@ import Light2d from "./renderable/light2d.js";
42
42
  import Text from "./text/text.js";
43
43
  import BitmapText from "./text/bitmaptext.js";
44
44
  import BitmapTextData from "./text/bitmaptextdata.js";
45
- import { Draggable, DropTarget } from "./renderable/dragndrop.js";
45
+ import { Draggable } from "./renderable/draggable.js";
46
+ import { DropTarget } from "./renderable/dragndrop.js";
46
47
  import TMXRenderer from "./level/tiled/renderer/TMXRenderer.js";
47
48
  import TMXOrthogonalRenderer from "./level/tiled/renderer/TMXOrthogonalRenderer.js";
48
49
  import TMXIsometricRenderer from "./level/tiled/renderer/TMXIsometricRenderer.js";
@@ -1,6 +1,7 @@
1
1
  import { TextureAtlas } from "./../video/texture/atlas.js";
2
2
  import Renderer from "./../video/renderer.js";
3
- import { Draggable, DropTarget } from "./../renderable/dragndrop.js";
3
+ import { Draggable } from "./../renderable/draggable.js";
4
+ import { DropTarget } from "./../renderable/dragndrop.js";
4
5
  import UISpriteElement from "./../renderable/ui/uispriteelement.js";
5
6
  import { warning } from "./console.js";
6
7
 
@@ -16,7 +16,7 @@ import Point from "../geometries/point.js";
16
16
  */
17
17
  export default class Body {
18
18
  /**
19
- * @param {Renderable} ancestor - the parent object this body is attached to
19
+ * @param {Renderable|Container|Entity|Sprite|NineSliceSprite} ancestor - the parent object this body is attached to
20
20
  * @param {Rect|Rect[]|Polygon|Polygon[]|Line|Line[]|Ellipse|Ellipse[]|Point|Point[]|Bounds|Bounds[]|object} [shapes] - a initial shape, list of shapes, or JSON object defining the body
21
21
  * @param {Function} [onBodyUpdate] - callback for when the body is updated (e.g. add/remove shapes)
22
22
  */
@@ -26,7 +26,7 @@ import Point from "../geometries/point.js";
26
26
  * a reference to the parent object that contains this body,
27
27
  * or undefined if it has not been added to one.
28
28
  * @public
29
- * @type {Renderable}
29
+ * @type {Renderable|Container|Entity|Sprite|NineSliceSprite}
30
30
  * @default undefined
31
31
  */
32
32
  this.ancestor = ancestor;
@@ -40,8 +40,8 @@ export default class Detector {
40
40
  /**
41
41
  * determine if two objects should collide (based on both respective objects body collision mask and type).<br>
42
42
  * you can redefine this function if you need any specific rules over what should collide with what.
43
- * @param {Renderable} a - a reference to the object A.
44
- * @param {Renderable} b - a reference to the object B.
43
+ * @param {Renderable|Container|Entity|Sprite|NineSliceSprite} a - a reference to the object A.
44
+ * @param {Renderable|Container|Entity|Sprite|NineSliceSprite} b - a reference to the object B.
45
45
  * @returns {boolean} true if they should collide, false otherwise
46
46
  */
47
47
  shouldCollide(a, b) {
@@ -94,7 +94,7 @@ export default class Detector {
94
94
  /**
95
95
  * find all the collisions for the specified object using a broadphase algorithm
96
96
  * @ignore
97
- * @param {Renderable} objA - object to be tested for collision
97
+ * @param {Renderable|Container|Entity|Sprite|NineSliceSprite} objA - object to be tested for collision
98
98
  * @returns {boolean} in case of collision, false otherwise
99
99
  */
100
100
  collisions(objA) {
@@ -187,9 +187,9 @@ function vornoiRegion(line, point) {
187
187
  /**
188
188
  * Checks whether polygons collide.
189
189
  * @ignore
190
- * @param {Renderable} a - a reference to the object A.
190
+ * @param {Renderable|Container|Entity|Sprite|NineSliceSprite} a - a reference to the object A.
191
191
  * @param {Polygon} polyA - a reference to the object A Polygon to be tested
192
- * @param {Renderable} b - a reference to the object B.
192
+ * @param {Renderable|Container|Entity|Sprite|NineSliceSprite} b - a reference to the object B.
193
193
  * @param {Polygon} polyB - a reference to the object B Polygon to be tested
194
194
  * @param {Response=} response - Response object (optional) that will be populated if they intersect.
195
195
  * @returns {boolean} true if they intersect, false if they don't.
@@ -241,9 +241,9 @@ export function testPolygonPolygon(a, polyA, b, polyB, response) {
241
241
  /**
242
242
  * Check if two Ellipse collide.
243
243
  * @ignore
244
- * @param {Renderable} a - a reference to the object A.
244
+ * @param {Renderable|Container|Entity|Sprite|NineSliceSprite} a - a reference to the object A.
245
245
  * @param {Ellipse} ellipseA - a reference to the object A Ellipse to be tested
246
- * @param {Renderable} b - a reference to the object B.
246
+ * @param {Renderable|Container|Entity|Sprite|NineSliceSprite} b - a reference to the object B.
247
247
  * @param {Ellipse} ellipseB - a reference to the object B Ellipse to be tested
248
248
  * @param {Response=} response - Response object (optional) that will be populated if
249
249
  * the circles intersect.
@@ -282,9 +282,9 @@ export function testEllipseEllipse(a, ellipseA, b, ellipseB, response) {
282
282
  /**
283
283
  * Check if a polygon and an ellipse collide.
284
284
  * @ignore
285
- * @param {Renderable} a - a reference to the object A.
285
+ * @param {Renderable|Container|Entity|Sprite|NineSliceSprite} a - a reference to the object A.
286
286
  * @param {Polygon} polyA - a reference to the object A Polygon to be tested
287
- * @param {Renderable} b - a reference to the object B.
287
+ * @param {Renderable|Container|Entity|Sprite|NineSliceSprite} b - a reference to the object B.
288
288
  * @param {Ellipse} ellipseB - a reference to the object B Ellipse to be tested
289
289
  * @param {Response=} response - Response object (optional) that will be populated if they intersect.
290
290
  * @returns {boolean} true if they intersect, false if they don't.
@@ -448,9 +448,9 @@ export function testPolygonEllipse(a, polyA, b, ellipseB, response) {
448
448
  * **NOTE:** This is slightly less efficient than testPolygonEllipse as it just
449
449
  * runs testPolygonEllipse and reverses the response at the end.
450
450
  * @ignore
451
- * @param {Renderable} a - a reference to the object A.
451
+ * @param {Renderable|Container|Entity|Sprite|NineSliceSprite} a - a reference to the object A.
452
452
  * @param {Ellipse} ellipseA - a reference to the object A Ellipse to be tested
453
- * @param {Renderable} b - a reference to the object B.
453
+ * @param {Renderable|Container|Entity|Sprite|NineSliceSprite} b - a reference to the object B.
454
454
  * @param {Polygon} polyB - a reference to the object B Polygon to be tested
455
455
  * @param {Response=} response - Response object (optional) that will be populated if
456
456
  * they intersect.
@@ -176,7 +176,7 @@ let globalFloatingCounter = 0;
176
176
  * will not be in any container. <br>
177
177
  * if the given child implements a onActivateEvent method, that method will be called
178
178
  * once the child is added to this container.
179
- * @param {Renderable} child
179
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
180
180
  * @param {number} [z] - forces the z index of the child to the specified value
181
181
  * @returns {Renderable} the added child
182
182
  */
@@ -258,7 +258,7 @@ let globalFloatingCounter = 0;
258
258
  /**
259
259
  * Add a child to the container at the specified index<br>
260
260
  * (the list won't be sorted after insertion)
261
- * @param {Renderable} child
261
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
262
262
  * @param {number} index
263
263
  * @returns {Renderable} the added child
264
264
  */
@@ -369,8 +369,8 @@ let globalFloatingCounter = 0;
369
369
 
370
370
  /**
371
371
  * Swaps the position (z-index) of 2 children
372
- * @param {Renderable} child
373
- * @param {Renderable} child2
372
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
373
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child2
374
374
  */
375
375
  swapChildren(child, child2) {
376
376
  let index = this.getChildIndex(child);
@@ -408,7 +408,7 @@ let globalFloatingCounter = 0;
408
408
 
409
409
  /**
410
410
  * Returns the index of the given Child
411
- * @param {Renderable} child
411
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
412
412
  * @returns {number} index
413
413
  */
414
414
  getChildIndex(child) {
@@ -417,7 +417,7 @@ let globalFloatingCounter = 0;
417
417
 
418
418
  /**
419
419
  * Returns the next child within the container or undefined if none
420
- * @param {Renderable} child
420
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
421
421
  * @returns {Renderable} child
422
422
  */
423
423
  getNextChild(child) {
@@ -430,7 +430,7 @@ let globalFloatingCounter = 0;
430
430
 
431
431
  /**
432
432
  * Returns true if contains the specified Child
433
- * @param {Renderable} child
433
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
434
434
  * @returns {boolean}
435
435
  */
436
436
  hasChild(child) {
@@ -638,7 +638,7 @@ let globalFloatingCounter = 0;
638
638
  /**
639
639
  * Invokes the removeChildNow in a defer, to ensure the child is removed safely after the update & draw stack has completed. <br>
640
640
  * if the given child implements a onDeactivateEvent() method, that method will be called once the child is removed from this container.
641
- * @param {Renderable} child
641
+ * @param {RendRenderable|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapTexterable} child
642
642
  * @param {boolean} [keepalive=false] - true to prevent calling child.destroy()
643
643
  */
644
644
  removeChild(child, keepalive) {
@@ -654,7 +654,7 @@ let globalFloatingCounter = 0;
654
654
  * Removes (and optionally destroys) a child from the container.<br>
655
655
  * (removal is immediate and unconditional)<br>
656
656
  * Never use keepalive=true with objects from {@link pool}. Doing so will create a memory leak.
657
- * @param {Renderable} child
657
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
658
658
  * @param {boolean} [keepalive=False] - True to prevent calling child.destroy()
659
659
  */
660
660
  removeChildNow(child, keepalive) {
@@ -717,7 +717,7 @@ let globalFloatingCounter = 0;
717
717
 
718
718
  /**
719
719
  * Move the child in the group one step forward (z depth).
720
- * @param {Renderable} child
720
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
721
721
  */
722
722
  moveUp(child) {
723
723
  let childIndex = this.getChildIndex(child);
@@ -731,7 +731,7 @@ let globalFloatingCounter = 0;
731
731
 
732
732
  /**
733
733
  * Move the child in the group one step backward (z depth).
734
- * @param {Renderable} child
734
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
735
735
  */
736
736
  moveDown(child) {
737
737
  let childIndex = this.getChildIndex(child);
@@ -745,7 +745,7 @@ let globalFloatingCounter = 0;
745
745
 
746
746
  /**
747
747
  * Move the specified child to the top(z depth).
748
- * @param {Renderable} child
748
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
749
749
  */
750
750
  moveToTop(child) {
751
751
  let childIndex = this.getChildIndex(child);
@@ -762,7 +762,7 @@ let globalFloatingCounter = 0;
762
762
 
763
763
  /**
764
764
  * Move the specified child the bottom (z depth).
765
- * @param {Renderable} child
765
+ * @param {Renderable|Entity|Sprite|Collectable|Trigger|Draggable|DropTarget|NineSliceSprite|ImageLayer|ColorLayer|Light2d|UIBaseElement|UISpriteElement|UITextButton|Text|BitmapText} child
766
766
  */
767
767
  moveToBottom(child) {
768
768
  let childIndex = this.getChildIndex(child);
@@ -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
+