25 virtual void ActivateAbility(
const FGameplayAbilitySpecHandle Handle,
const FGameplayAbilityActorInfo* ActorInfo,
const FGameplayAbilityActivationInfo ActivationInfo,
const FGameplayEventData* TriggerEventData)
override;
26 virtual void EndAbility(
const FGameplayAbilitySpecHandle Handle,
const FGameplayAbilityActorInfo* ActorInfo,
const FGameplayAbilityActivationInfo ActivationInfo,
bool bReplicateEndAbility,
bool bWasCancelled)
override;
29 bool InitializeKnockdown(ACharacter* Character,
const FGameplayEventData* TriggerEventData);
30 bool HasKnockDownMontage();
31 bool HasMontageSections()
const;
32 bool SetupKnockdownMotionWarp(ACharacter* Character,
const AActor* Instigator)
const;
33 void ClearKnockdownTasks();
36 void OnLoopStarted(FGameplayEventData Payload);
39 void OnDownDurationFinished();
43 TObjectPtr<UAnimMontage> KnockdownMontage;
46 TObjectPtr<UAbilityTask_PlayMontageAndWait> MontageTask;
49 TObjectPtr<UAbilityTask_WaitGameplayEvent> LoopEventTask;
52 TObjectPtr<UAbilityTask_WaitDelay> DownDurationTask;
55 TObjectPtr<UCharacterMovementComponentBase> RotationComponent;
57 float AddDownDuration = 0.0f;
58 float KnockDownDistance = 0.0f;
59 bool bManualRotationActive = false;