Skip to content

Commit 550d4f2

Browse files
committed
- Fix for ATex files having 0 layers listed.
1 parent afc5b8c commit 550d4f2

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

xivModdingFramework/Textures/FileTypes/ATex.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ public async Task<XivTex> GetATexData(long offset)
107107
var atexData = await dat.GetType2Data(offset, _dataFile);
108108

109109
var xivTex = new XivTex();
110+
xivTex.Layers = 1;
110111

111112
using (var br = new BinaryReader(new MemoryStream(atexData)))
112113
{

xivModdingFramework/Textures/FileTypes/Tex.cs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -421,29 +421,35 @@ public Task<byte[]> GetImageData(XivTex xivTex, int layer = -1)
421421
{
422422
byte[] imageData = null;
423423

424+
var layers = xivTex.Layers;
425+
if(layers == 0)
426+
{
427+
layers = 1;
428+
}
429+
424430
switch (xivTex.TextureFormat)
425431
{
426432
case XivTexFormat.DXT1:
427-
imageData = DxtUtil.DecompressDxt1(xivTex.TexData, xivTex.Width, xivTex.Height * xivTex.Layers);
433+
imageData = DxtUtil.DecompressDxt1(xivTex.TexData, xivTex.Width, xivTex.Height * layers);
428434
break;
429435
case XivTexFormat.DXT3:
430-
imageData = DxtUtil.DecompressDxt3(xivTex.TexData, xivTex.Width, xivTex.Height * xivTex.Layers);
436+
imageData = DxtUtil.DecompressDxt3(xivTex.TexData, xivTex.Width, xivTex.Height * layers);
431437
break;
432438
case XivTexFormat.DXT5:
433-
imageData = DxtUtil.DecompressDxt5(xivTex.TexData, xivTex.Width, xivTex.Height * xivTex.Layers);
439+
imageData = DxtUtil.DecompressDxt5(xivTex.TexData, xivTex.Width, xivTex.Height * layers);
434440
break;
435441
case XivTexFormat.A4R4G4B4:
436-
imageData = await Read4444Image(xivTex.TexData, xivTex.Width, xivTex.Height * xivTex.Layers);
442+
imageData = await Read4444Image(xivTex.TexData, xivTex.Width, xivTex.Height * layers);
437443
break;
438444
case XivTexFormat.A1R5G5B5:
439-
imageData = await Read5551Image(xivTex.TexData, xivTex.Width, xivTex.Height * xivTex.Layers);
445+
imageData = await Read5551Image(xivTex.TexData, xivTex.Width, xivTex.Height * layers);
440446
break;
441447
case XivTexFormat.A8R8G8B8:
442-
imageData = await SwapRBColors(xivTex.TexData, xivTex.Width, xivTex.Height * xivTex.Layers);
448+
imageData = await SwapRBColors(xivTex.TexData, xivTex.Width, xivTex.Height * layers);
443449
break;
444450
case XivTexFormat.L8:
445451
case XivTexFormat.A8:
446-
imageData = await Read8bitImage(xivTex.TexData, xivTex.Width, xivTex.Height * xivTex.Layers);
452+
imageData = await Read8bitImage(xivTex.TexData, xivTex.Width, xivTex.Height * layers);
447453
break;
448454
case XivTexFormat.X8R8G8B8:
449455
case XivTexFormat.R32F:

0 commit comments

Comments
 (0)