UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AISense.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"
7#include "UObject/Object.h"
10#include "AISense.generated.h"
11
12class APawn;
15class UAISenseEvent;
16
18
19UCLASS(ClassGroup = AI, abstract, config = Engine, MinimalAPI)
21{
23
24 static AIMODULE_API const float SuspendNextUpdate;
25
26protected:
27 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "AI Perception", config)
29
32 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "AI Perception", config)
33 uint32 bWantsNewPawnNotification : 1;
34
36 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "AI Perception", config)
37 uint32 bAutoRegisterAllPawnsAsSources : 1;
38
41 uint32 bNeedsForgettingNotification : 1;
42
44 UPROPERTY()
45 TObjectPtr<UAIPerceptionSystem> PerceptionSystemInstance;
46
48 float TimeUntilNextUpdate;
49
50 FAISenseID SenseID;
51
55
57 FOnPerceptionListenerUpdateDelegate OnListenerUpdateDelegate;
58
60 FOnPerceptionListenerUpdateDelegate OnListenerRemovedDelegate;
61
62public:
63
64 AIMODULE_API virtual UWorld* GetWorld() const override;
65
68
69 static FAISenseID GetSenseID(const TSubclassOf<UAISense> SenseClass) { return SenseClass ? ((const UAISense*)SenseClass->GetDefaultObject())->SenseID : FAISenseID::InvalidID(); }
70 template<typename TSense>
72 {
73 return GetDefault<TSense>()->GetSenseID();
74 }
75 inline FAISenseID GetSenseID() const { return SenseID; }
76
78
79 AIMODULE_API virtual void PostInitProperties() override;
80
84 bool ProgressTime(float DeltaSeconds)
85 {
86 TimeUntilNextUpdate -= DeltaSeconds;
87 return TimeUntilNextUpdate <= 0.f;
88 }
89
90 void Tick()
91 {
92 if (TimeUntilNextUpdate <= 0.f)
93 {
94 TimeUntilNextUpdate = Update();
95 }
96 }
97
98 //virtual void RegisterSources(TArray<AActor&> SourceActors) {}
101
102 AIMODULE_API virtual void RegisterWrappedEvent(UAISenseEvent& PerceptionEvent);
103 AIMODULE_API virtual FAISenseID UpdateSenseID();
104
105 bool NeedsNotificationOnForgetting() const { return bNeedsForgettingNotification; }
107 virtual void OnListenerForgetsAll(const FPerceptionListener& Listener) {}
108
109 inline void OnNewListener(const FPerceptionListener& NewListener) { OnNewListenerDelegate.ExecuteIfBound(NewListener); }
110 inline void OnListenerUpdate(const FPerceptionListener& UpdatedListener) { OnListenerUpdateDelegate.ExecuteIfBound(UpdatedListener); }
111 inline void OnListenerRemoved(const FPerceptionListener& RemovedListener) { OnListenerRemovedDelegate.ExecuteIfBound(RemovedListener); }
113
114 bool WantsNewPawnNotification() const { return bWantsNewPawnNotification; }
115 bool ShouldAutoRegisterAllPawnsAsSources() const { return bAutoRegisterAllPawnsAsSources; }
116
117#if WITH_GAMEPLAY_DEBUGGER_MENU
119#endif // WITH_GAMEPLAY_DEBUGGER_MENU
120
121protected:
125 AIMODULE_API virtual void OnNewPawn(APawn& NewPawn);
126
128 virtual float Update() { return FLT_MAX; }
129
131 inline void RequestImmediateUpdate() { TimeUntilNextUpdate = 0.f; }
132
134 inline void RequestUpdateInSeconds(float UpdateInSeconds) { TimeUntilNextUpdate = UpdateInSeconds; }
135
136 inline UAIPerceptionSystem* GetPerceptionSystem() { return PerceptionSystemInstance; }
137
138 AIMODULE_API void SetSenseID(FAISenseID Index);
139
143
145 AIMODULE_API void ForceSenseID(FAISenseID SenseID);
146};
EAISenseNotifyType
Definition AIPerceptionTypes.h:28
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:48
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition Engine.Build.cs:7
Definition GameplayDebuggerCategory.h:49
Definition SubclassOf.h:30
Definition AIPerceptionSystem.h:31
Definition AISenseEvent.h:14
virtual FAISenseID GetSenseID() const PURE_VIRTUAL(UAISenseEvent
Definition AISenseEvent.h:18
Definition AISense.h:21
virtual void RegisterSource(AActor &SourceActors)
Definition AISense.h:99
virtual float Update()
Definition AISense.h:128
bool ShouldAutoRegisterAllPawnsAsSources() const
Definition AISense.h:115
bool ProgressTime(float DeltaSeconds)
Definition AISense.h:84
bool NeedsNotificationOnForgetting() const
Definition AISense.h:105
bool WantsNewPawnNotification() const
Definition AISense.h:114
void OnListenerRemoved(const FPerceptionListener &RemovedListener)
Definition AISense.h:111
void RequestUpdateInSeconds(float UpdateInSeconds)
Definition AISense.h:134
void RequestImmediateUpdate()
Definition AISense.h:131
virtual void OnListenerForgetsActor(const FPerceptionListener &Listener, AActor &ActorToForget)
Definition AISense.h:106
virtual void OnListenerForgetsAll(const FPerceptionListener &Listener)
Definition AISense.h:107
static FAISenseID GetSenseID()
Definition AISense.h:71
bool WantsUpdateOnlyOnPerceptionValueChange() const
Definition AISense.h:77
friend UAIPerceptionSystem
Definition AISense.h:122
virtual void OnListenerConfigUpdated(const FPerceptionListener &UpdatedListener)
Definition AISense.h:112
void Tick()
Definition AISense.h:90
FAISenseID GetSenseID() const
Definition AISense.h:75
void OnNewListener(const FPerceptionListener &NewListener)
Definition AISense.h:109
UAIPerceptionSystem * GetPerceptionSystem()
Definition AISense.h:136
void OnListenerUpdate(const FPerceptionListener &UpdatedListener)
Definition AISense.h:110
virtual void UnregisterSource(AActor &SourceActors)
Definition AISense.h:100
Definition Object.h:95
virtual COREUOBJECT_API void PostInitProperties()
Definition UObjectGlobals.cpp:3961
Definition World.h:918
U16 Index
Definition radfft.cpp:71
static FAINamedID< FAISenseCounter > InvalidID()
Definition AITypes.h:214
Definition AIPerceptionTypes.h:247
Definition ObjectPtr.h:488