kubi/src/camera.rs
2023-01-27 21:50:33 +01:00

44 lines
886 B
Rust

use glam::{Mat4, Vec3};
use shipyard::{Component, Workload, IntoWorkload};
use std::f32::consts::PI;
mod matrices;
mod frustum;
use matrices::update_matrices;
use frustum::{Frustum, update_frustum};
#[derive(Component)]
pub struct Camera {
pub view_matrix: Mat4,
pub perspective_matrix: Mat4,
pub frustum: Frustum,
pub up: Vec3,
pub fov: f32,
pub z_near: f32,
pub z_far: f32,
}
impl Camera {
pub fn new(fov: f32, z_near: f32, z_far: f32, up: Vec3) -> Self {
Self {
fov, z_near, z_far, up,
//TODO maybe separate this?
perspective_matrix: Mat4::default(),
view_matrix: Mat4::default(),
frustum: Frustum::default(),
}
}
}
impl Default for Camera {
fn default() -> Self {
Self::new(PI / 3., 0.1, 1024., Vec3::Y)
}
}
pub fn compute_cameras() -> Workload {
(
update_matrices,
update_frustum,
).into_workload()
}