mirror of
https://github.com/griffi-gh/kubi.git
synced 2024-09-20 10:40:39 +00:00
44 lines
886 B
Rust
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()
|
|
}
|