use bevy::anti_alias::fxaa::Fxaa;
use bevy::app::{App, Startup};
use bevy::core_pipeline::tonemapping::DebandDither;
use bevy::post_process::bloom::Bloom;
use crate::ecs::{GameplayState, MAIN_LAYER, MainCamera, Me, STARGUIDE_LAYER, StarguideGizmos};
use crate::prelude::*;
pub fn render_plugin(app: &mut App) {
app
.add_systems(Startup, setup_graphics)
.add_systems(Update, follow_camera.run_if(in_state(GameplayState::Main)));
}
pub fn setup_graphics(mut config_store: ResMut<GizmoConfigStore>, mut commands: Commands) {
commands
.spawn(Camera2d)
.insert(Camera {
clear_color: ClearColorConfig::Custom(Color::BLACK),
..default()
})
.insert(MAIN_LAYER)
.insert(Bloom::default())
.insert(DebandDither::Enabled)
.insert(Fxaa::default())
.insert(MainCamera);
let (gizmo_config, _) = config_store.config_mut::<StarguideGizmos>();
gizmo_config.render_layers = STARGUIDE_LAYER;
gizmo_config.depth_bias = 1.0;
}
fn follow_camera(
mut camera: Query<&mut Transform, (With<MainCamera>, Without<Me>)>,
player: Query<&Transform, With<Me>>,
) {
let mut camera = camera.single_mut().unwrap();
let Ok(player) = player.single() else {
return;
};
camera.translation = player.translation;
}