private List<byte> Read4BitAlphaMap(byte[] CompressedAlphaMap, MapChunkFlags MapFlags) { List<byte> DecompressedAlphaMap = new List<byte>(); for (int y = 0; y < 64; y++) { for (int x = 0; x < 32; x++) { if (MapFlags.HasFlag(MapChunkFlags.DoNotRepairAlphaMaps)) { //fill in normally byte alpha1 = (byte)((CompressedAlphaMap[x + y * 32]) & 0xf0); byte alpha2 = (byte)((CompressedAlphaMap[x + y * 32] << 4) & 0xf0); byte normalizedAlpha1 = (byte)(alpha1 * 17); byte normalizedAlpha2 = (byte)(alpha2 * 17); DecompressedAlphaMap.Add(normalizedAlpha1); DecompressedAlphaMap.Add(normalizedAlpha2); } else { // Bottom row if (y == 63) { int yminus = y - 1; //attempt to repair map on vertical axis byte alpha1 = (byte)((CompressedAlphaMap[x + yminus * 32]) & 0xf0); byte alpha2 = (byte)((CompressedAlphaMap[x + 1 + yminus * 32] << 4) & 0xf0); byte normalizedAlpha1 = (byte)(alpha1 * 17); byte normalizedAlpha2 = (byte)(alpha2 * 17); DecompressedAlphaMap.Add(normalizedAlpha1); DecompressedAlphaMap.Add(normalizedAlpha2); } else if (x == 31) { int xminus = x - 1; //attempt to repair map on horizontal axis byte alpha = (byte)(CompressedAlphaMap[xminus + y * 32] << 4 & 0xf0); byte normalizedAlpha = (byte)(alpha * 17); DecompressedAlphaMap.Add(normalizedAlpha); } else { //fill in normally byte alpha1 = (byte)((CompressedAlphaMap[x + y * 32]) & 0xf0); byte alpha2 = (byte)((CompressedAlphaMap[x + y * 32] << 4) & 0xf0); byte normalizedAlpha1 = (byte)(alpha1 * 17); byte normalizedAlpha2 = (byte)(alpha2 * 17); DecompressedAlphaMap.Add(normalizedAlpha1); DecompressedAlphaMap.Add(normalizedAlpha2); } } } } return DecompressedAlphaMap; }
private List <byte> Read4BitAlphaMap(byte[] compressedAlphaMap, MapChunkFlags mapFlags) { var decompressedAlphaMap = new List <byte>(); for (var y = 0; y < 64; y++) { for (var x = 0; x < 32; x++) { if (mapFlags.HasFlag(MapChunkFlags.DoNotRepairAlphaMaps)) { // Fill in normally var alpha1 = (byte)(compressedAlphaMap[x + (y * 32)] & 0xf0); var alpha2 = (byte)((compressedAlphaMap[x + (y * 32)] << 4) & 0xf0); var normalizedAlpha1 = (byte)(alpha1 * 17); var normalizedAlpha2 = (byte)(alpha2 * 17); decompressedAlphaMap.Add(normalizedAlpha1); decompressedAlphaMap.Add(normalizedAlpha2); } else { // Bottom row if (y == 63) { var yminus = y - 1; // Attempt to repair map on vertical axis var alpha1 = (byte)(compressedAlphaMap[x + (yminus * 32)] & 0xf0); var alpha2 = (byte)((compressedAlphaMap[x + 1 + (yminus * 32)] << 4) & 0xf0); var normalizedAlpha1 = (byte)(alpha1 * 17); var normalizedAlpha2 = (byte)(alpha2 * 17); decompressedAlphaMap.Add(normalizedAlpha1); decompressedAlphaMap.Add(normalizedAlpha2); } else if (x == 31) { var xminus = x - 1; // Attempt to repair map on horizontal axis var alpha = (byte)(compressedAlphaMap[xminus + (y * 32)] << 4 & 0xf0); var normalizedAlpha = (byte)(alpha * 17); decompressedAlphaMap.Add(normalizedAlpha); } else { // Fill in normally var alpha1 = (byte)(compressedAlphaMap[x + (y * 32)] & 0xf0); var alpha2 = (byte)((compressedAlphaMap[x + (y * 32)] << 4) & 0xf0); var normalizedAlpha1 = (byte)(alpha1 * 17); var normalizedAlpha2 = (byte)(alpha2 * 17); decompressedAlphaMap.Add(normalizedAlpha1); decompressedAlphaMap.Add(normalizedAlpha2); } } } } return(decompressedAlphaMap); }
private List <byte> Read4BitAlphaMap(byte[] compressedAlphaMap, MapChunkFlags mapFlags) { List <byte> decompressedAlphaMap = new List <byte>(); for (int y = 0; y < 64; y++) { for (int x = 0; x < 32; x++) { if (mapFlags.HasFlag(MapChunkFlags.DoNotRepairAlphaMaps)) { //fill in normally byte alpha1 = (byte)((compressedAlphaMap[x + y * 32]) & 0xf0); byte alpha2 = (byte)((compressedAlphaMap[x + y * 32] << 4) & 0xf0); byte normalizedAlpha1 = (byte)(alpha1 * 17); byte normalizedAlpha2 = (byte)(alpha2 * 17); decompressedAlphaMap.Add(normalizedAlpha1); decompressedAlphaMap.Add(normalizedAlpha2); } else { // Bottom row if (y == 63) { int yminus = y - 1; //attempt to repair map on vertical axis byte alpha1 = (byte)((compressedAlphaMap[x + yminus * 32]) & 0xf0); byte alpha2 = (byte)((compressedAlphaMap[x + 1 + yminus * 32] << 4) & 0xf0); byte normalizedAlpha1 = (byte)(alpha1 * 17); byte normalizedAlpha2 = (byte)(alpha2 * 17); decompressedAlphaMap.Add(normalizedAlpha1); decompressedAlphaMap.Add(normalizedAlpha2); } else if (x == 31) { int xminus = x - 1; //attempt to repair map on horizontal axis byte alpha = (byte)(compressedAlphaMap[xminus + y * 32] << 4 & 0xf0); byte normalizedAlpha = (byte)(alpha * 17); decompressedAlphaMap.Add(normalizedAlpha); } else { //fill in normally byte alpha1 = (byte)((compressedAlphaMap[x + y * 32]) & 0xf0); byte alpha2 = (byte)((compressedAlphaMap[x + y * 32] << 4) & 0xf0); byte normalizedAlpha1 = (byte)(alpha1 * 17); byte normalizedAlpha2 = (byte)(alpha2 * 17); decompressedAlphaMap.Add(normalizedAlpha1); decompressedAlphaMap.Add(normalizedAlpha2); } } } } return(decompressedAlphaMap); }