~starkingdoms/starkingdoms

ref: 8d0982f2463479ae31f1098fe71e0510220b4c2f starkingdoms/crates/unified/src/client/rendering/mod.rs -rw-r--r-- 1.4 KiB
8d0982f2ghostly_zsh fix: orbit indicator is a line 16 days ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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, MAIN_STAR_LAYERS, MainCamera, Me, StarguideCamera};
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);
    for (_, config, _) in config_store.iter_mut() {
        config.render_layers = MAIN_STAR_LAYERS.clone();
    }
}

fn follow_camera(
    mut camera: Query<&mut Transform, (With<MainCamera>, Without<Me>)>,
    mut starguide_camera: Query<&mut Transform, (With<StarguideCamera>, Without<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;
}