~starkingdoms/starkingdoms

f5b36bb07dfc827a4435fd116c1438f7776c1fa0 — ghostly_zsh 17 days ago 1d680e3
fix: orbit predictor is scaled and positioned constantly on hte screen
M crates/unified/src/client/starguide/init.rs => crates/unified/src/client/starguide/init.rs +4 -4
@@ 47,12 47,13 @@ pub fn init_starguide(
            height: window.height() as u32,
            depth_or_array_layers: 1,
        }, TextureDimension::D2,
        &(Color::WHITE.to_srgba().to_u8_array()),
        &(Color::BLACK.to_srgba().to_u8_array()),
        TextureFormat::Rgba8UnormSrgb,
        RenderAssetUsages::MAIN_WORLD | RenderAssetUsages::RENDER_WORLD,
    );
    let handle = images.add(image);
    commands.spawn((Sprite::from_image(handle.clone()), STARGUIDE_LAYER, StarguideOrbit));
    commands.spawn((Sprite::from_image(handle.clone()), STARGUIDE_LAYER, StarguideOrbit))
        .insert(Transform::from_xyz(0.0, 0.0, -10.0));
    commands.insert_resource(StarguideOrbitImage(handle));
}



@@ 72,10 73,9 @@ pub fn player_init(

fn player_position_update(
    me: Single<&Transform, (Changed<Transform>, With<Me>)>,
    mut orbit: Single<&mut Transform, (With<StarguideOrbit>, Without<Me>)>,
    //mut orbit: Single<&mut Transform, (With<StarguideOrbit>, Without<Me>)>,
    mut starguide_me: Single<&mut Transform, (With<StarguideMe>, Without<StarguideOrbit>, Without<Me>)>,
) {
    orbit.translation = me.translation;
    starguide_me.translation = me.translation;
    starguide_me.rotation = me.rotation;
}

M crates/unified/src/client/starguide/input.rs => crates/unified/src/client/starguide/input.rs +4 -2
@@ 1,6 1,6 @@
use crate::prelude::*;
use crate::client::input::CursorWorldCoordinates;
use crate::ecs::StarguideCamera;
use crate::ecs::{StarguideCamera, StarguideOrbit};

pub fn starguide_input_plugin(app: &mut App) {
    app


@@ 34,11 34,13 @@ fn on_click(

fn starguide_drag(
    drag: ResMut<StarguideDrag>,
    mut camera: Single<&mut Transform, (With<StarguideCamera>)>,
    mut camera: Single<&mut Transform, With<StarguideCamera>>,
    mut orbit: Single<&mut Transform, (With<StarguideOrbit>, Without<StarguideCamera>)>,
    cursor: Res<CursorWorldCoordinates>,
) {
    if !drag.is_dragging { return }
    let Some(cursor) = cursor.0 else { return };

    camera.translation = drag.init_camera_pos.extend(0.0) - (cursor - drag.init_cursor_pos).extend(0.0);
    orbit.translation = drag.init_camera_pos.extend(0.0) - (cursor - drag.init_cursor_pos).extend(0.0);
}

M crates/unified/src/client/starguide/orbit.rs => crates/unified/src/client/starguide/orbit.rs +2 -1
@@ 11,12 11,13 @@ pub fn starguide_orbit_plugin(app: &mut App) {
fn update_orbits(
    orbit_image: Res<StarguideOrbitImage>,
    mut images: ResMut<Assets<Image>>,
    camera: Single<&Camera, With<StarguideCamera>>,
) {
    let Some(image) = images.get_mut(&orbit_image.0) else {
        error!("Orbit prediction image not found");
        return
    };
    image.clear(&(Color::WHITE.to_srgba().to_u8_array()));
    image.clear(&(Color::BLACK.to_srgba().to_u8_array()));

    for i in 0..100 {
        image.set_color_at(i, 100, Color::linear_rgb(1.0, 0.0, 0.0)).unwrap();

M crates/unified/src/client/zoom.rs => crates/unified/src/client/zoom.rs +1 -0
@@ 125,6 125,7 @@ fn on_scroll(
                    orbit_camera.is_active = true;

                    starguide_camera.2.translation = player.translation;
                    starguide_orbit.translation = player.translation;
                    gameplay_next_state.set(GameplayState::Starguide);

                    starfield_back.image_mode = SpriteImageMode::Auto;