diff --git a/Source/Editor/Modules/ProgressReportingModule.cs b/Source/Editor/Modules/ProgressReportingModule.cs
index 7ff284431..a1160aba5 100644
--- a/Source/Editor/Modules/ProgressReportingModule.cs
+++ b/Source/Editor/Modules/ProgressReportingModule.cs
@@ -56,6 +56,11 @@ namespace FlaxEditor.Modules
///
public readonly GenerateScriptsProjectFilesProgress GenerateScriptsProjectFiles = new GenerateScriptsProjectFilesProgress();
+ ///
+ /// The assets loading progress handler.
+ ///
+ public readonly LoadAssetsProgress LoadAssets = new LoadAssetsProgress();
+
///
/// Gets the first active handler.
///
@@ -80,6 +85,7 @@ namespace FlaxEditor.Modules
RegisterHandler(CodeEditorOpen);
RegisterHandler(NavMeshBuilding);
RegisterHandler(GenerateScriptsProjectFiles);
+ RegisterHandler(LoadAssets);
}
///
diff --git a/Source/Editor/Progress/Handlers/LoadAssetsProgress.cs b/Source/Editor/Progress/Handlers/LoadAssetsProgress.cs
new file mode 100644
index 000000000..dbac821e1
--- /dev/null
+++ b/Source/Editor/Progress/Handlers/LoadAssetsProgress.cs
@@ -0,0 +1,40 @@
+// Copyright (c) 2012-2024 Wojciech Figat. All rights reserved.
+
+namespace FlaxEditor.Progress.Handlers
+{
+ ///
+ /// Loading assets progress reporting handler.
+ ///
+ ///
+ public sealed class LoadAssetsProgress : ProgressHandler
+ {
+ private int _loadingAssetsCount;
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ 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;
+ }
+ }
+}