melonjs 10.2.3 → 10.5.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 (96) hide show
  1. package/README.md +6 -6
  2. package/dist/melonjs.js +3620 -3582
  3. package/dist/melonjs.min.js +5 -5
  4. package/dist/melonjs.module.d.ts +3646 -4545
  5. package/dist/melonjs.module.js +3912 -3521
  6. package/package.json +21 -20
  7. package/src/audio/audio.js +30 -31
  8. package/src/camera/camera2d.js +47 -58
  9. package/src/entity/entity.js +32 -38
  10. package/src/game.js +21 -22
  11. package/src/{shapes → geometries}/ellipse.js +40 -47
  12. package/src/{shapes → geometries}/line.js +9 -12
  13. package/src/{shapes → geometries}/poly.js +100 -53
  14. package/src/{shapes → geometries}/rectangle.js +42 -45
  15. package/src/index.js +14 -32
  16. package/src/input/gamepad.js +11 -10
  17. package/src/input/input.js +2 -3
  18. package/src/input/keyboard.js +113 -113
  19. package/src/input/pointer.js +61 -29
  20. package/src/input/pointerevent.js +92 -29
  21. package/src/lang/deprecated.js +83 -13
  22. package/src/level/level.js +23 -24
  23. package/src/level/tiled/TMXGroup.js +7 -9
  24. package/src/level/tiled/TMXLayer.js +30 -33
  25. package/src/level/tiled/TMXObject.js +59 -53
  26. package/src/level/tiled/TMXTile.js +18 -19
  27. package/src/level/tiled/TMXTileMap.js +40 -46
  28. package/src/level/tiled/TMXTileset.js +12 -16
  29. package/src/level/tiled/TMXTilesetGroup.js +9 -10
  30. package/src/level/tiled/renderer/TMXHexagonalRenderer.js +7 -9
  31. package/src/level/tiled/renderer/TMXIsometricRenderer.js +7 -9
  32. package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +4 -6
  33. package/src/level/tiled/renderer/TMXRenderer.js +24 -26
  34. package/src/level/tiled/renderer/TMXStaggeredRenderer.js +1 -5
  35. package/src/loader/loader.js +17 -16
  36. package/src/loader/loadingscreen.js +2 -5
  37. package/src/math/color.js +47 -67
  38. package/src/math/math.js +15 -16
  39. package/src/math/matrix2.js +53 -59
  40. package/src/math/matrix3.js +56 -63
  41. package/src/math/observable_vector2.js +87 -77
  42. package/src/math/observable_vector3.js +97 -80
  43. package/src/math/vector2.js +107 -97
  44. package/src/math/vector3.js +116 -100
  45. package/src/particles/emitter.js +66 -76
  46. package/src/particles/particle.js +4 -6
  47. package/src/particles/particlecontainer.js +2 -4
  48. package/src/physics/body.js +49 -147
  49. package/src/physics/bounds.js +48 -50
  50. package/src/physics/collision.js +13 -14
  51. package/src/physics/detector.js +18 -17
  52. package/src/physics/quadtree.js +17 -20
  53. package/src/physics/sat.js +30 -30
  54. package/src/physics/world.js +24 -29
  55. package/src/plugin/plugin.js +11 -15
  56. package/src/renderable/GUI.js +41 -47
  57. package/src/renderable/collectable.js +5 -10
  58. package/src/renderable/colorlayer.js +10 -15
  59. package/src/renderable/container.js +87 -73
  60. package/src/renderable/dragndrop.js +224 -0
  61. package/src/renderable/imagelayer.js +25 -32
  62. package/src/renderable/nineslicesprite.js +41 -42
  63. package/src/renderable/renderable.js +113 -124
  64. package/src/renderable/sprite.js +62 -69
  65. package/src/renderable/trigger.js +26 -32
  66. package/src/state/stage.js +13 -18
  67. package/src/state/state.js +26 -27
  68. package/src/system/device.js +76 -133
  69. package/src/system/event.js +81 -70
  70. package/src/system/pooling.js +11 -12
  71. package/src/system/save.js +3 -4
  72. package/src/system/timer.js +19 -20
  73. package/src/text/bitmaptext.js +57 -55
  74. package/src/text/bitmaptextdata.js +10 -11
  75. package/src/text/glyph.js +3 -0
  76. package/src/text/text.js +49 -55
  77. package/src/tweens/easing.js +1 -1
  78. package/src/tweens/interpolation.js +1 -1
  79. package/src/tweens/tween.js +44 -46
  80. package/src/utils/agent.js +3 -4
  81. package/src/utils/array.js +4 -5
  82. package/src/utils/file.js +3 -4
  83. package/src/utils/function.js +4 -5
  84. package/src/utils/string.js +7 -9
  85. package/src/utils/utils.js +4 -5
  86. package/src/video/canvas/canvas_renderer.js +60 -62
  87. package/src/video/renderer.js +53 -58
  88. package/src/video/texture.js +98 -112
  89. package/src/video/texture_cache.js +26 -10
  90. package/src/video/video.js +15 -16
  91. package/src/video/webgl/buffer/vertex.js +2 -2
  92. package/src/video/webgl/glshader.js +37 -39
  93. package/src/video/webgl/webgl_compositor.js +128 -101
  94. package/src/video/webgl/webgl_renderer.js +126 -106
  95. package/src/entity/draggable.js +0 -139
  96. package/src/entity/droptarget.js +0 -109
