UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AISense_Sight.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
8#include "WorldCollision.h"
10#include "Perception/AISense.h"
11#include "AISense_Sight.generated.h"
12
14class UAISense_Sight;
16
26
27USTRUCT()
29{
31
33
34 float Age;
35 ESightPerceptionEventName::Type EventType;
36
37 UPROPERTY()
38 TObjectPtr<AActor> SeenActor;
39
40 UPROPERTY()
41 TObjectPtr<AActor> Observer;
42
43 FAISightEvent() : SeenActor(nullptr), Observer(nullptr) {}
44
49};
50
74
76{
79
80 float Score;
82
84
86 mutable int32 UserData;
87
88 union
89 {
99 struct
100 {
104
110 struct
111 {
116 };
117
119 : ObserverId(ListenerId), TargetId(Target), Score(0), Importance(0), LastSeenLocation(FAISystem::InvalidLocation), UserData(0)
120 {
121 FrameInfo.bLastResult = false;
122 FrameInfo.LastProcessedFrameNumber = GFrameCounter;
123 }
124
128 float GetAge() const
129 {
130 return (float)(GFrameCounter - FrameInfo.LastProcessedFrameNumber);
131 }
132
137 {
138 Score = GetAge() + Importance;
139 }
140
142 {
143 FrameInfo.LastProcessedFrameNumber = GFrameCounter;
144 }
145
151
152 bool GetLastResult() const
153 {
154 return FrameInfo.bLastResult;
155 }
156
157 void SetLastResult(const bool bValue)
158 {
159 FrameInfo.bLastResult = bValue;
160 }
161
166 {
167 check((TraceHandle._Data.Index & (static_cast<uint32>(1) << 31)) == 0);
168 TraceInfo.Index = TraceHandle._Data.Index;
169 TraceInfo.FrameNumber = TraceHandle._Data.FrameNumber;
170 }
171
173 {
174 public:
177
178 bool operator()(const FAISightQuery& A, const FAISightQuery& B) const
179 {
180 return A.Score > B.Score;
181 }
182 };
183};
184
200
202
203UCLASS(ClassGroup=AI, config=Game, MinimalAPI)
205{
207
208public:
222
224 {
225 Visible,
227 Pending
228 };
229
233
237 int32 NextOutOfRangeIndex = 0;
238 bool bSightQueriesOutOfRangeDirty = true;
242
243protected:
244 UPROPERTY(EditDefaultsOnly, Category = "AI Perception", config)
245 int32 MaxTracesPerTick;
246
248 UPROPERTY(EditDefaultsOnly, Category = "AI Perception", config)
249 int32 MaxAsyncTracesPerTick;
250
251 UPROPERTY(EditDefaultsOnly, Category = "AI Perception", config)
252 int32 MinQueriesPerTimeSliceCheck;
253
254 UPROPERTY(EditDefaultsOnly, Category = "AI Perception", config)
255 double MaxTimeSlicePerTick;
256
257 UPROPERTY(EditDefaultsOnly, Category = "AI Perception", config)
258 float HighImportanceQueryDistanceThreshold;
259
260 float HighImportanceDistanceSquare;
261
262 UPROPERTY(EditDefaultsOnly, Category = "AI Perception", config)
263 float MaxQueryImportance;
264
265 UPROPERTY(EditDefaultsOnly, Category = "AI Perception", config)
266 float SightLimitQueryImportance;
267
272 UPROPERTY(EditDefaultsOnly, Category = "AI Perception", config)
273 float PendingQueriesBudgetReductionRatio;
274
276 UPROPERTY(EditDefaultsOnly, Category = "AI Perception", config)
277 bool bUseAsynchronousTraceForDefaultSightQueries;
278
279 ECollisionChannel DefaultSightCollisionChannel;
280
281 FOnPendingVisibilityQueryProcessedDelegate OnPendingCanBeSeenQueryProcessedDelegate;
282 FTraceDelegate OnPendingTraceQueryProcessedDelegate;
283
285
286public:
287
288 AIMODULE_API virtual void PostInitProperties() override;
289
290 AIMODULE_API void RegisterEvent(const FAISightEvent& Event);
291
292 AIMODULE_API virtual void RegisterSource(AActor& SourceActors) override;
293 AIMODULE_API virtual void UnregisterSource(AActor& SourceActor) override;
294
295 AIMODULE_API virtual void OnListenerForgetsActor(const FPerceptionListener& Listener, AActor& ActorToForget) override;
296 AIMODULE_API virtual void OnListenerForgetsAll(const FPerceptionListener& Listener) override;
297
298#if WITH_GAMEPLAY_DEBUGGER_MENU
300#endif // WITH_GAMEPLAY_DEBUGGER_MENU
301
302protected:
303 AIMODULE_API virtual float Update() override;
304
306 AIMODULE_API virtual bool ShouldAutomaticallySeeTarget(const FDigestedSightProperties& PropDigest, FAISightQuery* SightQuery, FPerceptionListener& Listener, AActor* TargetActor, float& OutStimulusStrength) const;
307
308 UE_DEPRECATED(5.3, "Please use the UpdateQueryVisibilityStatus version which takes an Actor& instead.")
309 AIMODULE_API void UpdateQueryVisibilityStatus(FAISightQuery& SightQuery, FPerceptionListener& Listener, const bool bIsVisible, const FVector& SeenLocation, const float StimulusStrength, AActor* TargetActor, const FVector& TargetLocation) const;
310 AIMODULE_API void UpdateQueryVisibilityStatus(FAISightQuery& SightQuery, FPerceptionListener& Listener, const bool bIsVisible, const FVector& SeenLocation, const float StimulusStrength, AActor& TargetActor, const FVector& TargetLocation) const;
311
312 AIMODULE_API void OnPendingCanBeSeenQueryProcessed(const FAISightQueryID& QueryID, const bool bIsVisible, const float StimulusStrength, const FVector& SeenLocation, const TOptional<int32>& UserData);
313 AIMODULE_API void OnPendingTraceQueryProcessed(const FTraceHandle& TraceHandle, FTraceDatum& TraceDatum);
314 AIMODULE_API void OnPendingQueryProcessed(const int32 SightQueryIndex, const bool bIsVisible, const float StimulusStrength, const FVector& SeenLocation, const TOptional<int32>& UserData, const TOptional<AActor*> InTargetActor = NullOpt);
315
316 AIMODULE_API void OnNewListenerImpl(const FPerceptionListener& NewListener);
317 AIMODULE_API void OnListenerUpdateImpl(const FPerceptionListener& UpdatedListener);
318 AIMODULE_API void OnListenerRemovedImpl(const FPerceptionListener& RemovedListener);
319 AIMODULE_API virtual void OnListenerConfigUpdated(const FPerceptionListener& UpdatedListener) override;
320
321 AIMODULE_API void GenerateQueriesForListener(const FPerceptionListener& Listener, const FDigestedSightProperties& PropertyDigest, const TFunction<void(FAISightQuery&)>& OnAddedFunc = nullptr);
322
323 AIMODULE_API void RemoveAllQueriesByListener(const FPerceptionListener& Listener, const TFunction<void(const FAISightQuery&)>& OnRemoveFunc = nullptr);
324 AIMODULE_API void RemoveAllQueriesToTarget(const FAISightTarget::FTargetId& TargetId, const TFunction<void(const FAISightQuery&)>& OnRemoveFunc = nullptr);
326 void RemoveAllQueriesToTarget_Internal(const FAISightTarget::FTargetId& TargetId, const TFunction<void(const FAISightQuery&)>& OnRemoveFunc = nullptr);
327
329 AIMODULE_API bool RegisterTarget(AActor& TargetActor, const TFunction<void(FAISightQuery&)>& OnAddedFunc = nullptr);
330
331 AIMODULE_API float CalcQueryImportance(const FPerceptionListener& Listener, const FVector& TargetLocation, const float SightRadiusSq) const;
332 AIMODULE_API bool RegisterNewQuery(const FPerceptionListener& Listener, const IGenericTeamAgentInterface* ListenersTeamAgent, const AActor& TargetActor, const FAISightTarget::FTargetId& TargetId, const FVector& TargetLocation, const FDigestedSightProperties& PropDigest, const TFunction<void(FAISightQuery&)>& OnAddedFunc);
333
340};
#define NULL
Definition oodle2base.h:134
#define check(expr)
Definition AssertionMacros.h:314
uint64 GFrameCounter
Definition CoreGlobals.cpp:418
#define UE_DEPRECATED_FORGAME
Definition CoreMiscDefines.h:377
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
constexpr FNullOpt NullOpt
Definition Optional.h:15
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
void Sort(T *First, const int32 Num, const PREDICATE_CLASS &Predicate)
Definition Sorting.h:78
#define DECLARE_DELEGATE_FiveParams(DelegateName, Param1Type, Param2Type, Param3Type, Param4Type, Param5Type)
Definition DelegateCombinations.h:84
ECollisionChannel
Definition EngineTypes.h:1088
#define UE_MT_DECLARE_TS_RW_ACCESS_DETECTOR(AccessDetector)
Definition MTTransactionallySafeAccessDetector.h:285
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
FVector GetActorLocation() const
Definition Actor.h:2495
Definition AISense_Sight.h:173
FSortPredicate()
Definition AISense_Sight.h:175
bool operator()(const FAISightQuery &A, const FAISightQuery &B) const
Definition AISense_Sight.h:178
Definition GameplayDebuggerCategory.h:49
Definition AISightTargetInterface.h:32
Definition GenericTeamAgentInterface.h:82
Definition Array.h:670
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition AIPerceptionSystem.h:31
Definition AISenseConfig_Sight.h:19
Definition AISense_Sight.h:205
TArray< FAISightQuery > SightQueriesInRange
Definition AISense_Sight.h:240
FQueriesOperationPostProcess
Definition AISense_Sight.h:336
@ DontSort
Definition AISense_Sight.h:337
FTargetsContainer ObservedTargets
Definition AISense_Sight.h:231
TArray< FAISightQuery > SightQueriesPending
Definition AISense_Sight.h:241
TArray< FAISightQuery > SightQueriesOutOfRange
Definition AISense_Sight.h:239
EVisibilityResult
Definition AISense_Sight.h:224
TMap< FPerceptionListenerID, FDigestedSightProperties > DigestedProperties
Definition AISense_Sight.h:232
TMap< FAISightTarget::FTargetId, FAISightTarget > FTargetsContainer
Definition AISense_Sight.h:230
Definition AISense.h:21
Definition World.h:918
Definition AISense_Sight.h:18
Type
Definition AISense_Sight.h:20
@ GainedSight
Definition AISense_Sight.h:22
@ Undefined
Definition AISense_Sight.h:21
@ LostSight
Definition AISense_Sight.h:23
Definition AIController.h:459
constexpr FVector InvalidLocation
Definition AITypes.h:30
static FAIGenericID< FPerceptionListenerCounter > InvalidID()
Definition AITypes.h:270
Definition AISense_Sight.h:29
FAISightEvent(AActor *InSeenActor, AActor *InObserver, ESightPerceptionEventName::Type InEventType)
Definition AISense_Sight.h:45
Definition AISense_Sight.h:186
FAISightQueryID(const FAISightQuery &Query)
Definition AISense_Sight.h:195
FAISightQueryID(FPerceptionListenerID ListenerId=FPerceptionListenerID::InvalidID(), FAISightTarget::FTargetId Target=FAISightTarget::InvalidTargetId)
Definition AISense_Sight.h:190
FAISightTarget::FTargetId TargetId
Definition AISense_Sight.h:188
FPerceptionListenerID ObserverId
Definition AISense_Sight.h:187
Definition AISense_Sight.h:76
void SetLastResult(const bool bValue)
Definition AISense_Sight.h:157
struct FAISightQuery::@18::@21 TraceInfo
void OnProcessed()
Definition AISense_Sight.h:141
uint64 LastProcessedFrameNumber
Definition AISense_Sight.h:102
void ForgetPreviousResult()
Definition AISense_Sight.h:146
FPerceptionListenerID ObserverId
Definition AISense_Sight.h:77
uint32 bLastResult
Definition AISense_Sight.h:112
float GetAge() const
Definition AISense_Sight.h:128
FVector LastSeenLocation
Definition AISense_Sight.h:83
FAISightQuery(FPerceptionListenerID ListenerId=FPerceptionListenerID::InvalidID(), FAISightTarget::FTargetId Target=FAISightTarget::InvalidTargetId)
Definition AISense_Sight.h:118
float Score
Definition AISense_Sight.h:80
FAISightTarget::FTargetId TargetId
Definition AISense_Sight.h:78
void SetTraceInfo(const FTraceHandle &TraceHandle)
Definition AISense_Sight.h:165
int32 UserData
Definition AISense_Sight.h:86
uint32 Index
Definition AISense_Sight.h:113
void RecalcScore()
Definition AISense_Sight.h:136
uint32 FrameNumber
Definition AISense_Sight.h:114
bool GetLastResult() const
Definition AISense_Sight.h:152
float Importance
Definition AISense_Sight.h:81
struct FAISightQuery::@18::@20 FrameInfo
uint64 bLastResult
Definition AISense_Sight.h:101
Definition AISense_Sight.h:52
uint32 FTargetId
Definition AISense_Sight.h:53
const AActor * GetTargetActor() const
Definition AISense_Sight.h:72
TWeakInterfacePtr< IAISightTargetInterface > WeakSightTargetInterface
Definition AISense_Sight.h:57
FVector GetLocationSimple() const
Definition AISense_Sight.h:66
static AIMODULE_API const FTargetId InvalidTargetId
Definition AISense_Sight.h:54
IAISightTargetInterface * SightTargetInterface
Definition AISense_Sight.h:62
FGenericTeamId TeamId
Definition AISense_Sight.h:58
TWeakObjectPtr< AActor > Target
Definition AISense_Sight.h:56
FTargetId TargetId
Definition AISense_Sight.h:59
Definition GenericTeamAgentInterface.h:24
Definition AIPerceptionTypes.h:247
Definition WorldCollision.h:171
Definition WorldCollision.h:29
Definition ObjectPtr.h:488
Definition Optional.h:131
Definition WeakInterfacePtr.h:18
Definition WeakObjectPtrTemplates.h:25
FORCEINLINE T * Get(bool bEvenIfPendingKill) const
Definition WeakObjectPtrTemplates.h:132
Definition AISense_Sight.h:210
float PeripheralVisionAngleCos
Definition AISense_Sight.h:211
float NearClippingRadiusSq
Definition AISense_Sight.h:216
float AutoSuccessRangeSqFromLastSeenLocation
Definition AISense_Sight.h:213
float PointOfViewBackwardOffset
Definition AISense_Sight.h:215
uint8 AffiliationFlags
Definition AISense_Sight.h:217
float SightRadiusSq
Definition AISense_Sight.h:212
float LoseSightRadiusSq
Definition AISense_Sight.h:214
static CORE_API const TVector< double > ZeroVector
Definition Vector.h:79