Files
integration/Source/Integration/LuprexUserWidget.h
2026-04-17 03:17:15 -04:00

49 lines
1.9 KiB
C++

#pragma once
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "EnhancedInputComponent.h"
#include "LuprexUserWidget.generated.h"
UCLASS(BlueprintType, Blueprintable)
class INTEGRATION_API UlxUserWidget : public UUserWidget
{
GENERATED_BODY()
public:
using EventBinding = TUniquePtr<FEnhancedInputActionEventBinding>;
UlxUserWidget(const FObjectInitializer& ObjectInitializer);
virtual void NativeOnInitialized() override;
// Clone every enhanced-input action binding currently on InputComponent
// into SavedEnhancedActionEventBindings, so bindings can later be removed
// from the component and reinstated without losing their delegates.
void BackupInputComponent();
// Removes all handlers for 'InputAction'. That includes temporarily
// deactivating event graph nodes that handle 'InputAction'.
UFUNCTION(BlueprintCallable, Category="Luprex|Widget Enhanced Input")
void DisableInputAction(const UInputAction* InputAction);
// Reactivates any graph nodes that handle 'InputAction', and
// removes any other handlers for 'InputAction'.
UFUNCTION(BlueprintCallable, Category="Luprex|Widget Enhanced Input")
void RestoreInputAction(const UInputAction* InputAction);
// Any event graph nodes that handle 'to' are made to also
// handle 'From' events. Any other handlers of 'From' are removed.
UFUNCTION(BlueprintCallable, Category="Luprex|Widget Enhanced Input")
void RedirectInputAction(const UInputAction* From, const UInputAction* To);
// Cloned bindings captured from InputComponent after construction.
TArray<EventBinding> SavedEnhancedActionEventBindings;
private:
// Strip the synthetic const off UEnhancedInputComponent::GetActionEventBindings
// to get direct mutable access to the protected array. Well-defined because
// the underlying object is not const; only the getter's return type is.
static TArray<EventBinding>& GetMutableActionEventBindings(UEnhancedInputComponent* EIC);
};