I’m trying to make a node that returns the component space of a specified bone. So far the node compiles with no problem if I only attach the pose link pins, but when I try to use the Location output pin (a vector) with a break, I get an error saying the directions aren’t compatible.
Take a look at the screenshot:
Here’s the part of my code that I think that matters (if you’d like to see other parts of my code, please ask):
AnimGraphNode_GetBoneLocation.cpp
void UAnimGraphNode_GetBoneLocation::CopyNodeDataToPreviewNode(FAnimNode_Base* InPreviewNode)
{
FAnimNode_GetBoneLocation* inNode = static_cast<FAnimNode_GetBoneLocation*>(InPreviewNode);
inNode->Bone = Node.Bone;
}
void UAnimGraphNode_GetBoneLocation::CopyPinDefaultsToNodeData(UEdGraphPin* InPin)
{
}
void UAnimGraphNode_GetBoneLocation::CreateOutputPins()
{
//Super::CreateOutputPins();
CreatePin(EGPD_Output, UAnimationGraphSchema::PC_Struct, FComponentSpacePoseLink::StaticStruct(), TEXT("Pose"));
CreatePin(EGPD_Output, UAnimationGraphSchema::PC_Struct, TBaseStructure<FVector>::Get(), TEXT("Location"));
}
AnimNode_GetBoneLocation.h
UPROPERTY(BlueprintReadOnly)
FVector Location;
If someone could explain to me what CopyNodeDataToPreviewNode and CopyPinDefaultsToNodeData do and how to use them, I’d be grateful it.
Also, I do not understand how CreatePin(EGPD_Output, UAnimationGraphSchema::PC_Struct, FComponentSpacePoseLink::StaticStruct(), TEXT("Pose"));
knows that this is the pose output pin of my node, since I have no Pose pin anywhere.
There’s too little documentation about these custom AnimBP nodes. Any other information, tips, etc on the subject are appreciated.