pub struct InteractionGraph<N: RealField + Copy, Handle: CollisionObjectHandle>(/* private fields */);Expand description
A graph where nodes are collision objects and edges are contact or proximity algorithms.
Implementations§
Source§impl<N: RealField + Copy, Handle: CollisionObjectHandle> InteractionGraph<N, Handle>
impl<N: RealField + Copy, Handle: CollisionObjectHandle> InteractionGraph<N, Handle>
Sourcepub fn add_node(&mut self, handle: Handle) -> CollisionObjectGraphIndex
pub fn add_node(&mut self, handle: Handle) -> CollisionObjectGraphIndex
Adds a handle to this graph.
Sourcepub fn remove_node(&mut self, id: CollisionObjectGraphIndex) -> Option<Handle>
pub fn remove_node(&mut self, id: CollisionObjectGraphIndex) -> Option<Handle>
Removes a handle from this graph and returns a handle that must have its graph index changed to id.
When a node is removed, another node of the graph takes it place. This means that the CollisionObjectGraphIndex
of the collision object returned by this method will be equal to id. Thus if you maintain
a map between CollisionObjectSlabHandle and CollisionObjectGraphIndex, then you should update this
map to associate id to the handle returned by this method. For example:
// Let `id` be the graph index of the collision object we want to remove.
if let Some(other_handle) = graph.remove_node(id) {
// The graph index of `other_handle` changed to `id` due to the removal.
map.insert(other_handle, id) ;
}Sourcepub fn interaction_pairs(
&self,
effective_only: bool,
) -> impl Iterator<Item = (Handle, Handle, &Interaction<N>)>
pub fn interaction_pairs( &self, effective_only: bool, ) -> impl Iterator<Item = (Handle, Handle, &Interaction<N>)>
All the interactions pairs on this graph.
Refer to the official user guide for details.
Sourcepub fn contact_pairs(
&self,
effective_only: bool,
) -> impl Iterator<Item = (Handle, Handle, &ContactAlgorithm<N>, &ContactManifold<N>)>
pub fn contact_pairs( &self, effective_only: bool, ) -> impl Iterator<Item = (Handle, Handle, &ContactAlgorithm<N>, &ContactManifold<N>)>
All the contact pairs on this graph.
Refer to the official user guide for details.
Sourcepub fn proximity_pairs(
&self,
effective_only: bool,
) -> impl Iterator<Item = (Handle, Handle, &dyn ProximityDetector<N>, Proximity)>
pub fn proximity_pairs( &self, effective_only: bool, ) -> impl Iterator<Item = (Handle, Handle, &dyn ProximityDetector<N>, Proximity)>
All the proximity pairs on this graph.
Refer to the official user guide for details.
Sourcepub fn interaction_pair(
&self,
id1: CollisionObjectGraphIndex,
id2: CollisionObjectGraphIndex,
effective_only: bool,
) -> Option<(Handle, Handle, &Interaction<N>)>
pub fn interaction_pair( &self, id1: CollisionObjectGraphIndex, id2: CollisionObjectGraphIndex, effective_only: bool, ) -> Option<(Handle, Handle, &Interaction<N>)>
The interaction between the two collision objects identified by their graph index.
Refer to the official user guide for details.
Sourcepub fn interaction_pair_mut(
&mut self,
id1: CollisionObjectGraphIndex,
id2: CollisionObjectGraphIndex,
) -> Option<(Handle, Handle, &mut Interaction<N>)>
pub fn interaction_pair_mut( &mut self, id1: CollisionObjectGraphIndex, id2: CollisionObjectGraphIndex, ) -> Option<(Handle, Handle, &mut Interaction<N>)>
The interaction between the two collision objects identified by their graph index.
Refer to the official user guide for details.
Sourcepub fn contact_pair(
&self,
id1: CollisionObjectGraphIndex,
id2: CollisionObjectGraphIndex,
effective_only: bool,
) -> Option<(Handle, Handle, &ContactAlgorithm<N>, &ContactManifold<N>)>
pub fn contact_pair( &self, id1: CollisionObjectGraphIndex, id2: CollisionObjectGraphIndex, effective_only: bool, ) -> Option<(Handle, Handle, &ContactAlgorithm<N>, &ContactManifold<N>)>
The contact pair between the two collision objects identified by their graph index.
Refer to the official user guide for details.
Sourcepub fn proximity_pair(
&self,
id1: CollisionObjectGraphIndex,
id2: CollisionObjectGraphIndex,
effective_only: bool,
) -> Option<(Handle, Handle, &dyn ProximityDetector<N>, Proximity)>
pub fn proximity_pair( &self, id1: CollisionObjectGraphIndex, id2: CollisionObjectGraphIndex, effective_only: bool, ) -> Option<(Handle, Handle, &dyn ProximityDetector<N>, Proximity)>
The proximity pair between the two collision objects identified by their graph index.
Refer to the official user guide for details.
Sourcepub fn proximity_pair_mut(
&mut self,
id1: CollisionObjectGraphIndex,
id2: CollisionObjectGraphIndex,
) -> Option<(Handle, Handle, &mut dyn ProximityDetector<N>, &mut Proximity)>
pub fn proximity_pair_mut( &mut self, id1: CollisionObjectGraphIndex, id2: CollisionObjectGraphIndex, ) -> Option<(Handle, Handle, &mut dyn ProximityDetector<N>, &mut Proximity)>
The proximity pair between the two collision objects identified by their graph index.
Refer to the official user guide for details.
Sourcepub fn interactions_with(
&self,
id: CollisionObjectGraphIndex,
effective_only: bool,
) -> impl Iterator<Item = (Handle, Handle, &Interaction<N>)>
pub fn interactions_with( &self, id: CollisionObjectGraphIndex, effective_only: bool, ) -> impl Iterator<Item = (Handle, Handle, &Interaction<N>)>
All the interaction involving the collision object with graph index id.
Refer to the official user guide for details.
Sourcepub fn index_interaction(
&self,
id: TemporaryInteractionIndex,
) -> Option<(Handle, Handle, &Interaction<N>)>
pub fn index_interaction( &self, id: TemporaryInteractionIndex, ) -> Option<(Handle, Handle, &Interaction<N>)>
Gets the interaction with the given index.
Sourcepub fn interactions_with_mut(
&mut self,
id: CollisionObjectGraphIndex,
) -> impl Iterator<Item = (Handle, Handle, TemporaryInteractionIndex, &mut Interaction<N>)>
pub fn interactions_with_mut( &mut self, id: CollisionObjectGraphIndex, ) -> impl Iterator<Item = (Handle, Handle, TemporaryInteractionIndex, &mut Interaction<N>)>
All the mutable references to interactions involving the collision object with graph index id.
Refer to the official user guide for details.
Sourcepub fn proximities_with(
&self,
handle: CollisionObjectGraphIndex,
effective_only: bool,
) -> impl Iterator<Item = (Handle, Handle, &dyn ProximityDetector<N>, Proximity)>
pub fn proximities_with( &self, handle: CollisionObjectGraphIndex, effective_only: bool, ) -> impl Iterator<Item = (Handle, Handle, &dyn ProximityDetector<N>, Proximity)>
All the proximity pairs involving the collision object with graph index id.
Refer to the official user guide for details.
Sourcepub fn contacts_with(
&self,
handle: CollisionObjectGraphIndex,
effective_only: bool,
) -> impl Iterator<Item = (Handle, Handle, &ContactAlgorithm<N>, &ContactManifold<N>)>
pub fn contacts_with( &self, handle: CollisionObjectGraphIndex, effective_only: bool, ) -> impl Iterator<Item = (Handle, Handle, &ContactAlgorithm<N>, &ContactManifold<N>)>
All the contact pairs involving the collision object with graph index id.
Refer to the official user guide for details.
Sourcepub fn collision_objects_interacting_with<'a>(
&'a self,
id: CollisionObjectGraphIndex,
) -> impl Iterator<Item = Handle> + 'a
pub fn collision_objects_interacting_with<'a>( &'a self, id: CollisionObjectGraphIndex, ) -> impl Iterator<Item = Handle> + 'a
All the collision object handles of collision objects interacting with the collision object with graph index id.
Refer to the official user guide for details.
Sourcepub fn collision_objects_in_contact_with<'a>(
&'a self,
id: CollisionObjectGraphIndex,
) -> impl Iterator<Item = Handle> + 'a
pub fn collision_objects_in_contact_with<'a>( &'a self, id: CollisionObjectGraphIndex, ) -> impl Iterator<Item = Handle> + 'a
All the collision object handles of collision objects in contact with the collision object with graph index id.
Refer to the official user guide for details.
Sourcepub fn collision_objects_in_proximity_of<'a>(
&'a self,
id: CollisionObjectGraphIndex,
) -> impl Iterator<Item = Handle> + 'a
pub fn collision_objects_in_proximity_of<'a>( &'a self, id: CollisionObjectGraphIndex, ) -> impl Iterator<Item = Handle> + 'a
All the collision object handles of collision objects in proximity of with the collision object with graph index id.
Refer to the official user guide for details.
Auto Trait Implementations§
impl<N, Handle> Freeze for InteractionGraph<N, Handle>
impl<N, Handle> !RefUnwindSafe for InteractionGraph<N, Handle>
impl<N, Handle> Send for InteractionGraph<N, Handle>
impl<N, Handle> Sync for InteractionGraph<N, Handle>
impl<N, Handle> Unpin for InteractionGraph<N, Handle>
impl<N, Handle> !UnwindSafe for InteractionGraph<N, Handle>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.