Files
UnrealEngineUWP/Engine/Source/Editor/UnrealEd/Classes/Commandlets/DerivedDataCacheCommandlet.h
robert millar 8e98d4d3d2 Push soft references onto the queue of packages to be processed rather than dealing with them immediately. This vastly reduces peak memory usage e.g. in levels with soft references to many streamed sublevels.
#rb Matt.Peters

#ROBOMERGE-AUTHOR: robert.millar
#ROBOMERGE-SOURCE: CL 17670090 via CL 17670131 via CL 17670137 via CL 17670141 via CL 17670157 via CL 17670162
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Test -> Main) (v875-17642767)

[CL 17670168 by robert millar in ue5-main branch]
2021-09-29 19:44:58 -04:00

47 lines
1.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
/*=============================================================================
DerivedDataCacheCommandlet.cpp: Commandlet for DDC maintenence
=============================================================================*/
#pragma once
#include "CoreMinimal.h"
#include "UObject/ObjectMacros.h"
#include "Commandlets/Commandlet.h"
#include "DerivedDataCacheCommandlet.generated.h"
UCLASS()
class UDerivedDataCacheCommandlet : public UCommandlet
{
GENERATED_UCLASS_BODY()
UDerivedDataCacheCommandlet(FVTableHelper& Helper); // Declare the FVTableHelper constructor manually so that we can forward-declare-only TUniquePtrs in the header without getting compile error in generated cpp
//~ Begin UCommandlet Interface
virtual int32 Main(const FString& Params) override;
//~ End UCommandlet Interface
// Objects currently being cached along with when was the last time in seconds we verified if they were still compiling
// The last time is used to do some throttling on the IsCachedCookedPlatformDataLoaded which can be quite expensive on some objects
TMap<UObject*, double> CachingObjects;
TSet<FName> ProcessedPackages;
TSet<FName> PackagesToProcess;
double FinishCacheTime = 0.0;
double BeginCacheTime = 0.0;
class FPackageListener;
TUniquePtr<FPackageListener> PackageListener;
class FObjectReferencer;
TUniquePtr<FObjectReferencer> ObjectReferencer;
void MaybeMarkPackageAsAlreadyLoaded(UPackage *Package);
void CacheLoadedPackages(UPackage* CurrentPackage, uint8 PackageFilter, const TArray<ITargetPlatform*>& Platforms, TSet<FName>& OutNewProcessedPackages);
void CacheWorldPackages(UWorld* World, uint8 PackageFilter, const TArray<ITargetPlatform*>& Platforms, TSet<FName>& OutNewProcessedPackages);
bool ProcessCachingObjects(const TArray<ITargetPlatform*>& Platforms);
void FinishCachingObjects(const TArray<ITargetPlatform*>& Platforms);
};