No announcement yet.

[SOLVED] Derived AnimNode_SkeletalControlBase.h class linker error

  • Filter
  • Time
  • Show
Clear All
new posts

  • replied
    I think that has to do with how you've set up the modules because you shouldn't be exporting editor code to your game build. I think you have to make an editor module so you can separate editor code from the game. This tutorial is for adding modules.
    Last edited by JoeyAnthony; 09-27-2019, 04:09 AM.

    Leave a comment:

  • replied
    Originally posted by BrainCheffSteff View Post
    Hi, have you managed to package this successfully?
    Sorry, have not. Got some packaging errors from who knows what right now.

    Leave a comment:

  • replied
    Hi, have you managed to package this successfully?

    Leave a comment:

  • replied
    SOLVED. Right when I was giving up for the night, I realized I had my module in the wrong build.cs file. For future reference, just stick 'AnimGraphRuntime' in 'YourGame.Build.cs'.

    Leave a comment:

  • [SOLVED] Derived AnimNode_SkeletalControlBase.h class linker error

    I've successfully gotten custom animation nodes to work with the exception of AnimNode_SkeletalControlBase. I get linker errors all over the place, however I've implemented as many virtual functions as I could within the struct.

    Everything else works fine. I've got AnimNode_Base derived classes working just fine and got a few blend nodes going.

    Does anyone have any experience with this? Is there some module required by it that wasn't required by the other AnimNode types? I've also copied the AnimNode_ModifyBone class yet I still get these errors.

    EDIT: I do have the proper module AnimGraphRuntime.

    These are the linker errors:

    The functions in question:
    // FAnimNode_Base interface
        virtual void Initialize_AnyThread(const FAnimationInitializeContext& Context) override;
        virtual void CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)  override;
        virtual void Update_AnyThread(const FAnimationUpdateContext& Context) final;
        virtual void EvaluateComponentSpace_AnyThread(FComponentSpacePoseContext& Output) final;
        // End of FAnimNode_Base interface
        // Interface for derived skeletal controls to implement
        // use this function to update for skeletal control base
        virtual void UpdateInternal(const FAnimationUpdateContext& Context);
        // Update incoming component pose.
        virtual void UpdateComponentPose_AnyThread(const FAnimationUpdateContext& Context);
        // Evaluate incoming component pose.
        virtual void EvaluateComponentPose_AnyThread(FComponentSpacePoseContext& Output);
        // use this function to evaluate for skeletal control base
        virtual void EvaluateComponentSpaceInternal(FComponentSpacePoseContext& Context);
        DEPRECATED(4.16, "Please use EvaluateSkeletalControl_AnyThread.")
        virtual void EvaluateBoneTransforms(USkeletalMeshComponent* SkelComp, FCSPose<FCompactPose>& MeshBases, TArray<FBoneTransform>& OutBoneTransforms) {}
        // Evaluate the new component-space transforms for the affected bones.
        virtual void EvaluateSkeletalControl_AnyThread(FComponentSpacePoseContext& Output, TArray<FBoneTransform>& OutBoneTransforms);
        // return true if it is valid to Evaluate
        virtual bool IsValidToEvaluate(const USkeleton* Skeleton, const FBoneContainer& RequiredBones) { return false; }
        // initialize any bone references you have
        virtual void InitializeBoneReferences(const FBoneContainer& RequiredBones){};
        /** Allow base to add info to the node debug output */
        void AddDebugNodeData(FString& OutDebugData);
    The only functions I can't override are 'Update_AnyThread()', 'EvaluateComponentSpace_AnyThread()', and 'EvaluateBoneTransforms' as the former two are final and the latter is deprecated.
    Last edited by Lexeon; 04-21-2019, 08:18 AM.