Code/Fading.cs
using Sandbox;
using System;
namespace FadingScreens
{
public static class Fading
{
static GameObject fader;
static bool IsFaderPresent()
{
if ( fader == null || fader.Scene == null )
{
return false;
}
return true;
}
public static void FadeInFrom( float duration, Color color )
{
Fade( duration, color, Color.Transparent, () =>
{
} );
}
public static void FadeOutWith( float duration, Color color )
{
Fade( duration, Color.Transparent, color, () =>
{
} );
}
public static void FadeInFrom( float duration, Color color, Action onFadingComplete )
{
Fade( duration, color, Color.Transparent, onFadingComplete );
}
public static void FadeOutWith(float duration, Color color, Action onFadingComplete )
{
Fade(duration, Color.Transparent, color, onFadingComplete);
}
public static void Fade(float duration, Color colorFrom, Color colorTo, Action onFadingComplete)
{
if ( !IsFaderPresent() )
{
fader = new();
fader.Components.Create<ScreenPanel>();
}
var oldFader = fader.Components.Get<FadingPanel>();
if ( oldFader != null )
{
oldFader.Destroy();
}
fader.Components.Create<FadingPanel>().Fade(duration, colorFrom, colorTo, onFadingComplete );
}
}
}