Struct bevy_rapier2d::prelude::ContactModificationContext[][src]

pub struct ContactModificationContext<'a, Bodies, Colliders> {
    pub bodies: &'a Bodies,
    pub colliders: &'a Colliders,
    pub collider1: ColliderHandle,
    pub collider2: ColliderHandle,
    pub rigid_body1: Option<RigidBodyHandle>,
    pub rigid_body2: Option<RigidBodyHandle>,
    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, 2_usize, 1_usize>>,
    pub user_data: &'a mut u32,
}
Expand description

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

Fields

bodies: &'a Bodies

The set of rigid-bodies.

colliders: &'a Colliders

The set of colliders.

collider1: ColliderHandle

The handle of the first collider involved in the potential collision.

collider2: ColliderHandle

The handle of the first collider involved in the potential collision.

rigid_body1: Option<RigidBodyHandle>

The handle of the first body involved in the potential collision.

rigid_body2: Option<RigidBodyHandle>

The handle of the first body 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, 2_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, Bodies, Colliders> ContactModificationContext<'a, Bodies, Colliders>[src]

pub fn update_as_oneway_platform(
    &mut self,
    allowed_local_n1: &Matrix<f32, Const<{_: usize}>, Const<1_usize>, ArrayStorage<f32, 2_usize, 1_usize>>,
    allowed_angle: f32
)
[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

impl<'a, Bodies, Colliders> RefUnwindSafe for ContactModificationContext<'a, Bodies, Colliders> where
    Bodies: RefUnwindSafe,
    Colliders: RefUnwindSafe

impl<'a, Bodies, Colliders> Send for ContactModificationContext<'a, Bodies, Colliders> where
    Bodies: Sync,
    Colliders: Sync

impl<'a, Bodies, Colliders> Sync for ContactModificationContext<'a, Bodies, Colliders> where
    Bodies: Sync,
    Colliders: Sync

impl<'a, Bodies, Colliders> Unpin for ContactModificationContext<'a, Bodies, Colliders>

impl<'a, Bodies, Colliders> !UnwindSafe for ContactModificationContext<'a, Bodies, Colliders>

Blanket Implementations

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

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

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

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

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

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> Downcast for T where
    T: Any

pub fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>

Convert 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. Read more

pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more

pub fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s. Read more

pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s. Read more

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

pub fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + 'static + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait. Read more

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

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T> Instrument for T[src]

fn instrument(self, span: Span) -> Instrumented<Self>[src]

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

fn in_current_span(self) -> Instrumented<Self>[src]

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

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

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> Pointable for T

pub const ALIGN: usize

The alignment of pointer.

type Init = T

The type for initializers.

pub unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more

pub unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more

pub unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more

pub unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<SS, SP> SupersetOf<SS> for SP where
    SS: SubsetOf<SP>, 

pub fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more

pub fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).

pub fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.

pub fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.

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.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

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.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

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

pub fn vzip(self) -> V

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