Unify some code

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

View File

@ -212,9 +212,10 @@ 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);
let dist = lim.unwrap_or(f32::INFINITY);
FlatTraceResult { FlatTraceResult {
end: Some(ray.forward(dist)), end: lim.map(|dist| ray.forward(dist)),
objects: hits.into_iter().filter_map(|HitInternal { object, distance }| objects: hits.into_iter().filter_map(|HitInternal { object, distance }|
if distance < dist { if distance < dist {
let pos = ray.forward(distance).pos; let pos = ray.forward(distance).pos;
@ -223,16 +224,6 @@ impl Space {
} else { None } } else { None }
).collect(), ).collect(),
} }
} else {
FlatTraceResult {
end: None,
objects: hits.into_iter().map(|HitInternal { object, distance }| {
let pos = ray.forward(distance).pos;
let rel = object.loc.rot.inverse() * (pos - object.loc.pos);
Hit { id: object.id, distance, pos, rel }
}).collect(),
}
}
} }
fn trace_boundary(&self, ray: Ray) -> Ray { fn trace_boundary(&self, ray: Ray) -> Ray {