diff --git a/.vs/Toolbox/v16/.suo b/.vs/Toolbox/v16/.suo new file mode 100644 index 00000000..7700c9e0 Binary files /dev/null and b/.vs/Toolbox/v16/.suo differ diff --git a/.vs/Toolbox/v16/Server/sqlite3/db.lock b/.vs/Toolbox/v16/Server/sqlite3/db.lock new file mode 100644 index 00000000..e69de29b diff --git a/.vs/Toolbox/v16/Server/sqlite3/storage.ide b/.vs/Toolbox/v16/Server/sqlite3/storage.ide new file mode 100644 index 00000000..6ef0cf16 Binary files /dev/null and b/.vs/Toolbox/v16/Server/sqlite3/storage.ide differ diff --git a/File_Format_Library/FileFormats/Texture/BTI.cs b/File_Format_Library/FileFormats/Texture/BTI.cs new file mode 100644 index 00000000..293ea7dd --- /dev/null +++ b/File_Format_Library/FileFormats/Texture/BTI.cs @@ -0,0 +1,175 @@ +using System; +using System.Collections.Generic; +using System.Windows.Forms; +using Toolbox.Library; +using Toolbox.Library.Forms; +using Toolbox.Library.IO; + +namespace AmbrosiaPikmin1.FileFormats.BTI +{ + class BTI : TreeNodeFile, IFileFormat + { + public FileType FileType { get; set; } = FileType.Image; + + public bool CanSave { get; set; } + + public string[] Description { get; set; } = new string[] { "Binary Texture Image" }; + public string[] Extension { get; set; } = new string[] { "*.bti" }; + public string FileName { get; set; } + public string FilePath { get; set; } + + //Stores compression info from being opened (done automaitcally) + public IFileInfo IFileInfo { get; set; } + + //Check how the file wil be opened + public bool Identify(System.IO.Stream stream) + { + return Utils.HasExtension(FileName, ".bti"); + } + + //A Type list for custom types + //With this you can add in classes with IFileMenuExtension to add menus for this format + public Type[] Types + { + get + { + List types = new List(); + return types.ToArray(); + } + } + + private int RoundWidth(int width, int BlockWidth) + { + return width + ((BlockWidth - (width % BlockWidth)) % BlockWidth); + } + private int RoundHeight(int height, int BlockHeight) + { + return height + ((BlockHeight - (height % BlockHeight)) % BlockHeight); + } + + public void Load(System.IO.Stream stream) + { + //Set this if you want to save the file format + CanSave = true; + + //You can add a FileReader with Toolbox.Library.IO namespace + using (var reader = new FileReader(stream)) + { + Texture tex = new Texture(); + tex.CanEdit = false; + + reader.SetByteOrder(true); + + //Turn this format into a common format used by this tool + byte texFormat = reader.ReadByte(); + tex.Format = Decode_Gamecube.ToGenericFormat((Decode_Gamecube.TextureFormats)texFormat); + + _ = reader.ReadByte(); // enable alpha + tex.Width = reader.ReadUInt16(); + tex.Height = reader.ReadUInt16(); + _ = reader.ReadByte(); // wrap s + _ = reader.ReadByte(); // wrap t + tex.PaletteFormat = (PALETTE_FORMAT)reader.ReadInt16(); + _ = reader.ReadInt16(); // num of palette entries + _ = reader.ReadInt32(); // offset to palette data + _ = reader.ReadInt32(); // border colour + _ = reader.ReadByte(); // min filter type + _ = reader.ReadByte(); // mag filter type + _ = reader.ReadInt16(); + + tex.MipCount = reader.ReadByte(); + _ = reader.ReadByte(); + _ = reader.ReadInt16(); + uint offsetToImageData = reader.ReadUInt32(); // offset to image data + + //Lets set our method of decoding + tex.PlatformSwizzle = PlatformSwizzle.Platform_Gamecube; + + reader.Seek(offsetToImageData, System.IO.SeekOrigin.Begin); + int imageDataSize = RoundWidth((int)tex.Width, (int)STGenericTexture.GetBlockWidth(tex.Format)) * RoundHeight((int)tex.Height, (int)STGenericTexture.GetBlockHeight(tex.Format)) + * (int)STGenericTexture.GetBytesPerPixel(tex.Format) >> 3; + + tex.ImageData = reader.ReadBytes(imageDataSize); + + tex.Name = FileName; + tex.ToolTipText = "Binary Texture Image, used for 2D textures like fonts"; + _ = Nodes.Add(tex); + } + } + + public byte[] Save() + { + return null; + } + + public void Unload() + { + + } + + public class Texture : STGenericTexture + { + public byte[] ImageData { get; set; } + + //A list of supported formats + //This gets used in the re encode option + public override TEX_FORMAT[] SupportedFormats + { + get + { + return new TEX_FORMAT[] + { + TEX_FORMAT.I4, + TEX_FORMAT.I8, + TEX_FORMAT.I4, + TEX_FORMAT.I8, + TEX_FORMAT.RGB565, + TEX_FORMAT.RGB5A3, + TEX_FORMAT.RGBA32, + TEX_FORMAT.C4, + TEX_FORMAT.C8, + TEX_FORMAT.C14X2, + TEX_FORMAT.CMPR, + }; + } + } + + public override bool CanEdit { get; set; } = false; + + //This gets used in the image editor if the image gets edited + //This wll not be ran if "CanEdit" is set to false! + public override void SetImageData(System.Drawing.Bitmap bitmap, int ArrayLevel) + { + + } + + //Gets the raw image data in bytes + //Gets decoded automatically + public override byte[] GetImageData(int ArrayLevel = 0, int MipLevel = 0) + { + return ImageData; + } + + + //This is an event for when the tree is clicked on + //Load our editor + public override void OnClick(TreeView treeView) + { + //Here we check for an active editor and load a new one if not found + //This is used when a tree/object editor is used + ImageEditorBase editor = (ImageEditorBase)LibraryGUI.GetActiveContent(typeof(ImageEditorBase)); + if (editor == null) + { + editor = new ImageEditorBase(); + editor.Dock = DockStyle.Fill; + LibraryGUI.LoadEditor(editor); + } + + //Load our image and any properties + //If you don't make a class for properties you can use a generic class provided in STGenericTexture + editor.LoadProperties(GenericProperties); + editor.LoadImage(this); + } + } + } +} diff --git a/File_Format_Library/FileFormats/Texture/TXE.cs b/File_Format_Library/FileFormats/Texture/TXE.cs new file mode 100644 index 00000000..fa30e515 --- /dev/null +++ b/File_Format_Library/FileFormats/Texture/TXE.cs @@ -0,0 +1,156 @@ +using System; +using System.Collections.Generic; +using System.Windows.Forms; +using Toolbox.Library; +using Toolbox.Library.Forms; +using Toolbox.Library.IO; + +namespace AmbrosiaPikmin1.FileFormats.TXE +{ + class TXE : TreeNodeFile, IFileFormat + { + public FileType FileType { get; set; } = FileType.Image; + + public bool CanSave { get; set; } + + public string[] Description { get; set; } = new string[] { "Pikmin 1 Proprietary Texture" }; + public string[] Extension { get; set; } = new string[] { "*.txe" }; + public string FileName { get; set; } + public string FilePath { get; set; } + + //Stores compression info from being opened (done automaitcally) + public IFileInfo IFileInfo { get; set; } + + //Check how the file wil be opened + public bool Identify(System.IO.Stream stream) + { + return Utils.HasExtension(FileName, ".txe"); + } + + //A Type list for custom types + //With this you can add in classes with IFileMenuExtension to add menus for this format + public Type[] Types + { + get + { + List types = new List(); + return types.ToArray(); + } + } + + private void SkipPadding(FileReader stream, int offset) + { + stream.Seek((~(offset - 1) & (stream.Position + offset - 1)) - stream.Position); + } + + public void Load(System.IO.Stream stream) + { + //Set this if you want to save the file format + CanSave = true; + + //You can add a FileReader with Toolbox.Library.IO namespace + using (var reader = new FileReader(stream)) + { + Texture tex = new Texture(); + tex.CanEdit = false; + + reader.SetByteOrder(true); + + tex.Width = reader.ReadUInt16(); + tex.Height = reader.ReadUInt16(); + _ = reader.ReadInt16(); + //Turn this format into a common format used by this tool + short texFormat = reader.ReadInt16(); + tex.Format = Decode_Gamecube.ToGenericFormat((Decode_Gamecube.TextureFormats)texFormat); + + //Lets set our method of decoding + tex.PlatformSwizzle = PlatformSwizzle.Platform_Gamecube; + + int imageDataSize = reader.ReadInt32(); + + SkipPadding(reader, 0x20); + + tex.ImageData = reader.ReadBytes(imageDataSize); + + tex.Name = FileName; + tex.ToolTipText = "Binary Texture Image, used for 2D textures like fonts"; + _ = Nodes.Add(tex); + } + } + + public byte[] Save() + { + return null; + } + + public void Unload() + { + + } + + public class Texture : STGenericTexture + { + public byte[] ImageData { get; set; } + + //A list of supported formats + //This gets used in the re encode option + public override TEX_FORMAT[] SupportedFormats + { + get + { + return new TEX_FORMAT[] + { + TEX_FORMAT.I4, + TEX_FORMAT.I8, + TEX_FORMAT.I4, + TEX_FORMAT.I8, + TEX_FORMAT.RGB565, + TEX_FORMAT.RGB5A3, + TEX_FORMAT.RGBA32, + TEX_FORMAT.C4, + TEX_FORMAT.C8, + TEX_FORMAT.C14X2, + TEX_FORMAT.CMPR, + }; + } + } + + public override bool CanEdit { get; set; } = false; + + //This gets used in the image editor if the image gets edited + //This wll not be ran if "CanEdit" is set to false! + public override void SetImageData(System.Drawing.Bitmap bitmap, int ArrayLevel) + { + + } + + //Gets the raw image data in bytes + //Gets decoded automatically + public override byte[] GetImageData(int ArrayLevel = 0, int MipLevel = 0) + { + return ImageData; + } + + + //This is an event for when the tree is clicked on + //Load our editor + public override void OnClick(TreeView treeView) + { + //Here we check for an active editor and load a new one if not found + //This is used when a tree/object editor is used + ImageEditorBase editor = (ImageEditorBase)LibraryGUI.GetActiveContent(typeof(ImageEditorBase)); + if (editor == null) + { + editor = new ImageEditorBase(); + editor.Dock = DockStyle.Fill; + LibraryGUI.LoadEditor(editor); + } + + //Load our image and any properties + //If you don't make a class for properties you can use a generic class provided in STGenericTexture + editor.LoadProperties(GenericProperties); + editor.LoadImage(this); + } + } + } +} diff --git a/File_Format_Library/File_Format_Library.csproj b/File_Format_Library/File_Format_Library.csproj index 1f185382..e1132196 100644 --- a/File_Format_Library/File_Format_Library.csproj +++ b/File_Format_Library/File_Format_Library.csproj @@ -275,10 +275,12 @@ + + diff --git a/File_Format_Library/Main.cs b/File_Format_Library/Main.cs index 8cbe0abf..874161d4 100644 --- a/File_Format_Library/Main.cs +++ b/File_Format_Library/Main.cs @@ -8,6 +8,8 @@ using Toolbox.Library.Forms; using Toolbox.Library.IO; using FirstPlugin.Forms; using FirstPlugin.LuigisMansion.DarkMoon; +using AmbrosiaPikmin1.FileFormats.BTI; +using AmbrosiaPikmin1.FileFormats.TXE; namespace FirstPlugin { @@ -287,6 +289,8 @@ namespace FirstPlugin private Type[] LoadFileFormats() { List Formats = new List(); + Formats.Add(typeof(BTI)); + Formats.Add(typeof(TXE)); Formats.Add(typeof(SARC)); Formats.Add(typeof(BFRES)); Formats.Add(typeof(BCRES)); diff --git a/Switch_Toolbox_Library/Generics/TEX_FORMAT.cs b/Switch_Toolbox_Library/Generics/TEX_FORMAT.cs index 6d94e37d..bd6d60a9 100644 --- a/Switch_Toolbox_Library/Generics/TEX_FORMAT.cs +++ b/Switch_Toolbox_Library/Generics/TEX_FORMAT.cs @@ -188,5 +188,7 @@ namespace Toolbox.Library C8 = 247, C14X2 = 248, CMPR = 249, + RGB565 = 250, + RGB5A3 = 251 } } diff --git a/Switch_Toolbox_Library/Generics/Texture/GenericTexture.cs b/Switch_Toolbox_Library/Generics/Texture/GenericTexture.cs index 9bb23056..8ad60b7a 100644 --- a/Switch_Toolbox_Library/Generics/Texture/GenericTexture.cs +++ b/Switch_Toolbox_Library/Generics/Texture/GenericTexture.cs @@ -103,7 +103,7 @@ namespace Toolbox.Library // //Gets a list of surfaces given the start index of the array and the amount of arrays to obtain // - public List GetSurfaces(int ArrayIndexStart = 0, bool GetAllSurfaces = true, int GetSurfaceAmount = 1 ) + public List GetSurfaces(int ArrayIndexStart = 0, bool GetAllSurfaces = true, int GetSurfaceAmount = 1) { if (GetAllSurfaces) GetSurfaceAmount = (int)ArrayCount; @@ -146,7 +146,8 @@ namespace Toolbox.Library public uint MipCount { get { return mipCount; } - set { + set + { if (value == 0) mipCount = 1; else if (value > 17) @@ -184,7 +185,7 @@ namespace Toolbox.Library public RenderableTex RenderableTex { get; set; } - public abstract TEX_FORMAT[] SupportedFormats { get;} + public abstract TEX_FORMAT[] SupportedFormats { get; } public static uint GetBytesPerPixel(TEX_FORMAT Format) { @@ -212,7 +213,7 @@ namespace Toolbox.Library private static readonly Dictionary FormatTable = new Dictionary() - { + { { TEX_FORMAT.R32G32B32A32_FLOAT, new FormatInfo(16, 1, 1, 1, TargetBuffer.Color) }, { TEX_FORMAT.R32G32B32A32_SINT, new FormatInfo(16, 1, 1, 1, TargetBuffer.Color) }, { TEX_FORMAT.R32G32B32A32_UINT, new FormatInfo(16, 1, 1, 1, TargetBuffer.Color) }, @@ -314,11 +315,24 @@ namespace Toolbox.Library { TEX_FORMAT.A4, new FormatInfo(4, 1, 1, 1, TargetBuffer.Color) }, { TEX_FORMAT.A8_UNORM, new FormatInfo(8, 1, 1, 1, TargetBuffer.Color) }, - { TEX_FORMAT.D16_UNORM, new FormatInfo(2, 1, 1, 1, TargetBuffer.Depth) }, - { TEX_FORMAT.D24_UNORM_S8_UINT, new FormatInfo(4, 1, 1, 1, TargetBuffer.Depth) }, - { TEX_FORMAT.D32_FLOAT, new FormatInfo(4, 1, 1, 1, TargetBuffer.Depth) }, - { TEX_FORMAT.D32_FLOAT_S8X24_UINT, new FormatInfo(8, 1, 1, 1,TargetBuffer.DepthStencil) } - }; + { TEX_FORMAT.D16_UNORM, new FormatInfo(2, 1, 1, 1, TargetBuffer.Depth) }, + { TEX_FORMAT.D24_UNORM_S8_UINT, new FormatInfo(4, 1, 1, 1, TargetBuffer.Depth) }, + { TEX_FORMAT.D32_FLOAT, new FormatInfo(4, 1, 1, 1, TargetBuffer.Depth) }, + { TEX_FORMAT.D32_FLOAT_S8X24_UINT, new FormatInfo(8, 1, 1, 1, TargetBuffer.DepthStencil)}, + + { TEX_FORMAT.I4, new FormatInfo(4, 8, 8, 1, TargetBuffer.Color) }, + { TEX_FORMAT.I8, new FormatInfo(8, 8, 4, 1, TargetBuffer.Color) }, + { TEX_FORMAT.IA4, new FormatInfo(8, 8, 4, 1, TargetBuffer.Color) }, + { TEX_FORMAT.IA8, new FormatInfo(16, 4, 4, 1, TargetBuffer.Color) }, + { TEX_FORMAT.RGB565, new FormatInfo(16, 4, 4, 1, TargetBuffer.Color) }, + { TEX_FORMAT.RGB5A3, new FormatInfo(16, 4, 4, 1, TargetBuffer.Color) }, + { TEX_FORMAT.RGBA32, new FormatInfo(32, 4, 4, 1, TargetBuffer.Color) }, + { TEX_FORMAT.C4, new FormatInfo(4, 8, 8, 1, TargetBuffer.Color) }, + { TEX_FORMAT.C8, new FormatInfo(8, 8, 4, 1, TargetBuffer.Color) }, + { TEX_FORMAT.C14X2, new FormatInfo(16, 4, 4, 1, TargetBuffer.Color) }, + { TEX_FORMAT.CMPR, new FormatInfo(4, 8, 8, 1, TargetBuffer.Color) } + + }; /// /// A Surface contains mip levels of compressed/uncompressed texture data @@ -328,7 +342,7 @@ namespace Toolbox.Library public List mipmaps = new List(); } - public void CreateGenericTexture(uint width, uint height, List surfaces, TEX_FORMAT format ) + public void CreateGenericTexture(uint width, uint height, List surfaces, TEX_FORMAT format) { Width = width; Height = height; @@ -383,15 +397,16 @@ namespace Toolbox.Library byte[] data = GetImageData(ArrayLevel, MipLevel); byte[] paletteData = GetPaletteData(); if (data.Length == 0) - return new Bitmap(1,1); + return new Bitmap(1, 1); try { if (data == null) throw new Exception("Data is null!"); - if (PlatformSwizzle == PlatformSwizzle.Platform_3DS && !IsCompressed(Format)) { - var Image = BitmapExtension.GetBitmap(ConvertBgraToRgba(CTR_3DS.DecodeBlock(data, (int)width, (int)height, Format)), + if (PlatformSwizzle == PlatformSwizzle.Platform_3DS && !IsCompressed(Format)) + { + var Image = BitmapExtension.GetBitmap(ConvertBgraToRgba(CTR_3DS.DecodeBlock(data, (int)width, (int)height, Format)), (int)width, (int)height, System.Drawing.Imaging.PixelFormat.Format32bppArgb); Image.RotateFlip(RotateFlipType.RotateNoneFlipY); //It's upside down for some reason so flip it return Image; @@ -506,11 +521,11 @@ namespace Toolbox.Library /// Returns a byte array of decoded data. public static byte[] DecodeBlock(byte[] data, uint Width, uint Height, TEX_FORMAT Format, byte[] paletteData, ImageParameters parameters, PALETTE_FORMAT PaletteFormat = PALETTE_FORMAT.None, PlatformSwizzle PlatformSwizzle = PlatformSwizzle.None) { - if (data == null) throw new Exception($"Data is null!"); - if (Format <= 0) throw new Exception($"Invalid Format!"); + if (data == null) throw new Exception($"Data is null!"); + if (Format <= 0) throw new Exception($"Invalid Format!"); if (data.Length <= 0) throw new Exception($"Data is empty!"); - if (Width <= 0) throw new Exception($"Invalid width size {Width}!"); - if (Height <= 0) throw new Exception($"Invalid height size {Height}!"); + if (Width <= 0) throw new Exception($"Invalid width size {Width}!"); + if (Height <= 0) throw new Exception($"Invalid height size {Height}!"); byte[] imageData = new byte[0]; bool DontSwapRG = false; @@ -552,7 +567,7 @@ namespace Toolbox.Library public string DebugInfo() { return $"Texture Info:\n" + - $"Name: {Text}\n" + + $"Name: {Text}\n" + $"Format: {Format}\n" + $"Height: {Height}\n" + $"Width: {Width}\n" + @@ -566,7 +581,7 @@ namespace Toolbox.Library public uint GenerateMipCount(int Width, int Height) { - return GenerateMipCount((uint)Width, (uint)Height); + return GenerateMipCount((uint)Width, (uint)Height); } public uint GenerateMipCount(uint Width, uint Height) @@ -686,7 +701,8 @@ namespace Toolbox.Library } } - public override void Export(string FileName) { + public override void Export(string FileName) + { Export(FileName); } @@ -712,7 +728,7 @@ namespace Toolbox.Library if (sfd.ShowDialog() == DialogResult.OK) { - Export(sfd.FileName, false, false, 0,0); + Export(sfd.FileName, false, false, 0, 0); } } @@ -757,7 +773,7 @@ namespace Toolbox.Library public void SaveTGA(string FileName, bool ExportSurfaceLevel = false, bool ExportMipMapLevel = false, int SurfaceLevel = 0, int MipLevel = 0) { - + } public void SaveBitMap(string FileName, bool ExportSurfaceLevel = false, bool ExportMipMapLevel = false, int SurfaceLevel = 0, int MipLevel = 0) @@ -773,7 +789,7 @@ namespace Toolbox.Library { progressBar.Task = "Select dialog option... "; - var result = MessageBox.Show("Multiple image surfaces found! Would you like to export them all?", "Image Exporter", + var result = MessageBox.Show("Multiple image surfaces found! Would you like to export them all?", "Image Exporter", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (result == DialogResult.Yes) { @@ -798,7 +814,7 @@ namespace Toolbox.Library return; } - } + } progressBar.Task = $"Decoding image {Text}... "; progressBar.Value = 20; @@ -946,9 +962,9 @@ namespace Toolbox.Library if (width > 1) width /= 2; - + if (height > 1) - height /= 2; + height /= 2; } return mipCount; @@ -996,7 +1012,7 @@ namespace Toolbox.Library int pixel = 0; for (int i = 0; i < bpp; i += 1) pixel |= bytes[pos + i] << (8 * i); - + comp = GetComponentsFromPixel(Format, pixel, comp); NewImageData[pos_ + 3] = comp[compSel[3]]; diff --git a/Switch_Toolbox_Library/System.Buffers.dll b/Switch_Toolbox_Library/System.Buffers.dll new file mode 100644 index 00000000..c517a3b6 Binary files /dev/null and b/Switch_Toolbox_Library/System.Buffers.dll differ diff --git a/Switch_Toolbox_Library/System.Memory.dll b/Switch_Toolbox_Library/System.Memory.dll new file mode 100644 index 00000000..078aa556 Binary files /dev/null and b/Switch_Toolbox_Library/System.Memory.dll differ diff --git a/Switch_Toolbox_Library/Texture Decoding/Gamecube/Decode_Gamecube.cs b/Switch_Toolbox_Library/Texture Decoding/Gamecube/Decode_Gamecube.cs index 727ecfee..e1912d8c 100644 --- a/Switch_Toolbox_Library/Texture Decoding/Gamecube/Decode_Gamecube.cs +++ b/Switch_Toolbox_Library/Texture Decoding/Gamecube/Decode_Gamecube.cs @@ -27,9 +27,9 @@ namespace Toolbox.Library case TextureFormats.I8: return TEX_FORMAT.I8; case TextureFormats.IA4: return TEX_FORMAT.IA4; case TextureFormats.IA8: return TEX_FORMAT.IA8; - case TextureFormats.RGB565: return TEX_FORMAT.R5G5B5_UNORM; - case TextureFormats.RGB5A3: return TEX_FORMAT.R5G5B5A3_UNORM; - case TextureFormats.RGBA32: return TEX_FORMAT.R32G32B32A32_FLOAT; + case TextureFormats.RGB565: return TEX_FORMAT.RGB565; + case TextureFormats.RGB5A3: return TEX_FORMAT.RGB5A3; + case TextureFormats.RGBA32: return TEX_FORMAT.RGBA32; default: throw new Exception("Unknown Format " + Format); } @@ -72,9 +72,9 @@ namespace Toolbox.Library case TEX_FORMAT.I8: return TextureFormats.I8; case TEX_FORMAT.IA4: return TextureFormats.IA4; case TEX_FORMAT.IA8: return TextureFormats.IA8; - case TEX_FORMAT.R5G5B5_UNORM: return TextureFormats.RGB565; - case TEX_FORMAT.R5G5B5A3_UNORM: return TextureFormats.RGB5A3; - case TEX_FORMAT.R32G32B32A32_FLOAT: return TextureFormats.RGBA32; + case TEX_FORMAT.RGB565: return TextureFormats.RGB565; + case TEX_FORMAT.RGB5A3: return TextureFormats.RGB5A3; + case TEX_FORMAT.RGBA32: return TextureFormats.RGBA32; default: throw new Exception("Unknown Format " + Format); } diff --git a/Switch_Toolbox_Library/Toolbox.Library.dll b/Switch_Toolbox_Library/Toolbox.Library.dll index 74220fe1..312bf4b7 100644 Binary files a/Switch_Toolbox_Library/Toolbox.Library.dll and b/Switch_Toolbox_Library/Toolbox.Library.dll differ diff --git a/Switch_Toolbox_Library/Toolbox.Library.pdb b/Switch_Toolbox_Library/Toolbox.Library.pdb index 1462f22d..43f1dc36 100644 Binary files a/Switch_Toolbox_Library/Toolbox.Library.pdb and b/Switch_Toolbox_Library/Toolbox.Library.pdb differ diff --git a/Switch_Toolbox_Library/Toolbox_Library.csproj b/Switch_Toolbox_Library/Toolbox_Library.csproj index 8e7c1b2e..c142b9e6 100644 --- a/Switch_Toolbox_Library/Toolbox_Library.csproj +++ b/Switch_Toolbox_Library/Toolbox_Library.csproj @@ -98,6 +98,7 @@ ..\Toolbox\Lib\NAudio.dll False + ..\Toolbox\Lib\ObjectListView.dll False diff --git a/Updater/obj/Debug/Updater.csproj.CoreCompileInputs.cache b/Updater/obj/Debug/Updater.csproj.CoreCompileInputs.cache index addead93..e8c155db 100644 --- a/Updater/obj/Debug/Updater.csproj.CoreCompileInputs.cache +++ b/Updater/obj/Debug/Updater.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -747948e0929dd8935549f97d0e91eb2d59336ea8 +2dd7d0617dba111aa487a7da42ed4f5f18627a3f