sim_core/
runtime.rs

1use bevy::prelude::*;
2
3use crate::autopilot_types::{AutoDrive, DataRun, DatagenInit};
4use crate::recorder_types::{AutoRecordTimer, RecorderConfig, RecorderMotion, RecorderState};
5use crate::ModeSet;
6
7/// Registers common runtime resources and ensures mode sets exist.
8pub struct SimRuntimePlugin;
9
10impl Plugin for SimRuntimePlugin {
11    fn build(&self, app: &mut App) {
12        app.configure_sets(
13            Update,
14            (ModeSet::Common, ModeSet::SimDatagen, ModeSet::Inference),
15        )
16        .insert_resource(AutoDrive::default())
17        .insert_resource(DataRun::default())
18        .insert_resource(DatagenInit::default())
19        .insert_resource(RecorderConfig::default())
20        .insert_resource(RecorderState::default())
21        .insert_resource(RecorderMotion::default())
22        .insert_resource(AutoRecordTimer::default());
23    }
24}
25
26/// Convenience to register runtime defaults without adding the plugin type directly.
27pub fn register_runtime_systems(app: &mut App) {
28    SimRuntimePlugin.build(app);
29}