VRTowerDef/Plugins/MetaXR/Source/OculusXRProjectSetupTool/Private/Rules/OculusXRPluginRules.cpp

81 lines
2.2 KiB
C++

// Copyright (c) Meta Platforms, Inc. and affiliates.
#include "OculusXRPluginRules.h"
#include "CoreMinimal.h"
#include "OculusXRHMDRuntimeSettings.h"
#include "OculusXRPSTUtils.h"
#include "Editor/GameProjectGeneration/Public/GameProjectGenerationModule.h"
#include "Interfaces/IPluginManager.h"
#include "Interfaces/IProjectManager.h"
namespace OculusXRPluginRules
{
namespace
{
bool IsPluginEnabled(const FString& PluginName)
{
const auto Plugin = IPluginManager::Get().FindPlugin(PluginName);
if (!Plugin)
{
return false;
}
return Plugin->IsEnabled();
}
bool DisablePlugin(const FString& PluginName)
{
FText FailMessage;
bool bSuccess = IProjectManager::Get().SetPluginEnabled(
PluginName, false, FailMessage);
const bool bIsProjectDirty = IProjectManager::Get().IsCurrentProjectDirty();
if (bSuccess && bIsProjectDirty)
{
FGameProjectGenerationModule::Get().TryMakeProjectFileWriteable(FPaths::GetProjectFilePath());
bSuccess = IProjectManager::Get().SaveCurrentProjectToDisk(FailMessage);
}
if (!bSuccess)
{
FMessageDialog::Open(EAppMsgType::Ok, FailMessage);
}
return bSuccess && !bIsProjectDirty;
}
} // namespace
bool FUseRecommendedXRAPIRule::IsApplied() const
{
const UOculusXRHMDRuntimeSettings* Settings = GetMutableDefault<UOculusXRHMDRuntimeSettings>();
return Settings->XrApi == EOculusXRXrApi::OVRPluginOpenXR;
}
void FUseRecommendedXRAPIRule::ApplyImpl(bool& OutShouldRestartEditor)
{
OCULUSXR_UPDATE_SETTINGS(UOculusXRHMDRuntimeSettings, XrApi, EOculusXRXrApi::OVRPluginOpenXR);
OutShouldRestartEditor = false;
}
bool FDisableOculusVRRule::IsApplied() const
{
return bApplied || !IsPluginEnabled(PluginName);
}
void FDisableOculusVRRule::ApplyImpl(bool& OutShouldRestartEditor)
{
OutShouldRestartEditor = DisablePlugin(PluginName);
bApplied = OutShouldRestartEditor;
}
bool FDisableSteamVRRule::IsApplied() const
{
return bApplied || !IsPluginEnabled(PluginName);
}
void FDisableSteamVRRule::ApplyImpl(bool& OutShouldRestartEditor)
{
OutShouldRestartEditor = DisablePlugin(PluginName);
bApplied = OutShouldRestartEditor;
}
} // namespace OculusXRPluginRules
#undef LOCTEXT_NAMESPACE