Skip to content

Commit

Permalink
Merge branch 'master' into molehill
Browse files Browse the repository at this point in the history
  • Loading branch information
richardlord committed Jul 31, 2011
2 parents 86b1965 + 2a85bbf commit ac3a827
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 5 deletions.
40 changes: 35 additions & 5 deletions src/org/flintparticles/common/emitters/Emitter.as
Expand Up @@ -177,6 +177,10 @@ package org.flintparticles.common.emitters
* @private
*/
protected var _started:Boolean = false;
/**
* @private
*/
protected var _updating:Boolean = false;
/**
* @private
*/
Expand Down Expand Up @@ -766,7 +770,19 @@ package org.flintparticles.common.emitters
var index:int = _particles.indexOf( particle );
if( index != -1 )
{
_particles.splice( index, 1 );
if( _updating )
{
addEventListener( EmitterEvent.EMITTER_UPDATED, function( e:EmitterEvent ) : void
{
removeEventListener( EmitterEvent.EMITTER_UPDATED, arguments.callee );
removeParticle( particle );
});
}
else
{
_particles.splice( index, 1 );
dispatchEvent( new ParticleEvent( ParticleEvent.PARTICLE_REMOVED, particle ) );
}
return true;
}
return false;
Expand All @@ -779,12 +795,24 @@ package org.flintparticles.common.emitters
*/
public function removeParticles( particles:Vector.<Particle> ):void
{
for( var i:int = 0, len:int = particles.length; i < len; ++i )
if( _updating )
{
var index:int = _particles.indexOf( particles[i] );
if( index != -1 )
addEventListener( EmitterEvent.EMITTER_UPDATED, function( e:EmitterEvent ) : void
{
_particles.splice( index, 1 );
removeEventListener( EmitterEvent.EMITTER_UPDATED, arguments.callee );
removeParticles( particles );
});
}
else
{
for( var i:int = 0, len:int = particles.length; i < len; ++i )
{
var index:int = _particles.indexOf( particles[i] );
if( index != -1 )
{
_particles.splice( index, 1 );
dispatchEvent( new ParticleEvent( ParticleEvent.PARTICLE_REMOVED, particles[i] ) );
}
}
}
}
Expand Down Expand Up @@ -881,6 +909,7 @@ package org.flintparticles.common.emitters
}
var i:int;
var particle:Particle;
_updating = true;
var len:int = _counter.updateEmitter( this, time );
for( i = 0; i < len; ++i )
{
Expand Down Expand Up @@ -963,6 +992,7 @@ package org.flintparticles.common.emitters
dispatchEvent( new EmitterEvent( EmitterEvent.EMITTER_EMPTY ) );
}
}
_updating = false;
if( hasEventListener( EmitterEvent.EMITTER_UPDATED ) )
{
dispatchEvent( new EmitterEvent( EmitterEvent.EMITTER_UPDATED ) );
Expand Down
5 changes: 5 additions & 0 deletions src/org/flintparticles/common/events/ParticleEvent.as
Expand Up @@ -53,6 +53,11 @@ package org.flintparticles.common.events
* The event dispatched by an emitter when a pre-existing particle is added to it.
*/
public static var PARTICLE_ADDED:String = "particleAdded";

/**
* The event dispatched by an emitter when a particle is removed from it (but doesn't die).
*/
public static var PARTICLE_REMOVED:String = "particleAdded";

/**
* The event dispatched by an emitter when a particle collides with another particle.
Expand Down
2 changes: 2 additions & 0 deletions src/org/flintparticles/common/renderers/FlexRendererBase.as
Expand Up @@ -93,6 +93,7 @@ package org.flintparticles.common.renderers
emitter.addEventListener( ParticleEvent.PARTICLE_CREATED, particleAdded, false, 0, true );
emitter.addEventListener( ParticleEvent.PARTICLE_ADDED, particleAdded, false, 0, true );
emitter.addEventListener( ParticleEvent.PARTICLE_DEAD, particleRemoved, false, 0, true );
emitter.addEventListener( ParticleEvent.PARTICLE_REMOVED, particleRemoved, false, 0, true );
for each( var p:Particle in emitter.particlesArray )
{
addParticle( p );
Expand Down Expand Up @@ -121,6 +122,7 @@ package org.flintparticles.common.renderers
emitter.removeEventListener( ParticleEvent.PARTICLE_CREATED, particleAdded );
emitter.removeEventListener( ParticleEvent.PARTICLE_ADDED, particleAdded );
emitter.removeEventListener( ParticleEvent.PARTICLE_DEAD, particleRemoved );
emitter.removeEventListener( ParticleEvent.PARTICLE_REMOVED, particleRemoved );
for each( var p:Particle in emitter.particlesArray )
{
removeParticle( p );
Expand Down
2 changes: 2 additions & 0 deletions src/org/flintparticles/common/renderers/RendererBase.as
Expand Up @@ -79,6 +79,7 @@ package org.flintparticles.common.renderers
emitter.addEventListener( ParticleEvent.PARTICLE_CREATED, particleAdded, false, 0, true );
emitter.addEventListener( ParticleEvent.PARTICLE_ADDED, particleAdded, false, 0, true );
emitter.addEventListener( ParticleEvent.PARTICLE_DEAD, particleRemoved, false, 0, true );
emitter.addEventListener( ParticleEvent.PARTICLE_REMOVED, particleRemoved, false, 0, true );
for each( var p:Particle in emitter.particlesArray )
{
addParticle( p );
Expand All @@ -103,6 +104,7 @@ package org.flintparticles.common.renderers
emitter.removeEventListener( ParticleEvent.PARTICLE_CREATED, particleAdded );
emitter.removeEventListener( ParticleEvent.PARTICLE_ADDED, particleAdded );
emitter.removeEventListener( ParticleEvent.PARTICLE_DEAD, particleRemoved );
emitter.removeEventListener( ParticleEvent.PARTICLE_REMOVED, particleRemoved );
for each( var p:Particle in emitter.particlesArray )
{
removeParticle( p );
Expand Down
2 changes: 2 additions & 0 deletions src/org/flintparticles/common/renderers/SpriteRendererBase.as
Expand Up @@ -92,6 +92,7 @@ package org.flintparticles.common.renderers
emitter.addEventListener( ParticleEvent.PARTICLE_CREATED, particleAdded, false, 0, true );
emitter.addEventListener( ParticleEvent.PARTICLE_ADDED, particleAdded, false, 0, true );
emitter.addEventListener( ParticleEvent.PARTICLE_DEAD, particleRemoved, false, 0, true );
emitter.addEventListener( ParticleEvent.PARTICLE_REMOVED, particleRemoved, false, 0, true );
for each( var p:Particle in emitter.particlesArray )
{
addParticle( p );
Expand Down Expand Up @@ -120,6 +121,7 @@ package org.flintparticles.common.renderers
emitter.removeEventListener( ParticleEvent.PARTICLE_CREATED, particleAdded );
emitter.removeEventListener( ParticleEvent.PARTICLE_ADDED, particleAdded );
emitter.removeEventListener( ParticleEvent.PARTICLE_DEAD, particleRemoved );
emitter.removeEventListener( ParticleEvent.PARTICLE_REMOVED, particleRemoved );
for each( var p:Particle in emitter.particlesArray )
{
removeParticle( p );
Expand Down

0 comments on commit ac3a827

Please sign in to comment.