Files
2026-02-23 22:24:46 +07:00

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;
}
}
}
}