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

#include <GA_Skill_Charge.h>

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

Public 멤버 함수

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

Protected 멤버 함수

virtual void ApplyCombatData () override
 
virtual void ApplyCooldown (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override
 
void OnPhaseReached (int32 InPhase)
 
void ApplyChargePhaseEffects (int32 PhaseIndex)
 
void ExecuteInstantAttack ()
 
void CleanupTasks ()
 
void ClearChargeState ()
 
void StartChargeLoopAudio ()
 
void StopChargeLoopAudio ()
 
void ToNextPhaseState (int32 InPhase)
 
void OnMaxPhaseTimeout ()
 
- UGA_SkillBase(으)로부터 상속된 Protected 멤버 함수
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
 
float GetSkillMontageSectionLength (const UAnimMontage *Montage, FName SectionName, bool bApplyPlayRate=false, float PlayRate=1.0f) const
 
bool HasClearStrikePath (const AMainPlayerCharacter *Player, const AActor *TargetActor) const
 
void SetAvatarPawnCollisionResponse (ECollisionResponse Response) const
 
float GetPlayerCurrentWeaponAttackRange () const
 
void SetAvatarMeshHidden (bool bHidden) const
 
void ResetSkillMontagePlayRate () const
 
AActor * GetTargetActor () const
 
UAnimMontage * GetSkillMontage (FGameplayTag PlayMontageTag=FGameplayTag::EmptyTag) const
 
bool ContainsAllMontageSections (const UAnimMontage *Montage, TArray< FName > SectionNames) const
 
template<typename T >
const T * GetExtendedData () const
 
template<typename T >
bool HasExtendedData () 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 속성

TSubclassOf< UGameplayEffect > ChargeSlowEffectClass
 
float MaxPhaseDuration = 5.0f
 
FTimerHandle MaxPhaseTimeoutTimer
 
FActiveGameplayEffectHandle ActiveSlowEffectHandle
 
TObjectPtr< UDataTable > ChargePhaseTable
 
TArray< TObjectPtr< UAnimMontage > > AttackMontages
 
FGameplayTag ChargeLoopAudioTag
 
TArray< FChargePhaseTableRowCachedPhaseRows
 
int32 CurrentPhase = 0
 
TArray< FTimerHandle > PhaseDelayTimers
 
bool bChargeStateActive = false
 
bool bShouldApplyCooldownOnEnd = false
 
- UGA_SkillBase(으)로부터 상속된 Protected 속성
FGameplayTag CooldownTag
 
float CostValue
 
float CooldownDuration
 
- 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
 

멤버 함수 문서화

◆ ActivateAbility()

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

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

37{
38 // Super(UGA_SkillBase) 미호출 의도: 차지 스킬은 표준 SkillBase 흐름(즉시 몽타주 재생, 회전, 히트체크 세팅)을 사용하지 않음. 단계별 몽타주는 ExecuteInstantAttack 시점에 재생.
39 ACharacter* Character = Cast<ACharacter>(ActorInfo->AvatarActor.Get());
40 if (!Character)
41 {
42 EndAbility(Handle, ActorInfo, ActivationInfo, false, true);
43 return;
44 }
45
46 UAbilitySystemComponent* ASC = GetAbilitySystemComponentFromActorInfo();
47
48 if (!ASC)
49 {
50 EndAbility(Handle, ActorInfo, ActivationInfo, false, true);
51 return;
52 }
53
55 {
56 LOG_ERROR(LogCK, "Charge 테이블 비어 있음。");
57 EndAbility(Handle, ActorInfo, ActivationInfo, false, true);
58 return;
59 }
60
61 if (AttackMontages.Num() == 0)
62 {
63 LOG_ERROR(LogCK, "Charge 스킬 InstantAttackMontages 배열이 비어있음");
64 EndAbility(Handle, ActorInfo, ActivationInfo, false, true);
65 return;
66 }
67
68 if (!CommitAbility(Handle, ActorInfo, ActivationInfo))
69 {
70 EndAbility(Handle, ActorInfo, ActivationInfo, true, true);
71 return;
72 }
73
75
76 IChargeInterface* ChargeInterface = Cast<IChargeInterface>(GetAvatarActorFromActorInfo());
77 if (ChargeInterface)
78 {
79 ChargeInterface->OnChargeBegin();
80 }
81
82 ApplyEffectsToSelf(Handle, ActorInfo, ActivationInfo);
83
84 // 캔슬 준비
86
87 ASC->AddGameplayCue(TAG_CUE_CHARGE_AURA); // 차지 아우라 이펙트 Cue 전송
88 ASC->AddLooseGameplayTag(TAG_CHARACTER_STATE_COMBAT_ISCHARGING); // 차지 태그 (ABP) 적용
89 bChargeStateActive = true;
91
92 // 차지 단계 데이터 스냅샷
93 CachedPhaseRows.Reset();
94 TArray<FChargePhaseTableRow*> Rows;
95 ChargePhaseTable->GetAllRows(TEXT("ChargePhaseContext"), Rows);
96 for (FChargePhaseTableRow* R : Rows)
97 {
98 if (R)
99 {
100 CachedPhaseRows.Add(*R);
101 }
102 }
104 {
105 return A.Charge_Time < B.Charge_Time;
106 });
107
108 if (CachedPhaseRows.Num() == 0)
109 {
110 LOG_ERROR(LogCK, "ChargePhaseTable이 비어있음");
111 EndAbility(Handle, ActorInfo, ActivationInfo, false, true);
112 return;
113 }
114
115 CurrentPhase = 0;
116
117 // 단계별 길이 배열 계산 — Charge_Time은 누적 시간이므로 차분
118 TArray<float> PhaseDurations;
119 PhaseDurations.Reserve(CachedPhaseRows.Num());
120
121 float PrevTime = 0.0f;
122 for (const FChargePhaseTableRow& Row : CachedPhaseRows)
123 {
124 const float Duration = FMath::Max(Row.Charge_Time - PrevTime, 0.0f);
125 PhaseDurations.Add(Duration);
126 PrevTime = Row.Charge_Time;
127 }
128
129 UWorld* World = GetWorld();
130 if (!World)
131 {
132 EndAbility(Handle, ActorInfo, ActivationInfo, false, true);
133 return;
134 }
135
136 FTimerManager& TimerManager = World->GetTimerManager();
137
138 for (int32 i = 0; i < CachedPhaseRows.Num(); ++i)
139 {
140 const float Time = CachedPhaseRows[i].Charge_Time;
141 if (Time <= 0.f)
142 {
143 continue;
144 }
145
146 const int32 PhaseNumber = i + 1;
147 FTimerHandle Handle_Phase;
148 TimerManager.SetTimer(Handle_Phase, FTimerDelegate::CreateUObject(this, &ThisClass::OnPhaseReached, PhaseNumber), Time, false);
149 PhaseDelayTimers.Add(Handle_Phase);
150 }
151
152 // 초기 단계 데이터 적용
154
155 // State 컴포넌트에 차지 시작 통지
156 if (ChargeInterface)
157 {
158 if (UChargeStateComponent* StateComp = ChargeInterface->GetChargeStateComponent())
159 {
160 StateComp->BeginCharge(PhaseDurations);
161 }
162 }
163}
#define LOG_ERROR(Category, Format,...)
Definition CK_UE.h:40
Definition ChargeInterface.h:21
virtual UChargeStateComponent * GetChargeStateComponent() const =0
virtual void OnChargeBegin()=0
void SetupCancelableListener()
Definition GA_Base.cpp:53
void ApplyEffectsToSelf(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo)
Definition GA_CombatBase.cpp:265
TObjectPtr< UDataTable > ChargePhaseTable
Definition GA_Skill_Charge.h:59
TArray< FChargePhaseTableRow > CachedPhaseRows
Definition GA_Skill_Charge.h:67
TArray< TObjectPtr< UAnimMontage > > AttackMontages
Definition GA_Skill_Charge.h:62
bool bShouldApplyCooldownOnEnd
Definition GA_Skill_Charge.h:78
TArray< FTimerHandle > PhaseDelayTimers
Definition GA_Skill_Charge.h:72
void ApplyChargePhaseEffects(int32 PhaseIndex)
Definition GA_Skill_Charge.cpp:190
bool bChargeStateActive
Definition GA_Skill_Charge.h:75
void StartChargeLoopAudio()
Definition GA_Skill_Charge.cpp:250
virtual void EndAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, bool bReplicateEndAbility, bool bWasCancelled) override
Definition GA_Skill_Charge.cpp:341
int32 CurrentPhase
Definition GA_Skill_Charge.h:70
Definition ChargeTable.h:13
float Charge_Time
Definition ChargeTable.h:22
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ ApplyChargePhaseEffects()

