summaryrefslogtreecommitdiff
path: root/src/gfx/map.rs
diff options
context:
space:
mode:
authorLizzy Fleckenstein <eliasfleckenstein@web.de>2023-05-24 03:19:52 +0200
committerLizzy Fleckenstein <eliasfleckenstein@web.de>2023-05-24 03:19:52 +0200
commit74092dfb6a0e06f59ec70b3a87b63a1ad8011640 (patch)
tree12cc7ef4303113d54b598d6b731478572e583684 /src/gfx/map.rs
parent63d0c704e889f0b05f03f39903378324ca5b6431 (diff)
downloadmt_client-74092dfb6a0e06f59ec70b3a87b63a1ad8011640.tar.xz
Add visible/total blocks count to debug menu
Diffstat (limited to 'src/gfx/map.rs')
-rw-r--r--src/gfx/map.rs32
1 files changed, 12 insertions, 20 deletions
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);
}
}