Files
UnrealEngineUWP/Engine/Source/Runtime/AIModule/Classes/EnvironmentQuery/Tests/EnvQueryTest_Pathfinding.h
stephan delmer ec1dd2882d Changing the Pathfinding and PathfindingBatch EQS tests to use a function to get the nav filter.
#rb Daniel.Broder
#rnx

#ROBOMERGE-AUTHOR: stephan.delmer
#ROBOMERGE-SOURCE: CL 19028451 via CL 19028460 via CL 19028968 via CL 19029041 via CL 19029156 via CL 19031956
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v917-18934589)

[CL 19032180 by stephan delmer in ue5-main branch]
2022-02-17 03:44:22 -05:00

82 lines
3.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "UObject/ObjectMacros.h"
#include "Templates/SubclassOf.h"
#include "NavFilters/NavigationQueryFilter.h"
#include "AI/Navigation/NavigationTypes.h"
#include "NavigationSystemTypes.h"
#include "EnvironmentQuery/EnvQueryContext.h"
#include "DataProviders/AIDataProvider.h"
#include "EnvironmentQuery/EnvQueryTest.h"
#include "EnvQueryTest_Pathfinding.generated.h"
class ANavigationData;
class UNavigationSystemV1;
UENUM()
namespace EEnvTestPathfinding
{
enum Type
{
PathExist,
PathCost,
PathLength,
};
}
UCLASS()
class AIMODULE_API UEnvQueryTest_Pathfinding : public UEnvQueryTest
{
GENERATED_UCLASS_BODY()
/** testing mode */
UPROPERTY(EditDefaultsOnly, Category=Pathfinding)
TEnumAsByte<EEnvTestPathfinding::Type> TestMode;
/** context: other end of pathfinding test */
UPROPERTY(EditDefaultsOnly, Category=Pathfinding)
TSubclassOf<UEnvQueryContext> Context;
/** pathfinding direction */
UPROPERTY(EditDefaultsOnly, Category=Pathfinding)
FAIDataProviderBoolValue PathFromContext;
/** if set, items with failed path will be invalidated (PathCost, PathLength) */
UPROPERTY(EditDefaultsOnly, Category=Pathfinding, AdvancedDisplay)
FAIDataProviderBoolValue SkipUnreachable;
/** navigation filter to use in pathfinding */
UPROPERTY(EditDefaultsOnly, Category=Pathfinding)
TSubclassOf<UNavigationQueryFilter> FilterClass;
virtual void RunTest(FEnvQueryInstance& QueryInstance) const override;
virtual FText GetDescriptionTitle() const override;
virtual FText GetDescriptionDetails() const override;
#if WITH_EDITOR
/** update test properties after changing mode */
virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override;
#endif
virtual void PostLoad() override;
protected:
DECLARE_DELEGATE_RetVal_SevenParams(bool, FTestPathSignature, const FVector&, const FVector&, EPathFindingMode::Type, const ANavigationData&, UNavigationSystemV1&, FSharedConstNavQueryFilter, const UObject*);
DECLARE_DELEGATE_RetVal_SevenParams(float, FFindPathSignature, const FVector&, const FVector&, EPathFindingMode::Type, const ANavigationData&, UNavigationSystemV1&, FSharedConstNavQueryFilter, const UObject*);
bool TestPathFrom(const FVector& ItemPos, const FVector& ContextPos, EPathFindingMode::Type Mode, const ANavigationData& NavData, UNavigationSystemV1& NavSys, FSharedConstNavQueryFilter NavFilter, const UObject* PathOwner) const;
bool TestPathTo(const FVector& ItemPos, const FVector& ContextPos, EPathFindingMode::Type Mode, const ANavigationData& NavData, UNavigationSystemV1& NavSys, FSharedConstNavQueryFilter NavFilter, const UObject* PathOwner) const;
float FindPathCostFrom(const FVector& ItemPos, const FVector& ContextPos, EPathFindingMode::Type Mode, const ANavigationData& NavData, UNavigationSystemV1& NavSys, FSharedConstNavQueryFilter NavFilter, const UObject* PathOwner) const;
float FindPathCostTo(const FVector& ItemPos, const FVector& ContextPos, EPathFindingMode::Type Mode, const ANavigationData& NavData, UNavigationSystemV1& NavSys, FSharedConstNavQueryFilter NavFilter, const UObject* PathOwner) const;
float FindPathLengthFrom(const FVector& ItemPos, const FVector& ContextPos, EPathFindingMode::Type Mode, const ANavigationData& NavData, UNavigationSystemV1& NavSys, FSharedConstNavQueryFilter NavFilter, const UObject* PathOwner) const;
float FindPathLengthTo(const FVector& ItemPos, const FVector& ContextPos, EPathFindingMode::Type Mode, const ANavigationData& NavData, UNavigationSystemV1& NavSys, FSharedConstNavQueryFilter NavFilter, const UObject* PathOwner) const;
ANavigationData* FindNavigationData(UNavigationSystemV1& NavSys, UObject* Owner) const;
virtual TSubclassOf<UNavigationQueryFilter> GetNavFilterClass(FEnvQueryInstance& QueryInstance) const;
};