Files
UnrealEngineUWP/Engine/Source/Runtime/NavigationSystem/Public/NavigationDataHandler.h
mieszko zielinski f7f3268d52 Extracted NavigationSystemV1's logic concerning NavOctree and navigation DirtyAreas into a separate structures for reusability
Notable changes:
- Added FNavigationOctreeController that wraps up what used to be NavigationSystemV1's navoctree-related logic
- Added FNavigationDirtyAreasController that wraps up what used to be NavigationSystemV1's DirtyAreas-related logic
- Added FNavigationDataHandler that is a helper struct that wraps up what used to be NavigationSystemV1's logic related to operation involving both navoctree and dirty areas
- Deprecated both FNavDataConfig.NavigationDataClass and FNavDataConfig.NavigationDataClassName and replaced them with a single NavDataClass property
- FNavigationOctree is not responsible for hashing element objects and storing their ElementId
- NavOctree elements how know about the octree they belong to (via a member property).

[at]Yoan.StAmant, [at]Maxime.Mercier, [at]Guillaume.Guay
#rb Yoan.StAmant


#ROBOMERGE-OWNER: mieszko.zielinski
#ROBOMERGE-AUTHOR: mieszko.zielinski
#ROBOMERGE-SOURCE: CL 7249089 via CL 7262555
#ROBOMERGE-BOT: (v369-7254125)

[CL 7262559 by mieszko zielinski in Main branch]
2019-07-10 13:31:21 -04:00

29 lines
1.6 KiB
C

// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "NavigationOctreeController.h"
#include "NavigationDirtyAreasController.h"
struct NAVIGATIONSYSTEM_API FNavigationDataHandler
{
FNavigationOctreeController& OctreeController;
FNavigationDirtyAreasController& DirtyAreasController;
FNavigationDataHandler(FNavigationOctreeController& InOctreeController, FNavigationDirtyAreasController& InDirtyAreasController);
void RemoveNavOctreeElementId(const FOctreeElementId& ElementId, int32 UpdateFlags);
FSetElementId RegisterNavOctreeElement(UObject& ElementOwner, INavRelevantInterface& ElementInterface, int32 UpdateFlags);
void AddElementToNavOctree(const FNavigationDirtyElement& DirtyElement);
void UnregisterNavOctreeElement(UObject& ElementOwner, INavRelevantInterface& ElementInterface, int32 UpdateFlags);
void UpdateNavOctreeElement(UObject& ElementOwner, INavRelevantInterface& ElementInterface, int32 UpdateFlags);
void UpdateNavOctreeParentChain(UObject& ElementOwner, bool bSkipElementOwnerUpdate = false);
bool UpdateNavOctreeElementBounds(UActorComponent& Comp, const FBox& NewBounds, const FBox& DirtyArea);
void FindElementsInNavOctree(const FBox& QueryBox, const FNavigationOctreeFilter& Filter, TArray<FNavigationOctreeElement>& Elements);
bool ReplaceAreaInOctreeData(const UObject& Object, TSubclassOf<UNavArea> OldArea, TSubclassOf<UNavArea> NewArea, bool bReplaceChildClasses);
void AddLevelCollisionToOctree(ULevel& Level);
void RemoveLevelCollisionFromOctree(ULevel& Level);
void UpdateActorAndComponentsInNavOctree(AActor& Actor);
void ProcessPendingOctreeUpdates();
};