use crate::particle_system::{Particle, ParticleSystem}; pub mod gravity; pub mod drag; pub mod spring; pub trait Force { fn apply(&self, particles: &mut Vec); } impl ParticleSystem { fn reset_forces(&mut self) { for particle in &mut self.particles { particle.reset_force(); } } pub fn apply_forces(&mut self) { self.reset_forces(); for force in &self.forces { force.apply(&mut self.particles) } } }