Added new extension method

Added new extension method that fixes DoTween null-reference, when using GetCancellationOnDestroy()
pull/404/head
Artem Ovchinnikov 2022-09-24 18:18:20 +03:00
parent f48cb4b03e
commit 5e266f5538
1 changed files with 19 additions and 0 deletions

View File

@ -99,6 +99,25 @@ namespace Cysharp.Threading.Tasks
return new UniTask(TweenConfiguredSource.Create(tween, tweenCancelBehaviour, cancellationToken, CallbackType.StepComplete, out var token), token);
}
public static UniTask AwaitWithCancellation(this Tween tween, CancellationToken cancellationToken)
{
Error.ThrowArgumentNullException(tween, nameof(tween));
if (!tween.IsActive()) return UniTask.CompletedTask;
var registration = cancellationToken.Register(() =>
{
if (tween.IsActive())
{
tween.Kill();
}
});
tween.OnKill((() => registration.Dispose()));
return tween.ToUniTask(TweenCancelBehaviour.KillAndCancelAwait, cancellationToken);
}
public struct TweenAwaiter : ICriticalNotifyCompletion
{
readonly Tween tween;