Skip to content

Commit ca08a36

Browse files
committed
Actually write the correct LoD count in the Mdl file
1 parent cc66d6f commit ca08a36

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

xivModdingFramework/Models/DataContainers/MdlModelData.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,15 @@ public class MdlModelData
8080
/// </summary>
8181
public ushort ShapeDataCount { get; set; }
8282

83+
/// <summary>
84+
/// The total number of LoD
85+
/// </summary>
86+
public byte LoDCount { get; set; }
87+
8388
/// <summary>
8489
/// Unknown Usage
8590
/// </summary>
86-
public short Unknown1 { get; set; }
91+
public byte Unknown1 { get; set; }
8792

8893
/// <summary>
8994
/// Unknown Usage

xivModdingFramework/Models/FileTypes/Mdl.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -485,7 +485,8 @@ public async Task<XivMdl> GetRawMdlData(string mdlPath, bool getOriginal = false
485485
ShapeCount = br.ReadInt16(),
486486
ShapePartCount = br.ReadInt16(),
487487
ShapeDataCount = br.ReadUInt16(),
488-
Unknown1 = br.ReadInt16(),
488+
LoDCount = br.ReadByte(),
489+
Unknown1 = br.ReadByte(),
489490
Unknown2 = br.ReadInt16(),
490491
Unknown3 = br.ReadInt16(),
491492
Unknown4 = br.ReadInt16(),
@@ -2542,7 +2543,8 @@ internal async Task<byte[]> MakeNewMdlFile(TTModel ttModel, XivMdl ogMdl, Action
25422543
modelDataBlock.AddRange(BitConverter.GetBytes(ttModel.HasShapeData ? (short)ttModel.ShapeNames.Count : (short)0));
25432544
modelDataBlock.AddRange(BitConverter.GetBytes(ttModel.HasShapeData ? (short)ttModel.ShapePartCount : (short)0));
25442545
modelDataBlock.AddRange(BitConverter.GetBytes(ttModel.HasShapeData ? (ushort)ttModel.ShapeDataCount : (ushort)0));
2545-
modelDataBlock.AddRange(BitConverter.GetBytes(ogModelData.Unknown1));
2546+
modelDataBlock.Add(1); // LoD count, set to 1 since we only use the highest LoD
2547+
modelDataBlock.Add(ogModelData.Unknown1);
25462548
modelDataBlock.AddRange(BitConverter.GetBytes(ogModelData.Unknown2));
25472549
modelDataBlock.AddRange(BitConverter.GetBytes(ogModelData.Unknown3));
25482550
modelDataBlock.AddRange(BitConverter.GetBytes(ogModelData.Unknown4));
@@ -3799,8 +3801,10 @@ internal async Task<byte[]> MakeNewMdlFile(TTModel ttModel, XivMdl ogMdl, Action
37993801
datHeader.AddRange(BitConverter.GetBytes((ushort)totalMeshCount));
38003802
// Material Count
38013803
datHeader.AddRange(BitConverter.GetBytes((ushort)ttModel.Materials.Count));
3804+
// LoD Count
3805+
datHeader.Add(1); // We only use the highest LoD instead of three
38023806
// Unknown 1
3803-
datHeader.AddRange(BitConverter.GetBytes((short)259));
3807+
datHeader.Add(1);
38043808
// Unknown 2
38053809
datHeader.AddRange(BitConverter.GetBytes((short)0));
38063810

0 commit comments

Comments
 (0)