forked from StrafesNET/strafe-client
fix aabb normals + face_mesh
This commit is contained in:
parent
21dc425fc2
commit
2f0a073fd5
14
src/body.rs
14
src/body.rs
@ -246,14 +246,20 @@ impl Model {
|
|||||||
Aabb::unit_face_vertices(face)
|
Aabb::unit_face_vertices(face)
|
||||||
}
|
}
|
||||||
pub fn face_mesh(&self,face:TreyMeshFace) -> TreyMesh {
|
pub fn face_mesh(&self,face:TreyMeshFace) -> TreyMesh {
|
||||||
let mut aabb=Aabb::new();
|
let mut aabb=self.mesh();
|
||||||
for &vertex in self.unit_face_vertices(face).iter() {
|
//in this implementation face = worldspace aabb face
|
||||||
aabb.grow(glam::Vec4Swizzles::xyz(self.transform*vertex.extend(1.0)));
|
match face {
|
||||||
|
AabbFace::Right => aabb.min.x=aabb.max.x,
|
||||||
|
AabbFace::Top => aabb.min.y=aabb.max.y,
|
||||||
|
AabbFace::Back => aabb.min.z=aabb.max.z,
|
||||||
|
AabbFace::Left => aabb.max.x=aabb.min.x,
|
||||||
|
AabbFace::Bottom => aabb.max.y=aabb.min.y,
|
||||||
|
AabbFace::Front => aabb.max.z=aabb.min.z,
|
||||||
}
|
}
|
||||||
return aabb;
|
return aabb;
|
||||||
}
|
}
|
||||||
pub fn face_normal(&self,face:TreyMeshFace) -> glam::Vec3 {
|
pub fn face_normal(&self,face:TreyMeshFace) -> glam::Vec3 {
|
||||||
glam::Vec4Swizzles::xyz(self.transform*Aabb::normal(face).extend(0.0))//this is wrong for scale
|
glam::Vec4Swizzles::xyz(Aabb::normal(face).extend(0.0))//this is wrong for scale
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user