summaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/bodies_window.rs41
-rw-r--r--src/ui/camera_info.rs58
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));
- });
- });
- }
-}