// 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(); 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& 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& 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(); check(LocalPlayer); if (ULyraSettingsLocal* LocalSettings = ULyraSettingsLocal::Get()) { // Remove any registered input contexts const TArray& Configs = LocalSettings->GetAllRegisteredInputConfigs(); for (const FLoadedMappableConfigPair& Pair : Configs) { InputSubsystem->RemovePlayerMappableConfig(Pair.Config); } // Clear any player mapped keys from enhanced input for (const TPair& Pair : LocalSettings->GetCustomPlayerInputConfig()) { InputSubsystem->RemovePlayerMappedKey(Pair.Key); } } } void ULyraInputComponent::RemoveBinds(TArray& 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); } }