Space Plunder
Loading...
Searching...
No Matches
UALS_BTTask_GetRandomLocation Class Reference

#include <ALS_BTTask_GetRandomLocation.h>

Inheritance diagram for UALS_BTTask_GetRandomLocation:

Public Member Functions

 UALS_BTTask_GetRandomLocation ()
 
virtual EBTNodeResult::Type ExecuteTask (UBehaviorTreeComponent &OwnerComp, uint8 *NodeMemory) override
 
virtual FString GetStaticDescription () const override
 

Public Attributes

float MaxDistance = 1000.0f
 
TSubclassOf< UNavigationQueryFilter > Filter = nullptr
 

Detailed Description

Picks a random location reachable through NavMesh within the Max Distance from the Owning Pawn's current location and assigns it to the specified Blackboard Key.

Constructor & Destructor Documentation

◆ UALS_BTTask_GetRandomLocation()

UALS_BTTask_GetRandomLocation::UALS_BTTask_GetRandomLocation ( )
11{
12 NodeName = "Get Random Location";
13
14 BlackboardKey.AddVectorFilter(this, GET_MEMBER_NAME_CHECKED(UALS_BTTask_GetRandomLocation, BlackboardKey));
15}
Definition ALS_BTTask_GetRandomLocation.h:16

Member Function Documentation

◆ ExecuteTask()

EBTNodeResult::Type UALS_BTTask_GetRandomLocation::ExecuteTask ( UBehaviorTreeComponent & OwnerComp,
uint8 * NodeMemory )
overridevirtual
18{
19 UWorld* World = GetWorld();
20 UNavigationSystemV1* NavSys = FNavigationSystem::GetCurrent<UNavigationSystemV1>(World);
21 APawn* Pawn = OwnerComp.GetAIOwner()->GetPawn();
22
23 if (NavSys && Pawn)
24 {
25 FSharedConstNavQueryFilter SharedFilter = nullptr;
26
27 if (Filter)
28 {
29 const ANavigationData* NavData = NavSys->GetDefaultNavDataInstance(FNavigationSystem::DontCreate);
30 if (NavData)
31 {
32 SharedFilter = UNavigationQueryFilter::GetQueryFilter(*NavData, World, Filter);
33 }
34 }
35
36 const FVector Origin = Pawn->GetActorLocation();
37 FNavLocation Destination;
38
39 if (NavSys->GetRandomReachablePointInRadius(Origin, MaxDistance, Destination, nullptr, SharedFilter))
40 {
41 OwnerComp.GetBlackboardComponent()->SetValueAsVector(BlackboardKey.SelectedKeyName, Destination.Location);
42 return EBTNodeResult::Succeeded;
43 }
44 }
45
46 return EBTNodeResult::Failed;
47}
float MaxDistance
Definition ALS_BTTask_GetRandomLocation.h:24
TSubclassOf< UNavigationQueryFilter > Filter
Definition ALS_BTTask_GetRandomLocation.h:28

◆ GetStaticDescription()

FString UALS_BTTask_GetRandomLocation::GetStaticDescription ( ) const
overridevirtual
50{
51 return FString::Printf(TEXT("Get Random Location\nMax Distance: %d\nFilter:%s"), FMath::RoundToInt(MaxDistance),
52 Filter ? *GetNameSafe(Filter.Get()) : TEXT("None"));
53}

Member Data Documentation

◆ Filter

TSubclassOf<UNavigationQueryFilter> UALS_BTTask_GetRandomLocation::Filter = nullptr

Navigation Query filter used when picking the location, only picks locations reachable using this filter when assigned.

◆ MaxDistance

float UALS_BTTask_GetRandomLocation::MaxDistance = 1000.0f

Maximum distance the random location picked may be from pawn.


The documentation for this class was generated from the following files: