Files
UnrealEngine/Engine/Source/Developer/SourceControlViewport/Private/SourceControlViewportModule.cpp
2025-05-18 13:04:45 +08:00

79 lines
2.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "SourceControlViewportModule.h"
#include "SourceControlViewportMenu.h"
#include "SourceControlViewportToolTips.h"
#include "HAL/IConsoleManager.h"
TAutoConsoleVariable<bool> CVarSourceControlEnableViewportStatus(
TEXT("SourceControl.ViewportStatus.Enable"),
false,
TEXT("Enables source control viewport status features."),
ECVF_Default);
void FSourceControlViewportModule::StartupModule()
{
ViewportMenu = MakeShared<FSourceControlViewportMenu>();
ViewportMenu->Init();
ViewportToolTips = MakeShared<FSourceControlViewportToolTips>();
ViewportToolTips->Init();
if (IConsoleVariable* CVar = IConsoleManager::Get().FindConsoleVariable(TEXT("SourceControl.ViewportStatus.Enable")); ensure(CVar))
{
CVar->OnChangedDelegate().AddRaw(this, &FSourceControlViewportModule::HandleCVarChanged);
}
if (IConsoleVariable* CVar = IConsoleManager::Get().FindConsoleVariable(TEXT("TEDS.RevisionControl.AutoPopulateState")); ensure(CVar))
{
CVar->OnChangedDelegate().AddRaw(this, &FSourceControlViewportModule::HandleCVarChanged);
}
UpdateSettings();
}
void FSourceControlViewportModule::ShutdownModule()
{
if (IConsoleVariable* CVar = IConsoleManager::Get().FindConsoleVariable(TEXT("TEDS.RevisionControl.AutoPopulateState")); ensure(CVar))
{
CVar->OnChangedDelegate().RemoveAll(this);
}
if (IConsoleVariable* CVar = IConsoleManager::Get().FindConsoleVariable(TEXT("SourceControl.ViewportStatus.Enable")); ensure(CVar))
{
CVar->OnChangedDelegate().RemoveAll(this);
}
ViewportToolTips.Reset();
ViewportMenu.Reset();
}
void FSourceControlViewportModule::HandleCVarChanged(IConsoleVariable* Variable)
{
UpdateSettings();
}
void FSourceControlViewportModule::UpdateSettings()
{
// Are both CVar's enabled?
bool bEnabled = true;
if (IConsoleVariable* CVar = IConsoleManager::Get().FindConsoleVariable(TEXT("SourceControl.ViewportStatus.Enable")); ensure(CVar))
{
bEnabled &= CVar->GetBool();
}
if (IConsoleVariable* CVar = IConsoleManager::Get().FindConsoleVariable(TEXT("TEDS.RevisionControl.AutoPopulateState")); ensure(CVar))
{
bEnabled &= CVar->GetBool();
}
// Propagate resulting value.
ViewportMenu->SetEnabled(bEnabled);
ViewportToolTips->SetEnabled(bEnabled);
if (IConsoleVariable* CVar = IConsoleManager::Get().FindConsoleVariable(TEXT("RevisionControl.Overlays.Enable")); ensure(CVar))
{
CVar->Set(bEnabled);
}
}
IMPLEMENT_MODULE( FSourceControlViewportModule, SourceControlViewport );