feat(ui): add Accretion Disk card with color-mode/temp interaction
Temperature disabled (not hidden) when color mode = Gradient, so the user sees their value. Log-scale slider for the 1000-50000K range.
This commit is contained in:
parent
34fa609a7d
commit
2e2a2a1baf
@ -6,7 +6,7 @@ use bevy_egui::egui;
|
||||
|
||||
use crate::camera::OrbitCamera;
|
||||
use crate::params::{
|
||||
AaQuality, BlackHoleParams, BloomQuality,
|
||||
AaQuality, BlackHoleParams, BloomQuality, DiskColorMode,
|
||||
};
|
||||
use crate::ui::style::MUTED_TEXT;
|
||||
|
||||
@ -117,3 +117,41 @@ pub fn section_quality(ui: &mut egui::Ui, params: &mut BlackHoleParams) {
|
||||
.small().color(MUTED_TEXT),
|
||||
);
|
||||
}
|
||||
|
||||
pub fn section_disk(ui: &mut egui::Ui, params: &mut BlackHoleParams) {
|
||||
egui::Grid::new("disk_grid").num_columns(2).spacing([8.0, 4.0])
|
||||
.show(ui, |ui| {
|
||||
row(ui, "Outer radius", |ui| ui.add_sized([140.0, 16.0],
|
||||
egui::Slider::new(&mut params.disk_outer, 6.0..=50.0)
|
||||
.suffix(" r_g").fixed_decimals(1)));
|
||||
row(ui, "Tilt", |ui| ui.add_sized([140.0, 16.0],
|
||||
egui::Slider::new(&mut params.disk_tilt, 0.0..=PI)
|
||||
.suffix(" rad").fixed_decimals(2)));
|
||||
row(ui, "Brightness", |ui| ui.add_sized([140.0, 16.0],
|
||||
egui::Slider::new(&mut params.disk_brightness, 0.0..=3.0).fixed_decimals(2)));
|
||||
row(ui, "Rotation", |ui| ui.add_sized([140.0, 16.0],
|
||||
egui::Slider::new(&mut params.disk_rotation_speed, 0.0..=3.0).fixed_decimals(2)));
|
||||
// Color model combobox.
|
||||
let mut cm = params.disk_color_mode;
|
||||
ui.label("Color model");
|
||||
egui::ComboBox::from_id_salt("disk_color_combo")
|
||||
.selected_text(format!("{:?}", cm))
|
||||
.show_ui(ui, |ui| {
|
||||
ui.selectable_value(&mut cm, DiskColorMode::Gradient, "Gradient");
|
||||
ui.selectable_value(&mut cm, DiskColorMode::Blackbody, "Blackbody");
|
||||
});
|
||||
ui.end_row();
|
||||
params.disk_color_mode = cm;
|
||||
});
|
||||
// Temperature only meaningful in Blackbody mode — disable (not hide) so
|
||||
// the user sees their value while briefly in Gradient.
|
||||
let blackbody = params.disk_color_mode == DiskColorMode::Blackbody;
|
||||
ui.add_enabled(
|
||||
blackbody,
|
||||
egui::Slider::new(&mut params.disk_temp, 1000.0..=50000.0)
|
||||
.suffix(" K")
|
||||
.logarithmic(true)
|
||||
.fixed_decimals(0)
|
||||
.text("Temperature"),
|
||||
);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user