- Status
- Offline
- Joined
- Mar 3, 2026
- Messages
- 20
- Reaction score
- 7
Just dropping the source here, too lazy to test it myself.
Stumbled on this old thread regarding UE5 SDK dumping. OP is trying to get around having to load level-specific BP classes manually by using the AssetRegistry to mass-load assets, but he’s hitting a wall where the objects aren't showing up in the array despite the registry saying it loaded over 170k assets.
For those of you messing with UE5 internals, here is the snippet he was working with:
Seems like a classic issue with how UE5 handles delayed asset loading versus what's actually resident in the ObjectArray. Has anyone found a better way to force the engine to register these classes without dragging the player through every single map instance?
Grab the source here:
Stumbled on this old thread regarding UE5 SDK dumping. OP is trying to get around having to load level-specific BP classes manually by using the AssetRegistry to mass-load assets, but he’s hitting a wall where the objects aren't showing up in the array despite the registry saying it loaded over 170k assets.
For those of you messing with UE5 internals, here is the snippet he was working with:
Code:
static void LoadAllClasses()
{
static UEObject AssetRegistryHelpers = ObjectArray::FindObject("AssetRegistryHelpers AssetRegistry.Default__AssetRegistryHelpers");
static UEFunction GetAssetRegistry = ObjectArray::FindObject<UEFunction>("Function AssetRegistry.AssetRegistryHelpers.GetAssetRegistry", EClassCastFlags::Function);
static UEFunction GetAllAssets = ObjectArray::FindObject<UEFunction>("Function AssetRegistry.AssetRegistry.GetAllAssets", EClassCastFlags::Function);
if (!AssetRegistryHelpers || !GetAssetRegistry || !GetAllAssets)
{
std::cerr << "[-] LoadAllClasses: Required AssetRegistry objects not found!\n";
return;
}
void* AssetRegistryPtr = nullptr;
AssetRegistryHelpers.ProcessEvent(GetAssetRegistry, &AssetRegistryPtr);
if (!AssetRegistryPtr)
{
std::cerr << "[-] LoadAllClasses: GetAssetRegistry returned null!\n";
return;
}
UEObject AssetRegistry(AssetRegistryPtr);
struct
{
TArray<uint8> OutAssetData;
bool bIncludeOnlyOnDiskAssets;
bool ReturnValue;
} Params;
Params.bIncludeOnlyOnDiskAssets = false;
AssetRegistry.ProcessEvent(GetAllAssets, &Params);
std::cerr << std::format("[+] Loaded {} assets!\n", Params.OutAssetData.Num());
}
Seems like a classic issue with how UE5 handles delayed asset loading versus what's actually resident in the ObjectArray. Has anyone found a better way to force the engine to register these classes without dragging the player through every single map instance?
Grab the source here:
View hidden content is available for registered users!