melonjs 9.1.0 → 10.0.1

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 (78) hide show
  1. package/{LICENSE → LICENSE.md} +0 -0
  2. package/README.md +93 -57
  3. package/dist/melonjs.js +10334 -11179
  4. package/dist/melonjs.min.js +4 -10
  5. package/dist/melonjs.module.d.ts +13206 -0
  6. package/dist/melonjs.module.js +9913 -10872
  7. package/package.json +19 -14
  8. package/src/audio/audio.js +477 -553
  9. package/src/camera/camera2d.js +67 -65
  10. package/src/entity/draggable.js +26 -35
  11. package/src/entity/droptarget.js +17 -14
  12. package/src/entity/entity.js +59 -79
  13. package/src/game.js +194 -204
  14. package/src/index.js +12 -30
  15. package/src/input/gamepad.js +8 -19
  16. package/src/input/keyboard.js +4 -4
  17. package/src/input/pointer.js +14 -12
  18. package/src/input/pointerevent.js +15 -13
  19. package/src/lang/deprecated.js +2 -887
  20. package/src/level/level.js +3 -3
  21. package/src/level/tiled/TMXGroup.js +7 -11
  22. package/src/level/tiled/TMXLayer.js +33 -32
  23. package/src/level/tiled/TMXTileMap.js +15 -19
  24. package/src/level/tiled/TMXTileset.js +5 -5
  25. package/src/level/tiled/TMXUtils.js +3 -3
  26. package/src/level/tiled/renderer/TMXRenderer.js +4 -0
  27. package/src/loader/loader.js +8 -23
  28. package/src/loader/loadingscreen.js +51 -60
  29. package/src/math/matrix3.js +1 -1
  30. package/src/particles/emitter.js +36 -39
  31. package/src/particles/particle.js +27 -12
  32. package/src/particles/particlecontainer.js +17 -16
  33. package/src/physics/body.js +80 -118
  34. package/src/physics/collision.js +5 -235
  35. package/src/physics/detector.js +235 -0
  36. package/src/physics/quadtree.js +14 -14
  37. package/src/physics/world.js +84 -18
  38. package/src/plugin/plugin.js +26 -24
  39. package/src/polyfill/console.js +9 -14
  40. package/src/renderable/GUI.js +48 -62
  41. package/src/renderable/collectable.js +11 -4
  42. package/src/renderable/colorlayer.js +28 -26
  43. package/src/renderable/container.js +120 -96
  44. package/src/renderable/imagelayer.js +94 -93
  45. package/src/renderable/renderable.js +164 -138
  46. package/src/renderable/sprite.js +42 -44
  47. package/src/renderable/trigger.js +24 -17
  48. package/src/shapes/ellipse.js +27 -27
  49. package/src/shapes/line.js +12 -8
  50. package/src/shapes/poly.js +77 -49
  51. package/src/shapes/rectangle.js +193 -268
  52. package/src/state/stage.js +23 -25
  53. package/src/state/state.js +35 -86
  54. package/src/system/device.js +233 -285
  55. package/src/system/event.js +485 -432
  56. package/src/system/pooling.js +61 -54
  57. package/src/system/save.js +17 -16
  58. package/src/system/timer.js +34 -38
  59. package/src/text/bitmaptext.js +44 -46
  60. package/src/text/text.js +39 -34
  61. package/src/tweens/easing.js +0 -2
  62. package/src/tweens/interpolation.js +3 -8
  63. package/src/tweens/tween.js +332 -351
  64. package/src/utils/function.js +6 -8
  65. package/src/utils/utils.js +34 -30
  66. package/src/video/canvas/canvas_renderer.js +13 -8
  67. package/src/video/renderer.js +8 -7
  68. package/src/video/texture.js +8 -8
  69. package/src/video/texture_cache.js +5 -5
  70. package/src/video/video.js +373 -403
  71. package/src/video/webgl/glshader.js +2 -2
  72. package/src/video/webgl/webgl_compositor.js +14 -8
  73. package/src/video/webgl/webgl_renderer.js +21 -19
  74. package/plugins/debug/debugPanel.js +0 -770
  75. package/plugins/debug/font/PressStart2P.fnt +0 -100
  76. package/plugins/debug/font/PressStart2P.ltr +0 -1
  77. package/plugins/debug/font/PressStart2P.png +0 -0
  78. package/plugins/debug/particleDebugPanel.js +0 -303
