mgd2-tram-championships/src/game/camera.rs

29 lines
949 B
Rust
Raw Normal View History

//! 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<Entity, With<Camera3d>>) {
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<Entity, (With<Camera3d>, With<ThirdPersonCamera>)>) {
c.entity(*cam).remove::<ThirdPersonCamera>();
}