diff --git a/AssetStudioGUI/AssetStudioGUIForm.Designer.cs b/AssetStudioGUI/AssetStudioGUIForm.Designer.cs index f8f0881..568662e 100644 --- a/AssetStudioGUI/AssetStudioGUIForm.Designer.cs +++ b/AssetStudioGUI/AssetStudioGUIForm.Designer.cs @@ -58,6 +58,10 @@ this.exportFilteredAssetsMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); this.exportAnimatorWithSelectedAnimationClipToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.exportRawToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.allAssetsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.selectedAssetsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.filteredAssetsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.filterTypeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.allToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.debugMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -137,6 +141,7 @@ this.optionsToolStripMenuItem, this.modelToolStripMenuItem, this.exportToolStripMenuItem, + this.exportRawToolStripMenuItem, this.filterTypeToolStripMenuItem, this.debugMenuItem}); this.menuStrip1.Location = new System.Drawing.Point(0, 0); @@ -346,21 +351,21 @@ this.exportAllAssetsMenuItem.Name = "exportAllAssetsMenuItem"; this.exportAllAssetsMenuItem.Size = new System.Drawing.Size(334, 22); this.exportAllAssetsMenuItem.Text = "All assets"; - this.exportAllAssetsMenuItem.Click += new System.EventHandler(this.ExportAssets_Click); + this.exportAllAssetsMenuItem.Click += new System.EventHandler(this.exportAllAssetsMenuItem_Click); // // exportSelectedAssetsMenuItem // this.exportSelectedAssetsMenuItem.Name = "exportSelectedAssetsMenuItem"; this.exportSelectedAssetsMenuItem.Size = new System.Drawing.Size(334, 22); this.exportSelectedAssetsMenuItem.Text = "Selected assets"; - this.exportSelectedAssetsMenuItem.Click += new System.EventHandler(this.ExportAssets_Click); + this.exportSelectedAssetsMenuItem.Click += new System.EventHandler(this.exportSelectedAssetsMenuItem_Click); // // exportFilteredAssetsMenuItem // this.exportFilteredAssetsMenuItem.Name = "exportFilteredAssetsMenuItem"; this.exportFilteredAssetsMenuItem.Size = new System.Drawing.Size(334, 22); this.exportFilteredAssetsMenuItem.Text = "Filtered assets"; - this.exportFilteredAssetsMenuItem.Click += new System.EventHandler(this.ExportAssets_Click); + this.exportFilteredAssetsMenuItem.Click += new System.EventHandler(this.exportFilteredAssetsMenuItem_Click); // // toolStripSeparator3 // @@ -374,6 +379,37 @@ this.exportAnimatorWithSelectedAnimationClipToolStripMenuItem.Text = "Export Animator with selected AnimationClip"; this.exportAnimatorWithSelectedAnimationClipToolStripMenuItem.Click += new System.EventHandler(this.exportAnimatorwithAnimationClipMenuItem_Click); // + // exportRawToolStripMenuItem + // + this.exportRawToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.allAssetsToolStripMenuItem, + this.selectedAssetsToolStripMenuItem, + this.filteredAssetsToolStripMenuItem}); + this.exportRawToolStripMenuItem.Name = "exportRawToolStripMenuItem"; + this.exportRawToolStripMenuItem.Size = new System.Drawing.Size(86, 21); + this.exportRawToolStripMenuItem.Text = "Export Raw"; + // + // allAssetsToolStripMenuItem + // + this.allAssetsToolStripMenuItem.Name = "allAssetsToolStripMenuItem"; + this.allAssetsToolStripMenuItem.Size = new System.Drawing.Size(165, 22); + this.allAssetsToolStripMenuItem.Text = "All assets"; + this.allAssetsToolStripMenuItem.Click += new System.EventHandler(this.allAssetsToolStripMenuItem_Click); + // + // selectedAssetsToolStripMenuItem + // + this.selectedAssetsToolStripMenuItem.Name = "selectedAssetsToolStripMenuItem"; + this.selectedAssetsToolStripMenuItem.Size = new System.Drawing.Size(165, 22); + this.selectedAssetsToolStripMenuItem.Text = "Selected assets"; + this.selectedAssetsToolStripMenuItem.Click += new System.EventHandler(this.selectedAssetsToolStripMenuItem_Click); + // + // filteredAssetsToolStripMenuItem + // + this.filteredAssetsToolStripMenuItem.Name = "filteredAssetsToolStripMenuItem"; + this.filteredAssetsToolStripMenuItem.Size = new System.Drawing.Size(165, 22); + this.filteredAssetsToolStripMenuItem.Text = "Filtered assets"; + this.filteredAssetsToolStripMenuItem.Click += new System.EventHandler(this.filteredAssetsToolStripMenuItem_Click); + // // filterTypeToolStripMenuItem // this.filterTypeToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -896,7 +932,7 @@ this.jumpToSceneHierarchyToolStripMenuItem, this.showOriginalFileToolStripMenuItem}); this.contextMenuStrip1.Name = "contextMenuStrip1"; - this.contextMenuStrip1.Size = new System.Drawing.Size(335, 114); + this.contextMenuStrip1.Size = new System.Drawing.Size(335, 92); // // exportSelectedAssetsToolStripMenuItem // @@ -1057,6 +1093,10 @@ private System.Windows.Forms.ToolStripMenuItem exportSelectedObjectsmergeToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem exportSelectedObjectsmergeWithAnimationClipToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripMenuItem exportRawToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem allAssetsToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem selectedAssetsToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem filteredAssetsToolStripMenuItem; } } diff --git a/AssetStudioGUI/AssetStudioGUIForm.cs b/AssetStudioGUI/AssetStudioGUIForm.cs index c37c7ba..5499198 100644 --- a/AssetStudioGUI/AssetStudioGUIForm.cs +++ b/AssetStudioGUI/AssetStudioGUIForm.cs @@ -1369,41 +1369,6 @@ namespace AssetStudioGUI return false; } - private void ExportAssets_Click(object sender, EventArgs e) - { - if (exportableAssets.Count > 0) - { - var saveFolderDialog1 = new OpenFolderDialog(); - if (saveFolderDialog1.ShowDialog(this) == DialogResult.OK) - { - timer.Stop(); - - List toExportAssets = null; - switch (((ToolStripItem)sender).Name) - { - case "exportAllAssetsMenuItem": - toExportAssets = exportableAssets; - break; - case "exportFilteredAssetsMenuItem": - toExportAssets = visibleAssets; - break; - case "exportSelectedAssetsMenuItem": - toExportAssets = new List(assetListView.SelectedIndices.Count); - foreach (int i in assetListView.SelectedIndices) - { - toExportAssets.Add((AssetItem)assetListView.Items[i]); - } - break; - } - ExportAssets(saveFolderDialog1.Folder, toExportAssets, assetGroupOptions.SelectedIndex, openAfterExport.Checked); - } - } - else - { - StatusStripUpdate("No exportable assets loaded"); - } - } - private void SetProgressBarValue(int value) { if (InvokeRequired) @@ -1740,12 +1705,7 @@ namespace AssetStudioGUI private void exportSelectedAssetsToolStripMenuItem_Click(object sender, EventArgs e) { - var saveFolderDialog1 = new OpenFolderDialog(); - if (saveFolderDialog1.ShowDialog(this) == DialogResult.OK) - { - timer.Stop(); - ExportAssets(saveFolderDialog1.Folder, GetSelectedAssets(), assetGroupOptions.SelectedIndex, openAfterExport.Checked); - } + ExportAssets(2, false); } private void showOriginalFileToolStripMenuItem_Click(object sender, EventArgs e) @@ -1857,6 +1817,21 @@ namespace AssetStudioGUI } } + private void allAssetsToolStripMenuItem_Click(object sender, EventArgs e) + { + ExportAssets(1, true); + } + + private void selectedAssetsToolStripMenuItem_Click(object sender, EventArgs e) + { + ExportAssets(2, true); + } + + private void filteredAssetsToolStripMenuItem_Click(object sender, EventArgs e) + { + ExportAssets(3, true); + } + private void jumpToSceneHierarchyToolStripMenuItem_Click(object sender, EventArgs e) { var selectasset = (AssetItem)assetListView.Items[assetListView.SelectedIndices[0]]; @@ -1867,6 +1842,21 @@ namespace AssetStudioGUI } } + private void exportAllAssetsMenuItem_Click(object sender, EventArgs e) + { + ExportAssets(1, false); + } + + private void exportSelectedAssetsMenuItem_Click(object sender, EventArgs e) + { + ExportAssets(2, false); + } + + private void exportFilteredAssetsMenuItem_Click(object sender, EventArgs e) + { + ExportAssets(3, false); + } + private void exportAllObjectssplitToolStripMenuItem1_Click(object sender, EventArgs e) { if (sceneTreeView.Nodes.Count > 0) @@ -1886,7 +1876,7 @@ namespace AssetStudioGUI private List GetSelectedAssets() { - var selectedAssets = new List(); + var selectedAssets = new List(assetListView.SelectedIndices.Count); foreach (int index in assetListView.SelectedIndices) { selectedAssets.Add((AssetItem)assetListView.Items[index]); @@ -1923,5 +1913,36 @@ namespace AssetStudioGUI assetListView.VirtualListSize = visibleAssets.Count; assetListView.EndUpdate(); } + + private void ExportAssets(int type, bool raw) + { + if (exportableAssets.Count > 0) + { + var saveFolderDialog1 = new OpenFolderDialog(); + if (saveFolderDialog1.ShowDialog(this) == DialogResult.OK) + { + timer.Stop(); + + List toExportAssets = null; + switch (type) + { + case 1: //All Assets + toExportAssets = exportableAssets; + break; + case 2: //Selected Assets + toExportAssets = GetSelectedAssets(); + break; + case 3: //Filtered Assets + toExportAssets = visibleAssets; + break; + } + Studio.ExportAssets(saveFolderDialog1.Folder, toExportAssets, assetGroupOptions.SelectedIndex, openAfterExport.Checked, raw); + } + } + else + { + StatusStripUpdate("No exportable assets loaded"); + } + } } } diff --git a/AssetStudioGUI/AssetStudioGUIForm.resx b/AssetStudioGUI/AssetStudioGUIForm.resx index 2ba6a7a..f5d72e1 100644 --- a/AssetStudioGUI/AssetStudioGUIForm.resx +++ b/AssetStudioGUI/AssetStudioGUIForm.resx @@ -120,6 +120,9 @@ 312, 17 + + 432, 17 + abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWYZ 1234567890.:,;'\"(!?)+-*/= @@ -138,9 +141,6 @@ The quick brown fox jumps over the lazy dog. 1234567890 The quick brown fox jumps over the lazy dog. 1234567890 - - 432, 17 - 553, 17 diff --git a/AssetStudioGUI/Studio.cs b/AssetStudioGUI/Studio.cs index 1f3d8f1..ef0c997 100644 --- a/AssetStudioGUI/Studio.cs +++ b/AssetStudioGUI/Studio.cs @@ -355,7 +355,7 @@ namespace AssetStudioGUI return Path.GetInvalidFileNameChars().Aggregate(str, (current, c) => current.Replace(c, '_')); } - public static void ExportAssets(string savePath, List toExportAssets, int assetGroupSelectedIndex, bool openAfterExport) + public static void ExportAssets(string savePath, List toExportAssets, int assetGroupSelectedIndex, bool openAfterExport, bool raw) { ThreadPool.QueueUserWorkItem(state => { @@ -379,6 +379,14 @@ namespace AssetStudioGUI Logger.Info($"Exporting {asset.TypeString}: {asset.Text}"); try { + if (raw) + { + if (ExportRawFile(asset, exportpath)) + { + exportedCount++; + } + continue; + } switch (asset.Type) { case ClassIDType.Texture2D: