use rapier2d_f64::prelude::{RigidBodyHandle, ColliderHandle, RigidBodySet, ColliderBuilder, RigidBodyBuilder, ColliderSet};
use crate::SCALE;
pub struct Planet {
pub body_handle: RigidBodyHandle,
pub position: (f64, f64),
pub radius: f64,
pub mass: f64
}
pub struct Planets {
pub planets: Vec<Planet>,
}
impl Planets {
pub fn make_planet(planets: &mut Vec<Planet>, mass: f64, radius: f64, position: (f64, f64), rigid_body_set: &mut RigidBodySet, collider_set: &mut ColliderSet) {
let collider = ColliderBuilder::ball(1000.0 / SCALE)
.build();
let body = RigidBodyBuilder::fixed()
.additional_mass(0.0);
let body_handle = rigid_body_set.insert(body);
collider_set.insert_with_parent(collider, body_handle, rigid_body_set);
planets.push(Planet {
body_handle,
position,
radius,
mass,
});
}
pub fn new(rigid_body_set: &mut RigidBodySet, collider_set: &mut ColliderSet) -> Planets {
let mut planets = Vec::new();
let earth = Planets::make_planet(
&mut planets,
2000.0,
1000.0,
(0.0, 0.0),
rigid_body_set,
collider_set,
);
Planets { planets }
}
}