use bevy::prelude::*; use crate::nature; pub struct ActorPlugin; impl Plugin for ActorPlugin { fn build(&self, app: &mut App) { app.add_systems(FixedUpdate, update); } } #[derive(Component)] pub struct Actor { pub hp: f32, pub m: f32, // mass pub v: Vec3, // velocity // TODO: rotation } impl Default for Actor { fn default() -> Self { Self { hp: 100.0, m: 100.0, v: Vec3::ZERO, } } } #[derive(Component)] pub struct LifeForm { pub adrenaline: f32, pub adrenaline_baseline: f32, pub adrenaline_jolt: f32, } impl Default for LifeForm { fn default() -> Self { Self { adrenaline: 0.3, adrenaline_baseline: 0.3, adrenaline_jolt: 0.0, }}} #[derive(Component)] pub struct Suit { pub oxygen: f32, pub power: f32, pub oxygen_max: f32, pub power_max: f32, } impl Default for Suit { fn default() -> Self { SUIT_SIMPLE } } const SUIT_SIMPLE: Suit = Suit { power: 1e5, power_max: 1e5, oxygen: nature::OXY_D, oxygen_max: nature::OXY_D, }; pub fn update( time: Res