use rand::Rng; use rapier2d::{dynamics::RigidBodyHandle, geometry::ColliderHandle}; use galactica_gameobject as object; /// A single projectile in the world #[derive(Debug)] pub struct ProjectileWorldObject { /// This projectile's game data pub projectile: object::Projectile, /// This projectile's rigidbody pub rigid_body: RigidBodyHandle, /// This projectile's collider pub collider: ColliderHandle, /// This projectile's size variation pub size_rng: f32, } impl ProjectileWorldObject { /// Make a new projectile pub fn new( projectile: object::Projectile, rigid_body: RigidBodyHandle, collider: ColliderHandle, ) -> Self { let mut rng = rand::thread_rng(); let size_rng = projectile.content.size_rng; ProjectileWorldObject { rigid_body, collider, projectile, size_rng: rng.gen_range(-size_rng..=size_rng), } } }