use bevy::prelude::*;
pub trait ControlsHook: Send + Sync + 'static {
fn register(&self, app: &mut App);
}
pub trait AutopilotHook: Send + Sync + 'static {
fn register(&self, app: &mut App);
}
#[derive(Default, bevy::prelude::Resource)]
pub struct SimHooks {
pub controls: Option<Box<dyn ControlsHook>>,
pub autopilot: Option<Box<dyn AutopilotHook>>,
}
impl SimHooks {
pub fn apply(&self, app: &mut App) {
if let Some(h) = &self.controls {
h.register(app);
}
if let Some(h) = &self.autopilot {
h.register(app);
}
}
}