Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
UGA_EnemyAttack 클래스 참조

#include <GA_EnemyAttack.h>

UGA_EnemyAttack에 대한 상속 다이어그램 :
Inheritance graph
UGA_EnemyAttack에 대한 협력 다이어그램:
Collaboration graph

Public 멤버 함수

 UGA_EnemyAttack ()
 
virtual void ActivateAbility (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEventData *TriggerEventData) override final
 
virtual const FGameplayTagContainer * GetCooldownTags () const override
 
virtual void ApplyCooldown (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override
 
virtual void EndAbility (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, bool bReplicateEndAbility, bool bWasCancelled) override
 
- UGA_CombatBase(으)로부터 상속된 Public 멤버 함수
virtual void OnGiveAbility (const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilitySpec &Spec) override
 
- UGA_Base(으)로부터 상속된 Public 멤버 함수
 UGA_Base ()
 

Protected 멤버 함수

virtual void ApplyCombatData () override
 
virtual bool PrepareAttack ()
 
virtual bool ShouldSetupHitCheck () const
 
bool BeginAttackRotationLock ()
 
void EndAttackRotationLock ()
 
void SendStateTreeTag (const FGameplayTag &EventTag) const
 
- UGA_CombatBase(으)로부터 상속된 Protected 멤버 함수
void SetupHitCheckListener ()
 
void OnHitCheckStart (FGameplayEventData Payload)
 
void OnHitCheckEnd (FGameplayEventData Payload)
 
void OnTraceResultCallback (const FGameplayAbilityTargetDataHandle &TargetDataHandle, float CombatDataLevel, int32 CombatHitDataIndex)
 
void OnFinisherResultCallback (const FGameplayAbilityTargetDataHandle &TargetDataHandle, float CombatDataLevel, int32 CombatHitDataIndex)
 
virtual TOptional< FTransform > GetTraceTransformForHitCheck () const
 
void ApplyEffectsToSelf (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo)
 
FCombatHitPayload BuildCombatHitPayload (const FCombatHitData &HitData, float DamageMultiplier, bool bRequestKnockback)
 
TArray< FGameplayEffectSpecHandle > BuildCombatEffectSpecs (const FCombatHitData &HitData, float DamageMultiplier)
 
FGameplayEffectSpecHandle BuildEffectSpec (const FCombatEffectData &EffectData, float CombatDataLevel)
 
void PlayCombatHitAudio (const FVector &HitLocation)
 
void CacheAudioTagComponents ()
 
const FKnockbackDataFindKnockbackData (const FCombatHitData &HitData) const
 
void NotifyCameraHitConfirmed () const
 
float GetAttackSpeedRate () const
 
void UpdateAttackWarpTargetForRange (FName WarpTargetName=FName("Target"))
 
void UpdateAttackWarpTargetForRange (FName WarpTargetName, ITargetableInterface *Target)
 
- UGA_Base(으)로부터 상속된 Protected 멤버 함수
UCharacterMotionWarpingComponentBase * GetMotionWarpingComponent () const
 
void SetupCancelableListener ()
 
void OnCancelableInputDetected (FGameplayEventData Payload)
 
virtual void HandleCancelable (FGameplayEventData Payload)
 
virtual void OnAbilityMontageCompleted ()
 
virtual void OnAbilityMontageInterrupted ()
 
virtual void OnAbilityMontageCancellable ()
 

Protected 속성

TObjectPtr< UAnimMontage > AttackMontage
 
FGameplayTag CooldownTag
 
float CooldownDuration = 0.0f
 
FGameplayTagContainer TempCooldownTags
 
TObjectPtr< UCharacterMovementComponentBase > AttackRotationComponent
 
bool bAttackStarted = false
 
bool bAttackRotationLocked = false
 
- UGA_CombatBase(으)로부터 상속된 Protected 속성
TObjectPtr< UCombatDataBaseCombatData
 
float AttackRange = 450.0f
 
float AttackRangeCorrectionDistance = 250.0f
 
float AttackRangeCorrectionInnerOffset = 30.0f
 
TObjectPtr< UAT_TraceActiveTraceTask
 
TArray< TSubclassOf< UGameplayEffect > > SelfEffectClasses
 
FGameplayTag WeaponHitCueTag
 
TArray< TObjectPtr< UAudioEmitterComponent > > CachedAudioTagComponents
 

생성자 & 소멸자 문서화

◆ UGA_EnemyAttack()

UGA_EnemyAttack::UGA_EnemyAttack ( )
16{
17}

멤버 함수 문서화

◆ ActivateAbility()

void UGA_EnemyAttack::ActivateAbility ( const FGameplayAbilitySpecHandle  Handle,
const FGameplayAbilityActorInfo *  ActorInfo,
const FGameplayAbilityActivationInfo  ActivationInfo,
const FGameplayEventData *  TriggerEventData 
)
finaloverridevirtual
22{
23 Super::ActivateAbility(Handle, ActorInfo, ActivationInfo, TriggerEventData);
24 bAttackStarted = false;
25
26 if (IsValid(AttackMontage) == false)
27 {
28 EndAbility(Handle, ActorInfo, ActivationInfo, true, true);
29 return;
30 }
31
32 UAbilityTask_PlayMontageAndWait* MontageTask = UAbilityTask_PlayMontageAndWait::CreatePlayMontageAndWaitProxy(this, TEXT("EnemyAttack"), AttackMontage, GetAttackSpeedRate());
33 if (IsValid(MontageTask) == false)
34 {
35 EndAbility(Handle, ActorInfo, ActivationInfo, true, true);
36 return;
37 }
38
39 if (PrepareAttack() == false)
40 {
41 EndAbility(Handle, ActorInfo, ActivationInfo, true, true);
42 return;
43 }
44
46 {
48 }
49
50 MontageTask->OnBlendOut.AddDynamic(this, &ThisClass::OnAbilityMontageCompleted);
51 MontageTask->OnInterrupted.AddDynamic(this, &ThisClass::OnAbilityMontageInterrupted);
52 MontageTask->OnCancelled.AddDynamic(this, &ThisClass::OnAbilityMontageInterrupted);
53
54 bAttackStarted = true;
55 MontageTask->ReadyForActivation();
56}
void SetupHitCheckListener()
Definition GA_CombatBase.cpp:62
float GetAttackSpeedRate() const
Definition GA_CombatBase.cpp:483
virtual bool PrepareAttack()
Definition GA_EnemyAttack.cpp:134
virtual void EndAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, bool bReplicateEndAbility, bool bWasCancelled) override
Definition GA_EnemyAttack.cpp:88
TObjectPtr< UAnimMontage > AttackMontage
Definition GA_EnemyAttack.h:40
bool bAttackStarted
Definition GA_EnemyAttack.h:54
virtual bool ShouldSetupHitCheck() const
Definition GA_EnemyAttack.cpp:139
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ ApplyCombatData()