@@ -3,6 +3,7 @@ import device from "./../system/device.js";
3
3
  import Bounds from "./../physics/bounds.js";
4
4
  import { viewport } from "./../game.js";
5
5
  import { globalToLocal } from "./input.js";
6
+ import { locked } from "./pointerevent.js";
6
7
 
7
8
 
8
9
  /**
@@ -15,9 +16,7 @@ var tmpVec = new Vector2d();
15
16
  * @classdesc
16
17
  * a pointer object, representing a single finger on a touch enabled device.
17
18
  * @class Pointer
18
- * @extends me.Bounds
19
- * @memberOf me
20
- * @constructor
19
+ * @augments Bounds
21
20
  */
22
21
  class Pointer extends Bounds {
23
22
 
@@ -37,7 +36,7 @@ class Pointer extends Bounds {
37
36
  * @public
38
37
  * @type {number}
39
38
  * @name LEFT
40
- * @memberOf me.Pointer
39
+ * @memberof Pointer
41
40
  */
42
41
  this.LEFT = 0;
43
42
 
@@ -46,7 +45,7 @@ class Pointer extends Bounds {
46
45
  * @public
47
46
  * @type {number}
48
47
  * @name MIDDLE
49
- * @memberOf me.Pointer
48
+ * @memberof Pointer
50
49
  */
51
50
  this.MIDDLE = 1;
52
51
 
@@ -55,7 +54,7 @@ class Pointer extends Bounds {
55
54
  * @public
56
55
  * @type {number}
57
56
  * @name RIGHT
58
- * @memberOf me.Pointer
57
+ * @memberof Pointer
59
58
  */
60
59
  this.RIGHT = 2;
61
60
 
@@ -67,7 +66,7 @@ class Pointer extends Bounds {
67
66
  * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent
68
67
  * @see https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent
69
68
  * @see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent
70
- * @memberOf me.Pointer
69
+ * @memberof Pointer
71
70
  */
72
71
  this.event = undefined;
73
72
 
@@ -77,7 +76,7 @@ class Pointer extends Bounds {
77
76
  * @type {string}
78
77
  * @name type
79
78
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Event/type
80
- * @memberOf me.Pointer
79
+ * @memberof Pointer
81
80
  */
82
81
  this.type = undefined;
83
82
 
@@ -88,7 +87,7 @@ class Pointer extends Bounds {
88
87
  * @type {number}
89
88
  * @name button
90
89
  * @see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button
91
- * @memberOf me.Pointer
90
+ * @memberof Pointer
92
91
  */
93
92
  this.button = 0;
94
93
 
@@ -98,7 +97,7 @@ class Pointer extends Bounds {
98
97
  * @type {boolean}
99
98
  * @name isPrimary
100
99
  * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/isPrimary
101
- * @memberOf me.Pointer
100
+ * @memberof Pointer
102
101
  */
103
102
  this.isPrimary = false;
104
103
 
@@ -108,7 +107,7 @@ class Pointer extends Bounds {
108
107
  * @type {number}
109
108
  * @name pageX
110
109
  * @see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/pageX
111
- * @memberOf me.Pointer
110
+ * @memberof Pointer
112
111
  */
113
112
  this.pageX = 0;
114
113
 
@@ -118,7 +117,7 @@ class Pointer extends Bounds {
118
117
  * @type {number}
119
118
  * @name pageY
120
119
  * @see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/pageY
121
- * @memberOf me.Pointer
120
+ * @memberof Pointer
122
121
  */
123
122
  this.pageY = 0;
124
123
 
@@ -128,7 +127,7 @@ class Pointer extends Bounds {
128
127
  * @type {number}
129
128
  * @name clientX
130
129
  * @see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/clientX
131
- * @memberOf me.Pointer
130
+ * @memberof Pointer
132
131
  */
133
132
  this.clientX = 0;
134
133
 
@@ -138,17 +137,37 @@ class Pointer extends Bounds {
138
137
  * @type {number}
139
138
  * @name clientY
140
139
  * @see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/clientY
141
- * @memberOf me.Pointer
140
+ * @memberof Pointer
142
141
  */
143
142
  this.clientY = 0;
144
143
 
144
+ /**
145
+ * the difference in the X coordinate of the pointer since the previous move event
146
+ * @public
147
+ * @type {number}
148
+ * @name movementX
149
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/movementX
150
+ * @memberof Pointer
151
+ */
152
+ this.movementX = 0;
153
+
154
+ /**
155
+ * the difference in the Y coordinate of the pointer since the previous move event
156
+ * @public
157
+ * @type {number}
158
+ * @name movementY
159
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/movementY
160
+ * @memberof Pointer
161
+ */
162
+ this.movementY = 0;
163
+
145
164
  /**
146
165
  * an unsigned long representing the unit of the delta values scroll amount
147
166
  * @public
148
167
  * @type {number}
149
168
  * @name deltaMode
150
169
  * @see https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/deltaMode
151
- * @memberOf me.Pointer
170
+ * @memberof Pointer
152
171
  */
153
172
  this.deltaMode = 0;
154
173
 
@@ -158,7 +177,7 @@ class Pointer extends Bounds {
158
177
  * @type {number}
159
178
  * @name deltaX
160
179
  * @see https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/deltaX
161
- * @memberOf me.Pointer
180
+ * @memberof Pointer
162
181
  */
163
182
  this.deltaX = 0;
164
183
 
@@ -168,7 +187,7 @@ class Pointer extends Bounds {
168
187
  * @type {number}
169
188
  * @name deltaY
170
189
  * @see https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/deltaY
171
- * @memberOf me.Pointer
190
+ * @memberof Pointer
172
191
  */
173
192
  this.deltaY = 0;
174
193
 
@@ -178,7 +197,7 @@ class Pointer extends Bounds {
178
197
  * @type {number}
179
198
  * @name deltaZ
180
199
  * @see https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/deltaZ
181
- * @memberOf me.Pointer
200
+ * @memberof Pointer
182
201
  */
183
202
  this.deltaZ = 0;
184
203
 
@@ -188,7 +207,7 @@ class Pointer extends Bounds {
188
207
  * @public
189
208
  * @type {number}
190
209
  * @name gameX
191
- * @memberOf me.Pointer
210
+ * @memberof Pointer
192
211
  */
193
212
  this.gameX = 0;
194
213
 
@@ -198,7 +217,7 @@ class Pointer extends Bounds {
198
217
  * @public
199
218
  * @type {number}
200
219
  * @name gameY
201
- * @memberOf me.Pointer
220
+ * @memberof Pointer
202
221
  */
203
222
  this.gameY = 0;
204
223
 
@@ -207,7 +226,7 @@ class Pointer extends Bounds {
207
226
  * @public
208
227
  * @type {number}
209
228
  * @name gameScreenX
210
- * @memberOf me.Pointer
229
+ * @memberof Pointer
211
230
  */
212
231
  this.gameScreenX = 0;
213
232
 
@@ -216,7 +235,7 @@ class Pointer extends Bounds {
216
235
  * @public
217
236
  * @type {number}
218
237
  * @name gameScreenY
219
- * @memberOf me.Pointer
238
+ * @memberof Pointer
220
239
  */
221
240
  this.gameScreenY = 0;
222
241
 
@@ -225,7 +244,7 @@ class Pointer extends Bounds {
225
244
  * @public
226
245
  * @type {number}
227
246
  * @name gameWorldX
228
- * @memberOf me.Pointer
247
+ * @memberof Pointer
229
248
  */
230
249
  this.gameWorldX = 0;
231
250
 
@@ -234,7 +253,7 @@ class Pointer extends Bounds {
234
253
  * @public
235
254
  * @type {number}
236
255
  * @name gameWorldY
237
- * @memberOf me.Pointer
256
+ * @memberof Pointer
238
257
  */
239
258
  this.gameWorldY = 0;
240
259
 
@@ -243,7 +262,7 @@ class Pointer extends Bounds {
243
262
  * @public
244
263
  * @type {number}
245
264
  * @name gameLocalX
246
- * @memberOf me.Pointer
265
+ * @memberof Pointer
247
266
  */
248
267
  this.gameLocalX = 0;
249
268
 
@@ -252,7 +271,7 @@ class Pointer extends Bounds {
252
271
  * @public
253
272
  * @type {number}
254
273
  * @name gameLocalY
255
- * @memberOf me.Pointer
274
+ * @memberof Pointer
256
275
  */
257
276
  this.gameLocalY = 0;
258
277
 
@@ -261,7 +280,7 @@ class Pointer extends Bounds {
261
280
  * @public
262
281
  * @type {number}
263
282
  * @name pointerId
264
- * @memberOf me.Pointer
283
+ * @memberof Pointer
265
284
  * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pointerId
266
285
  */
267
286
  this.pointerId = undefined;
@@ -271,17 +290,26 @@ class Pointer extends Bounds {
271
290
  * @public
272
291
  * @type {boolean}
273
292
  * @name isNormalized
274
- * @memberOf me.Pointer
293
+ * @memberof Pointer
275
294
  */
276
295
  this.isNormalized = false;
277
296
 
297
+ /**
298
+ * true if the pointer is currently locked
299
+ * @public
300
+ * @type {boolean}
301
+ * @name locked
302
+ * @memberof Pointer
303
+ */
304
+ this.locked = false;
305
+
278
306
  // bind list for mouse buttons
279
307
  this.bind = [ 0, 0, 0 ];
280
308
  }
281
309
 
282
310
  /**
283
311
  * initialize the Pointer object using the given Event Object
284
- * @name me.Pointer#set
312
+ * @name Pointer#set
285
313
  * @private
286
314
  * @function
287
315
  * @param {Event} event the original Event object
@@ -308,6 +336,10 @@ class Pointer extends Bounds {
308
336
  // true if not originally a pointer event
309
337
  this.isNormalized = !device.PointerEvent || (device.PointerEvent && !(event instanceof window.PointerEvent));
310
338
 
339
+ this.locked = locked;
340
+ this.movementX = event.movementX || 0;
341
+ this.movementY = event.movementY || 0;
342
+
311
343
  if (event.type === "wheel") {
312
344
  this.deltaMode = event.deltaMode || 0;
313
345
  this.deltaX = event.deltaX || 0;
@@ -1,20 +1,20 @@
1
1
  import {preventDefault} from "./input.js";
2
2
  import {getBindingKey, triggerKeyEvent} from "./keyboard.js";
3
- import { renderer, scaleRatio } from "./../video/video.js";
4
- import * as fctUtil from "./../utils/function.js";
5
- import * as arrayUtil from "./../utils/array.js";
3
+ import { renderer, scaleRatio, getParent } from "./../video/video.js";
4
+ import { throttle } from "./../utils/function.js";
5
+ import { remove } from "./../utils/array.js";
6
6
  import * as event from "./../system/event.js";
7
7
  import timer from "./../system/timer.js";
8
8
  import pool from "./../system/pooling.js";
9
9
  import device from "./../system/device.js";
10
10
  import Pointer from "./pointer.js";
11
- import Rect from "./../shapes/rectangle.js";
11
+ import Rect from "./../geometries/rectangle.js";
12
12
  import Container from "./../renderable/container.js";
13
13
  import { world, viewport } from "./../game.js";
14
14
 
15
15
  /**
16
16
  * A pool of `Pointer` objects to cache pointer/touch event coordinates.
17
- * @type {Array.<me.Vector2d>}
17
+ * @type {Array.<Vector2d>}
18
18
  * @ignore
19
19
  */
20
20
  var T_POINTERS = [];
@@ -178,7 +178,7 @@ function enablePointerEvent() {
178
178
  if (activeEventList.indexOf(events[i]) !== -1) {
179
179
  pointerEventTarget.addEventListener(
180
180
  events[i],
181
- fctUtil.throttle(
181
+ throttle(
182
182
  onMoveEvent,
183
183
  throttlingInterval,
184
184
  false
@@ -191,6 +191,17 @@ function enablePointerEvent() {
191
191
  // disable all gesture by default
192
192
  setTouchAction(pointerEventTarget);
193
193
 
194
+ // set a on change listener on pointerlock if supported
195
+ if (device.hasPointerLockSupport) {
196
+ document.addEventListener("pointerlockchange", () => {
197
+ // change the locked status accordingly
198
+ locked = document.pointerLockElement === getParent();
199
+ // emit the corresponding internal event
200
+ event.emit(event.POINTERLOCKCHANGE, locked);
201
+ }, true);
202
+ }
203
+
204
+ // all done !
194
205
  pointerInitialized = true;
195
206
  }
196
207
  }
@@ -492,19 +503,29 @@ function onPointerEvent(e) {
492
503
  * @public
493
504
  * @type {EventTarget}
494
505
  * @name pointerEventTarget
495
- * @memberOf me.input
506
+ * @memberof input
496
507
  */
497
508
  export var pointerEventTarget = null;
498
509
 
499
510
  /**
500
511
  * Pointer information (current position and size)
501
512
  * @public
502
- * @type {me.Rect}
513
+ * @type {Rect}
503
514
  * @name pointer
504
- * @memberOf me.input
515
+ * @memberof input
505
516
  */
506
517
  export var pointer = new Pointer(0, 0, 1, 1);
507
518
 
519
+
520
+ /**
521
+ * indicates if the pointer is currently locked
522
+ * @public
523
+ * @type {boolean}
524
+ * @name locked
525
+ * @memberof input
526
+ */
527
+ export var locked = false;
528
+
508
529
  /**
509
530
  * time interval for event throttling in milliseconds<br>
510
531
  * default value : "1000/me.timer.maxfps" ms<br>
@@ -512,7 +533,7 @@ export var pointer = new Pointer(0, 0, 1, 1);
512
533
  * @public
513
534
  * @type {number}
514
535
  * @name throttlingInterval
515
- * @memberOf me.input
536
+ * @memberof input
516
537
  */
517
538
  export var throttlingInterval;
518
539
 
@@ -520,13 +541,13 @@ export var throttlingInterval;
520
541
  * Translate the specified x and y values from the global (absolute)
521
542
  * coordinate to local (viewport) relative coordinate.
522
543
  * @name globalToLocal
523
- * @memberOf me.input
544
+ * @memberof input
524
545
  * @public
525
546
  * @function
526
547
  * @param {number} x the global x coordinate to be translated.
527
548
  * @param {number} y the global y coordinate to be translated.
528
- * @param {me.Vector2d} [v] an optional vector object where to set the translated coordinates
529
- * @returns {me.Vector2d} A vector object with the corresponding translated coordinates
549
+ * @param {Vector2d} [v] an optional vector object where to set the translated coordinates
550
+ * @returns {Vector2d} A vector object with the corresponding translated coordinates
530
551
  * @example
531
552
  * onMouseEvent : function (pointer) {
532
553
  * // convert the given into local (viewport) relative coordinates
@@ -552,7 +573,7 @@ export function globalToLocal(x, y, v) {
552
573
  * enable/disable all gestures on the given element.<br>
553
574
  * by default melonJS will disable browser handling of all panning and zooming gestures.
554
575
  * @name setTouchAction
555
- * @memberOf me.input
576
+ * @memberof input
556
577
  * @see https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action
557
578
  * @public
558
579
  * @function
@@ -569,11 +590,11 @@ export function setTouchAction(element, value) {
569
590
  * Middle button – 1
570
591
  * Right button – 2
571
592
  * @name bindPointer
572
- * @memberOf me.input
593
+ * @memberof input
573
594
  * @public
574
595
  * @function
575
- * @param {number} [button=me.input.pointer.LEFT] (accordingly to W3C values : 0,1,2 for left, middle and right buttons)
576
- * @param {me.input.KEY} keyCode
596
+ * @param {number} [button=input.pointer.LEFT] (accordingly to W3C values : 0,1,2 for left, middle and right buttons)
597
+ * @param {input.KEY} keyCode
577
598
  * @example
578
599
  * // enable the keyboard
579
600
  * me.input.bindKey(me.input.KEY.X, "shoot");
@@ -600,10 +621,10 @@ export function bindPointer() {
600
621
  /**
601
622
  * unbind the defined keycode
602
623
  * @name unbindPointer
603
- * @memberOf me.input
624
+ * @memberof input
604
625
  * @public
605
626
  * @function
606
- * @param {number} [button=me.input.pointer.LEFT] (accordingly to W3C values : 0,1,2 for left, middle and right buttons)
627
+ * @param {number} [button=input.pointer.LEFT] (accordingly to W3C values : 0,1,2 for left, middle and right buttons)
607
628
  * @example
608
629
  * me.input.unbindPointer(me.input.pointer.LEFT);
609
630
  */
@@ -619,10 +640,10 @@ export function unbindPointer(button) {
619
640
  /**
620
641
  * allows registration of event listeners on the object target. <br>
621
642
  * melonJS will pass a me.Pointer object to the defined callback.
622
- * @see me.Pointer
643
+ * @see Pointer
623
644
  * @see {@link http://www.w3.org/TR/pointerevents/#list-of-pointer-events|W3C Pointer Event list}
624
645
  * @name registerPointerEvent
625
- * @memberOf me.input
646
+ * @memberof input
626
647
  * @public
627
648
  * @function
628
649
  * @param {string} eventType The event type for which the object is registering <br>
@@ -637,7 +658,7 @@ export function unbindPointer(button) {
637
658
  * <li><code>"pointercancel"</code></li>
638
659
  * <li><code>"wheel"</code></li>
639
660
  * </ul>
640
- * @param {me.Rect|me.Polygon|me.Line|me.Ellipse} region a shape representing the region to register on
661
+ * @param {Rect|Polygon|Line|Ellipse} region a shape representing the region to register on
641
662
  * @param {Function} callback methods to be called when the event occurs.
642
663
  * Returning `false` from the defined callback will prevent the event to be propagated to other objects
643
664
  * @example
@@ -694,11 +715,11 @@ export function registerPointerEvent(eventType, region, callback) {
694
715
  * allows the removal of event listeners from the object target.
695
716
  * @see {@link http://www.w3.org/TR/pointerevents/#list-of-pointer-events|W3C Pointer Event list}
696
717
  * @name releasePointerEvent
697
- * @memberOf me.input
718
+ * @memberof input
698
719
  * @public
699
720
  * @function
700
- * @param {string} eventType The event type for which the object was registered. See {@link me.input.registerPointerEvent}
701
- * @param {me.Rect|me.Polygon|me.Line|me.Ellipse} region the registered region to release for this event
721
+ * @param {string} eventType The event type for which the object was registered. See {@link input.registerPointerEvent}
722
+ * @param {Rect|Polygon|Line|Ellipse} region the registered region to release for this event
702
723
  * @param {Function} [callback="all"] if specified unregister the event only for the specific callback
703
724
  * @example
704
725
  * // release the registered region on the 'pointerdown' event
@@ -718,7 +739,7 @@ export function releasePointerEvent(eventType, region, callback) {
718
739
  eventType = eventTypes[i];
719
740
  if (handlers.callbacks[eventType]) {
720
741
  if (typeof (callback) !== "undefined") {
721
- arrayUtil.remove(handlers.callbacks[eventType], callback);
742
+ remove(handlers.callbacks[eventType], callback);
722
743
  } else {
723
744
  while (handlers.callbacks[eventType].length > 0) {
724
745
  handlers.callbacks[eventType].pop();
@@ -739,10 +760,10 @@ export function releasePointerEvent(eventType, region, callback) {
739
760
  /**
740
761
  * allows the removal of all registered event listeners from the object target.
741
762
  * @name releaseAllPointerEvents
742
- * @memberOf me.input
763
+ * @memberof input
743
764
  * @public
744
765
  * @function
745
- * @param {me.Rect|me.Polygon|me.Line|me.Ellipse} region the registered region to release event from
766
+ * @param {Rect|Polygon|Line|Ellipse} region the registered region to release event from
746
767
  * @example
747
768
  * // release all registered event on the
748
769
  * me.input.releaseAllPointerEvents(this);
@@ -750,7 +771,49 @@ export function releasePointerEvent(eventType, region, callback) {
750
771
  export function releaseAllPointerEvents(region) {
751
772
  if (eventHandlers.has(region)) {
752
773
  for (var i = 0; i < pointerEventList.length; i++) {
753
- this.releasePointerEvent(pointerEventList[i], region);
774
+ releasePointerEvent(pointerEventList[i], region);
754
775
  }
755
776
  };
756
777
  };
778
+
779
+ /**
780
+ * request for the pointer to be locked on the parent DOM element.
781
+ * (Must be called in a click event or an event that requires user interaction)
782
+ * @name requestPointerLock
783
+ * @memberof input
784
+ * @public
785
+ * @function
786
+ * @param {Function} [success] callback if the request is successful
787
+ * @returns {boolean} return true if the request was successfully submitted
788
+ * @example
789
+ * // register on the pointer lock change event
790
+ * event.on(event.POINTERLOCKCHANGE, (locked)=> {
791
+ * console.log("pointer lock: " + locked);
792
+ * });
793
+ * // request for pointer lock
794
+ * me.input.requestPointerLock();
795
+ */
796
+ export function requestPointerLock() {
797
+ if (device.hasPointerLockSupport) {
798
+ var element = getParent();
799
+ element.requestPointerLock();
800
+ return true;
801
+ }
802
+ return false;
803
+ }
804
+
805
+ /**
806
+ * Initiates an exit from pointer lock state
807
+ * @name exitPointerLock
808
+ * @memberof input
809
+ * @public
810
+ * @function
811
+ * @returns {boolean} return true if the request was successfully submitted
812
+ */
813
+ export function exitPointerLock() {
814
+ if (device.hasPointerLockSupport) {
815
+ document.exitPointerLock();
816
+ return true;
817
+ }
818
+ return false;
819
+ }
@@ -1,15 +1,16 @@
1
+ import device from "./../system/device.js";
2
+ import { requestPointerLock, exitPointerLock } from "./../input/input.js";
3
+ import { TextureAtlas } from "./../video/texture.js";
4
+ import Renderer from "./../video/renderer.js";
5
+ import { Draggable, DropTarget } from "./../renderable/dragndrop.js";
6
+
1
7
  /**
2
8
  * placeholder for all deprecated classes and corresponding alias for backward compatibility
3
- * @namespace deprecated
4
- * @memberOf me
5
9
  */
6
10
 
7
11
  /**
8
12
  * display a deprecation warning in the console
9
- * @public
10
- * @function
11
- * @memberOf me.deprecated
12
- * @name warning
13
+ * @ignore
13
14
  * @param {string} deprecated deprecated class,function or property name
14
15
  * @param {string} replacement the replacement class, function, or property name
15
16
  * @param {string} version the version since when the lass,function or property is deprecated
@@ -42,17 +43,86 @@ export function warning(deprecated, replacement, version) {
42
43
  if (console.groupCollapsed) {
43
44
  console.groupEnd();
44
45
  }
46
+ };
45
47
 
48
+ /**
49
+ * @public
50
+ * @type {Function}
51
+ * @name turnOnPointerLock
52
+ * @memberof device
53
+ * @deprecated since 10.3.0
54
+ * @see input.requestPointerLock
55
+ */
56
+ device.turnOnPointerLock = function () {
57
+ warning("device.turnOnPointerLock()", "input.requestPointerLock()", "10.3.0");
58
+ return requestPointerLock();
59
+ };
46
60
 
61
+ /**
62
+ * @public
63
+ * @type {Function}
64
+ * @name turnOffPointerLock
65
+ * @memberof device
66
+ * @deprecated since 10.3.0
67
+ * @see input.exitPointerLock
68
+ */
69
+ device.turnOffPointerLock = function () {
70
+ warning("device.turnOffPointerLock()", "input.exitPointerLock()", "10.3.0");
71
+ return exitPointerLock();
47
72
  };
48
73
 
74
+ /**
75
+ * @public
76
+ * @name Texture
77
+ * @memberof Renderer
78
+ * @deprecated since 10.4.0
79
+ * @see TextureAtlas
80
+ */
81
+ Object.defineProperty(Renderer.prototype, "Texture", {
82
+ /**
83
+ * @ignore
84
+ */
85
+ get : function () {
86
+ warning("me.video.renderer.Texture", "me.TextureAtlas", "10.4.0");
87
+ return TextureAtlas;
88
+ }
89
+ });
90
+
49
91
 
50
92
  /**
51
- * Backward compatibility for deprecated method or properties are automatically
52
- * applied when automatically generating an UMD bundle (which is the default since version 9.0).
53
- * @memberof me.deprecated
54
- * @function apply
93
+ * @classdesc
94
+ * Used to make a game entity draggable
95
+ * @augments Entity
96
+ * @deprecated since 10.5.0
97
+ * @see Draggable
55
98
  */
56
- export function apply() {
57
- ;
58
- };
99
+ export class DraggableEntity extends Draggable {
100
+ /**
101
+ * @param {number} x the x coordinates of the draggable object
102
+ * @param {number} y the y coordinates of the draggable object
103
+ * @param {object} settings Entity properties (see {@link Entity})
104
+ */
105
+ constructor(x, y, settings) {
106
+ warning("DraggableEntity", "Draggable", "10.5.0");
107
+ super(x, y, settings.width, settings.height);
108
+ }
109
+ }
110
+
111
+ /**
112
+ * @classdesc
113
+ * Used to make a game entity a droptarget
114
+ * @augments Entity
115
+ * @deprecated since 10.5.0
116
+ * @see DropTarget
117
+ */
118
+ export class DroptargetEntity extends DropTarget {
119
+ /**
120
+ * @param {number} x the x coordinates of the draggable object
121
+ * @param {number} y the y coordinates of the draggable object
122
+ * @param {object} settings Entity properties (see {@link Entity})
123
+ */
124
+ constructor(x, y, settings) {
125
+ warning("DroptargetEntity", "DropTarget", "10.5.0");
126
+ super(x, y, settings.width, settings.height);
127
+ }
128
+ }