void UGA_Skill_Charge::ApplyChargePhaseEffects ( int32  PhaseIndex)
protected
191{
192 if (!CachedPhaseRows.IsValidIndex(PhaseIndex))
193 {
194 return;
195 }
196
197 const FChargePhaseTableRow& Row = CachedPhaseRows[PhaseIndex];
198
199 UAbilitySystemComponent* ASC = GetAbilitySystemComponentFromActorInfo();
200 if (!ASC)
201 {
202 return;
203 }
204
206 {
207 // 기존 슬로우 GE 제거
208 if (ActiveSlowEffectHandle.IsValid())
209 {
210 ASC->RemoveActiveGameplayEffect(ActiveSlowEffectHandle);
211 ActiveSlowEffectHandle.Invalidate();
212 }
213
214 FGameplayEffectContextHandle EffectContext = ASC->MakeEffectContext();
215 EffectContext.AddSourceObject(this);
216
217 FGameplayEffectSpecHandle SpecHandle = ASC->MakeOutgoingSpec(ChargeSlowEffectClass, 1.0f, EffectContext);
218 if (SpecHandle.IsValid())
219 {
220 SpecHandle.Data->SetSetByCallerMagnitude(TAG_DATA_STAT_MOVE_SPEED, Row.Move_Speed);
221 ActiveSlowEffectHandle = ASC->ApplyGameplayEffectSpecToSelf(*SpecHandle.Data.Get());
222 LOG_INFO(LogCKAttribute, "Charge Phase[%d] Move_Speed=%.2f 적용", PhaseIndex, Row.Move_Speed);
223 }
224 }
225
226 // Rot_Speed 전달
227 if (IChargeInterface* ChargeInterface = Cast<IChargeInterface>(GetAvatarActorFromActorInfo()))
228 {
229 ChargeInterface->OnChargePhaseChanged(Row.Rot_Speed);
230 }
231}
#define LOG_INFO(Category, Format,...)
Definition CK_UE.h:38
FActiveGameplayEffectHandle ActiveSlowEffectHandle
Definition GA_Skill_Charge.h:55
TSubclassOf< UGameplayEffect > ChargeSlowEffectClass
Definition GA_Skill_Charge.h:48
float Rot_Speed
Definition ChargeTable.h:31
float Move_Speed
Definition ChargeTable.h:28
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ApplyCombatData()

