From 7ce9781f86c56f932dabc3bc84b8d21d7be8fecc Mon Sep 17 00:00:00 2001 From: Kai Stevenson Date: Tue, 11 Aug 2026 20:41:41 -0700 Subject: refactor sim loop --- src/ui.rs | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) (limited to 'src/ui.rs') diff --git a/src/ui.rs b/src/ui.rs index dbdfa69..e55aff1 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -1,10 +1,6 @@ -use egui::{Color32, Stroke, Ui, accesskit::ListStyle::Circle, epaint::CircleShape}; +use egui::{Color32, Stroke, Ui, epaint::CircleShape}; -use crate::{ - Config, Diagnostics, Input, - camera::Camera, - sim::materials::{MATERIALS, MaterialId}, -}; +use crate::{Config, Diagnostics, Input, camera::Camera, sim::materials::MaterialId}; pub fn draw_egui<'a>( ui: &mut Ui, @@ -16,7 +12,7 @@ pub fn draw_egui<'a>( ui.heading("Config"); ui.add(egui::Slider::new(&mut config.brush_radius, 1..=100).text("Brush radius")); - let material = MATERIALS[config.brush_material as usize]; + let material = config.brush_material.def(); // material combobox egui::ComboBox::from_label("Select a material") @@ -25,19 +21,21 @@ pub fn draw_egui<'a>( material.name, material.density, )) .icon(move |ui, rect, _, _| { - ui.painter().add(egui::Shape::Circle( - (CircleShape { - center: rect.center(), - radius: rect.width() / 2.5, - stroke: Stroke::NONE, - fill: Color32::from_rgb(material.r, material.g, material.b), - }), - )); + ui.painter().add(egui::Shape::Circle(CircleShape { + center: rect.center(), + radius: rect.width() / 2.5, + stroke: Stroke::NONE, + fill: Color32::from_rgb(material.color[0], material.color[1], material.color[2]), + })); }) .show_ui(ui, |ui| { - ui.selectable_value(&mut config.brush_material, MaterialId::Void, "Void"); - ui.selectable_value(&mut config.brush_material, MaterialId::Sand, "Sand"); - ui.selectable_value(&mut config.brush_material, MaterialId::Water, "Water"); + for material_id in MaterialId::ALL { + ui.selectable_value( + &mut config.brush_material, + material_id, + material_id.def().name, + ); + } }); ui.add(egui::Slider::new(&mut config.fps, 1..=1000).text("Max FPS")); -- cgit v1.3.1