48 lines
1.4 KiB
C++
48 lines
1.4 KiB
C++
// Copyright Echo Devgroup
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "AuraInputConfig.h"
|
|
#include "EnhancedInputComponent.h"
|
|
#include "AuraInputComponent.generated.h"
|
|
|
|
/**
|
|
*
|
|
*/
|
|
UCLASS()
|
|
class AURA_API UAuraInputComponent : public UEnhancedInputComponent
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
template<class UserClass, typename PressedFuncType, typename ReleasedFuncType, typename HeldFuncType>
|
|
void BindAbilityActions(const UAuraInputConfig* InputConfig, UserClass* Object, PressedFuncType PressedFunc, ReleasedFuncType ReleasedFunc, HeldFuncType HeldFunc);
|
|
};
|
|
|
|
template <class UserClass, typename PressedFuncType, typename ReleasedFuncType, typename HeldFuncType>
|
|
void UAuraInputComponent::BindAbilityActions(const UAuraInputConfig* InputConfig, UserClass* Object,
|
|
PressedFuncType PressedFunc, ReleasedFuncType ReleasedFunc, HeldFuncType HeldFunc)
|
|
{
|
|
check(InputConfig);
|
|
|
|
for (const FAuraInputAction& Action : InputConfig->AbilityInputActions)
|
|
{
|
|
if (Action.InputAction && Action.InputTag.IsValid())
|
|
{
|
|
if (PressedFunc)
|
|
{
|
|
BindAction(Action.InputAction, ETriggerEvent::Started, Object, PressedFunc, Action.InputTag);
|
|
}
|
|
if (ReleasedFunc)
|
|
{
|
|
BindAction(Action.InputAction, ETriggerEvent::Completed, Object, ReleasedFunc, Action.InputTag);
|
|
}
|
|
if (HeldFunc)
|
|
{
|
|
BindAction(Action.InputAction, ETriggerEvent::Triggered, Object, HeldFunc, Action.InputTag);
|
|
}
|
|
}
|
|
}
|
|
}
|