Files
UnrealEngine/Engine/Source/Editor/AnimGraph/Private/AnimGraphNode_LegIK.cpp
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

56 lines
1.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "AnimGraphNode_LegIK.h"
/////////////////////////////////////////////////////
// UAnimGraphNode_LegIK
#include UE_INLINE_GENERATED_CPP_BY_NAME(AnimGraphNode_LegIK)
#define LOCTEXT_NAMESPACE "A3Nodes"
UAnimGraphNode_LegIK::UAnimGraphNode_LegIK(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
}
FText UAnimGraphNode_LegIK::GetControllerDescription() const
{
return LOCTEXT("LegIK", "Leg IK");
}
FText UAnimGraphNode_LegIK::GetTooltipText() const
{
return LOCTEXT("AnimGraphNode_LegIK_Tooltip", "IK node for multi-bone legs.");
}
FText UAnimGraphNode_LegIK::GetNodeTitle(ENodeTitleType::Type TitleType) const
{
return GetControllerDescription();
}
void UAnimGraphNode_LegIK::ValidateAnimNodeDuringCompilation(USkeleton* ForSkeleton, FCompilerResultsLog& MessageLog)
{
if (Node.LegsDefinition.IsEmpty())
{
MessageLog.Warning(*LOCTEXT("MissingLegsDefinition", "@@ - Legs Definition is empty").ToString(), this);
}
else if (ForSkeleton)
{
for (const FAnimLegIKDefinition& LegDefinition : Node.LegsDefinition)
{
if (ForSkeleton->GetReferenceSkeleton().FindBoneIndex(LegDefinition.FKFootBone.BoneName) == INDEX_NONE)
{
MessageLog.Warning(*LOCTEXT("InvalidFKFootBone", "@@ - Invalid FKFoot Bone in Legs Definition").ToString(), this);
}
if (ForSkeleton->GetReferenceSkeleton().FindBoneIndex(LegDefinition.IKFootBone.BoneName) == INDEX_NONE)
{
MessageLog.Warning(*LOCTEXT("InvalidIKFootBone", "@@ - Invalid IKFoot Bone in Legs Definition").ToString(), this);
}
}
}
}
#undef LOCTEXT_NAMESPACE