102 lines
1.7 KiB
C#
102 lines
1.7 KiB
C#
using UnityEngine;
|
|
|
|
namespace AllIn13DShader
|
|
{
|
|
[System.Serializable]
|
|
public class PropertyTweenFader : PropertyTween
|
|
{
|
|
public enum State
|
|
{
|
|
WAITING_FOR_FADE_IN = 0,
|
|
FADING_IN = 1,
|
|
WAITING_FOR_FADE_OUT = 2,
|
|
FADING_OUT = 3,
|
|
}
|
|
|
|
private float timer;
|
|
private State state;
|
|
|
|
[Header("Config")]
|
|
public float waitingForFadeInTime;
|
|
public float fadeInDuration;
|
|
public float waitingForFadeOutTime;
|
|
public float fadeOutDuration;
|
|
|
|
public override void Init(Material mat)
|
|
{
|
|
base.Init(mat);
|
|
|
|
state = State.WAITING_FOR_FADE_IN;
|
|
timer = 0f;
|
|
}
|
|
|
|
protected override void Tween(float deltaTime)
|
|
{
|
|
switch (state)
|
|
{
|
|
case State.WAITING_FOR_FADE_IN:
|
|
UpdateWaitingForFadeIn();
|
|
break;
|
|
case State.FADING_IN:
|
|
UpdateFadingIn();
|
|
break;
|
|
case State.WAITING_FOR_FADE_OUT:
|
|
UpdateWaitingForFadeOut();
|
|
break;
|
|
case State.FADING_OUT:
|
|
UpdateFadingOut();
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void UpdateWaitingForFadeIn()
|
|
{
|
|
timer += Time.deltaTime;
|
|
|
|
if (timer >= waitingForFadeInTime)
|
|
{
|
|
state = State.FADING_IN;
|
|
timer = 0f;
|
|
}
|
|
}
|
|
|
|
private void UpdateFadingIn()
|
|
{
|
|
timer += Time.deltaTime;
|
|
|
|
float t = timer / fadeInDuration;
|
|
currentValue = t;
|
|
|
|
if (timer >= fadeInDuration)
|
|
{
|
|
state = State.WAITING_FOR_FADE_OUT;
|
|
timer = 0f;
|
|
}
|
|
}
|
|
|
|
private void UpdateWaitingForFadeOut()
|
|
{
|
|
timer += Time.deltaTime;
|
|
|
|
if (timer >= waitingForFadeOutTime)
|
|
{
|
|
state = State.FADING_OUT;
|
|
timer = 0f;
|
|
}
|
|
}
|
|
|
|
private void UpdateFadingOut()
|
|
{
|
|
timer += Time.deltaTime;
|
|
|
|
float t = timer / fadeOutDuration;
|
|
currentValue = 1 - t;
|
|
|
|
if (timer >= fadeOutDuration)
|
|
{
|
|
state = State.WAITING_FOR_FADE_IN;
|
|
timer = 0f;
|
|
}
|
|
}
|
|
}
|
|
} |