using UnityEngine; namespace RoR2.UI; [RequireComponent(typeof(EventFunctions))] [RequireComponent(typeof(Animator))] public class UITransitionController : MonoBehaviour { public enum TransitionStyle { Instant, CanvasGroupAlphaFade, SwipeYScale, SwipeXScale } public TransitionStyle transitionIn; public TransitionStyle transitionOut; public float transitionInSpeed = 1f; public float transitionOutSpeed = 1f; public bool transitionOutAtEndOfLifetime; public float lifetime; private float stopwatch; private Animator animator; private bool done; private void Awake() { animator = GetComponent(); PushMecanimTransitionInParameters(); } private void PushMecanimTransitionInParameters() { animator.SetFloat("transitionInSpeed", transitionInSpeed); switch (transitionIn) { case TransitionStyle.Instant: animator.SetTrigger("InstantIn"); break; case TransitionStyle.CanvasGroupAlphaFade: animator.SetTrigger("CanvasGroupAlphaFadeIn"); break; case TransitionStyle.SwipeYScale: animator.SetTrigger("SwipeYScaleIn"); break; case TransitionStyle.SwipeXScale: animator.SetTrigger("SwipeXScaleIn"); break; } } private void PushMecanimTransitionOutParameters() { animator.SetFloat("transitionOutSpeed", transitionOutSpeed); switch (transitionOut) { case TransitionStyle.Instant: animator.SetTrigger("InstantOut"); break; case TransitionStyle.CanvasGroupAlphaFade: animator.SetTrigger("CanvasGroupAlphaFadeOut"); break; case TransitionStyle.SwipeYScale: animator.SetTrigger("SwipeYScaleOut"); break; case TransitionStyle.SwipeXScale: animator.SetTrigger("SwipeXScaleOut"); break; } } private void Update() { if (transitionOutAtEndOfLifetime && !done) { stopwatch += Time.deltaTime; if (stopwatch >= lifetime) { PushMecanimTransitionOutParameters(); done = true; } } } }