Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
FGrantedHandles 구조체 참조

#include <GrantedHandles.h>

FGrantedHandles에 대한 협력 다이어그램:
Collaboration graph

Public 멤버 함수

FGameplayAbilitySpecHandle GiveAbility (UAbilitySystemComponent *ASC, const FGameplayAbilitySpec &Spec)
 
FActiveGameplayEffectHandle ApplyEffectSpecToSelf (UAbilitySystemComponent *ASC, const FGameplayEffectSpec &Spec)
 
void TakeFromAbilitySystem (UAbilitySystemComponent *ASC)
 
bool IsEmpty () const
 

Public 속성

TArray< FGameplayAbilitySpecHandle > AbilitySpecHandles
 
TArray< FActiveGameplayEffectHandle > EffectHandles
 

상세한 설명

ASC 에 부여한 어빌리티/GE 핸들을 한 묶음으로 추적하기 위한 유틸 구조체. 무기/장비/패시브 세트 등 "한 단위가 부여한 것을 한 번에 회수" 하는 패턴에 사용.

  • GiveAbility / ApplyEffectSpecToSelf 로 부여하면서 자동으로 핸들이 누적된다.
  • 회수는 TakeFromAbilitySystem 단일 호출.
  • 자기가 직접 부여한 항목만 추적. 정책성 일괄 정리(예: 전역 쿨다운 리셋)는 별도 처리.

멤버 함수 문서화

◆ ApplyEffectSpecToSelf()

FActiveGameplayEffectHandle FGrantedHandles::ApplyEffectSpecToSelf ( UAbilitySystemComponent *  ASC,
const FGameplayEffectSpec &  Spec 
)
23{
24 if (ASC == nullptr)
25 {
26 return FActiveGameplayEffectHandle();
27 }
28
29 const FActiveGameplayEffectHandle Handle = ASC->ApplyGameplayEffectSpecToSelf(Spec);
30 if (Handle.IsValid())
31 {
32 EffectHandles.Add(Handle);
33 }
34 return Handle;
35}
TArray< FActiveGameplayEffectHandle > EffectHandles
Definition GrantedHandles.h:33

◆ GiveAbility()

FGameplayAbilitySpecHandle FGrantedHandles::GiveAbility ( UAbilitySystemComponent *  ASC,
const FGameplayAbilitySpec &  Spec 
)
8{
9 if (ASC == nullptr)
10 {
11 return FGameplayAbilitySpecHandle();
12 }
13
14 const FGameplayAbilitySpecHandle Handle = ASC->GiveAbility(Spec);
15 if (Handle.IsValid())
16 {
17 AbilitySpecHandles.Add(Handle);
18 }
19 return Handle;
20}
TArray< FGameplayAbilitySpecHandle > AbilitySpecHandles
Definition GrantedHandles.h:29

◆ IsEmpty()

bool FGrantedHandles::IsEmpty ( ) const
inline
46 {
47 return AbilitySpecHandles.Num() == 0 && EffectHandles.Num() == 0;
48 }

◆ TakeFromAbilitySystem()

void FGrantedHandles::TakeFromAbilitySystem ( UAbilitySystemComponent *  ASC)
38{
39 if (ASC == nullptr)
40 {
41 AbilitySpecHandles.Reset();
42 EffectHandles.Reset();
43 return;
44 }
45
46 // 1) 활성 어빌리티 취소.
47 for (const FGameplayAbilitySpecHandle& Handle : AbilitySpecHandles)
48 {
49 if (Handle.IsValid() == false)
50 {
51 continue;
52 }
53
54 const FGameplayAbilitySpec* Spec = ASC->FindAbilitySpecFromHandle(Handle);
55 if (Spec == nullptr)
56 {
57 continue;
58 }
59
60 if (Spec->IsActive())
61 {
62 ASC->CancelAbilityHandle(Handle);
63 }
64 }
65
66 // 2) 어빌리티 부여 자체 제거.
67 for (const FGameplayAbilitySpecHandle& Handle : AbilitySpecHandles)
68 {
69 if (Handle.IsValid())
70 {
71 ASC->ClearAbility(Handle);
72 }
73 }
74
75 // 3) 적용된 GE 제거.
76 for (const FActiveGameplayEffectHandle& Handle : EffectHandles)
77 {
78 if (Handle.IsValid())
79 {
80 ASC->RemoveActiveGameplayEffect(Handle, /*StacksToRemove=*/ -1);
81 }
82 }
83
84 AbilitySpecHandles.Reset();
85 EffectHandles.Reset();
86}

멤버 데이터 문서화

◆ AbilitySpecHandles

TArray<FGameplayAbilitySpecHandle> FGrantedHandles::AbilitySpecHandles

◆ EffectHandles

TArray<FActiveGameplayEffectHandle> FGrantedHandles::EffectHandles

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