Files
UnrealEngine/Engine/Plugins/Animation/PoseSearch/Source/Runtime/Private/MotionMatchingInteractionAnimNodeLibrary.cpp
2025-05-18 13:04:45 +08:00

33 lines
1.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "PoseSearch/MotionMatchingInteractionAnimNodeLibrary.h"
#include "PoseSearch/AnimNode_MotionMatchingInteraction.h"
FMotionMatchingInteractionAnimNodeReference UMotionMatchingInteractionAnimNodeLibrary::ConvertToMotionMatchingInteractionNode(const FAnimNodeReference& Node, EAnimNodeReferenceConversionResult& Result)
{
return FAnimNodeReference::ConvertToType<FMotionMatchingInteractionAnimNodeReference>(Node, Result);
}
void UMotionMatchingInteractionAnimNodeLibrary::SetAvailabilities(const FMotionMatchingInteractionAnimNodeReference& MotionMatchingInteractionNode, const TArray<FPoseSearchInteractionAvailability>& Availabilities)
{
if (FAnimNode_MotionMatchingInteraction* MotionMatchingInteractionNodePtr = MotionMatchingInteractionNode.GetAnimNodePtr<FAnimNode_MotionMatchingInteraction>())
{
MotionMatchingInteractionNodePtr->Availabilities = Availabilities;
}
else
{
UE_LOG(LogPoseSearch, Warning, TEXT("UMotionMatchingInteractionAnimNodeLibrary::SetAvailabilities called on an invalid context or with an invalid type"));
}
}
bool UMotionMatchingInteractionAnimNodeLibrary::IsInteracting(const FMotionMatchingInteractionAnimNodeReference& MotionMatchingInteractionNode)
{
if (const FAnimNode_MotionMatchingInteraction* MotionMatchingInteractionNodePtr = MotionMatchingInteractionNode.GetAnimNodePtr<FAnimNode_MotionMatchingInteraction>())
{
return MotionMatchingInteractionNodePtr->IsInteracting();
}
UE_LOG(LogPoseSearch, Warning, TEXT("UMotionMatchingInteractionAnimNodeLibrary::IsInteracting called on an invalid context or with an invalid type"));
return false;
}