Skip to content

Commit 93665ff

Browse files
committed
Emitter Manager now uses a list to allow for emitter sequencing. Added missing depth component. Added ability to emit across all emitters from a given coordinate.
1 parent 6180fee commit 93665ff

1 file changed

Lines changed: 27 additions & 5 deletions

File tree

v3/src/gameobjects/particles/ParticleEmitterManager.js

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
var Class = require('../../utils/Class');
22
var Components = require('../components');
33
var GameObject = require('../GameObject');
4+
var List = require('../../structs/List');
45
var ParticleEmitter = require('./ParticleEmitter');
56
var Render = require('./ParticleManagerRender');
67

@@ -9,6 +10,7 @@ var ParticleEmitterManager = new Class({
910
Extends: GameObject,
1011

1112
Mixins: [
13+
Components.Depth,
1214
Components.RenderTarget,
1315
Components.Visible,
1416
Render
@@ -38,7 +40,7 @@ var ParticleEmitterManager = new Class({
3840

3941
this.setTexture(texture, frame);
4042

41-
this.emitters = [];
43+
this.emitters = new List(this);
4244

4345
if (emitters !== undefined)
4446
{
@@ -108,16 +110,36 @@ var ParticleEmitterManager = new Class({
108110

109111
addEmitter: function (emitter)
110112
{
111-
this.emitters.push(emitter);
112-
113-
return emitter;
113+
return this.emitters.add(emitter);
114114
},
115115

116116
createEmitter: function (config)
117117
{
118118
return this.addEmitter(new ParticleEmitter(this, config));
119119
},
120120

121+
emit: function (count, x, y)
122+
{
123+
var emitters = this.emitters.list;
124+
125+
for (var i = 0; i < emitters.length; i++)
126+
{
127+
var emitter = emitters[i];
128+
129+
if (emitter.active)
130+
{
131+
emitter.emit(count, x, y);
132+
}
133+
}
134+
135+
return this;
136+
},
137+
138+
emitAt: function (x, y, count)
139+
{
140+
return this.emit(count, x, y);
141+
},
142+
121143
pause: function ()
122144
{
123145
this.active = false;
@@ -137,7 +159,7 @@ var ParticleEmitterManager = new Class({
137159
// Scale the delta
138160
delta *= this.timeScale;
139161

140-
var emitters = this.emitters;
162+
var emitters = this.emitters.list;
141163

142164
for (var i = 0; i < emitters.length; i++)
143165
{

0 commit comments

Comments
 (0)