Unable to set a Child ABP with inherited interface to a Linked Animation Layer Instance Class.
I have a ABP_Biped which is our main ABP. I have the locomotion (idle+strafer) setup as a linked anim layer node. There is a ABP_BipedLoco which implements the Locomotion interface that I made.
The idea was to be able to swap out ABP_BipedLoco with completely different ABPs to allow different locomotion modes. Or derive off ABP_BipedLoco and override animations on that. Making ABP_BipedLoco a template basically.
When I make a ABP_BipedLoco_Child, I can't plug that into the linked anim layer node in the main ABP_Biped. If I dupe ABP_BipedLoco, ABP_BipedLoco_2 works fine.
I thought the child ABP would work. If the idea of linked anim layers is to be able to swap out graphs dynamically. And child ABPs is simply used for overriding animations without changing the graph structure. You'd think these two features together are the ideal use case.
Looking at ABP_BipedLoco_Child, it looks like it inherits the interface, but doesn't use the parent's implementation of the layer. Is that why this isn't working?
Is this broken? Am I missing a step or something? Thanks for your time [Image Removed]
Quoted potential fix:
I've tested this locally and I can see that the selection isn't working correctly for layer nodes. The filtering logic looks to make the assumption that ImplemetedInterfaces is transitive between parents and children, when looking elsewhere in the code it needs to look at the parent hierarchy to determine if the interface is implemented too.
If you need to fix this locally, the logic in UAnimGraphNode_LinkedAnimLayer::OnShouldFilterInstanceBlueprint is going to need to find the parent BP for each asset that it filters, then recurse up that parent hierarchy performing the same logic that is there already - i.e. inspecting the asset registry tags for implemented interfaces.
I would be interested in knowing whether setting the child anim BP dynamically via LinkAnimClassLayers works correctly too, as that may be another workaround you can use.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-119703 in the post.