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 [Link 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 to Questions & Answers just mention UE-94595 in the post.

0
Login to Vote

Fixed
ComponentOLD - Anim
Affects Versions4.25
Target Fix4.26
Fix Commit13850161
Main Commit14229911
CreatedJun 19, 2020
ResolvedJul 13, 2020
UpdatedSep 1, 2020