Add progress indicator in editor for assets loading
This commit is contained in:
@@ -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>
|
||||
|
||||
40
Source/Editor/Progress/Handlers/LoadAssetsProgress.cs
Normal file
40
Source/Editor/Progress/Handlers/LoadAssetsProgress.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user