diff options
| author | Sébastien Crozet <sebcrozet@dimforge.com> | 2024-01-27 16:49:53 +0100 |
|---|---|---|
| committer | Sébastien Crozet <sebastien@crozet.re> | 2024-01-27 17:13:08 +0100 |
| commit | da92e5c2837b27433286cf0dd9d887fd44dda254 (patch) | |
| tree | 00428ce290288f5c64e53dee13d88ffdde4df0ca /src/geometry | |
| parent | aef873f20e7a1ee66b9d4c066884fa794048587b (diff) | |
| download | rapier-da92e5c2837b27433286cf0dd9d887fd44dda254.tar.gz rapier-da92e5c2837b27433286cf0dd9d887fd44dda254.tar.bz2 rapier-da92e5c2837b27433286cf0dd9d887fd44dda254.zip | |
Fix clippy and enable clippy on CI
Diffstat (limited to 'src/geometry')
| -rw-r--r-- | src/geometry/broad_phase_multi_sap/broad_phase.rs | 5 | ||||
| -rw-r--r-- | src/geometry/broad_phase_multi_sap/mod.rs | 12 | ||||
| -rw-r--r-- | src/geometry/broad_phase_multi_sap/sap_axis.rs | 5 | ||||
| -rw-r--r-- | src/geometry/broad_phase_multi_sap/sap_proxy.rs | 13 | ||||
| -rw-r--r-- | src/geometry/broad_phase_multi_sap/sap_region.rs | 1 | ||||
| -rw-r--r-- | src/geometry/collider.rs | 11 | ||||
| -rw-r--r-- | src/geometry/collider_set.rs | 4 | ||||
| -rw-r--r-- | src/geometry/interaction_groups.rs | 2 | ||||
| -rw-r--r-- | src/geometry/narrow_phase.rs | 62 |
9 files changed, 53 insertions, 62 deletions
diff --git a/src/geometry/broad_phase_multi_sap/broad_phase.rs b/src/geometry/broad_phase_multi_sap/broad_phase.rs index 0667184..9e1bc06 100644 --- a/src/geometry/broad_phase_multi_sap/broad_phase.rs +++ b/src/geometry/broad_phase_multi_sap/broad_phase.rs @@ -445,9 +445,8 @@ impl BroadPhase { ); } - let need_region_propagation = !layer.created_regions.is_empty(); - - need_region_propagation + // Returns true if propagation is needed. + !layer.created_regions.is_empty() } /// Updates the broad-phase, taking into account the new collider positions. diff --git a/src/geometry/broad_phase_multi_sap/mod.rs b/src/geometry/broad_phase_multi_sap/mod.rs index 01f7847..0f85e96 100644 --- a/src/geometry/broad_phase_multi_sap/mod.rs +++ b/src/geometry/broad_phase_multi_sap/mod.rs @@ -2,12 +2,12 @@ pub use self::broad_phase::BroadPhase; pub use self::broad_phase_pair_event::{BroadPhasePairEvent, ColliderPair}; pub use self::sap_proxy::SAPProxyIndex; -pub(self) use self::sap_axis::*; -pub(self) use self::sap_endpoint::*; -pub(self) use self::sap_layer::*; -pub(self) use self::sap_proxy::*; -pub(self) use self::sap_region::*; -pub(self) use self::sap_utils::*; +use self::sap_axis::*; +use self::sap_endpoint::*; +use self::sap_layer::*; +use self::sap_proxy::*; +use self::sap_region::*; +use self::sap_utils::*; mod broad_phase; mod broad_phase_pair_event; diff --git a/src/geometry/broad_phase_multi_sap/sap_axis.rs b/src/geometry/broad_phase_multi_sap/sap_axis.rs index 4e2ab44..2452148 100644 --- a/src/geometry/broad_phase_multi_sap/sap_axis.rs +++ b/src/geometry/broad_phase_multi_sap/sap_axis.rs @@ -65,9 +65,8 @@ impl SAPAxis { proxy.aabb, self.min_bound ); - let start_endpoint = - SAPEndpoint::start_endpoint(proxy.aabb.mins[dim], *proxy_id as u32); - let end_endpoint = SAPEndpoint::end_endpoint(proxy.aabb.maxs[dim], *proxy_id as u32); + let start_endpoint = SAPEndpoint::start_endpoint(proxy.aabb.mins[dim], *proxy_id); + let end_endpoint = SAPEndpoint::end_endpoint(proxy.aabb.maxs[dim], *proxy_id); self.new_endpoints.push((start_endpoint, 0)); self.new_endpoints.push((end_endpoint, 0)); diff --git a/src/geometry/broad_phase_multi_sap/sap_proxy.rs b/src/geometry/broad_phase_multi_sap/sap_proxy.rs index 9ddd8b9..4d5d79e 100644 --- a/src/geometry/broad_phase_multi_sap/sap_proxy.rs +++ b/src/geometry/broad_phase_multi_sap/sap_proxy.rs @@ -15,10 +15,7 @@ pub enum SAPProxyData { impl SAPProxyData { pub fn is_region(&self) -> bool { - match self { - SAPProxyData::Region(_) => true, - _ => false, - } + matches!(self, SAPProxyData::Region(_)) } pub fn as_region(&self) -> &SAPRegion { @@ -102,7 +99,7 @@ impl SAPProxies { } pub fn insert(&mut self, proxy: SAPProxy) -> SAPProxyIndex { - let result = if self.first_free != NEXT_FREE_SENTINEL { + if self.first_free != NEXT_FREE_SENTINEL { let proxy_id = self.first_free; self.first_free = self.elements[proxy_id as usize].next_free; self.elements[proxy_id as usize] = proxy; @@ -110,15 +107,13 @@ impl SAPProxies { } else { self.elements.push(proxy); self.elements.len() as u32 - 1 - }; - - result + } } pub fn remove(&mut self, proxy_id: SAPProxyIndex) { let proxy = &mut self.elements[proxy_id as usize]; proxy.next_free = self.first_free; - self.first_free = proxy_id as u32; + self.first_free = proxy_id; } // NOTE: this must not take holes into account. diff --git a/src/geometry/broad_phase_multi_sap/sap_region.rs b/src/geometry/broad_phase_multi_sap/sap_region.rs index 1a3903b..21ebca5 100644 --- a/src/geometry/broad_phase_multi_sap/sap_region.rs +++ b/src/geometry/broad_phase_multi_sap/sap_region.rs @@ -73,6 +73,7 @@ impl SAPRegion { old } + #[allow(clippy::vec_box)] // PERF: see if Box actually makes it faster (due to less copying). pub fn recycle_or_new(bounds: Aabb, pool: &mut Vec<Box<Self>>) -> Box<Self> { if let Some(old) = pool.pop() { Self::recycle(bounds, old) diff --git a/src/geometry/collider.rs b/src/geometry/collider.rs index bcd4c56..2a31afa 100644 --- a/src/geometry/collider.rs +++ b/src/geometry/collider.rs @@ -157,10 +157,7 @@ impl Collider { /// Is this collider enabled? pub fn is_enabled(&self) -> bool { - match self.flags.enabled { - ColliderEnabled::Enabled => true, - _ => false, - } + matches!(self.flags.enabled, ColliderEnabled::Enabled) } /// Sets whether or not this collider is enabled. @@ -916,8 +913,8 @@ impl ColliderBuilder { } } -impl Into<Collider> for ColliderBuilder { - fn into(self) -> Collider { - self.build() +impl From<ColliderBuilder> for Collider { + fn from(val: ColliderBuilder) -> Collider { + val.build() } } diff --git a/src/geometry/collider_set.rs b/src/geometry/collider_set.rs index 4bc2a03..799ee65 100644 --- a/src/geometry/collider_set.rs +++ b/src/geometry/collider_set.rs @@ -24,11 +24,11 @@ impl ColliderSet { } pub(crate) fn take_modified(&mut self) -> Vec<ColliderHandle> { - std::mem::replace(&mut self.modified_colliders, vec![]) + std::mem::take(&mut self.modified_colliders) } pub(crate) fn take_removed(&mut self) -> Vec<ColliderHandle> { - std::mem::replace(&mut self.removed_colliders, vec![]) + std::mem::take(&mut self.removed_colliders) } /// An always-invalid collider handle. diff --git a/src/geometry/interaction_groups.rs b/src/geometry/interaction_groups.rs index 2dfa098..b07389c 100644 --- a/src/geometry/interaction_groups.rs +++ b/src/geometry/interaction_groups.rs @@ -1,3 +1,5 @@ +#![allow(clippy::bad_bit_mask)] // Clippy will complain about the bitmasks due to Group::NONE being 0. + /// Pairwise filtering using bit masks. /// /// This filtering method is based on two 32-bit values: diff --git a/src/geometry/narrow_phase.rs b/src/geometry/narrow_phase.rs index 4c3895a..c644b4d 100644 --- a/src/geometry/narrow_phase.rs +++ b/src/geometry/narrow_phase.rs @@ -126,7 +126,7 @@ impl NarrowPhase { /// The returned contact pairs identify pairs of colliders with intersecting bounding-volumes. /// To check if any geometric contact happened between the collider shapes, check /// [`ContactPair::has_any_active_contact`]. - pub fn contact_pairs_with<'a>( + pub fn contact_pairs_with( &self, collider: ColliderHandle, ) -> impl Iterator<Item = &ContactPair> { @@ -324,7 +324,7 @@ impl NarrowPhase { &mut self, intersection_graph_id: ColliderGraphIndex, contact_graph_id: ColliderGraphIndex, - mut islands: Option<&mut IslandManager>, + islands: Option<&mut IslandManager>, colliders: &mut ColliderSet, bodies: &mut RigidBodySet, prox_id_remap: &mut HashMap<ColliderHandle, ColliderGraphIndex>, @@ -332,7 +332,7 @@ impl NarrowPhase { events: &dyn EventHandler, ) { // Wake up every body in contact with the deleted collider and generate Stopped collision events. - if let Some(islands) = islands.as_deref_mut() { + if let Some(islands) = islands { for (a, b, pair) in self.contact_graph.interactions_with(contact_graph_id) { if let Some(parent) = colliders.get(a).and_then(|c| c.parent.as_ref()) { islands.wake_up(bodies, parent.handle, true) @@ -539,18 +539,17 @@ impl NarrowPhase { // Emit an intersection lost event if we had an intersection before removing the edge. if let Some(mut intersection) = intersection { - if intersection.intersecting { - if (co1.flags.active_events | co2.flags.active_events) + if intersection.intersecting + && (co1.flags.active_events | co2.flags.active_events) .contains(ActiveEvents::COLLISION_EVENTS) - { - intersection.emit_stop_event( - bodies, - colliders, - pair.collider1, - pair.collider2, - events, - ) - } + { + intersection.emit_stop_event( + bodies, + colliders, + pair.collider1, + pair.collider2, + events, + ) } } } else { @@ -588,15 +587,14 @@ impl NarrowPhase { if let (Some(co1), Some(co2)) = (colliders.get(pair.collider1), colliders.get(pair.collider2)) { - if co1.parent.map(|p| p.handle) == co2.parent.map(|p| p.handle) { - if co1.parent.is_some() { - // Same parents. Ignore collisions. - return; - } - - // These colliders have no parents - continue. + if co1.parent.map(|p| p.handle) == co2.parent.map(|p| p.handle) && co1.parent.is_some() + { + // Same parents. Ignore collisions. + return; } + // These colliders have no parents - continue. + let (gid1, gid2) = self.graph_indices.ensure_pair_exists( pair.collider1.0, pair.collider2.0, @@ -712,7 +710,7 @@ impl NarrowPhase { let co2 = &colliders[handle2]; // TODO: remove the `loop` once labels on blocks is stabilized. - 'emit_events: loop { + 'emit_events: { if !co1.changes.needs_narrow_phase_update() && !co2.changes.needs_narrow_phase_update() { @@ -813,7 +811,7 @@ impl NarrowPhase { let co2 = &colliders[pair.collider2]; // TODO: remove the `loop` once labels on blocks are supported. - 'emit_events: loop { + 'emit_events: { if !co1.changes.needs_narrow_phase_update() && !co2.changes.needs_narrow_phase_update() { @@ -979,7 +977,7 @@ impl NarrowPhase { // Apply the user-defined contact modification. if active_hooks.contains(ActiveHooks::MODIFY_SOLVER_CONTACTS) { let mut modifiable_solver_contacts = - std::mem::replace(&mut manifold.data.solver_contacts, Vec::new()); + std::mem::take(&mut manifold.data.solver_contacts); let mut modifiable_user_data = manifold.data.user_data; let mut modifiable_normal = manifold.data.normal; @@ -1009,13 +1007,13 @@ impl NarrowPhase { let active_events = co1.flags.active_events | co2.flags.active_events; - if pair.has_any_active_contact != had_any_active_contact { - if active_events.contains(ActiveEvents::COLLISION_EVENTS) { - if pair.has_any_active_contact { - pair.emit_start_event(bodies, colliders, events); - } else { - pair.emit_stop_event(bodies, colliders, events); - } + if pair.has_any_active_contact != had_any_active_contact + && active_events.contains(ActiveEvents::COLLISION_EVENTS) + { + if pair.has_any_active_contact { + pair.emit_start_event(bodies, colliders, events); + } else { + pair.emit_stop_event(bodies, colliders, events); } } }); @@ -1029,7 +1027,7 @@ impl NarrowPhase { bodies: &RigidBodySet, out_contact_pairs: &mut Vec<TemporaryInteractionIndex>, out_manifolds: &mut Vec<&'a mut ContactManifold>, - out: &mut Vec<Vec<ContactManifoldIndex>>, + out: &mut [Vec<ContactManifoldIndex>], ) { for out_island in &mut out[..islands.num_islands()] { out_island.clear(); |
