promotional bannermobile promotional banner

LibAnimate

Keyframe-driven animation library for WoW frames

File Details

3.5.7

  • R
  • Mar 7, 2026
  • 1.64 MB
  • 81
  • 12.0.1+5
  • Retail + 2

File Name

LibAnimate-3.5.7.zip

Supported Versions

  • 12.0.1
  • 12.0.0
  • 11.2.7
  • 5.5.3
  • 5.5.2
  • 2.5.5

# LibAnimate

## [3.5.7](https://github.com/DragonAddons/LibAnimate/tree/3.5.7) (2026-03-07)
[Full Changelog](https://github.com/DragonAddons/LibAnimate/compare/3.5.6...3.5.7) [Previous Releases](https://github.com/DragonAddons/LibAnimate/releases)

- fix: only animate properties defined by keyframes (#58)
    ## Summary
    Animations that don't define scale or translate keyframes (e.g.
    `fadeIn`/`fadeOut`) no longer override the frame's existing scale or
    position. This fixes visible "jumping" when frames have a
    user-configured scale other than 1.0.
    ## Problem
    `ApplyToFrame` unconditionally called `SetScale(sc)`,
    `ClearAllPoints()+SetPoint()`, and `SetAlpha(al)` every animation tick.
    For animations without scale keyframes, `sc` defaulted to 1.0 via
    `PROPERTY_DEFAULTS`, forcing the frame to scale 1.0 regardless of its
    configured scale. On animation completion, `onFinished` callbacks would
    restore the correct scale - causing a visible snap.
    Same issue with translate: alpha-only animations unnecessarily
    repositioned the frame every tick.
    ## Changes
    - **Keyframe introspection**: `Animate()` now scans keyframes to
    determine which properties the animation defines (`hasScale`,
    `hasTranslate`)
    - **Conditional application**: `ApplyToFrame` only sets translate/scale
    when the animation defines those properties
    - **Relative scale**: Scale is now applied as `sc * originalScale`
    instead of absolute `sc`. A keyframe `scale=0.3` means "30% of
    original", `scale=1.0` means "back to original"
    - **Conditional restore**: `Stop()` only restores properties that were
    animated
    - Alpha remains always animated for backward compatibility (slide
    animations rely on default alpha=1.0)
    ## Backward Compatibility
    | Animation type | hasScale | hasTranslate | Behavior |
    |---|---|---|---|
    | fadeIn/fadeOut | false | false | Only alpha. Scale and position
    untouched. |
    | slideInRight/moveUp | false | true | Position + alpha. Scale
    untouched. |
    | zoomIn/bounceIn | true | false | Scale (relative) + alpha. Position
    untouched. |
    | zoomInLeft/backInRight | true | true | All three properties animated.
    |
    No breaking changes for existing consumers.