When we unlink the layer, we call UAnimInstance::PerformLinkedLayerOverlayOperation

In that function, ClassToSet is null, so we loop over the layer nodes and call SetLinkedLayerInstance(this, nullptr)

FAnimNode_LinkedAnimLayer::InitializeSelfLayer is then called for each layer, which:

  • Gets the animbp class of the target anim instance so that RequestBlend can read its blend out settings
  • Deletes the target anim instance

For any subsequent layers, the target anim instance is now deleted so we can't read the blend out settings.

Steps to Reproduce
  • Create a layer interface with two layers
  • Create an animbp that implements the interface, plays an animation in each layer, and sets the BlendOutTime to 2 seconds
  • Create a main animbp that also implements the interface, but has a state machine with two states, and each state plays one of the layers
  • Add an inertial blend node to the end of the main animbp
  • Link the layer
  • Unlink the layer

When the layer is unlinked, the pose will snap instead of blending for one of the layers.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-150466 in the post.

Login to Vote

ComponentUE - Anim - Gameplay
Affects Versions5.0
CreatedApr 27, 2022
UpdatedAug 28, 2022