fix: Fixes to data asset loading

This commit is contained in:
mrhid6 2024-10-24 18:05:53 +01:00
parent 07a9ef4e58
commit 2732cf1c64

View File

@ -3,6 +3,7 @@
#include "RefinedRDApi.h"
#include "DataAssets/RRDADirtDataAsset.h"
#include "Engine/AssetManager.h"
#include "AssetRegistry/AssetRegistryModule.h"
URRDADataAssetSubsystem::URRDADataAssetSubsystem() {}
@ -26,7 +27,17 @@ void URRDADataAssetSubsystem::Initialize(FSubsystemCollectionBase& Collection)
{
Super::Initialize(Collection);
StartScanForDataAssets();
FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>(FName("AssetRegistry"));
IAssetRegistry& AssetRegistry = AssetRegistryModule.Get();
// Must wait until all assets are discovered before populating list of assets.
if (AssetRegistry.IsLoadingAssets()) {
AssetRegistry.OnFilesLoaded().AddUObject(this, &URRDADataAssetSubsystem::StartScanForDataAssets);
}
else {
StartScanForDataAssets();
}
}
void URRDADataAssetSubsystem::Deinitialize()
@ -36,8 +47,26 @@ void URRDADataAssetSubsystem::Deinitialize()
void URRDADataAssetSubsystem::StartScanForDataAssets()
{
UAssetManager& Manager = UAssetManager::Get();
Manager.LoadPrimaryAssetsWithType(FPrimaryAssetType("RRDADataAsset"));
/*UAssetManager& Manager = UAssetManager::Get();
Manager.LoadPrimaryAssetsWithType(FPrimaryAssetType("RRDADataAsset"));*/
// Find list of all UStat, and USkill assets in Content Browser.
FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>(FName("AssetRegistry"));
IAssetRegistry& AssetRegistry = AssetRegistryModule.Get();
TArray<FAssetData> AssetList;
AssetRegistry.GetAssetsByClass(FName("RRDADataAssetBase"), AssetList);
// Split assets into separate arrays.
for (const FAssetData& Asset : AssetList) {
UObject* Obj = Asset.GetAsset();
// Cast the Obj to other data asset classes
if (Obj->GetClass()->IsChildOf(URRDADirtDataAsset::StaticClass())) {
auto DirtDataAsset = Cast<URRDADirtDataAsset>(Obj);
mDirtAssets.Add(DirtDataAsset->mItem, DirtDataAsset);
}
}
mDisabledDataAssets.Empty();
mAllDataAssets.Empty();