void UGA_EnemyAttack::ApplyCombatData ( )
overrideprotectedvirtual

UGA_CombatBase(으)로부터 재구현되었습니다.

UGA_BossSectionPattern, UGA_EnemyDashAttack, UGA_EnemyRangedAttack에서 재구현되었습니다.

105{
106 Super::ApplyCombatData();
107
108 if (IsValid(CombatData) == false)
109 {
110 return;
111 }
112
113 CooldownTag = FGameplayTag::EmptyTag;
114 CooldownDuration = 0.0f;
115 TempCooldownTags.Reset();
116
117 if (const FSingleMontageData* Payload = CombatData->FindExtendedData<FSingleMontageData>())
118 {
119 AttackMontage = Payload->PlayMontage;
120 }
121
122 if (const FSkillDatas* Payload = CombatData->FindExtendedData<FSkillDatas>())
123 {
124 CooldownTag = Payload->CooldownTag;
125 CooldownDuration = Payload->CooldownDuration;
126 }
127
128 if (CooldownTag.IsValid())
129 {
131 }
132}
TObjectPtr< UCombatDataBase > CombatData
Definition GA_CombatBase.h:75
FGameplayTagContainer TempCooldownTags
Definition GA_EnemyAttack.h:49
float CooldownDuration
Definition GA_EnemyAttack.h:46
FGameplayTag CooldownTag
Definition GA_EnemyAttack.h:43
Definition ExtendedDatas.h:44
Definition ExtendedDatas.h:74

◆ ApplyCooldown()

void UGA_EnemyAttack::ApplyCooldown ( const FGameplayAbilitySpecHandle  Handle,
const FGameplayAbilityActorInfo *  ActorInfo,
const FGameplayAbilityActivationInfo  ActivationInfo 
) const
overridevirtual
66{
67 if (CooldownTag.IsValid() == false || CooldownDuration <= KINDA_SMALL_NUMBER)
68 {
69 return;
70 }
71
72 UGameplayEffect* CooldownGE = GetCooldownGameplayEffect();
73 if (CooldownGE == nullptr)
74 {
75 return;
76 }
77
78 FGameplayEffectSpecHandle SpecHandle = MakeOutgoingGameplayEffectSpec(CooldownGE->GetClass(), GetAbilityLevel());
79 if (SpecHandle.IsValid())
80 {
81 SpecHandle.Data->SetSetByCallerMagnitude(TAG_DATA_COOLDOWN, CooldownDuration);
82 SpecHandle.Data->DynamicGrantedTags.AddTag(CooldownTag);
83
84 (void)ApplyGameplayEffectSpecToOwner(Handle, ActorInfo, ActivationInfo, SpecHandle);
85 }
86}

◆ BeginAttackRotationLock()

bool UGA_EnemyAttack::BeginAttackRotationLock ( )
protected
145{
147 {
148 return true;
149 }
150
151 ACharacter* AvatarCharacter = Cast<ACharacter>(GetAvatarActorFromActorInfo());
152 if (IsValid(AvatarCharacter) == false)
153 {
154 return false;
155 }
156
157 AttackRotationComponent = Cast<UCharacterMovementComponentBase>(AvatarCharacter->GetCharacterMovement());
158 if (IsValid(AttackRotationComponent) == false)
159 {
160 return false;
161 }
162
163 AttackRotationComponent->BeginManualRotation();
165 return true;
166}
TObjectPtr< UCharacterMovementComponentBase > AttackRotationComponent
Definition GA_EnemyAttack.h:52
bool bAttackRotationLocked
Definition GA_EnemyAttack.h:55
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ EndAbility()

void UGA_EnemyAttack::EndAbility ( const FGameplayAbilitySpecHandle  Handle,
const FGameplayAbilityActorInfo *  ActorInfo,
const FGameplayAbilityActivationInfo  ActivationInfo,
bool  bReplicateEndAbility,
bool  bWasCancelled 
)
overridevirtual

UGA_CombatBase(으)로부터 재구현되었습니다.

UGA_BossSectionPattern, UGA_EnemyDashAttack, UGA_EnemyRangedAttack에서 재구현되었습니다.

90{
92
94 {
95 bAttackStarted = false;
96 CommitAbilityCooldown(Handle, ActorInfo, ActivationInfo, false);
97 }
98
99 SendStateTreeTag(TAG_STATETREE_EVENT_ENDABILITY);
100
101 Super::EndAbility(Handle, ActorInfo, ActivationInfo, bReplicateEndAbility, bWasCancelled);
102}
void EndAttackRotationLock()
Definition GA_EnemyAttack.cpp:168
void SendStateTreeTag(const FGameplayTag &EventTag) const
Definition GA_EnemyAttack.cpp:185
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ EndAttackRotationLock()

void UGA_EnemyAttack::EndAttackRotationLock ( )
protected
169{
170 if (bAttackRotationLocked == false)
171 {
172 AttackRotationComponent = nullptr;
173 return;
174 }
175
176 bAttackRotationLocked = false;
177 if (IsValid(AttackRotationComponent))
178 {
179 AttackRotationComponent->EndManualRotation();
180 }
181
182 AttackRotationComponent = nullptr;
183}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetCooldownTags()

const FGameplayTagContainer * UGA_EnemyAttack::GetCooldownTags ( ) const
overridevirtual
61{
62 return &TempCooldownTags;
63}

◆ PrepareAttack()

bool UGA_EnemyAttack::PrepareAttack ( )
protectedvirtual

UGA_BossSectionPattern, UGA_EnemyDashAttack, UGA_EnemyRangedAttack에서 재구현되었습니다.

135{
136 return true;
137}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ SendStateTreeTag()

void UGA_EnemyAttack::SendStateTreeTag ( const FGameplayTag &  EventTag) const
protected
186{
187 if (EventTag.IsValid() == false)
188 {
189 return;
190 }
191
192 AActor* AvatarActor = GetAvatarActorFromActorInfo();
193 if (AvatarActor == nullptr)
194 {
195 return;
196 }
197
198 ACharacter* AvatarCharacter = Cast<ACharacter>(AvatarActor);
199 if (AvatarCharacter == nullptr)
200 {
201 return;
202 }
203
204 AController* Controller = AvatarCharacter->GetController();
205 if (Controller == nullptr)
206 {
207 return;
208 }
209
210 UStateTreeComponent* StateTreeComp = Controller->FindComponentByClass<UStateTreeComponent>();
211 if (StateTreeComp == nullptr)
212 {
213 return;
214 }
215
216 FStateTreeEvent Event;
217 Event.Tag = EventTag;
218 StateTreeComp->SendStateTreeEvent(Event);
219}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ShouldSetupHitCheck()

bool UGA_EnemyAttack::ShouldSetupHitCheck ( ) const
protectedvirtual

UGA_EnemyDashAttack, UGA_EnemyRangedAttack에서 재구현되었습니다.

140{
141 return true;
142}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ AttackMontage

TObjectPtr<UAnimMontage> UGA_EnemyAttack::AttackMontage
protected

◆ AttackRotationComponent

TObjectPtr<UCharacterMovementComponentBase> UGA_EnemyAttack::AttackRotationComponent
protected

◆ bAttackRotationLocked

bool UGA_EnemyAttack::bAttackRotationLocked = false
protected

◆ bAttackStarted

bool UGA_EnemyAttack::bAttackStarted = false
protected

◆ CooldownDuration

float UGA_EnemyAttack::CooldownDuration = 0.0f
protected

◆ CooldownTag

FGameplayTag UGA_EnemyAttack::CooldownTag
protected

◆ TempCooldownTags

FGameplayTagContainer UGA_EnemyAttack::TempCooldownTags
protected

이 클래스에 대한 문서화 페이지는 다음의 파일들로부터 생성되었습니다.: