Is there a straightforward way to get the UBlueprint which was used to generate a given UBlueprintGeneratedClass? Basically getting a UBlueprint*
from a UClass*
.
I can probably just loop through asset data until I find the right BP, but that seems silly.
template<typename T>
T* GetCDOfromBP(UBlueprint* Blueprint)
{
if (Blueprint==nullptr)
{
return nullptr;
}
const UClass* BlueprintClass = Blueprint->GeneratedClass;
return Cast<T>(BlueprintClass->ClassDefaultObject);
}
UBlueprint* GetBPfromCDO(UObject* OBJ)
{
UBlueprint* BP = nullptr;
if (OBJ != nullptr)
{
BP = Cast<UBlueprint>(OBJ);
if (BP == nullptr)
{
BP = Cast<UBlueprint>(OBJ->GetClass()->ClassGeneratedBy);
}
}
return BP;
}
2 Likes
ClassGeneratedBy
is what I was looking for. Thanks!