feat: wip
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
#include "Subsystems/RRDADataAssetSubsystem.h"
|
||||
|
||||
#include "RefinedRDApi.h"
|
||||
#include "DataAssets/RRDADirtDataAsset.h"
|
||||
#include "Engine/AssetManager.h"
|
||||
|
||||
URRDADataAssetSubsystem::URRDADataAssetSubsystem() {}
|
||||
|
||||
URRDADataAssetSubsystem* URRDADataAssetSubsystem::Get(UObject* Context)
|
||||
{
|
||||
if (IsValid(Context))
|
||||
{
|
||||
return Context->GetWorld()->GetSubsystem<URRDADataAssetSubsystem>();
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
URRDADataAssetSubsystem* URRDADataAssetSubsystem::GetChecked(UObject* Context)
|
||||
{
|
||||
URRDADataAssetSubsystem* Subsystem = Get(Context);
|
||||
fgcheck(Subsystem);
|
||||
return Subsystem;
|
||||
}
|
||||
|
||||
void URRDADataAssetSubsystem::Initialize(FSubsystemCollectionBase& Collection)
|
||||
{
|
||||
Super::Initialize(Collection);
|
||||
|
||||
StartScanForDataAssets();
|
||||
}
|
||||
|
||||
void URRDADataAssetSubsystem::Deinitialize()
|
||||
{
|
||||
Super::Deinitialize();
|
||||
}
|
||||
|
||||
void URRDADataAssetSubsystem::StartScanForDataAssets()
|
||||
{
|
||||
UAssetManager& Manager = UAssetManager::Get();
|
||||
Manager.LoadPrimaryAssetsWithType(FPrimaryAssetType("RRDADataAsset"));
|
||||
|
||||
mDisabledDataAssets.Empty();
|
||||
mAllDataAssets.Empty();
|
||||
|
||||
ReCacheBoilerDataAssets();
|
||||
ReCacheCoolerDataAssets();
|
||||
ReCacheDirtDataAssets();
|
||||
ReCacheHeaterDataAssets();
|
||||
ReCacheTurbineDataAssets();
|
||||
}
|
||||
|
||||
void URRDADataAssetSubsystem::ReCacheDirtDataAssets()
|
||||
{
|
||||
mDirtAssets.Empty();
|
||||
TSet<URRDADirtDataAsset*> DirtDataAssets;
|
||||
if(FindAllDataAssetsOfClass(DirtDataAssets))
|
||||
{
|
||||
for (URRDADirtDataAsset* DirtDataAsset : DirtDataAssets)
|
||||
{
|
||||
mDirtAssets.Add(DirtDataAsset->mItem, DirtDataAsset);
|
||||
}
|
||||
}
|
||||
UE_LOG(LogRRDApi, Log, TEXT("ReCacheDirtDataAssets: %d"), mDirtAssets.Num());
|
||||
}
|
||||
|
||||
void URRDADataAssetSubsystem::ReCacheTurbineDataAssets()
|
||||
{
|
||||
UE_LOG(LogRRDApi, Log, TEXT("ReCacheTurbineDataAssets"));
|
||||
}
|
||||
|
||||
void URRDADataAssetSubsystem::ReCacheBoilerDataAssets() {
|
||||
UE_LOG(LogRRDApi, Log, TEXT("ReCacheBoilerDataAssets"));
|
||||
}
|
||||
|
||||
void URRDADataAssetSubsystem::ReCacheCoolerDataAssets() {
|
||||
UE_LOG(LogRRDApi, Log, TEXT("ReCacheCoolerDataAssets"));
|
||||
}
|
||||
|
||||
void URRDADataAssetSubsystem::ReCacheHeaterDataAssets() {
|
||||
UE_LOG(LogRRDApi, Log, TEXT("ReCacheHeaterDataAssets"));
|
||||
}
|
||||
|
||||
int32 URRDADataAssetSubsystem::GetAllDirtItems(TArray<TSubclassOf<UFGItemDescriptor>>& Items) const
|
||||
{
|
||||
return mDirtAssets.GetKeys(Items);
|
||||
}
|
||||
|
||||
URRDADirtDataAsset* URRDADataAssetSubsystem::GetDataForDirtItem(TSubclassOf<UFGItemDescriptor> Item) const
|
||||
{
|
||||
if(!Item) return nullptr;
|
||||
return *mDirtAssets.Find(Item);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user