Struct heron::rapier_plugin::rapier::pipeline::ContactModificationContext[]

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<ContactManifoldData, ContactData>,
    pub solver_contacts: &'a mut Vec<SolverContact, Global>,
    pub normal: &'a mut Matrix<f32, Const<{_: usize}>, Const<1_usize>, ArrayStorage<f32, 3_usize, 1_usize>>,
    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<ContactManifoldData, ContactData>

The contact manifold.

solver_contacts: &'a mut Vec<SolverContact, Global>

The solver contacts that can be modified.

normal: &'a mut Matrix<f32, Const<{_: usize}>, Const<1_usize>, ArrayStorage<f32, 3_usize, 1_usize>>

The contact normal that can be modified.

user_data: &'a mut u32

User-defined data attached to the manifold.

Implementations

impl<'a> ContactModificationContext<'a>

pub fn update_as_oneway_platform(
    &mut self,
    allowed_local_n1: &Matrix<f32, Const<{_: usize}>, Const<1_usize>, ArrayStorage<f32, 3_usize, 1_usize>>,
    allowed_angle: f32
)

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> Any for T where
    T: Any

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

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

impl<T> Component for T where
    T: 'static + Send + Sync

impl<T> Downcast for T where
    T: Any

impl<T> Downcast<T> for T

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

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

impl<T> Instrument 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>, 

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.

impl<T> Upcast<T> for T

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,