Galactica/crates/world/src/objects/projectile.rs

39 lines
860 B
Rust

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),
}
}
}