Hello! I trying to make use of UObjectLibrary, but I seem to be missing something.
I’m using it to get all blueprints of a certain class within a folder.
However if I try to access the list of blueprints it is always empty (and crashes due to out of bounds of trying to work with an array of 0).
I guess I’m setting the default class to look for wrong?
This is my .h
class UObjectLibrary* EnemyLibrary;
TArray<FAssetData> SpawnableEnemies;
.cpp
void AEnemySpawner::BeginPlay()
{
Super::BeginPlay();
if (!EnemyLibrary)
{
EnemyLibrary = UObjectLibrary::CreateLibrary(AWSNPC::StaticClass(), false, GIsEditor);
EnemyLibrary->AddToRoot();
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString("LibraryCreated"));
}
EnemyLibrary->LoadBlueprintsFromPath(TEXT("/Game/TwinStick/Gameplay/Enemies"));
//EnemyLibrary->LoadAssetDataFromPath(TEXT("/Game/Gameplay/Enemies"));
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::FromInt(EnemyLibrary->GetObjectCount()));
//always returns 0?
if (!EnemyLibrary->IsLibraryFullyLoaded())
EnemyLibrary->LoadAssetsFromAssetData();
//otherstuff
}
TSubclassOf<AWSNPC> AEnemySpawner::EnemyToSpawn()
{
TSubclassOf<AWSNPC> SpawnClass;
EnemyLibrary->GetAssetDataList(SpawnableEnemies);
SpawnClass = SpawnableEnemies[FMath::RandRange(0, SpawnableEnemies.Num())].GetClass();
return SpawnClass;
}