diff options
Diffstat (limited to 'src/gfx')
-rw-r--r-- | src/gfx/debug_menu.rs | 14 | ||||
-rw-r--r-- | src/gfx/map.rs | 32 |
2 files changed, 19 insertions, 27 deletions
diff --git a/src/gfx/debug_menu.rs b/src/gfx/debug_menu.rs index 4baf0f1..1f6ebf4 100644 --- a/src/gfx/debug_menu.rs +++ b/src/gfx/debug_menu.rs @@ -1,19 +1,15 @@ use super::{camera::Camera, font::Font}; use wgpu_glyph::{Section, Text}; +#[derive(Default)] pub struct DebugMenu { pub enabled: bool, pub fps: usize, + pub blocks: usize, + pub blocks_visible: usize, } impl DebugMenu { - pub fn new() -> Self { - Self { - enabled: false, - fps: 0, - } - } - pub fn render(&self, bounds: (f32, f32), camera: &Camera, font: &mut Font) { if !self.enabled { return; @@ -48,5 +44,9 @@ impl DebugMenu { )); add_text(&format!("yaw: {:.1}°", (camera.rot.y.0 + 360.0) % 360.0)); add_text(&format!("pitch: {:.1}°", camera.rot.z.0)); + add_text(&format!( + "blocks visible: {}/{}", + self.blocks_visible, self.blocks, + )); } } diff --git a/src/gfx/map.rs b/src/gfx/map.rs index 04865a6..a134467 100644 --- a/src/gfx/map.rs +++ b/src/gfx/map.rs @@ -148,16 +148,12 @@ impl MapRender { pass.set_bind_group(0, &self.atlas, &[]); pass.set_bind_group(1, &camera.uniform.bind_group, &[]); - struct BlendEntry<'a> { - dist: f32, - index: usize, - mesh: &'a BlockMesh, - transform: &'a MatrixUniform, - } - let mut blend = Vec::new(); - for (index, (&pos, model)) in self.block_models.iter().enumerate() { + debug_menu.blocks = self.block_models.len(); + debug_menu.blocks_visible = 0; + + for (&pos, model) in self.block_models.iter() { if model.mesh.is_none() && model.mesh_blend.is_none() { continue; } @@ -170,31 +166,27 @@ impl MapRender { continue; } + debug_menu.blocks_visible += 1; + if let Some(mesh) = &model.mesh { mesh.render(pass, &model.transform); } if let Some(mesh) = &model.mesh_blend { - blend.push(BlendEntry { - index, - dist: (camera.view * (fpos + one * 8.5).to_homogeneous()) + blend.push(( + (camera.view * (fpos + one * 8.5).to_homogeneous()) .truncate() .magnitude(), mesh, - transform: &model.transform, - }); + &model.transform, + )); } } - blend.sort_unstable_by(|a, b| { - a.dist - .partial_cmp(&b.dist) - .unwrap_or(std::cmp::Ordering::Equal) - .then_with(|| a.index.cmp(&b.index)) - }); + blend.sort_unstable_by(|a, b| a.0.partial_cmp(&b.0).unwrap_or(std::cmp::Ordering::Equal)); for entry in blend { - entry.mesh.render(pass, entry.transform); + entry.1.render(pass, entry.2); } } |