Files
sebastian lewicki 695acb1980 Upgrading the CQTest plugin to an Engine module
Introducing the CQTestEnhancedInput plugin as this requires use of the EnhancedInput Engine Plugin (Engine modules cannot make use of the Engine Plugin)
#jira UE-217806
#rb Devin.Doucette, Jerome.Delattre, rob.huyett, sean.sweeney

[CL 36039088 by sebastian lewicki in ue5-main branch]
2024-09-05 10:24:20 -04:00

49 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Components/CQTestBlueprintHelper.h"
#include "Misc/Paths.h"
#include "Engine/Blueprint.h"
#include "AssetRegistry/AssetData.h"
#include "AssetRegistry/AssetRegistryModule.h"
PRAGMA_DISABLE_DEPRECATION_WARNINGS
UClass* FCQTestBlueprintHelper::GetBlueprintClass(const FString& Directory, const FString& Name)
{
const FString FileName = FString::Printf(TEXT("%s.%s"), *Name, *Name);
const FString Path = FPaths::Combine(*Directory, FileName);
UObject* BpObject = Cast<UObject>(StaticLoadObject(UObject::StaticClass(), nullptr, *Path));
check(BpObject);
UBlueprint* AsBlueprint = Cast<UBlueprint>(BpObject);
check(AsBlueprint);
return AsBlueprint->GeneratedClass;
}
UObject* FCQTestBlueprintHelper::FindDataBlueprint(const FString& Directory, const FString& Name)
{
static TMap<FString, FAssetData> BlueprintCache{};
static TSet<FString> LoadedDirectories{};
if (!LoadedDirectories.Contains(Directory))
{
TArray<FAssetData> AssetData;
const FAssetRegistryModule& AssetRegistry = FModuleManager::LoadModuleChecked<FAssetRegistryModule>("AssetRegistry");
AssetRegistry.Get().GetAssetsByPath(FName(Directory), AssetData, true);
for (const auto& Data : AssetData)
{
BlueprintCache.Add(Data.GetAsset()->GetFName().ToString(), Data);
}
LoadedDirectories.Add(Directory);
}
if (FAssetData* Data = BlueprintCache.Find(Name))
{
return Data->GetAsset();
}
return nullptr;
}
PRAGMA_ENABLE_DEPRECATION_WARNINGS