From 0c1b210109e6d4816dc54f2a6dc93e8d6beb5089 Mon Sep 17 00:00:00 2001 From: Robert Hrusecky Date: Tue, 6 Oct 2020 14:01:48 -0500 Subject: Fix corner case: exit on multiple axes --- src/geometry/broad_phase_multi_sap.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/geometry/broad_phase_multi_sap.rs b/src/geometry/broad_phase_multi_sap.rs index bb30e14..10c0c8b 100644 --- a/src/geometry/broad_phase_multi_sap.rs +++ b/src/geometry/broad_phase_multi_sap.rs @@ -208,8 +208,9 @@ impl SAPAxis { let mut deleted = 0; for endpoint in &self.endpoints { if endpoint.value < self.min_bound { - if endpoint.is_end() { - existing_proxies.set(endpoint.proxy() as usize, false); + let proxy_idx = endpoint.proxy() as usize; + if endpoint.is_end() && existing_proxies[proxy_idx] { + existing_proxies.set(proxy_idx, false); deleted += 1; } } else { @@ -219,7 +220,8 @@ impl SAPAxis { for endpoint in self.endpoints.iter().rev() { if endpoint.value > self.max_bound { - if endpoint.is_start() { + let proxy_idx = endpoint.proxy() as usize; + if endpoint.is_start() && existing_proxies[proxy_idx] { existing_proxies.set(endpoint.proxy() as usize, false); deleted += 1; } -- cgit