Skip to content

Commit 650f0b1

Browse files
committed
Handling for old furniture models.
1 parent 4f6228b commit 650f0b1

File tree

1 file changed

+22
-7
lines changed
  • xivModdingFramework/Models/FileTypes

1 file changed

+22
-7
lines changed

xivModdingFramework/Models/FileTypes/Mdl.cs

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -940,6 +940,7 @@ public static XivMdl GetXivMdl(byte[] mdlData, string mdlPath = "")
940940
xivMdl.BoneBoundingBoxes.Add(new List<Vector4>() { minPoint, maxPoint });
941941
}
942942

943+
var preBound = br.BaseStream.Position;
943944
xivMdl.BonelessPartBoundingBoxes = new List<List<Vector4>>();
944945
for (var i = 0; i < xivMdl.ModelData.FurniturePartBoundingBoxCount; i++)
945946
{
@@ -955,15 +956,29 @@ public static XivMdl GetXivMdl(byte[] mdlData, string mdlPath = "")
955956
// Attempts to catch weird broken mod mdls.
956957
// This has been known to occur with both certain penumbra MDLs, and very old
957958
// TexTools MDLs.
958-
if (xivMdl.LoDList[0].VertexDataOffset < br.BaseStream.Position
959-
|| (xivMdl.LoDList[0].VertexDataOffset % 8 != br.BaseStream.Position % 8))
959+
if (xivMdl.BonelessPartBoundingBoxes.Count != 0)
960960
{
961+
if(xivMdl.LoDList[0].VertexDataOffset == preBound)
962+
{
963+
foreach(var bl in xivMdl.BonelessPartBoundingBoxes)
964+
{
965+
bl[0] = new Vector4(0, 0, 0, 1);
966+
bl[1] = new Vector4(0, 0, 0, 1);
967+
}
968+
br.BaseStream.Seek(preBound, SeekOrigin.Begin);
969+
}
970+
}
971+
else {
972+
if (xivMdl.LoDList[0].VertexDataOffset < br.BaseStream.Position
973+
|| (xivMdl.LoDList[0].VertexDataOffset % 8 != br.BaseStream.Position % 8))
974+
{
961975

962-
var delta = (int) (xivMdl.LoDList[0].VertexDataOffset - br.BaseStream.Position);
963-
xivMdl.LoDList[0].VertexDataOffset -= delta;
964-
xivMdl.LoDList[0].IndexDataOffset -= delta;
965-
//var rem = br.ReadBytes(delta);
966-
var z = "z";
976+
var delta = (int)(xivMdl.LoDList[0].VertexDataOffset - br.BaseStream.Position);
977+
xivMdl.LoDList[0].VertexDataOffset -= delta;
978+
xivMdl.LoDList[0].IndexDataOffset -= delta;
979+
//var rem = br.ReadBytes(delta);
980+
var z = "z";
981+
}
967982
}
968983

969984

0 commit comments

Comments
 (0)