RealtimeStyleTransferRuntime/Plugins/GameSettings/Source/Private/GameSettingAction.cpp

52 lines
1.3 KiB
C++
Raw Normal View History

2022-05-23 18:41:30 +00:00
// Copyright Epic Games, Inc. All Rights Reserved.
#include "GameSettingAction.h"
#define LOCTEXT_NAMESPACE "GameSetting"
//--------------------------------------
// UGameSettingAction
//--------------------------------------
UGameSettingAction::UGameSettingAction()
{
}
void UGameSettingAction::OnInitialized()
{
Super::OnInitialized();
#if !UE_BUILD_SHIPPING
ensureMsgf(HasCustomAction() || NamedAction.IsValid(), TEXT("Action settings need either a custom action or a named action."));
ensureMsgf(!ActionText.IsEmpty(), TEXT("You must provide a ActionText for settings with actions."));
ensureMsgf(!DescriptionRichText.IsEmpty(), TEXT("You must provide a description for settings with actions."));
#endif
}
void UGameSettingAction::SetCustomAction(TFunction<void(ULocalPlayer*)> InAction)
{
CustomAction = UGameSettingCustomAction::CreateLambda([InAction](UGameSetting* /*Setting*/, ULocalPlayer* InLocalPlayer) {
InAction(InLocalPlayer);
});
}
void UGameSettingAction::ExecuteAction()
{
if (HasCustomAction())
{
CustomAction.ExecuteIfBound(this, LocalPlayer);
}
else
{
OnExecuteNamedActionEvent.Broadcast(this, NamedAction);
}
if (bDirtyAction)
{
NotifySettingChanged(EGameSettingChangeReason::Change);
}
}
#undef LOCTEXT_NAMESPACE