summaryrefslogtreecommitdiff
path: root/src/sim/particle_manager/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/sim/particle_manager/mod.rs')
-rw-r--r--src/sim/particle_manager/mod.rs10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/sim/particle_manager/mod.rs b/src/sim/particle_manager/mod.rs
index 052369b..559bf2c 100644
--- a/src/sim/particle_manager/mod.rs
+++ b/src/sim/particle_manager/mod.rs
@@ -2,7 +2,7 @@ use crate::{
config::CELLS_TO_METRES,
content::materials::MaterialForm,
sim::{
- cell::cell::Cell, cell_manager::manager::CellManager, lib::ray::AwDda,
+ cell::Cell, cell_manager::manager::CellManager, lib::ray::AwDda,
particle_manager::particle::Particle,
},
};
@@ -23,6 +23,7 @@ impl ParticleManager {
let p = &mut self.particles[i];
p.life -= delta_time;
+ p.collision_grace -= delta_time;
if p.life <= 0.0 {
self.particles.swap_remove(i);
continue 'outer;
@@ -31,6 +32,13 @@ impl ParticleManager {
p.velocity.y += PARTICLE_GRAVITY * delta_time;
let dt_velocity = p.velocity * delta_time;
+ if p.collision_grace > 0.0 {
+ p.position += dt_velocity;
+ i += 1;
+ continue 'outer;
+ }
+
+ // compute collisions
let mut dda = AwDda::new(p.position, p.position + dt_velocity);
if let Some(mut prev) = dda.next() {