Files
UnrealEngineUWP/Engine/Source/Runtime/AnimGraphRuntime/Private/SequencePlayerLibrary.cpp
Thomas Sarkanen 38caea3a8e Improvements to anim node function calls
Split 'node context' into an 'evaluation context' and a 'node reference' type and updated regular function signatures when creating node functions. This way we can seperate concerns (and potentially reference anim nodes standalone in the future).
Moved function caller code into function ref file to stop AnimNodeBase bloat.
Fixed functions not being called on root nodes.

#rb Jurre.deBaare

[CL 16727107 by Thomas Sarkanen in ue5-main branch]
2021-06-21 07:54:03 -04:00

45 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "SequencePlayerLibrary.h"
#include "Animation/AnimNode_SequencePlayer.h"
FSequencePlayerReference USequencePlayerLibrary::ConvertToSequencePlayerContext(const FAnimNodeReference& Node, EAnimNodeReferenceConversionResult& Result)
{
return FAnimNodeReference::ConvertToType<FSequencePlayerReference>(Node, Result);
}
FSequencePlayerReference USequencePlayerLibrary::SetAccumulatedTime(const FSequencePlayerReference& SequencePlayerContext, float Time)
{
SequencePlayerContext.CallAnimNodeFunction<FAnimNode_SequencePlayer>(
TEXT("SetAccumulatedTime"),
[Time](FAnimNode_SequencePlayer& SequencePlayer)
{
SequencePlayer.SetAccumulatedTime(Time);
});
return SequencePlayerContext;
}
FSequencePlayerReference USequencePlayerLibrary::SetStartPosition(const FSequencePlayerReference& SequencePlayerContext, float StartPosition)
{
SequencePlayerContext.CallAnimNodeFunction<FAnimNode_SequencePlayer>(
TEXT("SetStartPosition"),
[StartPosition](FAnimNode_SequencePlayer& SequencePlayer)
{
SequencePlayer.SetStartPosition(StartPosition);
});
return SequencePlayerContext;
}
FSequencePlayerReference USequencePlayerLibrary::SetPlayRate(const FSequencePlayerReference& SequencePlayerContext, float PlayRate)
{
SequencePlayerContext.CallAnimNodeFunction<FAnimNode_SequencePlayer>(
TEXT("SetPlayRate"),
[PlayRate](FAnimNode_SequencePlayer& SequencePlayer)
{
SequencePlayer.SetPlayRate(PlayRate);
});
return SequencePlayerContext;
}