Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }