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

#include <BaseAttributeSet.h>

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

Public 멤버 함수

 UBaseAttributeSet ()
 
virtual void PreAttributeChange (const FGameplayAttribute &Attribute, float &NewValue) override
 
virtual void PostGameplayEffectExecute (const struct FGameplayEffectModCallbackData &Data) override
 
void InitBaseStats (float InMaxHealth, float InMoveSpeed, float InAttack, float InAttackSpeed, float InKnockbackResistance=0.0f, float InCooldownMultiplier=1.0f)
 
FDamageResultData GenerateDamageResultData (const struct FGameplayEffectModCallbackData &Data, float LocalDamage, bool bCriticalHit) const
 
 ATTRIBUTE_ACCESSORS (UBaseAttributeSet, Health)
 
 ATTRIBUTE_ACCESSORS (UBaseAttributeSet, MaxHealth)
 
 ATTRIBUTE_ACCESSORS (UBaseAttributeSet, MoveSpeed)
 
 ATTRIBUTE_ACCESSORS (UBaseAttributeSet, Attack)
 
 ATTRIBUTE_ACCESSORS (UBaseAttributeSet, AttackSpeed)
 
 ATTRIBUTE_ACCESSORS (UBaseAttributeSet, KnockbackResistance)
 
 ATTRIBUTE_ACCESSORS (UBaseAttributeSet, Damage)
 
 ATTRIBUTE_ACCESSORS (UBaseAttributeSet, DamageIsCritical)
 
 ATTRIBUTE_ACCESSORS (UBaseAttributeSet, CooldownMultiplier)
 
FORCEINLINE bool IsOutOfHealth () const
 

Public 속성

FDeathDelegate OnDeathDelegate
 
FOnDamageTakenDelegate OnDamageDelegate
 

Protected 속성

bool bOutOfHealth = false
 
FGameplayAttributeData Health
 
FGameplayAttributeData MaxHealth
 
FGameplayAttributeData MoveSpeed
 
FGameplayAttributeData Attack
 
FGameplayAttributeData AttackSpeed
 
FGameplayAttributeData KnockbackResistance
 
FGameplayAttributeData CooldownMultiplier
 
FGameplayAttributeData Damage
 
FGameplayAttributeData DamageIsCritical
 

생성자 & 소멸자 문서화

◆ UBaseAttributeSet()

UBaseAttributeSet::UBaseAttributeSet ( )
10 :
11 MaxHealth(1.0f),
12 MoveSpeed(1.0f),
13 Attack(0.0f),
14 AttackSpeed(1.0f),
17 Damage(0.0f)
18{
19 InitHealth(GetMaxHealth());
20}
FGameplayAttributeData Attack
Definition BaseAttributeSet.h:107
FGameplayAttributeData Damage
Definition BaseAttributeSet.h:123
FGameplayAttributeData AttackSpeed
Definition BaseAttributeSet.h:110
FGameplayAttributeData MoveSpeed
Definition BaseAttributeSet.h:104
FGameplayAttributeData MaxHealth
Definition BaseAttributeSet.h:101
FGameplayAttributeData KnockbackResistance
Definition BaseAttributeSet.h:114
FGameplayAttributeData CooldownMultiplier
Definition BaseAttributeSet.h:119

멤버 함수 문서화

◆ ATTRIBUTE_ACCESSORS() [1/9]

UBaseAttributeSet::ATTRIBUTE_ACCESSORS ( UBaseAttributeSet  ,
Attack   
)

◆ ATTRIBUTE_ACCESSORS() [2/9]

UBaseAttributeSet::ATTRIBUTE_ACCESSORS ( UBaseAttributeSet  ,
AttackSpeed   
)

◆ ATTRIBUTE_ACCESSORS() [3/9]

UBaseAttributeSet::ATTRIBUTE_ACCESSORS ( UBaseAttributeSet  ,
CooldownMultiplier   
)

◆ ATTRIBUTE_ACCESSORS() [4/9]

UBaseAttributeSet::ATTRIBUTE_ACCESSORS ( UBaseAttributeSet  ,
Damage   
)

◆ ATTRIBUTE_ACCESSORS() [5/9]

UBaseAttributeSet::ATTRIBUTE_ACCESSORS ( UBaseAttributeSet  ,
DamageIsCritical   
)

◆ ATTRIBUTE_ACCESSORS() [6/9]

UBaseAttributeSet::ATTRIBUTE_ACCESSORS ( UBaseAttributeSet  ,
Health   
)

◆ ATTRIBUTE_ACCESSORS() [7/9]

UBaseAttributeSet::ATTRIBUTE_ACCESSORS ( UBaseAttributeSet  ,
KnockbackResistance   
)

◆ ATTRIBUTE_ACCESSORS() [8/9]

UBaseAttributeSet::ATTRIBUTE_ACCESSORS ( UBaseAttributeSet  ,
MaxHealth   
)

◆ ATTRIBUTE_ACCESSORS() [9/9]

UBaseAttributeSet::ATTRIBUTE_ACCESSORS ( UBaseAttributeSet  ,
MoveSpeed   
)

◆ GenerateDamageResultData()

FDamageResultData UBaseAttributeSet::GenerateDamageResultData ( const struct FGameplayEffectModCallbackData &  Data,
float  LocalDamage,
bool  bCriticalHit 
) const
59{
60 const FGameplayEffectContextHandle Context = Data.EffectSpec.GetContext();
61
62 FDamageResultData ResultData;
63 ResultData.TargetActor = GetOwningAbilitySystemComponent()->GetAvatarActor(); // GetOwningActor 역시 PlayerState 반환
64 ResultData.SourceActor = Context.GetEffectCauser(); // instigator -> Owneractor을 반환 -> PlayerState 반환하기에 적합하지 않음.
65 ResultData.DamageAmount = LocalDamage;
66 ResultData.bIsCritical = bCriticalHit;
67 ResultData.EffectContextHandle = Context;
68
69 if (const FHitResult* HitResult = Context.GetHitResult())
70 {
71 ResultData.HitLocation = HitResult->ImpactPoint;
72 ResultData.HitNormal = HitResult->ImpactNormal;
73 }
74 else if (ResultData.TargetActor != nullptr)
75 {
76 ResultData.HitLocation = ResultData.TargetActor->GetActorLocation();
77 }
78
79 // 히트 이펙트 - 크리티컬은 전용 Cue, 일반 히트는 공격 시점에 Spec에 붙인 무기별 Cue 태그를 회수한다.
80 ResultData.HitEffectTag = bCriticalHit
81 ? TAG_CUE_COMBAT_HIT_CRITICAL
82 : Data.EffectSpec.GetDynamicAssetTags()
83 .Filter(FGameplayTagContainer(TAG_CUE_COMBAT_HITEFFECT))
84 .First();
85
86 // 데미지 타입
87 ResultData.DamageTypeTag = Data.EffectSpec.GetDynamicAssetTags()
88 .Filter(FGameplayTagContainer(TAG_DAMAGE_TYPE))
89 .First();
90
91 return ResultData;
92}
Definition BaseAttributeSet.h:15
float DamageAmount
Definition BaseAttributeSet.h:31
FGameplayTag DamageTypeTag
Definition BaseAttributeSet.h:40
TObjectPtr< AActor > TargetActor
Definition BaseAttributeSet.h:19
FGameplayTag HitEffectTag
Definition BaseAttributeSet.h:37
bool bIsCritical
Definition BaseAttributeSet.h:34
FVector HitLocation
Definition BaseAttributeSet.h:25
TObjectPtr< AActor > SourceActor
Definition BaseAttributeSet.h:22
FGameplayEffectContextHandle EffectContextHandle
Definition BaseAttributeSet.h:43
FVector HitNormal
Definition BaseAttributeSet.h:28
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ InitBaseStats()

void UBaseAttributeSet::InitBaseStats ( float  InMaxHealth,
float  InMoveSpeed,
float  InAttack,
float  InAttackSpeed,
float  InKnockbackResistance = 0.0f,
float  InCooldownMultiplier = 1.0f 
)
23{
24 bOutOfHealth = false;
25 InitMaxHealth(InMaxHealth);
26 InitHealth(InMaxHealth);
27 InitMoveSpeed(InMoveSpeed);
28 InitAttack(InAttack);
29 InitAttackSpeed(InAttackSpeed);
30 InitKnockbackResistance(InKnockbackResistance);
31 InitCooldownMultiplier(InCooldownMultiplier);
32}
bool bOutOfHealth
Definition BaseAttributeSet.h:94
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ IsOutOfHealth()

