use rapier2d_f64::prelude::{RigidBodyHandle, 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, } impl Planets { pub fn make_planet(planets: &mut Vec, 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 } } }