Space Plunder
Loading...
Searching...
No Matches
FStateTree_MoveTo Struct Reference

#include <STT_MoveTo.h>

Inheritance diagram for FStateTree_MoveTo:

Public Types

using FInstanceDataType = FStateTreeMoveToInstanceData
 

Public Member Functions

 FStateTree_MoveTo ()
 
virtual const UStruct * GetInstanceDataType () const override
 
virtual EStateTreeRunStatus EnterState (FStateTreeExecutionContext &Context, const FStateTreeTransitionResult &Transition) const override
 
virtual EStateTreeRunStatus Tick (FStateTreeExecutionContext &Context, const float DeltaTime) const override
 
virtual void ExitState (FStateTreeExecutionContext &Context, const FStateTreeTransitionResult &Transition) const override
 

Public Attributes

float AcceptableRadius
 
TSubclassOf< UNavigationQueryFilter > FilterClass
 
bool bObserveValue = false
 
float ObservedValueTolerance
 
uint32 bTrackMovingGoal: 1
 
uint32 bAllowStrafe: 1
 
uint32 bAllowPartialPath: 1
 
uint32 bStopOnOverlap: 1
 
uint32 bProjectGoalLocation: 1
 
uint32 bUsePathfinding: 1
 

Member Typedef Documentation

◆ FInstanceDataType

Constructor & Destructor Documentation

◆ FStateTree_MoveTo()

FStateTree_MoveTo::FStateTree_MoveTo ( )
13{
14 AcceptableRadius = GET_AI_CONFIG_VAR(AcceptanceRadius);
15 bShouldCallTick = true;
17 // bReachTestIncludesGoalRadius = bReachTestIncludesAgentRadius = bStopOnOverlap = GET_AI_CONFIG_VAR(bFinishMoveOnGoalOverlap);
18 bAllowStrafe = GET_AI_CONFIG_VAR(bAllowStrafing);
19 bAllowPartialPath = GET_AI_CONFIG_VAR(bAcceptPartialPaths);
20 bTrackMovingGoal = true;
22 bUsePathfinding = true;
23 bStopOnOverlap = true;
24
25}
uint32 bStopOnOverlap
Definition STT_MoveTo.h:77
float AcceptableRadius
Definition STT_MoveTo.h:61
uint32 bAllowStrafe
Definition STT_MoveTo.h:73
uint32 bTrackMovingGoal
Definition STT_MoveTo.h:71
uint32 bUsePathfinding
Definition STT_MoveTo.h:82
uint32 bAllowPartialPath
Definition STT_MoveTo.h:75
float ObservedValueTolerance
Definition STT_MoveTo.h:67
uint32 bProjectGoalLocation
Definition STT_MoveTo.h:79

Member Function Documentation

◆ EnterState()

EStateTreeRunStatus FStateTree_MoveTo::EnterState ( FStateTreeExecutionContext & Context,
const FStateTreeTransitionResult & Transition ) const
overridevirtual
29{
30 FInstanceDataType& InstanceData = Context.GetInstanceData(*this);
31 InstanceData.PreviousGoalLocation = FAISystem::InvalidLocation;
32 InstanceData.MoveRequestID = FAIRequestID::InvalidRequest;
33 if(Context.GetOwner() == nullptr || Context.GetWorld() == nullptr){return EStateTreeRunStatus::Failed;}
34 const APawn* OwnerPawn = Cast<APawn>(Context.GetOwner());
35 if(OwnerPawn == nullptr){return EStateTreeRunStatus::Failed;}
36
37 AAIController* OwnerController = Cast<AAIController>(OwnerPawn->GetController());
38 if(OwnerController == nullptr)
39 {
40 UE_LOG(LogAIToolKit, Error, TEXT("FStateTree_MoveTo::ExecuteTask failed since AIController is missing."));
41 return EStateTreeRunStatus::Failed;
42 }
43 EPathFollowingRequestResult::Type Request;
44 if(InstanceData.MoveToActor != nullptr)
45 {
46 Request = OwnerController->MoveToActor(InstanceData.MoveToActor, AcceptableRadius, bStopOnOverlap, bUsePathfinding, bAllowStrafe, FilterClass, bAllowPartialPath);
47 }
48 else if(!InstanceData.MoveToLocation.IsNearlyZero())
49 {
50 Request = OwnerController->MoveToLocation(InstanceData.MoveToLocation, AcceptableRadius, bStopOnOverlap, bUsePathfinding, bProjectGoalLocation, bAllowStrafe, FilterClass, bAllowPartialPath);
51 }
52 return EStateTreeRunStatus::Running;
53}
FStateTreeMoveToInstanceData FInstanceDataType
Definition STT_MoveTo.h:51
TSubclassOf< UNavigationQueryFilter > FilterClass
Definition STT_MoveTo.h:63
FVector PreviousGoalLocation
Definition STT_MoveTo.h:27

