Files
UnrealEngineUWP/Engine/Source/Developer/Virtualization/Private/Virtualization.cpp
aurel cordonnier 34f55d3a4a Merge from Release-Engine-Test @ 17946149 to UE5/Main
This represents UE4/Main @17911760, Release-5.0 @17915875 and Dev-PerfTest @17914035

[CL 17949667 by aurel cordonnier in ue5-main branch]
2021-10-27 15:14:40 -04:00

54 lines
1.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Modules/ModuleManager.h"
#include "Features/IModularFeatures.h"
#include "ISourceControlModule.h"
#include "Misc/DelayedAutoRegister.h"
#include "PackageSubmissionChecks.h"
#include "Serialization/VirtualizedBulkData.h"
#include "VirtualizationSourceControlUtilities.h"
namespace UE::Virtualization
{
class FVirtualizationModule : public IModuleInterface
{
public:
virtual void StartupModule() override
{
IModularFeatures::Get().RegisterModularFeature(FName("VirtualizationSourceControlUtilities"), &SourceControlutility);
// Delay this until after the source control module has loaded
FDelayedAutoRegisterHelper(EDelayedRegisterRunPhase::EarliestPossiblePluginsLoaded, [this]()
{
PackageSubmissionHandle = ISourceControlModule::Get().RegisterPreSubmitFinalize(
FSourceControlPreSubmitFinalizeDelegate::FDelegate::CreateStatic(&OnPrePackageSubmission));
});
}
virtual void ShutdownModule() override
{
IModularFeatures::Get().UnregisterModularFeature(FName("VirtualizationSourceControlUtilities"), &SourceControlutility);
// The SourceControl module might be destroyed before this one, depending on shutdown order so we need to check if
// it is loaded before unregistering.
if (ISourceControlModule* SourceControlModule = FModuleManager::GetModulePtr<ISourceControlModule>(FName("SourceControl")))
{
SourceControlModule->UnregisterPreSubmitFinalize(PackageSubmissionHandle);
}
PackageSubmissionHandle.Reset();
}
private:
Experimental::FVirtualizationSourceControlUtilities SourceControlutility;
FDelegateHandle PackageSubmissionHandle;
};
} // namespace UE::Virtualization
IMPLEMENT_MODULE(UE::Virtualization::FVirtualizationModule, Virtualization);