fix: Fixes to data asset loading
This commit is contained in:
parent
07a9ef4e58
commit
2732cf1c64
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user