Enum bevy_xpbd_3d::SubstepSet
source · pub enum SubstepSet {
Integrate,
NarrowPhase,
PostProcessCollisions,
SolveConstraints,
SolveUserConstraints,
UpdateVelocities,
SolveVelocities,
StoreImpulses,
ApplyTranslation,
}Expand description
System sets for the the steps in the inner substepping loop. These are typically run in the SubstepSchedule.
- Integrate
- Narrow phase
- Post-process collisions
- Solve positional and angular constraints
- Update velocities
- Solve velocity constraints (dynamic friction and restitution)
- Store contact impulses in
Collisions. - Apply
AccumulatedTranslationto positions.
Variants§
Integrate
Responsible for integrating Newton’s 2nd law of motion, applying forces and moving entities according to their velocities.
See IntegratorPlugin.
NarrowPhase
Responsible for computing contacts between entities and sending collision events.
See NarrowPhasePlugin.
PostProcessCollisions
Responsible for running the PostProcessCollisions schedule to allow user-defined systems
to filter and modify collisions.
If you want to modify or remove collisions after SubstepSet::NarrowPhase, you can
add custom systems to this set, or to PostProcessCollisions.
See NarrowPhasePlugin.
SolveConstraints
The solver iterates through constraints and solves them.
Note: If you want to create your own constraints,
you should add them in SubstepSet::SolveUserConstraints
to avoid system order ambiguities.
See SolverPlugin.
SolveUserConstraints
The solver iterates through custom constraints created by the user and solves them.
You can create new constraints by implementing XpbdConstraint
for a component and adding the constraint system to this set.
See SolverPlugin.
UpdateVelocities
Responsible for updating velocities after constraint solving.
See SolverPlugin.
SolveVelocities
Responsible for applying dynamic friction, restitution and joint damping at the end of the substepping loop.
See SolverPlugin.
StoreImpulses
Contact impulses computed by the solver are stored in contacts in Collisions.
See SolverPlugin.
ApplyTranslation
Responsible for applying translation accumulated during the substep.
See SolverPlugin.
Trait Implementations§
source§impl Clone for SubstepSet
impl Clone for SubstepSet
source§fn clone(&self) -> SubstepSet
fn clone(&self) -> SubstepSet
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Debug for SubstepSet
impl Debug for SubstepSet
source§impl Hash for SubstepSet
impl Hash for SubstepSet
source§impl PartialEq for SubstepSet
impl PartialEq for SubstepSet
source§fn eq(&self, other: &SubstepSet) -> bool
fn eq(&self, other: &SubstepSet) -> bool
self and other values to be equal, and is used
by ==.source§impl SystemSet for SubstepSet
impl SystemSet for SubstepSet
source§fn as_dyn_eq(&self) -> &dyn DynEq
fn as_dyn_eq(&self) -> &dyn DynEq
§fn system_type(&self) -> Option<TypeId>
fn system_type(&self) -> Option<TypeId>
Some if this system set is a [SystemTypeSet].§fn is_anonymous(&self) -> bool
fn is_anonymous(&self) -> bool
true if this system set is an [AnonymousSet].impl Copy for SubstepSet
impl Eq for SubstepSet
impl StructuralPartialEq for SubstepSet
Auto Trait Implementations§
impl RefUnwindSafe for SubstepSet
impl Send for SubstepSet
impl Sync for SubstepSet
impl Unpin for SubstepSet
impl UnwindSafe for SubstepSet
Blanket Implementations§
§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
§fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> 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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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.§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.§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.§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.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> DynEq for T
impl<T> DynEq for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<S> IntoSystemSet<()> for Swhere
S: SystemSet,
impl<S> IntoSystemSet<()> for Swhere
S: SystemSet,
§fn into_system_set(self) -> <S as IntoSystemSet<()>>::Set
fn into_system_set(self) -> <S as IntoSystemSet<()>>::Set
SystemSet] type.§impl<S> IntoSystemSetConfigs for Swhere
S: SystemSet,
impl<S> IntoSystemSetConfigs for Swhere
S: SystemSet,
fn into_configs(self) -> NodeConfigs<Interned<dyn SystemSet>>
§fn in_set(self, set: impl SystemSet) -> NodeConfigs<Interned<dyn SystemSet>>
fn in_set(self, set: impl SystemSet) -> NodeConfigs<Interned<dyn SystemSet>>
set.§fn before_ignore_deferred<M>(
self,
set: impl IntoSystemSet<M>
) -> NodeConfigs<Interned<dyn SystemSet>>
fn before_ignore_deferred<M>( self, set: impl IntoSystemSet<M> ) -> NodeConfigs<Interned<dyn SystemSet>>
set. Read more§fn after_ignore_deferred<M>(
self,
set: impl IntoSystemSet<M>
) -> NodeConfigs<Interned<dyn SystemSet>>
fn after_ignore_deferred<M>( self, set: impl IntoSystemSet<M> ) -> NodeConfigs<Interned<dyn SystemSet>>
set. Read more§fn ambiguous_with<M>(
self,
set: impl IntoSystemSet<M>
) -> NodeConfigs<Interned<dyn SystemSet>>
fn ambiguous_with<M>( self, set: impl IntoSystemSet<M> ) -> NodeConfigs<Interned<dyn SystemSet>>
set.§fn ambiguous_with_all(self) -> NodeConfigs<Interned<dyn SystemSet>>
fn ambiguous_with_all(self) -> NodeConfigs<Interned<dyn SystemSet>>
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§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).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.