Skip to content

Commit 9e4123b

Browse files
committed
improve dynamically hiding
1 parent ddd4a21 commit 9e4123b

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

src/orbit_lines.rs

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use bevy::{prelude::{App, Entity, Gizmos, in_state, IntoSystemConfigs, Plugin, PreUpdate, Query, Res, Resource, Transform, Vec3, With, Without, Camera}, time::Time};
22

3-
use crate::{body::{BodyChildren, Moon, OrbitSettings, Planet, SimPosition, Star, Diameter, BillboardVisible}, constants::M_TO_UNIT, physics::{apply_physics, Pause, SubSteps}, SimState, speed::Speed, selection::SelectedEntity, ui::UiState};
3+
use crate::{body::{BodyChildren, Moon, OrbitSettings, Planet, SimPosition, Star, Diameter, BillboardVisible}, constants::M_TO_UNIT, physics::{apply_physics, Pause, SubSteps}, SimState, speed::Speed, selection::SelectedEntity, ui::UiState, camera::PanOrbitCamera};
44

55
pub struct OrbitLinePlugin;
66

@@ -32,12 +32,13 @@ impl Default for OrbitOffset {
3232
}
3333

3434
const MULTIPLIER: f32 = 0.0001;
35-
const HIDE_MULTIPLIER: f32 = 10000.0;
35+
const PLANET_HIDE_MULTIPLIER: f32 = 10000.0;
36+
const HIDE_MULTIPLIER: f32 = 100.0;
3637

3738
fn update_lines(
38-
mut planet_query: Query<(Entity, &mut OrbitSettings, &SimPosition, &BodyChildren, &Transform, &Diameter, &BillboardVisible), (With<Planet>, Without<Moon>, Without<Star>)>,
39-
mut moon_query: Query<(Entity, &SimPosition, &mut OrbitSettings, &Transform, &Diameter, &BillboardVisible), (With<Moon>, Without<Planet>, Without<Star>)>,
40-
camera: Query<&Transform, With<Camera>>,
39+
mut planet_query: Query<(Entity, &mut OrbitSettings, &SimPosition, &BodyChildren, &Diameter, &BillboardVisible), (With<Planet>, Without<Moon>, Without<Star>)>,
40+
mut moon_query: Query<(Entity, &SimPosition, &mut OrbitSettings, &Diameter, &BillboardVisible), (With<Moon>, Without<Planet>, Without<Star>)>,
41+
camera: Query<&PanOrbitCamera, With<Camera>>,
4142
time: Res<Time>,
4243
speed: Res<Speed>,
4344
substeps: Res<SubSteps>,
@@ -49,10 +50,9 @@ fn update_lines(
4950
return;
5051
}
5152
let cam = camera.single();
52-
for (entity, mut orbit, pos, _, transform, diameter, billboard_visible) in &mut planet_query {
53+
for (entity, mut orbit, pos, _, diameter, billboard_visible) in &mut planet_query {
5354
if orbit.draw_lines {
54-
let distance_to_cam = transform.translation.distance(cam.translation);
55-
orbit.hide_lines = (distance_to_cam < diameter.num * HIDE_MULTIPLIER && entity == selected_entity.entity.unwrap() || !billboard_visible.0) && ui_state.dyn_hide_orbit_lines;
55+
orbit.hide_lines = (cam.radius < diameter.num * PLANET_HIDE_MULTIPLIER && entity == selected_entity.entity.unwrap() || !billboard_visible.0) && ui_state.dyn_hide_orbit_lines;
5656
let speed = speed.0 as f32 * (substeps.0 as f32);
5757
let max_step = (orbit.period as f32 / speed) * MULTIPLIER;
5858
if orbit.step >= max_step {
@@ -64,13 +64,12 @@ fn update_lines(
6464
}
6565
}
6666
}
67-
for (entity, pos, mut orbit, transform, diameter, billboard_visible) in &mut moon_query {
67+
for (entity, pos, mut orbit, diameter, billboard_visible) in &mut moon_query {
6868
if orbit.draw_lines {
69-
if let Some((_, _, p_pos, _, _, _, _)) = planet_query.iter().find(|(_, _, _, children, _, _, _)| {
69+
if let Some((_, _, p_pos, _, _, _)) = planet_query.iter().find(|(_, _, _, children, _, _)| {
7070
children.0.contains(&entity)
7171
}) {
72-
let distance_to_cam = transform.translation.distance(cam.translation);
73-
orbit.hide_lines = (distance_to_cam < diameter.num * HIDE_MULTIPLIER && entity == selected_entity.entity.unwrap() || !billboard_visible.0) && ui_state.dyn_hide_orbit_lines;
72+
orbit.hide_lines = (cam.radius < diameter.num * HIDE_MULTIPLIER && entity == selected_entity.entity.unwrap() || !billboard_visible.0) && ui_state.dyn_hide_orbit_lines;
7473
let speed = speed.0 as f32 * (substeps.0 as f32);
7574
let max_step = (orbit.period as f32 / speed) * MULTIPLIER;
7675
if orbit.step >= max_step {

0 commit comments

Comments
 (0)