Files
UnrealEngineUWP/Engine/Source/Developer/Virtualization/Private/Virtualization.cpp
paul chipchase 97fbde0880 Expose the package submission checks we run when submitting changelists from within the editor so that other systems can specifically invoke it in addition to running it when ever a source control module callback is invoked.
#rb PJ.Kack
#rnx
#preflight 623ae40e7b69b01ec15da75c
#robomerge FNNC

- We need to expose the code that checks a set of packages for non virtualized payloads and virtualizes them so that the stand alone submission tool can access it.
- Currently I am adding this to the IVirtualizationSystem interface to avoid adding additional interface, but we might want to consider moving this some day as it is not a great fit with the rest of the interface.

[CL 19479757 by paul chipchase in ue5-main branch]
2022-03-23 11:14:47 -04:00

67 lines
2.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Modules/ModuleManager.h"
#include "Features/IModularFeatures.h"
#include "ISourceControlModule.h"
#include "MessageLogModule.h"
#include "Misc/DelayedAutoRegister.h"
#include "PackageSubmissionChecks.h"
#include "Serialization/EditorBulkData.h"
#include "VirtualizationSourceControlUtilities.h"
#define LOCTEXT_NAMESPACE "Virtualization"
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(&VirtualizePackages));
});
FMessageLogModule& MessageLogModule = FModuleManager::LoadModuleChecked<FMessageLogModule>("MessageLog");
MessageLogModule.RegisterLogListing("LogVirtualization", LOCTEXT("AssetVirtualizationLogLabel", "Asset Virtualization"));
}
virtual void ShutdownModule() override
{
if (FModuleManager::Get().IsModuleLoaded("MessageLog"))
{
FMessageLogModule& MessageLogModule = FModuleManager::GetModuleChecked<FMessageLogModule>("MessageLog");
MessageLogModule.UnregisterLogListing("LogVirtualization&");
}
// 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();
IModularFeatures::Get().UnregisterModularFeature(FName("VirtualizationSourceControlUtilities"), &SourceControlutility);
}
private:
Experimental::FVirtualizationSourceControlUtilities SourceControlutility;
FDelegateHandle PackageSubmissionHandle;
};
} // namespace UE::Virtualization
#undef LOCTEXT_NAMESPACE
IMPLEMENT_MODULE(UE::Virtualization::FVirtualizationModule, Virtualization);