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.
Files changed (95) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +32 -25
  3. package/dist/melonjs.js +1833 -2267
  4. package/dist/melonjs.min.js +4 -4
  5. package/dist/melonjs.module.d.ts +642 -1416
  6. package/dist/melonjs.module.js +1778 -2237
  7. package/package.json +16 -16
  8. package/src/audio/audio.js +0 -1
  9. package/src/camera/camera2d.js +1 -16
  10. package/src/entity/entity.js +1 -4
  11. package/src/game.js +2 -2
  12. package/src/geometries/ellipse.js +18 -27
  13. package/src/geometries/line.js +5 -8
  14. package/src/geometries/path2d.js +10 -20
  15. package/src/geometries/poly.js +28 -45
  16. package/src/geometries/rectangle.js +24 -36
  17. package/src/geometries/roundrect.js +96 -3
  18. package/src/index.js +7 -2
  19. package/src/input/gamepad.js +5 -16
  20. package/src/input/keyboard.js +1 -9
  21. package/src/input/pointer.js +0 -1
  22. package/src/input/pointerevent.js +14 -23
  23. package/src/lang/deprecated.js +9 -6
  24. package/src/level/level.js +0 -9
  25. package/src/level/tiled/TMXGroup.js +0 -4
  26. package/src/level/tiled/TMXLayer.js +0 -8
  27. package/src/level/tiled/TMXObject.js +0 -3
  28. package/src/level/tiled/TMXTile.js +4 -5
  29. package/src/level/tiled/TMXTileMap.js +1 -7
  30. package/src/level/tiled/TMXTileset.js +0 -5
  31. package/src/level/tiled/TMXTilesetGroup.js +1 -4
  32. package/src/level/tiled/TMXUtils.js +1 -4
  33. package/src/level/tiled/renderer/TMXHexagonalRenderer.js +2 -3
  34. package/src/level/tiled/renderer/TMXIsometricRenderer.js +0 -1
  35. package/src/level/tiled/renderer/TMXRenderer.js +1 -7
  36. package/src/loader/loader.js +0 -11
  37. package/src/loader/loadingscreen.js +16 -5
  38. package/src/math/color.js +10 -30
  39. package/src/math/math.js +0 -10
  40. package/src/math/matrix2.js +12 -27
  41. package/src/math/matrix3.js +1 -22
  42. package/src/math/observable_vector2.js +0 -29
  43. package/src/math/observable_vector3.js +0 -29
  44. package/src/math/vector2.js +3 -40
  45. package/src/math/vector3.js +4 -41
  46. package/src/particles/emitter.js +11 -12
  47. package/src/physics/body.js +1 -1
  48. package/src/physics/bounds.js +5 -19
  49. package/src/physics/collision.js +0 -1
  50. package/src/physics/detector.js +0 -4
  51. package/src/physics/quadtree.js +0 -7
  52. package/src/physics/sat.js +3 -3
  53. package/src/physics/world.js +0 -4
  54. package/src/plugin/plugin.js +0 -2
  55. package/src/polyfill/index.js +1 -0
  56. package/src/polyfill/roundrect.js +237 -0
  57. package/src/renderable/GUI.js +5 -10
  58. package/src/renderable/collectable.js +1 -0
  59. package/src/renderable/container.js +26 -54
  60. package/src/renderable/dragndrop.js +0 -9
  61. package/src/renderable/imagelayer.js +3 -7
  62. package/src/renderable/light2d.js +114 -0
  63. package/src/renderable/renderable.js +22 -43
  64. package/src/renderable/sprite.js +13 -25
  65. package/src/renderable/trigger.js +1 -1
  66. package/src/state/stage.js +72 -6
  67. package/src/state/state.js +3 -20
  68. package/src/system/device.js +14 -53
  69. package/src/system/event.js +11 -0
  70. package/src/system/pooling.js +19 -8
  71. package/src/system/save.js +9 -11
  72. package/src/system/timer.js +239 -218
  73. package/src/text/bitmaptextdata.js +1 -4
  74. package/src/text/glyph.js +2 -2
  75. package/src/text/text.js +19 -21
  76. package/src/text/textmetrics.js +0 -2
  77. package/src/tweens/easing.js +1 -1
  78. package/src/tweens/interpolation.js +2 -2
  79. package/src/tweens/tween.js +1 -13
  80. package/src/utils/agent.js +1 -3
  81. package/src/utils/array.js +0 -3
  82. package/src/utils/file.js +0 -2
  83. package/src/utils/function.js +0 -2
  84. package/src/utils/string.js +0 -6
  85. package/src/utils/utils.js +2 -5
  86. package/src/video/canvas/canvas_renderer.js +76 -103
  87. package/src/video/renderer.js +43 -50
  88. package/src/video/{texture.js → texture/atlas.js} +8 -8
  89. package/src/video/{texture_cache.js → texture/cache.js} +4 -5
  90. package/src/video/texture/canvas_texture.js +99 -0
  91. package/src/video/video.js +3 -3
  92. package/src/video/webgl/glshader.js +0 -5
  93. package/src/video/webgl/utils/uniforms.js +4 -7
  94. package/src/video/webgl/webgl_compositor.js +0 -14
  95. package/src/video/webgl/webgl_renderer.js +73 -97
@@ -18,7 +18,7 @@ var globalFloatingCounter = 0;
18
18
 
19
19
  /**
20
20
  * @classdesc
21
- * me.Container represents a collection of child objects
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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.prototype
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
- * @type {Vector2d}
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.prototype
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.prototype
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;