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); }
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
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-24399 in the post.
0 |
Component | OLD - Anim |
---|---|
Affects Versions | 4.10, 4.10.1 |
Target Fix | 4.12 |
Fix Commit | 2794694 |
---|---|
Main Commit | 2880055 |
Created | Dec 11, 2015 |
---|---|
Resolved | Jan 25, 2016 |
Updated | May 18, 2020 |