[GUI] Rework some import options
- Added feature to load and export import options to a file (import options include unity version). - Added option to always decompress bundles to disk. (Related issue: #58 )
This commit is contained in:
178
AssetStudioGUI/AssetStudioGUIForm.Designer.cs
generated
178
AssetStudioGUI/AssetStudioGUIForm.Designer.cs
generated
@@ -46,13 +46,17 @@
|
||||
this.autoPlayAudioAssetsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.useDumpTreeViewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.buildTreeStructureToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.customCompressionTypeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.blockInfoCompressionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.customBlockInfoCompressionComboBoxToolStripMenuItem = new System.Windows.Forms.ToolStripComboBox();
|
||||
this.blockCompressionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.customBlockCompressionComboBoxToolStripMenuItem = new System.Windows.Forms.ToolStripComboBox();
|
||||
this.toolStripMenuItem14 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.specifyUnityVersion = new System.Windows.Forms.ToolStripTextBox();
|
||||
this.importOptionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.specifyUnityVersionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.specifyUnityVersionTextBox = new System.Windows.Forms.ToolStripTextBox();
|
||||
this.bundleDecompressionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.alwaysDecompressToDiskToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.blockInfoCompressionTypeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.customBlockInfoCompressionComboBox = new System.Windows.Forms.ToolStripComboBox();
|
||||
this.blockCompressionTypeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.customBlockCompressionComboBox = new System.Windows.Forms.ToolStripComboBox();
|
||||
this.importOptionsToolStripSeparator = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.saveOptionsToDiskToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.showExpOpt = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.modelToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.exportAllObjectssplitToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
@@ -273,8 +277,7 @@
|
||||
this.autoPlayAudioAssetsToolStripMenuItem,
|
||||
this.useDumpTreeViewToolStripMenuItem,
|
||||
this.buildTreeStructureToolStripMenuItem,
|
||||
this.customCompressionTypeToolStripMenuItem,
|
||||
this.toolStripMenuItem14,
|
||||
this.importOptionsToolStripMenuItem,
|
||||
this.showExpOpt});
|
||||
this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
|
||||
this.optionsToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
|
||||
@@ -359,79 +362,118 @@
|
||||
this.buildTreeStructureToolStripMenuItem.ToolTipText = "You can disable tree structure building if you don\'t use the Scene Hierarchy tab";
|
||||
this.buildTreeStructureToolStripMenuItem.CheckedChanged += new System.EventHandler(this.buildTreeStructureToolStripMenuItem_CheckedChanged);
|
||||
//
|
||||
// customCompressionTypeToolStripMenuItem
|
||||
// importOptionsToolStripMenuItem
|
||||
//
|
||||
this.customCompressionTypeToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.blockInfoCompressionToolStripMenuItem,
|
||||
this.customBlockInfoCompressionComboBoxToolStripMenuItem,
|
||||
this.blockCompressionToolStripMenuItem,
|
||||
this.customBlockCompressionComboBoxToolStripMenuItem});
|
||||
this.customCompressionTypeToolStripMenuItem.Name = "customCompressionTypeToolStripMenuItem";
|
||||
this.customCompressionTypeToolStripMenuItem.Size = new System.Drawing.Size(241, 22);
|
||||
this.customCompressionTypeToolStripMenuItem.Text = "Bundle compression type";
|
||||
this.importOptionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.specifyUnityVersionToolStripMenuItem,
|
||||
this.specifyUnityVersionTextBox,
|
||||
this.bundleDecompressionToolStripMenuItem,
|
||||
this.alwaysDecompressToDiskToolStripMenuItem,
|
||||
this.blockInfoCompressionTypeToolStripMenuItem,
|
||||
this.customBlockInfoCompressionComboBox,
|
||||
this.blockCompressionTypeToolStripMenuItem,
|
||||
this.customBlockCompressionComboBox,
|
||||
this.importOptionsToolStripSeparator,
|
||||
this.saveOptionsToDiskToolStripMenuItem});
|
||||
this.importOptionsToolStripMenuItem.Name = "importOptionsToolStripMenuItem";
|
||||
this.importOptionsToolStripMenuItem.Size = new System.Drawing.Size(241, 22);
|
||||
this.importOptionsToolStripMenuItem.Text = "Import options";
|
||||
this.importOptionsToolStripMenuItem.DropDownClosed += new System.EventHandler(this.importOptions_DropDownClose);
|
||||
this.importOptionsToolStripMenuItem.DropDownOpened += new System.EventHandler(this.importOptions_DropDownOpened);
|
||||
//
|
||||
// blockInfoCompressionToolStripMenuItem
|
||||
// specifyUnityVersionToolStripMenuItem
|
||||
//
|
||||
this.blockInfoCompressionToolStripMenuItem.Enabled = false;
|
||||
this.blockInfoCompressionToolStripMenuItem.Name = "blockInfoCompressionToolStripMenuItem";
|
||||
this.blockInfoCompressionToolStripMenuItem.Size = new System.Drawing.Size(197, 22);
|
||||
this.blockInfoCompressionToolStripMenuItem.Text = "BlockInfo Compression";
|
||||
this.specifyUnityVersionToolStripMenuItem.Enabled = false;
|
||||
this.specifyUnityVersionToolStripMenuItem.Name = "specifyUnityVersionToolStripMenuItem";
|
||||
this.specifyUnityVersionToolStripMenuItem.ShowShortcutKeys = false;
|
||||
this.specifyUnityVersionToolStripMenuItem.Size = new System.Drawing.Size(217, 22);
|
||||
this.specifyUnityVersionToolStripMenuItem.Text = "Specify Unity version";
|
||||
this.specifyUnityVersionToolStripMenuItem.ToolTipText = "Specify full Unity version, including letters at the end\r\nExample: 2017.4.39f1";
|
||||
//
|
||||
// customBlockInfoCompressionComboBoxToolStripMenuItem
|
||||
// specifyUnityVersionTextBox
|
||||
//
|
||||
this.customBlockInfoCompressionComboBoxToolStripMenuItem.DropDownHeight = 80;
|
||||
this.customBlockInfoCompressionComboBoxToolStripMenuItem.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.customBlockInfoCompressionComboBoxToolStripMenuItem.IntegralHeight = false;
|
||||
this.customBlockInfoCompressionComboBoxToolStripMenuItem.Items.AddRange(new object[] {
|
||||
this.specifyUnityVersionTextBox.Font = new System.Drawing.Font("Segoe UI", 9F);
|
||||
this.specifyUnityVersionTextBox.Name = "specifyUnityVersionTextBox";
|
||||
this.specifyUnityVersionTextBox.Size = new System.Drawing.Size(100, 23);
|
||||
//
|
||||
// bundleDecompressionToolStripMenuItem
|
||||
//
|
||||
this.bundleDecompressionToolStripMenuItem.Enabled = false;
|
||||
this.bundleDecompressionToolStripMenuItem.Name = "bundleDecompressionToolStripMenuItem";
|
||||
this.bundleDecompressionToolStripMenuItem.ShowShortcutKeys = false;
|
||||
this.bundleDecompressionToolStripMenuItem.Size = new System.Drawing.Size(217, 22);
|
||||
this.bundleDecompressionToolStripMenuItem.Text = "Bundle Decompression";
|
||||
//
|
||||
// alwaysDecompressToDiskToolStripMenuItem
|
||||
//
|
||||
this.alwaysDecompressToDiskToolStripMenuItem.CheckOnClick = true;
|
||||
this.alwaysDecompressToDiskToolStripMenuItem.Name = "alwaysDecompressToDiskToolStripMenuItem";
|
||||
this.alwaysDecompressToDiskToolStripMenuItem.ShowShortcutKeys = false;
|
||||
this.alwaysDecompressToDiskToolStripMenuItem.Size = new System.Drawing.Size(217, 22);
|
||||
this.alwaysDecompressToDiskToolStripMenuItem.Text = "Always decompress to disk";
|
||||
this.alwaysDecompressToDiskToolStripMenuItem.ToolTipText = "If not selected, any bundles less than 2GB will be decompressed to memory";
|
||||
this.alwaysDecompressToDiskToolStripMenuItem.Click += new System.EventHandler(this.alwaysDecompressToDiskToolStripMenuItem_Click);
|
||||
//
|
||||
// blockInfoCompressionTypeToolStripMenuItem
|
||||
//
|
||||
this.blockInfoCompressionTypeToolStripMenuItem.Enabled = false;
|
||||
this.blockInfoCompressionTypeToolStripMenuItem.Name = "blockInfoCompressionTypeToolStripMenuItem";
|
||||
this.blockInfoCompressionTypeToolStripMenuItem.ShowShortcutKeys = false;
|
||||
this.blockInfoCompressionTypeToolStripMenuItem.Size = new System.Drawing.Size(217, 22);
|
||||
this.blockInfoCompressionTypeToolStripMenuItem.Text = "BlockInfo Compression Type";
|
||||
//
|
||||
// customBlockInfoCompressionComboBox
|
||||
//
|
||||
this.customBlockInfoCompressionComboBox.DropDownHeight = 80;
|
||||
this.customBlockInfoCompressionComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.customBlockInfoCompressionComboBox.IntegralHeight = false;
|
||||
this.customBlockInfoCompressionComboBox.Items.AddRange(new object[] {
|
||||
"Auto",
|
||||
"Zstd",
|
||||
"Oodle",
|
||||
"Lz4/Lz4HC",
|
||||
"Lzma"});
|
||||
this.customBlockInfoCompressionComboBoxToolStripMenuItem.Name = "customBlockInfoCompressionComboBoxToolStripMenuItem";
|
||||
this.customBlockInfoCompressionComboBoxToolStripMenuItem.Size = new System.Drawing.Size(100, 23);
|
||||
this.customBlockInfoCompressionComboBoxToolStripMenuItem.ToolTipText = "Selected compression type will override detected type from asset bundle";
|
||||
this.customBlockInfoCompressionComboBoxToolStripMenuItem.SelectedIndexChanged += new System.EventHandler(this.customBlockInfoCompressionComboBoxToolStripMenuItem_SelectedIndexChanged);
|
||||
this.customBlockInfoCompressionComboBox.Name = "customBlockInfoCompressionComboBox";
|
||||
this.customBlockInfoCompressionComboBox.Size = new System.Drawing.Size(121, 23);
|
||||
this.customBlockInfoCompressionComboBox.ToolTipText = "Selected compression type will override detected type from asset bundle";
|
||||
this.customBlockInfoCompressionComboBox.SelectedIndexChanged += new System.EventHandler(this.customBlockInfoCompressionComboBox_SelectedIndexChanged);
|
||||
//
|
||||
// blockCompressionToolStripMenuItem
|
||||
// blockCompressionTypeToolStripMenuItem
|
||||
//
|
||||
this.blockCompressionToolStripMenuItem.Enabled = false;
|
||||
this.blockCompressionToolStripMenuItem.Name = "blockCompressionToolStripMenuItem";
|
||||
this.blockCompressionToolStripMenuItem.Size = new System.Drawing.Size(197, 22);
|
||||
this.blockCompressionToolStripMenuItem.Text = "Block Compression";
|
||||
this.blockCompressionTypeToolStripMenuItem.Enabled = false;
|
||||
this.blockCompressionTypeToolStripMenuItem.Name = "blockCompressionTypeToolStripMenuItem";
|
||||
this.blockCompressionTypeToolStripMenuItem.ShowShortcutKeys = false;
|
||||
this.blockCompressionTypeToolStripMenuItem.Size = new System.Drawing.Size(217, 22);
|
||||
this.blockCompressionTypeToolStripMenuItem.Text = "Block Compression Type";
|
||||
//
|
||||
// customBlockCompressionComboBoxToolStripMenuItem
|
||||
// customBlockCompressionComboBox
|
||||
//
|
||||
this.customBlockCompressionComboBoxToolStripMenuItem.DropDownHeight = 80;
|
||||
this.customBlockCompressionComboBoxToolStripMenuItem.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.customBlockCompressionComboBoxToolStripMenuItem.IntegralHeight = false;
|
||||
this.customBlockCompressionComboBoxToolStripMenuItem.Items.AddRange(new object[] {
|
||||
this.customBlockCompressionComboBox.DropDownHeight = 80;
|
||||
this.customBlockCompressionComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.customBlockCompressionComboBox.IntegralHeight = false;
|
||||
this.customBlockCompressionComboBox.Items.AddRange(new object[] {
|
||||
"Auto",
|
||||
"Zstd",
|
||||
"Oodle",
|
||||
"Lz4/Lz4HC",
|
||||
"Lzma"});
|
||||
this.customBlockCompressionComboBoxToolStripMenuItem.Name = "customBlockCompressionComboBoxToolStripMenuItem";
|
||||
this.customBlockCompressionComboBoxToolStripMenuItem.Size = new System.Drawing.Size(100, 23);
|
||||
this.customBlockCompressionComboBoxToolStripMenuItem.ToolTipText = "Selected compression type will override detected type from asset bundle";
|
||||
this.customBlockCompressionComboBoxToolStripMenuItem.SelectedIndexChanged += new System.EventHandler(this.customBlockCompressionComboBoxToolStripMenuItem_SelectedIndexChanged);
|
||||
this.customBlockCompressionComboBox.Name = "customBlockCompressionComboBox";
|
||||
this.customBlockCompressionComboBox.Size = new System.Drawing.Size(121, 23);
|
||||
this.customBlockCompressionComboBox.ToolTipText = "Selected compression type will override detected type from asset bundle";
|
||||
this.customBlockCompressionComboBox.SelectedIndexChanged += new System.EventHandler(this.customBlockCompressionComboBox_SelectedIndexChanged);
|
||||
//
|
||||
// toolStripMenuItem14
|
||||
// importOptionsToolStripSeparator
|
||||
//
|
||||
this.toolStripMenuItem14.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.specifyUnityVersion});
|
||||
this.toolStripMenuItem14.Name = "toolStripMenuItem14";
|
||||
this.toolStripMenuItem14.Size = new System.Drawing.Size(241, 22);
|
||||
this.toolStripMenuItem14.Text = "Specify Unity version";
|
||||
this.toolStripMenuItem14.DropDownClosed += new System.EventHandler(this.specifyUnityVersion_Close);
|
||||
this.importOptionsToolStripSeparator.Name = "importOptionsToolStripSeparator";
|
||||
this.importOptionsToolStripSeparator.Size = new System.Drawing.Size(214, 6);
|
||||
//
|
||||
// specifyUnityVersion
|
||||
// saveOptionsToDiskToolStripMenuItem
|
||||
//
|
||||
this.specifyUnityVersion.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.specifyUnityVersion.Font = new System.Drawing.Font("Microsoft YaHei UI", 9F);
|
||||
this.specifyUnityVersion.Name = "specifyUnityVersion";
|
||||
this.specifyUnityVersion.Size = new System.Drawing.Size(100, 23);
|
||||
this.specifyUnityVersion.ToolTipText = "Specify full Unity version, including letters at the end\r\nExample: 2017.4.39f1";
|
||||
this.saveOptionsToDiskToolStripMenuItem.Name = "saveOptionsToDiskToolStripMenuItem";
|
||||
this.saveOptionsToDiskToolStripMenuItem.ShowShortcutKeys = false;
|
||||
this.saveOptionsToDiskToolStripMenuItem.Size = new System.Drawing.Size(217, 22);
|
||||
this.saveOptionsToDiskToolStripMenuItem.Text = "Save options to disk";
|
||||
this.saveOptionsToDiskToolStripMenuItem.Click += new System.EventHandler(this.saveOptionsToDiskToolStripMenuItem_Click);
|
||||
//
|
||||
// showExpOpt
|
||||
//
|
||||
@@ -1758,8 +1800,6 @@
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem11;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem12;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem13;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem14;
|
||||
private System.Windows.Forms.ToolStripTextBox specifyUnityVersion;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem15;
|
||||
private System.Windows.Forms.ToolStripMenuItem dumpSelectedAssetsToolStripMenuItem;
|
||||
private System.Windows.Forms.ContextMenuStrip sceneContextMenuStrip;
|
||||
@@ -1790,7 +1830,6 @@
|
||||
private System.Windows.Forms.ToolStripMenuItem exportL2DWithFadeToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem l2DModelWithFadeListToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem exportL2DWithFadeLstToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem customCompressionTypeToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem useAssetLoadingViaTypetreeToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator assetLoadingToolStripSeparator;
|
||||
private System.Windows.Forms.TreeView dumpTreeView;
|
||||
@@ -1806,11 +1845,18 @@
|
||||
private System.Windows.Forms.ToolStripMenuItem colorThemeDarkToolStripMenuItem;
|
||||
private System.Windows.Forms.Label FMODaudioChannelsLabel;
|
||||
private System.Windows.Forms.ToolStripMenuItem autoPlayAudioAssetsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripComboBox customBlockCompressionComboBoxToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem blockCompressionToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem blockInfoCompressionToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripComboBox customBlockInfoCompressionComboBoxToolStripMenuItem;
|
||||
private System.Windows.Forms.CheckBox sceneExactSearchCheckBox;
|
||||
private System.Windows.Forms.ToolStripMenuItem importOptionsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem specifyUnityVersionToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripTextBox specifyUnityVersionTextBox;
|
||||
private System.Windows.Forms.ToolStripMenuItem bundleDecompressionToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem alwaysDecompressToDiskToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem blockInfoCompressionTypeToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripComboBox customBlockInfoCompressionComboBox;
|
||||
private System.Windows.Forms.ToolStripMenuItem blockCompressionTypeToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripComboBox customBlockCompressionComboBox;
|
||||
private System.Windows.Forms.ToolStripMenuItem saveOptionsToDiskToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator importOptionsToolStripSeparator;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -145,8 +145,9 @@ namespace AssetStudioGUI
|
||||
useAssetLoadingViaTypetreeToolStripMenuItem.Checked = Properties.Settings.Default.useTypetreeLoading;
|
||||
useDumpTreeViewToolStripMenuItem.Checked = Properties.Settings.Default.useDumpTreeView;
|
||||
autoPlayAudioAssetsToolStripMenuItem.Checked = Properties.Settings.Default.autoplayAudio;
|
||||
customBlockCompressionComboBoxToolStripMenuItem.SelectedIndex = 0;
|
||||
customBlockInfoCompressionComboBoxToolStripMenuItem.SelectedIndex = 0;
|
||||
customBlockCompressionComboBox.SelectedIndex = 0;
|
||||
customBlockInfoCompressionComboBox.SelectedIndex = 0;
|
||||
assetsManager.Options.BundleOptions.DecompressToDisk = Properties.Settings.Default.decompressToDisk;
|
||||
FMODinit();
|
||||
listSearchFilterMode.SelectedIndex = 0;
|
||||
if (string.IsNullOrEmpty(Properties.Settings.Default.fbxSettings))
|
||||
@@ -172,23 +173,28 @@ namespace AssetStudioGUI
|
||||
|
||||
private async void AssetStudioGUIForm_DragDrop(object sender, DragEventArgs e)
|
||||
{
|
||||
var paths = (string[])e.Data.GetData(DataFormats.FileDrop);
|
||||
if (paths.Length == 0)
|
||||
var pathArray = (string[])e.Data?.GetData(DataFormats.FileDrop);
|
||||
if (pathArray == null)
|
||||
return;
|
||||
|
||||
var pathList = pathArray.ToList();
|
||||
assetsManager.LoadOptionFiles(pathList);
|
||||
if (pathList.Count == 0)
|
||||
return;
|
||||
|
||||
ResetForm();
|
||||
for (var i = 0; i < paths.Length; i++)
|
||||
for (var i = 0; i < pathList.Count; i++)
|
||||
{
|
||||
if (paths[i].ToLower().EndsWith(".lnk"))
|
||||
if (pathList[i].ToLower().EndsWith(".lnk"))
|
||||
{
|
||||
var targetPath = LnkReader.GetLnkTarget(paths[i]);
|
||||
var targetPath = LnkReader.GetLnkTarget(pathList[i]);
|
||||
if (!string.IsNullOrEmpty(targetPath))
|
||||
{
|
||||
paths[i] = targetPath;
|
||||
pathList[i] = targetPath;
|
||||
}
|
||||
}
|
||||
}
|
||||
await Task.Run(() => assetsManager.LoadFilesAndFolders(out openDirectoryBackup, paths));
|
||||
await Task.Run(() => assetsManager.LoadFilesAndFolders(out openDirectoryBackup, pathList));
|
||||
saveDirectoryBackup = openDirectoryBackup;
|
||||
BuildAssetStructures();
|
||||
}
|
||||
@@ -198,8 +204,12 @@ namespace AssetStudioGUI
|
||||
openFileDialog1.InitialDirectory = openDirectoryBackup;
|
||||
if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
var pathList = openFileDialog1.FileNames.ToList();
|
||||
assetsManager.LoadOptionFiles(pathList);
|
||||
if (pathList.Count == 0)
|
||||
return;
|
||||
ResetForm();
|
||||
await Task.Run(() => assetsManager.LoadFilesAndFolders(out openDirectoryBackup, openFileDialog1.FileNames));
|
||||
await Task.Run(() => assetsManager.LoadFilesAndFolders(out openDirectoryBackup, pathList));
|
||||
BuildAssetStructures();
|
||||
}
|
||||
}
|
||||
@@ -216,24 +226,6 @@ namespace AssetStudioGUI
|
||||
}
|
||||
}
|
||||
|
||||
private void specifyUnityVersion_Close(object sender, EventArgs e)
|
||||
{
|
||||
if (string.IsNullOrEmpty(specifyUnityVersion.Text))
|
||||
{
|
||||
assetsManager.SpecifyUnityVersion = null;
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
assetsManager.SpecifyUnityVersion = new UnityVersion(specifyUnityVersion.Text);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Error(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private async void extractFileToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
|
||||
@@ -269,7 +261,7 @@ namespace AssetStudioGUI
|
||||
|
||||
private async void BuildAssetStructures()
|
||||
{
|
||||
if (assetsManager.assetsFileList.Count == 0)
|
||||
if (assetsManager.AssetsFileList.Count == 0)
|
||||
{
|
||||
Logger.Info("No Unity file can be loaded.");
|
||||
return;
|
||||
@@ -281,7 +273,7 @@ namespace AssetStudioGUI
|
||||
if (isDarkMode)
|
||||
Progress.Reset();
|
||||
|
||||
var serializedFile = assetsManager.assetsFileList[0];
|
||||
var serializedFile = assetsManager.AssetsFileList[0];
|
||||
var tuanjieString = serializedFile.version.IsTuanjie ? " - Tuanjie Engine" : "";
|
||||
Text = $"{guiTitle} - {productName} - {serializedFile.version} - {serializedFile.targetPlatformString}{tuanjieString}";
|
||||
|
||||
@@ -326,12 +318,12 @@ namespace AssetStudioGUI
|
||||
filterTypeToolStripMenuItem.DropDownItems.Add(typeItem);
|
||||
}
|
||||
allToolStripMenuItem.Checked = true;
|
||||
var log = $"Finished loading {assetsManager.assetsFileList.Count} file(s) with {assetListView.Items.Count} exportable assets";
|
||||
var unityVer = assetsManager.assetsFileList[0].version;
|
||||
var log = $"Finished loading {assetsManager.AssetsFileList.Count} file(s) with {assetListView.Items.Count} exportable assets";
|
||||
var unityVer = assetsManager.AssetsFileList[0].version;
|
||||
var m_ObjectsCount = unityVer > 2020 ?
|
||||
assetsManager.assetsFileList.Sum(x => x.m_Objects.LongCount(y => y.classID != (int)ClassIDType.Shader)) :
|
||||
assetsManager.assetsFileList.Sum(x => x.m_Objects.Count);
|
||||
var objectsCount = assetsManager.assetsFileList.Sum(x => x.Objects.Count);
|
||||
assetsManager.AssetsFileList.Sum(x => x.m_Objects.LongCount(y => y.classID != (int)ClassIDType.Shader)) :
|
||||
assetsManager.AssetsFileList.Sum(x => x.m_Objects.Count);
|
||||
var objectsCount = assetsManager.AssetsFileList.Sum(x => x.Objects.Count);
|
||||
if (m_ObjectsCount != objectsCount)
|
||||
{
|
||||
log += $" and {m_ObjectsCount - objectsCount} assets failed to read";
|
||||
@@ -1551,7 +1543,7 @@ namespace AssetStudioGUI
|
||||
|
||||
private void ResetForm()
|
||||
{
|
||||
if (Studio.assetsManager.assetsFileList.Count > 0)
|
||||
if (Studio.assetsManager.AssetsFileList.Count > 0)
|
||||
Logger.Info("Resetting program...");
|
||||
|
||||
Text = guiTitle;
|
||||
@@ -2438,49 +2430,90 @@ namespace AssetStudioGUI
|
||||
}
|
||||
}
|
||||
|
||||
private void customBlockCompressionComboBoxToolStripMenuItem_SelectedIndexChanged(object sender, EventArgs e)
|
||||
private void importOptions_DropDownClose(object sender, EventArgs e)
|
||||
{
|
||||
var selectedTypeIndex = customBlockCompressionComboBoxToolStripMenuItem.SelectedIndex;
|
||||
switch (selectedTypeIndex)
|
||||
if (string.IsNullOrEmpty(specifyUnityVersionTextBox.Text))
|
||||
{
|
||||
case 0:
|
||||
assetsManager.CustomBlockCompression = CompressionType.Auto;
|
||||
break;
|
||||
case 1:
|
||||
assetsManager.CustomBlockCompression = CompressionType.Zstd;
|
||||
break;
|
||||
case 2:
|
||||
assetsManager.CustomBlockCompression = CompressionType.Oodle;
|
||||
break;
|
||||
case 3:
|
||||
assetsManager.CustomBlockCompression = CompressionType.Lz4HC;
|
||||
break;
|
||||
case 4:
|
||||
assetsManager.CustomBlockCompression = CompressionType.Lzma;
|
||||
break;
|
||||
assetsManager.Options.CustomUnityVersion = null;
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
assetsManager.Options.CustomUnityVersion = new UnityVersion(specifyUnityVersionTextBox.Text);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Error(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private void customBlockInfoCompressionComboBoxToolStripMenuItem_SelectedIndexChanged(object sender, EventArgs e)
|
||||
private void importOptions_DropDownOpened(object sender, EventArgs e)
|
||||
{
|
||||
var selectedTypeIndex = customBlockInfoCompressionComboBoxToolStripMenuItem.SelectedIndex;
|
||||
switch (selectedTypeIndex)
|
||||
if (assetsManager.Options.CustomUnityVersion != null)
|
||||
{
|
||||
case 0:
|
||||
assetsManager.CustomBlockInfoCompression = CompressionType.Auto;
|
||||
break;
|
||||
case 1:
|
||||
assetsManager.CustomBlockInfoCompression = CompressionType.Zstd;
|
||||
break;
|
||||
case 2:
|
||||
assetsManager.CustomBlockInfoCompression = CompressionType.Oodle;
|
||||
break;
|
||||
case 3:
|
||||
assetsManager.CustomBlockInfoCompression = CompressionType.Lz4HC;
|
||||
break;
|
||||
case 4:
|
||||
assetsManager.CustomBlockInfoCompression = CompressionType.Lzma;
|
||||
break;
|
||||
specifyUnityVersionTextBox.Text = assetsManager.Options.CustomUnityVersion.FullVersion;
|
||||
}
|
||||
alwaysDecompressToDiskToolStripMenuItem.Checked = assetsManager.Options.BundleOptions.DecompressToDisk;
|
||||
customBlockInfoCompressionComboBox.SelectedIndex = SetComboBoxIndex(assetsManager.Options.BundleOptions.CustomBlockInfoCompression);
|
||||
customBlockCompressionComboBox.SelectedIndex = SetComboBoxIndex(assetsManager.Options.BundleOptions.CustomBlockCompression);
|
||||
}
|
||||
|
||||
private static int SetComboBoxIndex(CompressionType compressionType)
|
||||
{
|
||||
switch (compressionType)
|
||||
{
|
||||
case CompressionType.Auto: return 0;
|
||||
case CompressionType.Lzma: return 4;
|
||||
case CompressionType.Lz4:
|
||||
case CompressionType.Lz4HC: return 3;
|
||||
case CompressionType.Zstd: return 1;
|
||||
case CompressionType.Oodle: return 2;
|
||||
default: throw new NotSupportedException();
|
||||
}
|
||||
}
|
||||
|
||||
private void customBlockCompressionComboBox_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
var selectedTypeIndex = customBlockCompressionComboBox.SelectedIndex;
|
||||
assetsManager.Options.BundleOptions.CustomBlockCompression = GetCustomCompressionTypes(selectedTypeIndex);
|
||||
}
|
||||
|
||||
private void customBlockInfoCompressionComboBox_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
var selectedTypeIndex = customBlockInfoCompressionComboBox.SelectedIndex;
|
||||
assetsManager.Options.BundleOptions.CustomBlockInfoCompression = GetCustomCompressionTypes(selectedTypeIndex);
|
||||
}
|
||||
|
||||
private static CompressionType GetCustomCompressionTypes(int index)
|
||||
{
|
||||
switch (index)
|
||||
{
|
||||
case 0: return CompressionType.Auto;
|
||||
case 1: return CompressionType.Zstd;
|
||||
case 2: return CompressionType.Oodle;
|
||||
case 3: return CompressionType.Lz4HC;
|
||||
case 4: return CompressionType.Lzma;
|
||||
default: throw new NotSupportedException();
|
||||
}
|
||||
}
|
||||
|
||||
private void alwaysDecompressToDiskToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
var isEnabled = alwaysDecompressToDiskToolStripMenuItem.Checked;
|
||||
assetsManager.Options.BundleOptions.DecompressToDisk = isEnabled;
|
||||
Properties.Settings.Default.decompressToDisk = isEnabled;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
|
||||
private void saveOptionsToDiskToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
var saveFolderDialog = new OpenFolderDialog();
|
||||
saveFolderDialog.Title = "Select the save folder";
|
||||
if (saveFolderDialog.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
var savePath = saveFolderDialog.Folder;
|
||||
assetsManager.Options.SaveToFile(savePath);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
14
AssetStudioGUI/Properties/Settings.Designer.cs
generated
14
AssetStudioGUI/Properties/Settings.Designer.cs
generated
@@ -12,7 +12,7 @@ namespace AssetStudioGUI.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.13.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
@@ -322,5 +322,17 @@ namespace AssetStudioGUI.Properties {
|
||||
this["fbxSettings"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool decompressToDisk {
|
||||
get {
|
||||
return ((bool)(this["decompressToDisk"]));
|
||||
}
|
||||
set {
|
||||
this["decompressToDisk"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,5 +77,8 @@
|
||||
<Setting Name="fbxSettings" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="decompressToDisk" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
@@ -141,7 +141,7 @@ namespace AssetStudioGUI
|
||||
var count = 0;
|
||||
var bundleStream = new OffsetStream(reader);
|
||||
var bundleReader = new FileReader(reader.FullPath, bundleStream);
|
||||
var bundleFile = new BundleFile(bundleReader, assetsManager.CustomBlockInfoCompression, assetsManager.CustomBlockCompression, assetsManager.SpecifyUnityVersion);
|
||||
var bundleFile = new BundleFile(bundleReader, assetsManager.Options.BundleOptions);
|
||||
var extractPath = Path.Combine(savePath, reader.FileName + "_unpacked");
|
||||
if (bundleFile.fileList.Count > 0)
|
||||
{
|
||||
@@ -160,7 +160,7 @@ namespace AssetStudioGUI
|
||||
bundleReader.FileName = $"{reader.FileName}_0x{bundleStream.Offset:X}";
|
||||
}
|
||||
Logger.Info($"[MultiBundle] Decompressing \"{reader.FileName}\" from offset: 0x{bundleStream.Offset:X}..");
|
||||
bundleFile = new BundleFile(bundleReader, assetsManager.CustomBlockInfoCompression, assetsManager.CustomBlockCompression, assetsManager.SpecifyUnityVersion, isMultiBundle: true);
|
||||
bundleFile = new BundleFile(bundleReader, assetsManager.Options.BundleOptions, isMultiBundle: true);
|
||||
if (bundleFile.fileList.Count > 0)
|
||||
{
|
||||
count += ExtractStreamFile(extractPath, bundleFile.fileList);
|
||||
@@ -219,14 +219,14 @@ namespace AssetStudioGUI
|
||||
Logger.Info("Building asset list...");
|
||||
|
||||
string productName = null;
|
||||
var objectCount = assetsManager.assetsFileList.Sum(x => x.Objects.Count);
|
||||
var objectCount = assetsManager.AssetsFileList.Sum(x => x.Objects.Count);
|
||||
var objectAssetItemDic = new Dictionary<Object, AssetItem>(objectCount);
|
||||
var containers = new List<(PPtr<Object>, string)>();
|
||||
var tex2dArrayAssetList = new List<AssetItem>();
|
||||
l2dAssetContainers.Clear();
|
||||
var i = 0;
|
||||
Progress.Reset();
|
||||
foreach (var assetsFile in assetsManager.assetsFileList)
|
||||
foreach (var assetsFile in assetsManager.AssetsFileList)
|
||||
{
|
||||
var preloadTable = new List<PPtr<Object>>();
|
||||
|
||||
@@ -428,10 +428,10 @@ namespace AssetStudioGUI
|
||||
|
||||
var treeNodeCollection = new List<TreeNode>();
|
||||
var treeNodeDictionary = new Dictionary<GameObject, GameObjectTreeNode>();
|
||||
var assetsFileCount = assetsManager.assetsFileList.Count;
|
||||
var assetsFileCount = assetsManager.AssetsFileList.Count;
|
||||
var j = 0;
|
||||
Progress.Reset();
|
||||
foreach (var assetsFile in assetsManager.assetsFileList)
|
||||
foreach (var assetsFile in assetsManager.AssetsFileList)
|
||||
{
|
||||
var fileNode = new TreeNode(assetsFile.fileName); //RootNode
|
||||
|
||||
@@ -504,7 +504,7 @@ namespace AssetStudioGUI
|
||||
public static Dictionary<UnityVersion, SortedDictionary<int, TypeTreeItem>> BuildClassStructure()
|
||||
{
|
||||
var typeMap = new Dictionary<UnityVersion, SortedDictionary<int, TypeTreeItem>>();
|
||||
foreach (var assetsFile in assetsManager.assetsFileList)
|
||||
foreach (var assetsFile in assetsManager.AssetsFileList)
|
||||
{
|
||||
if (typeMap.TryGetValue(assetsFile.version, out var curVer))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user