diff options
| author | Kai Stevenson <kai@kaistevenson.com> | 2026-08-17 19:31:31 -0700 |
|---|---|---|
| committer | Kai Stevenson <kai@kaistevenson.com> | 2026-08-17 19:31:31 -0700 |
| commit | 4ad69d966f0640daae34c677eead5b689cbfac2e (patch) | |
| tree | e80de1972ac02660b27ef6f46434caa388f41761 /src/renderer/ui.rs | |
| parent | 7f1b0b16ad51afd46b4f8fe2ba209c4bd94391ba (diff) | |
debug physics
Diffstat (limited to 'src/renderer/ui.rs')
| -rw-r--r-- | src/renderer/ui.rs | 24 |
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")); |
