Early “return”

This commit is contained in:
numzero 2024-09-14 15:18:35 +03:00
parent fca01e05f4
commit 3b4338b033

View File

@ -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
} }