39 lines
860 B
Rust
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),
|
|
}
|
|
}
|
|
}
|