easing
The easing namespace provides Robert Pennerโs standard easing algorithms.
Function Signature
Section titled โFunction SignatureโAll easing functions follow the standard signature:
easing.<function>(time: number, begin: number, change: number, duration: number) --> numbertime: Current elapsed progression time (0 .. duration).begin: Starting value.change: Total delta to change (target - begin).duration: Total duration of the transition.
Available Easing Families
Section titled โAvailable Easing Familiesโeasing.linear(t, b, c, d)
Curve Families
Section titled โCurve FamiliesโEach family provides 4 variations: _in, _out, _in_out, and _out_in:
| Family | Variations |
|---|---|
quad |
easing.quad_in, quad_out, quad_in_out, quad_out_in |
cubic |
easing.cubic_in, cubic_out, cubic_in_out, cubic_out_in |
quart |
easing.quart_in, quart_out, quart_in_out, quart_out_in |
quint |
easing.quint_in, quint_out, quint_in_out, quint_out_in |
sine |
easing.sine_in, sine_out, sine_in_out, sine_out_in |
expo |
easing.expo_in, expo_out, expo_in_out, expo_out_in |
circ |
easing.circ_in, circ_out, circ_in_out, circ_out_in |
elastic |
easing.elastic_in, elastic_out, elastic_in_out, elastic_out_in |
back |
easing.back_in, back_out, back_in_out, back_out_in |
bounce |
easing.bounce_in, bounce_out, bounce_in_out, bounce_out_in |
Example: Smooth Menu Slide-in
Section titled โExample: Smooth Menu Slide-inโlocal anim_start = 0local anim_duration = 0.35 -- 350ms
client.add_callback("render", function() local elapsed = globals.realtime - anim_start local clamped_t = math.min(elapsed, anim_duration)
-- Smoothly interpolate X coordinate from 0 to 200 using quintic out local current_x = easing.quint_out(clamped_t, 0, 200, anim_duration)
render.rect(vector(current_x, 100), vector(current_x + 150, 200), color(20, 20, 20, 200))end)