Files
UnrealEngine/Engine/Plugins/Mutable/Source/MutableValidation/Private/MuV/MutableValidationModule.cpp
2025-05-18 13:04:45 +08:00

77 lines
2.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "ISettingsModule.h"
#include "ISettingsSection.h"
#include "Modules/ModuleManager.h"
#include "MuV/MutableValidationSettings.h"
#define LOCTEXT_NAMESPACE "MutableValidationSettings"
/**
* StaticMesh editor module
*/
class FMutableValidationModule : public FDefaultModuleImpl
{
public:
// IModuleInterface interface
virtual void StartupModule() override;
virtual void ShutdownModule() override;
bool HandleSettingsSaved() const;
private:
ISettingsSectionPtr SettingsSectionPtr = nullptr;
};
IMPLEMENT_MODULE(FMutableValidationModule, MutableValidation);
bool FMutableValidationModule::HandleSettingsSaved() const
{
UMutableValidationSettings* CustomizableObjectSettings = GetMutableDefault<UMutableValidationSettings>();
if (CustomizableObjectSettings != nullptr)
{
CustomizableObjectSettings->SaveConfig();
}
return true;
}
void FMutableValidationModule::StartupModule()
{
ISettingsModule* SettingsModule = FModuleManager::GetModulePtr<ISettingsModule>("Settings");
if (SettingsModule != nullptr)
{
SettingsSectionPtr = SettingsModule->RegisterSettings("Project", "Plugins", "MutableValidationSettings",
LOCTEXT("MutableValidationSettings_Setting", "Mutable Validation"),
LOCTEXT("MutableValidatioinSettings_Setting_Desc", "Mutable resources validation settings"),
GetMutableDefault<UMutableValidationSettings>()
);
if (SettingsSectionPtr.IsValid())
{
SettingsSectionPtr->OnModified().BindRaw(this, &FMutableValidationModule::HandleSettingsSaved);
}
}
}
void FMutableValidationModule::ShutdownModule()
{
// Unbind OnModified delegate
if (SettingsSectionPtr)
{
SettingsSectionPtr->OnModified().Unbind();
}
ISettingsModule* SettingsModule = FModuleManager::GetModulePtr<ISettingsModule>("Settings");
if (SettingsModule != nullptr)
{
SettingsModule->UnregisterSettings("Project", "Plugins", "MutableValidationSettings");
}
}
#undef LOCTEXT_NAMESPACE