Code/SbTween/Extensions/PostProcessingExtensions.cs
using Sandbox;
using System;
namespace SbTween;
public static class PostProcessingExtensions
{
// ── FilmGrain ──────────────────────────────────────────────────────────
public static BaseTween TweenIntensity( this FilmGrain pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.Intensity;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Intensity )
.OnUpdate( p => pp.Intensity = MathX.Lerp( start, target, p ) ) );
}
public static BaseTween TweenResponse( this FilmGrain pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.Response;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Response )
.OnUpdate( p => pp.Response = MathX.Lerp( start, target, p ) ) );
}
// ── Bloom ──────────────────────────────────────────────────────────────
public static BaseTween TweenStrength( this Bloom pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.Strength;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Strength )
.OnUpdate( p => pp.Strength = MathX.Lerp( start, target, p ) ) );
}
public static BaseTween TweenThreshold( this Bloom pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.Threshold;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Threshold )
.OnUpdate( p => pp.Threshold = MathX.Lerp( start, target, p ) ) );
}
public static BaseTween TweenGamma( this Bloom pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.Gamma;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Gamma )
.OnUpdate( p => pp.Gamma = MathX.Lerp( start, target, p ) ) );
}
public static BaseTween TweenTint( this Bloom pp, Color target, float duration )
{
if ( !pp.IsValid() ) return null;
Color start = pp.Tint;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Tint )
.OnUpdate( p => pp.Tint = Color.Lerp( start, target, p ) ) );
}
// ── Blur ──────────────────────────────────────────────────────────────
public static BaseTween TweenSize( this Blur pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.Size;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Size )
.OnUpdate( p => pp.Size = MathX.Lerp( start, target, p ) ) );
}
// ── ChromaticAberration ────────────────────────────────────────────────
public static BaseTween TweenScale( this ChromaticAberration pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.Scale;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Scale )
.OnUpdate( p => pp.Scale = MathX.Lerp( start, target, p ) ) );
}
public static BaseTween TweenOffset( this ChromaticAberration pp, Vector3 target, float duration )
{
if ( !pp.IsValid() ) return null;
Vector3 start = pp.Offset;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Offset )
.OnUpdate( p => pp.Offset = Vector3.Lerp( start, target, p ) ) );
}
// ── ColorAdjustments ──────────────────────────────────────────────────
public static BaseTween TweenBlend( this ColorAdjustments pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.Blend;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Blend )
.OnUpdate( p => pp.Blend = MathX.Lerp( start, target, p ) ) );
}
public static BaseTween TweenSaturation( this ColorAdjustments pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.Saturation;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Saturation )
.OnUpdate( p => pp.Saturation = MathX.Lerp( start, target, p ) ) );
}
public static BaseTween TweenHueRotate( this ColorAdjustments pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.HueRotate;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.HueRotate )
.OnUpdate( p => pp.HueRotate = MathX.Lerp( start, target, p ) ) );
}
public static BaseTween TweenBrightness( this ColorAdjustments pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.Brightness;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Brightness )
.OnUpdate( p => pp.Brightness = MathX.Lerp( start, target, p ) ) );
}
public static BaseTween TweenContrast( this ColorAdjustments pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.Contrast;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Contrast )
.OnUpdate( p => pp.Contrast = MathX.Lerp( start, target, p ) ) );
}
// ── Vignette ───────────────────────────────────────────────────────────
public static BaseTween TweenIntensity( this Vignette pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.Intensity;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Intensity )
.OnUpdate( p => pp.Intensity = MathX.Lerp( start, target, p ) ) );
}
public static BaseTween TweenSmoothness( this Vignette pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.Smoothness;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Smoothness )
.OnUpdate( p => pp.Smoothness = MathX.Lerp( start, target, p ) ) );
}
public static BaseTween TweenRoundness( this Vignette pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.Roundness;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Roundness )
.OnUpdate( p => pp.Roundness = MathX.Lerp( start, target, p ) ) );
}
public static BaseTween TweenColor( this Vignette pp, Color target, float duration )
{
if ( !pp.IsValid() ) return null;
Color start = pp.Color;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Color )
.OnUpdate( p => pp.Color = Color.Lerp( start, target, p ) ) );
}
public static BaseTween TweenCenter( this Vignette pp, Vector2 target, float duration )
{
if ( !pp.IsValid() ) return null;
Vector2 start = pp.Center;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Center )
.OnUpdate( p => pp.Center = Vector2.Lerp( start, target, p ) ) );
}
// ── DepthOfField ───────────────────────────────────────────────────────
public static BaseTween TweenBlurSize( this DepthOfField pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.BlurSize;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.BlurSize )
.OnUpdate( p => pp.BlurSize = MathX.Lerp( start, target, p ) ) );
}
public static BaseTween TweenFocalDistance( this DepthOfField pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.FocalDistance;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.FocalDistance )
.OnUpdate( p => pp.FocalDistance = MathX.Lerp( start, target, p ) ) );
}
public static BaseTween TweenFocusRange( this DepthOfField pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.FocusRange;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.FocusRange )
.OnUpdate( p => pp.FocusRange = MathX.Lerp( start, target, p ) ) );
}
// ── Sharpen ───────────────────────────────────────────────────────────
public static BaseTween TweenSharpen( this Sharpen pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.Scale;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Scale )
.OnUpdate( p => pp.Scale = MathX.Lerp( start, target, p ) ) );
}
public static BaseTween TweenTexelSize( this Sharpen pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.TexelSize;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.TexelSize )
.OnUpdate( p => pp.TexelSize = MathX.Lerp( start, target, p ) ) );
}
// ── Pixelate ──────────────────────────────────────────────────────────
public static BaseTween TweenScale( this Pixelate pp, float target, float duration )
{
if ( !pp.IsValid() ) return null;
float start = pp.Scale;
return TweenManager.Instance.AddTween( new BaseTween( duration )
.OnStart( () => start = pp.Scale )
.OnUpdate( p => pp.Scale = MathX.Lerp( start, target, p ) ) );
}
}