summaryrefslogtreecommitdiff
path: root/engine/src/vertex.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2024-05-18 16:22:09 +0200
committerHampusM <hampus@hampusmat.com>2024-05-18 16:22:09 +0200
commitd7675fd0119afe5e9cc872ce8bbb2977a16f0b26 (patch)
tree6272815d164671cc95520e3590fe1b6c396bf210 /engine/src/vertex.rs
parent9af501c99880b2e4be3458bab0891e1ea1a2e4a0 (diff)
refactor(engine): generate vertex builder using the builder macro
Diffstat (limited to 'engine/src/vertex.rs')
-rw-r--r--engine/src/vertex.rs56
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