@@ -5,6 +5,7 @@ namespace UnityMvvmToolkit.UniTask
5
5
using System ;
6
6
using System . Linq ;
7
7
using System . Threading ;
8
+ using Enums ;
8
9
using Interfaces ;
9
10
using TransitionPredicates ;
10
11
using UnityEngine . UIElements ;
@@ -27,20 +28,21 @@ public static UniTask WaitForLongestTransitionEnd(this VisualElement element,
27
28
: UniTask . CompletedTask ;
28
29
}
29
30
30
- public static UniTask WaitForTransitionEnd ( this VisualElement element , int transitionIndex ,
31
+ public static UniTask < TransitionResult > WaitForTransitionEnd ( this VisualElement element , int transitionIndex ,
31
32
int timeoutMs = DefaultTimeoutMs , CancellationToken cancellationToken = default )
32
33
{
33
34
return GetTransitionDuration ( element , transitionIndex , out var stylePropertyName ) > float . Epsilon
34
35
? WaitForTransition ( element , stylePropertyName , timeoutMs , cancellationToken )
35
- : UniTask . CompletedTask ;
36
+ : UniTask . FromResult ( TransitionResult . Missed ) ;
36
37
}
37
38
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 )
40
42
{
41
43
return GetTransitionDuration ( element , stylePropertyName ) > float . Epsilon
42
44
? WaitForTransition ( element , stylePropertyName , timeoutMs , cancellationToken )
43
- : UniTask . CompletedTask ;
45
+ : UniTask . FromResult ( TransitionResult . Missed ) ;
44
46
}
45
47
46
48
/// <summary>
@@ -51,47 +53,48 @@ public static UniTask WaitForTransitionEnd(this VisualElement element, StyleProp
51
53
/// <param name="timeoutMs"></param>
52
54
/// <param name="cancellationToken"></param>
53
55
/// <returns></returns>
54
- public static UniTask WaitForTransitionEnd ( this VisualElement element , string propertyName ,
56
+ public static UniTask < TransitionResult > WaitForTransitionEnd ( this VisualElement element , string propertyName ,
55
57
int timeoutMs = DefaultTimeoutMs , CancellationToken cancellationToken = default )
56
58
{
57
59
var transitionData = GetTransitionData ( element , propertyName ) ;
58
60
59
61
return transitionData is { Duration : { value : > float . Epsilon } }
60
62
? WaitForTransition ( element , transitionData . Value . StylePropertyName , timeoutMs , cancellationToken )
61
- : UniTask . CompletedTask ;
63
+ : UniTask . FromResult ( TransitionResult . Missed ) ;
62
64
}
63
65
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 )
66
68
{
67
69
return AnyTransitionHasDuration ( element )
68
70
? WaitForTransitionEnd ( element , new TransitionAnyPredicate ( ) , timeoutMs , cancellationToken )
69
- : UniTask . CompletedTask ;
71
+ : UniTask . FromResult ( TransitionResult . Missed ) ;
70
72
}
71
73
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 )
74
76
{
75
77
var transitionsCount = GetTransitionsWithDurationCount ( element ) ;
76
78
77
79
return transitionsCount == 0
78
- ? UniTask . CompletedTask
80
+ ? UniTask . FromResult ( TransitionResult . Missed )
79
81
: WaitForTransitionEnd ( element , new TransitionCounterPredicate ( transitionsCount ) , timeoutMs ,
80
82
cancellationToken ) ;
81
83
}
82
84
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 )
85
87
where T : ITransitionPredicate
86
88
{
87
- return new UniTask (
89
+ return new UniTask < TransitionResult > (
88
90
TransitionPromise < T > . Create ( element , transitionPredicate , timeoutMs , PlayerLoopTiming . Update ,
89
91
cancellationToken , out var token ) , token ) ;
90
92
}
91
93
92
94
[ 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 )
95
98
{
96
99
return WaitForTransitionEnd ( element , new TransitionNamePredicate ( stylePropertyName ) , timeoutMs ,
97
100
cancellationToken ) ;
0 commit comments