From 80824a8b69b70e6e40577e4f0236c28c4ad5c15b Mon Sep 17 00:00:00 2001 From: Kai Stevenson Date: Sun, 23 Aug 2026 02:48:43 -0700 Subject: explosions affect rigidbodies, use "world" for rapier --- src/sim/particle_manager/mod.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/sim/particle_manager/mod.rs') 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() { -- cgit v1.3.1