1use bevy::prelude::*;
2
3pub trait ControlsHook: Send + Sync + 'static {
5 fn register(&self, app: &mut App);
6}
7
8pub trait AutopilotHook: Send + Sync + 'static {
10 fn register(&self, app: &mut App);
11}
12
13#[derive(Default, bevy::prelude::Resource)]
15pub struct SimHooks {
16 pub controls: Option<Box<dyn ControlsHook>>,
17 pub autopilot: Option<Box<dyn AutopilotHook>>,
18}
19
20impl SimHooks {
21 pub fn apply(&self, app: &mut App) {
22 if let Some(h) = &self.controls {
23 h.register(app);
24 }
25 if let Some(h) = &self.autopilot {
26 h.register(app);
27 }
28 }
29}