Description

At compile time, BlendOptions array which contains BlendTime setting are created.
These are copied from its own interfaces, not the parent's.
The blending works fine if the parent's interface is also referenced during this process.
I tested following code.

 

static void CollectBlendOptionsRecursive(UAnimBlueprintGeneratedClass* AnimBlueprintGeneratedClass, UStruct* Parent)
{
	if (Parent == nullptr)return;
	CollectBlendOptionsRecursive(AnimBlueprintGeneratedClass, Parent->GetSuperStruct());
	UAnimBlueprintGeneratedClass* ParentClass = Cast<UAnimBlueprintGeneratedClass>(Parent);
	if( ParentClass == nullptr )return;
	for (auto& Item : ParentClass->GetGraphBlendOptions() )
	{
		AnimBlueprintGeneratedClass->GraphBlendOptions.Add(Item.Key, Item.Value);
	}
}

void FAnimBlueprintCompilerContext::FinishCompilingClass(UClass* Class)
{
...
	for (UEdGraph* Graph : Blueprint->FunctionGraphs)
	{
		AddBlendOptions(Graph);
	}

	CollectBlendOptionsRecursive( AnimBlueprintGeneratedClass, AnimBlueprintGeneratedClass->GetSuperStruct() );

	for (FBPInterfaceDescription& InterfaceDesc : Blueprint->ImplementedInterfaces)
	{
		if (InterfaceDesc.Interface->IsChildOf<UAnimLayerInterface>())
		{
			for (UEdGraph* Graph : InterfaceDesc.Graphs)
			{
				AddBlendOptions(Graph);
			}
		}
	}

	Super::FinishCompilingClass(Class);
}

Steps to Reproduce
  1. Open attached project AnimLayerProj.zip[Image Removed] on 4.25
  2. press Play button to start PIE
  3. press keyboard 1 & 2 to switch animlayer

BlendTime setting in the parent animation blueprint is ignored and inertial blending is never triggered.

Have Comments or More Details?

There's no existing public thread on this issue, so head over toAnswerHub just mention UE-94595 in the post.

0
Login to Vote

Unresolved
ComponentAnim
Affects Versions4.25
Target Fix4.26
CreatedJun 19, 2020
UpdatedJul 3, 2020