RealtimeStyleTransferRuntime/Source/LyraGame/UI/Foundation/LyraActionWidget.cpp

35 lines
1.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "LyraActionWidget.h"
#include "EnhancedInputSubsystems.h"
FSlateBrush ULyraActionWidget::GetIcon() const
{
// If there is an Enhanced Input action associated with this widget, then search for any
// keys bound to that action and display those instead of the default data table settings.
// This covers the case of when a player has rebound a key to something else
if (AssociatedInputAction)
{
UCommonInputSubsystem* CommonInputSubsystem = GetInputSubsystem();
UEnhancedInputLocalPlayerSubsystem* EnhancedInputSubsystem = GetEnhancedInputSubsystem();
TArray<FKey> BoundKeys = EnhancedInputSubsystem->QueryKeysMappedToAction(AssociatedInputAction);
FSlateBrush SlateBrush;
if (!BoundKeys.IsEmpty() && UCommonInputPlatformSettings::Get()->TryGetInputBrush(SlateBrush, BoundKeys[0], CommonInputSubsystem->GetCurrentInputType(), CommonInputSubsystem->GetCurrentGamepadName()))
{
return SlateBrush;
}
}
return Super::GetIcon();
}
UEnhancedInputLocalPlayerSubsystem* ULyraActionWidget::GetEnhancedInputSubsystem() const
{
const UWidget* BoundWidget = DisplayedBindingHandle.GetBoundWidget();
const ULocalPlayer* BindingOwner = BoundWidget ? BoundWidget->GetOwningLocalPlayer() : GetOwningLocalPlayer();
return BindingOwner->GetSubsystem<UEnhancedInputLocalPlayerSubsystem>();
}