Merge pull request #350 from dimforge/broad-phase-fix
Fix some corner cases in the broad-phase
This commit is contained in:
@@ -352,8 +352,16 @@ impl BroadPhase {
|
|||||||
.compute_aabb(co_pos)
|
.compute_aabb(co_pos)
|
||||||
.loosened(prediction_distance / 2.0);
|
.loosened(prediction_distance / 2.0);
|
||||||
|
|
||||||
|
if aabb.mins.coords.iter().any(|e| !e.is_finite())
|
||||||
|
|| aabb.maxs.coords.iter().any(|e| !e.is_finite())
|
||||||
|
{
|
||||||
|
// Reject AABBs with non-finite values.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
aabb.mins = super::clamp_point(aabb.mins);
|
aabb.mins = super::clamp_point(aabb.mins);
|
||||||
aabb.maxs = super::clamp_point(aabb.maxs);
|
aabb.maxs = super::clamp_point(aabb.maxs);
|
||||||
|
|
||||||
let prev_aabb;
|
let prev_aabb;
|
||||||
|
|
||||||
let layer_id = if let Some(proxy) = self.proxies.get_mut(*proxy_index) {
|
let layer_id = if let Some(proxy) = self.proxies.get_mut(*proxy_index) {
|
||||||
|
|||||||
@@ -240,6 +240,13 @@ impl SAPLayer {
|
|||||||
let region_proxy = &mut proxies[region_id];
|
let region_proxy = &mut proxies[region_id];
|
||||||
let region = region_proxy.data.as_region_mut();
|
let region = region_proxy.data.as_region_mut();
|
||||||
|
|
||||||
|
// NOTE: sometimes, rounding errors will generate start/end indices
|
||||||
|
// that lie outside of the actual region’s AABB.
|
||||||
|
// TODO: is there a smarter, more efficient way of dealing with this?
|
||||||
|
if !region_proxy.aabb.intersects(aabb_to_discretize) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if let Some(actual_aabb) = actual_aabb {
|
if let Some(actual_aabb) = actual_aabb {
|
||||||
// NOTE: if the actual AABB doesn't intersect the
|
// NOTE: if the actual AABB doesn't intersect the
|
||||||
// region’s AABB, then we need to delete the
|
// region’s AABB, then we need to delete the
|
||||||
|
|||||||
Reference in New Issue
Block a user