Unify some code
This commit is contained in:
parent
932029b064
commit
d5c2e34157
|
|
@ -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(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user