Early “return”
This commit is contained in:
parent
fca01e05f4
commit
3b4338b033
|
|
@ -13,23 +13,24 @@ pub fn trace_to_mesh(mesh: &Mesh, base: Vec3, ray: Vec3) -> Option<TraceResult>
|
||||||
let mut dist = f32::INFINITY;
|
let mut dist = f32::INFINITY;
|
||||||
for f in mesh {
|
for f in mesh {
|
||||||
let fs = (0..3).map(|k| edge_dist(f.vertices[k], f.vertices[(k + 1) % 3], base, ray));
|
let fs = (0..3).map(|k| edge_dist(f.vertices[k], f.vertices[(k + 1) % 3], base, ray));
|
||||||
if fs.into_iter().all(|f| f >= 0.0) {
|
if fs.into_iter().any(|f| f < 0.0) {
|
||||||
let m = mat3(
|
continue;
|
||||||
f.vertices[1] - f.vertices[0],
|
|
||||||
f.vertices[2] - f.vertices[0],
|
|
||||||
-ray,
|
|
||||||
);
|
|
||||||
let m = m.inverse();
|
|
||||||
let rel = m * (base - f.vertices[0]);
|
|
||||||
if rel.z > dist {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
dist = rel.z;
|
|
||||||
ret = Some(TraceResult {
|
|
||||||
distance: rel.z,
|
|
||||||
normal: f.normal,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
let m = mat3(
|
||||||
|
f.vertices[1] - f.vertices[0],
|
||||||
|
f.vertices[2] - f.vertices[0],
|
||||||
|
-ray,
|
||||||
|
);
|
||||||
|
let m = m.inverse();
|
||||||
|
let rel = m * (base - f.vertices[0]);
|
||||||
|
if rel.z > dist {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
dist = rel.z;
|
||||||
|
ret = Some(TraceResult {
|
||||||
|
distance: rel.z,
|
||||||
|
normal: f.normal,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
ret
|
ret
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user