From 41ae8d09eccc3bb3d4a3377ca4a63709bc397175 Mon Sep 17 00:00:00 2001 From: ook3d <47336113+ook3D@users.noreply.github.com> Date: Fri, 16 Jan 2026 19:30:23 -0500 Subject: [PATCH] fix broken texture slice pitches --- CodeWalker.Core/GameFiles/Utils/DDSIO.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/CodeWalker.Core/GameFiles/Utils/DDSIO.cs b/CodeWalker.Core/GameFiles/Utils/DDSIO.cs index 285487e9d..79de73bd4 100644 --- a/CodeWalker.Core/GameFiles/Utils/DDSIO.cs +++ b/CodeWalker.Core/GameFiles/Utils/DDSIO.cs @@ -248,15 +248,17 @@ public static byte[] GetDDSFile(Texture texture) throw new Exception("Tried to write mip out of range"); if (images[index].rowPitch <= 0) throw new Exception("Invalid row pitch."); - if (images[index].slicePitch <= 0) - throw new Exception("Invalid slice pitch."); //if (images[index].pixels) // return E_POINTER; int ddsRowPitch, ddsSlicePitch; DXTex.ComputePitch(meta.format, images[index].width, images[index].height, out ddsRowPitch, out ddsSlicePitch, 0);// CP_FLAGS.CP_FLAGS_NONE); - if (images[index].slicePitch == ddsSlicePitch) + int imageSlicePitch = images[index].slicePitch; + if (imageSlicePitch <= 0) + imageSlicePitch = ddsSlicePitch; // Use computed pitch if invalid + + if (imageSlicePitch == ddsSlicePitch) { int lengt = ddsSlicePitch; if (images[index].pixels + ddsSlicePitch > img.Data.Length) @@ -311,15 +313,17 @@ public static byte[] GetDDSFile(Texture texture) throw new Exception("Tried to write mip out of range"); if (images[index].rowPitch <= 0) throw new Exception("Invalid row pitch."); - if (images[index].slicePitch <= 0) - throw new Exception("Invalid slice pitch."); //if (!images[index].pixels) // return E_POINTER; int ddsRowPitch, ddsSlicePitch; DXTex.ComputePitch(meta.format, images[index].width, images[index].height, out ddsRowPitch, out ddsSlicePitch, 0);// CP_FLAGS_NONE); - if (images[index].slicePitch == ddsSlicePitch) + int imageSlicePitch = images[index].slicePitch; + if (imageSlicePitch <= 0) + imageSlicePitch = ddsSlicePitch; // Use computed pitch if invalid + + if (imageSlicePitch == ddsSlicePitch) { bw.Write(img.Data, images[index].pixels, ddsSlicePitch); }