From d56acf67ef100ac85af5dcdfd84a0d99951fb40f Mon Sep 17 00:00:00 2001 From: KillzXGaming Date: Wed, 1 Jan 2020 18:34:23 -0500 Subject: [PATCH] Improve texture importing for bflyt editor --- .../FileFormats/Layout/TextureManager.cs | 16 +++++----- .../FileFormats/Texture/BNTX.cs | 30 ++++++++++++------- .../GUI/BFLYT/LayoutTextureList.cs | 10 +++++++ 3 files changed, 36 insertions(+), 20 deletions(-) diff --git a/File_Format_Library/FileFormats/Layout/TextureManager.cs b/File_Format_Library/FileFormats/Layout/TextureManager.cs index 7b744b10..0c4863a0 100644 --- a/File_Format_Library/FileFormats/Layout/TextureManager.cs +++ b/File_Format_Library/FileFormats/Layout/TextureManager.cs @@ -128,7 +128,7 @@ namespace LayoutBXLYT } } - public List AddTextures() + public List AddTextures() { List textures = new List(); @@ -179,16 +179,14 @@ namespace LayoutBXLYT bntx = BinaryContainers.Values.FirstOrDefault(); } - int startIndex = bntx.Textures.Count; - bntx.ImportTexture(); + int startIndex = bntx.Textures.Count - 1; + var importedTextures = bntx.ImportTexture(); + + Console.WriteLine("startIndex " + startIndex); //Load all the additional textues - - for (int i = 0; i < bntx.Textures.Count; i++) - { - if (i > startIndex - 1) - textures.Add(bntx.Textures.Values.ElementAt(i)); - } + for (int i = 0; i < importedTextures.Count; i++) + textures.Add(importedTextures[i]); } break; } diff --git a/File_Format_Library/FileFormats/Texture/BNTX.cs b/File_Format_Library/FileFormats/Texture/BNTX.cs index ef919e52..524259fb 100644 --- a/File_Format_Library/FileFormats/Texture/BNTX.cs +++ b/File_Format_Library/FileFormats/Texture/BNTX.cs @@ -606,7 +606,7 @@ namespace FirstPlugin private void ImportTextureAction(object sender, EventArgs args) { ImportTexture(); } - public void ImportTexture() + public List ImportTexture() { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = FileFilters.GetFilter(typeof(TextureData)); @@ -614,14 +614,16 @@ namespace FirstPlugin ofd.DefaultExt = "png"; ofd.Multiselect = true; - if (ofd.ShowDialog() == DialogResult.OK) - { - ImportTexture(ofd.FileNames); + if (ofd.ShowDialog() == DialogResult.OK) { + return ImportTexture(ofd.FileNames); } + return new List(); } - public void ImportTexture(string[] FileNames) + public List ImportTexture(string[] FileNames) { + List textures = new List(); + BinaryTextureImporterList importer = new BinaryTextureImporterList(); List settings = new List(); @@ -632,7 +634,7 @@ namespace FirstPlugin if (ext == ".dds" || ext == ".bftex" || ext == ".astc") { - AddTexture(name); + textures.Add(AddTexture(name)); } else { @@ -642,17 +644,18 @@ namespace FirstPlugin if (settings.Count == 0) { importer.Dispose(); - return; + return textures; } importer.LoadSettings(settings); - if (importer.ShowDialog() == DialogResult.OK) - { - ImportTexture(settings, importer.CompressionMode); + if (importer.ShowDialog() == DialogResult.OK) { + textures.AddRange(ImportTexture(settings, importer.CompressionMode)); } settings.Clear(); GC.Collect(); Cursor.Current = Cursors.Default; + + return textures; } public void ImportTexture(ImageKeyFrame[] Keys, string TextureName) @@ -679,8 +682,10 @@ namespace FirstPlugin Cursor.Current = Cursors.Default; } - private void ImportTexture(List settings, STCompressionMode CompressionMode) + private List ImportTexture(List settings, STCompressionMode CompressionMode) { + List textures = new List(); + Cursor.Current = Cursors.WaitCursor; foreach (var setting in settings) { @@ -708,6 +713,8 @@ namespace FirstPlugin Nodes.Add(setting.textureData); Textures.Add(setting.textureData.Text, setting.textureData); + textures.Add(setting.textureData); + setting.textureData.LoadOpenGLTexture(); LibraryGUI.UpdateViewport(); } @@ -716,6 +723,7 @@ namespace FirstPlugin MessageBox.Show("Something went wrong???"); } } + return textures; } //This function is an optional feature that will import a dummy texture if one is missing in the materials diff --git a/File_Format_Library/GUI/BFLYT/LayoutTextureList.cs b/File_Format_Library/GUI/BFLYT/LayoutTextureList.cs index b606be7e..2367e2f0 100644 --- a/File_Format_Library/GUI/BFLYT/LayoutTextureList.cs +++ b/File_Format_Library/GUI/BFLYT/LayoutTextureList.cs @@ -216,6 +216,13 @@ namespace LayoutBXLYT if (TextureList.ContainsKey(texture)) { ActiveLayout.TextureManager.RemoveTexture(TextureList[texture]); + foreach (var bntx in PluginRuntime.bntxContainers) { + if (bntx.Textures.ContainsKey(texture)) + bntx.Textures.Remove(texture); + } + if (PluginRuntime.bflimTextures.ContainsKey(texture)) + PluginRuntime.bflimTextures.Remove(texture); + TextureList.Remove(texture); } @@ -247,6 +254,9 @@ namespace LayoutBXLYT item.ImageIndex = 0; listViewCustom1.BeginUpdate(); + if (listViewCustom1.Items.ContainsKey(tex.Text)) + listViewCustom1.Items.RemoveByKey(tex.Text); + listViewCustom1.Items.Add(item); //Add icon