pub struct ContactPairView<'a> {
pub raw: &'a ContactPair,
/* private fields */
}Expand description
Read-only access to the properties of a contact pair.
Fields§
§raw: &'a ContactPairThe raw contact pair from Rapier.
Implementations§
Source§impl ContactPairView<'_>
impl ContactPairView<'_>
Sourcepub fn manifolds_len(&self) -> usize
pub fn manifolds_len(&self) -> usize
The number of contact manifolds detected for this contact pair.
Sourcepub fn manifold(&self, i: usize) -> Option<ContactManifoldView<'_>>
pub fn manifold(&self, i: usize) -> Option<ContactManifoldView<'_>>
Gets the i-th contact manifold.
Sourcepub fn manifolds(
&self,
) -> impl ExactSizeIterator<Item = ContactManifoldView<'_>>
pub fn manifolds( &self, ) -> impl ExactSizeIterator<Item = ContactManifoldView<'_>>
Iterate through all the contact manifolds of this contact pair.
Sourcepub fn has_any_active_contact(&self) -> bool
pub fn has_any_active_contact(&self) -> bool
Is there any active contact in this contact pair?
Sourcepub fn is_rigid(&self) -> bool
pub fn is_rigid(&self) -> bool
Does this pair hold contact manifolds (every pair except two soft surfaces)?
Sourcepub fn is_soft(&self) -> bool
pub fn is_soft(&self) -> bool
Is this a pair of two soft surfaces, whose contacts are candidates instead of manifolds?
Such pairs have no manifolds; their candidates can be read through
Self::soft_contacts.
Sourcepub fn contacts(&self) -> &PairContacts
pub fn contacts(&self) -> &PairContacts
The contacts of this pair: manifolds, or the contact candidates of two soft surfaces.
Sourcepub fn soft_contacts(&self) -> Option<&SoftPairContacts>
pub fn soft_contacts(&self) -> Option<&SoftPairContacts>
The contact candidates of a pair of two soft surfaces (None for other pairs).
Sourcepub fn soft_touching(&self) -> Option<bool>
pub fn soft_touching(&self) -> Option<bool>
Whether the two soft surfaces of this pair touch: some feature of one surface is within
contact reach of the other, or the two surfaces cross (None for other pairs).
Sourcepub fn solver_manifolds_len(&self) -> usize
pub fn solver_manifolds_len(&self) -> usize
The number of manifolds seen by the constraints solver, see Self::solver_manifolds.
Sourcepub fn solver_manifolds(
&self,
) -> impl ExactSizeIterator<Item = ContactManifoldView<'_>>
pub fn solver_manifolds( &self, ) -> impl ExactSizeIterator<Item = ContactManifoldView<'_>>
Iterate through the contact manifolds actually seen by the constraints solver.
These are the contact clusters if contact clustering applied to this pair (merging the
manifolds sharing nearly the same normal), and the plain Self::manifolds otherwise.
The contact impulses applied by the solver are stored in these manifolds.
Sourcepub fn total_impulse(&self) -> Vect
pub fn total_impulse(&self) -> Vect
The sum of all the contact impulses applied by the solver to the first collider during the last timestep.
Divide by the timestep length to obtain a force.
Sourcepub fn total_impulse_magnitude(&self) -> Real
pub fn total_impulse_magnitude(&self) -> Real
The sum of the magnitudes of all the contact impulses applied during the last timestep.
This is not the magnitude of Self::total_impulse; it is the quantity compared against
the contact force event threshold (after conversion to a force).
Sourcepub fn max_impulse(&self) -> (Real, Vect)
pub fn max_impulse(&self) -> (Real, Vect)
The magnitude and world-space direction of the strongest contact impulse applied during the last timestep.
Sourcepub fn find_deepest_contact(
&self,
) -> Option<(ContactManifoldView<'_>, ContactView<'_>)>
pub fn find_deepest_contact( &self, ) -> Option<(ContactManifoldView<'_>, ContactView<'_>)>
Finds the contact with the smallest signed distance.
If the colliders involved in this contact pair are penetrating, then this returns the contact with the largest penetration depth.
Returns a reference to the contact, as well as the contact manifold it is part of.
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for ContactPairView<'a>
impl<'a> !UnwindSafe for ContactPairView<'a>
impl<'a> Freeze for ContactPairView<'a>
impl<'a> Send for ContactPairView<'a>
impl<'a> Sync for ContactPairView<'a>
impl<'a> Unpin for ContactPairView<'a>
impl<'a> UnsafeUnpin for ContactPairView<'a>
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T ShaderType for self. When used in AsBindGroup
derives, it is safe to assume that all images in self exist.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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> ConditionalSend for Twhere
T: Send,
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>, which can then be
downcast into Box<dyn 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>, which 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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
Source§fn into_result(self) -> Result<T, RunSystemError>
fn into_result(self) -> Result<T, RunSystemError>
impl<T> MaybeSync for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
impl<T> Settings 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.