Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
TargetableQuery.h
이 파일의 문서화 페이지로 가기
1#pragma once
2#include "CK_UE.h"
4
5
7{
8public:
9 TargetableQueryContext(UWorld* InWorld, const TArray<ITargetableInterface*>& Targetables)
10 {
11 InitialTargets = Targetables;
12 Targets = Targetables;
13 World = InWorld;
14 }
15
16public:
21 TargetableQueryContext& FilterByClassType(UClass* ClassType);
22 TargetableQueryContext& GatherCandidates(float MaxLockOnDistance);
23 TargetableQueryContext& FilterByArrayRange(TArray<ITargetableInterface*> Array, int32 StartIdx, int32 EndIdx);
24 TargetableQueryContext& FindDistanceNearestEnemy(const FVector& Origin, float MaxRange);
25 TargetableQueryContext& FindDirectionNearestEnemy(const FVector& Origin, const FVector& Direction, float MaxRange);
26
27public:
28 TArray<ITargetableInterface*> GetTargets(const int32 StartIdx, const int32 EndIdx)
29 {
30 return FilterByArrayRange(Targets, StartIdx, EndIdx).GetTargets();
31 }
32
33 TArray<ITargetableInterface*> GetTargets(const int32 Count)
34 {
35 return GetTargets(0, Count);
36 }
37
38 TArray<ITargetableInterface*> GetTargets() const
39 {
40 return Targets;
41 }
42
43 ITargetableInterface* GetTarget(const int32 Index = 0)
44 {
45 return Targets.IsEmpty() ? nullptr : Targets.IsValidIndex(Index) ? Targets[Index] : nullptr;
46 }
47
48 TArray<ITargetableInterface*> GetInitialTargets() const
49 {
50 return InitialTargets;
51 }
52
53 TArray<ITargetableInterface*> GetCachedTargets(const int32 StartIdx, const int32 EndIdx)
54 {
55 return FilterByArrayRange(CachedTargets, StartIdx, EndIdx).GetTargets();;
56 }
57
58 TArray<ITargetableInterface*> GetCachedTargets()
59 {
60 return CachedTargets;
61 }
62
63 ITargetableInterface* GetCachedTarget(const int32 Index = 0)
64 {
65 return CachedTargets.IsEmpty() ? nullptr : CachedTargets.IsValidIndex(Index) ? CachedTargets[Index] : nullptr;
66 }
67
68 bool IsCached() const
69 {
70 return !CachedTargets.IsEmpty();
71 }
72
73public:
74 template <typename TActorClass>
75 TargetableQueryContext& FilterByClassType(TSubclassOf<TActorClass> ClassType)
76 {
77 return FilterByClassType(ClassType.Get());
78 }
79
80private:
81 bool CheckLineOfSight(ITargetableInterface* Target, TArray<FHitResult> HitResults) const;
82
83private:
84 TArray<ITargetableInterface*> InitialTargets;
85 TArray<ITargetableInterface*> CachedTargets;
86 TArray<ITargetableInterface*> Targets;
87 TObjectPtr<UWorld> World;
88};
89
90
92{
93public:
94 TargetableQuery(UWorld* InWorld, const TArray<ITargetableInterface*>& InTargets)
95 {
96 Targets = InTargets;
97 World = InWorld;
98 }
99
100public:
105
106 TArray<ITargetableInterface*> GetTargets() const
107 {
109 return Context.GetTargets();
110 }
111
112private:
113 TArray<ITargetableInterface*> Targets;
114 TObjectPtr<UWorld> World;
115
116private:
118};
Definition TargetableInterface.h:20
Definition StageManagementSubsystem.h:147
Definition TargetableQuery.h:7
TargetableQueryContext & GatherCandidates(float MaxLockOnDistance)
Definition TargetableQuery.cpp:8
TargetableQueryContext & FilterByArrayRange(TArray< ITargetableInterface * > Array, int32 StartIdx, int32 EndIdx)
Definition TargetableQuery.cpp:195
TargetableQueryContext & FindDistanceNearestEnemy(const FVector &Origin, float MaxRange)
Definition TargetableQuery.cpp:161
TArray< ITargetableInterface * > GetTargets(const int32 StartIdx, const int32 EndIdx)
Definition TargetableQuery.h:28
TArray< ITargetableInterface * > Targets
Definition TargetableQuery.h:86
TArray< ITargetableInterface * > InitialTargets
Definition TargetableQuery.h:84
TargetableQueryContext & FindDirectionNearestEnemy(const FVector &Origin, const FVector &Direction, float MaxRange)
Definition TargetableQuery.cpp:111
TargetableQueryContext & CacheResult()
Definition TargetableQuery.cpp:224
TObjectPtr< UWorld > World
Definition TargetableQuery.h:87
TArray< ITargetableInterface * > GetCachedTargets()
Definition TargetableQuery.h:58
TargetableQueryContext & FilterByLineOfSight()
Definition TargetableQuery.cpp:231
TArray< ITargetableInterface * > CachedTargets
Definition TargetableQuery.h:85
TargetableQueryContext & PickClosestFromCenter()
Definition TargetableQuery.cpp:50
TargetableQueryContext & FilterByClassType(UClass *ClassType)
Definition TargetableQuery.cpp:288
TargetableQueryContext & ResetCachedResult()
Definition TargetableQuery.cpp:216
ITargetableInterface * GetTarget(const int32 Index=0)
Definition TargetableQuery.h:43
bool IsCached() const
Definition TargetableQuery.h:68
TargetableQueryContext & FilterByClassType(TSubclassOf< TActorClass > ClassType)
Definition TargetableQuery.h:75
TArray< ITargetableInterface * > GetCachedTargets(const int32 StartIdx, const int32 EndIdx)
Definition TargetableQuery.h:53
ITargetableInterface * GetCachedTarget(const int32 Index=0)
Definition TargetableQuery.h:63
TArray< ITargetableInterface * > GetTargets() const
Definition TargetableQuery.h:38
TArray< ITargetableInterface * > GetTargets(const int32 Count)
Definition TargetableQuery.h:33
bool CheckLineOfSight(ITargetableInterface *Target, TArray< FHitResult > HitResults) const
Definition TargetableQuery.cpp:311
TargetableQueryContext(UWorld *InWorld, const TArray< ITargetableInterface * > &Targetables)
Definition TargetableQuery.h:9
TArray< ITargetableInterface * > GetInitialTargets() const
Definition TargetableQuery.h:48
Definition TargetableQuery.h:92
TArray< ITargetableInterface * > Targets
Definition TargetableQuery.h:113
TObjectPtr< UWorld > World
Definition TargetableQuery.h:114
TargetableQueryContext GetContext() const
Definition TargetableQuery.h:101
TargetableQuery(UWorld *InWorld, const TArray< ITargetableInterface * > &InTargets)
Definition TargetableQuery.h:94
TArray< ITargetableInterface * > GetTargets() const
Definition TargetableQuery.h:106