From dbd69b6f57d481de0ca4015f4c143b54cc5cd000 Mon Sep 17 00:00:00 2001 From: Layl <2385329-layl@users.noreply.gitlab.com> Date: Sun, 12 May 2019 20:58:11 +0200 Subject: [PATCH] Change nalgebra types in public API to arrays --- src/generated.rs | 4 ++-- src/lib.rs | 23 ++++++++++++----------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/generated.rs b/src/generated.rs index 198d9a322d..335f073312 100644 --- a/src/generated.rs +++ b/src/generated.rs @@ -292,8 +292,8 @@ pub unsafe fn genTangSpace( let mut tang = Vector3::new((*pTSpace).vOs.x, (*pTSpace).vOs.y, (*pTSpace).vOs.z); let mut bitang = Vector3::new((*pTSpace).vOt.x, (*pTSpace).vOt.y, (*pTSpace).vOt.z); geometry.set_tangent( - tang, - bitang, + tang.into(), + bitang.into(), (*pTSpace).fMagS, (*pTSpace).fMagT, (*pTSpace).bOrient, diff --git a/src/lib.rs b/src/lib.rs index a3c8441845..2d470ba908 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,6 @@ mod generated; -use nalgebra::{Point2, Point3, Vector3, Vector4}; +use nalgebra::{Vector2, Vector3}; /// The interface by which mikktspace interacts with your geometry. pub trait Geometry { @@ -11,19 +11,19 @@ pub trait Geometry { fn num_vertices_of_face(&self, face: usize) -> usize; /// Returns the position of a vertex. - fn position(&self, face: usize, vert: usize) -> Point3; + fn position(&self, face: usize, vert: usize) -> [f32; 3]; /// Returns the normal of a vertex. - fn normal(&self, face: usize, vert: usize) -> Vector3; + fn normal(&self, face: usize, vert: usize) -> [f32; 3]; /// Returns the texture coordinate of a vertex. - fn tex_coord(&self, face: usize, vert: usize) -> Point2; + fn tex_coord(&self, face: usize, vert: usize) -> [f32; 2]; /// Sets a vertex' generated tangent. fn set_tangent( &mut self, - tangent: Vector3, - _bi_tangent: Vector3, + tangent: [f32; 3], + _bi_tangent: [f32; 3], _f_mag_s: f32, _f_mag_t: f32, bi_tangent_preserves_orientation: bool, @@ -35,13 +35,13 @@ pub trait Geometry { } else { -1.0 }; - self.set_tangent_encoded(tangent.insert_row(3, sign), face, vert); + self.set_tangent_encoded([tangent[0], tangent[1], tangent[2], sign], face, vert); } /// Sets a vertex' generated tangent with the bi-tangent encoded as the W component in the /// tangent. The W component marks if the bi-tangent is flipped. This will only be called if /// `set_tangent` is not implemented. - fn set_tangent_encoded(&mut self, _tangent: Vector4, _face: usize, _vert: usize) {} + fn set_tangent_encoded(&mut self, _tangent: [f32; 4], _face: usize, _vert: usize) {} } /// Default (recommended) Angular Threshold is 180 degrees, which means threshold disabled. @@ -51,17 +51,18 @@ pub fn generate_tangents_default(geometry: &mut I) -> bool { fn get_position(geometry: &mut I, index: usize) -> Vector3 { let (face, vert) = index_to_face_vert(index); - geometry.position(face, vert).coords + geometry.position(face, vert).into() } fn get_tex_coord(geometry: &mut I, index: usize) -> Vector3 { let (face, vert) = index_to_face_vert(index); - geometry.tex_coord(face, vert).coords.insert_row(2, 1.0) + let tex_coord: Vector2 = geometry.tex_coord(face, vert).into(); + tex_coord.insert_row(2, 1.0) } fn get_normal(geometry: &mut I, index: usize) -> Vector3 { let (face, vert) = index_to_face_vert(index); - geometry.normal(face, vert) + geometry.normal(face, vert).into() } fn index_to_face_vert(index: usize) -> (usize, usize) {