pub struct MomentumScroller {
pub position: f32,
pub scale: f32,
pub velocity: f32,
pub friction: f32,
pub min_velocity: f32,
}Expand description
Scroll offset with velocity-based momentum and frame-rate-independent friction.
Fields§
§position: f32Current scroll offset on this axis.
scale: f32Multiplier applied to scroll deltas.
velocity: f32Current scroll velocity in pixels per second.
friction: f32Stored friction factor (1.0 − friction passed to new).
Momentum decay uses friction.powf(dt * 60.0) each frame.
min_velocity: f32Velocity magnitudes below this threshold are zeroed out.
Implementations§
Source§impl MomentumScroller
impl MomentumScroller
Sourcepub fn new(scale: f32, friction: f32, min_velocity: f32) -> Self
pub fn new(scale: f32, friction: f32, min_velocity: f32) -> Self
Creates a momentum scroller at position zero.
scale— multiplier for scroll deltas.friction— per-60-fps-step decay factor; must satisfy0.0 < friction < 1.0. Stored internally as1.0 - friction.min_velocity— stop threshold; must be positive.
§Panics
Panics if friction is not in (0.0, 1.0) or if min_velocity <= 0.0.
Sourcepub fn direct_set_position(&mut self, position: f32)
pub fn direct_set_position(&mut self, position: f32)
Sets the scroll position and clears velocity.
Sourcepub fn update(&mut self, d_scroll: f32, dt: f32)
pub fn update(&mut self, d_scroll: f32, dt: f32)
Advances scroll state for one frame.
When d_scroll != 0, applies the delta and sets velocity from d_scroll / dt.
When d_scroll == 0, applies momentum with friction decay.
§Examples
use cotis_interactivity::scroll::MomentumScroller;
let mut scroller = MomentumScroller::new(1.0, 0.1, 0.5);
scroller.update(10.0, 1.0 / 60.0);
assert!(scroller.get_position() > 0.0);
// Momentum continues when no new delta is applied
scroller.update(0.0, 1.0 / 60.0);
assert!(scroller.velocity.abs() > 0.0 || scroller.get_position() > 10.0);Sourcepub fn get_position(&self) -> f32
pub fn get_position(&self) -> f32
Returns the current scroll offset.
Trait Implementations§
Source§impl Clone for MomentumScroller
impl Clone for MomentumScroller
Source§fn clone(&self) -> MomentumScroller
fn clone(&self) -> MomentumScroller
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for MomentumScroller
Auto Trait Implementations§
impl Freeze for MomentumScroller
impl RefUnwindSafe for MomentumScroller
impl Send for MomentumScroller
impl Sync for MomentumScroller
impl Unpin for MomentumScroller
impl UnsafeUnpin for MomentumScroller
impl UnwindSafe for MomentumScroller
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