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); }
BlendTime setting in the parent animation blueprint is ignored and inertial blending is never triggered.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-94595 in the post.
0 |
Component | OLD - Anim |
---|---|
Affects Versions | 4.25 |
Target Fix | 4.26 |
Created | Jun 19, 2020 |
---|---|
Resolved | Jul 13, 2020 |
Updated | Sep 1, 2020 |