Struct avian3d::collision::ContactManifold
source · pub struct ContactManifold {
pub contacts: Vec<ContactData>,
pub normal1: Vector,
pub normal2: Vector,
pub index: usize,
}
Expand description
A contact manifold between two colliders, containing a set of contact points. Each contact in a manifold shares the same contact normal.
Fields§
§contacts: Vec<ContactData>
The contacts in this manifold.
normal1: Vector
A contact normal shared by all contacts in this manifold, expressed in the local space of the first entity.
normal2: Vector
A contact normal shared by all contacts in this manifold, expressed in the local space of the second entity.
index: usize
The index of the manifold in the collision.
Implementations§
source§impl ContactManifold
impl ContactManifold
sourcepub fn global_normal1(&self, rotation: &Rotation) -> Vector
pub fn global_normal1(&self, rotation: &Rotation) -> Vector
Returns the world-space contact normal pointing towards the exterior of the first entity.
sourcepub fn global_normal2(&self, rotation: &Rotation) -> Vector
pub fn global_normal2(&self, rotation: &Rotation) -> Vector
Returns the world-space contact normal pointing towards the exterior of the second entity.
sourcepub fn match_contacts(
&mut self,
previous_contacts: &[ContactData],
distance_threshold: Scalar
)
pub fn match_contacts( &mut self, previous_contacts: &[ContactData], distance_threshold: Scalar )
Copies impulses from previous contacts to matching contacts in self
.
Contacts are first matched based on their feature IDs, and if they are unknown,
matching is done based on contact positions using the given distance_threshold
for determining if points are too far away from each other to be considered matching.
Trait Implementations§
source§impl Clone for ContactManifold
impl Clone for ContactManifold
source§fn clone(&self) -> ContactManifold
fn clone(&self) -> ContactManifold
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for ContactManifold
impl Debug for ContactManifold
source§impl PartialEq for ContactManifold
impl PartialEq for ContactManifold
source§fn eq(&self, other: &ContactManifold) -> bool
fn eq(&self, other: &ContactManifold) -> bool
self
and other
values to be equal, and is used
by ==
.impl StructuralPartialEq for ContactManifold
Auto Trait Implementations§
impl Freeze for ContactManifold
impl RefUnwindSafe for ContactManifold
impl Send for ContactManifold
impl Sync for ContactManifold
impl Unpin for ContactManifold
impl UnwindSafe for ContactManifold
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
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<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> Pointable for T
impl<T> Pointable 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.