pub struct DebrisImpact {
pub island: Island,
pub grid: GridId,
pub pos: DVec3,
pub speed: f64,
pub voxel_world_size: f64,
}Expand description
One landed island, drained via DebrisSystem::drain_impacts:
everything the shatter needs.
Fields§
§island: IslandThe island’s voxels + colours (grid-local, as detected) — the shatter burst samples these, not the sprite model.
grid: GridIdThe grid the island was extracted from.
pos: DVec3World position of the island’s pivot (bbox centre) at rest — flush on the surface it hit.
speed: f64Impact speed in world units/second (≤ the terminal clamp).
voxel_world_size: f64The source grid’s world units per voxel at extraction time —
kept here so Self::burst_sites stays self-contained even if
the grid is gone by shatter time.
Implementations§
Source§impl DebrisImpact
impl DebrisImpact
Sourcepub fn burst_sites(&self) -> Vec<([f32; 3], Rgb)>
pub fn burst_sites(&self) -> Vec<([f32; 3], Rgb)>
DT.3 — the world-space burst sites for the shatter: every
island voxel’s centre, translated to where the body landed
(its grid-local offset from the bbox centre, scaled by the
source grid’s voxel size, applied around Self::pos; the
cosmetic yaw is ignored, matching the axis-aligned collision
box). Feed straight into
ParticleSystem::voxel_debris
with from = pos for the colour-true shatter.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for DebrisImpact
impl RefUnwindSafe for DebrisImpact
impl Send for DebrisImpact
impl Sync for DebrisImpact
impl Unpin for DebrisImpact
impl UnsafeUnpin for DebrisImpact
impl UnwindSafe for DebrisImpact
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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>. 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>
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)
&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> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 more