io/
plugin.rs

1//! Contains the [`IOPlugin`] that registers the required systems and data in the bevy `App`.
2use crate::load_project::handle_load_project_event;
3use crate::save_project::{SaveProjectCompleteEvent, handle_save_project};
4use crate::{LoadProjectEvent, SaveProjectEvent};
5use bevy::prelude::{App, FixedPostUpdate, Plugin};
6
7/// Sets up listening for events to persist or load data from the disk.
8pub struct IOPlugin;
9
10impl Plugin for IOPlugin {
11    fn build(&self, app: &mut App) {
12        app.add_event::<SaveProjectEvent>()
13            .add_event::<SaveProjectCompleteEvent>()
14            .add_systems(FixedPostUpdate, handle_save_project);
15
16        app.add_event::<LoadProjectEvent>()
17            .add_systems(FixedPostUpdate, handle_load_project_event);
18    }
19}