FORCEINLINE bool UBaseAttributeSet::IsOutOfHealth ( ) const
inline
85 {
86 return bOutOfHealth;
87 }
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ PostGameplayEffectExecute()

void UBaseAttributeSet::PostGameplayEffectExecute ( const struct FGameplayEffectModCallbackData &  Data)
overridevirtual
96{
97 Super::PostGameplayEffectExecute(Data);
98
99 constexpr float MinimumHealth = 0.0f;
100
101 if (Data.EvaluatedData.Attribute == GetHealthAttribute())
102 {
103 LOG_INFO(LogCKAttribute, "Direct Health Access : %f", GetHealth());
104 SetHealth(FMath::Clamp(GetHealth(), MinimumHealth, GetMaxHealth()));
105 }
106 else if (Data.EvaluatedData.Attribute == GetDamageAttribute())
107 {
108 float LocalDamage = GetDamage();
109 bool bCriticalHit = GetDamageIsCritical() > 0.0f;
110
111 SetHealth(FMath::Clamp(GetHealth() - LocalDamage, MinimumHealth, GetMaxHealth()));
112
113 if (LocalDamage > 0.0f)
114 {
115 FDamageResultData ResultData = GenerateDamageResultData(Data, LocalDamage, bCriticalHit);
116 OnDamageDelegate.Broadcast(ResultData);
117 }
118
119 SetDamage(0.0f);
120 SetDamageIsCritical(0.0f);
121 }
122
123 if (GetHealth() <= MinimumHealth && !bOutOfHealth)
124 {
125 bOutOfHealth = true;
126 Data.Target.AddLooseGameplayTag(TAG_CHARACTER_STATE_ISDEAD);
127 OnDeathDelegate.Broadcast();
128 }
129}
#define LOG_INFO(Category, Format,...)
Definition CK_UE.h:38
FOnDamageTakenDelegate OnDamageDelegate
Definition BaseAttributeSet.h:91
FDamageResultData GenerateDamageResultData(const struct FGameplayEffectModCallbackData &Data, float LocalDamage, bool bCriticalHit) const
Definition BaseAttributeSet.cpp:58
FDeathDelegate OnDeathDelegate
Definition BaseAttributeSet.h:90
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ PreAttributeChange()

void UBaseAttributeSet::PreAttributeChange ( const FGameplayAttribute &  Attribute,
float &  NewValue 
)
overridevirtual

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

36{
37 Super::PreAttributeChange(Attribute, NewValue);
38
39 if (Attribute == GetHealthAttribute())
40 {
41 NewValue = FMath::Clamp(NewValue, 0.0f, GetMaxHealth());
42 }
43 else if (Attribute == GetDamageAttribute())
44 {
45 NewValue = NewValue < 0.0f ? 0.0f : NewValue;
46 }
47 else if (Attribute == GetKnockbackResistanceAttribute())
48 {
49 NewValue = FMath::Clamp(NewValue, 0.0f, 1.0f);
50 }
51 else
52 {
53 //LOG_INFO(LogCK, "어트리뷰트: %s, 값: %f", *Attribute.GetName(), NewValue);
54 }
55}

멤버 데이터 문서화

◆ Attack

FGameplayAttributeData UBaseAttributeSet::Attack
protected

◆ AttackSpeed

FGameplayAttributeData UBaseAttributeSet::AttackSpeed
protected

◆ bOutOfHealth

bool UBaseAttributeSet::bOutOfHealth = false
protected

◆ CooldownMultiplier

FGameplayAttributeData UBaseAttributeSet::CooldownMultiplier
protected

◆ Damage

FGameplayAttributeData UBaseAttributeSet::Damage
protected

◆ DamageIsCritical

FGameplayAttributeData UBaseAttributeSet::DamageIsCritical
protected

◆ Health

FGameplayAttributeData UBaseAttributeSet::Health
protected

◆ KnockbackResistance

FGameplayAttributeData UBaseAttributeSet::KnockbackResistance
protected

◆ MaxHealth

FGameplayAttributeData UBaseAttributeSet::MaxHealth
protected

◆ MoveSpeed

FGameplayAttributeData UBaseAttributeSet::MoveSpeed
protected

◆ OnDamageDelegate

FOnDamageTakenDelegate UBaseAttributeSet::OnDamageDelegate
mutable

◆ OnDeathDelegate

FDeathDelegate UBaseAttributeSet::OnDeathDelegate
mutable

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