private static List <XboxBitmap> ParseImages(XboxBitmap xboxBitmap, Bitmap.Image image, byte[] imageData, int bitmapSize) { List <XboxBitmap> xboxBitmaps = new List <XboxBitmap>(); switch (image.Type) { case BitmapType.Texture2D: xboxBitmap.Data = imageData; xboxBitmaps.Add(xboxBitmap); if ((image.XboxFlags.HasFlag(BitmapFlagsXbox.TiledTexture) && image.XboxFlags.HasFlag(BitmapFlagsXbox.Xbox360ByteOrder))) { xboxBitmap.Data = BitmapDecoder.ConvertToLinearTexture(xboxBitmap.Data, xboxBitmap.VirtualWidth, xboxBitmap.VirtualHeight, xboxBitmap.Format); } break; case BitmapType.Texture3D: case BitmapType.Array: var count = xboxBitmap.Depth; var size = bitmapSize / count; for (int i = 0; i < count; i++) { byte[] data = new byte[size]; Array.Copy(imageData, i * size, data, 0, size); XboxBitmap newXboxBitmap = xboxBitmap.ShallowCopy(); if ((image.XboxFlags.HasFlag(BitmapFlagsXbox.TiledTexture) && image.XboxFlags.HasFlag(BitmapFlagsXbox.Xbox360ByteOrder))) { data = BitmapDecoder.ConvertToLinearTexture(data, xboxBitmap.VirtualWidth, xboxBitmap.VirtualHeight, xboxBitmap.Format); } newXboxBitmap.Data = data; xboxBitmaps.Add(newXboxBitmap); } break; case BitmapType.CubeMap: count = 6; size = bitmapSize / count; for (int i = 0; i < count; i++) { byte[] data = new byte[size]; Array.Copy(imageData, i * size, data, 0, size); XboxBitmap newXboxBitmap = xboxBitmap.ShallowCopy(); if ((image.XboxFlags.HasFlag(BitmapFlagsXbox.TiledTexture) && image.XboxFlags.HasFlag(BitmapFlagsXbox.Xbox360ByteOrder))) { data = BitmapDecoder.ConvertToLinearTexture(data, xboxBitmap.VirtualWidth, xboxBitmap.VirtualHeight, xboxBitmap.Format); } newXboxBitmap.Data = data; xboxBitmaps.Add(newXboxBitmap); } break; } return(xboxBitmaps); }