2021-04-30 08:14:54 -04:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
|
|
|
|
|
|
#include "Modules/ModuleManager.h"
|
|
|
|
|
|
|
|
|
|
#include "Features/IModularFeatures.h"
|
2021-10-25 20:05:28 -04:00
|
|
|
#include "ISourceControlModule.h"
|
|
|
|
|
#include "Misc/DelayedAutoRegister.h"
|
|
|
|
|
#include "PackageSubmissionChecks.h"
|
|
|
|
|
#include "Serialization/VirtualizedBulkData.h"
|
2021-04-30 08:14:54 -04:00
|
|
|
#include "VirtualizationSourceControlUtilities.h"
|
|
|
|
|
|
2021-10-25 20:05:28 -04:00
|
|
|
namespace UE::Virtualization
|
2021-04-30 08:14:54 -04:00
|
|
|
{
|
|
|
|
|
|
|
|
|
|
class FVirtualizationModule : public IModuleInterface
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
virtual void StartupModule() override
|
|
|
|
|
{
|
|
|
|
|
IModularFeatures::Get().RegisterModularFeature(FName("VirtualizationSourceControlUtilities"), &SourceControlutility);
|
2021-10-25 20:05:28 -04:00
|
|
|
|
|
|
|
|
// Delay this until after the source control module has loaded
|
|
|
|
|
FDelayedAutoRegisterHelper(EDelayedRegisterRunPhase::EarliestPossiblePluginsLoaded, [this]()
|
|
|
|
|
{
|
|
|
|
|
PackageSubmissionHandle = ISourceControlModule::Get().RegisterPreSubmitFinalize(
|
|
|
|
|
FSourceControlPreSubmitFinalizeDelegate::FDelegate::CreateStatic(&OnPrePackageSubmission));
|
|
|
|
|
});
|
2021-04-30 08:14:54 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
virtual void ShutdownModule() override
|
|
|
|
|
{
|
|
|
|
|
IModularFeatures::Get().UnregisterModularFeature(FName("VirtualizationSourceControlUtilities"), &SourceControlutility);
|
2021-10-25 20:05:28 -04:00
|
|
|
|
|
|
|
|
// 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();
|
|
|
|
|
|
2021-04-30 08:14:54 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
2021-10-25 20:05:28 -04:00
|
|
|
Experimental::FVirtualizationSourceControlUtilities SourceControlutility;
|
|
|
|
|
|
|
|
|
|
FDelegateHandle PackageSubmissionHandle;
|
2021-04-30 08:14:54 -04:00
|
|
|
};
|
|
|
|
|
|
2021-10-25 20:05:28 -04:00
|
|
|
} // namespace UE::Virtualization
|
2021-04-30 08:14:54 -04:00
|
|
|
|
|
|
|
|
IMPLEMENT_MODULE(UE::Virtualization::FVirtualizationModule, Virtualization);
|