Add assets loading progress to Editor status bar

This commit is contained in:
Wojciech Figat
2022-01-10 14:09:00 +01:00
parent 342e9d955e
commit 5ffdbe553b
2 changed files with 13 additions and 3 deletions

View File

@@ -32,6 +32,7 @@ namespace FlaxEditor.Modules
private Label _progressLabel;
private ProgressBar _progressBar;
private List<KeyValuePair<string, DateTime>> _statusMessages;
private ContentStats _contentStats;
private ContextMenuButton _menuFileSaveScenes;
private ContextMenuButton _menuFileCloseScenes;
@@ -250,6 +251,7 @@ namespace FlaxEditor.Modules
{
if (StatusBar == null)
return;
var contentStats = FlaxEngine.Content.Stats;
Color color;
if (Editor.StateMachine.IsPlayMode)
@@ -262,11 +264,14 @@ namespace FlaxEditor.Modules
text = _statusMessages[0].Key;
else if (Editor.StateMachine.CurrentState.Status != null)
text = Editor.StateMachine.CurrentState.Status;
else if (contentStats.LoadingAssetsCount != 0)
text = string.Format("Loading {0}/{1}", contentStats.LoadingAssetsCount, contentStats.AssetsCount);
else
text = "Ready";
StatusBar.Text = text;
StatusBar.StatusColor = color;
_contentStats = contentStats;
}
/// <summary>
@@ -334,6 +339,10 @@ namespace FlaxEditor.Modules
_statusMessages.RemoveAt(0);
UpdateStatusBar();
}
else if (FlaxEngine.Content.Stats.LoadingAssetsCount != _contentStats.LoadingAssetsCount)
{
UpdateStatusBar();
}
}
private class CustomWindowBorderControl : Control

View File

@@ -368,16 +368,17 @@ ContentStats Content::GetStats()
ContentStats stats;
AssetsLocker.Lock();
stats.AssetsCount = Assets.Count();
for (auto& e : Assets)
int32 loadFailedCount = 0;
for (const auto& e : Assets)
{
if (e.Value->IsLoaded())
stats.LoadedAssetsCount++;
else if (e.Value->LastLoadFailed())
stats.LoadingAssetsCount++;
loadFailedCount++;
if (e.Value->IsVirtual())
stats.VirtualAssetsCount++;
}
stats.LoadingAssetsCount = stats.AssetsCount - stats.LoadingAssetsCount - stats.LoadedAssetsCount;
stats.LoadingAssetsCount = stats.AssetsCount - loadFailedCount - stats.LoadedAssetsCount;
AssetsLocker.Unlock();
return stats;
}