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

#include <BTTask_PlayMontage.h>

Inheritance diagram for UBTTask_PlayMontage:

Classes

struct  FBTTaskPlayMontageMemory
 

Public Member Functions

 UBTTask_PlayMontage ()
 

Public Attributes

UAnimMontage * Montage = nullptr
 
float PlayRate = 1.0f
 
float InTimeToStartMontageAt = 0.0f
 
bool bStopAllMontages = true
 

Protected Member Functions

virtual EBTNodeResult::Type ExecuteTask (UBehaviorTreeComponent &OwnerComp, uint8 *NodeMemory) override
 
virtual EBTNodeResult::Type AbortTask (UBehaviorTreeComponent &OwnerComp, uint8 *NodeMemory) override
 
virtual void TickTask (UBehaviorTreeComponent &OwnerComp, uint8 *NodeMemory, float DeltaSeconds) override
 
virtual uint16 GetInstanceMemorySize () const override
 
virtual FString GetStaticDescription () const override
 

Detailed Description

A behavior tree task node that plays an animation montage on an AI character.

Constructor & Destructor Documentation

◆ UBTTask_PlayMontage()

UBTTask_PlayMontage::UBTTask_PlayMontage ( )
14{
15 NodeName = TEXT("Play Montage");
16 INIT_TASK_NODE_NOTIFY_FLAGS();
17}

Member Function Documentation

◆ AbortTask()

EBTNodeResult::Type UBTTask_PlayMontage::AbortTask ( UBehaviorTreeComponent & OwnerComp,
uint8 * NodeMemory )
overrideprotectedvirtual
41{
42 return EBTNodeResult::Aborted;
43}

◆ ExecuteTask()

EBTNodeResult::Type UBTTask_PlayMontage::ExecuteTask ( UBehaviorTreeComponent & OwnerComp,
uint8 * NodeMemory )
overrideprotectedvirtual
20{
21 TRACE_CPUPROFILER_EVENT_SCOPE(UBTTask_PlayMontage::ExecuteTask);
22 SCOPE_CYCLE_COUNTER(STATGROUP_AIToolKit_Behaviors);
23 SCOPE_CYCLE_COUNTER(STATGROUP_AIToolKit_Tasks);
24
25 FBTTaskPlayMontageMemory* PlayMontageMemory = reinterpret_cast<FBTTaskPlayMontageMemory*>(NodeMemory);
26 if(PlayMontageMemory == nullptr){return EBTNodeResult::Failed;}
27 PlayMontageMemory->StartTime = GetWorld()->GetTimeSeconds();
28 IAIActionsInterface* AIActions = Cast<IAIActionsInterface>(OwnerComp.GetAIOwner());
29 if(AIActions != nullptr)
30 {
31 if(Montage != nullptr)
32 {
33 PlayMontageMemory->DelayDuration = AIActions->PlayAnimationMontage(Montage, PlayRate, InTimeToStartMontageAt, bStopAllMontages);
34 return EBTNodeResult::InProgress;
35 }
36 }
37 return EBTNodeResult::Failed;
38}
Definition AIActionsInterface.h:20
virtual float PlayAnimationMontage(UAnimMontage *Montage, const float PlayRate=1.0f, const float InTimeToStartMontageAt=0.0f, const bool bStopAllMontages=true)=0
UAnimMontage * Montage
Definition BTTask_PlayMontage.h:22
float PlayRate
Definition BTTask_PlayMontage.h:24
float InTimeToStartMontageAt
Definition BTTask_PlayMontage.h:26
bool bStopAllMontages
Definition BTTask_PlayMontage.h:28
virtual EBTNodeResult::Type ExecuteTask(UBehaviorTreeComponent &OwnerComp, uint8 *NodeMemory) override
Definition BTTask_PlayMontage.cpp:19

◆ GetInstanceMemorySize()

uint16 UBTTask_PlayMontage::GetInstanceMemorySize ( ) const
overrideprotectedvirtual
62{
63 return sizeof(FBTTaskPlayMontageMemory);
64}

◆ GetStaticDescription()

FString UBTTask_PlayMontage::GetStaticDescription ( ) const
overrideprotectedvirtual
67{
68 FString Description;// = Super::GetStaticDescription();
69 if(Montage != nullptr)
70 {
71 Description += FString::Printf(TEXT("\nMontage: %s"), *Montage->GetName());
72 Description += FString::Printf(TEXT("\nPlayRate %i"), FMath::RoundToInt(PlayRate));
73 Description += FString::Printf(TEXT("\nTime To Start At %i"), FMath::RoundToInt(InTimeToStartMontageAt));
74 Description += FString::Printf(TEXT("\nStop All Montages: %s"), bStopAllMontages ? TEXT("True") : TEXT("False"));
75 }
76 else
77 {
78 Description += FString::Printf(TEXT("\nMontage: NULL"));
79 }
80
81 return Description;
82}

◆ TickTask()

void UBTTask_PlayMontage::TickTask ( UBehaviorTreeComponent & OwnerComp,
uint8 * NodeMemory,
float DeltaSeconds )
overrideprotectedvirtual
46{
47 TRACE_CPUPROFILER_EVENT_SCOPE(UBTTask_PlayMontage::TickTask);
48 SCOPE_CYCLE_COUNTER(STATGROUP_AIToolKit_Behaviors);
49 SCOPE_CYCLE_COUNTER(STATGROUP_AIToolKit_Tasks);
50
51 Super::TickTask(OwnerComp, NodeMemory, DeltaSeconds);
52 const FBTTaskPlayMontageMemory* PlayMontageMemory = reinterpret_cast<FBTTaskPlayMontageMemory*>(NodeMemory);
53 if(PlayMontageMemory == nullptr){FinishLatentTask(OwnerComp, EBTNodeResult::Failed);}
54
55 if (GetWorld()->GetTimeSeconds() - PlayMontageMemory->StartTime >= PlayMontageMemory->DelayDuration)
56 {
57 FinishLatentTask(OwnerComp, EBTNodeResult::Succeeded);
58 }
59}
virtual void TickTask(UBehaviorTreeComponent &OwnerComp, uint8 *NodeMemory, float DeltaSeconds) override
Definition BTTask_PlayMontage.cpp:45

Member Data Documentation

◆ bStopAllMontages

bool UBTTask_PlayMontage::bStopAllMontages = true

◆ InTimeToStartMontageAt

float UBTTask_PlayMontage::InTimeToStartMontageAt = 0.0f

◆ Montage

UAnimMontage* UBTTask_PlayMontage::Montage = nullptr

◆ PlayRate

float UBTTask_PlayMontage::PlayRate = 1.0f

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