pub struct SingleModifiedSdf<M: PhysicsModifier> {
pub original: Box<dyn SdfField>,
pub modifier: M,
/* private fields */
}Expand description
Lightweight SDF wrapper for a single modifier (avoids Vec overhead).
Evaluates as a ModifiedSdf holding that one modifier: the distance is
modifier.modify_distance(p, original(p)) while
PhysicsModifier::is_active is true and original(p) otherwise, and
Self::update advances the modifier whether or not it is active.
Fields§
§original: Box<dyn SdfField>Original SDF
modifier: MThe modifier
Implementations§
Trait Implementations§
Source§impl<M: PhysicsModifier> SdfField for SingleModifiedSdf<M>
impl<M: PhysicsModifier> SdfField for SingleModifiedSdf<M>
Source§fn distance(&self, x: f32, y: f32, z: f32) -> f32
fn distance(&self, x: f32, y: f32, z: f32) -> f32
Returns the signed distance from point to the nearest surface. Read more
Source§fn normal(&self, x: f32, y: f32, z: f32) -> (f32, f32, f32)
fn normal(&self, x: f32, y: f32, z: f32) -> (f32, f32, f32)
Returns the surface normal (normalized gradient) at the given point. Read more
Source§fn distance_and_normal(&self, x: f32, y: f32, z: f32) -> (f32, (f32, f32, f32))
fn distance_and_normal(&self, x: f32, y: f32, z: f32) -> (f32, (f32, f32, f32))
Combined distance + normal query (default: two separate calls). Read more
Source§fn generation(&self) -> u64
fn generation(&self) -> u64
A number that changes whenever the field changes shape (default:
0,
a field that never changes). Read moreAuto Trait Implementations§
impl<M> !RefUnwindSafe for SingleModifiedSdf<M>
impl<M> !UnwindSafe for SingleModifiedSdf<M>
impl<M> Freeze for SingleModifiedSdf<M>where
M: Freeze,
impl<M> Send for SingleModifiedSdf<M>
impl<M> Sync for SingleModifiedSdf<M>
impl<M> Unpin for SingleModifiedSdf<M>where
M: Unpin,
impl<M> UnsafeUnpin for SingleModifiedSdf<M>where
M: UnsafeUnpin,
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> 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> ⓘ
Converts
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> ⓘ
Converts
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> SdfQuery for T
impl<T> SdfQuery for T
Source§fn query_distance(&self, x: f32, y: f32, z: f32) -> f32
fn query_distance(&self, x: f32, y: f32, z: f32) -> f32
Signed distance from the point to the nearest surface (positive
outside), as
SdfField::distance.Source§fn query_normal(&self, x: f32, y: f32, z: f32) -> (f32, f32, f32)
fn query_normal(&self, x: f32, y: f32, z: f32) -> (f32, f32, f32)
Outward surface normal at the point, as
SdfField::normal.