Implement a basic engine with separate modules

This commit is contained in:
reo 2025-06-29 23:17:53 +03:00
parent 0135974d08
commit 95070f854c
20 changed files with 1253 additions and 117 deletions

24
src/camera.rs Normal file
View file

@ -0,0 +1,24 @@
use glam::{Mat4, Vec3};
#[derive(Copy, Clone)]
pub struct Camera {
pub eye: Vec3,
pub center: Vec3,
pub up: Vec3,
pub fovy: f32,
pub aspect: f32,
pub znear: f32,
pub zfar: f32,
}
impl Camera {
pub fn view(&self) -> Mat4 {
Mat4::look_at_rh(self.eye, self.center, self.up)
}
pub fn projection(&self) -> Mat4 {
Mat4::perspective_rh(self.fovy, self.aspect, self.znear, self.zfar)
}
pub fn view_proj(&self) -> Mat4 {
self.projection() * self.view()
}
}