1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
use super::{camera::Camera, font::Font};
use cgmath::{Deg, Rad};
use wgpu_glyph::{Section, Text};
pub struct DebugMenu {
pub enabled: bool,
pub fps: 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;
}
let mut offset = 0.0;
let mut add_text = |txt: &str| {
offset += 2.0;
font.add(Section {
screen_position: (2.0, offset),
bounds,
text: vec![Text::new(txt)
.with_color([1.0, 1.0, 1.0, 1.0])
.with_scale(20.0)],
..Section::default()
});
offset += 20.0;
};
let angle = |x| Deg::from(Rad(x)).0;
let pos = camera.first_person.position;
add_text(&format!(
"{} {}",
env!("CARGO_PKG_NAME"),
env!("CARGO_PKG_VERSION")
));
add_text(&format!("{} FPS", self.fps));
add_text(&format!("({:.1}, {:.1}, {:.1})", pos[0], pos[1], pos[2]));
add_text(&format!(
"yaw: {:.1}°",
(angle(camera.first_person.yaw) + 360.0) % 360.0
));
add_text(&format!("pitch: {:.1}°", angle(camera.first_person.pitch)));
}
}
|