diff --git a/src/main.rs b/src/main.rs index 7361782..6f6dc79 100644 --- a/src/main.rs +++ b/src/main.rs @@ -269,7 +269,7 @@ impl GameState for State { } } RunState::Ticking => { - while new_runstate == RunState::Ticking { + while new_runstate == RunState::Ticking && particle_system::check_queue(&self.ecs) { self.run_systems(); self.ecs.maintain(); try_spawn_interval(&mut self.ecs); diff --git a/src/particle_system.rs b/src/particle_system.rs index 3242988..912a4ae 100644 --- a/src/particle_system.rs +++ b/src/particle_system.rs @@ -31,6 +31,14 @@ fn cull_dead_particles(ecs: &mut World, ctx: &Rltk) { } } +pub fn check_queue(ecs: &World) -> bool { + let particle_builder = ecs.read_resource::(); + if particle_builder.delayed_requests.is_empty() && particle_builder.requests.is_empty() { + return true; + } + return false; +} + fn create_delayed_particles(ecs: &mut World, ctx: &Rltk) { let mut particle_builder = ecs.write_resource::(); let mut handled_particles: Vec = Vec::new();