summaryrefslogtreecommitdiff
path: root/src/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderer')
-rw-r--r--src/renderer/mod.rs12
-rw-r--r--src/renderer/ui.rs23
2 files changed, 30 insertions, 5 deletions
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
));
}