After scanning through SkeletalMeshComponent, it looks like there are several places where AnimInstance is updated but SubInstances are not. This can potentially cause states to get out of sync, and cause bad behavior.
Likely necessary calls that are missing:
- PerformAnimationEvaluation should call ParallelUpdateAnimation
- RefreshBoneTransforms should call ParallelUpdateAnimation
- PostAnimEvaluation should call PostUpdateAnimation
- RecalcRequiredBones should call RecalcRequiredBones
Other potential calls that are missing (but may not be necessary):
- OnUnregister should call UninitializeAnimation for SubInstances (and PostProcessAnimInstance?)
- ClearAnimScriptInstance should empty the SubInstances list
- TickPose should call OnUROSkipTickAnimation (not actually sure what this is supposed to do) for SubInstances
- PostAnimEvaluation should call OnUROPreInterpolation (not actually sure what this is supposed to do) for SubInstances
- RecalcRequiredCurves should call RecalcRequiredCurves for SubInstances (and PostProcess?)
- RefreshMorphTargets should call RefreshCurves for SubInstances