Struct rhusics_ecs::ContactResolutionSystem[][src]

pub struct ContactResolutionSystem<P, R, I, A, O, T> where
    P: EuclideanSpace + 'static,
    P::Diff: Debug
{ /* fields omitted */ }

Do single contact, forward resolution.

Type parameters:

  • P: Positional quantity, usually Point2 or Point3
  • R: Rotational quantity, usually Basis2 or Quaternion
  • I: Inertia, usually Scalar or Matrix3
  • A: Angular velocity, usually Scalar or Vector3
  • O: Internal type used for abstracting over cross products in 2D/3D, usually Scalar or Vector3
  • T: Transform type (BodyPose2 or similar)

System function

fn(EventChannel<ContactEvent>, Mass, RigidBody, T, NextFrame<Velocity>, NextFrame<T>) -> (NextFrame<Velocity>, NextFrame<T>)

Methods

impl<P, R, I, A, O, T> ContactResolutionSystem<P, R, I, A, O, T> where
    T: Pose<P, R>,
    P: EuclideanSpace,
    P::Scalar: BaseFloat,
    P::Diff: VectorSpace + InnerSpace + Debug + PartialCrossProduct<P::Diff, Output = O>,
    R: Rotation<P> + ApplyAngular<P::Scalar, A>,
    O: PartialCrossProduct<P::Diff, Output = P::Diff>,
    A: PartialCrossProduct<P::Diff, Output = P::Diff> + Clone + Zero,
    &'b A: Sub<O, Output = A> + Add<O, Output = A>,
    I: Inertia<Orientation = R> + Mul<O, Output = O>, 
[src]

Create system.

Trait Implementations

impl<'a, P, R, I, A, O, T> System<'a> for ContactResolutionSystem<P, R, I, A, O, T> where
    T: Pose<P, R> + Component + Send + Sync + 'static,
    P: EuclideanSpace + Send + Sync + 'static,
    P::Scalar: BaseFloat + Send + Sync + 'static,
    P::Diff: VectorSpace + InnerSpace + Debug + Send + Sync + 'static + PartialCrossProduct<P::Diff, Output = O>,
    R: Rotation<P> + ApplyAngular<P::Scalar, A> + Send + Sync + 'static,
    O: PartialCrossProduct<P::Diff, Output = P::Diff>,
    A: PartialCrossProduct<P::Diff, Output = P::Diff> + Clone + Zero + Send + Sync + 'static,
    &'b A: Sub<O, Output = A> + Add<O, Output = A>,
    I: Inertia<Orientation = R> + Mul<O, Output = O> + Send + Sync + 'static, 
[src]

The resource bundle required to execute this system. Read more

Executes the system with the required system data. Read more

Sets up the Resources using Self::SystemData::setup.

Returns a hint how long the system needs for running. This is used to optimize the way they're executed (might allow more parallelization). Read more

Return the accessor from the [SystemData].

Auto Trait Implementations

impl<P, R, I, A, O, T> Send for ContactResolutionSystem<P, R, I, A, O, T> where
    A: Send,
    I: Send,
    O: Send,
    P: Sync,
    R: Send,
    T: Send,
    <P as EuclideanSpace>::Diff: Sync,
    <P as EuclideanSpace>::Scalar: Sync

impl<P, R, I, A, O, T> Sync for ContactResolutionSystem<P, R, I, A, O, T> where
    A: Sync,
    I: Sync,
    O: Sync,
    P: Sync,
    R: Sync,
    T: Sync,
    <P as EuclideanSpace>::Diff: Sync,
    <P as EuclideanSpace>::Scalar: Sync