Add progress indicator in editor for assets loading

This commit is contained in:
Wojtek Figat
2025-01-21 21:38:02 +01:00
parent 344d17714c
commit 682ca9e953
2 changed files with 46 additions and 0 deletions

View File

@@ -56,6 +56,11 @@ namespace FlaxEditor.Modules
/// </summary>
public readonly GenerateScriptsProjectFilesProgress GenerateScriptsProjectFiles = new GenerateScriptsProjectFilesProgress();
/// <summary>
/// The assets loading progress handler.
/// </summary>
public readonly LoadAssetsProgress LoadAssets = new LoadAssetsProgress();
/// <summary>
/// Gets the first active handler.
/// </summary>
@@ -80,6 +85,7 @@ namespace FlaxEditor.Modules
RegisterHandler(CodeEditorOpen);
RegisterHandler(NavMeshBuilding);
RegisterHandler(GenerateScriptsProjectFiles);
RegisterHandler(LoadAssets);
}
/// <summary>

View File

@@ -0,0 +1,40 @@
// Copyright (c) 2012-2024 Wojciech Figat. All rights reserved.
namespace FlaxEditor.Progress.Handlers
{
/// <summary>
/// Loading assets progress reporting handler.
/// </summary>
/// <seealso cref="FlaxEditor.Progress.ProgressHandler" />
public sealed class LoadAssetsProgress : ProgressHandler
{
private int _loadingAssetsCount;
/// <summary>
/// Initializes a new instance of the <see cref="LoadAssetsProgress"/> class.
/// </summary>
public LoadAssetsProgress()
{
Editor.Instance.EditorUpdate += OnEditorUpdate;
}
private void OnEditorUpdate()
{
var contentStats = FlaxEngine.Content.Stats;
if (_loadingAssetsCount == contentStats.LoadingAssetsCount)
return;
if (contentStats.LoadingAssetsCount == 0)
OnEnd();
else if (_loadingAssetsCount == 0)
OnStart();
if (contentStats.LoadingAssetsCount > 0)
{
var progress = (float)contentStats.LoadedAssetsCount / contentStats.AssetsCount;
var text = contentStats.LoadingAssetsCount == 1 ? "Loading 1 asset..." : $"Loading {contentStats.LoadingAssetsCount} assets...";
OnUpdate(progress, text);
}
_loadingAssetsCount = contentStats.LoadingAssetsCount;
}
}
}