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

#include <GA_SkillBase.h>

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

Public 멤버 함수

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

Public 속성

FGameplayTag CooldownTag
 
float CostValue
 
float CooldownDuration
 
- UGA_CombatBase(으)로부터 상속된 Public 속성
TObjectPtr< UCombatDataBaseCombatData
 

Protected 멤버 함수

virtual void ApplyCombatData () override
 
void OnCompleteCallback ()
 
void OnInterruptedCallback ()
 
virtual bool CheckCost (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, FGameplayTagContainer *OptionalRelevantTags) const override
 
virtual void ApplyCost (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override
 
- UGA_CombatBase(으)로부터 상속된 Protected 멤버 함수
void SetupHitCheckListeners ()
 
void SetupSingleHitCheckListener ()
 
void OnHitCheckStart (FGameplayEventData Payload)
 
void OnHitCheckEnd (FGameplayEventData Payload)
 
void OnSingleHitCheck (FGameplayEventData Payload)
 
void OnTraceResultCallback (const FGameplayAbilityTargetDataHandle &TargetDataHandle, float CurrentLevel)
 
void GetValidTargets (const FGameplayAbilityTargetDataHandle &TargetDataHandle, TArray< AActor * > &OutValidActors) const
 
void ApplyEffectsToTargets (const TArray< AActor * > &TargetActors, float CurrentLevel)
 
void ApplyKnockbackToTargets (const TArray< AActor * > &TargetActors, AActor *Attacker)
 
void ApplyGlobalHitStop ()
 
FORCEINLINE void SetHitStopEnabled (bool bEnable)
 
- UGA_Base(으)로부터 상속된 Protected 멤버 함수
bool GetCursorData (FVector &TargetPos, FRotator &TargetRot) const
 
void MotionWarpTargetToCursor (FName WarpTargetName=FName("Target"))
 
void RotateCharacterToCursor ()
 

Protected 속성

TObjectPtr< UAnimMontage > SkillActionMontage
 
- UGA_CombatBase(으)로부터 상속된 Protected 속성
TObjectPtr< UAT_TraceActiveTraceTask
 
TSubclassOf< ATA_TraceHitTraceClass
 
TArray< TSubclassOf< UGameplayEffect > > TargetEffectClasses
 
FGameplayTag HitCheckStartTag
 
FGameplayTag HitCheckEndTag
 
TEnumAsByte< ECollisionChannel > TraceChannel
 
uint8 bApplyKnockback: 1 = false
 
float KnockbackStrength = 700.0f
 
float KnockbackZComponent = 0.2f
 
uint8 bApplyHitStop: 1 = false
 
float HitStopDuration = 0.05f
 
float HitStopTimeDilation = 0.1f
 

Private 속성

FGameplayTagContainer TempCooldownTags
 

생성자 & 소멸자 문서화

◆ UGA_SkillBase()

UGA_SkillBase::UGA_SkillBase ( )
14{
15}

멤버 함수 문서화

◆ ActivateAbility()

void UGA_SkillBase::ActivateAbility ( const FGameplayAbilitySpecHandle  Handle,
const FGameplayAbilityActorInfo *  ActorInfo,
const FGameplayAbilityActivationInfo  ActivationInfo,
const FGameplayEventData *  TriggerEventData 
)
overridevirtual

UGA_Skill_Q에서 재구현되었습니다.

34{
35 Super::ActivateAbility(Handle, ActorInfo, ActivationInfo, TriggerEventData);
36
37 if (!CommitAbility(Handle, ActorInfo, ActivationInfo))
38 {
39 EndAbility(Handle, ActorInfo, ActivationInfo, false, true);
40 return;
41 }
42
43 ACharacter* TargetCharacter = Cast<ACharacter>(ActorInfo->AvatarActor.Get());
44 if (!TargetCharacter)
45 {
46 EndAbility(Handle, ActorInfo, ActivationInfo, false, true);
47 return;
48 }
49
51 {
52 EndAbility(Handle, ActorInfo, ActivationInfo, false, true);
53 return;
54 }
55
57
58 if (HitCheckEndTag.IsValid())
59 {
61 }
62 else
63 {
65 }
66
67 if (UAbilityTask_PlayMontageAndWait* PlayMontageTask = UAbilityTask_PlayMontageAndWait::CreatePlayMontageAndWaitProxy(this, TEXT("SkillMontage"),SkillActionMontage, 1.0f))
68 {
69 PlayMontageTask->OnCompleted.AddDynamic(this, &ThisClass::OnCompleteCallback);
70 PlayMontageTask->OnInterrupted.AddDynamic(this, &ThisClass::OnInterruptedCallback);
71 PlayMontageTask->ReadyForActivation();
72 }
73}
void RotateCharacterToCursor()
Definition GA_Base.cpp:58
void SetupHitCheckListeners()
Definition GA_CombatBase.cpp:64
void SetupSingleHitCheckListener()
Definition GA_CombatBase.cpp:80
virtual void EndAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, bool bReplicateEndAbility, bool bWasCancelled) override
Definition GA_CombatBase.cpp:44
FGameplayTag HitCheckEndTag
Definition GA_CombatBase.h:84
TObjectPtr< UAnimMontage > SkillActionMontage
Definition GA_SkillBase.h:46
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ ApplyCombatData()

void UGA_SkillBase::ApplyCombatData ( )
overrideprotectedvirtual

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

UGA_Skill_Q에서 재구현되었습니다.

