j_webgl/structs/camera/
basic.rs

1use super::*;
2
3#[wasm_bindgen::prelude::wasm_bindgen]
4pub struct Basic {
5  matrix: algebra::Mat4,
6}
7
8#[wasm_bindgen::prelude::wasm_bindgen]
9impl Basic {
10  #[wasm_bindgen(constructor)]
11  pub fn new(width: f32, height: f32) -> Result<Self> {
12    let projection = algebra::Mat4::new_perspective(
13          width / height,
14          45.0 * std::f32::consts::PI / 180f32, // fov
15          0.1f32,
16          200f32,
17    );
18
19    let eye = algebra::Point3::new( EYE_X, EYE_Y, EYE_Z);
20    let target = algebra::Point3::new(0.0, 0.0, 0.0);
21    let up = algebra::Vector3::new(0.0, 1.0, 0.0);
22    let view = algebra::Mat4::look_at_rh(&eye, &target, &up);
23
24    let matrix = &projection * &view;
25    Ok(Basic { matrix })
26  }
27}
28
29impl traits::Camera for Basic {
30  fn as_f32_array(&self) -> Result<&[f32]> {
31    Ok(self.matrix.as_slice())
32  }
33}