Description

Duplicate slots are being created automatically under the Default Group in the AnimSlotManager. This is causing some problems because it replaces the originally created slot with the duplicate in the animgraph.


Licensee has provided a fix as well:

This seems to be happening because USkeleton::RegisterSlotNode is called before PostLoad, however that method uses USkeleton::ContainsSlotName which requires SlotToGroupNameMap to be built (done at PostLoad). For more details see the stack at the end of this post.

We temporarily fixed the issue locally by changing USkeleton::ContainsSlotName to:

 bool USkeleton::ContainsSlotName(const FName& InSlotName) 
 {
 	// NT_START
 	// NT_SP Fix for non-default slots being generated in the DefaultGroup when loading
 	if (HasAllFlags(RF_NeedPostLoad) && SlotToGroupNameMap.Num() == 0)
 	{
 		BuildSlotToGroupMap();
 	}
 	// NT_END
 	return SlotToGroupNameMap.Contains(InSlotName);
 }
 
Steps to Reproduce

1. Create a Third Person template project
2. Locate ThirdPErson_AnimBP and open it
3. Go to Window>Anim Slot Manager
4. Create a new Slot Group (TestGroup)
5. Create a new Slot under TestGroup, call it TestSlot
6. In the animgraph, add a new default slot to the graph
7. In the slot node details, select TestSlot
8. Plug it in between the StateMachine and the FinalAnimationPose
9. Compile and save, then close the editor
10. If asked to save the skeleton, save it
11. Re-open the editor
12. Open ThirdPErson_AnimBP and look at the AnimSlotManager

Result: There are now two TestSlots. The node in the AnimGraph has also been replaced by the duplicate under DefaultGroup instead of the one you created under TestGroup

Community References

Have Comments or More Details?

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

0
Login to Vote

Fixed
ComponentOLD - Anim
Affects Versions4.104.10.1
Target Fix4.12
Fix Commit2794694
Main Commit2880055
CreatedDec 11, 2015
ResolvedJan 25, 2016
UpdatedMay 18, 2020