melonjs 10.8.0 → 10.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +1 -1
- package/README.md +32 -25
- package/dist/melonjs.js +1833 -2267
- package/dist/melonjs.min.js +4 -4
- package/dist/melonjs.module.d.ts +642 -1416
- package/dist/melonjs.module.js +1778 -2237
- package/package.json +16 -16
- package/src/audio/audio.js +0 -1
- package/src/camera/camera2d.js +1 -16
- package/src/entity/entity.js +1 -4
- package/src/game.js +2 -2
- package/src/geometries/ellipse.js +18 -27
- package/src/geometries/line.js +5 -8
- package/src/geometries/path2d.js +10 -20
- package/src/geometries/poly.js +28 -45
- package/src/geometries/rectangle.js +24 -36
- package/src/geometries/roundrect.js +96 -3
- package/src/index.js +7 -2
- package/src/input/gamepad.js +5 -16
- package/src/input/keyboard.js +1 -9
- package/src/input/pointer.js +0 -1
- package/src/input/pointerevent.js +14 -23
- package/src/lang/deprecated.js +9 -6
- package/src/level/level.js +0 -9
- package/src/level/tiled/TMXGroup.js +0 -4
- package/src/level/tiled/TMXLayer.js +0 -8
- package/src/level/tiled/TMXObject.js +0 -3
- package/src/level/tiled/TMXTile.js +4 -5
- package/src/level/tiled/TMXTileMap.js +1 -7
- package/src/level/tiled/TMXTileset.js +0 -5
- package/src/level/tiled/TMXTilesetGroup.js +1 -4
- package/src/level/tiled/TMXUtils.js +1 -4
- package/src/level/tiled/renderer/TMXHexagonalRenderer.js +2 -3
- package/src/level/tiled/renderer/TMXIsometricRenderer.js +0 -1
- package/src/level/tiled/renderer/TMXRenderer.js +1 -7
- package/src/loader/loader.js +0 -11
- package/src/loader/loadingscreen.js +16 -5
- package/src/math/color.js +10 -30
- package/src/math/math.js +0 -10
- package/src/math/matrix2.js +12 -27
- package/src/math/matrix3.js +1 -22
- package/src/math/observable_vector2.js +0 -29
- package/src/math/observable_vector3.js +0 -29
- package/src/math/vector2.js +3 -40
- package/src/math/vector3.js +4 -41
- package/src/particles/emitter.js +11 -12
- package/src/physics/body.js +1 -1
- package/src/physics/bounds.js +5 -19
- package/src/physics/collision.js +0 -1
- package/src/physics/detector.js +0 -4
- package/src/physics/quadtree.js +0 -7
- package/src/physics/sat.js +3 -3
- package/src/physics/world.js +0 -4
- package/src/plugin/plugin.js +0 -2
- package/src/polyfill/index.js +1 -0
- package/src/polyfill/roundrect.js +237 -0
- package/src/renderable/GUI.js +5 -10
- package/src/renderable/collectable.js +1 -0
- package/src/renderable/container.js +26 -54
- package/src/renderable/dragndrop.js +0 -9
- package/src/renderable/imagelayer.js +3 -7
- package/src/renderable/light2d.js +114 -0
- package/src/renderable/renderable.js +22 -43
- package/src/renderable/sprite.js +13 -25
- package/src/renderable/trigger.js +1 -1
- package/src/state/stage.js +72 -6
- package/src/state/state.js +3 -20
- package/src/system/device.js +14 -53
- package/src/system/event.js +11 -0
- package/src/system/pooling.js +19 -8
- package/src/system/save.js +9 -11
- package/src/system/timer.js +239 -218
- package/src/text/bitmaptextdata.js +1 -4
- package/src/text/glyph.js +2 -2
- package/src/text/text.js +19 -21
- package/src/text/textmetrics.js +0 -2
- package/src/tweens/easing.js +1 -1
- package/src/tweens/interpolation.js +2 -2
- package/src/tweens/tween.js +1 -13
- package/src/utils/agent.js +1 -3
- package/src/utils/array.js +0 -3
- package/src/utils/file.js +0 -2
- package/src/utils/function.js +0 -2
- package/src/utils/string.js +0 -6
- package/src/utils/utils.js +2 -5
- package/src/video/canvas/canvas_renderer.js +76 -103
- package/src/video/renderer.js +43 -50
- package/src/video/{texture.js → texture/atlas.js} +8 -8
- package/src/video/{texture_cache.js → texture/cache.js} +4 -5
- package/src/video/texture/canvas_texture.js +99 -0
- package/src/video/video.js +3 -3
- package/src/video/webgl/glshader.js +0 -5
- package/src/video/webgl/utils/uniforms.js +4 -7
- package/src/video/webgl/webgl_compositor.js +0 -14
- package/src/video/webgl/webgl_renderer.js +73 -97
|
@@ -18,7 +18,7 @@ var globalFloatingCounter = 0;
|
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* @classdesc
|
|
21
|
-
*
|
|
21
|
+
* Container represents a collection of child objects
|
|
22
22
|
* @augments Renderable
|
|
23
23
|
*/
|
|
24
24
|
class Container extends Renderable {
|
|
@@ -100,7 +100,6 @@ class Container extends Renderable {
|
|
|
100
100
|
* a callback to be extended, triggered after a child has been added or removed
|
|
101
101
|
* @name onChildChange
|
|
102
102
|
* @memberof Container#
|
|
103
|
-
* @function
|
|
104
103
|
* @param {number} index added or removed child index
|
|
105
104
|
*/
|
|
106
105
|
this.onChildChange = function (/* index */) {
|
|
@@ -157,7 +156,6 @@ class Container extends Renderable {
|
|
|
157
156
|
* reset the container, removing all childrens, and reseting transforms.
|
|
158
157
|
* @name reset
|
|
159
158
|
* @memberof Container
|
|
160
|
-
* @function
|
|
161
159
|
*/
|
|
162
160
|
reset() {
|
|
163
161
|
// cancel any sort operation
|
|
@@ -192,8 +190,7 @@ class Container extends Renderable {
|
|
|
192
190
|
* orginal container. Then when the me.game.world.reset() is called the renderable
|
|
193
191
|
* will not be in any container.
|
|
194
192
|
* @name addChild
|
|
195
|
-
* @memberof Container
|
|
196
|
-
* @function
|
|
193
|
+
* @memberof Container
|
|
197
194
|
* @param {Renderable} child
|
|
198
195
|
* @param {number} [z] forces the z index of the child to the specified value
|
|
199
196
|
* @returns {Renderable} the added child
|
|
@@ -256,8 +253,7 @@ class Container extends Renderable {
|
|
|
256
253
|
* Add a child to the container at the specified index<br>
|
|
257
254
|
* (the list won't be sorted after insertion)
|
|
258
255
|
* @name addChildAt
|
|
259
|
-
* @memberof Container
|
|
260
|
-
* @function
|
|
256
|
+
* @memberof Container
|
|
261
257
|
* @param {Renderable} child
|
|
262
258
|
* @param {number} index
|
|
263
259
|
* @returns {Renderable} the added child
|
|
@@ -315,8 +311,7 @@ class Container extends Renderable {
|
|
|
315
311
|
* - The index of element in the array. <br>
|
|
316
312
|
* - The array forEach() was called upon. <br>
|
|
317
313
|
* @name forEach
|
|
318
|
-
* @memberof Container
|
|
319
|
-
* @function
|
|
314
|
+
* @memberof Container
|
|
320
315
|
* @param {Function} callback fnction to execute on each element
|
|
321
316
|
* @param {object} [thisArg] value to use as this(i.e reference Object) when executing callback.
|
|
322
317
|
* @example
|
|
@@ -352,8 +347,7 @@ class Container extends Renderable {
|
|
|
352
347
|
/**
|
|
353
348
|
* Swaps the position (z-index) of 2 children
|
|
354
349
|
* @name swapChildren
|
|
355
|
-
* @memberof Container
|
|
356
|
-
* @function
|
|
350
|
+
* @memberof Container
|
|
357
351
|
* @param {Renderable} child
|
|
358
352
|
* @param {Renderable} child2
|
|
359
353
|
*/
|
|
@@ -380,8 +374,7 @@ class Container extends Renderable {
|
|
|
380
374
|
/**
|
|
381
375
|
* Returns the Child at the specified index
|
|
382
376
|
* @name getChildAt
|
|
383
|
-
* @memberof Container
|
|
384
|
-
* @function
|
|
377
|
+
* @memberof Container
|
|
385
378
|
* @param {number} index
|
|
386
379
|
* @returns {Renderable} the child at the specified index
|
|
387
380
|
*/
|
|
@@ -397,8 +390,7 @@ class Container extends Renderable {
|
|
|
397
390
|
/**
|
|
398
391
|
* Returns the index of the given Child
|
|
399
392
|
* @name getChildIndex
|
|
400
|
-
* @memberof Container
|
|
401
|
-
* @function
|
|
393
|
+
* @memberof Container
|
|
402
394
|
* @param {Renderable} child
|
|
403
395
|
* @returns {number} index
|
|
404
396
|
*/
|
|
@@ -410,7 +402,6 @@ class Container extends Renderable {
|
|
|
410
402
|
* Returns the next child within the container or undefined if none
|
|
411
403
|
* @name getNextChild
|
|
412
404
|
* @memberof Container
|
|
413
|
-
* @function
|
|
414
405
|
* @param {Renderable} child
|
|
415
406
|
* @returns {Renderable} child
|
|
416
407
|
*/
|
|
@@ -425,8 +416,7 @@ class Container extends Renderable {
|
|
|
425
416
|
/**
|
|
426
417
|
* Returns true if contains the specified Child
|
|
427
418
|
* @name hasChild
|
|
428
|
-
* @memberof Container
|
|
429
|
-
* @function
|
|
419
|
+
* @memberof Container
|
|
430
420
|
* @param {Renderable} child
|
|
431
421
|
* @returns {boolean}
|
|
432
422
|
*/
|
|
@@ -439,9 +429,8 @@ class Container extends Renderable {
|
|
|
439
429
|
* note : avoid calling this function every frame since
|
|
440
430
|
* it parses the whole object tree each time
|
|
441
431
|
* @name getChildByProp
|
|
442
|
-
* @memberof Container
|
|
432
|
+
* @memberof Container
|
|
443
433
|
* @public
|
|
444
|
-
* @function
|
|
445
434
|
* @param {string} prop Property name
|
|
446
435
|
* @param {string|RegExp|number|boolean} value Value of the property
|
|
447
436
|
* @returns {Renderable[]} Array of childs
|
|
@@ -491,9 +480,8 @@ class Container extends Renderable {
|
|
|
491
480
|
/**
|
|
492
481
|
* returns the list of childs with the specified class type
|
|
493
482
|
* @name getChildByType
|
|
494
|
-
* @memberof Container
|
|
483
|
+
* @memberof Container
|
|
495
484
|
* @public
|
|
496
|
-
* @function
|
|
497
485
|
* @param {object} classType
|
|
498
486
|
* @returns {Renderable[]} Array of children
|
|
499
487
|
*/
|
|
@@ -518,9 +506,8 @@ class Container extends Renderable {
|
|
|
518
506
|
* note : avoid calling this function every frame since
|
|
519
507
|
* it parses the whole object list each time
|
|
520
508
|
* @name getChildByName
|
|
521
|
-
* @memberof Container
|
|
509
|
+
* @memberof Container
|
|
522
510
|
* @public
|
|
523
|
-
* @function
|
|
524
511
|
* @param {string|RegExp|number|boolean} name child name
|
|
525
512
|
* @returns {Renderable[]} Array of children
|
|
526
513
|
*/
|
|
@@ -533,9 +520,8 @@ class Container extends Renderable {
|
|
|
533
520
|
* note : avoid calling this function every frame since
|
|
534
521
|
* it parses the whole object list each time
|
|
535
522
|
* @name getChildByGUID
|
|
536
|
-
* @memberof Container
|
|
523
|
+
* @memberof Container
|
|
537
524
|
* @public
|
|
538
|
-
* @function
|
|
539
525
|
* @param {string|RegExp|number|boolean} guid child GUID
|
|
540
526
|
* @returns {Renderable} corresponding child or null
|
|
541
527
|
*/
|
|
@@ -547,9 +533,8 @@ class Container extends Renderable {
|
|
|
547
533
|
/**
|
|
548
534
|
* return all child in this container
|
|
549
535
|
* @name getChildren
|
|
550
|
-
* @memberof Container
|
|
536
|
+
* @memberof Container
|
|
551
537
|
* @public
|
|
552
|
-
* @function
|
|
553
538
|
* @returns {Renderable[]} an array of renderable object
|
|
554
539
|
*/
|
|
555
540
|
getChildren() {
|
|
@@ -563,8 +548,7 @@ class Container extends Renderable {
|
|
|
563
548
|
* update the bounding box for this shape.
|
|
564
549
|
* @ignore
|
|
565
550
|
* @name updateBounds
|
|
566
|
-
* @memberof Renderable
|
|
567
|
-
* @function
|
|
551
|
+
* @memberof Renderable
|
|
568
552
|
* @returns {Bounds} this shape bounding box Rectangle object
|
|
569
553
|
*/
|
|
570
554
|
updateBounds(forceUpdateChildBounds = false) {
|
|
@@ -592,8 +576,7 @@ class Container extends Renderable {
|
|
|
592
576
|
* Checks if this container is root or if it's attached to the root container.
|
|
593
577
|
* @private
|
|
594
578
|
* @name isAttachedToRoot
|
|
595
|
-
* @memberof Container
|
|
596
|
-
* @function
|
|
579
|
+
* @memberof Container
|
|
597
580
|
* @returns {boolean}
|
|
598
581
|
*/
|
|
599
582
|
isAttachedToRoot() {
|
|
@@ -615,8 +598,7 @@ class Container extends Renderable {
|
|
|
615
598
|
* update the cointainer's bounding rect (private)
|
|
616
599
|
* @ignore
|
|
617
600
|
* @name updateBoundsPos
|
|
618
|
-
* @memberof Container
|
|
619
|
-
* @function
|
|
601
|
+
* @memberof Container
|
|
620
602
|
*/
|
|
621
603
|
updateBoundsPos(newX, newY) {
|
|
622
604
|
// call the parent method
|
|
@@ -650,9 +632,8 @@ class Container extends Renderable {
|
|
|
650
632
|
/**
|
|
651
633
|
* Invokes the removeChildNow in a defer, to ensure the child is removed safely after the update & draw stack has completed
|
|
652
634
|
* @name removeChild
|
|
653
|
-
* @memberof Container
|
|
635
|
+
* @memberof Container
|
|
654
636
|
* @public
|
|
655
|
-
* @function
|
|
656
637
|
* @param {Renderable} child
|
|
657
638
|
* @param {boolean} [keepalive=False] True to prevent calling child.destroy()
|
|
658
639
|
*/
|
|
@@ -670,8 +651,7 @@ class Container extends Renderable {
|
|
|
670
651
|
* (removal is immediate and unconditional)<br>
|
|
671
652
|
* Never use keepalive=true with objects from {@link pool}. Doing so will create a memory leak.
|
|
672
653
|
* @name removeChildNow
|
|
673
|
-
* @memberof Container
|
|
674
|
-
* @function
|
|
654
|
+
* @memberof Container
|
|
675
655
|
* @param {Renderable} child
|
|
676
656
|
* @param {boolean} [keepalive=False] True to prevent calling child.destroy()
|
|
677
657
|
*/
|
|
@@ -723,8 +703,7 @@ class Container extends Renderable {
|
|
|
723
703
|
/**
|
|
724
704
|
* Automatically set the specified property of all childs to the given value
|
|
725
705
|
* @name setChildsProperty
|
|
726
|
-
* @memberof Container
|
|
727
|
-
* @function
|
|
706
|
+
* @memberof Container
|
|
728
707
|
* @param {string} prop property name
|
|
729
708
|
* @param {object} value property value
|
|
730
709
|
* @param {boolean} [recursive=false] recursively apply the value to child containers if true
|
|
@@ -741,8 +720,7 @@ class Container extends Renderable {
|
|
|
741
720
|
/**
|
|
742
721
|
* Move the child in the group one step forward (z depth).
|
|
743
722
|
* @name moveUp
|
|
744
|
-
* @memberof Container
|
|
745
|
-
* @function
|
|
723
|
+
* @memberof Container
|
|
746
724
|
* @param {Renderable} child
|
|
747
725
|
*/
|
|
748
726
|
moveUp(child) {
|
|
@@ -758,8 +736,7 @@ class Container extends Renderable {
|
|
|
758
736
|
/**
|
|
759
737
|
* Move the child in the group one step backward (z depth).
|
|
760
738
|
* @name moveDown
|
|
761
|
-
* @memberof Container
|
|
762
|
-
* @function
|
|
739
|
+
* @memberof Container
|
|
763
740
|
* @param {Renderable} child
|
|
764
741
|
*/
|
|
765
742
|
moveDown(child) {
|
|
@@ -775,8 +752,7 @@ class Container extends Renderable {
|
|
|
775
752
|
/**
|
|
776
753
|
* Move the specified child to the top(z depth).
|
|
777
754
|
* @name moveToTop
|
|
778
|
-
* @memberof Container
|
|
779
|
-
* @function
|
|
755
|
+
* @memberof Container
|
|
780
756
|
* @param {Renderable} child
|
|
781
757
|
*/
|
|
782
758
|
moveToTop(child) {
|
|
@@ -795,8 +771,7 @@ class Container extends Renderable {
|
|
|
795
771
|
/**
|
|
796
772
|
* Move the specified child the bottom (z depth).
|
|
797
773
|
* @name moveToBottom
|
|
798
|
-
* @memberof Container
|
|
799
|
-
* @function
|
|
774
|
+
* @memberof Container
|
|
800
775
|
* @param {Renderable} child
|
|
801
776
|
*/
|
|
802
777
|
moveToBottom(child) {
|
|
@@ -815,9 +790,8 @@ class Container extends Renderable {
|
|
|
815
790
|
/**
|
|
816
791
|
* Manually trigger the sort of all the childs in the container</p>
|
|
817
792
|
* @name sort
|
|
818
|
-
* @memberof Container
|
|
793
|
+
* @memberof Container
|
|
819
794
|
* @public
|
|
820
|
-
* @function
|
|
821
795
|
* @param {boolean} [recursive=false] recursively sort all containers if true
|
|
822
796
|
*/
|
|
823
797
|
sort(recursive) {
|
|
@@ -910,8 +884,7 @@ class Container extends Renderable {
|
|
|
910
884
|
* container update function. <br>
|
|
911
885
|
* automatically called by the game manager {@link game}
|
|
912
886
|
* @name update
|
|
913
|
-
* @memberof Container
|
|
914
|
-
* @function
|
|
887
|
+
* @memberof Container
|
|
915
888
|
* @protected
|
|
916
889
|
* @param {number} dt time since the last update in milliseconds.
|
|
917
890
|
* @returns {boolean} true if the Container is dirty
|
|
@@ -963,8 +936,7 @@ class Container extends Renderable {
|
|
|
963
936
|
* draw the container. <br>
|
|
964
937
|
* automatically called by the game manager {@link game}
|
|
965
938
|
* @name draw
|
|
966
|
-
* @memberof Container
|
|
967
|
-
* @function
|
|
939
|
+
* @memberof Container
|
|
968
940
|
* @protected
|
|
969
941
|
* @param {CanvasRenderer|WebGLRenderer} renderer a renderer object
|
|
970
942
|
* @param {Rect|Bounds} [rect] the area or viewport to (re)draw
|
|
@@ -33,7 +33,6 @@ export class Draggable extends Renderable {
|
|
|
33
33
|
* transformed events.
|
|
34
34
|
* @name initEvents
|
|
35
35
|
* @memberof Draggable
|
|
36
|
-
* @function
|
|
37
36
|
* @private
|
|
38
37
|
*/
|
|
39
38
|
initEvents() {
|
|
@@ -57,7 +56,6 @@ export class Draggable extends Renderable {
|
|
|
57
56
|
* Gets called when the user starts dragging the entity
|
|
58
57
|
* @name dragStart
|
|
59
58
|
* @memberof Draggable
|
|
60
|
-
* @function
|
|
61
59
|
* @param {object} e the pointer event
|
|
62
60
|
* @returns {boolean} false if the object is being dragged
|
|
63
61
|
*/
|
|
@@ -74,7 +72,6 @@ export class Draggable extends Renderable {
|
|
|
74
72
|
* Gets called when the user drags this entity around
|
|
75
73
|
* @name dragMove
|
|
76
74
|
* @memberof Draggable
|
|
77
|
-
* @function
|
|
78
75
|
* @param {object} e the pointer event
|
|
79
76
|
*/
|
|
80
77
|
dragMove(e) {
|
|
@@ -88,7 +85,6 @@ export class Draggable extends Renderable {
|
|
|
88
85
|
* Gets called when the user stops dragging the entity
|
|
89
86
|
* @name dragEnd
|
|
90
87
|
* @memberof Draggable
|
|
91
|
-
* @function
|
|
92
88
|
* @returns {boolean} false if the object stopped being dragged
|
|
93
89
|
*/
|
|
94
90
|
dragEnd() {
|
|
@@ -102,7 +98,6 @@ export class Draggable extends Renderable {
|
|
|
102
98
|
* Destructor
|
|
103
99
|
* @name destroy
|
|
104
100
|
* @memberof Draggable
|
|
105
|
-
* @function
|
|
106
101
|
* @ignore
|
|
107
102
|
*/
|
|
108
103
|
destroy() {
|
|
@@ -173,7 +168,6 @@ export class DropTarget extends Renderable {
|
|
|
173
168
|
* Sets the collision method which is going to be used to check a valid drop
|
|
174
169
|
* @name setCheckMethod
|
|
175
170
|
* @memberof DropTarget
|
|
176
|
-
* @function
|
|
177
171
|
* @param {string} checkMethod the checkmethod (defaults to CHECKMETHOD_OVERLAP)
|
|
178
172
|
*/
|
|
179
173
|
setCheckMethod(checkMethod) {
|
|
@@ -188,7 +182,6 @@ export class DropTarget extends Renderable {
|
|
|
188
182
|
* Checks if a dropped entity is dropped on the current entity
|
|
189
183
|
* @name checkOnMe
|
|
190
184
|
* @memberof DropTarget
|
|
191
|
-
* @function
|
|
192
185
|
* @param {object} e the triggering event
|
|
193
186
|
* @param {Draggable} draggable the draggable object that is dropped
|
|
194
187
|
*/
|
|
@@ -203,7 +196,6 @@ export class DropTarget extends Renderable {
|
|
|
203
196
|
* Gets called when a draggable entity is dropped on the current entity
|
|
204
197
|
* @name drop
|
|
205
198
|
* @memberof DropTarget
|
|
206
|
-
* @function
|
|
207
199
|
* @param {Draggable} draggable the draggable object that is dropped
|
|
208
200
|
*/
|
|
209
201
|
drop() {
|
|
@@ -214,7 +206,6 @@ export class DropTarget extends Renderable {
|
|
|
214
206
|
* Destructor
|
|
215
207
|
* @name destroy
|
|
216
208
|
* @memberof DropTarget
|
|
217
|
-
* @function
|
|
218
209
|
* @ignore
|
|
219
210
|
*/
|
|
220
211
|
destroy() {
|
|
@@ -75,7 +75,7 @@ class ImageLayer extends Sprite {
|
|
|
75
75
|
* - a number, to change the value for both axis <br>
|
|
76
76
|
* - a json expression like `json:{"x":0.5,"y":0.5}` if you wish to specify a different value for both x and y
|
|
77
77
|
* @public
|
|
78
|
-
* @
|
|
78
|
+
* @member {Vector2d}
|
|
79
79
|
* @default <0.0,0.0>
|
|
80
80
|
* @name ImageLayer#anchorPoint
|
|
81
81
|
*/
|
|
@@ -159,8 +159,7 @@ class ImageLayer extends Sprite {
|
|
|
159
159
|
/**
|
|
160
160
|
* resize the Image Layer to match the given size
|
|
161
161
|
* @name resize
|
|
162
|
-
* @memberof ImageLayer
|
|
163
|
-
* @function
|
|
162
|
+
* @memberof ImageLayer
|
|
164
163
|
* @param {number} w new width
|
|
165
164
|
* @param {number} h new height
|
|
166
165
|
*/
|
|
@@ -174,7 +173,6 @@ class ImageLayer extends Sprite {
|
|
|
174
173
|
/**
|
|
175
174
|
* createPattern function
|
|
176
175
|
* @ignore
|
|
177
|
-
* @function
|
|
178
176
|
*/
|
|
179
177
|
createPattern() {
|
|
180
178
|
this._pattern = renderer.createPattern(this.image, this._repeat);
|
|
@@ -183,7 +181,6 @@ class ImageLayer extends Sprite {
|
|
|
183
181
|
/**
|
|
184
182
|
* updateLayer function
|
|
185
183
|
* @ignore
|
|
186
|
-
* @function
|
|
187
184
|
*/
|
|
188
185
|
updateLayer(vpos) {
|
|
189
186
|
var rx = this.ratio.x,
|
|
@@ -249,8 +246,7 @@ class ImageLayer extends Sprite {
|
|
|
249
246
|
* draw the ImageLayer. <br>
|
|
250
247
|
* automatically called by the game manager {@link game}
|
|
251
248
|
* @name draw
|
|
252
|
-
* @memberof ImageLayer
|
|
253
|
-
* @function
|
|
249
|
+
* @memberof ImageLayer
|
|
254
250
|
* @protected
|
|
255
251
|
* @param {CanvasRenderer|WebGLRenderer} renderer a renderer object
|
|
256
252
|
*/
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import pool from "./../system/pooling.js";
|
|
2
|
+
import Renderable from "./renderable.js";
|
|
3
|
+
|
|
4
|
+
/** @ignore */
|
|
5
|
+
function createGradient(light) {
|
|
6
|
+
var context = light.texture.context;
|
|
7
|
+
var x1 = light.texture.width / 2;
|
|
8
|
+
var y1 = light.texture.height / 2;
|
|
9
|
+
var gradient = context.createRadialGradient(x1, y1, 0, x1, y1, light.radius);
|
|
10
|
+
|
|
11
|
+
light.texture.clear();
|
|
12
|
+
|
|
13
|
+
gradient.addColorStop( 0, light.color.toRGBA(light.intensity));
|
|
14
|
+
gradient.addColorStop( 1, light.color.toRGBA(0.0));
|
|
15
|
+
|
|
16
|
+
context.beginPath();
|
|
17
|
+
context.fillStyle = gradient;
|
|
18
|
+
context.arc(x1, y1, light.radius, 0, Math.PI * 2, false);
|
|
19
|
+
context.fill();
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @classdesc
|
|
24
|
+
* A 2D point light.
|
|
25
|
+
* Note: this is a very experimental and work in progress feature, that provides a simple spot light effect.
|
|
26
|
+
* The light effect is best rendered in WebGL, as they are few limitations when using the Canvas Renderer
|
|
27
|
+
* (multiple lights are not supported, alpha component of the ambient light is ignored)
|
|
28
|
+
* @see stage.lights
|
|
29
|
+
*/
|
|
30
|
+
class Light2d extends Renderable {
|
|
31
|
+
/**
|
|
32
|
+
* @param {number} x - The horizontal position of the light.
|
|
33
|
+
* @param {number} y - The vertical position of the light.
|
|
34
|
+
* @param {number} radius - The radius of the light.
|
|
35
|
+
* @param {Color|string} [color="#FFF"] the color of the light
|
|
36
|
+
* @param {number} [intensity=0.7] - The intensity of the light.
|
|
37
|
+
*/
|
|
38
|
+
constructor(x, y, radius, color = "#FFF", intensity = 0.7) {
|
|
39
|
+
// call the parent constructor
|
|
40
|
+
super(x, y, radius * 2, radius * 2);
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* the color of the light
|
|
44
|
+
* @type {Color}
|
|
45
|
+
* @default "#FFF"
|
|
46
|
+
*/
|
|
47
|
+
this.color = pool.pull("Color").parseCSS(color);
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The radius of the light
|
|
51
|
+
* @type {number}
|
|
52
|
+
*/
|
|
53
|
+
this.radius = radius;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The intensity of the light
|
|
57
|
+
* @type {number}
|
|
58
|
+
* @default 0.7
|
|
59
|
+
*/
|
|
60
|
+
this.intensity = intensity;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* the default blend mode to be applied when rendering this light
|
|
64
|
+
* @type {string}
|
|
65
|
+
* @default "lighter"
|
|
66
|
+
* @see CanvasRenderer#setBlendMode
|
|
67
|
+
* @see WebGLRenderer#setBlendMode
|
|
68
|
+
*/
|
|
69
|
+
this.blendMode = "lighter";
|
|
70
|
+
|
|
71
|
+
/** @ignore */
|
|
72
|
+
this.visibleArea = pool.pull("Ellipse", this.centerX, this.centerY, this.width, this.height);
|
|
73
|
+
|
|
74
|
+
/** @ignore */
|
|
75
|
+
this.texture = pool.pull("CanvasTexture", this.width, this.height, { offscreenCanvas: false });
|
|
76
|
+
|
|
77
|
+
this.anchorPoint.set(0, 0);
|
|
78
|
+
|
|
79
|
+
createGradient(this);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* returns a geometry representing the visible area of this light
|
|
84
|
+
* @name getVisibleArea
|
|
85
|
+
* @memberof Light2d
|
|
86
|
+
* @returns {Ellipse} the light visible mask
|
|
87
|
+
*/
|
|
88
|
+
getVisibleArea() {
|
|
89
|
+
return this.visibleArea.setShape(this.getBounds().centerX, this.getBounds().centerY, this.width, this.height);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* object draw (Called internally by the engine).
|
|
94
|
+
* @ignore
|
|
95
|
+
*/
|
|
96
|
+
draw(renderer) {
|
|
97
|
+
renderer.drawImage(this.texture.canvas, this.getBounds().x, this.getBounds().y);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Destroy function<br>
|
|
102
|
+
* @ignore
|
|
103
|
+
*/
|
|
104
|
+
destroy() {
|
|
105
|
+
pool.push(this.color);
|
|
106
|
+
this.color = undefined;
|
|
107
|
+
pool.push(this.texture);
|
|
108
|
+
this.texture = undefined;
|
|
109
|
+
pool.push(this.visibleArea);
|
|
110
|
+
this.visibleArea = undefined;
|
|
111
|
+
super.destroy();
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
export default Light2d;
|