@@ -1,94 +1,81 @@
1
- import game from "./../game.js";
2
- import video from "./../video/video.js";
3
- import event from "./../system/event.js";
1
+ import { world, viewport } from "./../game.js";
2
+ import { createCanvas, renderer } from "./../video/video.js";
3
+ import * as event from "./../system/event.js";
4
4
  import {nextPowerOfTwo} from "./../math/math.js";
5
5
  import pool from "./../system/pooling.js";
6
6
  import Renderable from "./../renderable/renderable.js";
7
+ import ColorLayer from "./../renderable/colorlayer.js";
7
8
  import Stage from "./../state/stage.js";
8
9
 
9
10
 
10
11
  // a basic progress bar object
11
- var ProgressBar = Renderable.extend({
12
+ class ProgressBar extends Renderable {
12
13
  /**
13
14
  * @ignore
14
15
  */
15
- init: function (x, y, w, h) {
16
- var self = this;
16
+ constructor(x, y, w, h) {
17
+ super(x, y, w, h);
17
18
 
18
19
  this.barHeight = h;
19
-
20
- this._super(Renderable, "init", [x, y, w, h]);
21
-
22
20
  this.anchorPoint.set(0, 0);
23
21
 
24
- this.loaderHdlr = event.subscribe(
25
- event.LOADER_PROGRESS,
26
- self.onProgressUpdate.bind(self)
27
- );
28
-
29
- this.resizeHdlr = event.subscribe(
30
- event.VIEWPORT_ONRESIZE,
31
- self.resize.bind(self)
32
- );
22
+ event.on(event.LOADER_PROGRESS, this.onProgressUpdate, this);
23
+ event.on(event.VIEWPORT_ONRESIZE, this.resize, this);
33
24
 
34
25
  this.anchorPoint.set(0, 0);
35
26
 
36
27
  // store current progress
37
28
  this.progress = 0;
38
- },
29
+ }
39
30
 
40
31
  /**
41
32
  * make sure the screen is refreshed every frame
42
33
  * @ignore
43
34
  */
44
- onProgressUpdate : function (progress) {
35
+ onProgressUpdate(progress) {
45
36
  this.progress = ~~(progress * this.width);
46
37
  this.isDirty = true;
47
- },
38
+ }
48
39
 
49
40
  /**
50
41
  * draw function
51
42
  * @ignore
52
43
  */
53
- draw : function (renderer) {
54
- // clear the background
55
- renderer.clearColor("#202020");
56
-
44
+ draw (renderer) {
57
45
  // draw the progress bar
58
46
  renderer.setColor("black");
59
- renderer.fillRect(this.pos.x, game.viewport.centerY, renderer.getWidth(), this.barHeight / 2);
47
+ renderer.fillRect(this.pos.x, viewport.centerY, renderer.getWidth(), this.barHeight / 2);
60
48
 
61
49
  renderer.setColor("#55aa00");
62
- renderer.fillRect(this.pos.x, game.viewport.centerY, this.progress, this.barHeight / 2);
63
- },
50
+ renderer.fillRect(this.pos.x, viewport.centerY, this.progress, this.barHeight / 2);
51
+ }
64
52
 
65
53
  /**
66
54
  * Called by engine before deleting the object
67
55
  * @ignore
68
56
  */
69
- onDestroyEvent : function () {
57
+ onDestroyEvent() {
70
58
  // cancel the callback
71
- event.unsubscribe(this.loaderHdlr);
72
- event.unsubscribe(this.resizeHdlr);
73
- this.loaderHdlr = this.resizeHdlr = null;
59
+ event.off(event.LOADER_PROGRESS, this.onProgressUpdate);
60
+ event.off(event.VIEWPORT_ONRESIZE, this.resize);
74
61
  }
75
62
 
76
- });
63
+ };
77
64
 
78
65
  // the melonJS Logo
79
- var IconLogo = Renderable.extend({
66
+ class IconLogo extends Renderable {
80
67
  /**
81
68
  * @ignore
82
69
  */
83
- init : function (x, y) {
84
- this._super(Renderable, "init", [x, y, 100, 85]);
70
+ constructor(x, y) {
71
+ super(x, y, 100, 85);
85
72
 
86
- this.iconCanvas = video.createCanvas(
73
+ this.iconCanvas = createCanvas(
87
74
  nextPowerOfTwo(this.width),
88
75
  nextPowerOfTwo(this.height),
89
76
  false);
90
77
 
91
- var context = video.renderer.getContext2d(this.iconCanvas);
78
+ var context = renderer.getContext2d(this.iconCanvas);
92
79
 
93
80
  context.beginPath();
94
81
  context.moveTo(0.7, 48.9);
@@ -117,33 +104,34 @@ var IconLogo = Renderable.extend({
117
104
  context.stroke();
118
105
 
119
106
  this.anchorPoint.set(0.5, 0.5);
120
- },
107
+ }
108
+
121
109
  /**
122
110
  * @ignore
123
111
  */
124
- draw : function (renderer) {
112
+ draw(renderer) {
125
113
  renderer.drawImage(this.iconCanvas, renderer.getWidth() / 2, this.pos.y);
126
114
  }
127
- });
115
+ };
128
116
 
129
117
  // the melonJS Text Logo
130
- var TextLogo = Renderable.extend({
118
+ class TextLogo extends Renderable {
131
119
  /**
132
120
  * @ignore
133
121
  */
134
- init : function (w, h) {
135
- this._super(Renderable, "init", [0, 0, w, h]);
122
+ constructor(w, h) {
123
+ super(0, 0, w, h);
136
124
 
137
125
  this.textWidth = 0;
138
126
 
139
127
  // offscreen cache canvas
140
- this.fontCanvas = video.createCanvas(256, 64, true);
141
- this.drawFont(video.renderer.getContext2d(this.fontCanvas));
128
+ this.fontCanvas = createCanvas(256, 64, true);
129
+ this.drawFont(renderer.getContext2d(this.fontCanvas));
142
130
 
143
131
  this.anchorPoint.set(0, 0.5);
144
- },
132
+ }
145
133
 
146
- drawFont : function (context) {
134
+ drawFont(context) {
147
135
  var logo1 = pool.pull("Text", 0, 0, {
148
136
  font: "century gothic",
149
137
  size: 32,
@@ -180,16 +168,16 @@ var TextLogo = Renderable.extend({
180
168
  // put them back into the object pool
181
169
  pool.push(logo1);
182
170
  pool.push(logo2);
183
- },
171
+ }
184
172
 
185
173
  /**
186
174
  * @ignore
187
175
  */
188
- draw : function (renderer) {
176
+ draw(renderer) {
189
177
  renderer.drawImage(this.fontCanvas, Math.round((renderer.getWidth() - this.textWidth) / 2), this.pos.y);
190
178
  }
191
179
 
192
- });
180
+ };
193
181
 
194
182
  /**
195
183
  * a default loading screen
@@ -205,25 +193,28 @@ var defaultLoadingScreen = new Stage({
205
193
  onResetEvent : function () {
206
194
  var barHeight = 8;
207
195
 
196
+ // clear the background
197
+ world.addChild(new ColorLayer("background", "#202020"), 0);
198
+
208
199
  // progress bar
209
- game.world.addChild(new ProgressBar(
200
+ world.addChild(new ProgressBar(
210
201
  0,
211
- video.renderer.getHeight() / 2,
212
- video.renderer.getWidth(),
202
+ renderer.getHeight() / 2,
203
+ renderer.getWidth(),
213
204
  barHeight
214
205
  ), 1);
215
206
 
216
207
  // melonJS logo
217
- game.world.addChild(new IconLogo(
218
- video.renderer.getWidth() / 2,
219
- (video.renderer.getHeight() / 2) - (barHeight * 2) - 35
208
+ world.addChild(new IconLogo(
209
+ renderer.getWidth() / 2,
210
+ (renderer.getHeight() / 2) - (barHeight * 2) - 35
220
211
 
221
212
  ), 2);
222
213
 
223
214
  // melonJS text
224
- game.world.addChild(new TextLogo(
225
- video.renderer.getWidth(),
226
- video.renderer.getHeight()
215
+ world.addChild(new TextLogo(
216
+ renderer.getWidth(),
217
+ renderer.getHeight()
227
218
  ), 2);
228
219
  }
229
220
  });
@@ -569,7 +569,7 @@ class Matrix3d {
569
569
  * @param {me.Vector2d|me.Vector3d} v the vector to translate the matrix by
570
570
  * @return {me.Matrix3d} Reference to this object for method chaining
571
571
  */
572
- translate(x, y, z) {
572
+ translate() {
573
573
  var a = this.val;
574
574
  var _x, _y, _z;
575
575
 
@@ -1,4 +1,4 @@
1
- import video from "./../video/video.js";
1
+ import { createCanvas } from "./../video/video.js";
2
2
  import pool from "./../system/pooling.js";
3
3
  import Renderable from "./../renderable/renderable.js";
4
4
  import ParticleContainer from "./particlecontainer.js";
@@ -8,7 +8,7 @@ import { randomFloat } from "./../math/math.js";
8
8
 
9
9
  // generate a default image for the particles
10
10
  var pixel = (function () {
11
- var canvas = video.createCanvas(1, 1);
11
+ var canvas = createCanvas(1, 1);
12
12
  var context = canvas.getContext("2d");
13
13
  context.fillStyle = "#fff";
14
14
  context.fillRect(0, 0, 1, 1);
@@ -326,11 +326,15 @@ var ParticleEmitterSettings = {
326
326
  * me.game.world.removeChild(emitter);
327
327
  *
328
328
  */
329
- var ParticleEmitter = Renderable.extend({
329
+ class ParticleEmitter extends Renderable {
330
+
330
331
  /**
331
332
  * @ignore
332
333
  */
333
- init: function (x, y, settings) {
334
+ constructor(x, y, settings) {
335
+ // call the super constructor
336
+ super(x, y, Infinity, Infinity);
337
+
334
338
  // Emitter is Stream, launch particles constantly
335
339
  /** @ignore */
336
340
  this._stream = false;
@@ -349,15 +353,6 @@ var ParticleEmitter = Renderable.extend({
349
353
  /** @ignore */
350
354
  this._enabled = false;
351
355
 
352
- // call the super constructor
353
- this._super(
354
- Renderable,
355
- "init",
356
- [x, y,
357
- Infinity,
358
- Infinity]
359
- );
360
-
361
356
  // Emitter will always update
362
357
  this.alwaysUpdate = true;
363
358
 
@@ -403,34 +398,34 @@ var ParticleEmitter = Renderable.extend({
403
398
 
404
399
  // Reset the emitter to defaults
405
400
  this.reset(settings);
406
- },
401
+ }
407
402
 
408
403
  /**
409
404
  * @ignore
410
405
  */
411
- onActivateEvent: function() {
406
+ onActivateEvent() {
412
407
  this.ancestor.addChild(this.container);
413
408
  this.container.pos.z = this.pos.z;
414
409
  if (!this.ancestor.autoSort) {
415
410
  this.ancestor.sort();
416
411
  }
417
- },
412
+ }
418
413
 
419
414
  /**
420
415
  * @ignore
421
416
  */
422
- onDeactivateEvent: function() {
417
+ onDeactivateEvent() {
423
418
  if (this.ancestor.hasChild(this.container)) {
424
419
  this.ancestor.removeChildNow(this.container);
425
420
  }
426
- },
421
+ }
427
422
 
428
423
  /**
429
424
  * @ignore
430
425
  */
431
- destroy: function () {
426
+ destroy() {
432
427
  this.reset();
433
- },
428
+ }
434
429
 
435
430
  /**
436
431
  * returns a random point inside the bounds x axis of this emitter
@@ -439,9 +434,9 @@ var ParticleEmitter = Renderable.extend({
439
434
  * @function
440
435
  * @return {Number}
441
436
  */
442
- getRandomPointX: function () {
437
+ getRandomPointX() {
443
438
  return this.pos.x + randomFloat(0, this.width);
444
- },
439
+ }
445
440
 
446
441
  /**
447
442
  * returns a random point inside the bounds y axis of this emitter
@@ -450,9 +445,9 @@ var ParticleEmitter = Renderable.extend({
450
445
  * @function
451
446
  * @return {Number}
452
447
  */
453
- getRandomPointY: function () {
448
+ getRandomPointY() {
454
449
  return this.pos.y + randomFloat(0, this.height);
455
- },
450
+ }
456
451
 
457
452
  /**
458
453
  * Reset the emitter with default values.<br>
@@ -461,7 +456,7 @@ var ParticleEmitter = Renderable.extend({
461
456
  * @name reset
462
457
  * @memberOf me.ParticleEmitter
463
458
  */
464
- reset: function (settings) {
459
+ reset(settings) {
465
460
  // check if settings exists and create a dummy object if necessary
466
461
  settings = settings || {};
467
462
  var defaults = ParticleEmitterSettings;
@@ -474,17 +469,17 @@ var ParticleEmitter = Renderable.extend({
474
469
 
475
470
  // reset particle container values
476
471
  this.container.reset();
477
- },
472
+ }
478
473
 
479
474
  // Add count particles in the game world
480
475
  /** @ignore */
481
- addParticles: function (count) {
476
+ addParticles(count) {
482
477
  for (var i = 0; i < ~~count; i++) {
483
478
  // Add particle to the container
484
479
  var particle = pool.pull("Particle", this);
485
480
  this.container.addChild(particle);
486
481
  }
487
- },
482
+ }
488
483
 
489
484
  /**
490
485
  * Emitter is of type stream and is launching particles <br>
@@ -493,9 +488,9 @@ var ParticleEmitter = Renderable.extend({
493
488
  * @name isRunning
494
489
  * @memberOf me.ParticleEmitter
495
490
  */
496
- isRunning: function () {
491
+ isRunning() {
497
492
  return this._enabled && this._stream;
498
- },
493
+ }
499
494
 
500
495
  /**
501
496
  * Launch particles from emitter constantly <br>
@@ -505,12 +500,12 @@ var ParticleEmitter = Renderable.extend({
505
500
  * @name streamParticles
506
501
  * @memberOf me.ParticleEmitter
507
502
  */
508
- streamParticles: function (duration) {
503
+ streamParticles(duration) {
509
504
  this._enabled = true;
510
505
  this._stream = true;
511
506
  this.frequency = Math.max(this.frequency, 1);
512
507
  this._durationTimer = (typeof duration === "number") ? duration : this.duration;
513
- },
508
+ }
514
509
 
515
510
  /**
516
511
  * Stop the emitter from generating new particles (used only if emitter is Stream) <br>
@@ -518,9 +513,9 @@ var ParticleEmitter = Renderable.extend({
518
513
  * @name stopStream
519
514
  * @memberOf me.ParticleEmitter
520
515
  */
521
- stopStream: function () {
516
+ stopStream() {
522
517
  this._enabled = false;
523
- },
518
+ }
524
519
 
525
520
  /**
526
521
  * Launch all particles from emitter and stop <br>
@@ -530,17 +525,17 @@ var ParticleEmitter = Renderable.extend({
530
525
  * @name burstParticles
531
526
  * @memberOf me.ParticleEmitter
532
527
  */
533
- burstParticles: function (total) {
528
+ burstParticles(total) {
534
529
  this._enabled = true;
535
530
  this._stream = false;
536
531
  this.addParticles((typeof total === "number") ? total : this.totalParticles);
537
532
  this._enabled = false;
538
- },
533
+ }
539
534
 
540
535
  /**
541
536
  * @ignore
542
537
  */
543
- update: function (dt) {
538
+ update(dt) {
544
539
  // Launch new particles, if emitter is Stream
545
540
  if ((this._enabled) && (this._stream)) {
546
541
  // Check if the emitter has duration set
@@ -571,5 +566,7 @@ var ParticleEmitter = Renderable.extend({
571
566
  }
572
567
  return true;
573
568
  }
574
- });
575
- export default ParticleEmitter;
569
+
570
+ };
571
+
572
+ export { ParticleEmitterSettings, ParticleEmitter };
@@ -12,18 +12,33 @@ import Renderable from "./../renderable/renderable.js";
12
12
  * @constructor
13
13
  * @param {me.ParticleEmitter} particle emitter
14
14
  */
15
- var Particle = Renderable.extend({
15
+ class Particle extends Renderable {
16
16
  /**
17
17
  * @ignore
18
18
  */
19
- init : function (emitter) {
19
+ constructor(emitter) {
20
20
  // Call the super constructor
21
- this._super(Renderable, "init", [
21
+ super(
22
22
  emitter.getRandomPointX(),
23
23
  emitter.getRandomPointY(),
24
24
  emitter.image.width,
25
25
  emitter.image.height
26
- ]);
26
+ );
27
+
28
+ // particle velocity
29
+ this.vel = new Vector2d();
30
+ this.onResetEvent(emitter, true);
31
+ }
32
+
33
+ onResetEvent(emitter, newInstance = false) {
34
+ if (newInstance === false) {
35
+ super.onResetEvent(
36
+ emitter.getRandomPointX(),
37
+ emitter.getRandomPointY(),
38
+ emitter.image.width,
39
+ emitter.image.height
40
+ );
41
+ }
27
42
 
28
43
  // Particle will always update
29
44
  this.alwaysUpdate = true;
@@ -36,7 +51,7 @@ var Particle = Renderable.extend({
36
51
  var speed = emitter.speed + ((emitter.speedVariation > 0) ? (randomFloat(0, 2) - 1) * emitter.speedVariation : 0);
37
52
 
38
53
  // Set the start particle Velocity
39
- this.vel = new Vector2d(speed * Math.cos(angle), -speed * Math.sin(angle));
54
+ this.vel.set(speed * Math.cos(angle), -speed * Math.sin(angle));
40
55
 
41
56
  // Set the start particle Time of Life as defined in emitter
42
57
  this.life = randomFloat(emitter.minLife, emitter.maxLife);
@@ -76,7 +91,7 @@ var Particle = Renderable.extend({
76
91
  if (!emitter.followTrajectory) {
77
92
  this.angle = randomFloat(emitter.minRotation, emitter.maxRotation);
78
93
  }
79
- },
94
+ }
80
95
 
81
96
  /**
82
97
  * Update the Particle <br>
@@ -87,7 +102,7 @@ var Particle = Renderable.extend({
87
102
  * @ignore
88
103
  * @param {Number} dt time since the last update in milliseconds
89
104
  */
90
- update : function (dt) {
105
+ update(dt) {
91
106
  // move things forward independent of the current frame rate
92
107
  var skew = dt * this._deltaInv;
93
108
 
@@ -130,12 +145,12 @@ var Particle = Renderable.extend({
130
145
 
131
146
  // Return true if the particle is not dead yet
132
147
  return (this.inViewport || !this.onlyInViewport) && (this.life > 0);
133
- },
148
+ }
134
149
 
135
150
  /**
136
151
  * @ignore
137
152
  */
138
- preDraw : function (renderer) {
153
+ preDraw(renderer) {
139
154
 
140
155
  // restore is called in postDraw
141
156
  renderer.save();
@@ -145,12 +160,12 @@ var Particle = Renderable.extend({
145
160
 
146
161
  // translate to the defined anchor point and scale it
147
162
  renderer.transform(this.currentTransform);
148
- },
163
+ }
149
164
 
150
165
  /**
151
166
  * @ignore
152
167
  */
153
- draw : function (renderer) {
168
+ draw(renderer) {
154
169
  var w = this.width, h = this.height;
155
170
  renderer.drawImage(
156
171
  this.image,
@@ -160,6 +175,6 @@ var Particle = Renderable.extend({
160
175
  w, h
161
176
  );
162
177
  }
163
- });
178
+ };
164
179
 
165
180
  export default Particle;
@@ -1,5 +1,5 @@
1
1
  import Container from "./../renderable/container.js";
2
- import game from "./../game.js";
2
+ import { viewport } from "./../game.js";
3
3
 
4
4
  /**
5
5
  * Particle Container Object.
@@ -9,18 +9,20 @@ import game from "./../game.js";
9
9
  * @constructor
10
10
  * @param {me.ParticleEmitter} emitter the emitter which owns this container
11
11
  */
12
- var ParticleContainer = Container.extend({
12
+
13
+ class ParticleContainer extends Container {
14
+
13
15
  /**
14
16
  * @ignore
15
17
  */
16
- init: function (emitter) {
18
+ constructor(emitter) {
17
19
  // call the super constructor
18
- this._super(Container, "init", [
19
- game.viewport.pos.x,
20
- game.viewport.pos.y,
21
- game.viewport.width,
22
- game.viewport.height
23
- ]);
20
+ super(
21
+ viewport.pos.x,
22
+ viewport.pos.y,
23
+ viewport.width,
24
+ viewport.height
25
+ );
24
26
 
25
27
  // don't sort the particles by z-index
26
28
  this.autoSort = false;
@@ -39,12 +41,12 @@ var ParticleContainer = Container.extend({
39
41
  this.anchorPoint.set(0, 0);
40
42
 
41
43
  this.isKinematic = true;
42
- },
44
+ }
43
45
 
44
46
  /**
45
47
  * @ignore
46
48
  */
47
- update: function (dt) {
49
+ update(dt) {
48
50
  // skip frames if necessary
49
51
  if (++this._updateCount > this._emitter.framesToSkip) {
50
52
  this._updateCount = 0;
@@ -59,7 +61,6 @@ var ParticleContainer = Container.extend({
59
61
  this._dt = 0;
60
62
 
61
63
  // Update particles and remove them if they are dead
62
- var viewport = game.viewport;
63
64
  for (var i = this.children.length - 1; i >= 0; --i) {
64
65
  var particle = this.children[i];
65
66
  particle.inViewport = viewport.isVisible(particle, this.floating);
@@ -68,12 +69,12 @@ var ParticleContainer = Container.extend({
68
69
  }
69
70
  }
70
71
  return true;
71
- },
72
+ }
72
73
 
73
74
  /**
74
75
  * @ignore
75
76
  */
76
- draw : function (renderer, rect) {
77
+ draw(renderer, rect) {
77
78
  if (this.children.length > 0) {
78
79
  var context = renderer.getContext(),
79
80
  gco;
@@ -83,7 +84,7 @@ var ParticleContainer = Container.extend({
83
84
  context.globalCompositeOperation = "lighter";
84
85
  }
85
86
 
86
- this._super(Container, "draw", [renderer, rect]);
87
+ super.draw(renderer, rect);
87
88
 
88
89
  // Restore globalCompositeOperation
89
90
  if (this._emitter.textureAdditive) {
@@ -91,5 +92,5 @@ var ParticleContainer = Container.extend({
91
92
  }
92
93
  }
93
94
  }
94
- });
95
+ };
95
96
  export default ParticleContainer;