From d5c2e341576cd96ac900e74754e0360676791d62 Mon Sep 17 00:00:00 2001 From: numzero Date: Mon, 10 Jun 2024 22:58:52 +0300 Subject: [PATCH] Unify some code --- src/bin/flat/main.rs | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/src/bin/flat/main.rs b/src/bin/flat/main.rs index 6759c31..3520924 100644 --- a/src/bin/flat/main.rs +++ b/src/bin/flat/main.rs @@ -212,26 +212,17 @@ impl Space { let cell = basic_shapes::Rect { size: vec2(self.rect.outer_radius, self.rect.external_halflength) }; let objs = self.list_objects_outer(); let hits = Self::trace_to_objects(objs.as_slice(), ray); - if let Some(dist) = cell.trace_into(ray) { - FlatTraceResult { - end: Some(ray.forward(dist)), - objects: hits.into_iter().filter_map(|HitInternal { object, distance }| - if distance < dist { - let pos = ray.forward(distance).pos; - let rel = object.loc.rot.inverse() * (pos - object.loc.pos); - Some(Hit { id: object.id, distance, pos, rel }) - } else { None } - ).collect(), - } - } else { - FlatTraceResult { - end: None, - objects: hits.into_iter().map(|HitInternal { object, distance }| { + let lim = cell.trace_into(ray); + let dist = lim.unwrap_or(f32::INFINITY); + FlatTraceResult { + end: lim.map(|dist| ray.forward(dist)), + objects: hits.into_iter().filter_map(|HitInternal { object, distance }| + if distance < dist { let pos = ray.forward(distance).pos; let rel = object.loc.rot.inverse() * (pos - object.loc.pos); - Hit { id: object.id, distance, pos, rel } - }).collect(), - } + Some(Hit { id: object.id, distance, pos, rel }) + } else { None } + ).collect(), } }