You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
29 lines
1.1 KiB
C++
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);
|
|||
|
|
}
|