void UGA_Skill_Charge::ApplyCombatData ( )
overrideprotectedvirtual

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

20{
21 Super::ApplyCombatData();
22
23 if (!CombatData)
24 {
25 return;
26 }
27
28 if (const FSkillChargeDatas* Payload = CombatData->FindExtendedData<FSkillChargeDatas>())
29 {
30 ChargePhaseTable = Payload->ChargePhaseDataTable;
31 AttackMontages = Payload->AttackMontages;
32 ChargeLoopAudioTag = Payload->ChargeLoopAudioTag;
33 }
34}
TObjectPtr< UCombatDataBase > CombatData
Definition GA_CombatBase.h:75
FGameplayTag ChargeLoopAudioTag
Definition GA_Skill_Charge.h:65
Definition ExtendedDatas.h:195

◆ ApplyCooldown()

void UGA_Skill_Charge::ApplyCooldown ( const FGameplayAbilitySpecHandle  Handle,
const FGameplayAbilityActorInfo *  ActorInfo,
const FGameplayAbilityActivationInfo  ActivationInfo 
) const
overrideprotectedvirtual

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

356{
358 {
359 return;
360 }
361
362 Super::ApplyCooldown(Handle, ActorInfo, ActivationInfo);
363}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ CleanupTasks()

void UGA_Skill_Charge::CleanupTasks ( )
protected
366{
367 if (IChargeInterface* ChargeInterface = Cast<IChargeInterface>(GetAvatarActorFromActorInfo()))
368 {
369 ChargeInterface->OnChargeEnd();
370 }
371
373}
void ClearChargeState()
Definition GA_Skill_Charge.cpp:375
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ClearChargeState()

