//! Sets up the game's camera controls etc. //! Uses [bevy_third_person_camera](https://lib.rs/crates/bevy_third_person_camera) use bevy::prelude::*; use bevy_third_person_camera::*; use crate::AppState; use super::GameplaySet; pub fn plugin(app: &mut App) { app.add_plugins(ThirdPersonCameraPlugin) .add_systems( OnEnter(AppState::Ingame), setup_game_camera.in_set(GameplaySet), ) .add_systems(OnExit(AppState::Ingame), remove_tpc.in_set(GameplaySet)); } /// Adds [ThirdPersonCamera] to our existing camera. pub fn setup_game_camera(mut c: Commands, cam: Single>) { c.entity(*cam).insert(ThirdPersonCamera::default()); info!("Third person camera set up!") } /// Removes [ThirdPersonCamera] from the camera. pub fn remove_tpc(mut c: Commands, cam: Single, With)>) { c.entity(*cam).remove::(); }