Skip to content

Commit 0a49b18

Browse files
Merge remote-tracking branch 'upstream/develop'
2 parents 1a00406 + e8fc9d0 commit 0a49b18

File tree

7 files changed

+51
-31
lines changed

7 files changed

+51
-31
lines changed

xivModdingFramework/Models/DataContainers/EquipmentParameter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ public enum EquipmentParameterFlag
191191
BodyShowNecklace = 11,
192192
BodyShowBracelet = 12, // "Wrist[slot]" is not used in this context b/c it can be confusing with other settings.
193193
BodyShowTail = 13,
194-
BodyTriggersomeShapeData = 14,
194+
BodyDisableBreastPhysics = 14,
195195
Bit15 = 15,
196196

197197
// Byte 2 - Leg

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 & 15 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));
@@ -3060,18 +3062,6 @@ internal async Task<byte[]> MakeNewMdlFile(TTModel ttModel, XivMdl ogMdl, Action
30603062
var lodNumber = 0;
30613063
foreach (var lod in ogMdl.LoDList)
30623064
{
3063-
var indexMeshNum = new Dictionary<int, int>();
3064-
3065-
// Get the index data offsets in each mesh
3066-
for (var i = 0; i < lod.MeshCount; i++)
3067-
{
3068-
var indexDataOffset = lod.MeshDataList[i].MeshInfo.IndexDataOffset;
3069-
3070-
indexMeshNum.Add(indexDataOffset, i);
3071-
}
3072-
3073-
3074-
30753065
// We only store the shape info for LoD 0.
30763066
if (lodNumber == 0)
30773067
{
@@ -3799,8 +3789,10 @@ internal async Task<byte[]> MakeNewMdlFile(TTModel ttModel, XivMdl ogMdl, Action
37993789
datHeader.AddRange(BitConverter.GetBytes((ushort)totalMeshCount));
38003790
// Material Count
38013791
datHeader.AddRange(BitConverter.GetBytes((ushort)ttModel.Materials.Count));
3792+
// LoD Count
3793+
datHeader.Add(1); // We only use the highest LoD instead of three
38023794
// Unknown 1
3803-
datHeader.AddRange(BitConverter.GetBytes((short)259));
3795+
datHeader.Add(1);
38043796
// Unknown 2
38053797
datHeader.AddRange(BitConverter.GetBytes((short)0));
38063798

xivModdingFramework/Models/ModelTextures/ModelTexture.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -414,9 +414,18 @@ await Task.Run(() =>
414414
using (var img = Image.LoadPixelData<Rgba32>(texMapData.Normal.Data, texMapData.Normal.Width,
415415
texMapData.Normal.Height))
416416
{
417-
img.Mutate(x => x.Resize(width, height));
417+
// ImageSharp pre-multiplies the RGB by the alpha component during resize, if alpha is 0 (colourset row 0)
418+
// this ends up causing issues and destroying the RGB values resulting in an invisible preview model
419+
// https://github.com/SixLabors/ImageSharp/issues/1498#issuecomment-757519563
420+
img.Mutate(x => x.Resize(
421+
new ResizeOptions
422+
{
423+
Size = new Size(width, height),
424+
PremultiplyAlpha = false
425+
})
426+
);
418427

419-
texMapData.Normal.Data = MemoryMarshal.AsBytes(img.GetPixelSpan()).ToArray();
428+
texMapData.Normal.Data = MemoryMarshal.AsBytes(img.GetPixelMemoryGroup()[0].Span).ToArray();
420429
}
421430
}
422431

@@ -436,7 +445,7 @@ await Task.Run(() =>
436445
}
437446
img.Mutate(x => x.Resize(width, height));
438447

439-
texMapData.Diffuse.Data = MemoryMarshal.AsBytes(img.GetPixelSpan()).ToArray();
448+
texMapData.Diffuse.Data = MemoryMarshal.AsBytes(img.GetPixelMemoryGroup()[0].Span).ToArray();
440449
}
441450
}
442451

@@ -448,7 +457,7 @@ await Task.Run(() =>
448457
{
449458
img.Mutate(x => x.Resize(width, height));
450459

451-
texMapData.Specular.Data = MemoryMarshal.AsBytes(img.GetPixelSpan()).ToArray();
460+
texMapData.Specular.Data = MemoryMarshal.AsBytes(img.GetPixelMemoryGroup()[0].Span).ToArray();
452461
}
453462
}
454463
});

xivModdingFramework/SqPack/FileTypes/Dat.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,20 @@ private static long GetMaximumFileSize(string drive)
9393
return 34359738368;
9494
case "exFAT":
9595
return 34359738368;
96+
case "ext2":
97+
return 34359738368;
98+
case "ext3":
99+
return 34359738368;
100+
case "ext4":
101+
return 34359738368;
102+
case "XFS":
103+
return 34359738368;
104+
case "btrfs":
105+
return 34359738368;
106+
case "ZFS":
107+
return 34359738368;
108+
case "ReiserFS":
109+
return 34359738368;
96110
default:
97111
// Unknown HDD Format, default to the basic limit.
98112
return 2000000000;
@@ -2069,4 +2083,4 @@ public static async Task<Dictionary<long, long>> ComputeOpenSlots(XivDataFile df
20692083
return slots;
20702084
}
20712085
}
2072-
}
2086+
}

xivModdingFramework/Textures/FileTypes/Tex.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -619,14 +619,14 @@ await Task.Run(() =>
619619
{
620620
for (var x = 0; x < width; x++)
621621
{
622-
var red = br.ReadByte();
623-
var green = br.ReadByte();
624622
var blue = br.ReadByte();
623+
var green = br.ReadByte();
624+
var red = br.ReadByte();
625625
var alpha = br.ReadByte();
626626

627-
convertedBytes.Add(blue);
628-
convertedBytes.Add(green);
629627
convertedBytes.Add(red);
628+
convertedBytes.Add(green);
629+
convertedBytes.Add(blue);
630630
convertedBytes.Add(alpha);
631631
}
632632
}

xivModdingFramework/xivModdingFramework.csproj

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,17 @@
2929
<PackageReference Include="SharpDX" Version="4.2.0" />
3030
<PackageReference Include="SharpDX.Mathematics" Version="4.2.0" />
3131
<PackageReference Include="System.Buffers" Version="4.5.1" />
32-
<PackageReference Include="SixLabors.ImageSharp" Version="1.0.0-beta0007" />
32+
<PackageReference Include="SixLabors.ImageSharp" Version="1.0.3" />
3333
<PackageReference Include="System.Data.SQLite" Version="1.0.114.4" />
3434
<PackageReference Include="System.Numerics.Vectors" Version="4.5.0" />
3535
<PackageReference Include="TeximpNet" Version="1.4.3" />
3636
</ItemGroup>
37-
38-
<PropertyGroup>
39-
<ContentSQLiteInteropFiles>true</ContentSQLiteInteropFiles>
37+
38+
<PropertyGroup>
39+
<ContentSQLiteInteropFiles>true</ContentSQLiteInteropFiles>
4040
<FileVersion>1.2.0.0</FileVersion>
4141
</PropertyGroup>
42-
42+
4343
<ItemGroup>
4444
<Compile Update="Resources\GeneralStrings.Designer.cs">
4545
<DesignTime>True</DesignTime>

0 commit comments

Comments
 (0)