◆ ExitState()

void FStateTree_MoveTo::ExitState ( FStateTreeExecutionContext & Context,
const FStateTreeTransitionResult & Transition ) const
overridevirtual
89{
90 FStateTreeTaskCommonBase::ExitState(Context, Transition);
91}

◆ GetInstanceDataType()

virtual const UStruct * FStateTree_MoveTo::GetInstanceDataType ( ) const
inlineoverridevirtual
52{ return FInstanceDataType::StaticStruct(); }

◆ Tick()

EStateTreeRunStatus FStateTree_MoveTo::Tick ( FStateTreeExecutionContext & Context,
const float DeltaTime ) const
overridevirtual
56{
57 const FInstanceDataType& InstanceData = Context.GetInstanceData(*this);
58 const APawn* OwnerPawn = Cast<APawn>(Context.GetOwner());
59 if (OwnerPawn == nullptr) {
60 return EStateTreeRunStatus::Failed;
61 }
62
63 const AAIController* OwnerController = Cast<AAIController>(OwnerPawn->GetController());
64 if (OwnerController == nullptr) {
65 return EStateTreeRunStatus::Failed;
66 }
67
68 // Check if target is an actor.
69 if (InstanceData.MoveToActor != nullptr) {
70 if (OwnerController->GetPathFollowingComponent()->DidMoveReachGoal()) {
71 return EStateTreeRunStatus::Succeeded;
72 }
73 }
74 // Check if target is a location.
75 else if (!InstanceData.MoveToLocation.IsNearlyZero()) {
76 FVector CurrentLocation = OwnerPawn->GetActorLocation();
77 float DistanceToGoal = FVector::Dist(CurrentLocation, InstanceData.MoveToLocation);
78
79 if (DistanceToGoal <= AcceptableRadius) {
80 return EStateTreeRunStatus::Succeeded;
81 }
82 }
83 // Continue running if the goal is not yet reached.
84 return EStateTreeRunStatus::Running;
85}

Member Data Documentation

◆ AcceptableRadius

float FStateTree_MoveTo::AcceptableRadius

◆ bAllowPartialPath

uint32 FStateTree_MoveTo::bAllowPartialPath

◆ bAllowStrafe

uint32 FStateTree_MoveTo::bAllowStrafe

◆ bObserveValue

bool FStateTree_MoveTo::bObserveValue = false

◆ bProjectGoalLocation

uint32 FStateTree_MoveTo::bProjectGoalLocation

◆ bStopOnOverlap

uint32 FStateTree_MoveTo::bStopOnOverlap

◆ bTrackMovingGoal

uint32 FStateTree_MoveTo::bTrackMovingGoal

if set, path to goal actor will update itself when actor moves

◆ bUsePathfinding

uint32 FStateTree_MoveTo::bUsePathfinding

if set, move will use pathfinding. Not exposed on purpose, please use BTTask_MoveDirectlyToward

◆ FilterClass

TSubclassOf<UNavigationQueryFilter> FStateTree_MoveTo::FilterClass

◆ ObservedValueTolerance

float FStateTree_MoveTo::ObservedValueTolerance

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