Unify some code

This commit is contained in:
numzero 2024-06-10 22:58:52 +03:00
parent 932029b064
commit d5c2e34157

View File

@ -212,26 +212,17 @@ impl Space {
let cell = basic_shapes::Rect { size: vec2(self.rect.outer_radius, self.rect.external_halflength) }; let cell = basic_shapes::Rect { size: vec2(self.rect.outer_radius, self.rect.external_halflength) };
let objs = self.list_objects_outer(); let objs = self.list_objects_outer();
let hits = Self::trace_to_objects(objs.as_slice(), ray); let hits = Self::trace_to_objects(objs.as_slice(), ray);
if let Some(dist) = cell.trace_into(ray) { let lim = cell.trace_into(ray);
FlatTraceResult { let dist = lim.unwrap_or(f32::INFINITY);
end: Some(ray.forward(dist)), FlatTraceResult {
objects: hits.into_iter().filter_map(|HitInternal { object, distance }| end: lim.map(|dist| ray.forward(dist)),
if distance < dist { objects: hits.into_iter().filter_map(|HitInternal { object, distance }|
let pos = ray.forward(distance).pos; if distance < dist {
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 pos = ray.forward(distance).pos; let pos = ray.forward(distance).pos;
let rel = object.loc.rot.inverse() * (pos - object.loc.pos); let rel = object.loc.rot.inverse() * (pos - object.loc.pos);
Hit { id: object.id, distance, pos, rel } Some(Hit { id: object.id, distance, pos, rel })
}).collect(), } else { None }
} ).collect(),
} }
} }