UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NavigationSystem.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_4
6#include "CoreMinimal.h"
7#endif
11#include "Misc/CoreMisc.h"
12#include "Misc/CoreDelegates.h"
13#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_4
15#endif
20#include "NavigationData.h"
23#include "NavigationOctree.h"
30#include "NavigationSystem.generated.h"
31
32
33class AController;
35class AWorldSettings;
36class FEdMode;
42class UNavArea;
43class UNavigationPath;
46struct FDebugText;
50
51#if !UE_BUILD_SHIPPING
52#define ALLOW_TIME_SLICE_DEBUG 1
53#else
54#define ALLOW_TIME_SLICE_DEBUG 0
55#endif
56
59
62
64
66{
67 extern const NAVIGATIONSYSTEM_API float PathLineThickness;
70}
71
72namespace FNavigationSystem
73{
77 typedef ANavigationData* (*FNavigationDataInstanceCreator)(UWorld*, const FNavDataConfig&);
78
89
91
93
94#if ALLOW_TIME_SLICE_DEBUG
96#endif // ALLOW_TIME_SLICE_DEBUG
97}
98
100{
101protected:
102 //~ Begin FExec Interface
103 virtual bool Exec_Runtime(UWorld* Inworld, const TCHAR* Cmd, FOutputDevice& Ar) override;
104 //~ End FExec Interface
105};
106
108{
109 enum Type
110 {
111 NoUpdateInEditor = 1 << 1, // editor doesn't allow automatic updates
112 NoUpdateInPIE = 1 << 2, // PIE doesn't allow automatic updates
113 InitialLock = 1 << 3, // initial lock, release manually after levels are ready for rebuild (e.g. streaming)
114 Custom = 1 << 4,
115 };
116}
117
118
119// Use this just before a call to TestTimeSliceFinished() to allow the time slice logging to use a debug name for the section of code being timed.
120#if ALLOW_TIME_SLICE_DEBUG
121#define MARK_TIMESLICE_SECTION_DEBUG(TIME_SLICER, TIME_SLICE_FNAME) \
122static const FName TIME_SLICE_FNAME(TEXT(#TIME_SLICE_FNAME)); \
123TIME_SLICER.DebugSetSectionName(TIME_SLICE_FNAME);
124#else
125#define MARK_TIMESLICE_SECTION_DEBUG(TIME_SLICER, TIME_SLICE_FNAME) ;
126#endif
127
129{
130public:
133
139
148 double GetStartTime() const { return StartTime; }
150
151 //* Returns the cached result of calling TestTimeSliceFinished, false by default */
153 double GetRemainingDuration() const { return RemainingDuration; }
155
156
157#if ALLOW_TIME_SLICE_DEBUG
158 /*
159 * Sets data used for debugging time slices that are taking too long to process.
160 * @param LongTimeSliceFunction function called when a time slice is taking too long to process.
161 * @param LongTimeSliceDuration when a time slice takes longer than this duration LongTimeSliceFunction will be called.
162 */
165
174#endif // ALLOW_TIME_SLICE_DEBUG
175
176protected:
177 double OriginalDuration = 0.;
178 double RemainingDuration = 0.;
179 double StartTime = 0.;
180 mutable double TimeLastTested = 0.;
181 mutable bool bTimeSliceFinishedCached = false;
182
183#if ALLOW_TIME_SLICE_DEBUG
185 mutable double DebugLongTimeSliceDuration = 0.;
187#endif
188};
189
190#if !UE_BUILD_SHIPPING
192{
196
198 float TileRegenTime = 0.f;
199
201 float TileWaitTime = 0.f;
202
205
208};
209#endif // !UE_BUILD_SHIPPING
210
212{
213public:
215
216 void PushTileRegenTime(double NewTime) { MovingWindowTileRegenTime.PushValue(NewTime); }
217
219
221
223 NAVIGATIONSYSTEM_API void PushTileWaitTime(const int32 NavDataIndex, const double NewTime);
224
225#if !UE_BUILD_SHIPPING
228#endif // UE_BUILD_SHIPPING
229
232
234
236
238
240
242
244
245 int32 GetNavDataIdx() const { return NavDataIdx; }
247
250
251#if !UE_BUILD_SHIPPING
253#endif // !UE_BUILD_SHIPPING
254
255protected:
257
260
263
266
267#if !UE_BUILD_SHIPPING
271#endif // UE_BUILD_SHIPPING
272
275
278
280
286
288
290
292};
293
294UCLASS(Within=World, config=Engine, defaultconfig, MinimalAPI)
296{
298
300
301public:
303 virtual ~UNavigationSystemV1() = default;
304
305 NAVIGATIONSYSTEM_API void GatherDebugLabels(TArray<FString>& InOutDebugLabels) const;
306
309
312 TObjectPtr<ANavigationData> AbstractNavData;
313
319 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = Navigation)
320 FName DefaultAgentName;
321
322 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = Navigation)
324
326 UPROPERTY(config, EditAnywhere, Category=NavigationSystem)
327 uint32 bAutoCreateNavigationData:1;
328
330 UPROPERTY(config, EditAnywhere, Category = NavigationSystem)
331 uint32 bSpawnNavDataInNavBoundsLevel:1;
332
334 UPROPERTY(config, EditAnywhere, Category=NavigationSystem)
335 uint32 bAllowClientSideNavigation:1;
336
338 UPROPERTY(config, EditAnywhere, Category = NavigationSystem)
339 uint32 bShouldDiscardSubLevelNavData:1;
340
342 UPROPERTY(config, EditAnywhere, Category=NavigationSystem)
343 uint32 bTickWhilePaused:1;
344
348 UPROPERTY()
349 uint32 bSupportRebuilding : 1;
350
351public:
356 UPROPERTY(config, EditAnywhere, Category=NavigationSystem)
357 uint32 bInitialBuildingLocked:1;
358
363 // @todo removing it from edition since it's currently broken and I'm not sure we want that at all
364 // since I'm not sure we can make it efficient in a generic case
365 //UPROPERTY(config, EditAnywhere, Category=NavigationSystem)
366 uint32 bWholeWorldNavigable:1;
367
370 UPROPERTY(config, EditAnywhere, Category=NavigationSystem)
371 uint32 bSkipAgentHeightCheckWhenPickingNavData:1;
372
375 UPROPERTY(config, EditAnywhere, AdvancedDisplay, Category = NavigationSystem)
376 int32 GeometryExportTriangleCountWarningThreshold = 200000;
377
385 UPROPERTY(EditDefaultsOnly, Category = "Navigation Enforcing", config)
386 uint32 bGenerateNavigationOnlyAroundNavigationInvokers:1;
387
389 UPROPERTY(EditAnywhere, Category = "Navigation Enforcing", meta = (ClampMin = "0.1", UIMin = "0.1", EditCondition = "bGenerateNavigationOnlyAroundNavigationInvokers"), config)
390 float ActiveTilesUpdateInterval;
391
393 UPROPERTY(EditAnywhere, Category = "Navigation Enforcing", meta = (EditCondition = "bGenerateNavigationOnlyAroundNavigationInvokers"), config)
394 double InvokersMaximumDistanceFromSeed = -1;
395
397 UPROPERTY(EditDefaultsOnly, Category = "NavigationSystem", config)
399
401 UPROPERTY(config, EditAnywhere, AdvancedDisplay, Category = NavigationSystem, meta = (ClampMin = "-1.0", UIMin = "-1.0"))
402 float DirtyAreaWarningSizeThreshold;
403
408 UPROPERTY(config, EditAnywhere, AdvancedDisplay, Category = NavigationSystem, meta = (ClampMin = "-1.0", UIMin = "-1.0"))
409 float GatheringNavModifiersWarningLimitTime;
410
412 UPROPERTY(config, EditAnywhere, Category = Agents)
413 TArray<FNavDataConfig> SupportedAgents;
414
418 UPROPERTY(config, EditAnywhere, Category = Agents)
419 FNavAgentSelector SupportedAgentsMask;
420
421public:
424 FBox BuildBounds;
425
428
430 TArray<TObjectPtr<ANavigationData>> NavDataRegistrationQueue;
431
432 // List of pending navigation bounds update requests (add, remove, update size)
433 TArray<FNavigationBoundsUpdateRequest> PendingNavBoundsUpdates;
434
435 UPROPERTY(/*BlueprintAssignable, */Transient)
436 FOnNavDataGenericEvent OnNavDataRegisteredEvent;
437
438 UPROPERTY(BlueprintAssignable, Transient, meta = (displayname = OnNavigationGenerationFinished))
439 FOnNavDataGenericEvent OnNavigationGenerationFinishedDelegate;
440
441 FOnNavigationInitDone OnNavigationInitDone;
442
443private:
444 TWeakObjectPtr<UCrowdManagerBase> CrowdManager;
445
447 uint32 bNavDataRemovedDueToMissingNavBounds : 1;
448
449protected:
451 TSet<FNavigationBounds> RegisteredNavBounds;
452
453private:
454 TMap<UObject*, FNavigationInvoker> Invokers;
456 TArray<FNavigationInvokerRaw> InvokerLocations;
457
458 TArray<FBox> InvokersSeedBounds;
459
460 double NextInvokersUpdateTime;
461 NAVIGATIONSYSTEM_API void UpdateInvokers();
462
463public:
464#if !UE_BUILD_SHIPPING
465 void DebugLogInvokers(FOutputDevice& OutputDevice) const;
466#endif // !UE_BUILD_SHIPPING
467
468protected:
469 NAVIGATIONSYSTEM_API virtual void UpdateNavDataActiveTiles();
470
471private:
472 NAVIGATIONSYSTEM_API void DirtyTilesInBuildBounds();
473
474 void UnregisterInvoker_Internal(const UObject& Invoker);
475
477 void RegisterToRepositoryDelegates();
478
480 void UnregisterFromRepositoryDelegates() const;
481
482public:
483 //----------------------------------------------------------------------//
484 // Blueprint functions
485 //----------------------------------------------------------------------//
486
487 UFUNCTION(BlueprintPure, Category = "AI|Navigation", meta = (WorldContext = "WorldContextObject"))
488 static NAVIGATIONSYSTEM_API UNavigationSystemV1* GetNavigationSystem(UObject* WorldContextObject);
489
491 UFUNCTION(BlueprintPure, Category = "AI|Navigation", meta = (WorldContext = "WorldContextObject", DisplayName = "Project Point to Navigation", ScriptName = "ProjectPointToNavigation"))
492 static NAVIGATIONSYSTEM_API bool K2_ProjectPointToNavigation(UObject* WorldContextObject, const FVector& Point, FVector& ProjectedLocation, ANavigationData* NavData, TSubclassOf<UNavigationQueryFilter> FilterClass, const FVector QueryExtent = FVector::ZeroVector);
493
496 UFUNCTION(BlueprintPure, Category = "AI|Navigation", meta = (WorldContext = "WorldContextObject", DisplayName = "Get Random Reachable Point in Radius", ScriptName = "GetRandomReachablePointInRadius"))
497 static NAVIGATIONSYSTEM_API bool K2_GetRandomReachablePointInRadius(UObject* WorldContextObject, const FVector& Origin, FVector& RandomLocation, float Radius, ANavigationData* NavData = NULL, TSubclassOf<UNavigationQueryFilter> FilterClass = {});
498
501 UFUNCTION(BlueprintCallable, Category = "AI|Navigation", meta = (WorldContext = "WorldContextObject", DisplayName = "Get Random Location in Navigable Radius", ScriptName = "GetRandomLocationInNavigableRadius"))
502 static NAVIGATIONSYSTEM_API bool K2_GetRandomLocationInNavigableRadius(UObject* WorldContextObject, const FVector& Origin, FVector& RandomLocation, float Radius, ANavigationData* NavData = NULL, TSubclassOf<UNavigationQueryFilter> FilterClass = {});
503
505 UFUNCTION(BlueprintPure, Category = "AI|Navigation", meta = (WorldContext = "WorldContextObject"))
506 static NAVIGATIONSYSTEM_API ENavigationQueryResult::Type GetPathCost(UObject* WorldContextObject, const FVector& PathStart, const FVector& PathEnd, double& PathCost, ANavigationData* NavData = NULL, TSubclassOf<UNavigationQueryFilter> FilterClass = {});
507
509 UFUNCTION(BlueprintPure, Category = "AI|Navigation", meta = (WorldContext = "WorldContextObject"))
510 static NAVIGATIONSYSTEM_API ENavigationQueryResult::Type GetPathLength(UObject* WorldContextObject, const FVector& PathStart, const FVector& PathEnd, double& PathLength, ANavigationData* NavData = NULL, TSubclassOf<UNavigationQueryFilter> FilterClass = {});
511
512 UFUNCTION(BlueprintPure, Category="AI|Navigation", meta=(WorldContext="WorldContextObject" ) )
513 static NAVIGATIONSYSTEM_API bool IsNavigationBeingBuilt(UObject* WorldContextObject);
514
515 UFUNCTION(BlueprintPure, Category = "AI|Navigation", meta = (WorldContext = "WorldContextObject"))
516 static NAVIGATIONSYSTEM_API bool IsNavigationBeingBuiltOrLocked(UObject* WorldContextObject);
517
520 UFUNCTION(BlueprintCallable, Category = "AI|Navigation", meta = (WorldContext="WorldContextObject"))
521 static NAVIGATIONSYSTEM_API UNavigationPath* FindPathToLocationSynchronously(UObject* WorldContextObject, const FVector& PathStart, const FVector& PathEnd, AActor* PathfindingContext = NULL, TSubclassOf<UNavigationQueryFilter> FilterClass = {});
522
526 UFUNCTION(BlueprintCallable, Category = "AI|Navigation", meta = (WorldContext="WorldContextObject"))
527 static NAVIGATIONSYSTEM_API UNavigationPath* FindPathToActorSynchronously(UObject* WorldContextObject, const FVector& PathStart, AActor* GoalActor, float TetherDistance = 50.f, AActor* PathfindingContext = NULL, TSubclassOf<UNavigationQueryFilter> FilterClass = {});
528
533 UFUNCTION(BlueprintCallable, Category="AI|Navigation", meta=(WorldContext="WorldContextObject" ))
534 static NAVIGATIONSYSTEM_API bool NavigationRaycast(UObject* WorldContextObject, const FVector& RayStart, const FVector& RayEnd, FVector& HitLocation, TSubclassOf<UNavigationQueryFilter> FilterClass = {}, AController* Querier = NULL);
535
541 static NAVIGATIONSYSTEM_API bool NavigationRaycastWithAdditionalResults(UObject* WorldContextObject, const FVector& RayStart, const FVector& RayEnd, FVector& HitLocation, FNavigationRaycastAdditionalResults* AdditionalResults, TSubclassOf<UNavigationQueryFilter> FilterClass = {}, AController* Querier = NULL);
542
545 UFUNCTION(BlueprintCallable, Category = "AI|Navigation")
546 NAVIGATIONSYSTEM_API void SetMaxSimultaneousTileGenerationJobsCount(int32 MaxNumberOfJobs);
547
549 UFUNCTION(BlueprintCallable, Category = "AI|Navigation")
550 NAVIGATIONSYSTEM_API void ResetMaxSimultaneousTileGenerationJobsCount();
551
557 UFUNCTION(BlueprintCallable, Category = "AI|Navigation")
558 NAVIGATIONSYSTEM_API void RegisterNavigationInvoker(AActor* Invoker, float TileGenerationRadius = 3000, float TileRemovalRadius = 5000);
559
562 UFUNCTION(BlueprintCallable, Category = "AI|Navigation")
563 NAVIGATIONSYSTEM_API void UnregisterNavigationInvoker(AActor* Invoker);
564
565 UFUNCTION(BlueprintCallable, Category = "AI|Navigation|Generation")
566 NAVIGATIONSYSTEM_API void SetGeometryGatheringMode(ENavDataGatheringModeConfig NewMode);
567
568 UFUNCTION(BlueprintCallable, Category = "AI|Navigation", meta=(DisplayName="Replace Area in Octree Data"))
569 NAVIGATIONSYSTEM_API bool K2_ReplaceAreaInOctreeData(const UObject* Object, TSubclassOf<UNavArea> OldArea, TSubclassOf<UNavArea> NewArea);
570
571 inline bool IsActiveTilesGenerationEnabled() const{ return bGenerateNavigationOnlyAroundNavigationInvokers; }
572
577
579 {
581 RegistrationFailed_DataPendingKill, // means navigation data being registered is marked as pending kill
582 RegistrationFailed_AgentAlreadySupported, // this means that navigation agent supported by given nav data is already handled by some other, previously registered instance
583 RegistrationFailed_AgentNotValid, // given instance contains navmesh that doesn't support any of expected agent types, or instance doesn't specify any agent
584 RegistrationFailed_NotSuitable, // given instance had been considered unsuitable by current navigation system instance itself. NOTE: this value is not currently being used by the engine-supplied navigation system classes
586 };
587
588 // EOctreeUpdateMode is deprecated. Use FNavigationOctreeController::EOctreeUpdateMode instead
590 {
591 OctreeUpdate_Default = 0, // regular update, mark dirty areas depending on exported content
592 OctreeUpdate_Geometry = 1, // full update, mark dirty areas for geometry rebuild
593 OctreeUpdate_Modifiers = 2, // quick update, mark dirty areas for modifier rebuild
594 OctreeUpdate_Refresh = 4, // update is used for refresh, don't invalidate pending queue
595 OctreeUpdate_ParentChain = 8, // update child nodes, don't remove anything
596 };
597
598 //~ Begin UObject Interface
599 NAVIGATIONSYSTEM_API virtual void PostInitProperties() override;
600 NAVIGATIONSYSTEM_API virtual void FinishDestroy() override;
601 static NAVIGATIONSYSTEM_API void AddReferencedObjects(UObject* InThis, FReferenceCollector& Collector);
602#if WITH_EDITOR
603 NAVIGATIONSYSTEM_API virtual void PostEditChangeChainProperty(FPropertyChangedChainEvent& PropertyChangedEvent) override;
604 NAVIGATIONSYSTEM_API virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override;
605#endif // WITH_EDITOR
606 //~ End UObject Interface
607
608 NAVIGATIONSYSTEM_API virtual void Tick(float DeltaSeconds) override;
609
610 UWorld* GetWorld() const override { return GetOuterUWorld(); }
611
612 UCrowdManagerBase* GetCrowdManager() const { return CrowdManager.Get(); }
613
614protected:
616
618 NAVIGATIONSYSTEM_API virtual void CreateCrowdManager();
619
623 NAVIGATIONSYSTEM_API void SetSupportedAgentsNavigationClass(int32 AgentIndex, TSubclassOf<ANavigationData> NavigationDataClass);
624
625public:
626 //----------------------------------------------------------------------//
627 //~ Begin Public querying Interface
628 //----------------------------------------------------------------------//
637
645
655
657 NAVIGATIONSYSTEM_API void AbortAsyncFindPathRequest(uint32 AsynPathQueryID);
658
666
672
677 NAVIGATIONSYSTEM_API bool GetRandomReachablePointInRadius(const FVector& Origin, float Radius, FNavLocation& ResultLocation, ANavigationData* NavData = NULL, FSharedConstNavQueryFilter QueryFilter = NULL) const;
678
683 NAVIGATIONSYSTEM_API bool GetRandomPointInNavigableRadius(const FVector& Origin, float Radius, FNavLocation& ResultLocation, ANavigationData* NavData = NULL, FSharedConstNavQueryFilter QueryFilter = NULL) const;
684
687 NAVIGATIONSYSTEM_API ENavigationQueryResult::Type GetPathCost(const FVector& PathStart, const FVector& PathEnd, FVector::FReal& PathCost, const ANavigationData* NavData = NULL, FSharedConstNavQueryFilter QueryFilter = NULL) const;
688
691 NAVIGATIONSYSTEM_API ENavigationQueryResult::Type GetPathLength(const FVector& PathStart, const FVector& PathEnd, FVector::FReal& PathLength, const ANavigationData* NavData = NULL, FSharedConstNavQueryFilter QueryFilter = NULL) const;
692
695 NAVIGATIONSYSTEM_API ENavigationQueryResult::Type GetPathLengthAndCost(const FVector& PathStart, const FVector& PathEnd, FVector::FReal& PathLength, FVector::FReal& PathCost, const ANavigationData* NavData = NULL, FSharedConstNavQueryFilter QueryFilter = NULL) const;
696
697 // @todo document
699 {
700 return ProjectPointToNavigation(Point, OutLocation, Extent, AgentProperties != NULL ? GetNavDataForProps(*AgentProperties, Point) : GetDefaultNavDataInstance(FNavigationSystem::DontCreate), QueryFilter);
701 }
702
703 // @todo document
704 NAVIGATIONSYSTEM_API bool ProjectPointToNavigation(const FVector& Point, FNavLocation& OutLocation, const FVector& Extent = INVALID_NAVEXTENT, const ANavigationData* NavData = NULL, FSharedConstNavQueryFilter QueryFilter = NULL) const;
705
710
714 NAVIGATIONSYSTEM_API virtual const ANavigationData* GetNavDataForProps(const FNavAgentProperties& AgentProperties) const;
715
718 NAVIGATIONSYSTEM_API virtual ANavigationData* GetNavDataForAgentName(const FName AgentName) const;
719
726 NAVIGATIONSYSTEM_API virtual ANavigationData* GetNavDataForProps(const FNavAgentProperties& AgentProperties, const FVector& AgentLocation, const FVector& Extent = INVALID_NAVEXTENT) const;
727
731 virtual INavigationDataInterface* GetMainNavData() const override { return Cast<INavigationDataInterface>(GetDefaultNavDataInstance()); }
732 ANavigationData& GetMainNavDataChecked() const { check(MainNavData); return *MainNavData; }
733
735 NAVIGATIONSYSTEM_API virtual void SetBuildBounds(const FBox& Bounds) override;
736
737 NAVIGATIONSYSTEM_API virtual FBox GetNavigableWorldBounds() const override;
738
739 NAVIGATIONSYSTEM_API virtual bool ContainsNavData(const FBox& Bounds) const override;
740 NAVIGATIONSYSTEM_API virtual FBox ComputeNavDataBounds() const override;
741 NAVIGATIONSYSTEM_API virtual void AddNavigationDataChunk(class ANavigationDataChunkActor& DataChunkActor) override;
742 NAVIGATIONSYSTEM_API virtual void RemoveNavigationDataChunk(class ANavigationDataChunkActor& DataChunkActor) override;
743 NAVIGATIONSYSTEM_API virtual void FillNavigationDataChunkActor(const FBox& QueryBounds, class ANavigationDataChunkActor& DataChunkActor, FBox& OutTilesBounds) override;
744
745 ANavigationData* GetDefaultNavDataInstance() const { return MainNavData; }
746
747 ANavigationData* GetAbstractNavData() const { return AbstractNavData; }
748
753 NAVIGATIONSYSTEM_API virtual ANavigationData* CreateNavigationDataInstanceInLevel(const FNavDataConfig& NavConfig, ULevel* SpawnLevel);
754
755 NAVIGATIONSYSTEM_API FSharedNavQueryFilter CreateDefaultQueryFilterCopy() const;
756
759 NAVIGATIONSYSTEM_API bool ShouldGeneratorRun(const FNavDataGenerator* Generator) const;
760
761 NAVIGATIONSYSTEM_API virtual bool IsNavigationBuilt(const AWorldSettings* Settings) const override;
762
763 NAVIGATIONSYSTEM_API virtual bool IsThereAnywhereToBuildNavigation() const;
764
765 bool ShouldGenerateNavigationEverywhere() const { return bWholeWorldNavigable; }
766
767 bool ShouldAllowClientSideNavigation() const { return bAllowClientSideNavigation; }
768 virtual bool ShouldLoadNavigationOnClient(ANavigationData* NavData = nullptr) const { return bAllowClientSideNavigation; }
769 virtual bool ShouldDiscardSubLevelNavData(ANavigationData* NavData = nullptr) const { return bShouldDiscardSubLevelNavData; }
770
771 NAVIGATIONSYSTEM_API FBox GetWorldBounds() const;
772
773 NAVIGATIONSYSTEM_API FBox GetLevelBounds(ULevel* InLevel) const;
774
775 NAVIGATIONSYSTEM_API bool IsNavigationRelevant(const AActor* TestActor) const;
776
777 NAVIGATIONSYSTEM_API const TSet<FNavigationBounds>& GetNavigationBounds() const;
778
779 static NAVIGATIONSYSTEM_API const FNavDataConfig& GetDefaultSupportedAgent();
780 static NAVIGATIONSYSTEM_API const FNavDataConfig& GetBiggestSupportedAgent(const UWorld* World);
781
782#if WITH_EDITOR
783 static NAVIGATIONSYSTEM_API double GetWorldPartitionNavigationDataBuilderOverlap(const UWorld& World);
784#endif
785
786 NAVIGATIONSYSTEM_API const FNavDataConfig& GetDefaultSupportedAgentConfig() const;
787 inline const TArray<FNavDataConfig>& GetSupportedAgents() const { return SupportedAgents; }
788 NAVIGATIONSYSTEM_API void OverrideSupportedAgents(const TArray<FNavDataConfig>& NewSupportedAgents);
789 NAVIGATIONSYSTEM_API void SetSupportedAgentsMask(const FNavAgentSelector& InSupportedAgentsMask);
790 FNavAgentSelector GetSupportedAgentsMask() const { return SupportedAgentsMask; }
791
792 NAVIGATIONSYSTEM_API virtual void ApplyWorldOffset(const FVector& InOffset, bool bWorldShift) override;
793
795 NAVIGATIONSYSTEM_API bool IsNavigationDirty() const;
796
798 NAVIGATIONSYSTEM_API bool CanRebuildDirtyNavigation() const;
799
800 inline bool SupportsNavigationGeneration() const { return bSupportRebuilding; }
801
802 static NAVIGATIONSYSTEM_API bool DoesPathIntersectBox(const FNavigationPath* Path, const FBox& Box, uint32 StartingIndex = 0, FVector* AgentExtent = NULL);
803 static NAVIGATIONSYSTEM_API bool DoesPathIntersectBox(const FNavigationPath* Path, const FBox& Box, const FVector& AgentLocation, uint32 StartingIndex = 0, FVector* AgentExtent = NULL);
804
805 //----------------------------------------------------------------------//
806 // Active tiles
807 //----------------------------------------------------------------------//
809
811
812 NAVIGATIONSYSTEM_API virtual void UnregisterInvoker(AActor& Invoker);
813
815
816 static NAVIGATIONSYSTEM_API void RegisterNavigationInvoker(AActor& Invoker, float TileGenerationRadius, float TileRemovalRadius,
818 static NAVIGATIONSYSTEM_API void UnregisterNavigationInvoker(AActor& Invoker);
819
820 const TArray<FNavigationInvokerRaw>& GetInvokerLocations() const { return InvokerLocations; }
821 const TArray<FBox>& GetInvokersSeedBounds() const { return InvokersSeedBounds; }
822
823 //----------------------------------------------------------------------//
824 // Bookkeeping
825 //----------------------------------------------------------------------//
826
827 // @todo document
828 NAVIGATIONSYSTEM_API virtual void UnregisterNavData(ANavigationData* NavData);
829
833 NAVIGATIONSYSTEM_API virtual void UnregisterUnusedNavData();
834
836 NAVIGATIONSYSTEM_API virtual void RequestRegistrationDeferred(ANavigationData& NavData);
837
838protected:
839 NAVIGATIONSYSTEM_API void ApplySupportedAgentsFilter();
840
843 NAVIGATIONSYSTEM_API void RegisterNavigationDataInstances();
844
848 NAVIGATIONSYSTEM_API virtual bool ConditionalPopulateNavOctree();
849
851 NAVIGATIONSYSTEM_API virtual void ConstructNavOctree();
852
854 NAVIGATIONSYSTEM_API virtual void ProcessRegistrationCandidates();
855
857 NAVIGATIONSYSTEM_API void ProcessCustomLinkPendingRegistration();
858
860 NAVIGATIONSYSTEM_API virtual void PerformNavigationBoundsUpdate(const TArray<FNavigationBoundsUpdateRequest>& UpdateRequests);
861
863 NAVIGATIONSYSTEM_API void AddNavigationBounds(const FNavigationBounds& NewBounds);
864
866 NAVIGATIONSYSTEM_API virtual void GatherNavigationBounds();
867
870 NAVIGATIONSYSTEM_API virtual void GetInvokerSeedLocations(const UWorld& InWorld, TArray<FVector, TInlineAllocator<32>>& OutSeedLocations);
871
873 NAVIGATIONSYSTEM_API ANavigationData* GetNavDataWithID(const uint16 NavDataID) const;
874
876 NAVIGATIONSYSTEM_API TSharedPtr<const FNavigationElement> GetNavigationElementForUObject(const UObject*) const;
877
879 NAVIGATIONSYSTEM_API FNavigationElementHandle GetNavigationElementHandleForUObject(const UObject*) const;
880
881 static NAVIGATIONSYSTEM_API void RegisterComponentToNavOctree(UActorComponent* Comp);
882 static NAVIGATIONSYSTEM_API void UnregisterComponentToNavOctree(UActorComponent* Comp);
883
884public:
885 NAVIGATIONSYSTEM_API virtual void ReleaseInitialBuildingLock();
886
887 //----------------------------------------------------------------------//
888 // navigation octree related functions
889 //----------------------------------------------------------------------//
890 static NAVIGATIONSYSTEM_API bool SupportsDynamicChanges(UWorld* World);
891 static NAVIGATIONSYSTEM_API FNavigationElementHandle AddNavigationElement(UWorld* World, FNavigationElement&& Element);
892 static NAVIGATIONSYSTEM_API void RemoveNavigationElement(UWorld* World, FNavigationElementHandle ElementHandle);
893 static NAVIGATIONSYSTEM_API void OnNavigationElementUpdated(UWorld* World, FNavigationElementHandle ElementHandle, FNavigationElement&& Element);
894
895 static NAVIGATIONSYSTEM_API void OnNavRelevantObjectRegistered(UObject& Object);
896 static NAVIGATIONSYSTEM_API void UpdateNavRelevantObjectInNavOctree(UObject& Object);
897 static NAVIGATIONSYSTEM_API void OnNavRelevantObjectUnregistered(UObject& Object);
898
899 static NAVIGATIONSYSTEM_API void OnComponentRegistered(UActorComponent* Comp);
900 static NAVIGATIONSYSTEM_API void OnComponentUnregistered(UActorComponent* Comp);
901 static NAVIGATIONSYSTEM_API void RegisterComponent(UActorComponent* Comp);
902 static NAVIGATIONSYSTEM_API void UnregisterComponent(UActorComponent* Comp);
903 static NAVIGATIONSYSTEM_API void OnActorRegistered(AActor* Actor);
904 static NAVIGATIONSYSTEM_API void OnActorUnregistered(AActor* Actor);
905
907 static NAVIGATIONSYSTEM_API void UpdateActorInNavOctree(AActor& Actor);
908 static NAVIGATIONSYSTEM_API void UpdateComponentInNavOctree(UActorComponent& Comp);
910 static NAVIGATIONSYSTEM_API void UpdateActorAndComponentsInNavOctree(AActor& Actor, bool bUpdateAttachedActors = true);
912 static NAVIGATIONSYSTEM_API void UpdateNavOctreeAfterMove(USceneComponent* Comp);
913
914protected:
916 static NAVIGATIONSYSTEM_API void RegisterNavRelevantObjectStatic(const INavRelevantInterface& NavRelevantObject, const UObject& Object);
917
919 NAVIGATIONSYSTEM_API void RegisterNavRelevantObjectInternal(const INavRelevantInterface& NavRelevantObject, const UObject& Object);
920
922 static NAVIGATIONSYSTEM_API void UnregisterNavRelevantObjectStatic(const UObject& Object);
923
925 NAVIGATIONSYSTEM_API void UnregisterNavRelevantObjectInternal(const UObject& Object);
926
932 static NAVIGATIONSYSTEM_API void UpdateNavRelevantObjectInNavOctreeStatic(
934 const UObject& InObject,
937
945 static NAVIGATIONSYSTEM_API int32 GetAllAttachedActors(const AActor& RootActor, TArray<AActor*>& OutAttachedActors);
946
948 static NAVIGATIONSYSTEM_API void UpdateAttachedActorsInNavOctree(AActor& RootActor);
949
950public:
952 static NAVIGATIONSYSTEM_API void ClearNavOctreeAll(AActor* Actor);
953
955 static NAVIGATIONSYSTEM_API void UpdateNavOctreeBounds(AActor* Actor);
956
957 NAVIGATIONSYSTEM_API void AddDirtyArea(const FBox& NewArea, ENavigationDirtyFlag Flags, const FName& DebugReason = NAME_None);
960 UE_DEPRECATED(5.5, "Use the version taking ENavigationDirtyFlag instead.")
961 NAVIGATIONSYSTEM_API void AddDirtyArea(const FBox& NewArea, int32 Flags, const FName& DebugReason = NAME_None);
962 UE_DEPRECATED(5.5, "Use the version taking ENavigationDirtyFlag instead.")
963 NAVIGATIONSYSTEM_API void AddDirtyArea(const FBox& NewArea, int32 Flags, const TFunction<UObject*()>& ObjectProviderFunc, const FName& DebugReason = NAME_None);
964 UE_DEPRECATED(5.5, "Use the version taking ENavigationDirtyFlag instead.")
965 NAVIGATIONSYSTEM_API void AddDirtyAreas(const TArray<FBox>& NewAreas, int32 Flags, const FName& DebugReason = NAME_None);
966 NAVIGATIONSYSTEM_API bool HasDirtyAreasQueued() const;
967 NAVIGATIONSYSTEM_API int32 GetNumDirtyAreas() const;
968 float GetDirtyAreaWarningSizeThreshold() const { return DirtyAreaWarningSizeThreshold; }
969
970 const FNavigationOctree* GetNavOctree() const { return DefaultOctreeController.GetOctree(); }
971 FNavigationOctree* GetMutableNavOctree() { return DefaultOctreeController.GetMutableOctree(); }
972
973 UE_DEPRECATED(5.5, "This method is no longer used by the navigation system.")
975
976 inline const FOctreeElementId2* GetNavOctreeIdForElement(FNavigationElementHandle Element) const
977 {
978 return DefaultOctreeController.GetNavOctreeIdForElement(Element);
979 }
980 UE_DEPRECATED(5.5, "Use GetNavOctreeIdForElement instead.")
981 NAVIGATIONSYSTEM_API const FOctreeElementId2* GetObjectsNavOctreeId(const UObject& Object) const;
982
983 inline bool HasPendingUpdateForElement(FNavigationElementHandle Element) const
984 {
985 return DefaultOctreeController.HasPendingUpdateForElement(Element);
986 }
987 UE_DEPRECATED(5.5, "Use HasPendingUpdateForElement instead.")
988 NAVIGATIONSYSTEM_API bool HasPendingObjectNavOctreeId(UObject* Object) const;
989
990 UE_DEPRECATED(5.5, "This functionality should not be exposed and will be removed.")
991 NAVIGATIONSYSTEM_API void RemoveObjectsNavOctreeId(const UObject& Object);
992
993 UE_DEPRECATED(5.5, "This functionality should not be exposed publicly and will be removed. Derived classes should use RemoveFromNavOctree instead.")
994 NAVIGATIONSYSTEM_API void RemoveNavOctreeElementId(const FOctreeElementId2& ElementId, int32 UpdateFlags);
995
997 NAVIGATIONSYSTEM_API void RemoveFromNavOctree(const FOctreeElementId2& ElementId, int32 UpdateFlags);
998public:
999
1000 NAVIGATIONSYSTEM_API const FNavigationRelevantData* GetDataForElement(FNavigationElementHandle Element) const;
1001 UE_DEPRECATED(5.5, "Use GetDataForElement instead.")
1002 NAVIGATIONSYSTEM_API const FNavigationRelevantData* GetDataForObject(const UObject& Object) const;
1003
1005
1006 UE_DEPRECATED(5.5, "Use GetMutableDataForElement instead.")
1007 NAVIGATIONSYSTEM_API FNavigationRelevantData* GetMutableDataForObject(const UObject& Object);
1008
1010 NAVIGATIONSYSTEM_API void FindElementsInNavOctree(const FBox& QueryBox, const FNavigationOctreeFilter& Filter, TArray<FNavigationOctreeElement>& Elements);
1011
1013 NAVIGATIONSYSTEM_API void UpdateNavOctreeElement(FNavigationElementHandle Handle, const TSharedRef<const FNavigationElement>& Element, int32 UpdateFlags);
1014 UE_DEPRECATED(5.5, "Use the version taking FNavigationElement instead.")
1015 void UpdateNavOctreeElement(UObject* ElementOwner, INavRelevantInterface* ElementInterface, int32 UpdateFlags);
1016
1017 UE_DEPRECATED(5.5, "This method will no longer be public and should not be called directly.")
1018 NAVIGATIONSYSTEM_API void UpdateNavOctreeParentChain(UObject* ElementOwner, bool bSkipElementOwnerUpdate = false);
1019
1021 NAVIGATIONSYSTEM_API bool UpdateNavOctreeElementBounds(FNavigationElementHandle Handle, const FBox& NewBounds, TConstArrayView<FBox> DirtyAreas);
1022
1023 UE_DEPRECATED(5.5, "Use the version taking FNavigationElement instead.")
1024 NAVIGATIONSYSTEM_API bool UpdateNavOctreeElementBounds(UObject& Object, const FBox& NewBounds, TConstArrayView<FBox> DirtyAreas);
1025
1028 UE_DEPRECATED(5.5, "Use the version taking FNavigationElement instead.")
1029 NAVIGATIONSYSTEM_API bool ReplaceAreaInOctreeData(const UObject& Object, TSubclassOf<UNavArea> OldArea, TSubclassOf<UNavArea> NewArea, bool bReplaceChildClasses = false);
1030
1031 //----------------------------------------------------------------------//
1032 // Custom navigation links
1033 //----------------------------------------------------------------------//
1035 NAVIGATIONSYSTEM_API void UnregisterCustomLink(INavLinkCustomInterface& CustomLink);
1036 int32 GetNumCustomLinks() const { return CustomNavLinksMap.Num(); }
1037
1038 static NAVIGATIONSYSTEM_API void RequestCustomLinkRegistering(INavLinkCustomInterface& CustomLink, UObject* OwnerOb);
1039 static NAVIGATIONSYSTEM_API void RequestCustomLinkUnregistering(INavLinkCustomInterface& CustomLink, UObject* ObjectOb);
1040
1041 UE_DEPRECATED(5.3, "LinkIds are now based on FNavLinkId call the version of this function that takes FNavLinkId. This function only returns nullptr.")
1042 INavLinkCustomInterface* GetCustomLink(uint32 UniqueLinkId) const { return nullptr; }
1043
1046
1048 NAVIGATIONSYSTEM_API void UpdateCustomLink(const INavLinkCustomInterface* CustomLink);
1049
1051 static NAVIGATIONSYSTEM_API FBox ComputeCustomLinkBounds(const INavLinkCustomInterface& CustomLink);
1052
1053 //----------------------------------------------------------------------//
1054 // Areas
1055 //----------------------------------------------------------------------//
1056 static NAVIGATIONSYSTEM_API void RequestAreaRegistering(UClass* NavAreaClass);
1057 static NAVIGATIONSYSTEM_API void RequestAreaUnregistering(UClass* NavAreaClass);
1058
1060 NAVIGATIONSYSTEM_API int32 GetSupportedAgentIndex(const ANavigationData* NavData) const;
1061
1063 NAVIGATIONSYSTEM_API int32 GetSupportedAgentIndex(const FNavAgentProperties& NavAgent) const;
1064
1065 //----------------------------------------------------------------------//
1066 // Filters
1067 //----------------------------------------------------------------------//
1068
1070 NAVIGATIONSYSTEM_API void DescribeFilterFlags(UEnum* FlagsEnum) const;
1071
1073 NAVIGATIONSYSTEM_API void DescribeFilterFlags(const TArray<FString>& FlagsDesc) const;
1074
1076 NAVIGATIONSYSTEM_API void ResetCachedFilter(TSubclassOf<UNavigationQueryFilter> FilterClass);
1077
1078 //----------------------------------------------------------------------//
1079 // building
1080 //----------------------------------------------------------------------//
1081
1083 NAVIGATIONSYSTEM_API virtual void Build();
1084
1086 NAVIGATIONSYSTEM_API virtual void CancelBuild();
1087
1088 // @todo document
1089 NAVIGATIONSYSTEM_API void OnPIEStart();
1090 // @todo document
1091 NAVIGATIONSYSTEM_API void OnPIEEnd();
1092
1093 // @todo document
1094 inline bool IsNavigationBuildingLocked(uint8 Flags = ~0) const { return (NavBuildingLockFlags & Flags) != 0; }
1095
1098 {
1099 return (NavBuildingLockFlags & ~ENavigationBuildLock::InitialLock) != 0;
1100 }
1101
1103 inline bool IsNavigationOctreeLocked() const { return DefaultOctreeController.IsNavigationOctreeLocked(); }
1104
1105 // @todo document
1106 UFUNCTION(BlueprintCallable, Category = "AI|Navigation")
1107 NAVIGATIONSYSTEM_API void OnNavigationBoundsUpdated(ANavMeshBoundsVolume* NavVolume);
1108 NAVIGATIONSYSTEM_API virtual void OnNavigationBoundsAdded(ANavMeshBoundsVolume* NavVolume);
1109 NAVIGATIONSYSTEM_API virtual void OnNavigationBoundsRemoved(ANavMeshBoundsVolume* NavVolume);
1110
1112 NAVIGATIONSYSTEM_API bool IsNavigationBuildInProgress();
1113
1114 NAVIGATIONSYSTEM_API virtual void OnNavigationGenerationFinished(ANavigationData& NavData);
1115
1117 NAVIGATIONSYSTEM_API int32 GetNumRemainingBuildTasks() const;
1118
1120 NAVIGATIONSYSTEM_API int32 GetNumRunningBuildTasks() const;
1121
1122protected:
1124 NAVIGATIONSYSTEM_API virtual void DoInitialSetup();
1125
1127 NAVIGATIONSYSTEM_API virtual void UpdateAbstractNavData();
1128
1131 NAVIGATIONSYSTEM_API virtual void AddLevelToOctree(ULevel& Level);
1132
1134 NAVIGATIONSYSTEM_API virtual void OnBeginTearingDown(UWorld* World);
1135
1136public:
1138 NAVIGATIONSYSTEM_API virtual void CleanUp(const FNavigationSystem::ECleanupMode Mode = FNavigationSystem::ECleanupMode::CleanupUnsafe) override;
1139
1143 NAVIGATIONSYSTEM_API virtual void OnInitializeActors() override;
1144
1146 NAVIGATIONSYSTEM_API virtual void OnWorldInitDone(FNavigationSystemRunMode Mode);
1147
1149 inline virtual bool IsWorldInitDone() const override { return bWorldInitDone; }
1150 inline bool IsInitialized() const { return bWorldInitDone; }
1151
1152 inline FNavigationSystemRunMode GetRunMode() const { return OperationMode; }
1153
1155 NAVIGATIONSYSTEM_API void InitializeLevelCollisions();
1156
1158 {
1159 Rebuild,
1160 RebuildIfNotInEditor,
1161 NoRebuild
1162 };
1163 NAVIGATIONSYSTEM_API void AddNavigationBuildLock(uint8 Flags);
1164 NAVIGATIONSYSTEM_API void RemoveNavigationBuildLock(uint8 Flags, const ELockRemovalRebuildAction RebuildAction = ELockRemovalRebuildAction::Rebuild);
1165
1166 NAVIGATIONSYSTEM_API void SetNavigationOctreeLock(bool bLock);
1167
1170 virtual bool GetIsAutoUpdateEnabled() const { return bNavigationAutoUpdateEnabled; }
1171
1172#if WITH_EDITOR
1175
1176 inline bool IsNavigationRegisterLocked() const { return NavUpdateLockFlags != 0; }
1178 inline bool IsNavigationUpdateLocked() const { return IsNavigationRegisterLocked(); }
1181
1183
1184#endif // WITH_EDITOR
1185
1186 inline bool IsSetUpForLazyGeometryExporting() const { return bGenerateNavigationOnlyAroundNavigationInvokers; }
1187
1188 UE_DEPRECATED(5.5, "This creation flow is deprecation. Use FNavigationSystem::AddNavigationSystemToWorld instead.")
1190
1192 static NAVIGATIONSYSTEM_API UNavigationSystemV1* GetCurrent(UObject* WorldContextObject);
1193
1195
1196 // Fetch the array of all nav-agent properties.
1197 NAVIGATIONSYSTEM_API void GetNavAgentPropertiesArray(TArray<FNavAgentProperties>& OutNavAgentProperties) const;
1198
1199 static inline bool ShouldUpdateNavOctreeOnComponentChange()
1200 {
1201 return (bUpdateNavOctreeOnComponentChange && !bStaticRuntimeNavigation)
1202#if WITH_EDITOR
1204#endif
1205 ;
1206 }
1207
1213 NAVIGATIONSYSTEM_API virtual bool ShouldCreateNavigationSystemInstance(const UWorld* World) const override;
1214
1215 static inline bool IsNavigationSystemStatic()
1216 {
1217#if WITH_EDITOR
1218 return (bStaticRuntimeNavigation && !(GIsEditor && !GIsPlayInEditorWorld))
1219 || IsRunningCookCommandlet(); // consider navigation static when cooking to eliminate useless operations
1220#else
1221 return bStaticRuntimeNavigation;
1222#endif // WITH_EDITOR
1223 }
1224
1232 static NAVIGATIONSYSTEM_API void ConfigureAsStatic(bool bEnableStatic = true);
1233
1234 static NAVIGATIONSYSTEM_API void SetUpdateNavOctreeOnComponentChange(bool bNewUpdateOnComponentChange);
1235
1239 NAVIGATIONSYSTEM_API bool HandleCycleNavDrawnCommand( const TCHAR* Cmd, FOutputDevice& Ar );
1240 NAVIGATIONSYSTEM_API bool HandleCountNavMemCommand();
1241
1242 //----------------------------------------------------------------------//
1243 // debug
1244 //----------------------------------------------------------------------//
1245 NAVIGATIONSYSTEM_API void CycleNavigationDataDrawn();
1246
1248
1249 FNavigationSystemRunMode GetOperationMode() const { return OperationMode; }
1250
1251protected:
1252
1253 UPROPERTY()
1255
1257 TArray<FAsyncPathFindingQuery> AsyncPathFindingQueries;
1258
1260 TArray<FAsyncPathFindingQuery> AsyncPathFindingCompletedQueries;
1261
1263 FGraphEventRef AsyncPathFindingTask;
1264
1266 TAtomic<bool> bAbortAsyncQueriesRequested;
1267
1268 FCriticalSection NavDataRegistration;
1269
1271
1272 FNavigationOctreeController DefaultOctreeController;
1273
1274 TMap<FNavLinkId, FNavigationSystem::FCustomLinkOwnerInfo> CustomNavLinksMap;
1275
1276 FNavigationDirtyAreasController DefaultDirtyAreasController;
1277
1280
1281 // async queries
1282 FCriticalSection NavDataRegistrationSection;
1283
1284#if WITH_EDITOR
1286#endif
1288
1291
1297 uint8 bAsyncBuildPaused : 1; // mz@todo remove, replaced by bIsPIEActive and IsGameWorld
1298protected:
1299
1302
1305
1306#if !UE_BUILD_SHIPPING
1309#endif // !UE_BUILD_SHIPPING
1310
1316
1318
1320
1322 NAVIGATIONSYSTEM_API void OnPostLoadMap(UWorld* LoadedWorld);
1323#if WITH_EDITOR
1326#endif
1328 NAVIGATIONSYSTEM_API void OnNavigationDirtied(const FBox& Bounds);
1329
1331
1333 NAVIGATIONSYSTEM_API virtual void OnReloadComplete(EReloadCompleteReason Reason);
1334
1339 NAVIGATIONSYSTEM_API virtual ERegistrationResult RegisterNavData(ANavigationData* NavData);
1340
1342 NAVIGATIONSYSTEM_API void RegisterNavAreaClass(UClass* NavAreaClass);
1343
1345 NAVIGATIONSYSTEM_API void UnregisterNavAreaClass(UClass* NavAreaClass);
1346
1347 NAVIGATIONSYSTEM_API void OnNavigationAreaEvent(UClass* AreaClass, ENavAreaEvent::Type Event);
1348
1349 NAVIGATIONSYSTEM_API FSetElementId RegisterNavigationElementWithNavOctree(const TSharedRef<const FNavigationElement>& Element, int32 UpdateFlags);
1350 UE_DEPRECATED(5.5, "Use the version taking FNavigationElement as parameter instead.")
1352
1353 NAVIGATIONSYSTEM_API void UnregisterNavigationElementWithOctree(const TSharedRef<const FNavigationElement>& Element, int32 UpdateFlags);
1354 UE_DEPRECATED(5.5, "Use the version taking FNavigationElement as parameter instead.")
1355 NAVIGATIONSYSTEM_API void UnregisterNavOctreeElement(UObject* ElementOwner, INavRelevantInterface* ElementInterface, int32 UpdateFlags);
1356
1359 UE_DEPRECATED(5.5, "Use the version taking FNavigationElement instead.")
1360 NAVIGATIONSYSTEM_API bool GetNavOctreeElementData(const UObject& NodeOwner, int32& DirtyFlags, FBox& DirtyBounds);
1361
1365 NAVIGATIONSYSTEM_API void AddElementToNavOctree(const FNavigationDirtyElement& DirtyElement);
1366
1368
1370 NAVIGATIONSYSTEM_API void AddLevelCollisionToOctree(ULevel* Level);
1371
1373 NAVIGATIONSYSTEM_API void RemoveLevelCollisionFromOctree(ULevel* Level);
1374
1375 NAVIGATIONSYSTEM_API virtual void SpawnMissingNavigationData();
1376
1383 NAVIGATIONSYSTEM_API uint8 FillInstantiatedDataMask(TBitArray<>& OutInstantiatedMask, ULevel* InLevel = nullptr);
1384
1390 NAVIGATIONSYSTEM_API void SpawnMissingNavigationDataInLevel(const TBitArray<>& InInstantiatedMask, ULevel* InLevel = nullptr);
1391
1392public:
1393 NAVIGATIONSYSTEM_API void DemandLazyDataGathering(FNavigationRelevantData& ElementData);
1394
1395private:
1396 // Reduces a nav bounds only to regions overlapping loaded world partition regions (if any exist)
1397 void CheckToLimitNavigationBoundsToLoadedRegions(FNavigationBounds& OutBounds) const;
1398
1399protected:
1400 NAVIGATIONSYSTEM_API virtual void RebuildDirtyAreas(float DeltaSeconds);
1401
1402 // adds navigation bounds update request to a pending list
1403 NAVIGATIONSYSTEM_API void AddNavigationBoundsUpdateRequest(const FNavigationBoundsUpdateRequest& UpdateRequest);
1404
1406 NAVIGATIONSYSTEM_API virtual void RebuildAll(bool bIsLoadTime = false);
1407
1409 NAVIGATIONSYSTEM_API void OnLevelAddedToWorld(ULevel* InLevel, UWorld* InWorld);
1410
1412 NAVIGATIONSYSTEM_API void OnLevelRemovedFromWorld(ULevel* InLevel, UWorld* InWorld);
1413
1415 void OnWorldPostActorTick(UWorld* World, ELevelTick TickType, float DeltaTime)
1416 {
1418 PostponeAsyncQueries();
1419 }
1420
1422 NAVIGATIONSYSTEM_API void AddAsyncQuery(const FAsyncPathFindingQuery& Query);
1423
1427
1430
1432 NAVIGATIONSYSTEM_API void DispatchAsyncQueriesResults(const TArray<FAsyncPathFindingQuery>& PathFindingQueries) const;
1433
1438 NAVIGATIONSYSTEM_API void PostponeAsyncQueries();
1439
1441 NAVIGATIONSYSTEM_API virtual void DestroyNavOctree();
1442
1446 NAVIGATIONSYSTEM_API bool RequiresNavOctree() const;
1447
1451 NAVIGATIONSYSTEM_API ERuntimeGenerationType GetRuntimeGenerationType() const;
1452
1453 NAVIGATIONSYSTEM_API void LogNavDataRegistrationResult(ERegistrationResult);
1454
1458 NAVIGATIONSYSTEM_API bool IsAllowedToRebuild() const;
1459
1461 NAVIGATIONSYSTEM_API void OnGenerateNavigationOnlyAroundNavigationInvokersChanged();
1462
1463 //----------------------------------------------------------------------//
1464 // new stuff
1465 //----------------------------------------------------------------------//
1466public:
1467 NAVIGATIONSYSTEM_API void VerifyNavigationRenderingComponents(const bool bShow);
1469 NAVIGATIONSYSTEM_API virtual int GetNavigationBoundsForNavData(const ANavigationData& NavData, TArray<FBox>& OutBounds, ULevel* InLevel = nullptr) const;
1470 static NAVIGATIONSYSTEM_API INavigationDataInterface* GetNavDataForActor(const AActor& Actor);
1471 NAVIGATIONSYSTEM_API virtual void Configure(const UNavigationSystemConfig& Config) override;
1472 NAVIGATIONSYSTEM_API virtual void AppendConfig(const UNavigationSystemConfig& NewConfig) override;
1473
1474#if !UE_BUILD_SHIPPING
1476#endif // !UE_BUILD_SHIPPING
1477
1478 //----------------------------------------------------------------------//
1479 // DEPRECATED
1480 //----------------------------------------------------------------------//
1481public:
1482 // Note that this function was only deprecated for blueprint in 5.1
1483 // Note2: originally deprecated as 4.22, bumped up to 5.1 as per comment above.
1484 UE_DEPRECATED(5.1, "This version is deprecated. Please use GetRandomLocationInNavigableRadius instead")
1485 UFUNCTION(BlueprintPure, Category = "AI|Navigation", meta = (WorldContext = "WorldContextObject", DisplayName = "GetRandomPointInNavigableRadius", ScriptName = "GetRandomPointInNavigableRadius", DeprecatedFunction, DeprecationMessage = "GetRandomPointInNavigableRadius is deprecated. Use GetRandomLocationInNavigableRadius instead"))
1486 static NAVIGATIONSYSTEM_API bool K2_GetRandomPointInNavigableRadius(UObject* WorldContextObject, const FVector& Origin, FVector& RandomLocation, float Radius, ANavigationData* NavData = NULL, TSubclassOf<UNavigationQueryFilter> FilterClass = {});
1487};
1488
1489//----------------------------------------------------------------------//
1490// UNavigationSystemModuleConfig
1491//----------------------------------------------------------------------//
1492UCLASS(MinimalAPI)
1494{
1496
1497protected:
1499 UPROPERTY(EditAnywhere, Category = Navigation)
1500 uint32 bStrictlyStatic : 1;
1501
1502 UPROPERTY(EditAnywhere, Category = Navigation)
1503 uint32 bCreateOnClient : 1;
1504
1505 UPROPERTY(EditAnywhere, Category = Navigation)
1506 uint32 bAutoSpawnMissingNavData : 1;
1507
1508 UPROPERTY(EditAnywhere, Category = Navigation)
1509 uint32 bSpawnNavDataInNavBoundsLevel : 1;
1510
1511public:
1513
1514 NAVIGATIONSYSTEM_API virtual void PostInitProperties() override;
1515
1516 NAVIGATIONSYSTEM_API virtual UNavigationSystemBase* CreateAndConfigureNavigationSystem(UWorld& World) const override;
1517
1518#if WITH_EDITOR
1519 NAVIGATIONSYSTEM_API virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
1520#endif // WITH_EDITOR
1521
1522protected:
1523#if WITH_EDITOR
1524 friend UNavigationSystemV1;
1525#endif // WITH_EDITOR
1526 NAVIGATIONSYSTEM_API void UpdateWithNavSysCDO(const UNavigationSystemV1& NavSysCDO);
1527};
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define NULL
Definition oodle2base.h:134
#define check(expr)
Definition AssertionMacros.h:314
bool GIsPlayInEditorWorld
Definition CoreGlobals.cpp:403
FORCEINLINE bool IsRunningCookCommandlet()
Definition CoreGlobals.h:259
#define GIsEditor
Definition CoreGlobals.h:233
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define TRACE_CPUPROFILER_EVENT_SCOPE(Name)
Definition CpuProfilerTrace.h:528
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define DECLARE_MULTICAST_DELEGATE(DelegateName)
Definition DelegateCombinations.h:23
#define DECLARE_MULTICAST_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:49
#define DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(DelegateName, Param1Type, Param1Name)
Definition DelegateCombinations.h:53
ELevelTick
Definition EngineBaseTypes.h:70
ERuntimeGenerationType
Definition NavigationData.h:530
ENavigationDirtyFlag
Definition NavigationDirtyArea.h:13
ENavigationInvokerPriority
Definition NavigationInvokerPriority.h:9
FNavigationSystemRunMode
Definition NavigationSystemBase.h:34
#define INVALID_NAVEXTENT
Definition NavigationTypes.h:22
ENavDataGatheringModeConfig
Definition NavigationTypes.h:80
#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
EReloadCompleteReason
Definition UObjectGlobals.h:3217
UE_AUTORTFM_NOAUTORTFM void HashObject(UObjectBase *Object)
Definition UObjectHash.cpp:1949
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition Controller.h:41
Definition NavMeshBoundsVolume.h:24
Definition NavigationDataChunkActor.h:14
Definition NavigationData.h:547
Definition Engine.Build.cs:7
Definition IDelegateInstance.h:14
Definition MovingWindowAverageFast.h:13
T GetAverage() const
Definition MovingWindowAverageFast.h:47
void PushValue(T Value)
Definition MovingWindowAverageFast.h:24
Definition NameTypes.h:617
Definition NavDataGenerator.h:16
Definition NavigationSystem.h:212
double MaxTimeSliceDuration
Definition NavigationSystem.h:277
FMovingWindowAverageFast< double, 256 > MovingWindowTileRegenTime
Definition NavigationSystem.h:259
NAVIGATIONSYSTEM_API void PushTileHistoryData(const int32 NavDataIndex, const FTileHistoryData &TileData)
Definition NavigationSystem.cpp:540
int32 GetNavDataIdx() const
Definition NavigationSystem.h:245
double MinTimeSliceDuration
Definition NavigationSystem.h:274
NAVIGATIONSYSTEM_API double GetAverageTileWaitTime(const int32 NavDataIndex) const
Definition NavigationSystem.cpp:549
void SetNavDataIdx(int32 InNavDataIdx)
Definition NavigationSystem.h:246
NAVIGATIONSYSTEM_API void ResetTileWaitTimeArrays(const TArray< TObjectPtr< ANavigationData > > &NavDataSet)
Definition NavigationSystem.cpp:512
double GetAverageTileRegenTime() const
Definition NavigationSystem.h:218
NAVIGATIONSYSTEM_API void LogTileStatistics(const TArray< TObjectPtr< ANavigationData > > &NavDataSet) const
Definition NavigationSystem.cpp:678
NAVIGATIONSYSTEM_API void SetMinTimeSliceDuration(double NewMinTimeSliceDuration)
Definition NavigationSystem.cpp:656
void PushTileRegenTime(double NewTime)
Definition NavigationSystem.h:216
bool bDoTimeSlicedUpdate
Definition NavigationSystem.h:291
double TileHistoryStartTime
Definition NavigationSystem.h:270
NAVIGATIONSYSTEM_API void ResetTileWaitTime(const int32 NavDataIndex)
Definition NavigationSystem.cpp:570
NAVIGATIONSYSTEM_API void CalcTimeSliceDuration(const TArray< TObjectPtr< ANavigationData > > &NavDataSet, int32 NumTilesToRegen, const TArray< double > &CurrentTileRegenDurations)
Definition NavigationSystem.cpp:606
bool DoTimeSlicedUpdate() const
Definition NavigationSystem.h:233
float MaxDesiredTileRegenDuration
Definition NavigationSystem.h:285
uint64 FrameNumOld
Definition NavigationSystem.h:279
NAVIGATIONSYSTEM_API void ResetTileHistoryData(const TArray< TObjectPtr< ANavigationData > > &NavDataSet)
Definition NavigationSystem.cpp:530
TArray< TArray< FTileHistoryData > > TileHistoryData
Definition NavigationSystem.h:269
FNavRegenTimeSlicer & GetTimeSlicer()
Definition NavigationSystem.h:248
double TimeLastCall
Definition NavigationSystem.h:287
int32 NavDataIdx
Definition NavigationSystem.h:289
NAVIGATIONSYSTEM_API void PushTileWaitTime(const int32 NavDataIndex, const double NewTime)
Definition NavigationSystem.cpp:521
NAVIGATIONSYSTEM_API void SetMaxTimeSliceDuration(double NewMaxTimeSliceDuration)
Definition NavigationSystem.cpp:663
NAVIGATIONSYSTEM_API void CalcAverageDeltaTime(uint64 FrameNum)
Definition NavigationSystem.cpp:593
NAVIGATIONSYSTEM_API void SetMaxDesiredTileRegenDuration(float NewMaxDesiredTileRegenDuration)
Definition NavigationSystem.cpp:670
double GetAverageDeltaTime() const
Definition NavigationSystem.h:220
TArray< TArray< double > > TileWaitTimes
Definition NavigationSystem.h:265
NAVIGATIONSYSTEM_API FNavRegenTimeSliceManager()
Definition NavigationSystem.cpp:578
FNavRegenTimeSlicer TimeSlicer
Definition NavigationSystem.h:256
FMovingWindowAverageFast< double, 256 > MovingWindowDeltaTime
Definition NavigationSystem.h:262
const FNavRegenTimeSlicer & GetTimeSlicer() const
Definition NavigationSystem.h:249
Definition NavigationSystem.h:129
NAVIGATIONSYSTEM_API void DebugResetLongTimeSliceFunction() const
double OriginalDuration
Definition NavigationSystem.h:177
FName DebugSectionName
Definition NavigationSystem.h:186
void DebugSetSectionName(FName InDebugSectionName) const
Definition NavigationSystem.h:170
double GetRemainingDurationFraction() const
Definition NavigationSystem.h:154
NAVIGATIONSYSTEM_API bool TestTimeSliceFinished() const
Definition NavigationSystem.cpp:486
NAVIGATIONSYSTEM_API void SetupTimeSlice(double SliceDuration)
Definition NavigationSystem.cpp:452
NAVIGATIONSYSTEM_API void DebugSetLongTimeSliceData(TFunction< void(FName, double)> LongTimeSliceFunction, double LongTimeSliceDuration) const
double DebugLongTimeSliceDuration
Definition NavigationSystem.h:185
double RemainingDuration
Definition NavigationSystem.h:178
double StartTime
Definition NavigationSystem.h:179
double TimeLastTested
Definition NavigationSystem.h:180
bool IsTimeSliceFinishedCached() const
Definition NavigationSystem.h:152
TFunction< void(FName, double)> DebugLongTimeSliceFunction
Definition NavigationSystem.h:184
NAVIGATIONSYSTEM_API void EndTimeSliceAndAdjustDuration()
Definition NavigationSystem.cpp:467
bool bTimeSliceFinishedCached
Definition NavigationSystem.h:181
double GetRemainingDuration() const
Definition NavigationSystem.h:153
NAVIGATIONSYSTEM_API void StartTimeSlice()
Definition NavigationSystem.cpp:459
double GetStartTime() const
Definition NavigationSystem.h:148
Definition NavigationOctree.h:173
Definition UObjectGlobals.h:1292
static COREUOBJECT_API FObjectInitializer & Get()
Definition UObjectGlobals.cpp:5001
Definition UnrealType.h:3087
Definition GenericOctreePublic.h:15
Definition OutputDevice.h:133
Definition UObjectGlobals.h:2492
Definition CoreMisc.h:28
Definition SetUtilities.h:95
Definition NavLinkCustomInterface.h:40
Definition NavRelevantInterface.h:49
Definition NavigationDataInterface.h:26
Definition NavigationInvokerInterface.h:18
Definition Array.h:670
Definition Atomic.h:538
Definition BitArray.h:350
Definition AssetRegistryState.h:50
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition SharedPointer.h:153
Definition ContainerAllocationPolicies.h:894
Definition SoftObjectPtr.h:763
Definition SubclassOf.h:30
Definition ActorComponent.h:152
Definition Class.h:3793
Definition CrowdManagerBase.h:14
Definition Class.h:2791
Definition Level.h:423
Definition NavArea.h:18
Definition NavigationObjectRepository.h:27
Definition NavigationPath.h:25
Definition NavigationQueryFilter.h:107
Definition NavigationSystemBase.h:245
Definition NavigationSystemConfig.h:15
Definition NavigationSystem.h:1494
Definition NavigationSystem.h:296
ELockRemovalRebuildAction
Definition NavigationSystem.h:1158
bool IsInitialized() const
Definition NavigationSystem.h:1150
uint8 bCleanUpDone
Definition NavigationSystem.h:1296
TSet< TObjectPtr< const UClass > > NavAreaClasses
Definition NavigationSystem.h:1317
DECLARE_MULTICAST_DELEGATE_OneParam(FOnNavigationDirty, const FBox &)
virtual ~UNavigationSystemV1()=default
FNavigationOctree * GetMutableNavOctree()
Definition NavigationSystem.h:971
static bool IsNavigationSystemStatic()
Definition NavigationSystem.h:1215
const TArray< FNavDataConfig > & GetSupportedAgents() const
Definition NavigationSystem.h:787
static NAVIGATIONSYSTEM_API FNavigationSystemExec ExecHandler
Definition NavigationSystem.h:1308
virtual bool ShouldLoadNavigationOnClient(ANavigationData *NavData=nullptr) const
Definition NavigationSystem.h:768
uint8 bInitialLevelsAdded
Definition NavigationSystem.h:1293
uint8 InitialNavBuildingLockFlags
Definition NavigationSystem.h:1290
bool IsNavigationBuildingPermanentlyLocked() const
Definition NavigationSystem.h:1097
bool ProjectPointToNavigation(const FVector &Point, FNavLocation &OutLocation, const FVector &Extent=INVALID_NAVEXTENT, const FNavAgentProperties *AgentProperties=NULL, FSharedConstNavQueryFilter QueryFilter=NULL)
Definition NavigationSystem.h:698
bool IsNavigationBuildingLocked(uint8 Flags=~0) const
Definition NavigationSystem.h:1094
const FNavigationOctree * GetNavOctree() const
Definition NavigationSystem.h:970
bool ShouldAllowClientSideNavigation() const
Definition NavigationSystem.h:767
ANavigationData * GetDefaultNavDataInstance() const
Definition NavigationSystem.h:745
uint8 bWorldInitDone
Definition NavigationSystem.h:1294
bool SupportsNavigationGeneration() const
Definition NavigationSystem.h:800
FBox NavigableWorldBounds
Definition NavigationSystem.h:1301
static NAVIGATIONSYSTEM_API bool bUpdateNavOctreeOnComponentChange
Definition NavigationSystem.h:1313
FNavRegenTimeSliceManager NavRegenTimeSliceManager
Definition NavigationSystem.h:1319
uint8 NavBuildingLockFlags
Definition NavigationSystem.h:1287
void OnWorldPostActorTick(UWorld *World, ELevelTick TickType, float DeltaTime)
Definition NavigationSystem.h:1415
FNavRegenTimeSliceManager & GetMutableNavRegenTimeSliceManager()
Definition NavigationSystem.h:1247
static NAVIGATIONSYSTEM_API FOnNavigationDirty NavigationDirtyEvent
Definition NavigationSystem.h:576
ANavigationData * GetAbstractNavData() const
Definition NavigationSystem.h:747
UWorld * GetWorld() const override
Definition NavigationSystem.h:610
bool ShouldGenerateNavigationEverywhere() const
Definition NavigationSystem.h:765
const TArray< FNavigationInvokerRaw > & GetInvokerLocations() const
Definition NavigationSystem.h:820
virtual INavigationDataInterface * GetMainNavData() const override
Definition NavigationSystem.h:731
virtual bool GetIsAutoUpdateEnabled() const
Definition NavigationSystem.h:1170
EOctreeUpdateMode
Definition NavigationSystem.h:590
FNavigationSystemRunMode GetRunMode() const
Definition NavigationSystem.h:1152
bool IsNavigationOctreeLocked() const
Definition NavigationSystem.h:1103
FNavAgentSelector GetSupportedAgentsMask() const
Definition NavigationSystem.h:790
const TArray< FBox > & GetInvokersSeedBounds() const
Definition NavigationSystem.h:821
ERegistrationResult
Definition NavigationSystem.h:579
@ RegistrationFailed_AgentAlreadySupported
Definition NavigationSystem.h:582
@ RegistrationSuccessful
Definition NavigationSystem.h:585
@ RegistrationFailed_AgentNotValid
Definition NavigationSystem.h:583
@ RegistrationError
Definition NavigationSystem.h:580
@ RegistrationFailed_NotSuitable
Definition NavigationSystem.h:584
@ RegistrationFailed_DataPendingKill
Definition NavigationSystem.h:581
FDelegateHandle ReloadCompleteDelegateHandle
Definition NavigationSystem.h:1330
UCrowdManagerBase * GetCrowdManager() const
Definition NavigationSystem.h:612
uint8 bAsyncBuildPaused
Definition NavigationSystem.h:1297
virtual bool ShouldDiscardSubLevelNavData(ANavigationData *NavData=nullptr) const
Definition NavigationSystem.h:769
int32 CurrentlyDrawnNavDataIndex
Definition NavigationSystem.h:1304
bool IsSetUpForLazyGeometryExporting() const
Definition NavigationSystem.h:1186
static NAVIGATIONSYSTEM_API bool bIsPIEActive
Definition NavigationSystem.h:1315
FNavigationSystemRunMode GetOperationMode() const
Definition NavigationSystem.h:1249
ANavigationData & GetMainNavDataChecked() const
Definition NavigationSystem.h:732
uint8 bInitialSetupHasBeenPerformed
Definition NavigationSystem.h:1292
static NAVIGATIONSYSTEM_API bool bNavigationAutoUpdateEnabled
Definition NavigationSystem.h:1312
static NAVIGATIONSYSTEM_API bool bStaticRuntimeNavigation
Definition NavigationSystem.h:1314
Definition Object.h:95
Definition World.h:918
UpdateFlags
Definition DetourCrowd.h:208
Definition NavigationSystem.h:108
Type
Definition NavigationSystem.h:110
@ NoUpdateInEditor
Definition NavigationSystem.h:111
@ Custom
Definition NavigationSystem.h:114
@ NoUpdateInPIE
Definition NavigationSystem.h:112
@ InitialLock
Definition NavigationSystem.h:113
@ AllowUnregister
Definition NavigationSystemBase.h:49
Definition NavigationTypes.h:627
Type
Definition NavigationTypes.h:629
Type
Definition NavigationSystemTypes.h:87
@ Regular
Definition NavigationSystemTypes.h:88
Definition NavigationTypes.h:38
bool ShouldLoadNavigationOnClient(ANavigationData &NavData)
Definition NavigationSystem.cpp:314
const FName DebugTimeSliceDefaultSectionName
Definition NavigationSystem.h:95
void MakeAllComponentsNeverAffectNav(AActor &Actor)
Definition NavigationSystem.cpp:331
ECreateIfMissing
Definition NavigationSystemTypes.h:159
@ DontCreate
Definition NavigationSystemTypes.h:161
Definition NavigationSystem.cpp:346
const NAVIGATIONSYSTEM_API FVector PathNodeBoxExtent
const FVector PathOffset(0, 0, 15)
Definition NavigationSystem.h:68
const float PathLineThickness
Definition NavigationSystem.cpp:347
@ false
Definition radaudio_common.h:23
Definition NavigationData.h:1143
Definition NavigationTypes.h:453
Definition NavAgentSelector.h:9
Definition NavigationTypes.h:525
Definition NavigationTypes.h:150
Definition NavigationTypes.h:252
Definition NavigationBounds.h:26
Definition NavigationBounds.h:8
Definition NavigationDirtyAreasController.h:25
Definition NavigationDirtyElement.h:13
Definition NavigationElement.h:36
Definition NavigationElement.h:94
Definition NavigationSystemTypes.h:108
Definition NavigationSystemTypes.h:121
Definition NavigationOctreeController.h:27
Definition NavigationOctree.h:34
Definition NavigationData.h:87
Definition NavigationData.h:79
Definition NavigationRelevantData.h:16
Definition NavigationRelevantData.h:40
Definition NavigationSystem.h:100
virtual bool Exec_Runtime(UWorld *Inworld, const TCHAR *Cmd, FOutputDevice &Ar) override
Definition NavigationSystem.cpp:5510
Definition NavigationSystem.h:80
INavLinkCustomInterface * LinkInterface
Definition NavigationSystem.h:82
FWeakObjectPtr LinkOwner
Definition NavigationSystem.h:81
bool IsValid() const
Definition NavigationSystem.h:87
FCustomLinkOwnerInfo()
Definition NavigationSystem.h:84
Definition NavigationSystemTypes.h:62
Definition NavigationData.h:64
Definition UnrealType.h:7001
Definition UnrealType.h:6865
Definition ResourceArray.h:31
Definition NavigationSystem.h:192
float TileRegenTime
Definition NavigationSystem.h:198
int64 StartRegenFrame
Definition NavigationSystem.h:204
int64 EndRegenFrame
Definition NavigationSystem.h:207
int32 TileX
Definition NavigationSystem.h:194
float TileWaitTime
Definition NavigationSystem.h:201
int32 TileY
Definition NavigationSystem.h:195
Definition WeakObjectPtr.h:49
COREUOBJECT_API bool IsValid(bool bEvenIfGarbage, bool bThreadsafeTest=false) const
Definition WeakObjectPtr.cpp:53
Definition ObjectPtr.h:488
Definition WeakInterfacePtr.h:18
Definition WeakObjectPtrTemplates.h:25
double FReal
Definition Vector.h:55