void UGA_Skill_Charge::ClearChargeState ( )
protected
376{
377 if (UWorld* World = GetWorld())
378 {
379 FTimerManager& TimerManager = World->GetTimerManager();
380 for (FTimerHandle& Handle_Phase : PhaseDelayTimers)
381 {
382 TimerManager.ClearTimer(Handle_Phase);
383 }
384 TimerManager.ClearTimer(MaxPhaseTimeoutTimer);
385 }
386 PhaseDelayTimers.Empty();
387
389
391 {
392 return;
393 }
394
395 bChargeStateActive = false;
396
397 UAbilitySystemComponent* ASC = GetAbilitySystemComponentFromActorInfo();
398 if (!ASC)
399 {
400 return;
401 }
402
403 ASC->RemoveGameplayCue(TAG_CUE_CHARGE_AURA);
404 ASC->RemoveLooseGameplayTag(TAG_CHARACTER_STATE_COMBAT_ISCHARGING);
405
406 if (ActiveSlowEffectHandle.IsValid())
407 {
408 ASC->RemoveActiveGameplayEffect(ActiveSlowEffectHandle);
409 ActiveSlowEffectHandle.Invalidate();
410 LOG_INFO(LogCKAttribute, "MoveSpeedSlow 해제!!!");
411 }
412
413 // State 컴포넌트에 차지 종료 통지
414 if (IChargeInterface* ChargeIface = Cast<IChargeInterface>(GetAvatarActorFromActorInfo()))
415 {
416 if (UChargeStateComponent* StateComp = ChargeIface->GetChargeStateComponent())
417 {
418 StateComp->EndCharge();
419 }
420 }
421}
FTimerHandle MaxPhaseTimeoutTimer
Definition GA_Skill_Charge.h:53
void StopChargeLoopAudio()
Definition GA_Skill_Charge.cpp:276
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ EndAbility()

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

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

