Files
UnrealEngineUWP/Engine/Source/Editor/VirtualizationEditor/Private/PrecachePayloadsCommandlet.cpp
paul chipchase 3891c50bc1 Improve the parsing of '-PackageDir=' and '-PackageFolder=; in virtualization commandlets.
#rb Martin.Ridgers
#rnx

- Allow more than one path to be specified at a time. Additional directories can be chained with either ',' or '+'
- Log each root directory searched or that the project itself is being searched.

[CL 31044961 by paul chipchase in ue5-main branch]
2024-01-31 08:53:45 -05:00

48 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "PrecachePayloadsCommandlet.h"
#include "CommandletUtils.h"
#include "UObject/PackageTrailer.h"
#include "Virtualization/VirtualizationSystem.h"
UPrecachePayloadsCommandlet::UPrecachePayloadsCommandlet(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
}
int32 UPrecachePayloadsCommandlet::Main(const FString& Params)
{
TRACE_CPUPROFILER_EVENT_SCOPE(UPrecachePayloadsCommandlet);
TArray<FString> PackageNames = UE::Virtualization::DiscoverPackages(Params, UE::Virtualization::EFindPackageFlags::ExcludeEngineContent);
UE_LOG(LogVirtualization, Display, TEXT("Found %d packages"), PackageNames.Num());
TArray<FIoHash> PayloadIds = UE::Virtualization::FindVirtualizedPayloads(PackageNames);
if (PayloadIds.IsEmpty())
{
UE_LOG(LogVirtualization, Display, TEXT("No virtualized payloads found"));
return 0;
}
UE_LOG(LogVirtualization, Display, TEXT("Found %d virtualized payloads to precache"), PayloadIds.Num());
UE_LOG(LogVirtualization, Display, TEXT("Precaching payloads..."));
const int32 BatchSize = 64;
UE::Virtualization::PullPayloadsThreaded(PayloadIds, BatchSize, TEXT("Cached"), [](const UE::Virtualization::FPullRequest& Request)
{
if (!Request.IsSuccess())
{
UE_LOG(LogVirtualization, Error, TEXT("%s: Failed to precache payload"), *LexToString(Request.GetIdentifier()));
}
});
UE_LOG(LogVirtualization, Display, TEXT("Precaching complete!"));
UE::Virtualization::IVirtualizationSystem::Get().DumpStats();
return 0;
}