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

#include <Evaluator_BossTargetData.h>

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

Public 타입

using FInstanceDataType = FBossTargetInstanceData
 

Public 멤버 함수

 FEvaluator_BossTargetData ()=default
 
virtual const UStruct * GetInstanceDataType () const override
 
virtual void TreeStart (FStateTreeExecutionContext &Context) const override
 
virtual void Tick (FStateTreeExecutionContext &Context, const float DeltaTime) const override
 

멤버 타입정의 문서화

◆ FInstanceDataType

생성자 & 소멸자 문서화

◆ FEvaluator_BossTargetData()

FEvaluator_BossTargetData::FEvaluator_BossTargetData ( )
default

멤버 함수 문서화

◆ GetInstanceDataType()

virtual const UStruct * FEvaluator_BossTargetData::GetInstanceDataType ( ) const
inlineoverridevirtual
48{ return FInstanceDataType::StaticStruct(); }

◆ Tick()

void FEvaluator_BossTargetData::Tick ( FStateTreeExecutionContext &  Context,
const float  DeltaTime 
) const
overridevirtual
56{
57 FInstanceDataType& Data = Context.GetInstanceData(*this);
58
59 if (Data.CachedPlayerActor.IsValid() == false)
60 {
61 if (UWorld* World = Context.GetWorld())
62 {
63 Data.CachedPlayerActor = UGameplayStatics::GetPlayerCharacter(World, 0);
64 }
65 }
66
67 APawn* OwnerPawn = Data.OwnerPawn.Get();
68 AActor* PlayerActor = Data.CachedPlayerActor.Get();
69 ABossCharacter* BossCharacter = Cast<ABossCharacter>(OwnerPawn);
70
71 if (BossCharacter)
72 {
73 Data.bHasDetectedTarget = BossCharacter->HasEncounteredPlayer();
74 }
75
76 if (OwnerPawn == nullptr || PlayerActor == nullptr)
77 {
78 Data.TargetActor = nullptr;
79 Data.DistanceToTarget = 0.0f;
80 Data.bIsTargetBehind = false;
81 return;
82 }
83
84 const FVector OwnerLocation = OwnerPawn->GetActorLocation();
85 const FVector PlayerLocation = PlayerActor->GetActorLocation();
86 const FVector DirectionToPlayer = (PlayerLocation - OwnerLocation).GetSafeNormal2D();
87 const float ForwardDot = FVector::DotProduct(OwnerPawn->GetActorForwardVector().GetSafeNormal2D(), DirectionToPlayer);
88
89 Data.DistanceToTarget = FVector::Dist(OwnerLocation, PlayerLocation);
90 Data.bIsTargetBehind = ForwardDot <= Data.BehindDotThreshold;
91
92 if (Data.bHasDetectedTarget == false)
93 {
94 if (Data.DistanceToTarget <= Data.DetectRadius)
95 {
96 Data.bHasDetectedTarget = true;
97
98 if (BossCharacter)
99 {
100 BossCharacter->MarkPlayerEncountered();
101 }
102 }
103 }
104
105 if (Data.bHasDetectedTarget)
106 {
107 Data.TargetActor = PlayerActor;
108 }
109 else
110 {
111 Data.TargetActor = nullptr;
112 }
113}
Definition BossCharacter.h:22
FORCEINLINE bool HasEncounteredPlayer() const
Definition BossCharacter.h:35
FORCEINLINE void MarkPlayerEncountered()
Definition BossCharacter.h:40
TWeakObjectPtr< AActor > CachedPlayerActor
Definition Evaluator_BossTargetData.h:38
FBossTargetInstanceData FInstanceDataType
Definition Evaluator_BossTargetData.h:47
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ TreeStart()

void FEvaluator_BossTargetData::TreeStart ( FStateTreeExecutionContext &  Context) const
overridevirtual
14{
15 FInstanceDataType& Data = Context.GetInstanceData(*this);
16
17 Data.OwnerPawn = nullptr;
18 Data.CachedPlayerActor = nullptr;
19 Data.TargetActor = nullptr;
20 Data.DistanceToTarget = 0.0f;
21 Data.bIsTargetBehind = false;
22
23 if (AActor* OwnerActor = Cast<AActor>(Context.GetOwner()))
24 {
25 if (AAIController* Controller = Cast<AAIController>(OwnerActor))
26 {
27 Data.OwnerPawn = Controller->GetPawn();
28 }
29 else if (APawn* Pawn = Cast<APawn>(OwnerActor))
30 {
31 Data.OwnerPawn = Pawn;
32 }
33 }
34
35 if (UWorld* World = Context.GetWorld())
36 {
37 Data.CachedPlayerActor = UGameplayStatics::GetPlayerCharacter(World, 0);
38 }
39
40 if (const ABossCharacter* BossCharacter = Cast<ABossCharacter>(Data.OwnerPawn.Get()))
41 {
42 Data.bHasDetectedTarget = BossCharacter->HasEncounteredPlayer();
43 }
44 else
45 {
46 Data.bHasDetectedTarget = false;
47 }
48
49 if (Data.bHasDetectedTarget && Data.CachedPlayerActor.IsValid())
50 {
51 Data.TargetActor = Data.CachedPlayerActor.Get();
52 }
53}
TWeakObjectPtr< APawn > OwnerPawn
Definition Evaluator_BossTargetData.h:35

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