1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
#[repr(C)] #[derive(Clone, Copy, Debug)] pub struct Vec4 { pub x: f32, pub y: f32, pub z: f32, pub w: f32, } impl Vec4 { pub fn new(x: f32, y: f32, z: f32, w: f32) -> Self { Self { x, y, z, w } } } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct Vec3 { pub x: f32, pub y: f32, pub z: f32, } impl Vec3 { pub fn new(x: f32, y: f32, z: f32) -> Self { Self { x, y, z } } } #[repr(C)] #[derive(Clone, Copy)] pub struct Mat4 { pub columns: [Vec4; 4], } impl Default for Mat4 { fn default() -> Self { Mat4 { columns: [ Vec4 { x: 1.0, y: 0.0, z: 0.0, w: 0.0, }, Vec4 { x: 0.0, y: 1.0, z: 0.0, w: 0.0, }, Vec4 { x: 0.0, y: 0.0, z: 1.0, w: 0.0, }, Vec4 { x: 0.0, y: 0.0, z: 0.0, w: 1.0, }, ], } } }