diff --git a/AssetStudioGUI/App.config b/AssetStudioGUI/App.config
index bc029f7..1d7718b 100644
--- a/AssetStudioGUI/App.config
+++ b/AssetStudioGUI/App.config
@@ -97,6 +97,9 @@
True
+
+ False
+
\ No newline at end of file
diff --git a/AssetStudioGUI/AssetStudioGUIForm.Designer.cs b/AssetStudioGUI/AssetStudioGUIForm.Designer.cs
index 8353ce1..f8c5d28 100644
--- a/AssetStudioGUI/AssetStudioGUIForm.Designer.cs
+++ b/AssetStudioGUI/AssetStudioGUIForm.Designer.cs
@@ -44,9 +44,10 @@ namespace AssetStudioGUI
this.abortStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.displayAll = new System.Windows.Forms.ToolStripMenuItem();
- this.enableResolveDependencies = new System.Windows.Forms.ToolStripMenuItem();
this.enablePreview = new System.Windows.Forms.ToolStripMenuItem();
this.displayInfo = new System.Windows.Forms.ToolStripMenuItem();
+ this.enableResolveDependencies = new System.Windows.Forms.ToolStripMenuItem();
+ this.skipContainer = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem14 = new System.Windows.Forms.ToolStripMenuItem();
this.specifyUnityVersion = new System.Windows.Forms.ToolStripTextBox();
this.toolStripMenuItem18 = new System.Windows.Forms.ToolStripMenuItem();
@@ -263,9 +264,10 @@ namespace AssetStudioGUI
//
this.optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.displayAll,
- this.enableResolveDependencies,
this.enablePreview,
this.displayInfo,
+ this.enableResolveDependencies,
+ this.skipContainer,
this.toolStripMenuItem14,
this.toolStripMenuItem18,
this.toolStripMenuItem19,
@@ -285,18 +287,6 @@ namespace AssetStudioGUI
"t the RAW file.";
this.displayAll.CheckedChanged += new System.EventHandler(this.displayAll_CheckedChanged);
//
- // enableResolveDependencies
- //
- this.enableResolveDependencies.Checked = true;
- this.enableResolveDependencies.CheckOnClick = true;
- this.enableResolveDependencies.CheckState = System.Windows.Forms.CheckState.Checked;
- this.enableResolveDependencies.Name = "enableResolveDependencies";
- this.enableResolveDependencies.Size = new System.Drawing.Size(225, 22);
- this.enableResolveDependencies.Text = "Enable resolve dependencies";
- this.enableResolveDependencies.ToolTipText = "Toggle the behaviour of loading assets.\nDisable to load file(s) without its depen" +
- "dencies.";
- this.enableResolveDependencies.CheckedChanged += new System.EventHandler(this.enableResolveDependencies_CheckedChanged);
- //
// enablePreview
//
this.enablePreview.Checked = true;
@@ -321,6 +311,28 @@ namespace AssetStudioGUI
"t, audio bitrate, etc.";
this.displayInfo.CheckedChanged += new System.EventHandler(this.displayAssetInfo_Check);
//
+ // enableResolveDependencies
+ //
+ this.enableResolveDependencies.Checked = true;
+ this.enableResolveDependencies.CheckOnClick = true;
+ this.enableResolveDependencies.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.enableResolveDependencies.Name = "enableResolveDependencies";
+ this.enableResolveDependencies.Size = new System.Drawing.Size(225, 22);
+ this.enableResolveDependencies.Text = "Enable resolve dependencies";
+ this.enableResolveDependencies.ToolTipText = "Toggle the behaviour of loading assets.\nDisable to load file(s) without its depen" +
+ "dencies.";
+ this.enableResolveDependencies.CheckedChanged += new System.EventHandler(this.enableResolveDependencies_CheckedChanged);
+ //
+ // skipContainer
+ //
+ this.skipContainer.CheckOnClick = true;
+ this.skipContainer.Name = "skipContainer";
+ this.skipContainer.Size = new System.Drawing.Size(225, 22);
+ this.skipContainer.Text = "Skip container recovery";
+ this.skipContainer.ToolTipText = "Skips the container recovery step.\nImproves loading when dealing with a large num" +
+ "ber of files.";
+ this.skipContainer.CheckedChanged += new System.EventHandler(this.skipContainer_CheckedChanged);
+ //
// toolStripMenuItem14
//
this.toolStripMenuItem14.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -533,21 +545,21 @@ namespace AssetStudioGUI
// toolStripMenuItem7
//
this.toolStripMenuItem7.Name = "toolStripMenuItem7";
- this.toolStripMenuItem7.Size = new System.Drawing.Size(180, 22);
+ this.toolStripMenuItem7.Size = new System.Drawing.Size(152, 22);
this.toolStripMenuItem7.Text = "All assets";
this.toolStripMenuItem7.Click += new System.EventHandler(this.toolStripMenuItem7_Click);
//
// toolStripMenuItem8
//
this.toolStripMenuItem8.Name = "toolStripMenuItem8";
- this.toolStripMenuItem8.Size = new System.Drawing.Size(180, 22);
+ this.toolStripMenuItem8.Size = new System.Drawing.Size(152, 22);
this.toolStripMenuItem8.Text = "Selected assets";
this.toolStripMenuItem8.Click += new System.EventHandler(this.toolStripMenuItem8_Click);
//
// toolStripMenuItem9
//
this.toolStripMenuItem9.Name = "toolStripMenuItem9";
- this.toolStripMenuItem9.Size = new System.Drawing.Size(180, 22);
+ this.toolStripMenuItem9.Size = new System.Drawing.Size(152, 22);
this.toolStripMenuItem9.Text = "Filtered assets";
this.toolStripMenuItem9.Click += new System.EventHandler(this.toolStripMenuItem9_Click);
//
@@ -564,21 +576,21 @@ namespace AssetStudioGUI
// toolStripMenuItem17
//
this.toolStripMenuItem17.Name = "toolStripMenuItem17";
- this.toolStripMenuItem17.Size = new System.Drawing.Size(180, 22);
+ this.toolStripMenuItem17.Size = new System.Drawing.Size(152, 22);
this.toolStripMenuItem17.Text = "All assets";
this.toolStripMenuItem17.Click += new System.EventHandler(this.toolStripMenuItem17_Click);
//
// toolStripMenuItem24
//
this.toolStripMenuItem24.Name = "toolStripMenuItem24";
- this.toolStripMenuItem24.Size = new System.Drawing.Size(180, 22);
+ this.toolStripMenuItem24.Size = new System.Drawing.Size(152, 22);
this.toolStripMenuItem24.Text = "Selected assets";
this.toolStripMenuItem24.Click += new System.EventHandler(this.toolStripMenuItem24_Click);
//
// toolStripMenuItem25
//
this.toolStripMenuItem25.Name = "toolStripMenuItem25";
- this.toolStripMenuItem25.Size = new System.Drawing.Size(180, 22);
+ this.toolStripMenuItem25.Size = new System.Drawing.Size(152, 22);
this.toolStripMenuItem25.Text = "Filtered assets";
this.toolStripMenuItem25.Click += new System.EventHandler(this.toolStripMenuItem25_Click);
//
@@ -632,7 +644,7 @@ namespace AssetStudioGUI
this.allToolStripMenuItem.CheckOnClick = true;
this.allToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
this.allToolStripMenuItem.Name = "allToolStripMenuItem";
- this.allToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
+ this.allToolStripMenuItem.Size = new System.Drawing.Size(88, 22);
this.allToolStripMenuItem.Text = "All";
this.allToolStripMenuItem.Click += new System.EventHandler(this.typeToolStripMenuItem_Click);
//
@@ -1486,6 +1498,7 @@ namespace AssetStudioGUI
private System.Windows.Forms.ToolStripMenuItem clearConsoleToolStripMenuItem;
private System.Windows.Forms.ToolStripTextBox assetMapNameTextBox;
private System.Windows.Forms.ToolStripComboBox assetMapTypeComboBox;
+ private System.Windows.Forms.ToolStripMenuItem skipContainer;
}
}
diff --git a/AssetStudioGUI/AssetStudioGUIForm.cs b/AssetStudioGUI/AssetStudioGUIForm.cs
index 70f64c6..b54555d 100644
--- a/AssetStudioGUI/AssetStudioGUIForm.cs
+++ b/AssetStudioGUI/AssetStudioGUIForm.cs
@@ -108,6 +108,7 @@ namespace AssetStudioGUI
displayInfo.Checked = Properties.Settings.Default.displayInfo;
enablePreview.Checked = Properties.Settings.Default.enablePreview;
enableResolveDependencies.Checked = Properties.Settings.Default.enableResolveDependencies;
+ skipContainer.Checked = Properties.Settings.Default.skipContainer;
assetsManager.ResolveDependencies = enableResolveDependencies.Checked;
Renderer.Skipped = Properties.Settings.Default.skipRenderer;
MiHoYoBinData.Exportable = Properties.Settings.Default.exportMiHoYoBinData;
@@ -502,6 +503,13 @@ namespace AssetStudioGUI
assetsManager.ResolveDependencies = enableResolveDependencies.Checked;
}
+ private void skipContainer_CheckedChanged(object sender, EventArgs e)
+ {
+ Properties.Settings.Default.skipContainer = skipContainer.Checked;
+ Properties.Settings.Default.Save();
+
+ SkipContainer = enableResolveDependencies.Checked;
+ }
private void displayAssetInfo_Check(object sender, EventArgs e)
{
if (displayInfo.Checked && assetInfoLabel.Text != null)
@@ -1729,6 +1737,11 @@ namespace AssetStudioGUI
{
return;
}
+ if (skipContainer.Checked)
+ {
+ Logger.Info("Skip container is enabled, aborting...");
+ return;
+ }
optionsToolStripMenuItem.DropDown.Visible = false;
var version = specifyAIVersion.SelectedItem.ToString();
@@ -1965,6 +1978,11 @@ namespace AssetStudioGUI
private async void loadAIToolStripMenuItem_Click(object sender, EventArgs e)
{
+ if (skipContainer.Checked)
+ {
+ Logger.Info("Skip container is enabled, aborting...");
+ return;
+ }
miscToolStripMenuItem.DropDown.Visible = false;
var openFileDialog = new OpenFileDialog() { Multiselect = false, Filter = "Asset Index JSON File|*.json" };
diff --git a/AssetStudioGUI/AssetStudioGUIForm.resx b/AssetStudioGUI/AssetStudioGUIForm.resx
index ee3dd05..3d8c540 100644
--- a/AssetStudioGUI/AssetStudioGUIForm.resx
+++ b/AssetStudioGUI/AssetStudioGUIForm.resx
@@ -60,9 +60,6 @@
312, 17
-
- 432, 17
-
abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWYZ
1234567890.:,;'\"(!?)+-*/=
@@ -81,6 +78,9 @@ 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/Properties/Settings.Designer.cs b/AssetStudioGUI/Properties/Settings.Designer.cs
index 878e29e..6e8a8d6 100644
--- a/AssetStudioGUI/Properties/Settings.Designer.cs
+++ b/AssetStudioGUI/Properties/Settings.Designer.cs
@@ -394,5 +394,17 @@ namespace AssetStudioGUI.Properties {
this["collectAnimations"] = value;
}
}
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool skipContainer {
+ get {
+ return ((bool)(this["skipContainer"]));
+ }
+ set {
+ this["skipContainer"] = value;
+ }
+ }
}
}
diff --git a/AssetStudioGUI/Properties/Settings.settings b/AssetStudioGUI/Properties/Settings.settings
index 3cbd6aa..799a87b 100644
--- a/AssetStudioGUI/Properties/Settings.settings
+++ b/AssetStudioGUI/Properties/Settings.settings
@@ -95,5 +95,8 @@
True
+
+ False
+
\ No newline at end of file
diff --git a/AssetStudioGUI/Studio.cs b/AssetStudioGUI/Studio.cs
index 73f1f41..fae5e2b 100644
--- a/AssetStudioGUI/Studio.cs
+++ b/AssetStudioGUI/Studio.cs
@@ -32,6 +32,7 @@ namespace AssetStudioGUI
internal static class Studio
{
public static Game Game;
+ public static bool SkipContainer = false;
public static AssetsManager assetsManager = new AssetsManager();
public static AssemblyLoader assemblyLoader = new AssemblyLoader();
public static List exportableAssets = new List();
@@ -316,14 +317,17 @@ namespace AssetStudioGUI
productName = m_PlayerSettings.productName;
break;
case AssetBundle m_AssetBundle:
- foreach (var m_Container in m_AssetBundle.m_Container)
+ if (!SkipContainer)
{
- var preloadIndex = m_Container.Value.preloadIndex;
- var preloadSize = m_Container.Value.preloadSize;
- var preloadEnd = preloadIndex + preloadSize;
- for (int k = preloadIndex; k < preloadEnd; k++)
+ foreach (var m_Container in m_AssetBundle.m_Container)
{
- containers.Add((m_AssetBundle.m_PreloadTable[k], m_Container.Key));
+ var preloadIndex = m_Container.Value.preloadIndex;
+ var preloadSize = m_Container.Value.preloadSize;
+ var preloadEnd = preloadIndex + preloadSize;
+ for (int k = preloadIndex; k < preloadEnd; k++)
+ {
+ containers.Add((m_AssetBundle.m_PreloadTable[k], m_Container.Key));
+ }
}
}
assetItem.Text = m_AssetBundle.m_Name;
@@ -372,24 +376,25 @@ namespace AssetStudioGUI
else assetItem.Text = $"BinFile #{assetItem.m_PathID}";
}
}
- foreach ((var pptr, var container) in containers)
+ if (!SkipContainer)
{
- if (pptr.TryGet(out var obj))
+ foreach ((var pptr, var container) in containers)
{
- objectAssetItemDic[obj].Container = container;
+ if (pptr.TryGet(out var obj))
+ {
+ objectAssetItemDic[obj].Container = container;
+ }
+ }
+ containers.Clear();
+ if (Game.Type.IsGISubGroup())
+ {
+ UpdateContainers();
}
}
-
- if (Game.Type.IsGISubGroup())
- {
- UpdateContainers();
- }
-
foreach (var tmp in exportableAssets)
{
tmp.SetSubItems();
}
- containers.Clear();
visibleAssets = exportableAssets;