sim_core/
runtime.rs

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