feat: cleanup ds data asset

This commit is contained in:
mrhid6 2024-11-13 16:23:45 +00:00
parent 4c8e0b59a8
commit 4d01f587e4
3 changed files with 206 additions and 174 deletions

View File

@ -13,29 +13,25 @@
URRDADataAssetSubsystem::URRDADataAssetSubsystem() {} URRDADataAssetSubsystem::URRDADataAssetSubsystem() {}
URRDADataAssetSubsystem* URRDADataAssetSubsystem::Get(UObject* Context) URRDADataAssetSubsystem* URRDADataAssetSubsystem::Get(UObject* Context) {
{ if (IsValid(Context)) {
if (IsValid(Context))
{
return Context->GetWorld()->GetGameInstance()->GetSubsystem<URRDADataAssetSubsystem>(); return Context->GetWorld()->GetGameInstance()->GetSubsystem<URRDADataAssetSubsystem>();
} }
return nullptr; return nullptr;
} }
URRDADataAssetSubsystem* URRDADataAssetSubsystem::GetChecked(UObject* Context) URRDADataAssetSubsystem* URRDADataAssetSubsystem::GetChecked(UObject* Context) {
{
URRDADataAssetSubsystem* Subsystem = Get(Context); URRDADataAssetSubsystem* Subsystem = Get(Context);
fgcheck(Subsystem); fgcheck(Subsystem);
return Subsystem; return Subsystem;
} }
void URRDADataAssetSubsystem::Initialize(FSubsystemCollectionBase& Collection) void URRDADataAssetSubsystem::Initialize(FSubsystemCollectionBase& Collection) {
{
Super::Initialize(Collection); Super::Initialize(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);
@ -45,8 +41,7 @@ void URRDADataAssetSubsystem::Initialize(FSubsystemCollectionBase& Collection)
} }
} }
void URRDADataAssetSubsystem::Deinitialize() void URRDADataAssetSubsystem::Deinitialize() {
{
Super::Deinitialize(); Super::Deinitialize();
mEnabledDataAssets.Empty(); mEnabledDataAssets.Empty();
@ -57,11 +52,10 @@ void URRDADataAssetSubsystem::Deinitialize()
mCoolerAssets.Empty(); mCoolerAssets.Empty();
mHeaterAssets.Empty(); mHeaterAssets.Empty();
mGeneratorAssets.Empty(); mGeneratorAssets.Empty();
mDSModAdapterAssets.Empty(); mDSBuildingData.Empty();
} }
void URRDADataAssetSubsystem::StartScanForDataAssets() void URRDADataAssetSubsystem::StartScanForDataAssets() {
{
mDisabledDataAssets.Empty(); mDisabledDataAssets.Empty();
mEnabledDataAssets.Empty(); mEnabledDataAssets.Empty();
@ -71,34 +65,31 @@ void URRDADataAssetSubsystem::StartScanForDataAssets()
ReCacheHeaterDataAssets(); ReCacheHeaterDataAssets();
ReCacheTurbineDataAssets(); ReCacheTurbineDataAssets();
ReCacheGeneratorDataAssets(); ReCacheGeneratorDataAssets();
mDSBuildingData.Empty();
ReCacheDSModAdapterDataAssets(); ReCacheDSModAdapterDataAssets();
ReCacheDSAdapterCoversDataAssets();
} }
void URRDADataAssetSubsystem::ReCacheDirtDataAssets() void URRDADataAssetSubsystem::ReCacheDirtDataAssets() {
{
mDirtAssets.Empty(); mDirtAssets.Empty();
TSet<URRDADirtDataAsset*> DataAssets; TSet<URRDADirtDataAsset*> DataAssets;
if(FindAllDataAssetsOfClass(DataAssets)) if (FindAllDataAssetsOfClass(DataAssets)) {
{ for (URRDADirtDataAsset* DataAsset : DataAssets) {
for (URRDADirtDataAsset* DataAsset : DataAssets)
{
mDirtAssets.Add(DataAsset->mItem, DataAsset); mDirtAssets.Add(DataAsset->mItem, DataAsset);
} }
} }
UE_LOG(LogRRDApi, Log, TEXT("ReCacheDirtDataAssets: %d"), mDirtAssets.Num()); UE_LOG(LogRRDApi, Log, TEXT("ReCacheDirtDataAssets: %d"), mDirtAssets.Num());
} }
void URRDADataAssetSubsystem::ReCacheTurbineDataAssets() void URRDADataAssetSubsystem::ReCacheTurbineDataAssets() {
{
mTurbineAssets.Empty(); mTurbineAssets.Empty();
TSet<URRDATurbineDataAsset*> DataAssets; TSet<URRDATurbineDataAsset*> DataAssets;
int32 Added = 0; int32 Added = 0;
if(FindAllDataAssetsOfClass(DataAssets)) if (FindAllDataAssetsOfClass(DataAssets)) {
{ for (URRDATurbineDataAsset* DataAsset : DataAssets) {
for (URRDATurbineDataAsset* DataAsset : DataAssets) if (!mTurbineAssets.Contains(DataAsset->mTier)) {
{ mTurbineAssets.Add(DataAsset->mTier, FRRDADataHolderTurbineData());
if(!mTurbineAssets.Contains(DataAsset->mTier)) {
mTurbineAssets.Add(DataAsset->mTier, FRRDADataHolderTurbineData());
} }
fgcheckf(DataAsset->mItem.ItemClass, TEXT("TurbineDataAsset %s has no ItemClass"), *DataAsset->GetPathName()); fgcheckf(DataAsset->mItem.ItemClass, TEXT("TurbineDataAsset %s has no ItemClass"), *DataAsset->GetPathName());
@ -107,7 +98,7 @@ void URRDADataAssetSubsystem::ReCacheTurbineDataAssets()
Added++; Added++;
} }
} }
UE_LOG(LogRRDApi, Log, TEXT("ReCacheTurbineDataAssets: %d"), Added); UE_LOG(LogRRDApi, Log, TEXT("ReCacheTurbineDataAssets: %d"), Added);
} }
@ -115,12 +106,10 @@ void URRDADataAssetSubsystem::ReCacheBoilerDataAssets() {
mBoilerAssets.Empty(); mBoilerAssets.Empty();
TSet<URRDABoilerDataAsset*> DataAssets; TSet<URRDABoilerDataAsset*> DataAssets;
int32 Added = 0; int32 Added = 0;
if(FindAllDataAssetsOfClass(DataAssets)) if (FindAllDataAssetsOfClass(DataAssets)) {
{ for (URRDABoilerDataAsset* DataAsset : DataAssets) {
for (URRDABoilerDataAsset* DataAsset : DataAssets) if (!mBoilerAssets.Contains(DataAsset->mTier)) {
{ mBoilerAssets.Add(DataAsset->mTier, FRRDADataHolderBoilerData());
if(!mBoilerAssets.Contains(DataAsset->mTier)) {
mBoilerAssets.Add(DataAsset->mTier, FRRDADataHolderBoilerData());
} }
fgcheckf(DataAsset->mInput.ItemClass, TEXT("BoilerDataAsset %s has no ItemClass"), *DataAsset->GetPathName()); fgcheckf(DataAsset->mInput.ItemClass, TEXT("BoilerDataAsset %s has no ItemClass"), *DataAsset->GetPathName());
@ -129,7 +118,7 @@ void URRDADataAssetSubsystem::ReCacheBoilerDataAssets() {
Added++; Added++;
} }
} }
UE_LOG(LogRRDApi, Log, TEXT("ReCacheBoilerDataAssets: %d"), Added); UE_LOG(LogRRDApi, Log, TEXT("ReCacheBoilerDataAssets: %d"), Added);
} }
@ -137,12 +126,10 @@ void URRDADataAssetSubsystem::ReCacheCoolerDataAssets() {
mCoolerAssets.Empty(); mCoolerAssets.Empty();
TSet<URRDACoolerDataAsset*> DataAssets; TSet<URRDACoolerDataAsset*> DataAssets;
int32 Added = 0; int32 Added = 0;
if(FindAllDataAssetsOfClass(DataAssets)) if (FindAllDataAssetsOfClass(DataAssets)) {
{ for (URRDACoolerDataAsset* DataAsset : DataAssets) {
for (URRDACoolerDataAsset* DataAsset : DataAssets) if (!mCoolerAssets.Contains(DataAsset->mType)) {
{ mCoolerAssets.Add(DataAsset->mType, FRRDADataHolderCoolerData());
if(!mCoolerAssets.Contains(DataAsset->mType)) {
mCoolerAssets.Add(DataAsset->mType, FRRDADataHolderCoolerData());
} }
fgcheckf(DataAsset->mItem, TEXT("CoolerDataAsset %s has no ItemClass"), *DataAsset->GetPathName()); fgcheckf(DataAsset->mItem, TEXT("CoolerDataAsset %s has no ItemClass"), *DataAsset->GetPathName());
@ -151,7 +138,7 @@ void URRDADataAssetSubsystem::ReCacheCoolerDataAssets() {
Added++; Added++;
} }
} }
UE_LOG(LogRRDApi, Log, TEXT("ReCacheCoolerDataAssets: %d"), Added); UE_LOG(LogRRDApi, Log, TEXT("ReCacheCoolerDataAssets: %d"), Added);
} }
@ -159,66 +146,82 @@ void URRDADataAssetSubsystem::ReCacheHeaterDataAssets() {
mHeaterAssets.Empty(); mHeaterAssets.Empty();
TSet<URRDAHeaterDataAsset*> DataAssets; TSet<URRDAHeaterDataAsset*> DataAssets;
int32 Added = 0; int32 Added = 0;
if(FindAllDataAssetsOfClass(DataAssets)) if (FindAllDataAssetsOfClass(DataAssets)) {
{ for (URRDAHeaterDataAsset* DataAsset : DataAssets) {
for (URRDAHeaterDataAsset* DataAsset : DataAssets) if (!mHeaterAssets.Contains(DataAsset->mType)) {
{ mHeaterAssets.Add(DataAsset->mType, FRRDADataHolderHeaterData());
if(!mHeaterAssets.Contains(DataAsset->mType)) {
mHeaterAssets.Add(DataAsset->mType, FRRDADataHolderHeaterData());
} }
fgcheckf(DataAsset->mInput.ItemClass, TEXT("HeaterDataAsset %s has no ItemClass"), *DataAsset->GetPathName()); fgcheckf(DataAsset->mInput.ItemClass, TEXT("HeaterDataAsset %s has no ItemClass"), *DataAsset->GetPathName());
mHeaterAssets[DataAsset->mType].Data.Add(DataAsset->mInput.ItemClass, DataAsset); mHeaterAssets[DataAsset->mType].Data.Add(DataAsset->mInput.ItemClass, DataAsset);
Added++; Added++;
} }
} }
UE_LOG(LogRRDApi, Log, TEXT("ReCacheHeaterDataAssets: %d"), Added); UE_LOG(LogRRDApi, Log, TEXT("ReCacheHeaterDataAssets: %d"), Added);
} }
void URRDADataAssetSubsystem::ReCacheGeneratorDataAssets() void URRDADataAssetSubsystem::ReCacheGeneratorDataAssets() {
{
mGeneratorAssets.Empty(); mGeneratorAssets.Empty();
TSet<URRDAGeneratorDataAsset*> DataAssets; TSet<URRDAGeneratorDataAsset*> DataAssets;
if(FindAllDataAssetsOfClass(DataAssets)) if (FindAllDataAssetsOfClass(DataAssets)) {
{ for (URRDAGeneratorDataAsset* DataAsset : DataAssets) {
for (URRDAGeneratorDataAsset* DataAsset : DataAssets)
{
mGeneratorAssets.Add(DataAsset->mTier, DataAsset); mGeneratorAssets.Add(DataAsset->mTier, DataAsset);
} }
} }
UE_LOG(LogRRDApi, Log, TEXT("ReCacheGeneratorDataAssets: %d"), mGeneratorAssets.Num()); UE_LOG(LogRRDApi, Log, TEXT("ReCacheGeneratorDataAssets: %d"), mGeneratorAssets.Num());
} }
void URRDADataAssetSubsystem::ReCacheDSModAdapterDataAssets() { void URRDADataAssetSubsystem::ReCacheDSModAdapterDataAssets() {
mDSModAdapterAssets.Empty();
TSet<URRDADataAssetDSModAdapter*> DataAssets; TSet<URRDADataAssetDSModAdapter*> DataAssets;
if(FindAllDataAssetsOfClass(DataAssets)) if (FindAllDataAssetsOfClass(DataAssets)) {
{ for (URRDADataAssetDSModAdapter* DataAsset : DataAssets) {
for (URRDADataAssetDSModAdapter* DataAsset : DataAssets) FRRDADataHolderDSBuildingData* existingData = mDSBuildingData.Find(DataAsset->mBuildingClass);
{ if (existingData == nullptr) {
mDSModAdapterAssets.Add(DataAsset->mBuildingClass, DataAsset); FRRDADataHolderDSBuildingData newData = FRRDADataHolderDSBuildingData();
newData.ModAdapter = DataAsset;
mDSBuildingData.Add(DataAsset->mBuildingClass, newData);
}
else {
existingData->ModAdapter = DataAsset;
}
} }
} }
UE_LOGFMT(LogRRDApi, Log, "ReCacheDSModAdapterDataAssets: {0}", mDSModAdapterAssets.Num()); UE_LOGFMT(LogRRDApi, Log, "ReCacheDSModAdapterDataAssets: {0}", mDSBuildingData.Num());
} }
int32 URRDADataAssetSubsystem::GetAllDirtItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items) const void URRDADataAssetSubsystem::ReCacheDSAdapterCoversDataAssets() {
{ TSet<URRDADataAssetDSAdapterCovers*> DataAssets;
if(!mDirtAssets.Num()) if (FindAllDataAssetsOfClass(DataAssets)) {
{ for (URRDADataAssetDSAdapterCovers* DataAsset : DataAssets) {
FRRDADataHolderDSBuildingData* existingData = mDSBuildingData.Find(DataAsset->mBuildingClass);
if (existingData == nullptr) {
FRRDADataHolderDSBuildingData newData = FRRDADataHolderDSBuildingData();
newData.AdapterCovers = DataAsset;
mDSBuildingData.Add(DataAsset->mBuildingClass, newData);
}
else {
existingData->AdapterCovers = DataAsset;
}
}
}
UE_LOGFMT(LogRRDApi, Log, "ReCacheDSAdapterCoversDataAssets: {0}", mDSBuildingData.Num());
}
int32 URRDADataAssetSubsystem::GetAllDirtItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items) const {
if (!mDirtAssets.Num()) {
UE_LOG(LogRRDApi, Error, TEXT("No Dirts found!")); UE_LOG(LogRRDApi, Error, TEXT("No Dirts found!"));
} }
return mDirtAssets.GetKeys(Items); return mDirtAssets.GetKeys(Items);
} }
URRDADirtDataAsset* URRDADataAssetSubsystem::GetDataForDirtItem(TSubclassOf<UFGItemDescriptor> Item) const URRDADirtDataAsset* URRDADataAssetSubsystem::GetDataForDirtItem(TSubclassOf<UFGItemDescriptor> Item) const {
{ if (!Item) return nullptr;
if(!Item) return nullptr;
URRDADirtDataAsset* const* Desc = mDirtAssets.Find(Item); URRDADirtDataAsset* const* Desc = mDirtAssets.Find(Item);
if(!Desc) return nullptr; if (!Desc) return nullptr;
return *Desc; return *Desc;
} }
@ -228,30 +231,63 @@ TArray<URRDADirtDataAsset*> URRDADataAssetSubsystem::GetAllDirtAssets() const {
return Assets; return Assets;
} }
int32 URRDADataAssetSubsystem::GetAllModAdapterBuildingClasses(TArray<TSubclassOf<AFGBuildableFactory>>& OutBuildingClasses) const { int32 URRDADataAssetSubsystem::GetAllDSBuildingClasses(TArray<TSubclassOf<AFGBuildableFactory>>& OutBuildingClasses) const {
if(!mDSModAdapterAssets.Num()) if (!mDSBuildingData.Num()) {
{ UE_LOG(LogRRDApi, Error, TEXT("No DS Buildings found!"));
UE_LOG(LogRRDApi, Error, TEXT("No Mod Adapter Assets found!"));
} }
return mDSModAdapterAssets.GetKeys(OutBuildingClasses); return mDSBuildingData.GetKeys(OutBuildingClasses);
} }
URRDADataAssetDSModAdapter* URRDADataAssetSubsystem::GetModAdapterDataAssetForBuildingClass(TSubclassOf<AFGBuildableFactory> BuildingClass) const { URRDADataAssetDSModAdapter* URRDADataAssetSubsystem::GetModAdapterDataAssetForBuildingClass(TSubclassOf<AFGBuildableFactory> BuildingClass) const {
if(!BuildingClass) return nullptr; if (!BuildingClass) return nullptr;
URRDADataAssetDSModAdapter* const* DataAsset = mDSModAdapterAssets.Find(BuildingClass);
if(!DataAsset) return nullptr; const FRRDADataHolderDSBuildingData* data = mDSBuildingData.Find(BuildingClass);
return *DataAsset; if (data == nullptr) return nullptr;
URRDADataAssetDSModAdapter* DataAsset = data->ModAdapter;
if (!DataAsset) return nullptr;
return DataAsset;
} }
TArray<URRDADataAssetDSModAdapter*> URRDADataAssetSubsystem::GetAllModAdapterDataAssets() const { TArray<URRDADataAssetDSModAdapter*> URRDADataAssetSubsystem::GetAllModAdapterDataAssets() const {
TArray<URRDADataAssetDSModAdapter*> Assets; TArray<URRDADataAssetDSModAdapter*> Assets;
mDSModAdapterAssets.GenerateValueArray(Assets); TArray<FRRDADataHolderDSBuildingData> buildingDatas;
mDSBuildingData.GenerateValueArray(buildingDatas);
for (FRRDADataHolderDSBuildingData& buildingData : buildingDatas) {
Assets.AddUnique(buildingData.ModAdapter);
}
return Assets; return Assets;
} }
bool URRDADataAssetSubsystem::GetAllTurbineItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const URRDADataAssetDSAdapterCovers* URRDADataAssetSubsystem::GetDSAdapterCoverDataAssetForBuildingClass(TSubclassOf<AFGBuildableFactory> BuildingClass) const {
{ if (!BuildingClass) return nullptr;
if(!mTurbineAssets.Contains(Tier)) {
const FRRDADataHolderDSBuildingData* data = mDSBuildingData.Find(BuildingClass);
if (data == nullptr) return nullptr;
URRDADataAssetDSAdapterCovers* DataAsset = data->AdapterCovers;
if (!DataAsset) return nullptr;
return DataAsset;
}
TArray<URRDADataAssetDSAdapterCovers*> URRDADataAssetSubsystem::GetAllDSAdapterCoverDataAssets() const {
TArray<URRDADataAssetDSAdapterCovers*> Assets;
TArray<FRRDADataHolderDSBuildingData> buildingDatas;
mDSBuildingData.GenerateValueArray(buildingDatas);
for (FRRDADataHolderDSBuildingData& buildingData : buildingDatas) {
Assets.AddUnique(buildingData.AdapterCovers);
}
return Assets;
}
bool URRDADataAssetSubsystem::GetAllTurbineItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const {
if (!mTurbineAssets.Contains(Tier)) {
return false; return false;
} }
@ -263,10 +299,9 @@ bool URRDADataAssetSubsystem::GetAllTurbineItems(TArray<TSubclassOf<UFGItemDescr
bool URRDADataAssetSubsystem::GetAllTurbineRelevantItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const { bool URRDADataAssetSubsystem::GetAllTurbineRelevantItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const {
Items.Empty(); Items.Empty();
for (URRDATurbineDataAsset* Asset : GetAllTurbineAssets(Tier)) for (URRDATurbineDataAsset* Asset : GetAllTurbineAssets(Tier)) {
{
Items.AddUnique(Asset->mItem.ItemClass); Items.AddUnique(Asset->mItem.ItemClass);
if(Asset->mWasteItem.ItemClass) { if (Asset->mWasteItem.ItemClass) {
Items.AddUnique(Asset->mWasteItem.ItemClass); Items.AddUnique(Asset->mWasteItem.ItemClass);
} }
} }
@ -274,7 +309,7 @@ bool URRDADataAssetSubsystem::GetAllTurbineRelevantItems(TArray<TSubclassOf<UFGI
} }
TArray<URRDATurbineDataAsset*> URRDADataAssetSubsystem::GetAllTurbineAssets(int32 Tier) const { TArray<URRDATurbineDataAsset*> URRDADataAssetSubsystem::GetAllTurbineAssets(int32 Tier) const {
if(!mTurbineAssets.Contains(Tier)) { if (!mTurbineAssets.Contains(Tier)) {
UE_LOG(LogRRDApi, Error, TEXT("No TurbineAssets found for Type: %d"), Tier); UE_LOG(LogRRDApi, Error, TEXT("No TurbineAssets found for Type: %d"), Tier);
return TArray<URRDATurbineDataAsset*>(); return TArray<URRDATurbineDataAsset*>();
} }
@ -288,9 +323,8 @@ URRDATurbineDataAsset* URRDADataAssetSubsystem::GetDefaultTurbineAsset(int32 Tie
return GetAllTurbineAssets(Tier).Top(); return GetAllTurbineAssets(Tier).Top();
} }
URRDATurbineDataAsset* URRDADataAssetSubsystem::GetTurbineItemData(TSubclassOf<UFGItemDescriptor> Item, int32 Tier) const URRDATurbineDataAsset* URRDADataAssetSubsystem::GetTurbineItemData(TSubclassOf<UFGItemDescriptor> Item, int32 Tier) const {
{ if (!mTurbineAssets.Contains(Tier)) {
if(!mTurbineAssets.Contains(Tier)) {
return nullptr; return nullptr;
} }
@ -298,9 +332,8 @@ URRDATurbineDataAsset* URRDADataAssetSubsystem::GetTurbineItemData(TSubclassOf<U
} }
bool URRDADataAssetSubsystem::GetAllCoolerItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, ERRDACoolerType Type) const bool URRDADataAssetSubsystem::GetAllCoolerItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, ERRDACoolerType Type) const {
{ if (!mCoolerAssets.Contains(Type)) return false;
if(!mCoolerAssets.Contains(Type)) return false;
Items.Empty(); Items.Empty();
mCoolerAssets[Type].Data.GetKeys(Items); mCoolerAssets[Type].Data.GetKeys(Items);
@ -308,21 +341,17 @@ bool URRDADataAssetSubsystem::GetAllCoolerItems(TArray<TSubclassOf<UFGItemDescri
return Items.Num() > 0; return Items.Num() > 0;
} }
URRDACoolerDataAsset* URRDADataAssetSubsystem::GetCoolerItemData(TSubclassOf<UFGItemDescriptor> Item, ERRDACoolerType Type) const URRDACoolerDataAsset* URRDADataAssetSubsystem::GetCoolerItemData(TSubclassOf<UFGItemDescriptor> Item, ERRDACoolerType Type) const {
{ if (!mCoolerAssets.Contains(Type)) return nullptr;
if(!mCoolerAssets.Contains(Type)) return nullptr;
return mCoolerAssets[Type].Data.FindRef(Item); return mCoolerAssets[Type].Data.FindRef(Item);
} }
URRDACoolerDataAsset* URRDADataAssetSubsystem::GetDefaultCoolerAsset(ERRDACoolerType Type) const URRDACoolerDataAsset* URRDADataAssetSubsystem::GetDefaultCoolerAsset(ERRDACoolerType Type) const {
{
return GetAllCoolerAssets(Type).Top(); return GetAllCoolerAssets(Type).Top();
} }
TArray<URRDACoolerDataAsset*> URRDADataAssetSubsystem::GetAllCoolerAssets(ERRDACoolerType Type) const TArray<URRDACoolerDataAsset*> URRDADataAssetSubsystem::GetAllCoolerAssets(ERRDACoolerType Type) const {
{ if (!mCoolerAssets.Contains(Type)) {
if(!mCoolerAssets.Contains(Type))
{
UE_LOG(LogRRDApi, Error, TEXT("No CoolerAssets found for Type: %d"), Type); UE_LOG(LogRRDApi, Error, TEXT("No CoolerAssets found for Type: %d"), Type);
return TArray<URRDACoolerDataAsset*>(); return TArray<URRDACoolerDataAsset*>();
} }
@ -335,47 +364,40 @@ TArray<URRDACoolerDataAsset*> URRDADataAssetSubsystem::GetAllCoolerAssets(ERRDAC
URRDAGeneratorDataAsset* URRDADataAssetSubsystem::GetGeneratorItemData(int32 Tier) const { URRDAGeneratorDataAsset* URRDADataAssetSubsystem::GetGeneratorItemData(int32 Tier) const {
UE_LOG(LogRRDApi, Log, TEXT("GetGeneratorItemData: %d"), Tier); UE_LOG(LogRRDApi, Log, TEXT("GetGeneratorItemData: %d"), Tier);
if(!mGeneratorAssets.Contains(Tier)) return nullptr; if (!mGeneratorAssets.Contains(Tier)) return nullptr;
return mGeneratorAssets.FindRef(Tier); return mGeneratorAssets.FindRef(Tier);
} }
bool URRDADataAssetSubsystem::GetAllBoilerItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const bool URRDADataAssetSubsystem::GetAllBoilerItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const {
{ if (!mBoilerAssets.Contains(Tier)) return false;
if(!mBoilerAssets.Contains(Tier)) return false;
mBoilerAssets[Tier].Data.GetKeys(Items); mBoilerAssets[Tier].Data.GetKeys(Items);
return Items.Num() > 0; return Items.Num() > 0;
} }
URRDABoilerDataAsset* URRDADataAssetSubsystem::GetBoilerItemData(TSubclassOf<UFGItemDescriptor> Item, int32 Tier) const URRDABoilerDataAsset* URRDADataAssetSubsystem::GetBoilerItemData(TSubclassOf<UFGItemDescriptor> Item, int32 Tier) const {
{ if (!mBoilerAssets.Contains(Tier)) return nullptr;
if(!mBoilerAssets.Contains(Tier)) return nullptr;
return mBoilerAssets[Tier].Data.FindRef(Item); return mBoilerAssets[Tier].Data.FindRef(Item);
} }
bool URRDADataAssetSubsystem::GetAllBoilerRelevantItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const bool URRDADataAssetSubsystem::GetAllBoilerRelevantItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const {
{
Items.Empty(); Items.Empty();
for (URRDABoilerDataAsset* Asset : GetAllBoilerAssets(Tier)) for (URRDABoilerDataAsset* Asset : GetAllBoilerAssets(Tier)) {
{
Items.AddUnique(Asset->mInput.ItemClass); Items.AddUnique(Asset->mInput.ItemClass);
if(Asset->mOutput.ItemClass) { if (Asset->mOutput.ItemClass) {
Items.AddUnique(Asset->mOutput.ItemClass); Items.AddUnique(Asset->mOutput.ItemClass);
} }
} }
return Items.Num() > 0; return Items.Num() > 0;
} }
URRDABoilerDataAsset* URRDADataAssetSubsystem::GetDefaultBoilerAsset(int32 Tier) const URRDABoilerDataAsset* URRDADataAssetSubsystem::GetDefaultBoilerAsset(int32 Tier) const {
{
return GetAllBoilerAssets(Tier).Top(); return GetAllBoilerAssets(Tier).Top();
} }
TArray<URRDABoilerDataAsset*> URRDADataAssetSubsystem::GetAllBoilerAssets(int32 Tier) const TArray<URRDABoilerDataAsset*> URRDADataAssetSubsystem::GetAllBoilerAssets(int32 Tier) const {
{ if (!mBoilerAssets.Contains(Tier)) {
if(!mBoilerAssets.Contains(Tier))
{
UE_LOG(LogRRDApi, Error, TEXT("No BoilerAssets found for Type: %d"), Tier); UE_LOG(LogRRDApi, Error, TEXT("No BoilerAssets found for Type: %d"), Tier);
return TArray<URRDABoilerDataAsset*>(); return TArray<URRDABoilerDataAsset*>();
} }
@ -387,42 +409,36 @@ TArray<URRDABoilerDataAsset*> URRDADataAssetSubsystem::GetAllBoilerAssets(int32
} }
bool URRDADataAssetSubsystem::GetAllHeaterItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, ERRDAHeaterType Type) const { bool URRDADataAssetSubsystem::GetAllHeaterItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, ERRDAHeaterType Type) const {
if(!mHeaterAssets.Contains(Type)) return false; if (!mHeaterAssets.Contains(Type)) return false;
mHeaterAssets[Type].Data.GetKeys(Items); mHeaterAssets[Type].Data.GetKeys(Items);
return Items.Num() > 0; return Items.Num() > 0;
} }
URRDAHeaterDataAsset* URRDADataAssetSubsystem::GetHeaterItemData(TSubclassOf<UFGItemDescriptor> Item, ERRDAHeaterType Type) const URRDAHeaterDataAsset* URRDADataAssetSubsystem::GetHeaterItemData(TSubclassOf<UFGItemDescriptor> Item, ERRDAHeaterType Type) const {
{ if (!mHeaterAssets.Contains(Type)) return nullptr;
if(!mHeaterAssets.Contains(Type)) return nullptr;
return mHeaterAssets[Type].Data.FindRef(Item); return mHeaterAssets[Type].Data.FindRef(Item);
} }
bool URRDADataAssetSubsystem::GetAllHeaterRelevantItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, ERRDAHeaterType Type) const bool URRDADataAssetSubsystem::GetAllHeaterRelevantItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, ERRDAHeaterType Type) const {
{
Items.Empty(); Items.Empty();
for (URRDAHeaterDataAsset* HeaterAsset : GetAllHeaterAssets(Type)) for (URRDAHeaterDataAsset* HeaterAsset : GetAllHeaterAssets(Type)) {
{
Items.AddUnique(HeaterAsset->mInput.ItemClass); Items.AddUnique(HeaterAsset->mInput.ItemClass);
if(HeaterAsset->mOutput.ItemClass) { if (HeaterAsset->mOutput.ItemClass) {
Items.AddUnique(HeaterAsset->mOutput.ItemClass); Items.AddUnique(HeaterAsset->mOutput.ItemClass);
} }
} }
return Items.Num() > 0; return Items.Num() > 0;
} }
URRDAHeaterDataAsset* URRDADataAssetSubsystem::GetDefaultHeaterAsset(ERRDAHeaterType Type) const URRDAHeaterDataAsset* URRDADataAssetSubsystem::GetDefaultHeaterAsset(ERRDAHeaterType Type) const {
{
return GetAllHeaterAssets(Type).Top(); return GetAllHeaterAssets(Type).Top();
} }
TArray<URRDAHeaterDataAsset*> URRDADataAssetSubsystem::GetAllHeaterAssets(ERRDAHeaterType Type) const TArray<URRDAHeaterDataAsset*> URRDADataAssetSubsystem::GetAllHeaterAssets(ERRDAHeaterType Type) const {
{ if (!mHeaterAssets.Contains(Type)) {
if(!mHeaterAssets.Contains(Type))
{
UE_LOG(LogRRDApi, Error, TEXT("No HeaterAssets found for Type: %d"), Type); UE_LOG(LogRRDApi, Error, TEXT("No HeaterAssets found for Type: %d"), Type);
return TArray<URRDAHeaterDataAsset*>(); return TArray<URRDAHeaterDataAsset*>();
} }

View File

@ -15,11 +15,11 @@ UCLASS()
class REFINEDRDAPI_API URRDADataAssetDSAdapterCovers : public URRDADataAssetBase class REFINEDRDAPI_API URRDADataAssetDSAdapterCovers : public URRDADataAssetBase
{ {
GENERATED_BODY() GENERATED_BODY()
public:
public:
/* The building class these adapter covers belongs to */ /* The building class these adapter covers belongs to */
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="AdapterCovers") UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="AdapterCovers")
TSubclassOf<AFGBuildableFactory> mBuildableClass; TSubclassOf<AFGBuildableFactory> mBuildingClass;
/* An array of covers to place on the buildable connections */ /* An array of covers to place on the buildable connections */
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="AdapterCovers") UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="AdapterCovers")

View File

@ -56,6 +56,18 @@ struct FRRDADataHolderHeaterData
TMap<TSubclassOf<UFGItemDescriptor>, URRDAHeaterDataAsset*> Data; TMap<TSubclassOf<UFGItemDescriptor>, URRDAHeaterDataAsset*> Data;
}; };
USTRUCT(BlueprintType)
struct FRRDADataHolderDSBuildingData
{
GENERATED_BODY()
UPROPERTY()
URRDADataAssetDSAdapterCovers* AdapterCovers;
UPROPERTY()
URRDADataAssetDSModAdapter* ModAdapter;
};
UCLASS() UCLASS()
class REFINEDRDAPI_API URRDADataAssetSubsystem : public UGameInstanceSubsystem class REFINEDRDAPI_API URRDADataAssetSubsystem : public UGameInstanceSubsystem
{ {
@ -85,12 +97,13 @@ public:
void ReCacheHeaterDataAssets(); void ReCacheHeaterDataAssets();
void ReCacheGeneratorDataAssets(); void ReCacheGeneratorDataAssets();
void ReCacheDSModAdapterDataAssets(); void ReCacheDSModAdapterDataAssets();
void ReCacheDSAdapterCoversDataAssets();
public: public:
// Dirt Functions // Dirt Functions
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|FF") UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|FF")
int32 GetAllDirtItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items) const; int32 GetAllDirtItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items) const;
UFUNCTION(BlueprintCallable, Category = "RRDA|DataAsset|FF") UFUNCTION(BlueprintCallable, Category = "RRDA|DataAsset|FF")
URRDADirtDataAsset* GetDataForDirtItem(TSubclassOf<UFGItemDescriptor> Item) const; URRDADirtDataAsset* GetDataForDirtItem(TSubclassOf<UFGItemDescriptor> Item) const;
@ -99,21 +112,28 @@ public:
// DS Mod Adapter Functions // DS Mod Adapter Functions
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|DS") UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|DS")
int32 GetAllModAdapterBuildingClasses(TArray<TSubclassOf<AFGBuildableFactory>>& OutBuildingClasses) const; int32 GetAllDSBuildingClasses(TArray<TSubclassOf<AFGBuildableFactory>>& OutBuildingClasses) const;
UFUNCTION(BlueprintCallable, Category = "RRDA|DataAsset|DS") UFUNCTION(BlueprintCallable, Category = "RRDA|DataAsset|DS")
URRDADataAssetDSModAdapter* GetModAdapterDataAssetForBuildingClass(TSubclassOf<AFGBuildableFactory> BuildingClass) const; URRDADataAssetDSModAdapter* GetModAdapterDataAssetForBuildingClass(TSubclassOf<AFGBuildableFactory> BuildingClass) const;
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|DS") UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|DS")
TArray<URRDADataAssetDSModAdapter*> GetAllModAdapterDataAssets() const; TArray<URRDADataAssetDSModAdapter*> GetAllModAdapterDataAssets() const;
// DS Adapter Covers Functions
UFUNCTION(BlueprintCallable, Category = "RRDA|DataAsset|DS")
URRDADataAssetDSAdapterCovers* GetDSAdapterCoverDataAssetForBuildingClass(TSubclassOf<AFGBuildableFactory> BuildingClass) const;
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|DS")
TArray<URRDADataAssetDSAdapterCovers*> GetAllDSAdapterCoverDataAssets() const;
// Turbine Functions // Turbine Functions
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
bool GetAllTurbineItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const; bool GetAllTurbineItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const;
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
URRDATurbineDataAsset* GetTurbineItemData(TSubclassOf<UFGItemDescriptor>Item, int32 Tier) const; URRDATurbineDataAsset* GetTurbineItemData(TSubclassOf<UFGItemDescriptor> Item, int32 Tier) const;
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
bool GetAllTurbineRelevantItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const; bool GetAllTurbineRelevantItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const;
@ -126,9 +146,9 @@ public:
// Cooler Functions // Cooler Functions
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
bool GetAllCoolerItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, ERRDACoolerType Type) const; bool GetAllCoolerItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, ERRDACoolerType Type) const;
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
URRDACoolerDataAsset* GetCoolerItemData(TSubclassOf<UFGItemDescriptor>Item, ERRDACoolerType Type) const; URRDACoolerDataAsset* GetCoolerItemData(TSubclassOf<UFGItemDescriptor> Item, ERRDACoolerType Type) const;
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
URRDACoolerDataAsset* GetDefaultCoolerAsset(ERRDACoolerType Type) const; URRDACoolerDataAsset* GetDefaultCoolerAsset(ERRDACoolerType Type) const;
@ -143,10 +163,10 @@ public:
// Boiler Functions // Boiler Functions
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
bool GetAllBoilerItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const; bool GetAllBoilerItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const;
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
URRDABoilerDataAsset* GetBoilerItemData(TSubclassOf<UFGItemDescriptor>Item, int32 Tier) const; URRDABoilerDataAsset* GetBoilerItemData(TSubclassOf<UFGItemDescriptor> Item, int32 Tier) const;
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
bool GetAllBoilerRelevantItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const; bool GetAllBoilerRelevantItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, int32 Tier) const;
@ -159,10 +179,10 @@ public:
// Heater Functions // Heater Functions
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
bool GetAllHeaterItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, ERRDAHeaterType Type) const; bool GetAllHeaterItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, ERRDAHeaterType Type) const;
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
URRDAHeaterDataAsset* GetHeaterItemData(TSubclassOf<UFGItemDescriptor>Item, ERRDAHeaterType Type) const; URRDAHeaterDataAsset* GetHeaterItemData(TSubclassOf<UFGItemDescriptor> Item, ERRDAHeaterType Type) const;
UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP") UFUNCTION(BlueprintPure, Category = "RRDA|DataAsset|RP|MP")
bool GetAllHeaterRelevantItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, ERRDAHeaterType Type) const; bool GetAllHeaterRelevantItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items, ERRDAHeaterType Type) const;
@ -178,7 +198,7 @@ public:
* @param OutDataAssets - Set of data assets * @param OutDataAssets - Set of data assets
* @return true if found any data assets * @return true if found any data assets
*/ */
template<class T> template <class T>
bool FindAllDataAssetsOfClass(TSet<T*>& OutDataAssets); bool FindAllDataAssetsOfClass(TSet<T*>& OutDataAssets);
public: public:
@ -186,20 +206,20 @@ public:
TMap<TSubclassOf<UFGItemDescriptor>, URRDADirtDataAsset*> mDirtAssets; TMap<TSubclassOf<UFGItemDescriptor>, URRDADirtDataAsset*> mDirtAssets;
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset") UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
TMap<TSubclassOf<AFGBuildableFactory>, URRDADataAssetDSModAdapter*> mDSModAdapterAssets; TMap<TSubclassOf<AFGBuildableFactory>, FRRDADataHolderDSBuildingData> mDSBuildingData;
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset") UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
TMap<int32, URRDAGeneratorDataAsset*> mGeneratorAssets; TMap<int32, URRDAGeneratorDataAsset*> mGeneratorAssets;
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset") UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
TMap<int32, FRRDADataHolderTurbineData> mTurbineAssets; TMap<int32, FRRDADataHolderTurbineData> mTurbineAssets;
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset") UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
TMap<int32, FRRDADataHolderBoilerData> mBoilerAssets; TMap<int32, FRRDADataHolderBoilerData> mBoilerAssets;
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset") UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
TMap<ERRDACoolerType, FRRDADataHolderCoolerData> mCoolerAssets; TMap<ERRDACoolerType, FRRDADataHolderCoolerData> mCoolerAssets;
UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset") UPROPERTY(BlueprintReadOnly, Category = "RRDA|DataAsset")
TMap<ERRDAHeaterType, FRRDADataHolderHeaterData> mHeaterAssets; TMap<ERRDAHeaterType, FRRDADataHolderHeaterData> mHeaterAssets;
@ -211,10 +231,9 @@ public:
}; };
template <class T> template <class T>
bool URRDADataAssetSubsystem::FindAllDataAssetsOfClass(TSet<T*>& OutDataAssets) bool URRDADataAssetSubsystem::FindAllDataAssetsOfClass(TSet<T*>& OutDataAssets) {
{
OutDataAssets.Empty(); OutDataAssets.Empty();
// Find list of all UStat, and USkill assets in Content Browser. // Find list of all UStat, and USkill assets in Content Browser.
FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>(FName("AssetRegistry")); FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>(FName("AssetRegistry"));
IAssetRegistry& AssetRegistry = AssetRegistryModule.Get(); IAssetRegistry& AssetRegistry = AssetRegistryModule.Get();
@ -225,24 +244,21 @@ bool URRDADataAssetSubsystem::FindAllDataAssetsOfClass(TSet<T*>& OutDataAssets)
// Split assets into separate arrays. // Split assets into separate arrays.
for (const FAssetData& Asset : AssetList) { for (const FAssetData& Asset : AssetList) {
UObject* Obj = Asset.GetAsset(); UObject* Obj = Asset.GetAsset();
T* CastedAsset = Cast<T>(Obj); T* CastedAsset = Cast<T>(Obj);
if(!CastedAsset) if (!CastedAsset) {
{
UE_LOG(LogRRDApi, Warning, TEXT("Invalid asset type: %s"), *Asset.AssetName.ToString()); UE_LOG(LogRRDApi, Warning, TEXT("Invalid asset type: %s"), *Asset.AssetName.ToString());
continue; continue;
} }
if(URRDADataAssetBase* BaseAsset = Cast<URRDADataAssetBase>(Obj)) if (URRDADataAssetBase* BaseAsset = Cast<URRDADataAssetBase>(Obj)) {
{ if (URRDADataAssetBase::IsEnabled(BaseAsset, GetWorld())) {
if(URRDADataAssetBase::IsEnabled(BaseAsset, GetWorld()))
{
UE_LOG(LogRRDApi, Log, TEXT("Found %s"), *BaseAsset->GetPathName()); UE_LOG(LogRRDApi, Log, TEXT("Found %s"), *BaseAsset->GetPathName());
OutDataAssets.Add(CastedAsset); OutDataAssets.Add(CastedAsset);
mEnabledDataAssets.Add(BaseAsset); mEnabledDataAssets.Add(BaseAsset);
continue; continue;
} }
UE_LOG(LogRRDApi, Warning, TEXT("Asset Disabled: %s"), *BaseAsset->GetPathName()); UE_LOG(LogRRDApi, Warning, TEXT("Asset Disabled: %s"), *BaseAsset->GetPathName());
mDisabledDataAssets.Add(BaseAsset); mDisabledDataAssets.Add(BaseAsset);
} }
@ -250,4 +266,4 @@ bool URRDADataAssetSubsystem::FindAllDataAssetsOfClass(TSet<T*>& OutDataAssets)
UE_LOG(LogRRDApi, Warning, TEXT("Found %d of: %s"), OutDataAssets.Num(), *T::StaticClass()->GetPathName()); UE_LOG(LogRRDApi, Warning, TEXT("Found %d of: %s"), OutDataAssets.Num(), *T::StaticClass()->GetPathName());
return OutDataAssets.Num() > 0; return OutDataAssets.Num() > 0;
} }