feat: RP Data Assets
This commit is contained in:
parent
90ac5dca32
commit
bfd977e1e1
@ -4,6 +4,10 @@
|
|||||||
#include "DataAssets/RRDADirtDataAsset.h"
|
#include "DataAssets/RRDADirtDataAsset.h"
|
||||||
#include "Engine/AssetManager.h"
|
#include "Engine/AssetManager.h"
|
||||||
#include "AssetRegistry/AssetRegistryModule.h"
|
#include "AssetRegistry/AssetRegistryModule.h"
|
||||||
|
#include "DataAssets/RRDABoilerDataAsset.h"
|
||||||
|
#include "DataAssets/RRDACoolerDataAsset.h"
|
||||||
|
#include "DataAssets/RRDAHeaterDataAsset.h"
|
||||||
|
#include "DataAssets/RRDATurbineDataAsset.h"
|
||||||
|
|
||||||
URRDADataAssetSubsystem::URRDADataAssetSubsystem() {}
|
URRDADataAssetSubsystem::URRDADataAssetSubsystem() {}
|
||||||
|
|
||||||
@ -29,6 +33,7 @@ void URRDADataAssetSubsystem::Initialize(FSubsystemCollectionBase& Collection)
|
|||||||
|
|
||||||
FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>(FName("AssetRegistry"));
|
FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>(FName("AssetRegistry"));
|
||||||
IAssetRegistry& AssetRegistry = AssetRegistryModule.Get();
|
IAssetRegistry& AssetRegistry = AssetRegistryModule.Get();
|
||||||
|
|
||||||
// Must wait until all assets are discovered before populating list of assets.
|
// Must wait until all assets are discovered before populating list of assets.
|
||||||
if (AssetRegistry.IsLoadingAssets()) {
|
if (AssetRegistry.IsLoadingAssets()) {
|
||||||
AssetRegistry.OnFilesLoaded().AddUObject(this, &URRDADataAssetSubsystem::StartScanForDataAssets);
|
AssetRegistry.OnFilesLoaded().AddUObject(this, &URRDADataAssetSubsystem::StartScanForDataAssets);
|
||||||
@ -36,40 +41,28 @@ void URRDADataAssetSubsystem::Initialize(FSubsystemCollectionBase& Collection)
|
|||||||
else {
|
else {
|
||||||
StartScanForDataAssets();
|
StartScanForDataAssets();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void URRDADataAssetSubsystem::Deinitialize()
|
void URRDADataAssetSubsystem::Deinitialize()
|
||||||
{
|
{
|
||||||
Super::Deinitialize();
|
Super::Deinitialize();
|
||||||
|
|
||||||
|
mEnabledDataAssets.Empty();
|
||||||
|
mDisabledDataAssets.Empty();
|
||||||
|
mDirtAssets.Empty();
|
||||||
|
mTurbineAssets.Empty();
|
||||||
|
mBoilerAssets.Empty();
|
||||||
|
mCoolerAssets.Empty();
|
||||||
|
mHeaterAssets.Empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
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();
|
mEnabledDataAssets.Empty();
|
||||||
|
|
||||||
ReCacheBoilerDataAssets();
|
ReCacheBoilerDataAssets();
|
||||||
ReCacheCoolerDataAssets();
|
ReCacheCoolerDataAssets();
|
||||||
@ -81,12 +74,12 @@ void URRDADataAssetSubsystem::StartScanForDataAssets()
|
|||||||
void URRDADataAssetSubsystem::ReCacheDirtDataAssets()
|
void URRDADataAssetSubsystem::ReCacheDirtDataAssets()
|
||||||
{
|
{
|
||||||
mDirtAssets.Empty();
|
mDirtAssets.Empty();
|
||||||
TSet<URRDADirtDataAsset*> DirtDataAssets;
|
TSet<URRDADirtDataAsset*> DataAssets;
|
||||||
if(FindAllDataAssetsOfClass(DirtDataAssets))
|
if(FindAllDataAssetsOfClass(DataAssets))
|
||||||
{
|
{
|
||||||
for (URRDADirtDataAsset* DirtDataAsset : DirtDataAssets)
|
for (URRDADirtDataAsset* DataAsset : DataAssets)
|
||||||
{
|
{
|
||||||
mDirtAssets.Add(DirtDataAsset->mItem, DirtDataAsset);
|
mDirtAssets.Add(DataAsset->mItem, DataAsset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UE_LOG(LogRRDApi, Log, TEXT("ReCacheDirtDataAssets: %d"), mDirtAssets.Num());
|
UE_LOG(LogRRDApi, Log, TEXT("ReCacheDirtDataAssets: %d"), mDirtAssets.Num());
|
||||||
@ -94,19 +87,95 @@ void URRDADataAssetSubsystem::ReCacheDirtDataAssets()
|
|||||||
|
|
||||||
void URRDADataAssetSubsystem::ReCacheTurbineDataAssets()
|
void URRDADataAssetSubsystem::ReCacheTurbineDataAssets()
|
||||||
{
|
{
|
||||||
UE_LOG(LogRRDApi, Log, TEXT("ReCacheTurbineDataAssets"));
|
mTurbineAssets.Empty();
|
||||||
|
TSet<URRDATurbineDataAsset*> DataAssets;
|
||||||
|
if(FindAllDataAssetsOfClass(DataAssets))
|
||||||
|
{
|
||||||
|
for (URRDATurbineDataAsset* DataAsset : DataAssets)
|
||||||
|
{
|
||||||
|
if(!mTurbineAssets.Contains(DataAsset->mTier)) {
|
||||||
|
mTurbineAssets.Add(DataAsset->mTier, TMap<TSubclassOf<UFGItemDescriptor>, URRDATurbineDataAsset*>());
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!DataAsset->mItem.ItemClass) {
|
||||||
|
UE_LOG(LogRRDApi, Fatal, TEXT("TurbineDataAsset %s has no ItemClass"), *DataAsset->GetPathName());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
mTurbineAssets[DataAsset->mTier].Add(DataAsset->mItem.ItemClass, DataAsset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
UE_LOG(LogRRDApi, Log, TEXT("ReCacheTurbineDataAssets: %d"), mTurbineAssets.Num());
|
||||||
}
|
}
|
||||||
|
|
||||||
void URRDADataAssetSubsystem::ReCacheBoilerDataAssets() {
|
void URRDADataAssetSubsystem::ReCacheBoilerDataAssets() {
|
||||||
UE_LOG(LogRRDApi, Log, TEXT("ReCacheBoilerDataAssets"));
|
mBoilerAssets.Empty();
|
||||||
|
TSet<URRDABoilerDataAsset*> DataAssets;
|
||||||
|
if(FindAllDataAssetsOfClass(DataAssets))
|
||||||
|
{
|
||||||
|
for (URRDABoilerDataAsset* DataAsset : DataAssets)
|
||||||
|
{
|
||||||
|
if(!mBoilerAssets.Contains(DataAsset->mTier)) {
|
||||||
|
mBoilerAssets.Add(DataAsset->mTier, TMap<TSubclassOf<UFGItemDescriptor>, URRDABoilerDataAsset*>());
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!DataAsset->mInput.ItemClass) {
|
||||||
|
UE_LOG(LogRRDApi, Fatal, TEXT("BoilerDataAsset %s has no ItemClass"), *DataAsset->GetPathName());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
mBoilerAssets[DataAsset->mTier].Add(DataAsset->mInput.ItemClass, DataAsset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
UE_LOG(LogRRDApi, Log, TEXT("ReCacheBoilerDataAssets: %d"), mTurbineAssets.Num());
|
||||||
}
|
}
|
||||||
|
|
||||||
void URRDADataAssetSubsystem::ReCacheCoolerDataAssets() {
|
void URRDADataAssetSubsystem::ReCacheCoolerDataAssets() {
|
||||||
UE_LOG(LogRRDApi, Log, TEXT("ReCacheCoolerDataAssets"));
|
mCoolerAssets.Empty();
|
||||||
|
TSet<URRDACoolerDataAsset*> DataAssets;
|
||||||
|
if(FindAllDataAssetsOfClass(DataAssets))
|
||||||
|
{
|
||||||
|
for (URRDACoolerDataAsset* DataAsset : DataAssets)
|
||||||
|
{
|
||||||
|
if(!mCoolerAssets.Contains(DataAsset->mType)) {
|
||||||
|
mCoolerAssets.Add(DataAsset->mType, TMap<TSubclassOf<UFGItemDescriptor>, URRDACoolerDataAsset*>());
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!DataAsset->mItem) {
|
||||||
|
UE_LOG(LogRRDApi, Fatal, TEXT("CoolerDataAsset %s has no ItemClass"), *DataAsset->GetPathName());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
mCoolerAssets[DataAsset->mType].Add(DataAsset->mItem, DataAsset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
UE_LOG(LogRRDApi, Log, TEXT("ReCacheCoolerDataAssets: %d"), mTurbineAssets.Num());
|
||||||
}
|
}
|
||||||
|
|
||||||
void URRDADataAssetSubsystem::ReCacheHeaterDataAssets() {
|
void URRDADataAssetSubsystem::ReCacheHeaterDataAssets() {
|
||||||
UE_LOG(LogRRDApi, Log, TEXT("ReCacheHeaterDataAssets"));
|
mHeaterAssets.Empty();
|
||||||
|
TSet<URRDAHeaterDataAsset*> DataAssets;
|
||||||
|
if(FindAllDataAssetsOfClass(DataAssets))
|
||||||
|
{
|
||||||
|
for (URRDAHeaterDataAsset* DataAsset : DataAssets)
|
||||||
|
{
|
||||||
|
if(!mHeaterAssets.Contains(DataAsset->mType)) {
|
||||||
|
mHeaterAssets.Add(DataAsset->mType, TMap<TSubclassOf<UFGItemDescriptor>, URRDAHeaterDataAsset*>());
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!DataAsset->mInput.ItemClass) {
|
||||||
|
UE_LOG(LogRRDApi, Fatal, TEXT("HeaterDataAsset %s has no ItemClass"), *DataAsset->GetPathName());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
mHeaterAssets[DataAsset->mType].Add(DataAsset->mInput.ItemClass, DataAsset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
UE_LOG(LogRRDApi, Log, TEXT("ReCacheHeaterDataAssets: %d"), mTurbineAssets.Num());
|
||||||
}
|
}
|
||||||
|
|
||||||
int32 URRDADataAssetSubsystem::GetAllDirtItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items) const
|
int32 URRDADataAssetSubsystem::GetAllDirtItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items) const
|
||||||
|
@ -14,15 +14,27 @@ class REFINEDRDAPI_API URRDABoilerDataAsset : public URRDADataAssetBase
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
/**
|
||||||
|
* Fuel item that this heater uses
|
||||||
|
*/
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Turbine", meta=( UIMin = "1", UIMax = "2" ))
|
||||||
|
int32 mTier = 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fuel item that this heater uses
|
* Fuel item that this heater uses
|
||||||
*/
|
*/
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Boiler")
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Boiler")
|
||||||
FItemAmount mItem;
|
FItemAmount mInput;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* What this boiler produces
|
* What this boiler produces
|
||||||
*/
|
*/
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Boiler")
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Boiler")
|
||||||
FItemAmount mOutputItem;
|
FItemAmount mOutput;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Duration for one production
|
||||||
|
*/
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Boiler")
|
||||||
|
float mDuration = 6.f;
|
||||||
};
|
};
|
@ -5,6 +5,7 @@
|
|||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "ItemAmount.h"
|
#include "ItemAmount.h"
|
||||||
#include "RRDADataAssetBase.h"
|
#include "RRDADataAssetBase.h"
|
||||||
|
#include "Enums/RRDARPEnums.h"
|
||||||
|
|
||||||
#include "RRDACoolerDataAsset.generated.h"
|
#include "RRDACoolerDataAsset.generated.h"
|
||||||
|
|
||||||
@ -14,9 +15,27 @@ class REFINEDRDAPI_API URRDACoolerDataAsset : public URRDADataAssetBase
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
/**
|
||||||
|
* What type of heater this is
|
||||||
|
*/
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Heater")
|
||||||
|
ERRDACoolerType mType = ERRDACoolerType::Chemical;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fuel item that this heater uses
|
* Fuel item that this heater uses
|
||||||
*/
|
*/
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Cooler")
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Cooler")
|
||||||
FItemAmount mItem;
|
TSubclassOf<UFGItemDescriptor> mItem;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* How much of the item is used
|
||||||
|
*/
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Cooler")
|
||||||
|
int32 mAmount = 1000;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Duration for one production
|
||||||
|
*/
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Boiler")
|
||||||
|
float mDuration = 6.f;
|
||||||
};
|
};
|
@ -19,7 +19,7 @@ public:
|
|||||||
* What type of heater this is
|
* What type of heater this is
|
||||||
*/
|
*/
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Heater")
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Heater")
|
||||||
ERRDAHeaterType mHeaterType;
|
ERRDAHeaterType mType = ERRDAHeaterType::Biomass;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fuel item that this heater uses
|
* Fuel item that this heater uses
|
||||||
@ -33,4 +33,10 @@ public:
|
|||||||
*/
|
*/
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Heater")
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Heater")
|
||||||
FItemAmount mOutput;
|
FItemAmount mOutput;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Duration for one production
|
||||||
|
*/
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Heater")
|
||||||
|
float mDuration = 6.f;
|
||||||
};
|
};
|
@ -14,6 +14,12 @@ class REFINEDRDAPI_API URRDATurbineDataAsset : public URRDADataAssetBase
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
/**
|
||||||
|
* Fuel item that this heater uses
|
||||||
|
*/
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Turbine", meta=( UIMin = "1", UIMax = "2" ))
|
||||||
|
int32 mTier = 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fuel item that this heater uses
|
* Fuel item that this heater uses
|
||||||
*/
|
*/
|
||||||
@ -26,4 +32,10 @@ public:
|
|||||||
*/
|
*/
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Turbine")
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Turbine")
|
||||||
FItemAmount mWasteItem;
|
FItemAmount mWasteItem;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Duration for one production
|
||||||
|
*/
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Turbine")
|
||||||
|
float mDuration = 6.f;
|
||||||
};
|
};
|
@ -7,7 +7,6 @@
|
|||||||
#include "AssetRegistry/AssetRegistryModule.h"
|
#include "AssetRegistry/AssetRegistryModule.h"
|
||||||
#include "DataAssets/RRDADataAssetBase.h"
|
#include "DataAssets/RRDADataAssetBase.h"
|
||||||
#include "DataAssets/RRDADirtDataAsset.h"
|
#include "DataAssets/RRDADirtDataAsset.h"
|
||||||
#include "Engine/AssetManager.h"
|
|
||||||
#include "Enums/RRDARPEnums.h"
|
#include "Enums/RRDARPEnums.h"
|
||||||
#include "Resources/FGItemDescriptor.h"
|
#include "Resources/FGItemDescriptor.h"
|
||||||
|
|
||||||
@ -59,6 +58,13 @@ public:
|
|||||||
template<class T>
|
template<class T>
|
||||||
bool FindAllDataAssetsOfClass(TSet<T*>& OutDataAssets);
|
bool FindAllDataAssetsOfClass(TSet<T*>& OutDataAssets);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @note For testing purposes only it currently finds 0 assets
|
||||||
|
* @deprecated Use FindAllDataAssetsOfClass instead it uses GetDerivedClasses and get all assets of a specific class
|
||||||
|
*/
|
||||||
|
template<class T>
|
||||||
|
bool FindAllDataAssetsOfClassUseRegistry(TSet<T*>& OutDataAssets);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
TMap<TSubclassOf<UFGItemDescriptor>, class URRDADirtDataAsset*> mDirtAssets;
|
TMap<TSubclassOf<UFGItemDescriptor>, class URRDADirtDataAsset*> mDirtAssets;
|
||||||
@ -73,42 +79,12 @@ public:
|
|||||||
TSet<URRDADataAssetBase*> mDisabledDataAssets;
|
TSet<URRDADataAssetBase*> mDisabledDataAssets;
|
||||||
|
|
||||||
UPROPERTY(BlueprintReadOnly, Transient, Category = "RRDA|DataAsset")
|
UPROPERTY(BlueprintReadOnly, Transient, Category = "RRDA|DataAsset")
|
||||||
TSet<URRDADataAssetBase*> mAllDataAssets;
|
TSet<URRDADataAssetBase*> mEnabledDataAssets;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
bool URRDADataAssetSubsystem::FindAllDataAssetsOfClass(TSet<T*>& OutDataAssets)
|
bool URRDADataAssetSubsystem::FindAllDataAssetsOfClass(TSet<T*>& OutDataAssets)
|
||||||
{
|
{
|
||||||
OutDataAssets.Empty();
|
|
||||||
|
|
||||||
// This doesn't work the AssetDatas are always invalid
|
|
||||||
/*UAssetManager& Manager = UAssetManager::Get();
|
|
||||||
|
|
||||||
TArray<FAssetData> AssetDatas;
|
|
||||||
Manager.GetPrimaryAssetDataList(FPrimaryAssetType("RRDADataAsset"), AssetDatas);
|
|
||||||
|
|
||||||
for (FAssetData AssetData : AssetDatas)
|
|
||||||
{
|
|
||||||
if(AssetData.IsValid())
|
|
||||||
{
|
|
||||||
if(URRDADataAssetBase* Asset = Cast<URRDADataAssetBase>(AssetData.GetAsset()))
|
|
||||||
{
|
|
||||||
if(!URRDADataAssetBase::IsEnabled(Asset, GetWorld()))
|
|
||||||
{
|
|
||||||
UE_LOG(LogRRDApi, Error, TEXT("Asset Disabled: %s"), *AssetData.AssetName.ToString());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
OutDataAssets.Add(Cast<T>(Asset));
|
|
||||||
UE_LOG(LogRRDApi, Log, TEXT("Found %s"), *AssetData.GetAsset()->GetPathName());
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
UE_LOG(LogRRDApi, Error, TEXT("Invalid AssetData: %s"), *AssetData.AssetName.ToString());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
TArray<UClass*> FoundClasses;
|
TArray<UClass*> FoundClasses;
|
||||||
GetDerivedClasses(T::StaticClass(), FoundClasses, true);
|
GetDerivedClasses(T::StaticClass(), FoundClasses, true);
|
||||||
|
|
||||||
@ -130,3 +106,36 @@ bool URRDADataAssetSubsystem::FindAllDataAssetsOfClass(TSet<T*>& OutDataAssets)
|
|||||||
|
|
||||||
return OutDataAssets.Num() > 0;
|
return OutDataAssets.Num() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
bool URRDADataAssetSubsystem::FindAllDataAssetsOfClassUseRegistry(TSet<T*>& OutDataAssets)
|
||||||
|
{
|
||||||
|
OutDataAssets.Empty();
|
||||||
|
|
||||||
|
// 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(URRDADataAssetBase::StaticClass()->GetClassPathName(), AssetList, true);
|
||||||
|
|
||||||
|
// Split assets into separate arrays.
|
||||||
|
for (const FAssetData& Asset : AssetList) {
|
||||||
|
UObject* Obj = Asset.GetAsset();
|
||||||
|
|
||||||
|
if(URRDADataAssetBase* BaseAsset = Cast<URRDADataAssetBase>(Obj))
|
||||||
|
{
|
||||||
|
if(URRDADataAssetBase::IsEnabled(BaseAsset, GetWorld()))
|
||||||
|
{
|
||||||
|
UE_LOG(LogRRDApi, Log, TEXT("Found %s"), *BaseAsset->GetPathName());
|
||||||
|
OutDataAssets.Add(Cast<T>(BaseAsset));
|
||||||
|
mEnabledDataAssets.Add(BaseAsset);
|
||||||
|
}
|
||||||
|
|
||||||
|
UE_LOG(LogRRDApi, Warning, TEXT("Asset Disabled: %s"), *BaseAsset->GetPathName());
|
||||||
|
mDisabledDataAssets.Add(BaseAsset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return OutDataAssets.Num() > 0;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user