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

#include <Task_ApplyGE.h>

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

Public 타입

using FInstanceDataType = FTask_ApplyGE_Data
 

Public 멤버 함수

 FTask_ApplyGE ()=default
 
virtual const UStruct * GetInstanceDataType () const override
 
virtual EStateTreeRunStatus EnterState (FStateTreeExecutionContext &Context, const FStateTreeTransitionResult &Transition) const override
 
virtual void ExitState (FStateTreeExecutionContext &Context, const FStateTreeTransitionResult &Transition) const override
 

멤버 타입정의 문서화

◆ FInstanceDataType

생성자 & 소멸자 문서화

◆ FTask_ApplyGE()

FTask_ApplyGE::FTask_ApplyGE ( )
default

멤버 함수 문서화

◆ EnterState()

EStateTreeRunStatus FTask_ApplyGE::EnterState ( FStateTreeExecutionContext &  Context,
const FStateTreeTransitionResult &  Transition 
) const
overridevirtual
13{
14 FInstanceDataType& Data = Context.GetInstanceData<FInstanceDataType>(*this);
15
16 if (Data.TargetActor == nullptr || Data.GameplayEffectClass == nullptr)
17 {
18 LOG_ERROR(LogCKAbility, "TargetActor 또는 GameplayEffectClass가 유효하지 않음");
19 return EStateTreeRunStatus::Failed;
20 }
21
22 UAbilitySystemComponent* ASC = UAbilitySystemGlobals::GetAbilitySystemComponentFromActor(Data.TargetActor);
23 if (ASC == nullptr)
24 {
25 LOG_ERROR(LogCKAbility, "TargetActor에 AbilitySystemComponent가 없음");
26 return EStateTreeRunStatus::Failed;
27 }
28
29 FGameplayEffectContextHandle EffectContext = ASC->MakeEffectContext();
30 EffectContext.AddSourceObject(Data.TargetActor);
31
32 FGameplayEffectSpecHandle SpecHandle = ASC->MakeOutgoingSpec(Data.GameplayEffectClass, 1.0f, EffectContext);
33 if (SpecHandle.IsValid() == false)
34 {
35 LOG_ERROR(LogCKAbility, "GameplayEffectSpec 생성 실패");
36 return EStateTreeRunStatus::Failed;
37 }
38
39 if (Data.SetByCallerTag.IsValid())
40 {
41 // SetByCaller로 값을 동적 할당
42 SpecHandle.Data->SetSetByCallerMagnitude(Data.SetByCallerTag, Data.ModifierValue);
43 }
44
45 // GE 적용 및 핸들 보관
46 Data.ActiveHandle = ASC->ApplyGameplayEffectSpecToSelf(*SpecHandle.Data.Get());
47 if (!Data.ActiveHandle.WasSuccessfullyApplied())
48 {
49 LOG_ERROR(LogCKAbility, "GE 적용 실패");
50 return EStateTreeRunStatus::Failed;
51 }
52
53
54 return EStateTreeRunStatus::Running;
55}
#define LOG_ERROR(Category, Format,...)
Definition CK_UE.h:40
FTask_ApplyGE_Data FInstanceDataType
Definition Task_ApplyGE.h:40

◆ ExitState()

void FTask_ApplyGE::ExitState ( FStateTreeExecutionContext &  Context,
const FStateTreeTransitionResult &  Transition 
) const
overridevirtual
58{
59 FInstanceDataType& Data = Context.GetInstanceData<FInstanceDataType>(*this);
60
61 if (Data.ActiveHandle.WasSuccessfullyApplied())
62 {
63 if (UAbilitySystemComponent* ASC = UAbilitySystemGlobals::GetAbilitySystemComponentFromActor(Data.TargetActor))
64 {
65 ASC->RemoveActiveGameplayEffect(Data.ActiveHandle);
66 }
67 }
68
69 Data.ActiveHandle = FActiveGameplayEffectHandle();
70}
FActiveGameplayEffectHandle ActiveHandle
Definition Task_ApplyGE.h:30

◆ GetInstanceDataType()

virtual const UStruct * FTask_ApplyGE::GetInstanceDataType ( ) const
inlineoverridevirtual
41{ return FInstanceDataType::StaticStruct(); }

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