From 9b4ae17a1315556373528a33ce1342de40199276 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Tue, 5 Nov 2024 18:01:30 +0100 Subject: [PATCH] Convert `Vertex` into struct --- experiments/2024-10-30/src/export.rs | 2 +- experiments/2024-10-30/src/geometry.rs | 6 +++++- experiments/2024-10-30/src/model.rs | 4 ++-- experiments/2024-10-30/src/render.rs | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/experiments/2024-10-30/src/export.rs b/experiments/2024-10-30/src/export.rs index 351b216dc..10c0bab9b 100644 --- a/experiments/2024-10-30/src/export.rs +++ b/experiments/2024-10-30/src/export.rs @@ -7,7 +7,7 @@ pub fn export(mesh: &Mesh) -> anyhow::Result<()> { .vertices() .iter() .copied() - .map(|vertex| vertex.map(Into::into)) + .map(|vertex| vertex.point.map(Into::into)) .map(|[x, y, z]| threemf::model::Vertex { x, y, z }) .collect(); diff --git a/experiments/2024-10-30/src/geometry.rs b/experiments/2024-10-30/src/geometry.rs index ca17af617..a9d8467ef 100644 --- a/experiments/2024-10-30/src/geometry.rs +++ b/experiments/2024-10-30/src/geometry.rs @@ -22,6 +22,10 @@ impl Mesh { } } -pub type Vertex = [f32; 3]; +#[derive(Clone, Copy)] +pub struct Vertex { + pub point: [f32; 3], +} + pub type Index = u32; pub type Triangle = [Index; 3]; diff --git a/experiments/2024-10-30/src/model.rs b/experiments/2024-10-30/src/model.rs index d917580c5..b4a42feba 100644 --- a/experiments/2024-10-30/src/model.rs +++ b/experiments/2024-10-30/src/model.rs @@ -1,4 +1,4 @@ -use crate::geometry::Mesh; +use crate::geometry::{Mesh, Vertex}; pub fn model() -> anyhow::Result { let mut mesh = Mesh::default(); @@ -13,7 +13,7 @@ pub fn model() -> anyhow::Result { [-0.5, 0.5, 0.5], // 6 [0.5, 0.5, 0.5], // 7 ] - .map(|vertex| mesh.push_vertex(vertex)); + .map(|vertex| mesh.push_vertex(Vertex { point: vertex })); [ [0, 4, 6], // left diff --git a/experiments/2024-10-30/src/render.rs b/experiments/2024-10-30/src/render.rs index e30f1fb2a..dc74a0916 100644 --- a/experiments/2024-10-30/src/render.rs +++ b/experiments/2024-10-30/src/render.rs @@ -193,7 +193,7 @@ impl Renderer { for triangle in mesh.triangles() { let triangle = triangle - .map(|index| Vec3::from(mesh.vertices()[index as usize])); + .map(|index| Vec3::from(mesh.vertices()[index as usize].point)); let normal = { let [a, b, c] = triangle;