pub struct SoftVertexPass {
pub surface: ColliderHandle,
pub vertices_of: ColliderHandle,
pub cross_tangled_elements: Vec<bool>,
pub cross_tangled_vertices: Vec<bool>,
pub cross_tangled_vb_elements: Vec<bool>,
pub cross_pairs: Vec<(u32, u32)>,
pub hits: Vec<SoftVertexHits>,
pub candidates: Vec<SoftVertexCandidate>,
pub repel_guides: Vec<(Vector, Vector)>,
pub patch_inside_vb: Vec<bool>,
pub repel_inside: Vec<bool>,
/* private fields */
}Expand description
The vertex-vs-surface pass of one side of a pair of soft surfaces: the vertices of
vertices_of against the surface of surface (for a self pass, both are the same mesh).
Fields§
§surface: ColliderHandleThe collider whose surface the vertices are tested against.
vertices_of: ColliderHandleThe collider whose surface vertices are tested.
cross_tangled_elements: Vec<bool>Elements of the surface side taking part in a crossing between the two surfaces (empty while they do not cross): constraints touching them may only expel, never hold.
cross_tangled_vertices: Vec<bool>Vertices of the vertex side taking part in a crossing, same rule as
Self::cross_tangled_elements.
cross_tangled_vb_elements: Vec<bool>Element-granularity crossing flags on the vertex-side mesh.
cross_pairs: Vec<(u32, u32)>The recorded (surface-side, vertex-side) crossing element pairs.
hits: Vec<SoftVertexHits>Per tested vertex of the vertex side, its candidates against the surface side.
candidates: Vec<SoftVertexCandidate>The candidate pool the Self::hits ranges index into.
repel_guides: Vec<(Vector, Vector)>The volume normals guiding the crossing repulsion (see crossing_repulsion_guide): per
grid cell, its center and its normal from the surface side into the vertex side (for a
self pass, the push direction of the fold’s vertices, the facing surface’s the opposite).
patch_inside_vb: Vec<bool>Per vertex of the vertex side, whether it lies inside the surface side’s volume patch
(see overlap_patch_constraints; empty under the Keep policy).
repel_inside: Vec<bool>For a self pass, whether each vertex lies in its own body’s self-intersection region
(see classify_inside_self).
Implementations§
Source§impl SoftVertexPass
impl SoftVertexPass
Sourcepub fn candidates_of(&self, hit: &SoftVertexHits) -> &[SoftVertexCandidate]
pub fn candidates_of(&self, hit: &SoftVertexHits) -> &[SoftVertexCandidate]
The candidates of a vertex hit.
Trait Implementations§
Source§impl Clone for SoftVertexPass
impl Clone for SoftVertexPass
Source§fn clone(&self) -> SoftVertexPass
fn clone(&self) -> SoftVertexPass
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SoftVertexPass
impl Debug for SoftVertexPass
Source§impl Default for SoftVertexPass
impl Default for SoftVertexPass
Source§fn default() -> SoftVertexPass
fn default() -> SoftVertexPass
Auto Trait Implementations§
impl Freeze for SoftVertexPass
impl RefUnwindSafe for SoftVertexPass
impl Send for SoftVertexPass
impl Sync for SoftVertexPass
impl Unpin for SoftVertexPass
impl UnsafeUnpin for SoftVertexPass
impl UnwindSafe for SoftVertexPass
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.