From a57cb58602b323469861c0b06573c6e47db56f34 Mon Sep 17 00:00:00 2001 From: Kai Stevenson Date: Sat, 29 Aug 2026 21:26:41 -0700 Subject: generating wood caves --- src/renderer/mod.rs | 12 +++++++++++- src/renderer/ui.rs | 23 +++++++++++++++++++---- 2 files changed, 30 insertions(+), 5 deletions(-) (limited to 'src/renderer') diff --git a/src/renderer/mod.rs b/src/renderer/mod.rs index 127a785..b5508e2 100644 --- a/src/renderer/mod.rs +++ b/src/renderer/mod.rs @@ -10,6 +10,7 @@ use crate::{ camera::Camera, config::{CELLS_IN_CHUNK, CHUNK_SIZE}, content::{materials::MaterialId, vfx::VfxMaterialId}, + proc_gen::WorldGenerator, renderer::ui::draw_egui, sim::{ cell_manager::manager::CellManager, entity::EntityId, @@ -772,6 +773,7 @@ impl RendererState { config: &mut Config, diagnostics: &Diagnostics, input_manager: &InputManager, + world_generator: &mut WorldGenerator, ) { puffin::profile_function!(); @@ -819,7 +821,15 @@ impl RendererState { .resizable(false) // TODO collapse button .show_collapsible(ui, &mut true, |panel_ui| { - draw_egui(panel_ui, config, camera, diagnostics, input_manager, sim) + draw_egui( + panel_ui, + config, + camera, + diagnostics, + input_manager, + sim, + world_generator, + ) }); }); 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 )); } -- cgit v1.3.1