r2mods/ilspy_dump/ror2_csproj/RoR2.UI/AnimateUIAlpha.cs

87 lines
1.4 KiB
C#

using UnityEngine;
using UnityEngine.UI;
namespace RoR2.UI;
public class AnimateUIAlpha : MonoBehaviour
{
public AnimationCurve alphaCurve;
public Image image;
public RawImage rawImage;
public SpriteRenderer spriteRenderer;
public float timeMax = 5f;
public bool destroyOnEnd;
public bool loopOnEnd;
public bool disableGameObjectOnEnd;
[HideInInspector]
public float time;
private Color originalColor;
private void Start()
{
if ((bool)image)
{
originalColor = image.color;
}
if ((bool)rawImage)
{
originalColor = rawImage.color;
}
else if ((bool)spriteRenderer)
{
originalColor = spriteRenderer.color;
}
UpdateAlphas(0f);
}
private void OnDisable()
{
time = 0f;
}
private void Update()
{
UpdateAlphas(Time.unscaledDeltaTime);
}
private void UpdateAlphas(float deltaTime)
{
time = Mathf.Min(timeMax, time + deltaTime);
float num = alphaCurve.Evaluate(time / timeMax);
Color color = new Color(originalColor.r, originalColor.g, originalColor.b, originalColor.a * num);
if ((bool)image)
{
image.color = color;
}
if ((bool)rawImage)
{
rawImage.color = color;
}
else if ((bool)spriteRenderer)
{
spriteRenderer.color = color;
}
if (loopOnEnd && time >= timeMax)
{
time -= timeMax;
}
if (destroyOnEnd && time >= timeMax)
{
Object.Destroy(base.gameObject);
}
if (disableGameObjectOnEnd && time >= timeMax)
{
base.gameObject.SetActive(value: false);
}
}
}