RealtimeStyleTransferRuntime/Source/LyraGame/Input/LyraInputComponent.cpp

95 lines
3.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "LyraInputComponent.h"
#include "Player/LyraLocalPlayer.h"
#include "EnhancedInputSubsystems.h"
#include "Settings/LyraSettingsLocal.h"
#include "PlayerMappableInputConfig.h"
ULyraInputComponent::ULyraInputComponent(const FObjectInitializer& ObjectInitializer)
{
}
void ULyraInputComponent::AddInputMappings(const ULyraInputConfig* InputConfig, UEnhancedInputLocalPlayerSubsystem* InputSubsystem) const
{
check(InputConfig);
check(InputSubsystem);
ULyraLocalPlayer* LocalPlayer = InputSubsystem->GetLocalPlayer<ULyraLocalPlayer>();
check(LocalPlayer);
// Add any registered input mappings from the settings!
if (ULyraSettingsLocal* LocalSettings = ULyraSettingsLocal::Get())
{
// Add all registered configs, which will add every input mapping context that is in it
const TArray<FLoadedMappableConfigPair>& Configs = LocalSettings->GetAllRegisteredInputConfigs();
for (const FLoadedMappableConfigPair& Pair : Configs)
{
if (Pair.bIsActive)
{
InputSubsystem->AddPlayerMappableConfig(Pair.Config);
}
}
// Tell enhanced input about any custom keymappings that we have set
for (const TPair<FName, FKey>& Pair : LocalSettings->GetCustomPlayerInputConfig())
{
if (Pair.Key != NAME_None && Pair.Value.IsValid())
{
InputSubsystem->AddPlayerMappedKey(Pair.Key, Pair.Value);
}
}
}
}
void ULyraInputComponent::RemoveInputMappings(const ULyraInputConfig* InputConfig, UEnhancedInputLocalPlayerSubsystem* InputSubsystem) const
{
check(InputConfig);
check(InputSubsystem);
ULyraLocalPlayer* LocalPlayer = InputSubsystem->GetLocalPlayer<ULyraLocalPlayer>();
check(LocalPlayer);
if (ULyraSettingsLocal* LocalSettings = ULyraSettingsLocal::Get())
{
// Remove any registered input contexts
const TArray<FLoadedMappableConfigPair>& Configs = LocalSettings->GetAllRegisteredInputConfigs();
for (const FLoadedMappableConfigPair& Pair : Configs)
{
InputSubsystem->RemovePlayerMappableConfig(Pair.Config);
}
// Clear any player mapped keys from enhanced input
for (const TPair<FName, FKey>& Pair : LocalSettings->GetCustomPlayerInputConfig())
{
InputSubsystem->RemovePlayerMappedKey(Pair.Key);
}
}
}
void ULyraInputComponent::RemoveBinds(TArray<uint32>& BindHandles)
{
for (uint32 Handle : BindHandles)
{
RemoveBindingByHandle(Handle);
}
BindHandles.Reset();
}
void ULyraInputComponent::AddInputConfig(const FLoadedMappableConfigPair& ConfigPair, UEnhancedInputLocalPlayerSubsystem* InputSubsystem)
{
check(InputSubsystem);
if (ensure(ConfigPair.bIsActive))
{
InputSubsystem->AddPlayerMappableConfig(ConfigPair.Config);
}
}
void ULyraInputComponent::RemoveInputConfig(const FLoadedMappableConfigPair& ConfigPair, UEnhancedInputLocalPlayerSubsystem* InputSubsystem)
{
check(InputSubsystem);
if (!ConfigPair.bIsActive)
{
InputSubsystem->AddPlayerMappableConfig(ConfigPair.Config);
}
}