Files
UnrealEngineUWP/Engine/Plugins/Runtime/StateTree/Source/StateTreeModule/Private/Tasks/StateTreeDelayTask.cpp
Yoan StAmant fba345e98b [StateTree ] added Delay and DebugText tasks
#rnx
#rb mikko.mononen
#preflight 627115a3f96717d2a1f3ebc2

[CL 20023815 by Yoan StAmant in ue5-main branch]
2022-05-03 08:30:05 -04:00

29 lines
1.1 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "StateTreeDelayTask.h"
#include "StateTreeExecutionContext.h"
#include "StateTreeLinker.h"
bool FStateTreeDelayTask::Link(FStateTreeLinker& Linker)
{
Linker.LinkInstanceDataProperty(DurationHandle, STATETREE_INSTANCEDATA_PROPERTY(InstanceDataType, Duration));
Linker.LinkInstanceDataProperty(TimeHandle, STATETREE_INSTANCEDATA_PROPERTY(InstanceDataType, Time));
return true;
}
EStateTreeRunStatus FStateTreeDelayTask::EnterState(FStateTreeExecutionContext& Context, const EStateTreeStateChangeType ChangeType, const FStateTreeTransitionResult& Transition) const
{
float& Time = Context.GetInstanceData(TimeHandle);
Time = 0.f;
return EStateTreeRunStatus::Running;
}
EStateTreeRunStatus FStateTreeDelayTask::Tick(FStateTreeExecutionContext& Context, const float DeltaTime) const
{
float& Time = Context.GetInstanceData(TimeHandle);
const float Duration = Context.GetInstanceData(DurationHandle);
Time += DeltaTime;
return Duration <= 0.0f ? EStateTreeRunStatus::Running : (Time < Duration ? EStateTreeRunStatus::Running : EStateTreeRunStatus::Succeeded);
}