fix: Fixes to data asset loading
This commit is contained in:
parent
07a9ef4e58
commit
2732cf1c64
@ -3,6 +3,7 @@
|
|||||||
#include "RefinedRDApi.h"
|
#include "RefinedRDApi.h"
|
||||||
#include "DataAssets/RRDADirtDataAsset.h"
|
#include "DataAssets/RRDADirtDataAsset.h"
|
||||||
#include "Engine/AssetManager.h"
|
#include "Engine/AssetManager.h"
|
||||||
|
#include "AssetRegistry/AssetRegistryModule.h"
|
||||||
|
|
||||||
URRDADataAssetSubsystem::URRDADataAssetSubsystem() {}
|
URRDADataAssetSubsystem::URRDADataAssetSubsystem() {}
|
||||||
|
|
||||||
@ -26,7 +27,17 @@ void URRDADataAssetSubsystem::Initialize(FSubsystemCollectionBase& Collection)
|
|||||||
{
|
{
|
||||||
Super::Initialize(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()
|
void URRDADataAssetSubsystem::Deinitialize()
|
||||||
@ -36,8 +47,26 @@ void URRDADataAssetSubsystem::Deinitialize()
|
|||||||
|
|
||||||
void URRDADataAssetSubsystem::StartScanForDataAssets()
|
void URRDADataAssetSubsystem::StartScanForDataAssets()
|
||||||
{
|
{
|
||||||
UAssetManager& Manager = UAssetManager::Get();
|
/*UAssetManager& Manager = UAssetManager::Get();
|
||||||
Manager.LoadPrimaryAssetsWithType(FPrimaryAssetType("RRDADataAsset"));
|
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();
|
mDisabledDataAssets.Empty();
|
||||||
mAllDataAssets.Empty();
|
mAllDataAssets.Empty();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user