This commit is contained in:
CortexCore
2025-02-24 23:02:43 +08:00
parent 41715e4413
commit 8261a458e2
105 changed files with 2934 additions and 696 deletions

View File

@@ -40,7 +40,6 @@ namespace BITKit.UX
uxService.Register(this);
InitializeAsync().Forget();
}
private async UniTask InitializeAsync()
{
await _isBusy;
@@ -89,20 +88,20 @@ namespace BITKit.UX
UXUtils.Inject(this,RootVisualElement);
OnInitiated?.Invoke();
RootVisualElement.SetActive(false);
await OnInitiatedAsync.UniTaskFunc();
WaitUtilInitialized.TrySetResult();
RootVisualElement.RegisterCallback<TransitionRunEvent>(OnTransitionRun);
RootVisualElement.RegisterCallback<TransitionStartEvent>(OnTransitionStart);
RootVisualElement.RegisterCallback<TransitionStartEvent>(OnTransitionStart);
RootVisualElement.RegisterCallback<TransitionEndEvent>(OnTransitionEnd);
RootVisualElement.RegisterCallback<TransitionCancelEvent>(OnTransitionEnd);
WaitUtilTransitionCompleted.TrySetResult();
WaitUtilInitialized.TrySetResult();
OnInitiated?.Invoke();
}
}
@@ -127,6 +126,7 @@ namespace BITKit.UX
public virtual bool AllowReload { get; }
public virtual bool AllowCursor { get; }
public virtual bool AllowInput { get; }
public object Root => RootVisualElement;
public virtual string[] InitialUssClasses { get; } = Array.Empty<string>();
public bool IsDisposed { get; private set; }
@@ -152,6 +152,11 @@ namespace BITKit.UX
RootVisualElement.SetActive(true);
//await UniTask.NextFrame();
if (IsWindow)
{
RootVisualElement.BringToFront();
}
RootVisualElement.AddToClassList(USSEntry);
@@ -174,9 +179,19 @@ namespace BITKit.UX
{
BIT4Log.LogException(e);
}
await WaitUtilTransitionCompleted.Task;
try
{
var cts = new CancellationTokenSource();
cts.CancelAfter(1000);
await WaitUtilTransitionCompleted.Task.AttachExternalCancellation(cts.Token);
}
catch (OperationCanceledException)
{
}
await UniTask.SwitchToMainThread();
RootVisualElement.AddToClassList(USSEntered);
}
private void OnTransitionEnd<TChangeEvent>(TChangeEvent evt)
@@ -218,8 +233,17 @@ namespace BITKit.UX
await UniTask.NextFrame();
await OnExitAsync.UniTaskFunc();
try
{
var cts = new CancellationTokenSource();
cts.CancelAfter(1000);
await WaitUtilTransitionCompleted.Task.AttachExternalCancellation(cts.Token);
}
catch (OperationCanceledException)
{
}
await WaitUtilTransitionCompleted.Task;
}
void IEntryElement.Exited()
{
@@ -249,7 +273,7 @@ namespace BITKit.UX
{
}
public void Dispose()
public virtual void Dispose()
{
RootVisualElement?.RemoveFromHierarchy();
IsDisposed = true;