pub struct SoftBodyEdge {
pub vertices: [u32; 2],
pub rest_length: f32,
pub kind: SoftBodyEdgeKind,
pub tension_only: bool,
pub softness: Option<SpringCoefficients<f32>>,
pub tear_resistance: f32,
/* private fields */
}Expand description
A distance constraint between two particles of a soft body.
Fields§
§vertices: [u32; 2]The two particles.
rest_length: f32The distance the edge tries to maintain.
kind: SoftBodyEdgeKindStructural or bending edge.
tension_only: boolIf true, the edge only resists stretching (a rope segment), never compression.
softness: Option<SpringCoefficients<f32>>Softness of this edge, overriding the material’s (edge_softness / bend_softness)
when set: anisotropic cloth (warp, weft and shear stiffness), stiffer seams…
tear_resistance: f32Multiplier of the material’s tear thresholds for this edge (default 1.0): a seam that
holds, a perforation that gives. Usually set through crate::dynamics::SoftBody::set_edge_tear_resistance
or crate::dynamics::SoftBody::set_cluster_tear_resistance.
Implementations§
Source§impl SoftBodyEdge
impl SoftBodyEdge
Sourcepub fn impulse(&self) -> f32
pub fn impulse(&self) -> f32
The impulse this edge applied during the last substep, along the edge direction (positive when the edge was resisting stretching).
Sourcepub fn stress(&self) -> f32
pub fn stress(&self) -> f32
Load of this edge as a fraction of its tear threshold, smoothed over
SoftBodyMaterial::tear_smoothing: 0.0 slack, 1.0 tearing. The larger of the stretch
over tear_strain and the force over tear_force; 0.0 while the material has neither.
Source§impl SoftBodyEdge
impl SoftBodyEdge
Sourcepub fn plastic_strain(&self) -> f32
pub fn plastic_strain(&self) -> f32
The permanent set of this edge: how far its rest length has flowed from the length it was
created with, as a fraction of that length (negative: a squeeze that stayed, positive: a
stretch that stayed; see SoftBodyMaterial::edge_plastic_yield).
Sourcepub fn initial_rest_length(&self) -> f32
pub fn initial_rest_length(&self) -> f32
The rest length this edge was created with (its rest_length before any plastic flow).
The tear strain is measured against it, so plastic flow counts toward a tear.
Trait Implementations§
Source§impl Clone for SoftBodyEdge
impl Clone for SoftBodyEdge
Source§fn clone(&self) -> SoftBodyEdge
fn clone(&self) -> SoftBodyEdge
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for SoftBodyEdge
Auto Trait Implementations§
impl Freeze for SoftBodyEdge
impl RefUnwindSafe for SoftBodyEdge
impl Send for SoftBodyEdge
impl Sync for SoftBodyEdge
impl Unpin for SoftBodyEdge
impl UnsafeUnpin for SoftBodyEdge
impl UnwindSafe for SoftBodyEdge
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
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>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn 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>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which 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)
&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)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreimpl<T> MaybeSync for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§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).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.