From 6e0ed7a3a40f7759e784320e62da944ae4a64e08 Mon Sep 17 00:00:00 2001 From: Dave Schuyler Date: Thu, 7 Oct 2004 01:18:49 +0000 Subject: [PATCH] added use of floor z --- panda/src/particlesystem/particleSystem.cxx | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/panda/src/particlesystem/particleSystem.cxx b/panda/src/particlesystem/particleSystem.cxx index 42e2d833a1..7cb31c179d 100644 --- a/panda/src/particlesystem/particleSystem.cxx +++ b/panda/src/particlesystem/particleSystem.cxx @@ -55,6 +55,7 @@ ParticleSystem(int pool_size) : _system_lifespan = 0.0f; _i_was_spawned_flag = false; _particle_pool_size = 0; + _floor_z = _FPCLASS_NINF; // just in case someone tries to do something that requires the // use of an emitter, renderer, or factory before they've actually @@ -190,7 +191,7 @@ birth_particle(void) { bp->reset_position(world_pos/* + (NORMALIZED_RAND() * new_vel)*/); bp->set_velocity(new_vel); - _living_particles++; + ++_living_particles; // propogate information down to renderer _renderer->birth_particle(pool_index); @@ -212,7 +213,7 @@ birth_litter() { if (_litter_spread != 0) litter_size += I_SPREAD(_litter_spread); - for (i = 0; i < litter_size; i++) { + for (i = 0; i < litter_size; ++i) { if (birth_particle() == false) return; } @@ -508,11 +509,18 @@ update(float dt) { age = bp->get_age() + dt; bp->set_age(age); - if (age >= bp->get_lifespan()) + //cerr<<"bp->get_position().get_z() returning "<get_position().get_z()<= bp->get_lifespan()) { kill_particle(current_index); - else + } else if (get_floor_z() != _FPCLASS_NINF + && bp->get_position().get_z() <= get_floor_z()) { + // ...the particle is going under the floor. + // Maybe tell the particle to bounce: bp->bounce()? + kill_particle(current_index); + } else { bp->update(); - + } + // break out early if we're lucky ttl_updates_left--; }