26 virtual void OnGiveAbility(
const FGameplayAbilityActorInfo* ActorInfo,
const FGameplayAbilitySpec& Spec)
override;
27 virtual void EndAbility(
const FGameplayAbilitySpecHandle Handle,
const FGameplayAbilityActorInfo* ActorInfo,
const FGameplayAbilityActivationInfo ActivationInfo,
bool bReplicateEndAbility,
bool bWasCancelled)
override;
30 virtual void ApplyCombatData();
32 void SetupHitCheckListener();
35 void OnHitCheckStart(FGameplayEventData Payload);
38 void OnHitCheckEnd(FGameplayEventData Payload);
41 void OnTraceResultCallback(
const FGameplayAbilityTargetDataHandle& TargetDataHandle,
float CombatDataLevel, int32 CombatHitDataIndex);
45 void OnFinisherResultCallback(
const FGameplayAbilityTargetDataHandle& TargetDataHandle,
float CombatDataLevel, int32 CombatHitDataIndex);
47 virtual TOptional<FTransform> GetTraceTransformForHitCheck()
const;
49 void ApplyEffectsToSelf(
const FGameplayAbilitySpecHandle Handle,
const FGameplayAbilityActorInfo* ActorInfo,
const FGameplayAbilityActivationInfo ActivationInfo);
53 TArray<FGameplayEffectSpecHandle> BuildCombatEffectSpecs(
const FCombatHitData& HitData,
float DamageMultiplier);
55 FGameplayEffectSpecHandle BuildEffectSpec(
const FCombatEffectData& EffectData,
float CombatDataLevel);
58 void PlayCombatHitAudio(
const FVector& HitLocation);
59 void CacheAudioTagComponents();
64 void NotifyCameraHitConfirmed()
const;
67 float GetAttackSpeedRate()
const;
70 void UpdateAttackWarpTargetForRange(FName
WarpTargetName = FName(
"Target"));
74 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category =
"Data")
78 float AttackRange = 450.0f;
81 float AttackRangeCorrectionDistance = 250.0f;
84 float AttackRangeCorrectionInnerOffset = 30.0f;
90 TArray<TSubclassOf<UGameplayEffect>> SelfEffectClasses;
93 FGameplayTag WeaponHitCueTag;
96 TArray<TObjectPtr<UAudioEmitterComponent>> CachedAudioTagComponents;
99 bool bMovementRotationOverridden = false;
100 bool bCachedOrientRotationToMovement = true;
101 bool bCachedUseControllerDesiredRotation = false;