18{
19 Super::ApplyCombatData();
20
21 USkillData* Data = Cast<USkillData>(CombatData);
22 if (!Data)
23 {
24 return;
25 }
26
29 CostValue = Data->CostValue;
31}
TObjectPtr< UCombatDataBase > CombatData
Definition GA_CombatBase.h:68
float CooldownDuration
Definition GA_SkillBase.h:42
float CostValue
Definition GA_SkillBase.h:39
FGameplayTag CooldownTag
Definition GA_SkillBase.h:36
Definition SkillData.h:33
float CooldownDuration
Definition SkillData.h:42
FGameplayTag CooldownTag
Definition SkillData.h:39
TObjectPtr< UAnimMontage > SkillMontage
Definition SkillData.h:49
float CostValue
Definition SkillData.h:45

◆ ApplyCooldown()

void UGA_SkillBase::ApplyCooldown ( const FGameplayAbilitySpecHandle  Handle,
const FGameplayAbilityActorInfo *  ActorInfo,
const FGameplayAbilityActivationInfo  ActivationInfo 
) const
overridevirtual
161{
162 if (!CooldownTag.IsValid() || CooldownDuration <= 0.0f)
163 {
164 return;
165 }
166
167 UGameplayEffect* CooldownGE = GetCooldownGameplayEffect();
168 if (!CooldownGE)
169 {
170 return;
171 }
172
173 FGameplayEffectSpecHandle SpecHandle = MakeOutgoingGameplayEffectSpec(CooldownGE->GetClass(), GetAbilityLevel());
174 if (SpecHandle.IsValid())
175 {
176 FGameplayTag DurationTag = TAG_DATA_COOLDOWN;
177 SpecHandle.Data->SetSetByCallerMagnitude(DurationTag, CooldownDuration);
178 SpecHandle.Data->DynamicGrantedTags.AddTag(CooldownTag);
179
180 (void)ApplyGameplayEffectSpecToOwner(Handle, ActorInfo, ActivationInfo, SpecHandle);
181 }
182}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ApplyCost()

void UGA_SkillBase::ApplyCost ( const FGameplayAbilitySpecHandle  Handle,
const FGameplayAbilityActorInfo *  ActorInfo,
const FGameplayAbilityActivationInfo  ActivationInfo 
) const
overrideprotectedvirtual
125{
126 if (CostValue <= 0.0f)
127 {
128 return;
129 }
130
131 if (!GetCostGameplayEffect())
132 {
133 Super::ApplyCost(Handle, ActorInfo, ActivationInfo);
134 return;
135 }
136
137 FGameplayEffectSpecHandle SpecHandle = MakeOutgoingGameplayEffectSpec(GetCostGameplayEffect()->GetClass(), GetAbilityLevel());
138 if (SpecHandle.IsValid())
139 {
140 FGameplayTag CostTag = TAG_DATA_COST;
141 SpecHandle.Data->SetSetByCallerMagnitude(CostTag, -CostValue);
142
143 (void)ApplyGameplayEffectSpecToOwner(Handle, ActorInfo, ActivationInfo, SpecHandle);
144 }
145}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ CheckCost()

bool UGA_SkillBase::CheckCost ( const FGameplayAbilitySpecHandle  Handle,
const FGameplayAbilityActorInfo *  ActorInfo,
FGameplayTagContainer *  OptionalRelevantTags 
) const
overrideprotectedvirtual
88{
89 if (CostValue <= 0.0f)
90 {
91 return true;
92 }
93
94 UGameplayEffect* CostGE = GetCostGameplayEffect();
95 if (!CostGE)
96 {
97 LOG_ERROR(LogCKAttribute, "Cost GE가 누락");
98 return false;
99 }
100
101 // 현재 소모값이 SkillEnergy 하나 뿐이기에 단일 방식 채용. 만약 소모값이 두개 이상이면 수정 해야 됨.
102 if (CostGE->Modifiers.IsEmpty())
103 {
104 return true;
105 }
106
107 const FGameplayModifierInfo& CostModifier = CostGE->Modifiers[0];
108 FGameplayAttribute CostAttribute = CostModifier.Attribute;
109 if (!CostAttribute.IsValid())
110 {
111 return true;
112 }
113
114 UAbilitySystemComponent* ASC = ActorInfo->AbilitySystemComponent.Get();
115 if (!ASC || !ASC->HasAttributeSetForAttribute(CostAttribute))
116 {
117 return true;
118 }
119
120 float CurrentValue = ASC->GetNumericAttribute(CostAttribute);
121 return CurrentValue >= CostValue;
122}
#define LOG_ERROR(Category, Format,...)
Definition CK_UE.h:32
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetCooldownTags()

const FGameplayTagContainer * UGA_SkillBase::GetCooldownTags ( ) const
overridevirtual
149{
150 TempCooldownTags.Reset();
151
152 if (CooldownTag.IsValid())
153 {
155 }
156
157 return &TempCooldownTags;
158}
FGameplayTagContainer TempCooldownTags
Definition GA_SkillBase.h:49

◆ OnCompleteCallback()

void UGA_SkillBase::OnCompleteCallback ( )
protected
76{
77 bool bWasCancelled = false;
78 EndAbility(CurrentSpecHandle, CurrentActorInfo, CurrentActivationInfo, true, bWasCancelled);
79}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnInterruptedCallback()

void UGA_SkillBase::OnInterruptedCallback ( )
protected
82{
83 bool bWasCancelled = true;
84 EndAbility(CurrentSpecHandle, CurrentActorInfo, CurrentActivationInfo, true, bWasCancelled);
85}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ CooldownDuration

float UGA_SkillBase::CooldownDuration

◆ CooldownTag

FGameplayTag UGA_SkillBase::CooldownTag

◆ CostValue

float UGA_SkillBase::CostValue

◆ SkillActionMontage

TObjectPtr<UAnimMontage> UGA_SkillBase::SkillActionMontage
protected

◆ TempCooldownTags

FGameplayTagContainer UGA_SkillBase::TempCooldownTags
mutableprivate

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