Files
UnrealEngine/Engine/Source/Runtime/AnimGraphRuntime/Private/BlendSpaceLibrary.cpp
2025-05-18 13:04:45 +08:00

54 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "BlendSpaceLibrary.h"
#include "Animation/AnimNode_Inertialization.h"
#include "AnimNodes/AnimNode_BlendSpaceGraph.h"
DEFINE_LOG_CATEGORY_STATIC(LogBlendSpaceLibrary, Verbose, All);
FBlendSpaceReference UBlendSpaceLibrary::ConvertToBlendSpace(const FAnimNodeReference& Node,
EAnimNodeReferenceConversionResult& Result)
{
return FAnimNodeReference::ConvertToType<FBlendSpaceReference>(Node, Result);
}
FVector UBlendSpaceLibrary::GetPosition(const FBlendSpaceReference& BlendSpace)
{
FVector Position = FVector::ZeroVector;
BlendSpace.CallAnimNodeFunction<FAnimNode_BlendSpaceGraph>(
TEXT("GetPosition"),
[&Position](FAnimNode_BlendSpaceGraph& InBlendSpace)
{
Position = InBlendSpace.GetPosition();
});
return Position;
}
FVector UBlendSpaceLibrary::GetFilteredPosition(const FBlendSpaceReference& BlendSpace)
{
FVector FilteredPosition = FVector::ZeroVector;
BlendSpace.CallAnimNodeFunction<FAnimNode_BlendSpaceGraph>(
TEXT("GetFilteredPosition"),
[&FilteredPosition](FAnimNode_BlendSpaceGraph& InBlendSpace)
{
FilteredPosition = InBlendSpace.GetFilteredPosition();
});
return FilteredPosition;
}
void UBlendSpaceLibrary::SnapToPosition(
const FBlendSpaceReference& BlendSpace,
FVector NewPosition)
{
BlendSpace.CallAnimNodeFunction<FAnimNode_BlendSpaceGraph>(
TEXT("SnapToPosition"),
[&NewPosition](FAnimNode_BlendSpaceGraph& InBlendSpace)
{
InBlendSpace.SnapToPosition(NewPosition);
});
}