Skip to main content

cloudiful_bevy_camera/
plugin.rs

1use crate::events::{CameraSwitched, SwitchCameraRequest};
2use crate::systems::apply_switch_camera_requests;
3use bevy::prelude::*;
4
5#[derive(SystemSet, Debug, Clone, Copy, PartialEq, Eq, Hash)]
6pub(crate) enum CameraSwitchSystemSet {
7    EmitRequests,
8    ApplyRequests,
9}
10
11pub struct CameraSwitchPlugin;
12
13impl Plugin for CameraSwitchPlugin {
14    fn build(&self, app: &mut App) {
15        app.add_message::<SwitchCameraRequest>()
16            .add_message::<CameraSwitched>()
17            .configure_sets(
18                Update,
19                (
20                    CameraSwitchSystemSet::EmitRequests,
21                    CameraSwitchSystemSet::ApplyRequests.after(CameraSwitchSystemSet::EmitRequests),
22                ),
23            )
24            .add_systems(
25                Update,
26                apply_switch_camera_requests.in_set(CameraSwitchSystemSet::ApplyRequests),
27            );
28    }
29}