Files
UnrealEngineUWP/Engine/Source/Runtime/NavigationSystem/Public/NavigationInvokerComponent.h
aris theophanidis e6e1bbb3ba [Navmesh] Addition of invoker priorities
#rb Mikko.Mononen
#preflight 645951366534a4f504d98f0d

[CL 25382949 by aris theophanidis in ue5-main branch]
2023-05-08 22:04:12 -04:00

52 lines
1.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "UObject/ObjectMacros.h"
#include "UObject/UObjectGlobals.h"
#include "AI/Navigation/NavAgentSelector.h"
#include "AI/Navigation/NavigationTypes.h"
#include "Components/ActorComponent.h"
#include "NavigationInvokerComponent.generated.h"
class UNavigationSystemV1;
enum class ENavigationInvokerPriority : uint8;
UCLASS(ClassGroup = (Navigation), meta = (BlueprintSpawnableComponent))
class NAVIGATIONSYSTEM_API UNavigationInvokerComponent : public UActorComponent
{
GENERATED_BODY()
protected:
UPROPERTY(EditAnywhere, Category = Navigation, meta = (ClampMin = "0.1", UIMin = "0.1"))
float TileGenerationRadius;
UPROPERTY(EditAnywhere, Category = Navigation, meta = (ClampMin = "0.1", UIMin = "0.1"))
float TileRemovalRadius;
/** restrict navigation generation to specific agents */
UPROPERTY(EditAnywhere, Category = Navigation)
FNavAgentSelector SupportedAgents;
/** Experimental invocation priority. It will modify the order in which invoked tiles are being built if SortPendingTilesMethod is set to SortByPriority. */
UPROPERTY(EditAnywhere, Category = Navigation)
ENavigationInvokerPriority Priority;
public:
UNavigationInvokerComponent(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
void RegisterWithNavigationSystem(UNavigationSystemV1& NavSys);
/** Sets generation/removal ranges. Doesn't force navigation system's update.
* Will get picked up the next time NavigationSystem::UpdateInvokers gets called */
void SetGenerationRadii(const float GenerationRadius, const float RemovalRadius);
float GetGenerationRadius() const { return TileGenerationRadius; }
float GetRemovalRadius() const { return TileRemovalRadius; }
virtual void Activate(bool bReset = false) override;
virtual void Deactivate() override;
virtual void PostInitProperties() override;
};