pub struct CohesionManager {
pub glyphs: Vec<GlyphCohesion>,
pub cohesion: f32,
pub dissolution: Option<f32>,
pub burst_velocities: Vec<Vec3>,
}Expand description
Manages cohesion for all glyphs in an entity.
Fields§
§glyphs: Vec<GlyphCohesion>§cohesion: f32Entity-level cohesion [0, 1]. 0 = chaotic, 1 = perfectly bound.
dissolution: Option<f32>Dissolution state: None = intact, Some(t) = dissolving (t = time since start).
burst_velocities: Vec<Vec3>Velocity vectors set during dissolution burst.
Implementations§
Source§impl CohesionManager
impl CohesionManager
Sourcepub fn tick(&mut self, dt: f32) -> Vec<Vec3>
pub fn tick(&mut self, dt: f32) -> Vec<Vec3>
Tick all glyph springs by dt. Returns Vec of positions.
Sourcepub fn damage_cohesion(&mut self, amount: f32)
pub fn damage_cohesion(&mut self, amount: f32)
Apply damage to cohesion (reduce it by amount).
Sourcepub fn restore_cohesion(&mut self, amount: f32)
pub fn restore_cohesion(&mut self, amount: f32)
Restore cohesion (healing effect).
Sourcepub fn heat_all(&mut self, temperature: f32, time: f32)
pub fn heat_all(&mut self, temperature: f32, time: f32)
Apply thermal energy to all glyphs (makes them jitter).
Sourcepub fn apply_shockwave(&mut self, center: Vec3, strength: f32)
pub fn apply_shockwave(&mut self, center: Vec3, strength: f32)
Apply an outward impulse from center (e.g. shockwave impact).
Sourcepub fn apply_force(&mut self, force: Vec3)
pub fn apply_force(&mut self, force: Vec3)
Apply a directional force to all glyphs.
Sourcepub fn update_targets(&mut self, new_positions: &[Vec3])
pub fn update_targets(&mut self, new_positions: &[Vec3])
Update formation targets (e.g. entity moved, or formation changed).
Sourcepub fn teleport_all(&mut self, positions: &[Vec3])
pub fn teleport_all(&mut self, positions: &[Vec3])
Teleport all glyphs instantly to formation positions (no animation).
Sourcepub fn is_dissolving(&self) -> bool
pub fn is_dissolving(&self) -> bool
Whether the entity is currently dissolving.
Sourcepub fn is_dissolved(&self) -> bool
pub fn is_dissolved(&self) -> bool
Whether dissolution is complete (> 2 seconds have elapsed).
Sourcepub fn max_drift(&self) -> f32
pub fn max_drift(&self) -> f32
Max drift across all glyphs (measures how chaotic the formation is).
Sourcepub fn avg_temperature(&self) -> f32
pub fn avg_temperature(&self) -> f32
Average temperature.
Auto Trait Implementations§
impl Freeze for CohesionManager
impl RefUnwindSafe for CohesionManager
impl Send for CohesionManager
impl Sync for CohesionManager
impl Unpin for CohesionManager
impl UnsafeUnpin for CohesionManager
impl UnwindSafe for CohesionManager
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> 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.