Option to skip container recovery.

This commit is contained in:
Razmoth
2023-01-14 21:50:57 +04:00
parent d455def3e9
commit 217965745c
7 changed files with 94 additions and 40 deletions

View File

@@ -97,6 +97,9 @@
<setting name="collectAnimations" serializeAs="String">
<value>True</value>
</setting>
<setting name="skipContainer" serializeAs="String">
<value>False</value>
</setting>
</AssetStudioGUI.Properties.Settings>
</userSettings>
</configuration>

View File

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

View File

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

View File

@@ -60,9 +60,6 @@
<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.:,;'\"(!?)+-*/=
@@ -81,6 +78,9 @@ 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

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

View File

@@ -95,5 +95,8 @@
<Setting Name="collectAnimations" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="skipContainer" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -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<AssetItem> exportableAssets = new List<AssetItem>();
@@ -316,6 +317,8 @@ namespace AssetStudioGUI
productName = m_PlayerSettings.productName;
break;
case AssetBundle m_AssetBundle:
if (!SkipContainer)
{
foreach (var m_Container in m_AssetBundle.m_Container)
{
var preloadIndex = m_Container.Value.preloadIndex;
@@ -326,6 +329,7 @@ namespace AssetStudioGUI
containers.Add((m_AssetBundle.m_PreloadTable[k], m_Container.Key));
}
}
}
assetItem.Text = m_AssetBundle.m_Name;
break;
case IndexObject m_IndexObject:
@@ -372,6 +376,8 @@ namespace AssetStudioGUI
else assetItem.Text = $"BinFile #{assetItem.m_PathID}";
}
}
if (!SkipContainer)
{
foreach ((var pptr, var container) in containers)
{
if (pptr.TryGet(out var obj))
@@ -379,17 +385,16 @@ namespace AssetStudioGUI
objectAssetItemDic[obj].Container = container;
}
}
containers.Clear();
if (Game.Type.IsGISubGroup())
{
UpdateContainers();
}
}
foreach (var tmp in exportableAssets)
{
tmp.SetSubItems();
}
containers.Clear();
visibleAssets = exportableAssets;