diff options
Diffstat (limited to 'src/render/renderext.cc')
-rw-r--r-- | src/render/renderext.cc | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/render/renderext.cc b/src/render/renderext.cc index 7ac5702..c66f036 100644 --- a/src/render/renderext.cc +++ b/src/render/renderext.cc @@ -168,17 +168,27 @@ void RenderExt::frame(float elapsed) const ParticleSystemScript *script = ParticleSystemScript::load("explosion"); if (script) { state_explosion = new ParticleSystem(script, entity(), 0); + + // forece all ejectors te explosion state + for (ParticleSystem::Ejectors::iterator it = state_explosion->ejectors().begin(); it != state_explosion->ejectors().end(); ++it) { + ParticleEjector *ejector = (*it); + ejector->set_explosion(true); + } + state_particles.push_back(state_explosion); } } } else { + if (state_explosion) { // remove explosion - for (ParticleSystems::iterator it = particles().begin(); state_explosion && (it != particles().end()); it++) { + for (ParticleSystems::iterator it = particles().begin(); state_explosion && (it != particles().end());) { if ((*it) == state_explosion) { - particles().erase(it); + particles().erase(it++); state_explosion = 0; + } else { + ++it; } } } |