Description

Mirror Data Table is added rows about Bone, Curve, Notify when creating. But SyncMarker is ignored. The following codes can fix this issue.

 

Engine/Source/Runtime/Engine/Private/Animation/MirrorDataTable.cpp

 

const FReferenceSkeleton& RefSkeleton = Skeleton->GetReferenceSkeleton();

// 3->4
TSet<FName> NamesByCategory[4]; 
ForeachRow<FMirrorTableRow>(TEXT("UMirrorDataTable::FindReplaceMirroredNames"), [&NamesByCategory] (const FName& Key, const FMirrorTableRow& Value) mutable
   {
      NamesByCategory[Value.MirrorEntryType].Add(Value.Name);
   }
);
auto AddMirrorRow = [this, &bChangedTable, &NamesByCategory](const FName& Name, const FName& MirroredName, EMirrorRowType::Type RowType)
{
   // directly add rows to avoid using FDataTableEditorUtils, which is not appropriate at this point
   // equivalent to FDataTableEditorUtils::AddRow(DataTable, BoneName);

   // add TEXT(":SyncMarker")
   static const FString CategoryName[] = { TEXT(":Bone"), TEXT(":Notify"), TEXT(":Curve"), TEXT(":SyncMarker") };
   if (!NamesByCategory[RowType].Contains(Name))
for (const FName& Notify : Skeleton->AnimationNotifies)
{
   FName MirroredName = FindReplace(Notify);
   if (!MirroredName.IsNone() && Skeleton->AnimationNotifies.Contains(MirroredName))
   {
      AddMirrorRow(Notify, MirroredName, EMirrorRowType::AnimationNotify);
   }
}

// add
for (const FName& SyncMarker : Skeleton->GetExistingMarkerNames())
{
   FName MirroredName = FindReplace(SyncMarker);
   if (!MirroredName.IsNone() && Skeleton->GetExistingMarkerNames().Contains(MirroredName))
   {
      AddMirrorRow(SyncMarker, MirroredName, EMirrorRowType::SyncMarker);
   }
}

const FSmartNameMapping* CurveSmartNames = Skeleton->GetSmartNameContainer(USkeleton::AnimCurveMappingName);

 

 

Steps to Reproduce
  1. Add SyncMarkers (e.g. "sync_r" , "sync_r") to Animation Sequence of Skeleton A
  2. Create Mirror Data Table asset based on Skeleton A

expect : The Mirror Data Table has rows about SyncMarker
result : The Mirror Data Table does not have rows about SyncMarker

Have Comments or More Details?

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

0
Login to Vote

Fixed
ComponentUE - Anim - Runtime
Affects Versions5.05.1
Target Fix5.2
Fix Commit22879883
Main Commit22879883
CreatedOct 27, 2022
ResolvedNov 1, 2022
UpdatedNov 27, 2022