From 5596a42e835c1505b283449c95aafd47b705cf79 Mon Sep 17 00:00:00 2001 From: Joni Savolainen Date: Sat, 3 Sep 2022 11:27:52 +0300 Subject: [PATCH] feat(UIComponent): add InitializationTask property --- Assets/UIComponents.Benchmarks/BenchmarkUtils.cs | 6 +++--- Assets/UIComponents/Core/UIComponent.cs | 7 ++++++- Assets/UIComponents/Testing/TestBed.cs | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Assets/UIComponents.Benchmarks/BenchmarkUtils.cs b/Assets/UIComponents.Benchmarks/BenchmarkUtils.cs index 99984c67..9c684118 100644 --- a/Assets/UIComponents.Benchmarks/BenchmarkUtils.cs +++ b/Assets/UIComponents.Benchmarks/BenchmarkUtils.cs @@ -5,7 +5,7 @@ namespace UIComponents.Benchmarks { public static class BenchmarkUtils { - public const string Version = "0.21.0.0"; + public const string Version = "0.22.0.0"; private static SampleGroup[] GetProfilerMarkers() { @@ -22,7 +22,7 @@ public static void MeasureComponentInitWithColdCache() where TCompon Measure.Method(async () => { var component = new TComponent(); - await component.WaitForInitialization(); + await component.InitializationTask; }) .SetUp(() => { @@ -42,7 +42,7 @@ public static void MeasureComponentInitWithWarmCache() where TCompon Measure.Method(async () => { var component = new TComponent(); - await component.WaitForInitialization(); + await component.InitializationTask; }) .SampleGroup(new SampleGroup("Warm Cache Time")) .MeasurementCount(50) diff --git a/Assets/UIComponents/Core/UIComponent.cs b/Assets/UIComponents/Core/UIComponent.cs index e6818fae..680c0c4f 100644 --- a/Assets/UIComponents/Core/UIComponent.cs +++ b/Assets/UIComponents/Core/UIComponent.cs @@ -56,6 +56,11 @@ public abstract class UIComponent : VisualElement /// public bool Initialized { get; private set; } + /// + /// A Task that completes when the UIComponent has been fully initialized. + /// + public Task InitializationTask => _initCompletionSource.Task; + /// /// The IUIComponentLogger used by this UIComponent. /// Defaults to . @@ -186,7 +191,7 @@ public Task WaitForInitialization() /// An enumerator which yields when the component has initialized public IEnumerator WaitForInitializationEnumerator() { - yield return WaitForInitialization().AsEnumerator(); + yield return _initCompletionSource.Task.AsEnumerator(); } /// diff --git a/Assets/UIComponents/Testing/TestBed.cs b/Assets/UIComponents/Testing/TestBed.cs index 4c04d24b..618c8dbb 100644 --- a/Assets/UIComponents/Testing/TestBed.cs +++ b/Assets/UIComponents/Testing/TestBed.cs @@ -93,7 +93,7 @@ public async Task CreateComponentAsync(Func { var component = CreateComponent(factoryPredicate); - var initTask = component.WaitForInitialization(); + var initTask = component.InitializationTask; var timeoutTask = Task.Delay(AsyncTimeout); var task = await Task.WhenAny(initTask, timeoutTask);