Easing Functions

Animation System Updated: Dec 10, 2025

Easing Functions

Available Easings

Linear

cLib.Ease.Linear  -- No easing, constant speed

Quad (Power of 2)

cLib.Ease.InQuad     -- Accelerate
cLib.Ease.OutQuad    -- Decelerate
cLib.Ease.InOutQuad  -- Accelerate then decelerate

Cubic (Power of 3)

cLib.Ease.InCubic
cLib.Ease.OutCubic
cLib.Ease.InOutCubic

Quart & Quint

cLib.Ease.InQuart / OutQuart / InOutQuart
cLib.Ease.InQuint / OutQuint / InOutQuint

Sine

cLib.Ease.InSine     -- Smooth start
cLib.Ease.OutSine    -- Smooth end
cLib.Ease.InOutSine  -- Smooth both

Exponential

cLib.Ease.InExpo     -- Fast acceleration
cLib.Ease.OutExpo    -- Fast deceleration
cLib.Ease.InOutExpo

Circular

cLib.Ease.InCirc
cLib.Ease.OutCirc
cLib.Ease.InOutCirc

Elastic (Bouncy spring)

cLib.Ease.InElastic
cLib.Ease.OutElastic   -- Popular for UI
cLib.Ease.InOutElastic

Back (Overshoot)

cLib.Ease.InBack
cLib.Ease.OutBack      -- Popular for popups
cLib.Ease.InOutBack

Bounce

cLib.Ease.InBounce
cLib.Ease.OutBounce    -- Bounces at end
cLib.Ease.InOutBounce

Choosing an Easing

Use CaseRecommended
Fade in/outOutQuad, OutSine
Slide panelsOutCubic, OutQuart
PopupsOutBack, OutElastic
Progress barsLinear, InOutQuad
NotificationsOutQuad
Bouncing effectsOutBounce, OutElastic

Examples

-- Smooth fade out
cLib.Animate({
    from = 255, to = 0,
    duration = 0.3,
    ease = cLib.Ease.OutQuad,
    onUpdate = function(v) panel:SetAlpha(v) end
})

-- Bouncy popup
cLib.Animate({
    from = 0, to = 1,
    duration = 0.4,
    ease = cLib.Ease.OutBack,
    onUpdate = function(scale)
        panel:SetSize(targetW * scale, targetH * scale)
    end
})

-- Elastic notification
cLib.AnimatePos(notif, finalX, finalY, 0.5, cLib.Ease.OutElastic)