342{
344 {
345 ApplyCooldown(Handle, ActorInfo, ActivationInfo);
346 }
347
349 CurrentPhase = 0;
350
351 CleanupTasks();
352 Super::EndAbility(Handle, ActorInfo, ActivationInfo, bReplicateEndAbility, bWasCancelled);
353}
void CleanupTasks()
Definition GA_Skill_Charge.cpp:365
virtual void ApplyCooldown(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override
Definition GA_Skill_Charge.cpp:355
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ExecuteInstantAttack()

void UGA_Skill_Charge::ExecuteInstantAttack ( )
protected
300{
301 // 1단계 도달 전 바로 종료
302 if (CurrentPhase == 0)
303 {
304 EndAbility(CurrentSpecHandle, CurrentActorInfo, CurrentActivationInfo, true, false);
305 return;
306 }
307
309
310 UAbilitySystemComponent* ASC = GetAbilitySystemComponentFromActorInfo();
311 if (!ASC)
312 {
313 return;
314 }
315
316 // 몽타주 불러오기
317 const int32 Index = FMath::Clamp(CurrentPhase - 1, 0, AttackMontages.Num() - 1);
318 UAnimMontage* MontageToPlay = AttackMontages[Index];
319
320 if (!MontageToPlay)
321 {
322 EndAbility(CurrentSpecHandle, CurrentActorInfo, CurrentActivationInfo, true, true);
323 return;
324 }
325
327
328 // 몽타주 재생
329 UAbilityTask_PlayMontageAndWait* Task = UAbilityTask_PlayMontageAndWait::CreatePlayMontageAndWaitProxy(this, TEXT("ChargeAttack"), MontageToPlay, 1.0f);
330 if (!Task)
331 {
332 EndAbility(CurrentSpecHandle, CurrentActorInfo, CurrentActivationInfo, true, true);
333 return;
334 }
335
336 Task->OnCompleted.AddDynamic(this, &ThisClass::OnAbilityMontageCompleted);
337 Task->OnInterrupted.AddDynamic(this, &ThisClass::OnAbilityMontageInterrupted);
338 Task->ReadyForActivation();
339}
void SetupHitCheckListener()
Definition GA_CombatBase.cpp:62
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ InputReleased()

void UGA_Skill_Charge::InputReleased ( const FGameplayAbilitySpecHandle  Handle,
const FGameplayAbilityActorInfo *  ActorInfo,
const FGameplayAbilityActivationInfo  ActivationInfo 
)
overridevirtual
166{
168}
void ExecuteInstantAttack()
Definition GA_Skill_Charge.cpp:299
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnMaxPhaseTimeout()

void UGA_Skill_Charge::OnMaxPhaseTimeout ( )
protected
234{
235 LOG_INFO(LogCK, "Charge MaxPhase 유지시간 초과 — 어빌리티 취소");
236 CancelAbility(CurrentSpecHandle, CurrentActorInfo, CurrentActivationInfo, true);
237}

◆ OnPhaseReached()

void UGA_Skill_Charge::OnPhaseReached ( int32  InPhase)
protected
171{
172 CurrentPhase = InPhase;
173 LOG_INFO(LogCK, "Charge Phase %d", CurrentPhase);
175
176 // 마지막 단계 도달 시 유지 가능한 시간 초과하면 자동 취소
177 if (CurrentPhase == CachedPhaseRows.Num())
178 {
179 if (UWorld* World = GetWorld())
180 {
181 World->GetTimerManager().SetTimer(MaxPhaseTimeoutTimer,this, &ThisClass::OnMaxPhaseTimeout,MaxPhaseDuration,false);
182 }
183 return;
184 }
185
187}
float MaxPhaseDuration
Definition GA_Skill_Charge.h:51
void ToNextPhaseState(int32 InPhase)
Definition GA_Skill_Charge.cpp:239
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ StartChargeLoopAudio()

void UGA_Skill_Charge::StartChargeLoopAudio ( )
protected
251{
252 if (ChargeLoopAudioTag.IsValid() == false)
253 {
254 return;
255 }
256
257 if (CachedAudioTagComponents.IsEmpty())
258 {
260 }
261
262 for (UAudioEmitterComponent* AudioTagComponent : CachedAudioTagComponents)
263 {
264 if (AudioTagComponent == nullptr)
265 {
266 continue;
267 }
268
269 if (AudioTagComponent->StartLoopAudioTag(ChargeLoopAudioTag))
270 {
271 return;
272 }
273 }
274}
void CacheAudioTagComponents()
Definition GA_CombatBase.cpp:376
TArray< TObjectPtr< UAudioEmitterComponent > > CachedAudioTagComponents
Definition GA_CombatBase.h:96
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ StopChargeLoopAudio()

void UGA_Skill_Charge::StopChargeLoopAudio ( )
protected
277{
278 if (ChargeLoopAudioTag.IsValid() == false)
279 {
280 return;
281 }
282
283 if (CachedAudioTagComponents.IsEmpty())
284 {
286 }
287
288 for (UAudioEmitterComponent* AudioTagComponent : CachedAudioTagComponents)
289 {
290 if (AudioTagComponent == nullptr)
291 {
292 continue;
293 }
294
295 AudioTagComponent->StopLoopAudioTag(ChargeLoopAudioTag);
296 }
297}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ToNextPhaseState()

void UGA_Skill_Charge::ToNextPhaseState ( int32  InPhase)
protected
240{
241 if (IChargeInterface* ChargeInterface = Cast<IChargeInterface>(GetAvatarActorFromActorInfo()))
242 {
243 if (UChargeStateComponent* StateComp = ChargeInterface->GetChargeStateComponent())
244 {
245 StateComp->ChangePhase(InPhase);
246 }
247 }
248}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ ActiveSlowEffectHandle

FActiveGameplayEffectHandle UGA_Skill_Charge::ActiveSlowEffectHandle
protected

◆ AttackMontages

TArray<TObjectPtr<UAnimMontage> > UGA_Skill_Charge::AttackMontages
protected

◆ bChargeStateActive

bool UGA_Skill_Charge::bChargeStateActive = false
protected

◆ bShouldApplyCooldownOnEnd

bool UGA_Skill_Charge::bShouldApplyCooldownOnEnd = false
protected

◆ CachedPhaseRows

TArray<FChargePhaseTableRow> UGA_Skill_Charge::CachedPhaseRows
protected

◆ ChargeLoopAudioTag

FGameplayTag UGA_Skill_Charge::ChargeLoopAudioTag
protected

◆ ChargePhaseTable

TObjectPtr<UDataTable> UGA_Skill_Charge::ChargePhaseTable
protected

◆ ChargeSlowEffectClass

TSubclassOf<UGameplayEffect> UGA_Skill_Charge::ChargeSlowEffectClass
protected

◆ CurrentPhase

int32 UGA_Skill_Charge::CurrentPhase = 0
protected

◆ MaxPhaseDuration

float UGA_Skill_Charge::MaxPhaseDuration = 5.0f
protected

◆ MaxPhaseTimeoutTimer

FTimerHandle UGA_Skill_Charge::MaxPhaseTimeoutTimer
protected

◆ PhaseDelayTimers

TArray<FTimerHandle> UGA_Skill_Charge::PhaseDelayTimers
protected

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