From a2850ebac0aef4aaeda111ccf4ae8ea1b35eb5b3 Mon Sep 17 00:00:00 2001 From: ghostly_zsh Date: Fri, 11 Jul 2025 16:24:30 -0500 Subject: [PATCH] feat: turn off starfield when zoomed out significantly --- crates/unified/src/client/starfield.rs | 16 +++++----------- crates/unified/src/client/zoom.rs | 21 +++++++++++++++------ 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/crates/unified/src/client/starfield.rs b/crates/unified/src/client/starfield.rs index 157e2c564d58e40fc7dfae1dc4050742d5221bef..00fd6b75a845399a793b8de45d1b5a413035b104 100644 --- a/crates/unified/src/client/starfield.rs +++ b/crates/unified/src/client/starfield.rs @@ -1,20 +1,11 @@ use bevy::{ - app::{App, Startup, Update}, - asset::{AssetEvent, AssetServer, Assets}, - ecs::{ + app::{App, Startup, Update}, asset::{AssetEvent, AssetServer, Assets}, ecs::{ //entity::Entity, //entity_disabling::Disabled, event::EventReader, query::{With, Without}, system::{Commands, Query, Res, Single}, - }, - image::Image, - log::warn, - math::{Vec2, Vec3}, - //render::view::visibility::Visibility, - sprite::{Sprite, SpriteImageMode}, - transform::components::Transform, - window::{Window, WindowResized}, + }, image::Image, log::warn, math::{Vec2, Vec3}, render::view::Visibility, sprite::{Sprite, SpriteImageMode}, transform::components::Transform, window::{Window, WindowResized} }; use crate::{ @@ -54,6 +45,7 @@ pub fn set_up_starfield( ..Default::default() }) .insert(Transform::from_xyz(0.0, 0.0, 5.0)) + .insert(Visibility::Inherited) .insert(StarfieldBack); commands .spawn(Sprite { @@ -67,6 +59,7 @@ pub fn set_up_starfield( ..Default::default() }) .insert(Transform::from_xyz(0.0, 0.0, 4.5)) + .insert(Visibility::Inherited) .insert(StarfieldMid); commands .spawn(Sprite { @@ -82,6 +75,7 @@ pub fn set_up_starfield( ..Default::default() }) .insert(Transform::from_xyz(0.0, 0.0, 4.0)) + .insert(Visibility::Inherited) .insert(StarfieldFront); } diff --git a/crates/unified/src/client/zoom.rs b/crates/unified/src/client/zoom.rs index b14021f37eb620e6060c8fc3f4449b4dd4a9b4cd..c703064b62d4b7d9a22e92d51afa43b0653d0c6c 100644 --- a/crates/unified/src/client/zoom.rs +++ b/crates/unified/src/client/zoom.rs @@ -19,7 +19,7 @@ fn on_scroll( mut scroll_events: EventReader, window: Single<&Window>, starfield_back: Single< - (&mut Sprite, &mut Transform), + (&mut Sprite, &mut Transform, &mut Visibility), ( With, Without, @@ -27,7 +27,7 @@ fn on_scroll( ), >, starfield_mid: Single< - (&mut Sprite, &mut Transform), + (&mut Sprite, &mut Transform, &mut Visibility), ( With, Without, @@ -35,7 +35,7 @@ fn on_scroll( ), >, starfield_front: Single< - (&mut Sprite, &mut Transform), + (&mut Sprite, &mut Transform, &mut Visibility), ( With, Without, @@ -63,9 +63,9 @@ fn on_scroll( ), >, ) { - let (mut starfield_back, mut starfield_back_pos) = starfield_back.into_inner(); - let (mut starfield_mid, mut starfield_mid_pos) = starfield_mid.into_inner(); - let (mut starfield_front, mut starfield_front_pos) = starfield_front.into_inner(); + let (mut starfield_back, mut starfield_back_pos, mut visibility_back) = starfield_back.into_inner(); + let (mut starfield_mid, mut starfield_mid_pos, mut visibility_mid) = starfield_mid.into_inner(); + let (mut starfield_front, mut starfield_front_pos, mut visibility_front) = starfield_front.into_inner(); for event in scroll_events.read() { match event.unit { MouseScrollUnit::Line | MouseScrollUnit::Pixel => { @@ -74,6 +74,15 @@ fn on_scroll( } else { camera.scale *= 1.03; } + if camera.scale.z > 50.0 { + *visibility_back = Visibility::Hidden; + *visibility_mid = Visibility::Hidden; + *visibility_front = Visibility::Hidden; + } else { + *visibility_back = Visibility::Inherited; + *visibility_mid = Visibility::Inherited; + *visibility_front = Visibility::Inherited; + } starfield_back.custom_size = Some(window.size() * camera.scale.z + Vec2::splat(BACK_STARFIELD_SIZE * 2.0)); starfield_mid.custom_size =