Hi,
I’ve got a plugin with two modules → an “Editor” type module for encapsulating my custom AnimGraphNode and a “Runtime” type module for encapsulating my custom AnimNode class.
Program runs as expected when executed from within the Editor. If I remove all references to my custom AnimGraphNode in my level, then the development build also runs and interfaces with my plugin as expected.
The crash I’m encountering seems to occur regardless of whether my custom AnimGraphNode references the custom AnimNode or one of AnimNode subclasses defined in the Engine source (i.e. FAnimNode_SkeletalControlBase).
The error that I get when using either the custom AnimNode or built-in AnimNode is the following:
Fatal error: [File:D:\Build\++UE4+Release-4.16+Compile\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\ScriptCore.cpp] [Line: 435]
Unknown code token FF
test_anim_bp_C /Game/StarterContent/Maps/Minimal_Default.Minimal_Default:PersistentLevel.ladies03_outer_2.SkeletalMeshComponent0.test_anim_bp_C_0
Function /Game/ClothingAssets/ModelData/Ladies03/test_anim_bp.test_anim_bp_C:ExecuteUbergraph_test_anim_bp:0039
Script call stack:
Function /Game/ClothingAssets/ModelData/Ladies03/test_anim_bp.test_anim_bp_C:EvaluateGraphExposedInputs_ExecuteUbergraph_test_anim_bp_AnimGraphNode_QincKinectAnimNode_57B959F446D77BB790628DB60BA1F82F
Function /Game/ClothingAssets/ModelData/Ladies03/test_anim_bp.test_anim_bp_C:ExecuteUbergraph_test_anim_bp
The source code to the AnimGraphNode is below as well:
Header file:
UCLASS(BlueprintType, Blueprintable)
class QINCEDITOR_API UAnimGraphNode_QincKinectAnimNode : public UAnimGraphNode_Base
{
GENERATED_UCLASS_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Links)
FAnimNode_SkeletalControlBase Node;
public:
virtual FText GetNodeTitle(ENodeTitleType::Type TitleType) const override;
virtual FLinearColor GetNodeTitleColor() const override;
virtual FString GetNodeCategory() const override;
virtual void CreateOutputPins() override;
protected:
virtual FString GetControllerDescription() const;
};
.cpp file:
UAnimGraphNode_QincKinectAnimNode::UAnimGraphNode_QincKinectAnimNode(FObjectInitializer const & PCIP)
: Super(PCIP)
{
}
FText
UAnimGraphNode_QincKinectAnimNode::GetNodeTitle(ENodeTitleType::Type TitleType) const
{
FString Result = GetControllerDescription();
Result += (TitleType == ENodeTitleType::ListView) ? TEXT("") : TEXT("\n");
return FText::FromString(Result);
}
FLinearColor
UAnimGraphNode_QincKinectAnimNode::GetNodeTitleColor() const
{
return FLinearColor(0, 12, 12, 1);
}
FString
UAnimGraphNode_QincKinectAnimNode::GetNodeCategory() const
{
return FString("Anim Node Category");
}
FString
UAnimGraphNode_QincKinectAnimNode::GetControllerDescription() const
{
return TEXT("Qinc Kinect-based Animation Controller");
}
void
UAnimGraphNode_QincKinectAnimNode::CreateOutputPins()
{
const UAnimationGraphSchema* Schema = GetDefault<UAnimationGraphSchema>();
//CreatePin(EGPD_Output, Schema->PC_Struct, TEXT(""), FComponentSpacePoseLink::StaticStruct(), false, false, TEXT("ComponentPose"));
CreatePin(EGPD_Output, Schema->PC_Struct, TEXT(""), FComponentSpacePoseLink::StaticStruct(), /*bIsArray=*/ false, /*bIsReference=*/ false, TEXT("ComponentPose"));
}
And the description to the module containing the custom anim graph node is as follows:
26 {
27 "Name" : "QincEditor",
28 "Type" : "Editor",
29 "LoadingPhase" : "Default",
30 "WhitelistPlatforms" : ["Win64"]
31 }
I’ve tried experimenting with different LoadingPhases, but to no avail.
If anyone has any suggestions or ideas, I’d be very grateful!
Cheers,