summaryrefslogtreecommitdiff
path: root/src/renderer/ui.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderer/ui.rs')
-rw-r--r--src/renderer/ui.rs24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/renderer/ui.rs b/src/renderer/ui.rs
index bf51ab4..a1ac31f 100644
--- a/src/renderer/ui.rs
+++ b/src/renderer/ui.rs
@@ -2,9 +2,18 @@ use egui::{Color32, Stroke, Ui, epaint::CircleShape};
use crate::{
Camera, Config, Diagnostics, Input,
- sim::{cell::materials::MaterialId, cell_sim::world::World},
+ sim::{cell::materials::MaterialId, cell_sim::world::World, rb_sim::DebugRenderMode},
};
+const DEBUG_RENDER_MODES: [(&str, DebugRenderMode); 6] = [
+ ("Collider shapes", DebugRenderMode::COLLIDER_SHAPES),
+ ("Collider AABBs", DebugRenderMode::COLLIDER_AABBS),
+ ("Rigid body axes", DebugRenderMode::RIGID_BODY_AXES),
+ ("Joints", DebugRenderMode::JOINTS),
+ ("Contacts", DebugRenderMode::CONTACTS),
+ ("Solver contacts", DebugRenderMode::SOLVER_CONTACTS),
+];
+
pub fn draw_egui<'a>(
ui: &mut Ui,
config: &mut Config,
@@ -73,6 +82,19 @@ pub fn draw_egui<'a>(
});
ui.checkbox(&mut config.use_threading, "Use multithreading");
+ ui.checkbox(&mut config.debug_render, "Draw physics debug lines");
+
+ if config.debug_render {
+ ui.indent("debug_render_modes", |ui| {
+ for (name, flag) in DEBUG_RENDER_MODES {
+ let mut enabled = config.debug_render_mode.contains(flag);
+ if ui.checkbox(&mut enabled, name).changed() {
+ config.debug_render_mode.set(flag, enabled);
+ }
+ }
+ });
+ }
+
ui.label(format!("Real FPS: {}", diagnostics.fps));
ui.heading("Camera");
ui.add(egui::Slider::new(&mut camera.zoom, 0.0..=10.0).text("Zoom"));