Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2013-10-13 20:14:17 +0000
committerStijn Buys <ingar@osirion.org>2013-10-13 20:14:17 +0000
commitd6471bf0f398257cb379944323cf85e8115491a5 (patch)
treea65de7dfe769d12fc88bb56f16bffc7f330e1d08 /src/render/renderext.cc
parentd192894dc60562c04a98ea0ba361045178e096d7 (diff)
Axded explosion trigger for particle ejecotrs, fixed explosion particles for destroyed entities.
Diffstat (limited to 'src/render/renderext.cc')
-rw-r--r--src/render/renderext.cc14
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;
}
}
}