Struct rapier3d::pipeline::ContactModificationContext[][src]

pub struct ContactModificationContext<'a> {
    pub rigid_body1: &'a RigidBody,
    pub rigid_body2: &'a RigidBody,
    pub collider_handle1: ColliderHandle,
    pub collider_handle2: ColliderHandle,
    pub collider1: &'a Collider,
    pub collider2: &'a Collider,
    pub manifold: &'a ContactManifold,
    pub solver_contacts: &'a mut Vec<SolverContact>,
    pub normal: &'a mut Vector<Real>,
    pub user_data: &'a mut u32,
}

Context given to custom contact modifiers to modify the contacts seen by the constraints solver.

Fields

rigid_body1: &'a RigidBody

The first collider involved in the potential collision.

rigid_body2: &'a RigidBody

The first collider involved in the potential collision.

collider_handle1: ColliderHandle

The first collider involved in the potential collision.

collider_handle2: ColliderHandle

The first collider involved in the potential collision.

collider1: &'a Collider

The first collider involved in the potential collision.

collider2: &'a Collider

The first collider involved in the potential collision.

manifold: &'a ContactManifold

The contact manifold.

solver_contacts: &'a mut Vec<SolverContact>

The solver contacts that can be modified.

normal: &'a mut Vector<Real>

The contact normal that can be modified.

user_data: &'a mut u32

User-defined data attached to the manifold.

Implementations

impl<'a> ContactModificationContext<'a>[src]

pub fn update_as_oneway_platform(
    &mut self,
    allowed_local_n1: &Vector<Real>,
    allowed_angle: Real
)
[src]

Helper function to update self to emulate a oneway-platform.

The “oneway” behavior will only allow contacts between two colliders if the local contact normal of the first collider involved in the contact is almost aligned with the provided allowed_local_n1 direction.

To make this method work properly it must be called as part of the PhysicsHooks::modify_solver_contacts method at each timestep, for each contact manifold involving a one-way platform. The self.user_data field must not be modified from the outside of this method.

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Downcast for T where
    T: Any
[src]

impl<T> DowncastSync for T where
    T: Any + Send + Sync
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Pointable for T

type Init = T

The type for initializers.

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<SS, SP> SupersetOf<SS> for SP where
    SS: SubsetOf<SP>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.