pub struct MaxDistanceConstraint {
pub body_a: BodyHandle,
pub body_b: BodyHandle,
pub anchor_a: Vec2,
pub anchor_b: Vec2,
pub max_distance: f32,
pub compliance: f32,
/* private fields */
}Expand description
Soft rope: only constrains when distance exceeds max_distance.
Fields§
§body_a: BodyHandle§body_b: BodyHandle§anchor_a: Vec2§anchor_b: Vec2§max_distance: f32§compliance: f32Implementations§
Source§impl MaxDistanceConstraint
impl MaxDistanceConstraint
pub fn new( a: BodyHandle, aa: Vec2, b: BodyHandle, ab: Vec2, max_dist: f32, ) -> Self
Trait Implementations§
Source§impl Clone for MaxDistanceConstraint
impl Clone for MaxDistanceConstraint
Source§fn clone(&self) -> MaxDistanceConstraint
fn clone(&self) -> MaxDistanceConstraint
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Constraint for MaxDistanceConstraint
impl Constraint for MaxDistanceConstraint
Source§fn compute_c(&self, bodies: &HashMap<BodyHandle, BodyState>) -> f32
fn compute_c(&self, bodies: &HashMap<BodyHandle, BodyState>) -> f32
Compute the position constraint violation (C).
Source§fn compute_cdot(&self, bodies: &HashMap<BodyHandle, BodyState>) -> f32
fn compute_cdot(&self, bodies: &HashMap<BodyHandle, BodyState>) -> f32
Compute the velocity constraint violation (Cdot = J * v).
Source§fn get_compliance(&self) -> f32
fn get_compliance(&self) -> f32
XPBD compliance (inverse stiffness). 0 = rigid.
Source§fn effective_mass(&self, bodies: &HashMap<BodyHandle, BodyState>) -> f32
fn effective_mass(&self, bodies: &HashMap<BodyHandle, BodyState>) -> f32
Compute effective constraint mass (1 / (J M^-1 J^T)).
Source§fn apply_impulse(
&self,
bodies: &mut HashMap<BodyHandle, BodyState>,
lambda: f32,
)
fn apply_impulse( &self, bodies: &mut HashMap<BodyHandle, BodyState>, lambda: f32, )
Apply the corrective impulse to body states.
Source§fn impulse_bounds(&self) -> (f32, f32)
fn impulse_bounds(&self) -> (f32, f32)
Whether this constraint has an upper/lower impulse clamp.
Source§fn accumulated_impulse(&self) -> f32
fn accumulated_impulse(&self) -> f32
Accumulated impulse for warm starting.
fn reset_accumulated(&mut self)
fn add_accumulated(&mut self, d: f32)
Source§fn body_handles(&self) -> Vec<BodyHandle>
fn body_handles(&self) -> Vec<BodyHandle>
Bodies involved in this constraint.
Source§fn bias(&self, bodies: &HashMap<BodyHandle, BodyState>, dt: f32) -> f32
fn bias(&self, bodies: &HashMap<BodyHandle, BodyState>, dt: f32) -> f32
Baumgarte position bias.
Source§fn prepare(&mut self, _bodies: &HashMap<BodyHandle, BodyState>, _dt: f32)
fn prepare(&mut self, _bodies: &HashMap<BodyHandle, BodyState>, _dt: f32)
Prepare the constraint for the current step (pre-compute cached values).
Source§fn solve_velocity(
&mut self,
bodies: &mut HashMap<BodyHandle, BodyState>,
dt: f32,
)
fn solve_velocity( &mut self, bodies: &mut HashMap<BodyHandle, BodyState>, dt: f32, )
Solve velocity constraint (one iteration).
Source§fn solve_position(
&mut self,
bodies: &mut HashMap<BodyHandle, BodyState>,
dt: f32,
)
fn solve_position( &mut self, bodies: &mut HashMap<BodyHandle, BodyState>, dt: f32, )
Solve position constraint using XPBD (one sub-step).
Auto Trait Implementations§
impl Freeze for MaxDistanceConstraint
impl RefUnwindSafe for MaxDistanceConstraint
impl Send for MaxDistanceConstraint
impl Sync for MaxDistanceConstraint
impl Unpin for MaxDistanceConstraint
impl UnsafeUnpin for MaxDistanceConstraint
impl UnwindSafe for MaxDistanceConstraint
Blanket Implementations§
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
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.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
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.