diff options
author | HampusM <hampus@hampusmat.com> | 2024-05-18 16:22:09 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2024-05-18 16:22:09 +0200 |
commit | d7675fd0119afe5e9cc872ce8bbb2977a16f0b26 (patch) | |
tree | 6272815d164671cc95520e3590fe1b6c396bf210 /engine/src/vertex.rs | |
parent | 9af501c99880b2e4be3458bab0891e1ea1a2e4a0 (diff) |
refactor(engine): generate vertex builder using the builder macro
Diffstat (limited to 'engine/src/vertex.rs')
-rw-r--r-- | engine/src/vertex.rs | 56 |
1 files changed, 3 insertions, 53 deletions
diff --git a/engine/src/vertex.rs b/engine/src/vertex.rs index 456a2a3..897ee97 100644 --- a/engine/src/vertex.rs +++ b/engine/src/vertex.rs @@ -1,7 +1,10 @@ use std::mem::size_of; +use crate::util::builder; use crate::vector::{Vec2, Vec3}; +builder! { +#[builder(name = Builder, derives = (Debug, Default))] #[derive(Debug, Clone, Default)] #[repr(C)] pub struct Vertex @@ -10,59 +13,6 @@ pub struct Vertex texture_coords: Vec2<f32>, normal: Vec3<f32>, } - -#[derive(Debug, Default)] -pub struct Builder -{ - pos: Option<Vec3<f32>>, - texture_coords: Vec2<f32>, - normal: Option<Vec3<f32>>, -} - -impl Builder -{ - #[must_use] - pub fn new() -> Self - { - Self::default() - } - - #[must_use] - pub fn pos(mut self, pos: Vec3<f32>) -> Self - { - self.pos = Some(pos); - - self - } - - #[must_use] - pub fn texture_coords(mut self, texture_coords: Vec2<f32>) -> Self - { - self.texture_coords = texture_coords; - - self - } - - #[must_use] - pub fn normal(mut self, normal: Vec3<f32>) -> Self - { - self.normal = Some(normal); - - self - } - - #[must_use] - pub fn build(self) -> Option<Vertex> - { - let pos = self.pos?; - let normal = self.normal.unwrap_or_default(); - - Some(Vertex { - pos, - texture_coords: self.texture_coords, - normal, - }) - } } impl Vertex |