com.alicizax.unity.framework/Runtime/UI/Other/UIAnimationFlowTransition.cs

41 lines
1.1 KiB
C#

#if ALICIZAX_UI_ANIMATION_SUPPORT
using System.Threading;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace AlicizaX.UI.Runtime
{
[DisallowMultipleComponent]
public sealed class UIAnimationFlowTransition : AnimationFlow.Runtime.AnimationFlow, IUITransitionPlayer
{
public int Priority => 0;
[SerializeField] private string openClip = "Open";
[SerializeField] private string closeClip = "Close";
public UniTask PlayOpenAsync(CancellationToken cancellationToken = default)
{
return PlayAsync(openClip, cancellationToken);
}
public UniTask PlayCloseAsync(CancellationToken cancellationToken = default)
{
return PlayAsync(closeClip, cancellationToken);
}
private UniTask PlayAsync(string clipName, CancellationToken cancellationToken)
{
if (cancellationToken.IsCancellationRequested || string.IsNullOrWhiteSpace(clipName))
{
return UniTask.CompletedTask;
}
return PlayAsync(clipName);
}
}
}
#endif