UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AISystem.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 "Engine/World.h"
9#include "AI/AISystemBase.h"
10#include "Math/RandomStream.h"
11#include "AISystem.generated.h"
12
16class UAISystem;
18class UBlackboardComponent;
19class UBlackboardData;
22
23#define GET_AI_CONFIG_VAR(a) (GetDefault<UAISystem>()->a)
24
25UCLASS(config=Engine, defaultconfig, MinimalAPI)
27{
29
30protected:
32 UPROPERTY(globalconfig, EditAnywhere, Category = "AISystem", meta = (MetaClass = "/Script/AIModule.AIPerceptionSystem", DisplayName = "Perception System Class"))
33 FSoftClassPath PerceptionSystemClassName;
34
36 UPROPERTY(globalconfig, EditAnywhere, Category = "AISystem", meta = (MetaClass = "/Script/AIModule.AIHotSpotManager", DisplayName = "AIHotSpotManager Class"))
37 FSoftClassPath HotSpotManagerClassName;
38
40 UPROPERTY(globalconfig, EditAnywhere, Category = "AISystem", meta = (MetaClass = "/Script/AIModule.EnvQueryManager", DisplayName = "EnvQueryManager Class"))
41 FSoftClassPath EnvQueryManagerClassName;
42public:
45 UPROPERTY(globalconfig, EditDefaultsOnly, Category = "Movement")
46 float AcceptanceRadius;
47
50 UPROPERTY(globalconfig, EditDefaultsOnly, Category = "Movement")
51 float PathfollowingRegularPathPointAcceptanceRadius;
52
55 UPROPERTY(globalconfig, EditDefaultsOnly, Category = "Movement")
56 float PathfollowingNavLinkAcceptanceRadius;
57
59 UPROPERTY(globalconfig, EditDefaultsOnly, Category = "Movement")
60 bool bFinishMoveOnGoalOverlap;
61
63 UPROPERTY(globalconfig, EditDefaultsOnly, Category = "Movement")
64 bool bAcceptPartialPaths;
65
67 UPROPERTY(globalconfig, EditDefaultsOnly, Category = "Movement")
68 bool bAllowStrafing;
69
73 UPROPERTY(globalconfig, EditDefaultsOnly, Category = "EQS")
74 bool bAllowControllersAsEQSQuerier;
75
77 UPROPERTY(globalconfig, EditDefaultsOnly, Category = "AISystem")
78 bool bEnableDebuggerPlugin;
79
83 UPROPERTY(globalconfig, EditDefaultsOnly, Category = "AISystem")
84 bool bForgetStaleActors;
85
88 UPROPERTY(globalconfig, EditDefaultsOnly, Category = "Blackboard")
89 bool bAddBlackboardSelfKey = true;
90
91 UPROPERTY(globalconfig, EditDefaultsOnly, Category = "Behavior Tree")
92 bool bClearBBEntryOnBTEQSFail = true;
93
95 UPROPERTY(globalconfig, EditDefaultsOnly, Category = "Behavior Tree")
96 bool bBlackboardKeyDecoratorAllowsNoneAsValue = false;
97
99 UPROPERTY(globalconfig, EditDefaultsOnly, Category = "Behavior Tree")
100 TSoftObjectPtr<UBlackboardData> DefaultBlackboard;
101
103 UPROPERTY(globalconfig, EditDefaultsOnly, Category = "PerceptionSystem")
104 TEnumAsByte<ECollisionChannel> DefaultSightCollisionChannel;
105
109 TObjectPtr<UBehaviorTreeManager> BehaviorTreeManager;
110
113 TObjectPtr<UEnvQueryManager> EnvironmentQueryManager;
114
117
120
123
126
128
130 FBlackboardDataToComponentsMap BlackboardDataToComponentsMap;
131
132 FDelegateHandle ActorSpawnedDelegateHandle;
133
134 FDelegateHandle PawnBeginPlayDelegateHandle;
135
138
139public:
141
143
145
146 // UAISystemBase begin
147 AIMODULE_API virtual void InitializeActorsForPlay(bool bTimeGotReset) override;
149 AIMODULE_API virtual void CleanupWorld(bool bSessionEnded = true, bool bCleanupResources = true) override;
150 UE_DEPRECATED(5.1, "NewWorld was unused and not always calculated correctly and we expect it is not needed; let us know on UDN if it is necessary.")
152 AIMODULE_API virtual void StartPlay() override;
153 // UAISystemBase end
154
156 inline UBehaviorTreeManager* GetBehaviorTreeManager() { return BehaviorTreeManager; }
158 inline const UBehaviorTreeManager* GetBehaviorTreeManager() const { return BehaviorTreeManager; }
159
161 inline UEnvQueryManager* GetEnvironmentQueryManager() { return EnvironmentQueryManager; }
163 inline const UEnvQueryManager* GetEnvironmentQueryManager() const { return EnvironmentQueryManager; }
164
165 inline UAIPerceptionSystem* GetPerceptionSystem() { return PerceptionSystem; }
166 inline const UAIPerceptionSystem* GetPerceptionSystem() const { return PerceptionSystem; }
167
168 inline UAIHotSpotManager* GetHotSpotManager() { return HotSpotManager; }
169 inline const UAIHotSpotManager* GetHotSpotManager() const { return HotSpotManager; }
170
171 inline UNavLocalGridManager* GetNavLocalGridManager() { return NavLocalGrids; }
172 inline const UNavLocalGridManager* GetNavLocalGridManager() const { return NavLocalGrids; }
173
175 {
176 return World != nullptr ? Cast<UAISystem>(World->GetAISystem()) : NULL;
177 }
178
180 {
181 return Cast<UAISystem>(World.GetAISystem());
182 }
183
184 inline UWorld* GetOuterWorld() const { return Cast<UWorld>(GetOuter()); }
185
186 virtual UWorld* GetWorld() const override { return GetOuterWorld(); }
187
189
191
192 //----------------------------------------------------------------------//
193 // cheats
194 //----------------------------------------------------------------------//
196 AIMODULE_API virtual void AIIgnorePlayers();
197
199 AIMODULE_API virtual void AILoggingVerbose();
200
202 AIMODULE_API void RunEQS(const FString& QueryName, UObject* Target);
203
209 {
210 public:
211 FBlackboardDataToComponentsIterator(FBlackboardDataToComponentsMap& BlackboardDataToComponentsMap, class UBlackboardData* BlackboardAsset);
212
214 {
215 ++GetCurrentIteratorRef();
216 TryMoveIteratorToParentBlackboard();
217 return *this;
218 }
220 {
222 ++GetCurrentIteratorRef();
223 TryMoveIteratorToParentBlackboard();
224 return Tmp;
225 }
226
227 inline explicit operator bool() const { return CurrentIteratorIndex < Iterators.Num() && (bool)GetCurrentIteratorRef(); }
228 inline bool operator !() const { return !(bool)*this; }
229
230 inline UBlackboardData* Key() const { return GetCurrentIteratorRef().Key().Get(); }
231 inline UBlackboardComponent* Value() const { return GetCurrentIteratorRef().Value().Get(); }
232
233 private:
234 inline const FBlackboardDataToComponentsMap::TConstKeyIterator& GetCurrentIteratorRef() const { return Iterators[CurrentIteratorIndex]; }
235 inline FBlackboardDataToComponentsMap::TConstKeyIterator& GetCurrentIteratorRef() { return Iterators[CurrentIteratorIndex]; }
236
237 void TryMoveIteratorToParentBlackboard()
238 {
239 if (!GetCurrentIteratorRef() && CurrentIteratorIndex < Iterators.Num() - 1)
240 {
241 ++CurrentIteratorIndex;
242 TryMoveIteratorToParentBlackboard(); // keep incrementing until we find a valid iterator.
243 }
244 }
245
246 int32 CurrentIteratorIndex;
247
248 static const int32 InlineSize = 8;
249 TArray<TWeakObjectPtr<UBlackboardData>> IteratorKeysForReference;
251 };
252
260 AIMODULE_API void RegisterBlackboardComponent(class UBlackboardData& BlackboardAsset, class UBlackboardComponent& BlackboardComp);
261
267 AIMODULE_API void UnregisterBlackboardComponent(class UBlackboardData& BlackboardAsset, class UBlackboardComponent& BlackboardComp);
268
274 AIMODULE_API FBlackboardDataToComponentsIterator CreateBlackboardDataToComponentsIterator(class UBlackboardData& BlackboardAsset);
275
276 AIMODULE_API virtual void ConditionalLoadDebuggerPlugin();
277
278 static const FRandomStream& GetRandomStream() { return RandomStream; }
279 static void SeedRandomStream(const int32 Seed) { return RandomStream.Initialize(Seed); }
280
281protected:
282 AIMODULE_API virtual void OnActorSpawned(AActor* SpawnedActor);
283 AIMODULE_API virtual void OnPawnBeginPlay(APawn* Pawn);
284
285 AIMODULE_API void LoadDebuggerPlugin();
286};
#define NULL
Definition oodle2base.h:134
constexpr bool operator!(EUpdateTransformFlags Value)
Definition ActorComponent.h:116
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
ECollisionChannel
Definition EngineTypes.h:1088
return true
Definition ExternalRpcRegistry.cpp:601
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define UCLASS(...)
Definition ObjectMacros.h:776
if(Failed) console_printf("Failed.\n")
Definition Actor.h:257
Definition Engine.Build.cs:7
Definition IDelegateInstance.h:14
Definition UObjectGlobals.h:1292
Definition Array.h:670
Definition EnumAsByte.h:22
Definition AIAsyncTaskBlueprintProxy.h:18
Definition AIHotSpotManager.h:11
Definition AIPerceptionSystem.h:31
Definition AISystemBase.h:15
Definition AISystem.h:27
static UAISystem * GetCurrentSafe(UWorld *World)
Definition AISystem.h:174
static void SeedRandomStream(const int32 Seed)
Definition AISystem.h:279
UNavLocalGridManager * GetNavLocalGridManager()
Definition AISystem.h:171
UEnvQueryManager * GetEnvironmentQueryManager()
Definition AISystem.h:161
void AddReferenceFromProxyObject(UAIAsyncTaskBlueprintProxy *BlueprintProxy)
Definition AISystem.h:188
const UNavLocalGridManager * GetNavLocalGridManager() const
Definition AISystem.h:172
const UAIHotSpotManager * GetHotSpotManager() const
Definition AISystem.h:169
virtual UWorld * GetWorld() const override
Definition AISystem.h:186
const UBehaviorTreeManager * GetBehaviorTreeManager() const
Definition AISystem.h:158
static UAISystem * GetCurrent(UWorld &World)
Definition AISystem.h:179
const UEnvQueryManager * GetEnvironmentQueryManager() const
Definition AISystem.h:163
TMultiMap< TWeakObjectPtr< UBlackboardData >, TWeakObjectPtr< UBlackboardComponent > > FBlackboardDataToComponentsMap
Definition AISystem.h:127
void RemoveReferenceToProxyObject(UAIAsyncTaskBlueprintProxy *BlueprintProxy)
Definition AISystem.h:190
UAIHotSpotManager * GetHotSpotManager()
Definition AISystem.h:168
UAIPerceptionSystem * GetPerceptionSystem()
Definition AISystem.h:165
UWorld * GetOuterWorld() const
Definition AISystem.h:184
static const FRandomStream & GetRandomStream()
Definition AISystem.h:278
const UAIPerceptionSystem * GetPerceptionSystem() const
Definition AISystem.h:166
Definition BehaviorTreeManager.h:34
Definition BlackboardData.h:46
Definition EnvQueryManager.h:208
Definition NavLocalGridManager.h:28
FORCEINLINE UObject * GetOuter() const
Definition UObjectBase.h:223
Definition Object.h:95
virtual COREUOBJECT_API void BeginDestroy()
Definition Obj.cpp:1071
virtual COREUOBJECT_API void PostInitProperties()
Definition UObjectGlobals.cpp:3961
Definition World.h:918
#define expect(expr, value)
Definition lz4.cpp:171
@ false
Definition radaudio_common.h:23
Definition RandomStream.h:20
Definition SoftObjectPath.h:539
Definition ObjectPtr.h:488
Definition SoftObjectPtr.h:174
Definition WeakObjectPtrTemplates.h:25
UBlackboardComponent * Value() const
Definition AISystem.h:231
FBlackboardDataToComponentsIterator & operator++()
Definition AISystem.h:213
FBlackboardDataToComponentsIterator operator++(int)
Definition AISystem.h:219
UBlackboardData * Key() const
Definition AISystem.h:230