diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/being.cpp | 13 | ||||
-rw-r--r-- | src/particle.h | 3 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/being.cpp b/src/being.cpp index 45032f6f..0ddceb0f 100644 --- a/src/being.cpp +++ b/src/being.cpp @@ -391,10 +391,19 @@ Being::logic() //Update particle effects for ( std::list<Particle *>::iterator i = mChildParticleEffects.begin(); - i != mChildParticleEffects.end(); - i++) + i != mChildParticleEffects.end(); + + ) { (*i)->setPosition((float)mPx + 16.0f, (float)mPy + 32.0f); + if (!(*i)->isAlive()) + { + (*i)->kill(); + i = mChildParticleEffects.erase(i); + } + else { + i++; + } } } diff --git a/src/particle.h b/src/particle.h index 7a747a5f..9e9223c7 100644 --- a/src/particle.h +++ b/src/particle.h @@ -243,6 +243,9 @@ class Particle : public Sprite void setDieDistance(float dist) { mInvDieDistance = 1.0f / dist; } + bool isAlive() + { return mAlive; } + /** * Manually marks the particle for deletion */ |