Support for exporting raw data

This commit is contained in:
Perfare 2019-07-28 19:48:06 +08:00
parent 20f9fe493f
commit f377381e26
4 changed files with 119 additions and 50 deletions

View File

@ -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;
}
}

View File

@ -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<AssetItem> toExportAssets = null;
switch (((ToolStripItem)sender).Name)
{
case "exportAllAssetsMenuItem":
toExportAssets = exportableAssets;
break;
case "exportFilteredAssetsMenuItem":
toExportAssets = visibleAssets;
break;
case "exportSelectedAssetsMenuItem":
toExportAssets = new List<AssetItem>(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<AssetItem> GetSelectedAssets()
{
var selectedAssets = new List<AssetItem>();
var selectedAssets = new List<AssetItem>(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<AssetItem> 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");
}
}
}
}

View File

@ -120,6 +120,9 @@
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>312, 17</value>
</metadata>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>432, 17</value>
</metadata>
<data name="fontPreviewBox.Text" xml:space="preserve">
<value>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</value>
</data>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>432, 17</value>
</metadata>
<metadata name="timer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>553, 17</value>
</metadata>

View File

@ -355,7 +355,7 @@ namespace AssetStudioGUI
return Path.GetInvalidFileNameChars().Aggregate(str, (current, c) => current.Replace(c, '_'));
}
public static void ExportAssets(string savePath, List<AssetItem> toExportAssets, int assetGroupSelectedIndex, bool openAfterExport)
public static void ExportAssets(string savePath, List<AssetItem> 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: