From 46f8023756eee54654c091b845442d9c3a33ec6c Mon Sep 17 00:00:00 2001 From: VaDiM Date: Tue, 5 Mar 2024 16:34:48 +0300 Subject: [PATCH] [GUI] Improve export of Texture2DArray images - Do not export an entire tex2darray array if both the tex2darray and some of its images were selected for exporting --- AssetStudio/Classes/Texture2D.cs | 2 +- AssetStudioGUI/AssetStudioGUIForm.cs | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/AssetStudio/Classes/Texture2D.cs b/AssetStudio/Classes/Texture2D.cs index 200a6ea..f138eab 100644 --- a/AssetStudio/Classes/Texture2D.cs +++ b/AssetStudio/Classes/Texture2D.cs @@ -26,7 +26,7 @@ namespace AssetStudio m_Name = $"{m_Texture2DArray.m_Name}_{layer + 1}"; type = ClassIDType.Texture2DArrayImage; - m_PathID = -1; + m_PathID = m_Texture2DArray.m_PathID; m_Width = m_Texture2DArray.m_Width; m_Height = m_Texture2DArray.m_Height; diff --git a/AssetStudioGUI/AssetStudioGUIForm.cs b/AssetStudioGUI/AssetStudioGUIForm.cs index 41abe8b..7428b3b 100644 --- a/AssetStudioGUI/AssetStudioGUIForm.cs +++ b/AssetStudioGUI/AssetStudioGUIForm.cs @@ -1894,6 +1894,19 @@ namespace AssetStudioGUI toExportAssets = visibleAssets; break; } + + if (toExportAssets != null && filterTypeToolStripMenuItem.DropDownItems.ContainsKey("Texture2DArray")) + { + var tex2dArrayImgPathIdSet = toExportAssets.FindAll(x => x.Type == ClassIDType.Texture2DArrayImage).Select(x => x.m_PathID).ToHashSet(); + foreach (var pathId in tex2dArrayImgPathIdSet) + { + toExportAssets = toExportAssets.Where(x => + x.Type != ClassIDType.Texture2DArray + || (x.Type == ClassIDType.Texture2DArray && x.m_PathID != pathId)) + .ToList(); + } + } + Studio.ExportAssets(saveFolderDialog.Folder, toExportAssets, exportType); } }