use crate::body::Body;
use crate::gravity::Gravity;
#[derive(Debug)]
pub struct PhysicsWorld {
pub bodies: Vec<Box<dyn Body>>,
pub gravity: Gravity,
}
impl Default for PhysicsWorld {
fn default() -> Self {
Self::new()
}
}
impl PhysicsWorld {
pub fn new() -> Self {
Self {
bodies: Vec::new(),
gravity: Gravity::new(9.81)
}
}
pub fn add_body(&mut self, body: Box<dyn Body>) {
self.bodies.push(body);
}
pub fn step(&mut self, delta_time: f32) {
for body in self.bodies.iter_mut() {
body.update(delta_time, self.gravity.acceleration);
}
self.handle_collisions();
}
pub fn handle_collisions(&mut self) {
}
}