document.write("
#pragma once
#include "CoreMinimal.h"
#include "DandelionGameplayAbility.h"
#include "InputActionValue.h"
#include "InputActionGameplayAbility.generated.h"
class ADandelionPlayerCharacter;
DECLARE_MULTICAST_DELEGATE_OneParam(FOnInputActionGameplayAbilityResponseSignature_Native, FInputActionValue);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnInputActionGameplayAbilityResponseSignature, FInputActionValue, Value);
#pragma region EInputActionGameplayAbilityResponse
UENUM()
enum class EInputActionGameplayAbilityResponse
{
None,
EndAbility,
CancelAbility,
Custom
};
#pragma endregion
UCLASS()
class DANDELION_API UInputActionGameplayAbility : public UDandelionGameplayAbility
{
GENERATED_BODY()
public:
FOnInputActionGameplayAbilityResponseSignature_Native OnTriggeredInputAction;
UPROPERTY(BlueprintReadWrite)
FOnInputActionGameplayAbilityResponseSignature OnTriggeredInputAction_BP;
UInputActionGameplayAbility();
protected:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Ability")
EInputActionGameplayAbilityResponse ResponseOnInputPressed = EInputActionGameplayAbilityResponse::None;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Ability")
EInputActionGameplayAbilityResponse ResponseOnInputReleased = EInputActionGameplayAbilityResponse::None;
virtual void OnGiveAbility(const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilitySpec& Spec) override;
virtual void ActivateAbility(
const FGameplayAbilitySpecHandle Handle,
const FGameplayAbilityActorInfo* ActorInfo,
const FGameplayAbilityActivationInfo ActivationInfo,
const FGameplayEventData* TriggerEventData
) override;
virtual void EndAbility(
const FGameplayAbilitySpecHandle Handle,
const FGameplayAbilityActorInfo* ActorInfo,
const FGameplayAbilityActivationInfo ActivationInfo,
bool bReplicateEndAbility,
bool bWasCancelled
) override;
public:
virtual void InputPressed(
const FGameplayAbilitySpecHandle Handle,
const FGameplayAbilityActorInfo* ActorInfo,
const FGameplayAbilityActivationInfo ActivationInfo
) override;
virtual void InputReleased(
const FGameplayAbilitySpecHandle Handle,
const FGameplayAbilityActorInfo* ActorInfo,
const FGameplayAbilityActivationInfo ActivationInfo
) override;
protected:
UPROPERTY(Transient)
TObjectPtr<ADandelionPlayerCharacter> DandelionPlayerCharacter;
UFUNCTION(BlueprintNativeEvent)
void HandleInputPressed(
const FGameplayAbilitySpecHandle& Handle,
const FGameplayAbilityActorInfo& ActorInfo,
const FGameplayAbilityActivationInfo& ActivationInfo
);
virtual void HandleInputPressed_Implementation(
const FGameplayAbilitySpecHandle& Handle,
const FGameplayAbilityActorInfo& ActorInfo,
const FGameplayAbilityActivationInfo& ActivationInfo
);
UFUNCTION(BlueprintNativeEvent)
void HandleInputReleased(
const FGameplayAbilitySpecHandle& Handle,
const FGameplayAbilityActorInfo& ActorInfo,
const FGameplayAbilityActivationInfo& ActivationInfo
);
virtual void HandleInputReleased_Implementation(
const FGameplayAbilitySpecHandle& Handle,
const FGameplayAbilityActorInfo& ActorInfo,
const FGameplayAbilityActivationInfo& ActivationInfo
);
private:
UPROPERTY(Transient)
TObjectPtr<UEnhancedInputComponent> EnhancedInputComponent;
TArray<uint32> TriggeredEventHandles;
void InvokeTriggeredInputAction(const FInputActionValue& Value);
};
InputActionGameplayAbility.h - Snippet hosted by \"Cacher\"
");