Skip to content

Commit 9fbd5cb

Browse files
committed
Attach EX bones with no roots to n_root.
1 parent 6e0d23f commit 9fbd5cb

File tree

1 file changed

+15
-2
lines changed
  • xivModdingFramework/Models/DataContainers

1 file changed

+15
-2
lines changed

xivModdingFramework/Models/DataContainers/TTModel.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1711,8 +1711,8 @@ public static Dictionary<string, SkeletonData> ResolveBoneHeirarchyRaw(List<XivD
17111711
{
17121712
// This is a parent level reference to a base bone.
17131713
exTranslationTable.Add(j.BoneNumber, fullSkel[j.BoneName].BoneNumber);
1714-
}
1715-
else
1714+
}
1715+
else if (exTranslationTable.ContainsKey(j.BoneParent))
17161716
{
17171717
// Run it through the translation to match up with the base skeleton.
17181718
j.BoneParent = exTranslationTable[j.BoneParent];
@@ -1723,6 +1723,19 @@ public static Dictionary<string, SkeletonData> ResolveBoneHeirarchyRaw(List<XivD
17231723

17241724
fullSkel.Add(j.BoneName, j);
17251725
exTranslationTable.Add(originalNumber, j.BoneNumber);
1726+
} else
1727+
{
1728+
// This is a root bone in the EX skeleton that has no parent element in the base skeleton.
1729+
// Just stick it onto the root bone.
1730+
j.BoneParent = fullSkel["n_root"].BoneNumber;
1731+
1732+
// And generate its own new bone number
1733+
var originalNumber = j.BoneNumber;
1734+
j.BoneNumber = fullSkel.Select(x => x.Value.BoneNumber).Max() + 1;
1735+
1736+
fullSkel.Add(j.BoneName, j);
1737+
exTranslationTable.Add(originalNumber, j.BoneNumber);
1738+
17261739
}
17271740
}
17281741
} catch(Exception ex)

0 commit comments

Comments
 (0)