cloudiful-bevy-camera 0.2.1

Reusable camera switching core for Bevy.
Documentation
use crate::events::{CameraSwitched, SwitchCameraRequest};
use crate::systems::apply_switch_camera_requests;
use bevy::prelude::*;

#[derive(SystemSet, Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub(crate) enum CameraSwitchSystemSet {
    EmitRequests,
    ApplyRequests,
}

pub struct CameraSwitchPlugin;

impl Plugin for CameraSwitchPlugin {
    fn build(&self, app: &mut App) {
        app.add_message::<SwitchCameraRequest>()
            .add_message::<CameraSwitched>()
            .configure_sets(
                Update,
                (
                    CameraSwitchSystemSet::EmitRequests,
                    CameraSwitchSystemSet::ApplyRequests.after(CameraSwitchSystemSet::EmitRequests),
                ),
            )
            .add_systems(
                Update,
                apply_switch_camera_requests.in_set(CameraSwitchSystemSet::ApplyRequests),
            );
    }
}