steamengine_renderer_util/camera/
orthographic.rs1use super::Camera;
2use glam::*;
3
4#[derive(Clone, Debug)]
26pub struct OrthographicCamera {
27 eye: Vec3,
29 target: Vec3,
30 up: Vec3,
31
32 left: f32,
33 right: f32,
34 bottom: f32,
35 upper: f32,
36 near: f32,
37 far: f32,
38}
39impl OrthographicCamera {
40 pub fn default() -> Self {
41 let eye = vec3(0.0, 0.0, 5.0);
42 let target = vec3(0.0, 0.0, 0.0);
43 let up = vec3(0.0, 1.0, 0.0);
44
45 let left = -10.0;
46 let right = 10.0;
47 let bottom = -10.0;
48 let upper = 10.0;
49 let near = 0.1;
50 let far = 100.0;
51 Self {
52 eye,
53 target,
54 up,
55 left,
56 right,
57 bottom,
58 upper,
59 near,
60 far,
61 }
62 }
63}
64impl Camera for OrthographicCamera {
65 fn up(&mut self) -> &mut Vec3 {
66 &mut self.up
67 }
68 fn eye(&mut self) -> &mut Vec3 {
69 &mut self.eye
70 }
71 fn target(&mut self) -> &mut Vec3 {
72 &mut self.target
73 }
74 fn view(&self) -> Mat4 {
75 Mat4::look_at_rh(self.eye, self.target, self.up)
76 }
77 fn projection(&self) -> Mat4 {
78 Mat4::orthographic_rh(
79 self.left,
80 self.right,
81 self.bottom,
82 self.upper,
83 self.near,
84 self.far,
85 )
86 }
87}