@@ -5,6 +5,7 @@ namespace UnityMvvmToolkit.UniTask
55 using System ;
66 using System . Linq ;
77 using System . Threading ;
8+ using Enums ;
89 using Interfaces ;
910 using TransitionPredicates ;
1011 using UnityEngine . UIElements ;
@@ -27,20 +28,21 @@ public static UniTask WaitForLongestTransitionEnd(this VisualElement element,
2728 : UniTask . CompletedTask ;
2829 }
2930
30- public static UniTask WaitForTransitionEnd ( this VisualElement element , int transitionIndex ,
31+ public static UniTask < TransitionResult > WaitForTransitionEnd ( this VisualElement element , int transitionIndex ,
3132 int timeoutMs = DefaultTimeoutMs , CancellationToken cancellationToken = default )
3233 {
3334 return GetTransitionDuration ( element , transitionIndex , out var stylePropertyName ) > float . Epsilon
3435 ? WaitForTransition ( element , stylePropertyName , timeoutMs , cancellationToken )
35- : UniTask . CompletedTask ;
36+ : UniTask . FromResult ( TransitionResult . Missed ) ;
3637 }
3738
38- public static UniTask WaitForTransitionEnd ( this VisualElement element , StylePropertyName stylePropertyName ,
39- int timeoutMs = DefaultTimeoutMs , CancellationToken cancellationToken = default )
39+ public static UniTask < TransitionResult > WaitForTransitionEnd ( this VisualElement element ,
40+ StylePropertyName stylePropertyName , int timeoutMs = DefaultTimeoutMs ,
41+ CancellationToken cancellationToken = default )
4042 {
4143 return GetTransitionDuration ( element , stylePropertyName ) > float . Epsilon
4244 ? WaitForTransition ( element , stylePropertyName , timeoutMs , cancellationToken )
43- : UniTask . CompletedTask ;
45+ : UniTask . FromResult ( TransitionResult . Missed ) ;
4446 }
4547
4648 /// <summary>
@@ -51,47 +53,48 @@ public static UniTask WaitForTransitionEnd(this VisualElement element, StyleProp
5153 /// <param name="timeoutMs"></param>
5254 /// <param name="cancellationToken"></param>
5355 /// <returns></returns>
54- public static UniTask WaitForTransitionEnd ( this VisualElement element , string propertyName ,
56+ public static UniTask < TransitionResult > WaitForTransitionEnd ( this VisualElement element , string propertyName ,
5557 int timeoutMs = DefaultTimeoutMs , CancellationToken cancellationToken = default )
5658 {
5759 var transitionData = GetTransitionData ( element , propertyName ) ;
5860
5961 return transitionData is { Duration : { value : > float . Epsilon } }
6062 ? WaitForTransition ( element , transitionData . Value . StylePropertyName , timeoutMs , cancellationToken )
61- : UniTask . CompletedTask ;
63+ : UniTask . FromResult ( TransitionResult . Missed ) ;
6264 }
6365
64- public static UniTask WaitForAnyTransitionEnd ( this VisualElement element , int timeoutMs = DefaultTimeoutMs ,
65- CancellationToken cancellationToken = default )
66+ public static UniTask < TransitionResult > WaitForAnyTransitionEnd ( this VisualElement element ,
67+ int timeoutMs = DefaultTimeoutMs , CancellationToken cancellationToken = default )
6668 {
6769 return AnyTransitionHasDuration ( element )
6870 ? WaitForTransitionEnd ( element , new TransitionAnyPredicate ( ) , timeoutMs , cancellationToken )
69- : UniTask . CompletedTask ;
71+ : UniTask . FromResult ( TransitionResult . Missed ) ;
7072 }
7173
72- public static UniTask WaitForAllTransitionsEnd ( this VisualElement element , int timeoutMs = DefaultTimeoutMs ,
73- CancellationToken cancellationToken = default )
74+ public static UniTask < TransitionResult > WaitForAllTransitionsEnd ( this VisualElement element ,
75+ int timeoutMs = DefaultTimeoutMs , CancellationToken cancellationToken = default )
7476 {
7577 var transitionsCount = GetTransitionsWithDurationCount ( element ) ;
7678
7779 return transitionsCount == 0
78- ? UniTask . CompletedTask
80+ ? UniTask . FromResult ( TransitionResult . Missed )
7981 : WaitForTransitionEnd ( element , new TransitionCounterPredicate ( transitionsCount ) , timeoutMs ,
8082 cancellationToken ) ;
8183 }
8284
83- public static UniTask WaitForTransitionEnd < T > ( this VisualElement element , T transitionPredicate ,
84- int timeoutMs = DefaultTimeoutMs , CancellationToken cancellationToken = default )
85+ public static UniTask < TransitionResult > WaitForTransitionEnd < T > ( this VisualElement element ,
86+ T transitionPredicate , int timeoutMs = DefaultTimeoutMs , CancellationToken cancellationToken = default )
8587 where T : ITransitionPredicate
8688 {
87- return new UniTask (
89+ return new UniTask < TransitionResult > (
8890 TransitionPromise < T > . Create ( element , transitionPredicate , timeoutMs , PlayerLoopTiming . Update ,
8991 cancellationToken , out var token ) , token ) ;
9092 }
9193
9294 [ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
93- private static UniTask WaitForTransition ( this VisualElement element , StylePropertyName stylePropertyName ,
94- int timeoutMs = DefaultTimeoutMs , CancellationToken cancellationToken = default )
95+ private static UniTask < TransitionResult > WaitForTransition ( this VisualElement element ,
96+ StylePropertyName stylePropertyName , int timeoutMs = DefaultTimeoutMs ,
97+ CancellationToken cancellationToken = default )
9598 {
9699 return WaitForTransitionEnd ( element , new TransitionNamePredicate ( stylePropertyName ) , timeoutMs ,
97100 cancellationToken ) ;
0 commit comments