1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use bevy_app::{App, Plugin as PluginType};
use bevy_ecs::schedule::{IntoSystemConfig, IntoSystemSetConfig};

use crate::{
    change_detection::{on_despawn, HostSyncEvent},
    system_set::HostSyncChangeTracking,
    BeforeReceiveEvents, ReceiveEvents,
};

pub struct SharedPlugin;

impl PluginType for SharedPlugin {
    fn build(&self, app: &mut App) {
        app
            // EVENTS //
            .add_event::<HostSyncEvent>()
            // SYSTEM SETS //
            .configure_set(HostSyncChangeTracking.before(BeforeReceiveEvents))
            .configure_set(BeforeReceiveEvents.before(ReceiveEvents))
            // SYSTEMS //
            .add_system(on_despawn.in_set(HostSyncChangeTracking));
    }
}