Skip to content

Instantly share code, notes, and snippets.

@jasonjk192
Created May 18, 2025 11:18
Show Gist options
  • Save jasonjk192/820aa7fd528206f78c785f1b2deb0016 to your computer and use it in GitHub Desktop.
Save jasonjk192/820aa7fd528206f78c785f1b2deb0016 to your computer and use it in GitHub Desktop.
Unity PrimeTween integration for UIEffect (by mob-sakai)
using Coffee.UIEffects;
using JetBrains.Annotations;
using PrimeTween;
using UnityEngine;
public static class UIEffectsPrimeTweenExtensions
{
#region TONE_FILTER
public static Tween ToneIntensity([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.toneIntensity, endValue, duration, x => effect.toneIntensity = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
#endregion
#region COLOR_FILTER
public static Tween ColorIntensity([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.colorIntensity, endValue, duration, x => effect.colorIntensity = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween Color([NotNull] UIEffect effect, Color endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.color, endValue, duration, x => effect.color = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
#endregion
#region SAMPLING_FILTER
public static Tween SamplingIntensity([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.samplingIntensity, endValue, duration, x => effect.samplingIntensity = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween SamplingWidth([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.samplingWidth, endValue, duration, x => effect.samplingWidth = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
#endregion
#region TRANSITION_FILTER
public static Tween TransitionRate([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.transitionRate, endValue, duration, x => effect.transitionRate = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween TransitionRotation([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.transitionRotation, endValue, duration, x => effect.transitionRotation = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween TransitionTextureScale([NotNull] UIEffect effect, Vector2 endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.transitionTextureScale, endValue, duration, x => effect.transitionTextureScale = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween TransitionTextureOffset([NotNull] UIEffect effect, Vector2 endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.transitionTextureOffset, endValue, duration, x => effect.transitionTextureOffset = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween TransitionTextureSpeed([NotNull] UIEffect effect, Vector2 endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.transitionTextureSpeed, endValue, duration, x => effect.transitionTextureSpeed = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween TransitionAutoPlaySpeed([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.transitionAutoPlaySpeed, endValue, duration, x => effect.transitionAutoPlaySpeed = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween TransitionWidth([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.transitionWidth, endValue, duration, x => effect.transitionWidth = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween TransitionSoftness([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.transitionSoftness, endValue, duration, x => effect.transitionSoftness = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween TransitionColor([NotNull] UIEffect effect, Color endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.transitionColor, endValue, duration, x => effect.transitionColor = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
#endregion
#region TARGET_MODE
public static Tween TargetColor([NotNull] UIEffect effect, Color endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.targetColor, endValue, duration, x => effect.targetColor = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween TargetRange([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.targetRange, endValue, duration, x => effect.targetRange = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween TargetSoftness([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.targetSoftness, endValue, duration, x => effect.targetSoftness = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
#endregion
#region SHADOW_MODE
public static Tween ShadowDistance([NotNull] UIEffect effect, Vector2 endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.shadowDistance, endValue, duration, x => effect.shadowDistance = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween ShadowIteration([NotNull] UIEffect effect, int endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.shadowIteration, endValue, duration, x => effect.shadowIteration = (int)x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween ShadowColor([NotNull] UIEffect effect, Color endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.shadowColor, endValue, duration, x => effect.shadowColor = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween ShadowFade([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.shadowFade, endValue, duration, x => effect.shadowFade = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween ShadowMirrorScale([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.shadowMirrorScale, endValue, duration, x => effect.shadowMirrorScale = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
#endregion
#region GRADIATION_MODE
public static Tween GradiationColor1([NotNull] UIEffect effect, Color endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.gradationColor1, endValue, duration, x => effect.gradationColor1 = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween GradiationColor2([NotNull] UIEffect effect, Color endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.gradationColor2, endValue, duration, x => effect.gradationColor2 = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween GradiationColor3([NotNull] UIEffect effect, Color endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.gradationColor3, endValue, duration, x => effect.gradationColor3 = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween GradiationColor4([NotNull] UIEffect effect, Color endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.gradationColor4, endValue, duration, x => effect.gradationColor4 = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween GradiationIntensity([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.gradationIntensity, endValue, duration, x => effect.gradationIntensity = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween GradiationOffset([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.gradationOffset, endValue, duration, x => effect.gradationOffset = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween GradiationScale([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.gradationScale, endValue, duration, x => effect.gradationScale = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween GradiationRotation([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.gradationRotation, endValue, duration, x => effect.gradationRotation = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
#endregion
#region EDGE_MODE
public static Tween EdgeWidth([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.edgeWidth, endValue, duration, x => effect.edgeWidth = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween EdgeColor([NotNull] UIEffect effect, Color endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.edgeColor, endValue, duration, x => effect.edgeColor = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween EdgeShinyRate([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.edgeShinyRate, endValue, duration, x => effect.edgeShinyRate = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween EdgeShinyWidth([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.edgeShinyWidth, endValue, duration, x => effect.edgeShinyWidth = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween EdgeShinyAutoPlaySpeed([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.edgeShinyAutoPlaySpeed, endValue, duration, x => effect.edgeShinyAutoPlaySpeed = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
#endregion
#region DETAIL_FILTER
public static Tween DetailTextureScale([NotNull] UIEffect effect, Vector2 endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.detailTextureScale, endValue, duration, x => effect.detailTextureScale = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween DetailTextureOffset([NotNull] UIEffect effect, Vector2 endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.detailTextureOffset, endValue, duration, x => effect.detailTextureOffset = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween DetailTextureSpeed([NotNull] UIEffect effect, Vector2 endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.detailTextureSpeed, endValue, duration, x => effect.detailTextureSpeed = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween DetailIntensity([NotNull] UIEffect effect, float endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.detailIntensity, endValue, duration, x => effect.detailIntensity = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
public static Tween DetailColor([NotNull] UIEffect effect, Color endValue, float duration, Ease ease = Ease.Default, int cycles = 1, CycleMode cycleMode = CycleMode.Restart, float startDelay = 0, float endDelay = 0, bool useUnscaledTime = false)
=> Tween.Custom(effect.detailColor, endValue, duration, x => effect.detailColor = x, ease, cycles, cycleMode, startDelay, endDelay, useUnscaledTime);
#endregion
}
@jasonjk192
Copy link
Author

Another quick collection of PrimeTween implementation for some of the options present in UIEffect (same as the DOTween version). Decided to just throw this in too as I'm using PrimeTween in other projects and having these extensions are just extremely useful. So, decided to put it out here too!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment