diff options
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/bodies_window.rs | 41 | ||||
| -rw-r--r-- | src/ui/camera_info.rs | 58 |
2 files changed, 34 insertions, 65 deletions
diff --git a/src/ui/bodies_window.rs b/src/ui/bodies_window.rs index 6300f5f..ece605b 100644 --- a/src/ui/bodies_window.rs +++ b/src/ui/bodies_window.rs @@ -4,6 +4,7 @@ use crate::eguictx::EguiCtx; use crate::ntree::{NTree, NTreeNode}; use crate::solar_system::body::{BodyId, OrbitalBody}; use crate::solar_system::{SolarSystem, SystemId}; +use crate::timeman::TimeMan; #[derive(Default, Clone)] @@ -159,13 +160,39 @@ impl BodiesWindowState }; ui.separator(); - egui::Frame::canvas(ui.style()) - .show(ui, |ui| { - ui.set_width(200.0); - ui.vertical_centered(|ui| { - ui.label( - egui::RichText::new(selected_body.name()) - .heading()); + ui.vertical(|ui| { + egui::Frame::canvas(ui.style()) + .show(ui, |ui| { + ui.set_width(200.0); + ui.vertical_centered(|ui| { + ui.label( + egui::RichText::new(selected_body.name()) + .heading()); + ui.separator(); + }); + + ui.vertical(|ui| { + ui.vertical_centered(|ui| { + ui.label("Physical Properties"); + }); + ui.label(format!("Mass: {:.4E} kg", selected_body.mass())); + ui.label(format!("Radius: {} km", selected_body.radius())); + + if let Some(orbit) = selected_body.get_orbit() { + ui.vertical_centered(|ui| { + ui.label("Orbital Properties"); + }); + ui.label(format!("Orbiting {}", + star_system.body(orbit.parent()).name() + )); + ui.label(format!("Period: {}", + TimeMan::format_duration(orbit.period(selected_body)) + )); + ui.label(format!("Semi-major Axis: {:.4E} km", + orbit.sma() + )); + } + }); }); ui.horizontal(|ui| { diff --git a/src/ui/camera_info.rs b/src/ui/camera_info.rs deleted file mode 100644 index 5332370..0000000 --- a/src/ui/camera_info.rs +++ /dev/null @@ -1,58 +0,0 @@ -use std::cell::RefCell; - -use crate::{GameState, eguictx::EguiCtx, solar_system, ui}; - - -#[derive(Default, Clone)] -pub struct CameraWindowState -{ - pub camera_scale: f32, - pub camera_pos: Option<cgmath::Vector3<f64>>, - pub camera_rot: Option<cgmath::Vector2<cgmath::Rad<f32>>>, - pub target: Option<solar_system::body::BodyId>, -} - -impl CameraWindowState -{ - pub fn render( - ui_state: &mut ui::State, - game_state: &GameState, - eguictx: &EguiCtx) - { - let topbar_state = &ui_state.topbar_sate; - if topbar_state.current_system.is_none() { - return; - } - - let camera_state = &mut ui_state.camera_info; - - let current_system = &game_state.solar_systems()[topbar_state.current_system.unwrap()]; - - egui::Window::new("Debug Camera Info") - .title_bar(false) - .show(eguictx.context(), |ui| { - ui.vertical(|ui| { - let selected_body_label = match camera_state.target { - Some(id) => current_system.bodies()[id].name(), - None => "" - }; - - ui.separator(); - - egui::ComboBox::from_label("Camera Target") - .selected_text(selected_body_label) - .show_ui(ui, |ui| { - - for (i, body) in current_system.bodies().iter().enumerate() { - ui.selectable_value( - &mut camera_state.target, - Some(i), - body.name()); - } - }); - - ui.label(format!("Scale: {}", camera_state.camera_scale)); - }); - }); - } -} |
