document.write("
class ADandelionPlayerCharacter; DECLARE_MULTICAST_DELEGATE_OneParam(FOnInputActionGameplayAbilityResponseSignature_Native, FInputActionValue); DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnInputActionGameplayAbilityResponseSignature, FInputActionValue, Value); UENUM() enum class EInputActionGameplayAbilityResponse { None, EndAbility, CancelAbility, Custom }; 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); };