summaryrefslogtreecommitdiff
path: root/src/renderer/ui.rs
diff options
context:
space:
mode:
authorKai Stevenson <kai@kaistevenson.com>2026-08-29 21:26:41 -0700
committerKai Stevenson <kai@kaistevenson.com>2026-08-29 21:26:41 -0700
commita57cb58602b323469861c0b06573c6e47db56f34 (patch)
treeef00d97d1843f35472473a0ed8a3dedbfa9b43b9 /src/renderer/ui.rs
parente0feb1dc1821f3e1e3d6b9697cd4560b377988b8 (diff)
generating wood caves
Diffstat (limited to 'src/renderer/ui.rs')
-rw-r--r--src/renderer/ui.rs23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/renderer/ui.rs b/src/renderer/ui.rs
index 02ebb48..9af0113 100644
--- a/src/renderer/ui.rs
+++ b/src/renderer/ui.rs
@@ -1,10 +1,12 @@
use egui::{Color32, Stroke, Ui, epaint::CircleShape};
+use glam::IVec2;
use rapier2d::pipeline::QueryFilter;
use crate::{
Camera, Config, Diagnostics,
content::materials::MaterialId,
input::InputManager,
+ proc_gen::WorldGenerator,
sim::{rb_manager::DebugRenderMode, sim_manager::SimManager},
};
@@ -23,7 +25,8 @@ pub fn draw_egui<'a>(
camera: &mut Camera,
diagnostics: &Diagnostics,
input_manager: &InputManager,
- sim: &SimManager,
+ sim: &mut SimManager,
+ world_generator: &mut WorldGenerator,
) {
puffin::profile_function!();
ui.heading("Config");
@@ -104,7 +107,19 @@ pub fn draw_egui<'a>(
ui.label(format!("Real FPS: {}", diagnostics.fps));
ui.heading("Camera");
ui.add(egui::Slider::new(&mut camera.zoom, 0.0..=10.0).text("Zoom"));
- ui.heading("Input");
+ ui.heading("Proc gen");
+ if ui.button("Generate").clicked() {
+ world_generator.update_params(config);
+ for cx in -5..5 {
+ for cy in -5..5 {
+ let chunk = world_generator.generate_chunk(IVec2::new(cx, cy));
+ sim.cell_manager.upsert(cx, cy, chunk);
+ }
+ }
+ }
+ ui.add(egui::Slider::new(&mut config.proc_gen_seed, -100000..=100000).text("Seed"));
+ ui.label("Cave noise");
+ ui.add(egui::Slider::new(&mut config.cave_noise_freq, 0.0..=1.0).text("Frequency"));
ui.label(format!(
"Mouse (world): x,y=({x}, {y})",
@@ -118,13 +133,13 @@ pub fn draw_egui<'a>(
y = input_manager.chunk_mouse_pos.y
));
- if let Some(&chunk) = sim.cell_manager.chunk_position_to_chunk_idx.get(&(
+ if let Some(&idx) = sim.cell_manager.chunk_position_to_chunk_idx.get(&(
input_manager.chunk_mouse_pos.x,
input_manager.chunk_mouse_pos.y,
)) {
ui.label(format!(
"Sleeping={}",
- sim.cell_manager.chunks[chunk].sleeping
+ sim.cell_manager.chunks[idx].sleeping
));
}