melonjs 10.2.1 → 10.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/melonjs.js +2735 -2760
- package/dist/melonjs.min.js +3 -3
- package/dist/melonjs.module.d.ts +2186 -2162
- package/dist/melonjs.module.js +2323 -2362
- package/package.json +8 -9
- package/src/audio/audio.js +43 -43
- package/src/camera/camera2d.js +52 -74
- package/src/entity/draggable.js +18 -17
- package/src/entity/droptarget.js +19 -18
- package/src/entity/entity.js +22 -26
- package/src/game.js +2 -2
- package/src/index.js +11 -11
- package/src/input/gamepad.js +13 -13
- package/src/input/input.js +1 -1
- package/src/input/keyboard.js +14 -16
- package/src/input/pointer.js +42 -35
- package/src/input/pointerevent.js +18 -26
- package/src/lang/deprecated.js +3 -3
- package/src/level/level.js +24 -16
- package/src/level/tiled/TMXGroup.js +6 -6
- package/src/level/tiled/TMXLayer.js +31 -31
- package/src/level/tiled/TMXObject.js +19 -19
- package/src/level/tiled/TMXTile.js +11 -12
- package/src/level/tiled/TMXTileMap.js +23 -21
- package/src/level/tiled/TMXTileset.js +13 -13
- package/src/level/tiled/TMXTilesetGroup.js +4 -4
- package/src/level/tiled/TMXUtils.js +13 -11
- package/src/level/tiled/renderer/TMXHexagonalRenderer.js +1 -1
- package/src/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
- package/src/level/tiled/renderer/TMXRenderer.js +17 -17
- package/src/loader/loader.js +29 -25
- package/src/math/color.js +45 -64
- package/src/math/math.js +17 -17
- package/src/math/matrix2.js +46 -46
- package/src/math/matrix3.js +64 -64
- package/src/math/observable_vector2.js +45 -57
- package/src/math/observable_vector3.js +56 -70
- package/src/math/vector2.js +60 -59
- package/src/math/vector3.js +65 -64
- package/src/particles/emitter.js +53 -55
- package/src/particles/particle.js +1 -1
- package/src/physics/body.js +44 -44
- package/src/physics/bounds.js +34 -34
- package/src/physics/collision.js +15 -16
- package/src/physics/detector.js +10 -10
- package/src/physics/quadtree.js +19 -17
- package/src/physics/sat.js +17 -17
- package/src/physics/world.js +12 -10
- package/src/plugin/plugin.js +6 -6
- package/src/renderable/GUI.js +13 -18
- package/src/renderable/collectable.js +3 -3
- package/src/renderable/colorlayer.js +4 -4
- package/src/renderable/container.js +64 -46
- package/src/renderable/imagelayer.js +30 -31
- package/src/renderable/nineslicesprite.js +13 -13
- package/src/renderable/renderable.js +68 -66
- package/src/renderable/sprite.js +57 -43
- package/src/renderable/trigger.js +14 -15
- package/src/shapes/ellipse.js +27 -26
- package/src/shapes/line.js +8 -7
- package/src/shapes/poly.js +33 -31
- package/src/shapes/rectangle.js +50 -96
- package/src/state/stage.js +6 -6
- package/src/state/state.js +54 -54
- package/src/system/device.js +97 -84
- package/src/system/event.js +72 -72
- package/src/system/pooling.js +14 -14
- package/src/system/save.js +6 -3
- package/src/system/timer.js +20 -20
- package/src/text/bitmaptext.js +27 -33
- package/src/text/bitmaptextdata.js +9 -9
- package/src/text/text.js +39 -41
- package/src/tweens/easing.js +4 -4
- package/src/tweens/interpolation.js +4 -4
- package/src/tweens/tween.js +37 -27
- package/src/utils/agent.js +9 -8
- package/src/utils/array.js +4 -4
- package/src/utils/file.js +4 -4
- package/src/utils/function.js +5 -5
- package/src/utils/string.js +12 -12
- package/src/utils/utils.js +19 -19
- package/src/video/canvas/canvas_renderer.js +90 -90
- package/src/video/renderer.js +40 -39
- package/src/video/texture.js +74 -75
- package/src/video/video.js +30 -30
- package/src/video/webgl/buffer/vertex.js +9 -1
- package/src/video/webgl/glshader.js +20 -20
- package/src/video/webgl/webgl_compositor.js +33 -34
- package/src/video/webgl/webgl_renderer.js +104 -104
|
@@ -13,10 +13,10 @@ import { clamp } from "./../math/math.js";
|
|
|
13
13
|
* @extends me.Rect
|
|
14
14
|
* @memberOf me
|
|
15
15
|
* @constructor
|
|
16
|
-
* @param {
|
|
17
|
-
* @param {
|
|
18
|
-
* @param {
|
|
19
|
-
* @param {
|
|
16
|
+
* @param {number} x position of the renderable object (accessible through inherited pos.x property)
|
|
17
|
+
* @param {number} y position of the renderable object (accessible through inherited pos.y property)
|
|
18
|
+
* @param {number} width object width
|
|
19
|
+
* @param {number} height object height
|
|
20
20
|
*/
|
|
21
21
|
class Renderable extends Rect {
|
|
22
22
|
|
|
@@ -37,7 +37,7 @@ class Renderable extends Rect {
|
|
|
37
37
|
/**
|
|
38
38
|
* If true then physic collision and input events will not impact this renderable
|
|
39
39
|
* @public
|
|
40
|
-
* @type
|
|
40
|
+
* @type {boolean}
|
|
41
41
|
* @default true
|
|
42
42
|
* @name isKinematic
|
|
43
43
|
* @memberOf me.Renderable
|
|
@@ -88,7 +88,7 @@ class Renderable extends Rect {
|
|
|
88
88
|
/**
|
|
89
89
|
* the renderable default transformation matrix
|
|
90
90
|
* @public
|
|
91
|
-
* @type me.Matrix2d
|
|
91
|
+
* @type {me.Matrix2d}
|
|
92
92
|
* @name currentTransform
|
|
93
93
|
* @memberOf me.Renderable#
|
|
94
94
|
*/
|
|
@@ -102,7 +102,7 @@ class Renderable extends Rect {
|
|
|
102
102
|
* a GUID will be allocated for any renderable object added <br>
|
|
103
103
|
* to an object container (including the `me.game.world` container)
|
|
104
104
|
* @public
|
|
105
|
-
* @type
|
|
105
|
+
* @type {string}
|
|
106
106
|
* @name GUID
|
|
107
107
|
* @memberOf me.Renderable
|
|
108
108
|
*/
|
|
@@ -111,7 +111,7 @@ class Renderable extends Rect {
|
|
|
111
111
|
/**
|
|
112
112
|
* an event handler that is called when the renderable leave or enter a camera viewport
|
|
113
113
|
* @public
|
|
114
|
-
* @type
|
|
114
|
+
* @type {Function}
|
|
115
115
|
* @default undefined
|
|
116
116
|
* @name onVisibilityChange
|
|
117
117
|
* @memberOf me.Renderable#
|
|
@@ -127,7 +127,7 @@ class Renderable extends Rect {
|
|
|
127
127
|
/**
|
|
128
128
|
* Whether the renderable object will always update, even when outside of the viewport<br>
|
|
129
129
|
* @public
|
|
130
|
-
* @type
|
|
130
|
+
* @type {boolean}
|
|
131
131
|
* @default false
|
|
132
132
|
* @name alwaysUpdate
|
|
133
133
|
* @memberOf me.Renderable
|
|
@@ -137,7 +137,7 @@ class Renderable extends Rect {
|
|
|
137
137
|
/**
|
|
138
138
|
* Whether to update this object when the game is paused.
|
|
139
139
|
* @public
|
|
140
|
-
* @type
|
|
140
|
+
* @type {boolean}
|
|
141
141
|
* @default false
|
|
142
142
|
* @name updateWhenPaused
|
|
143
143
|
* @memberOf me.Renderable
|
|
@@ -147,7 +147,7 @@ class Renderable extends Rect {
|
|
|
147
147
|
/**
|
|
148
148
|
* make the renderable object persistent over level changes<br>
|
|
149
149
|
* @public
|
|
150
|
-
* @type
|
|
150
|
+
* @type {boolean}
|
|
151
151
|
* @default false
|
|
152
152
|
* @name isPersistent
|
|
153
153
|
* @memberOf me.Renderable
|
|
@@ -158,7 +158,7 @@ class Renderable extends Rect {
|
|
|
158
158
|
* If true, this renderable will be rendered using screen coordinates,
|
|
159
159
|
* as opposed to world coordinates. Use this, for example, to define UI elements.
|
|
160
160
|
* @public
|
|
161
|
-
* @type
|
|
161
|
+
* @type {boolean}
|
|
162
162
|
* @default false
|
|
163
163
|
* @name floating
|
|
164
164
|
* @memberOf me.Renderable
|
|
@@ -174,7 +174,7 @@ class Renderable extends Rect {
|
|
|
174
174
|
* <i><b>Note:</b> Object created through Tiled will have their anchorPoint set to (0, 0) to match Tiled Level editor implementation.
|
|
175
175
|
* To specify a value through Tiled, use a json expression like `json:{"x":0.5,"y":0.5}`. </i>
|
|
176
176
|
* @public
|
|
177
|
-
* @type me.ObservableVector2d
|
|
177
|
+
* @type {me.ObservableVector2d}
|
|
178
178
|
* @default <0.5,0.5>
|
|
179
179
|
* @name anchorPoint
|
|
180
180
|
* @memberOf me.Renderable#
|
|
@@ -189,7 +189,7 @@ class Renderable extends Rect {
|
|
|
189
189
|
* When enabled, an object container will automatically apply
|
|
190
190
|
* any defined transformation before calling the child draw method.
|
|
191
191
|
* @public
|
|
192
|
-
* @type
|
|
192
|
+
* @type {boolean}
|
|
193
193
|
* @default true
|
|
194
194
|
* @name autoTransform
|
|
195
195
|
* @memberOf me.Renderable
|
|
@@ -213,7 +213,7 @@ class Renderable extends Rect {
|
|
|
213
213
|
* @see me.Renderable#setOpacity
|
|
214
214
|
* @see me.Renderable#getOpacity
|
|
215
215
|
* @public
|
|
216
|
-
* @type
|
|
216
|
+
* @type {number}
|
|
217
217
|
* @default 1.0
|
|
218
218
|
* @name me.Renderable#alpha
|
|
219
219
|
*/
|
|
@@ -222,7 +222,7 @@ class Renderable extends Rect {
|
|
|
222
222
|
/**
|
|
223
223
|
* a reference to the parent object that contains this renderable
|
|
224
224
|
* @public
|
|
225
|
-
* @type me.Container|me.Entity
|
|
225
|
+
* @type {me.Container|me.Entity}
|
|
226
226
|
* @default undefined
|
|
227
227
|
* @name me.Renderable#ancestor
|
|
228
228
|
*/
|
|
@@ -272,7 +272,7 @@ class Renderable extends Rect {
|
|
|
272
272
|
/**
|
|
273
273
|
* The name of the renderable
|
|
274
274
|
* @public
|
|
275
|
-
* @type {
|
|
275
|
+
* @type {string}
|
|
276
276
|
* @name name
|
|
277
277
|
* @default ""
|
|
278
278
|
* @memberOf me.Renderable
|
|
@@ -294,7 +294,7 @@ class Renderable extends Rect {
|
|
|
294
294
|
|
|
295
295
|
/**
|
|
296
296
|
* when true the renderable will be redrawn during the next update cycle
|
|
297
|
-
* @type {
|
|
297
|
+
* @type {boolean}
|
|
298
298
|
* @name isDirty
|
|
299
299
|
* @default false
|
|
300
300
|
* @memberOf me.Renderable#
|
|
@@ -314,26 +314,33 @@ class Renderable extends Rect {
|
|
|
314
314
|
this.setOpacity(1.0);
|
|
315
315
|
}
|
|
316
316
|
|
|
317
|
+
/**
|
|
318
|
+
* Whether the renderable object is floating, or contained in a floating container
|
|
319
|
+
* @public
|
|
320
|
+
* @see me.Renderable#floating
|
|
321
|
+
* @readonly
|
|
322
|
+
* @type {boolean}
|
|
323
|
+
* @name isFloating
|
|
324
|
+
* @memberOf me.Renderable
|
|
325
|
+
*/
|
|
326
|
+
get isFloating() {
|
|
327
|
+
return this.floating === true || (typeof this.ancestor !== "undefined" && this.ancestor.floating === true);
|
|
328
|
+
}
|
|
329
|
+
|
|
317
330
|
/**
|
|
318
331
|
* Whether the renderable object is visible and within the viewport
|
|
319
332
|
* @public
|
|
320
333
|
* @readonly
|
|
321
|
-
* @type
|
|
334
|
+
* @type {boolean}
|
|
322
335
|
* @default false
|
|
323
336
|
* @name inViewport
|
|
324
337
|
* @memberOf me.Renderable
|
|
325
338
|
*/
|
|
326
339
|
|
|
327
|
-
/**
|
|
328
|
-
* @ignore
|
|
329
|
-
*/
|
|
330
340
|
get inViewport() {
|
|
331
341
|
return this._inViewport;
|
|
332
342
|
}
|
|
333
343
|
|
|
334
|
-
/**
|
|
335
|
-
* @ignore
|
|
336
|
-
*/
|
|
337
344
|
set inViewport(value) {
|
|
338
345
|
if (this._inViewport !== value) {
|
|
339
346
|
this._inViewport = value;
|
|
@@ -347,14 +354,11 @@ class Renderable extends Rect {
|
|
|
347
354
|
* returns true if this renderable is flipped on the horizontal axis
|
|
348
355
|
* @public
|
|
349
356
|
* @see me.Renderable#flipX
|
|
350
|
-
* @type {
|
|
357
|
+
* @type {boolean}
|
|
351
358
|
* @name isFlippedX
|
|
352
359
|
* @memberOf me.Renderable
|
|
353
360
|
*/
|
|
354
361
|
|
|
355
|
-
/**
|
|
356
|
-
* @ignore
|
|
357
|
-
*/
|
|
358
362
|
get isFlippedX() {
|
|
359
363
|
return this._flip.x === true;
|
|
360
364
|
}
|
|
@@ -363,14 +367,11 @@ class Renderable extends Rect {
|
|
|
363
367
|
* returns true if this renderable is flipped on the vertical axis
|
|
364
368
|
* @public
|
|
365
369
|
* @see me.Renderable#flipY
|
|
366
|
-
* @type {
|
|
370
|
+
* @type {boolean}
|
|
367
371
|
* @name isFlippedY
|
|
368
372
|
* @memberOf me.Renderable
|
|
369
373
|
*/
|
|
370
374
|
|
|
371
|
-
/**
|
|
372
|
-
* @ignore
|
|
373
|
-
*/
|
|
374
375
|
get isFlippedY() {
|
|
375
376
|
return this._flip.y === true;
|
|
376
377
|
}
|
|
@@ -380,7 +381,7 @@ class Renderable extends Rect {
|
|
|
380
381
|
* @name getBounds
|
|
381
382
|
* @memberOf me.Renderable.prototype
|
|
382
383
|
* @function
|
|
383
|
-
* @
|
|
384
|
+
* @returns {me.Bounds} bounding box Rectangle object
|
|
384
385
|
*/
|
|
385
386
|
getBounds() {
|
|
386
387
|
if (typeof this._bounds === "undefined") {
|
|
@@ -401,7 +402,7 @@ class Renderable extends Rect {
|
|
|
401
402
|
* @name getOpacity
|
|
402
403
|
* @memberOf me.Renderable.prototype
|
|
403
404
|
* @function
|
|
404
|
-
* @
|
|
405
|
+
* @returns {number} current opacity value between 0 and 1
|
|
405
406
|
*/
|
|
406
407
|
getOpacity() {
|
|
407
408
|
return this.alpha;
|
|
@@ -412,7 +413,7 @@ class Renderable extends Rect {
|
|
|
412
413
|
* @name setOpacity
|
|
413
414
|
* @memberOf me.Renderable.prototype
|
|
414
415
|
* @function
|
|
415
|
-
* @param {
|
|
416
|
+
* @param {number} alpha opacity value between 0.0 and 1.0
|
|
416
417
|
*/
|
|
417
418
|
setOpacity(alpha) {
|
|
418
419
|
if (typeof (alpha) === "number") {
|
|
@@ -431,8 +432,8 @@ class Renderable extends Rect {
|
|
|
431
432
|
* @name flipX
|
|
432
433
|
* @memberOf me.Renderable.prototype
|
|
433
434
|
* @function
|
|
434
|
-
* @param {
|
|
435
|
-
* @
|
|
435
|
+
* @param {boolean} [flip=true] `true` to flip this renderable.
|
|
436
|
+
* @returns {me.Renderable} Reference to this object for method chaining
|
|
436
437
|
*/
|
|
437
438
|
flipX(flip = true) {
|
|
438
439
|
this._flip.x = !!flip;
|
|
@@ -446,8 +447,8 @@ class Renderable extends Rect {
|
|
|
446
447
|
* @name flipY
|
|
447
448
|
* @memberOf me.Renderable.prototype
|
|
448
449
|
* @function
|
|
449
|
-
* @param {
|
|
450
|
-
* @
|
|
450
|
+
* @param {boolean} [flip=true] `true` to flip this renderable.
|
|
451
|
+
* @returns {me.Renderable} Reference to this object for method chaining
|
|
451
452
|
*/
|
|
452
453
|
flipY(flip = true) {
|
|
453
454
|
this._flip.y = !!flip;
|
|
@@ -461,8 +462,8 @@ class Renderable extends Rect {
|
|
|
461
462
|
* @memberOf me.Renderable.prototype
|
|
462
463
|
* @see me.Renderable#currentTransform
|
|
463
464
|
* @function
|
|
464
|
-
* @param {me.Matrix2d}
|
|
465
|
-
* @
|
|
465
|
+
* @param {me.Matrix2d} m the transformation matrix
|
|
466
|
+
* @returns {me.Renderable} Reference to this object for method chaining
|
|
466
467
|
*/
|
|
467
468
|
transform(m) {
|
|
468
469
|
this.currentTransform.multiply(m);
|
|
@@ -478,7 +479,7 @@ class Renderable extends Rect {
|
|
|
478
479
|
* @memberOf me.Renderable
|
|
479
480
|
* @function
|
|
480
481
|
* @param {me.Renderable|me.Vector2d|me.Vector3d} target
|
|
481
|
-
* @
|
|
482
|
+
* @returns {number} angle in radians
|
|
482
483
|
*/
|
|
483
484
|
angleTo(target) {
|
|
484
485
|
var a = this.getBounds();
|
|
@@ -502,7 +503,7 @@ class Renderable extends Rect {
|
|
|
502
503
|
* @memberOf me.Renderable
|
|
503
504
|
* @function
|
|
504
505
|
* @param {me.Renderable|me.Vector2d|me.Vector3d} target
|
|
505
|
-
* @
|
|
506
|
+
* @returns {number} distance
|
|
506
507
|
*/
|
|
507
508
|
distanceTo(target) {
|
|
508
509
|
var a = this.getBounds();
|
|
@@ -526,7 +527,7 @@ class Renderable extends Rect {
|
|
|
526
527
|
* @memberOf me.Renderable.prototype
|
|
527
528
|
* @function
|
|
528
529
|
* @param {me.Renderable|me.Vector2d|me.Vector3d} target the renderable or position to look at
|
|
529
|
-
* @
|
|
530
|
+
* @returns {me.Renderable} Reference to this object for method chaining
|
|
530
531
|
*/
|
|
531
532
|
lookAt(target) {
|
|
532
533
|
var position;
|
|
@@ -549,13 +550,13 @@ class Renderable extends Rect {
|
|
|
549
550
|
* @name rotate
|
|
550
551
|
* @memberOf me.Renderable.prototype
|
|
551
552
|
* @function
|
|
552
|
-
* @param {
|
|
553
|
+
* @param {number} angle The angle to rotate (in radians)
|
|
553
554
|
* @param {me.Vector2d|me.ObservableVector2d} [v] an optional point to rotate around
|
|
554
|
-
* @
|
|
555
|
+
* @returns {me.Renderable} Reference to this object for method chaining
|
|
555
556
|
*/
|
|
556
|
-
rotate(angle) {
|
|
557
|
+
rotate(angle, v) {
|
|
557
558
|
if (!isNaN(angle)) {
|
|
558
|
-
this.currentTransform.rotate(angle);
|
|
559
|
+
this.currentTransform.rotate(angle, v);
|
|
559
560
|
//this.updateBoundsPos(this.pos.x, this.pos.y);
|
|
560
561
|
this.isDirty = true;
|
|
561
562
|
}
|
|
@@ -571,9 +572,9 @@ class Renderable extends Rect {
|
|
|
571
572
|
* @name scale
|
|
572
573
|
* @memberOf me.Renderable.prototype
|
|
573
574
|
* @function
|
|
574
|
-
* @param {
|
|
575
|
-
* @param {
|
|
576
|
-
* @
|
|
575
|
+
* @param {number} x a number representing the abscissa of the scaling vector.
|
|
576
|
+
* @param {number} [y=x] a number representing the ordinate of the scaling vector.
|
|
577
|
+
* @returns {me.Renderable} Reference to this object for method chaining
|
|
577
578
|
*/
|
|
578
579
|
scale(x, y) {
|
|
579
580
|
this.currentTransform.scale(x, y);
|
|
@@ -587,8 +588,8 @@ class Renderable extends Rect {
|
|
|
587
588
|
* @name scaleV
|
|
588
589
|
* @memberOf me.Renderable.prototype
|
|
589
590
|
* @function
|
|
590
|
-
* @param {me.Vector2d}
|
|
591
|
-
* @
|
|
591
|
+
* @param {me.Vector2d} v scaling vector
|
|
592
|
+
* @returns {me.Renderable} Reference to this object for method chaining
|
|
592
593
|
*/
|
|
593
594
|
scaleV(v) {
|
|
594
595
|
this.scale(v.x, v.y);
|
|
@@ -602,9 +603,9 @@ class Renderable extends Rect {
|
|
|
602
603
|
* @memberOf me.Renderable.prototype
|
|
603
604
|
* @function
|
|
604
605
|
* @protected
|
|
605
|
-
* @param {
|
|
606
|
-
* @
|
|
607
|
-
|
|
606
|
+
* @param {number} dt time since the last update in milliseconds.
|
|
607
|
+
* @returns {boolean} true if the renderable is dirty
|
|
608
|
+
*/
|
|
608
609
|
update(/* dt */) {
|
|
609
610
|
return this.isDirty;
|
|
610
611
|
}
|
|
@@ -615,7 +616,7 @@ class Renderable extends Rect {
|
|
|
615
616
|
* @name updateBounds
|
|
616
617
|
* @memberOf me.Renderable.prototype
|
|
617
618
|
* @function
|
|
618
|
-
* @
|
|
619
|
+
* @returns {me.Bounds} this shape bounding box Rectangle object
|
|
619
620
|
*/
|
|
620
621
|
updateBounds() {
|
|
621
622
|
super.updateBounds();
|
|
@@ -661,7 +662,7 @@ class Renderable extends Rect {
|
|
|
661
662
|
* @name getAbsolutePosition
|
|
662
663
|
* @memberOf me.Renderable.prototype
|
|
663
664
|
* @function
|
|
664
|
-
* @
|
|
665
|
+
* @returns {me.Vector2d}
|
|
665
666
|
*/
|
|
666
667
|
getAbsolutePosition() {
|
|
667
668
|
if (typeof this._absPos === "undefined") {
|
|
@@ -681,16 +682,17 @@ class Renderable extends Rect {
|
|
|
681
682
|
* @name onAnchorUpdate
|
|
682
683
|
* @memberOf me.Renderable.prototype
|
|
683
684
|
* @function
|
|
685
|
+
* @param {number} x the new X value to be set for the anchor
|
|
686
|
+
* @param {number} y the new Y value to be set for the anchor
|
|
684
687
|
*/
|
|
685
|
-
onAnchorUpdate(
|
|
688
|
+
onAnchorUpdate(x, y) {
|
|
686
689
|
// since the callback is called before setting the new value
|
|
687
690
|
// manually update the anchor point (required for updateBoundsPos)
|
|
688
|
-
this.anchorPoint.setMuted(
|
|
691
|
+
this.anchorPoint.setMuted(x, y);
|
|
689
692
|
// then call updateBounds
|
|
690
693
|
this.updateBoundsPos(this.pos.x, this.pos.y);
|
|
691
694
|
}
|
|
692
695
|
|
|
693
|
-
|
|
694
696
|
/**
|
|
695
697
|
* prepare the rendering context before drawing
|
|
696
698
|
* (apply defined transforms, anchor point). <br>
|
|
@@ -700,7 +702,7 @@ class Renderable extends Rect {
|
|
|
700
702
|
* @function
|
|
701
703
|
* @protected
|
|
702
704
|
* @param {me.CanvasRenderer|me.WebGLRenderer} renderer a renderer object
|
|
703
|
-
|
|
705
|
+
*/
|
|
704
706
|
preDraw(renderer) {
|
|
705
707
|
var bounds = this.getBounds();
|
|
706
708
|
var ax = bounds.width * this.anchorPoint.x,
|
|
@@ -751,7 +753,7 @@ class Renderable extends Rect {
|
|
|
751
753
|
* @function
|
|
752
754
|
* @protected
|
|
753
755
|
* @param {me.CanvasRenderer|me.WebGLRenderer} renderer a renderer object
|
|
754
|
-
|
|
756
|
+
*/
|
|
755
757
|
draw(/*renderer*/) {
|
|
756
758
|
// empty one !
|
|
757
759
|
}
|
|
@@ -764,7 +766,7 @@ class Renderable extends Rect {
|
|
|
764
766
|
* @function
|
|
765
767
|
* @protected
|
|
766
768
|
* @param {me.CanvasRenderer|me.WebGLRenderer} renderer a renderer object
|
|
767
|
-
|
|
769
|
+
*/
|
|
768
770
|
postDraw(renderer) {
|
|
769
771
|
|
|
770
772
|
// remove the previously applied tint
|
|
@@ -790,7 +792,7 @@ class Renderable extends Rect {
|
|
|
790
792
|
* @function
|
|
791
793
|
* @param {me.collision.ResponseObject} response the collision response object
|
|
792
794
|
* @param {me.Renderable} other the other renderable touching this one (a reference to response.a or response.b)
|
|
793
|
-
* @
|
|
795
|
+
* @returns {boolean} true if the object should respond to the collision (its position and velocity will be corrected)
|
|
794
796
|
* @example
|
|
795
797
|
* // colision handler
|
|
796
798
|
* onCollision(response) {
|
package/src/renderable/sprite.js
CHANGED
|
@@ -13,17 +13,17 @@ import Renderable from "./renderable.js";
|
|
|
13
13
|
* @extends me.Renderable
|
|
14
14
|
* @memberOf me
|
|
15
15
|
* @constructor
|
|
16
|
-
* @param {
|
|
17
|
-
* @param {
|
|
18
|
-
* @param {
|
|
19
|
-
* @param {me.Renderer.Texture|HTMLImageElement|HTMLCanvasElement|
|
|
20
|
-
* @param {
|
|
21
|
-
* @param {
|
|
22
|
-
* @param {
|
|
23
|
-
* @param {
|
|
24
|
-
* @param {
|
|
25
|
-
* @param {
|
|
26
|
-
* @param {
|
|
16
|
+
* @param {number} x the x coordinates of the sprite object
|
|
17
|
+
* @param {number} y the y coordinates of the sprite object
|
|
18
|
+
* @param {object} settings Configuration parameters for the Sprite object
|
|
19
|
+
* @param {me.Renderer.Texture|HTMLImageElement|HTMLCanvasElement|string} settings.image reference to a texture, spritesheet image or to a texture atlas
|
|
20
|
+
* @param {string} [settings.name=""] name of this object
|
|
21
|
+
* @param {string} [settings.region] region name of a specific region to use when using a texture atlas, see {@link me.Renderer.Texture}
|
|
22
|
+
* @param {number} [settings.framewidth] Width of a single frame within the spritesheet
|
|
23
|
+
* @param {number} [settings.frameheight] Height of a single frame within the spritesheet
|
|
24
|
+
* @param {string|me.Color} [settings.tint] a tint to be applied to this sprite
|
|
25
|
+
* @param {number} [settings.flipX] flip the sprite on the horizontal axis
|
|
26
|
+
* @param {number} [settings.flipY] flip the sprite on the vertical axis
|
|
27
27
|
* @param {me.Vector2d} [settings.anchorPoint={x:0.5, y:0.5}] Anchor point to draw the frame at (defaults to the center of the frame).
|
|
28
28
|
* @example
|
|
29
29
|
* // create a single sprite from a standalone image, with anchor in the center
|
|
@@ -58,7 +58,7 @@ class Sprite extends Renderable {
|
|
|
58
58
|
/**
|
|
59
59
|
* pause and resume animation
|
|
60
60
|
* @public
|
|
61
|
-
* @type
|
|
61
|
+
* @type {boolean}
|
|
62
62
|
* @default false
|
|
63
63
|
* @name me.Sprite#animationpause
|
|
64
64
|
*/
|
|
@@ -67,7 +67,7 @@ class Sprite extends Renderable {
|
|
|
67
67
|
/**
|
|
68
68
|
* animation cycling speed (delay between frame in ms)
|
|
69
69
|
* @public
|
|
70
|
-
* @type
|
|
70
|
+
* @type {number}
|
|
71
71
|
* @default 100
|
|
72
72
|
* @name me.Sprite#animationspeed
|
|
73
73
|
*/
|
|
@@ -76,7 +76,7 @@ class Sprite extends Renderable {
|
|
|
76
76
|
/**
|
|
77
77
|
* global offset for the position to draw from on the source image.
|
|
78
78
|
* @public
|
|
79
|
-
* @type me.Vector2d
|
|
79
|
+
* @type {me.Vector2d}
|
|
80
80
|
* @default <0.0,0.0>
|
|
81
81
|
* @name offset
|
|
82
82
|
* @memberOf me.Sprite#
|
|
@@ -86,7 +86,7 @@ class Sprite extends Renderable {
|
|
|
86
86
|
/**
|
|
87
87
|
* The source texture object this sprite object is using
|
|
88
88
|
* @public
|
|
89
|
-
* @type me.Renderer.Texture
|
|
89
|
+
* @type {me.Renderer.Texture}
|
|
90
90
|
* @name source
|
|
91
91
|
* @memberOf me.Sprite#
|
|
92
92
|
*/
|
|
@@ -148,7 +148,7 @@ class Sprite extends Renderable {
|
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
} else {
|
|
151
|
-
// HTMLImageElement/Canvas or
|
|
151
|
+
// HTMLImageElement/Canvas or {string}
|
|
152
152
|
this.image = (typeof settings.image === "object") ? settings.image : loader.getImage(settings.image);
|
|
153
153
|
// throw an error if image ends up being null/undefined
|
|
154
154
|
if (!this.image) {
|
|
@@ -219,7 +219,7 @@ class Sprite extends Renderable {
|
|
|
219
219
|
* @name isFlickering
|
|
220
220
|
* @memberOf me.Sprite.prototype
|
|
221
221
|
* @function
|
|
222
|
-
* @
|
|
222
|
+
* @returns {boolean}
|
|
223
223
|
*/
|
|
224
224
|
isFlickering() {
|
|
225
225
|
return this._flicker.isFlickering;
|
|
@@ -230,9 +230,9 @@ class Sprite extends Renderable {
|
|
|
230
230
|
* @name flicker
|
|
231
231
|
* @memberOf me.Sprite.prototype
|
|
232
232
|
* @function
|
|
233
|
-
* @param {
|
|
233
|
+
* @param {number} duration expressed in milliseconds
|
|
234
234
|
* @param {Function} callback Function to call when flickering ends
|
|
235
|
-
* @
|
|
235
|
+
* @returns {me.Sprite} Reference to this object for method chaining
|
|
236
236
|
* @example
|
|
237
237
|
* // make the object flicker for 1 second
|
|
238
238
|
* // and then remove it
|
|
@@ -261,11 +261,11 @@ class Sprite extends Renderable {
|
|
|
261
261
|
* @name addAnimation
|
|
262
262
|
* @memberOf me.Sprite.prototype
|
|
263
263
|
* @function
|
|
264
|
-
* @param {
|
|
265
|
-
* @param {
|
|
264
|
+
* @param {string} name animation id
|
|
265
|
+
* @param {number[]|string[]|object[]} index list of sprite index or name
|
|
266
266
|
* defining the animation. Can also use objects to specify delay for each frame, see below
|
|
267
|
-
* @param {
|
|
268
|
-
* @
|
|
267
|
+
* @param {number} [animationspeed] cycling speed for animation in ms
|
|
268
|
+
* @returns {number} frame amount of frame added to the animation (delay between each frame).
|
|
269
269
|
* @see me.Sprite#animationspeed
|
|
270
270
|
* @example
|
|
271
271
|
* // walking animation
|
|
@@ -361,9 +361,10 @@ class Sprite extends Renderable {
|
|
|
361
361
|
* @name setCurrentAnimation
|
|
362
362
|
* @memberOf me.Sprite.prototype
|
|
363
363
|
* @function
|
|
364
|
-
* @param {
|
|
365
|
-
* @param {
|
|
366
|
-
* @
|
|
364
|
+
* @param {string} name animation id
|
|
365
|
+
* @param {string|Function} [resetAnim] animation id to switch to when complete, or callback
|
|
366
|
+
* @param {boolean} [preserve_dt=false] if false will reset the elapsed time counter since last frame
|
|
367
|
+
* @returns {me.Sprite} Reference to this object for method chaining
|
|
367
368
|
* @example
|
|
368
369
|
* // set "walk" animation
|
|
369
370
|
* this.setCurrentAnimation("walk");
|
|
@@ -393,8 +394,8 @@ class Sprite extends Renderable {
|
|
|
393
394
|
*
|
|
394
395
|
* return false; // do not reset to first frame
|
|
395
396
|
* }).bind(this));
|
|
396
|
-
|
|
397
|
-
setCurrentAnimation(name, resetAnim,
|
|
397
|
+
*/
|
|
398
|
+
setCurrentAnimation(name, resetAnim, preserve_dt) {
|
|
398
399
|
if (this.anim[name]) {
|
|
399
400
|
this.current.name = name;
|
|
400
401
|
this.current.length = this.anim[this.current.name].length;
|
|
@@ -406,7 +407,7 @@ class Sprite extends Renderable {
|
|
|
406
407
|
this.resetAnim = undefined;
|
|
407
408
|
}
|
|
408
409
|
this.setAnimationFrame(this.current.idx);
|
|
409
|
-
if (!
|
|
410
|
+
if (!preserve_dt) {
|
|
410
411
|
this.dt = 0;
|
|
411
412
|
}
|
|
412
413
|
this.isDirty = true;
|
|
@@ -421,8 +422,8 @@ class Sprite extends Renderable {
|
|
|
421
422
|
* @name reverseAnimation
|
|
422
423
|
* @memberOf me.Sprite.prototype
|
|
423
424
|
* @function
|
|
424
|
-
* @param {
|
|
425
|
-
* @
|
|
425
|
+
* @param {string} [name] animation id
|
|
426
|
+
* @returns {me.Sprite} Reference to this object for method chaining
|
|
426
427
|
* @see me.Sprite#animationspeed
|
|
427
428
|
*/
|
|
428
429
|
reverseAnimation(name) {
|
|
@@ -440,8 +441,8 @@ class Sprite extends Renderable {
|
|
|
440
441
|
* @name isCurrentAnimation
|
|
441
442
|
* @memberOf me.Sprite.prototype
|
|
442
443
|
* @function
|
|
443
|
-
* @param {
|
|
444
|
-
* @
|
|
444
|
+
* @param {string} name animation id
|
|
445
|
+
* @returns {boolean}
|
|
445
446
|
* @example
|
|
446
447
|
* if (!this.isCurrentAnimation("walk")) {
|
|
447
448
|
* // do something funny...
|
|
@@ -457,8 +458,8 @@ class Sprite extends Renderable {
|
|
|
457
458
|
* @name setRegion
|
|
458
459
|
* @memberOf me.Sprite.prototype
|
|
459
460
|
* @function
|
|
460
|
-
* @param {
|
|
461
|
-
* @
|
|
461
|
+
* @param {object} region typically returned through me.Texture.getRegion()
|
|
462
|
+
* @returns {me.Sprite} Reference to this object for method chaining
|
|
462
463
|
* @example
|
|
463
464
|
* // change the sprite to "shadedDark13.png";
|
|
464
465
|
* mySprite.setRegion(game.texture.getRegion("shadedDark13.png"));
|
|
@@ -489,8 +490,8 @@ class Sprite extends Renderable {
|
|
|
489
490
|
* @name setAnimationFrame
|
|
490
491
|
* @memberOf me.Sprite.prototype
|
|
491
492
|
* @function
|
|
492
|
-
* @param {
|
|
493
|
-
* @
|
|
493
|
+
* @param {number} [idx=0] animation frame index
|
|
494
|
+
* @returns {me.Sprite} Reference to this object for method chaining
|
|
494
495
|
* @example
|
|
495
496
|
* // reset the current animation to the first frame
|
|
496
497
|
* this.setAnimationFrame();
|
|
@@ -505,7 +506,7 @@ class Sprite extends Renderable {
|
|
|
505
506
|
* @name getCurrentAnimationFrame
|
|
506
507
|
* @memberOf me.Sprite.prototype
|
|
507
508
|
* @function
|
|
508
|
-
* @
|
|
509
|
+
* @returns {number} current animation frame index
|
|
509
510
|
*/
|
|
510
511
|
getCurrentAnimationFrame() {
|
|
511
512
|
return this.current.idx;
|
|
@@ -516,18 +517,25 @@ class Sprite extends Renderable {
|
|
|
516
517
|
* @name getAnimationFrameObjectByIndex
|
|
517
518
|
* @memberOf me.Sprite.prototype
|
|
518
519
|
* @function
|
|
519
|
-
* @
|
|
520
|
-
* @
|
|
520
|
+
* @ignore
|
|
521
|
+
* @param {number} id the frame id
|
|
522
|
+
* @returns {number} if using number indices. Returns {object} containing frame data if using texture atlas
|
|
521
523
|
*/
|
|
522
524
|
getAnimationFrameObjectByIndex(id) {
|
|
523
525
|
return this.anim[this.current.name].frames[id];
|
|
524
526
|
}
|
|
525
527
|
|
|
526
528
|
/**
|
|
527
|
-
*
|
|
529
|
+
* update function. <br>
|
|
530
|
+
* automatically called by the game manager {@link me.game}
|
|
531
|
+
* @name update
|
|
532
|
+
* @memberOf me.Sprite.prototype
|
|
533
|
+
* @function
|
|
534
|
+
* @protected
|
|
535
|
+
* @param {number} dt time since the last update in milliseconds.
|
|
536
|
+
* @returns {boolean} true if the Sprite is dirty
|
|
528
537
|
*/
|
|
529
538
|
update(dt) {
|
|
530
|
-
|
|
531
539
|
// Update animation if necessary
|
|
532
540
|
if (!this.animationpause && this.current && this.current.length > 0) {
|
|
533
541
|
var duration = this.getAnimationFrameObjectByIndex(this.current.idx).delay;
|
|
@@ -597,7 +605,13 @@ class Sprite extends Renderable {
|
|
|
597
605
|
}
|
|
598
606
|
|
|
599
607
|
/**
|
|
600
|
-
*
|
|
608
|
+
* sprite draw. <br>
|
|
609
|
+
* automatically called by the game manager {@link me.game}
|
|
610
|
+
* @name draw
|
|
611
|
+
* @memberOf me.Sprite.prototype
|
|
612
|
+
* @function
|
|
613
|
+
* @protected
|
|
614
|
+
* @param {me.CanvasRenderer|me.WebGLRenderer} renderer a renderer object
|
|
601
615
|
*/
|
|
602
616
|
draw(renderer) {
|
|
603
617
|
// do nothing if we are flickering
|