~starkingdoms/starkingdoms

ref: 6516d7c756f9f5aaeaaae2e871a7e53c65174cc3 starkingdoms/crates/unified/src/client/rendering/mod.rs -rw-r--r-- 1.4 KiB
6516d7c7ghostly_zsh fix: orbit indicator is continuous 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, STARGUIDE_LAYER, StarguideCamera, 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>)>,
    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;
}