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

#include <Condition_CanActivateAbilityByTag.h>

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

Public 타입

using FInstanceDataType = FCanActivateAbilityByTagInstanceData
 

Public 멤버 함수

 FCondition_CanActivateAbilityByTag ()=default
 
virtual const UStruct * GetInstanceDataType () const override
 
virtual bool TestCondition (FStateTreeExecutionContext &Context) const override
 

멤버 타입정의 문서화

◆ FInstanceDataType

생성자 & 소멸자 문서화

◆ FCondition_CanActivateAbilityByTag()

FCondition_CanActivateAbilityByTag::FCondition_CanActivateAbilityByTag ( )
default

멤버 함수 문서화

◆ GetInstanceDataType()

virtual const UStruct * FCondition_CanActivateAbilityByTag::GetInstanceDataType ( ) const
inlineoverridevirtual
32{ return FInstanceDataType::StaticStruct(); }

◆ TestCondition()

bool FCondition_CanActivateAbilityByTag::TestCondition ( FStateTreeExecutionContext &  Context) const
overridevirtual
12{
13 const FInstanceDataType& Data = Context.GetInstanceData<FInstanceDataType>(*this);
14
15 if (IsValid(Data.TargetActor) == false || Data.AbilityTag.IsValid() == false)
16 {
17 return false;
18 }
19
20 UAbilitySystemComponent* AbilitySystemComponent = UAbilitySystemGlobals::GetAbilitySystemComponentFromActor(Data.TargetActor);
21 if (IsValid(AbilitySystemComponent) == false || AbilitySystemComponent->AbilityActorInfo.IsValid() == false)
22 {
23 return false;
24 }
25
26 FGameplayTagContainer AbilityTags;
27 AbilityTags.AddTag(Data.AbilityTag);
28
29 TArray<FGameplayAbilitySpec*> MatchingAbilities;
30 AbilitySystemComponent->GetActivatableGameplayAbilitySpecsByAllMatchingTags(AbilityTags, MatchingAbilities, false);
31
32 bool bCanActivate = false;
33
34 for (FGameplayAbilitySpec* AbilitySpec : MatchingAbilities)
35 {
36 if (AbilitySpec == nullptr)
37 {
38 continue;
39 }
40
41 UGameplayAbility* Ability = AbilitySpec->GetPrimaryInstance();
42 if (IsValid(Ability) == false)
43 {
44 Ability = AbilitySpec->Ability;
45 }
46
47 if (IsValid(Ability) == false)
48 {
49 continue;
50 }
51
52 if (Ability->CanActivateAbility(AbilitySpec->Handle, AbilitySystemComponent->AbilityActorInfo.Get()))
53 {
54 bCanActivate = true;
55 break;
56 }
57 }
58
59 return Data.bInvert ? bCanActivate == false : bCanActivate;
60}
FCanActivateAbilityByTagInstanceData FInstanceDataType
Definition Condition_CanActivateAbilityByTag.h:31

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