diff --git a/Source/Engine/Content/Content.cpp b/Source/Engine/Content/Content.cpp index 419ee23a6..8963e9abf 100644 --- a/Source/Engine/Content/Content.cpp +++ b/Source/Engine/Content/Content.cpp @@ -360,6 +360,25 @@ String Content::CreateTemporaryAssetPath() return Globals::TemporaryFolder / (Guid::New().ToString(Guid::FormatType::N) + ASSET_FILES_EXTENSION_WITH_DOT); } +ContentStats Content::GetStats() +{ + ContentStats stats; + AssetsLocker.Lock(); + stats.AssetsCount = Assets.Count(); + for (auto& e : Assets) + { + if (e.Value->IsLoaded()) + stats.LoadedAssetsCount++; + else if (e.Value->LastLoadFailed()) + stats.LoadingAssetsCount++; + if (e.Value->IsVirtual()) + stats.VirtualAssetsCount++; + } + stats.LoadingAssetsCount = stats.AssetsCount - stats.LoadingAssetsCount - stats.LoadedAssetsCount; + AssetsLocker.Unlock(); + return stats; +} + Asset* Content::LoadAsyncInternal(const StringView& internalPath, MClass* type) { CHECK_RETURN(type, nullptr); @@ -430,11 +449,6 @@ Asset* Content::LoadAsync(const StringView& path, const ScriptingTypeHandle& typ return nullptr; } -int32 Content::GetAssetCount() -{ - return Assets.Count(); -} - Array Content::GetAssets() { Array assets; diff --git a/Source/Engine/Content/Content.h b/Source/Engine/Content/Content.h index a690e4e30..98c4e2c8c 100644 --- a/Source/Engine/Content/Content.h +++ b/Source/Engine/Content/Content.h @@ -12,6 +12,20 @@ class FlaxFile; class IAssetFactory; class AssetsCache; +// Content and assets statistics container. +API_STRUCT() struct FLAXENGINE_API ContentStats +{ +DECLARE_SCRIPTING_TYPE_MINIMAL(ContentStats); + // Amount of asset objects in memory. + API_FIELD() int32 AssetsCount = 0; + // Amount of loaded assets. + API_FIELD() int32 LoadedAssetsCount = 0; + // Amount of loading assets. + API_FIELD() int32 LoadingAssetsCount = 0; + // Amount of virtual assets (don't have representation in file). + API_FIELD() int32 VirtualAssetsCount = 0; +}; + /// /// Loads and manages assets. /// @@ -92,10 +106,9 @@ public: public: /// - /// Gets amount of the assets (in memory). + /// Gets content statistics. /// - /// Amount of assets in the assets. - API_PROPERTY() static int32 GetAssetCount(); + API_PROPERTY() static ContentStats GetStats(); /// /// Gets the assets (loaded or during load).