summaryrefslogtreecommitdiff
path: root/NW4RTools/Texture.cs
diff options
context:
space:
mode:
authorTreeki <treeki@gmail.com>2011-02-13 16:22:11 +0100
committerTreeki <treeki@gmail.com>2011-02-13 16:22:11 +0100
commit7d7491feb41bc9724bf63bef545b996226406889 (patch)
tree21e4ca70d88a1fb8071d8882c3babc4f9fb6646f /NW4RTools/Texture.cs
parent426ad45876649595e2d4e9669ff1cf8c250fb163 (diff)
downloadnw4rtools-7d7491feb41bc9724bf63bef545b996226406889.tar.gz
nw4rtools-7d7491feb41bc9724bf63bef545b996226406889.zip
really messy code for materials/textures which KINDA works
Diffstat (limited to '')
-rw-r--r--NW4RTools/Texture.cs18
1 files changed, 17 insertions, 1 deletions
diff --git a/NW4RTools/Texture.cs b/NW4RTools/Texture.cs
index 954852d..2de9ad8 100644
--- a/NW4RTools/Texture.cs
+++ b/NW4RTools/Texture.cs
@@ -137,6 +137,8 @@ namespace NW4RTools {
case TextureFormat.RGB5A3:
case TextureFormat.I4:
case TextureFormat.I8:
+ case TextureFormat.IA4:
+ case TextureFormat.IA8:
// I4 is stupid and breaks my parser. I'll keep some state here
bool alreadyHaveI4Nybble = false;
byte currentI4Byte = 0;
@@ -194,6 +196,18 @@ namespace NW4RTools {
} else if (format == TextureFormat.I8) {
byte val = data.ReadByte();
*pPixel = 0xFF000000 | (uint)(val << 16) | (uint)(val << 8) | val;
+
+ } else if (format == TextureFormat.IA4) {
+ byte val = data.ReadByte();
+ uint i = (uint)(val >> 4);
+ uint a = (uint)((val & 0xF0) << 4);
+ *pPixel = (a << 24) | (i << 16) | (i << 8) | i;
+
+ } else if (format == TextureFormat.IA8) {
+ byte i = data.ReadByte();
+ byte a = data.ReadByte();
+ *pPixel = (uint)(a << 24) | (uint)(i << 16) | (uint)(i << 8) | i;
+
}
}
}
@@ -259,7 +273,9 @@ namespace NW4RTools {
image.UnlockBits(bits);
-
+
+ image.RotateFlip(RotateFlipType.RotateNoneFlipY); // TODO: remove this, and fix texcoords properly
+
BaseImage = image;
Format = format;
}