UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
RecastNavMeshGenerator.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_4
5#include "CoreMinimal.h"
6#endif // UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_4
7#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_5
8#include "Stats/Stats.h"
9#endif // UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_5
10#include "AI/NavDataGenerator.h"
17#include "Async/AsyncWork.h"
18#include "EngineDefines.h"
19#include "NavDebugTypes.h"
20#include "NavigationOctree.h"
23#include "UObject/GCObject.h"
24
25#if WITH_RECAST
26
27#include "Recast/Recast.h"
30
31#if RECAST_INTERNAL_DEBUG_DATA
33#endif
34
35class UBodySetup;
36class ARecastNavMesh;
41struct BuildContext;
42struct dtTileCacheLayer;
43struct FKAggregateGeom;
49class dtNavMesh;
52
53#define MAX_VERTS_PER_POLY 6
54
55struct FRecastBuildConfig : public rcConfig
56{
58 uint32 bPerformVoxelFiltering:1;
64 uint32 bMarkLowHeightAreas : 1;
67 uint32 bUseExtraTopCellWhenMarkingAreas : 1;
69 uint32 bFilterLowSpanSequences : 1;
71 uint32 bFilterLowSpanFromTileCache : 1;
74
79
83
86
88 float AgentHeight;
90 float AgentMaxClimb;
92 float AgentRadius;
94 int32 AgentIndex;
98 ENavigationLedgeSlopeFilterMode LedgeSlopeFilterMode;
102 float LinkSpillDistance;
103
105 {
106 Reset();
107 }
108
109 void Reset()
110 {
111 FMemory::Memzero(*this);
112 bPerformVoxelFiltering = true;
114 bGenerateBVTree = true;
115 bMarkLowHeightAreas = false;
116 bUseExtraTopCellWhenMarkingAreas = true;
117 bFilterLowSpanSequences = false;
118 bFilterLowSpanFromTileCache = false;
119 bGenerateLinks = false;
120 MaxPolysPerTile = -1;
121 JumpConfigs.Empty();
122 AgentIndex = 0;
124 LedgeSlopeFilterMode = ENavigationLedgeSlopeFilterMode::Recast;
126 LinkSpillDistance = 0.f;
127 }
128
129 rcReal GetTileSizeUU() const { return tileSize * cs; }
130
132 bool IsUsingCoarseCellSize() const;
133};
134
136{
137 struct FTileInfo
138 {
139 int32 TileX;
140 int32 TileY;
142 FTileInfo* NextTile;
144 };
145
146 int32 NumTiles;
147
149 FTileInfo* Tiles;
150
153};
154
156{
157 struct FHeader
158 {
160
162 int32 NumFaces;
164
166 };
167
168 FHeader Header;
169
171 FVector::FReal* Verts;
172
174 int32* Indices;
175
178};
179
181{
182 // Instance geometry
185
186 // Bounds of the geometry
188
189 // Per instance transformations in unreal coords
190 // When empty, geometry is in world space
192
194
196};
197
199{
201
202 // Per instance transformations in unreal coords
203 // When empty, areas are in world space
205
207
208 bool bMaskFillCollisionUnderneathForNavmesh = false;
209};
210
211struct FRcTileBox
212{
214
216 {
218 checkf(!RcNavMeshOrigin.ContainsNaN(), TEXT("%hs: RcNavMeshOrigin ContainsNaN"), __FUNCTION__);
219 checkf(!UnrealBounds.ContainsNaN(), TEXT("%hs: UnrealBounds ContainsNaN"), __FUNCTION__);
220
221 if (!ensureMsgf(UnrealBounds.IsValid, TEXT("%hs: UnrealBounds !IsValid"), __FUNCTION__))
222 {
223 // This is a bug but we'll handle it as well as we can.
224
225 // Invalid bounds, set to empty range.
226 // Max is set to -1, because the range is inclusive, used like: for (int32 y = TileBox.YMin; y <= TileBox.YMax; ++y)
227 XMin = 0;
228 XMax = -1;
229 YMin = 0;
230 YMax = -1;
231 return;
232 }
233
235 {
237 // If MaxCoord falls exactly on the boundary of a tile
238 if (FMath::Modf(MaxAsFloat, &UnusedIntPart) == 0)
239 {
240 // Return the lower tile
241 return FMath::Max(ClampToInt32(FMath::FloorToInt(MaxAsFloat) - 1), MinCoord);
242 }
243 // Otherwise use default behaviour
244 return ClampToInt32(FMath::FloorToInt(MaxAsFloat));
245 };
246
248 XMin = ClampToInt32(FMath::FloorToInt((RcAreaBounds.Min.X - RcNavMeshOrigin.X) / TileSizeInWorldUnits));
250 YMin = ClampToInt32(FMath::FloorToInt((RcAreaBounds.Min.Z - RcNavMeshOrigin.Z) / TileSizeInWorldUnits));
252 }
253
254 inline bool Contains(const FIntPoint& Point) const
255 {
256 return Point.X >= XMin && Point.X <= XMax
257 && Point.Y >= YMin && Point.Y <= YMax;
258 }
259
260 static inline int32 ClampToInt32(const int64 Value)
261 {
262#if !NO_LOGGING
264 TEXT("FRcTileBox clamped a NavMesh transform value to fit in int32. Old value: %" UINT64_FMT), Value);
265#endif // !NO_LOGGING
266
267 return static_cast<int32>(FMath::Clamp(Value, MIN_int32, MAX_int32));
268 }
269};
270
280enum class ETimeSliceWorkResult : uint8
281{
282 Failed,
283 Succeeded,
285};
286
289{
290 Invalid,
291 Init,
301};
302
304{
307};
308
310{
312 RasterizeGeometryTransformCoords UE_DEPRECATED(5.5, "The state doesn't handle indices flipping. Use RasterizeGeometryTransformCoordsAndIndices instead.") = RasterizeGeometryTransformCoordsAndFlipIndices,
314};
315
317{
321};
322
323enum class EDoWorkTimeSlicedState : uint8
324{
325 Invalid,
328};
329
331{
332 Invalid,
335};
336
338{
339 Invalid,
340 Init,
342};
343
345{
347};
348
350{
352 unsigned short generatedLinkPolyFlag = 0;
353
355 unsigned char generatedLinkArea = 0;
356};
357
361class FRecastTileGenerator : public FNoncopyable, public FGCObject
362{
364
365public:
368
374 NAVIGATIONSYSTEM_API bool DoWork();
375
376 inline int32 GetTileX() const { return TileX; }
377 inline int32 GetTileY() const { return TileY; }
378 inline const FBox& GetTileBB() const { return TileBB; }
380 inline bool IsLayerChanged(int32 LayerIdx) const { return DirtyLayers[LayerIdx]; }
381 inline const TBitArray<>& GetDirtyLayersMask() const { return DirtyLayers; }
383 inline bool IsFullyRegenerated() const { return bRegenerateCompressedLayers; }
385 NAVIGATIONSYSTEM_API bool HasDataToBuild() const;
386
388
390
391protected:
392 // to be used solely by FRecastNavMeshGenerator
393 TArray<FNavMeshTileData>& GetNavigationData() { return NavigationData; }
394
395public:
397
398 // Memory amount used to construct generator
400
401 // FGCObject begin
402 NAVIGATIONSYSTEM_API virtual void AddReferencedObjects(FReferenceCollector& Collector) override;
403 NAVIGATIONSYSTEM_API virtual FString GetReferencerName() const override;
404 // FGCObject end
405
406#if RECAST_INTERNAL_DEBUG_DATA
407 const FRecastInternalDebugData& GetDebugData() const { return DebugData; }
408 FRecastInternalDebugData& GetMutableDebugData() { return DebugData; }
409#endif
410
412
413protected:
429
430 NAVIGATIONSYSTEM_API void Setup(const FRecastNavMeshGenerator& ParentGenerator, const TArray<FBox>& DirtyAreas);
431
434
445
465
468
471
474
477
481
483
488 const FAreaNavModifier& Modifier, const FTransform& LocalToWorld, const int32 Mask, TInlineMaskArray& OutMaskArray);
489
492 NAVIGATIONSYSTEM_API void MarkDynamicArea(const FAreaNavModifier& Modifier, const FTransform& LocalToWorld, dtTileCacheLayer& Layer);
493 NAVIGATIONSYSTEM_API void MarkDynamicArea(const FAreaNavModifier& Modifier, const FTransform& LocalToWorld, dtTileCacheLayer& Layer, const int32 AreaId, const int32* ReplaceAreaIdPtr);
494
498
500
505
508
509#if RECAST_INTERNAL_DEBUG_DATA
512#endif
513
515 UE_DEPRECATED(5.5, "Use the new version without RasterContext instead.")
517 UE_DEPRECATED(5.5, "Use the new version without RasterContext instead.")
519 UE_DEPRECATED(5.5, "Use the new version without RasterContext instead.")
521 UE_DEPRECATED(5.5, "Use the new version without RasterContext instead.")
523 UE_DEPRECATED(5.5, "Use the new version without RasterContext instead.")
525 UE_DEPRECATED(5.5, "This function was not handling the indices order correctly and is replaced by RasterizeGeometryTransformCoordsAndFlipIndices.")
526 NAVIGATIONSYSTEM_API void RasterizeGeometryTransformCoords(const TArray<FVector::FReal>& Coords, const FTransform& LocalToWorld);
527 UE_DEPRECATED(5.5, "Use the overload with dtLinkBuilderData instead.")
529 UE_DEPRECATED(5.5, "Use the overload with dtLinkBuilderData instead.")
531 UE_DEPRECATED(5.5, "Use the overload with dtLinkBuilderData instead.")
533 UE_DEPRECATED(5.5, "Use the overload with dtLinkBuilderData instead.")
535 UE_DEPRECATED(5.5, "Use the version taking a const reference on FNavigationRelevantData.")
537 UE_DEPRECATED(5.6, "Please use the overload with the added CoordBounds.")
539 UE_DEPRECATED(5.6, "Please use the overload with the added CoordBounds.")
541 UE_DEPRECATED(5.6, "Please use the overload with the added CoordBounds.")
542 NAVIGATIONSYSTEM_API void RasterizeGeometryTransformCoordsAndFlipIndices(const TArray<FVector::FReal>& Coords, const TArray<int32>& Indices, const FTransform& LocalToWorld);
543 UE_DEPRECATED(5.6, "Please use the overload with the added CoordBounds.")
545 UE_DEPRECATED(5.6, "Please use the overload with the added CoordBounds.")
547 UE_DEPRECATED(5.6, "Please use the overload with the added RecastBounds.")
549
554 uint32 bHasLowAreaModifiers : 1;
556
564
572
576
580 int32 TileX;
581 int32 TileY;
582 uint32 Version;
583
585 double TileCreationTime = 0.;
586
588 FBox TileBB;
589
592
595
598
601
604
605 // generated tile data
608
614
615 // tile's geometry: without voxel cache
617 // areas used for creating navigation data: obstacles
619 // navigation links
621
623
626 FNavDataConfig NavDataConfig;
627
630
632
633#if RECAST_INTERNAL_DEBUG_DATA
634 FRecastInternalDebugData DebugData;
635#endif
636};
637
639{
641
644 {
645 }
646
647 void DoWork()
648 {
649 TileGenerator->DoWork();
650 }
651
652 inline TStatId GetStatId() const
653 {
655 }
656};
657
659//typedef FAsyncTask<FRecastTileGenerator> FRecastTileGeneratorTask;
660
662{
664 FIntPoint Coord;
668 double CreationTime;
669
670#if !UE_BUILD_SHIPPING
673
676#endif // !UE_BUILD_SHIPPING
677
680
682 bool bRebuildGeometry;
686 TArray<FBox> DirtyAreas;
687
689 : Coord(FIntPoint::NoneValue)
691 , CreationTime(-1.)
693 {
694 }
695
696 bool operator == (const FIntPoint& Location) const
697 {
698 return Coord == Location;
699 }
700
701 bool operator == (const FPendingTileElement& Other) const
702 {
703 return Coord == Other.Coord;
704 }
705
706 bool operator < (const FPendingTileElement& Other) const
707 {
708 return Other.SeedDistance < SeedDistance;
709 }
710
711 double GetDurationSinceCreation(const double CurrenTimeSeconds) const
712 {
713 return (CreationTime > 0.) ? CurrenTimeSeconds - CreationTime : 0.;
714 }
715
716 friend uint32 GetTypeHash(const FPendingTileElement& Element)
717 {
718 return GetTypeHash(Element.Coord);
719 }
720};
721
722template<typename TTileGeneratorTask>
724{
726 : Coord(FIntPoint::NoneValue)
728 , AsyncTask(nullptr)
729 {
730 }
731
733 : Coord(InCoord)
735 , AsyncTask(nullptr)
736 {
737 }
738
739 bool operator == (const TRunningTileElement& Other) const
740 {
741 return Coord == Other.Coord;
742 }
743
745 FIntPoint Coord;
747 bool bShouldDiscard;
749};
750
751UE_DEPRECATED(5.5, "FRunningTileElement is deprecated. Please use TRunningTileElement<FRecastTileGeneratorWrapper> instead.")
753
755{
757 double Timestamp;
758
759 bool operator == (const FTileTimestamp& Other) const
760 {
761 return NavTileRef == Other.NavTileRef;
762 }
763};
764
766{
767 Init,
768 DoWork,
772 Finish,
773};
774
776{
777 Init,
778 AddTiles,
779};
780
785{
786public:
789
790private:
793 FRecastNavMeshGenerator& operator=(FRecastNavMeshGenerator const& NoCopy) { check(0); return *this; }
794
795public:
796 NAVIGATIONSYSTEM_API virtual bool RebuildAll() override;
797 NAVIGATIONSYSTEM_API virtual void EnsureBuildCompletion() override;
798 NAVIGATIONSYSTEM_API virtual void CancelBuild() override;
799 NAVIGATIONSYSTEM_API virtual void TickAsyncBuild(float DeltaSeconds) override;
800 NAVIGATIONSYSTEM_API virtual void OnNavigationBoundsChanged() override;
801
803 NAVIGATIONSYSTEM_API virtual void RebuildDirtyAreas(const TArray<FNavigationDirtyArea>& DirtyAreas) override;
804
806 NAVIGATIONSYSTEM_API virtual bool IsBuildInProgressCheckDirty() const override;
807
808#if !RECAST_ASYNC_REBUILDING
810 NAVIGATIONSYSTEM_API virtual bool GetTimeSliceData(int32& OutNumRemainingBuildTasks, double& OutCurrentBuildTaskDuration) const override;
811#endif
812
813 int32 GetNumRemaningBuildTasksHelper() const { return RunningDirtyTiles.Num() + PendingDirtyTiles.Num() + static_cast<int32>(SyncTimeSlicedData.TileGeneratorSync.IsValid()); }
814 NAVIGATIONSYSTEM_API virtual int32 GetNumRemaningBuildTasks() const override;
815 NAVIGATIONSYSTEM_API virtual int32 GetNumRunningBuildTasks() const override;
816
819
820 inline uint32 GetVersion() const { return Version; }
821
822 const ARecastNavMesh* GetOwner() const { return DestNavMesh; }
823
825 NAVIGATIONSYSTEM_API void OnAreaAdded(const UClass* AreaClass, int32 AreaID);
826 NAVIGATIONSYSTEM_API void OnAreaRemoved(const UClass* AreaClass);
827
828 //--- accessors --- //
829 inline class UWorld* GetWorld() const { return DestNavMesh->GetWorld(); }
830
831 const FRecastBuildConfig& GetConfig() const { return Config; }
832
833 const FRecastNavMeshTileGenerationDebug& GetTileDebugSettings() const { return DestNavMesh->TileGenerationDebug; }
834
836
837 FVector GetRcNavMeshOrigin() const { return RcNavMeshOrigin; }
838
842
844 FBox GetTotalBounds() const { return TotalNavBounds; }
845
847
851
854
855 NAVIGATIONSYSTEM_API FBox GrowBoundingBox(const FBox& BBox, bool bIncludeAgentHeight) const;
856
858 NAVIGATIONSYSTEM_API virtual bool ShouldGenerateGeometryForOctreeElement(const FNavigationOctreeElement& Element, const FNavDataConfig& NavDataConfig) const;
859
860#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST) && ENABLE_VISUAL_LOG
861 NAVIGATIONSYSTEM_API virtual void ExportNavigationData(const FString& FileName) const override;
862 NAVIGATIONSYSTEM_API virtual void GrabDebugSnapshot(struct FVisualLogEntry* Snapshot, const FBox& BoundingBox, const FName& CategoryName, ELogVerbosity::Type Verbosity) const override;
863#endif
864
865 UE_DEPRECATED(5.5, "Use FRecastGeometryExport::ExportElementGeometry.")
869
875 const FTransform& LocalToWorld = FTransform::Identity);
876
886 const FTransform& LocalToWorld = FTransform::Identity);
887
890 const FKAggregateGeom& AggGeom,
895 const FTransform& LocalToWorld = FTransform::Identity);
896
897#if UE_ENABLE_DEBUG_DRAWING
900#endif // UE_ENABLE_DEBUG_DRAWING
901
902 const FNavRegenTimeSliceManager* GetTimeSliceManager() const { return SyncTimeSlicedData.TimeSliceManager; }
903
904 void SetNextTimeSliceRegenActive(bool bRegenState) { SyncTimeSlicedData.bNextTimeSliceRegenActive = bRegenState; }
905
908
909protected:
910 // Performs initial setup of member variables so that generator is ready to
911 // do its thing from this point on. Called just after construction by ARecastNavMesh
912 NAVIGATIONSYSTEM_API virtual void Init();
913
914 // Used to configure Config. Override to influence build properties
916
917 // Updates cached list of navigation bounds
918 NAVIGATIONSYSTEM_API void UpdateNavigationBounds();
919
920 // Sorts pending build tiles by proximity to player, so tiles closer to player will get generated first
922
923 // Get seed locations used for sorting pending build tiles. Tiles closer to these locations will be prioritized first.
925
928
931
934
935 UE_DEPRECATED(5.5, "Use ShouldDirtyTilesRequestedByElement with FNavigationElement instead.")
939 const UObject& SourceObject,
940 const FNavDataConfig& NavDataConfig) const final;
941
946 FNavigationElementHandle SourceElement,
947 const FNavDataConfig& NavDataConfig) const;
948
951
953
955
956#if RECAST_INTERNAL_DEBUG_DATA
958#endif
959
960#if RECAST_ASYNC_REBUILDING
963#else
965
969
971#endif
974
976
977public:
980
983
984public:
987
989 NAVIGATIONSYSTEM_API void RemoveTileLayers(dtNavMesh* DetourMesh, const int32 TileX, const int32 TileY);
990
992
994
997
1002
1004
1006
1008 bool IsGeneratingLinks() const;
1009
1010protected:
1014
1015 NAVIGATIONSYSTEM_API virtual void RestrictBuildingToActiveTiles(bool InRestrictBuildingToActiveTiles);
1016
1019
1021
1022 template <typename T>
1023 TSharedRef<T> ConstructTileGeneratorImpl(const FIntPoint& Coord, const TArray<FBox>& DirtyAreas, const double PendingTileCreationTime)
1024 {
1026 TileGenerator->Setup(*this, DirtyAreas);
1027 return TileGenerator;
1028 }
1029
1030 UE_DEPRECATED(5.5, "Use BBoxGrowthLow and BBoxGrowthHigh properties instead.")
1032 {
1036 }
1037
1038 FBox GrowDirtyBounds(const FBox& BBox, bool bIncludeAgentHeight) const;
1039
1040 //----------------------------------------------------------------------//
1041 // debug
1042 //----------------------------------------------------------------------//
1043 NAVIGATIONSYSTEM_API virtual uint32 LogMemUsed() const override;
1044
1047
1048#if !UE_BUILD_SHIPPING
1051 {
1053 bool bTileWasAlreadyAdded = false;
1054 };
1055
1059
1060#endif
1061
1062protected:
1063 friend ARecastNavMesh;
1064
1067
1070 UE_DEPRECATED(5.5, "Use BBoxGrowthLow and BBoxGrowthHigh instead.")
1072
1076
1080
1087
1089
1092
1095
1098
1101
1104
1105#if WITH_NAVMESH_SEGMENT_LINKS
1108#endif // WITH_NAVMESH_SEGMENT_LINKS
1109
1110#if WITH_EDITOR
1113#endif// WITH_EDITOR
1114
1116
1119
1122
1123 double RebuildAllStartTime = 0;
1124
1125 uint32 bInitialized:1;
1126
1128
1132
1134
1136 struct FSyncTimeSlicedData
1137 {
1139
1142
1143#if !UE_BUILD_SHIPPING
1146
1149#endif // !UE_BUILD_SHIPPING
1150
1156
1159
1162
1165
1168
1171
1174
1178 };
1179
1181};
1182
1183#endif // WITH_RECAST
OODEFFUNC typedef const int const char * function
Definition oodle2.h:710
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
@ XMax
Definition Aabb.h:9
@ YMin
Definition Aabb.h:13
@ XMin
Definition Aabb.h:12
@ YMax
Definition Aabb.h:10
#define UINT64_FMT
Definition AndroidPlatformString.h:66
#define check(expr)
Definition AssertionMacros.h:314
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
void AsyncTask(ENamedThreads::Type Thread, TUniqueFunction< void()> Function)
Definition Async.cpp:54
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define RETURN_QUICK_DECLARE_CYCLE_STAT(StatId, GroupId)
Definition Stats.h:655
SharedPointerInternals::TRawPtrProxy< ObjectType > MakeShareable(ObjectType *InObject)
Definition SharedPointer.h:1947
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define X(Name, Desc)
Definition FormatStringSan.h:47
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
bool operator<(const FTextFormatString &LHS, const FTextFormatString &RHS)
Definition ITextFormatArgumentModifier.h:147
void Init()
Definition LockFreeList.h:4
#define UE_CLOG(Condition, CategoryName, Verbosity, Format,...)
Definition LogMacros.h:298
ENavigationDataResolution
Definition NavigationDataResolution.h:9
ENavigationInvokerPriority
Definition NavigationInvokerPriority.h:9
ENavigationSortPendingTilesMethod
Definition NavigationTypes.h:88
#define MAX_int32
Definition NumericLimits.h:25
#define MIN_int32
Definition NumericLimits.h:16
unsigned int dtStatus
Definition RecastGraphAStar.h:29
FBox Unreal2RecastBox(const FBox &UnrealBox)
Definition RecastHelpers.cpp:20
double rcReal
Definition RecastLargeWorldCoordinates.h:16
@ NoCopy
Definition RecastNavMeshDataChunk.h:55
ENavigationLedgeSlopeFilterMode
Definition RecastNavMesh.h:81
rcRasterizationFlags
Definition Recast.h:704
ESPMode
Definition SharedPointerFwd.h:12
bool Failed
Definition binka_ue_decode_test.cpp:18
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition RecastNavMesh.h:574
Definition AsyncWork.h:585
Definition GCObject.h:128
virtual void AddReferencedObjects(FReferenceCollector &Collector)=0
virtual FString GetReferencerName() const =0
Definition NameTypes.h:617
Definition NavDataGenerator.h:16
Definition NavigationSystem.h:212
Definition NavigationOctree.h:173
Definition AsyncWork.h:663
Definition UnrealTemplate.h:321
Definition UnrealType.h:3087
Definition UObjectGlobals.h:2492
Definition NavRelevantInterface.h:49
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition NavigationTypes.h:731
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition UniquePtr.h:107
Definition SharedPointer.h:1295
Definition BodySetup.h:128
Definition Class.h:3793
Definition NavigationSystem.h:296
Definition Object.h:95
Definition World.h:918
virtual UE_API UWorld * GetWorld() const override
Definition World.cpp:1820
Definition DetourNavMesh.h:503
Definition Recast.h:165
@ Contains
Definition AutomationTest.h:160
Type
Definition LogVerbosity.h:17
uint32 GetTypeHash(const FKey &Key)
Definition BlackboardKey.h:35
Chaos::FReal FReal
Definition ImmediatePhysicsCore_Chaos.h:33
@ Element
Definition Visu.h:18
Version
Definition NNEModelData.cpp:15
UTickableTransformConstraint * GetConfig(const UClass *InConstraintClass)
Definition TransformConstraintUtil.cpp:878
@ Config
Property should be loaded/saved to ini file as permanent profile.
Definition ObjectMacros.h:1053
@ false
Definition radaudio_common.h:23
Definition DetourTileCache.cpp:72
Definition NavigationModifier.h:101
Definition NavigationModifier.h:279
Definition AggregateGeom.h:24
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
Definition NavigationTypes.h:525
Definition RecastNavMesh.h:460
Definition NavigationDirtyArea.h:25
Definition NavigationElement.h:36
Definition NavigationElement.h:94
Definition NavigationOctree.h:34
Definition NavigationRelevantData.h:45
Definition NavigationRelevantData.h:40
Definition RecastNavMesh.h:349
Definition NavigationModifier.h:178
Definition VisualLoggerTypes.h:205
Definition EngineTypes.h:3483
Definition NumericLimits.h:41
Definition LightweightStats.h:416
Definition WeakObjectPtrTemplates.h:25
Definition IntPoint.h:25
double FReal
Definition Vector.h:55
Definition DetourNavLinkBuilder.h:26
Definition DetourTileCacheBuilder.h:133
Definition DetourTileCacheBuilder.h:68
Definition DetourTileCacheBuilder.h:50
Definition Recast.h:447
Definition Recast.h:260
rcReal cs
The xz-plane cell size to use for fields. [Limit: > 0] [Units: wu].
Definition Recast.h:274
Definition Recast.h:408
Definition Recast.h:364