From e608a119ca53ec26a8bc1b2b198a4fd6165ea82a Mon Sep 17 00:00:00 2001 From: Razmoth <32140579+Razmoth@users.noreply.github.com> Date: Sat, 17 Jun 2023 16:09:15 +0400 Subject: [PATCH] Bug fixes --- AssetStudioGUI/AssetStudioGUIForm.Designer.cs | 78 +++++++++++++++---- AssetStudioGUI/AssetStudioGUIForm.cs | 68 ++++++++++------ AssetStudioGUI/AssetStudioGUIForm.resx | 62 ++++++++++++++- AssetStudioGUI/ExportOptions.Designer.cs | 60 ++++---------- AssetStudioGUI/ExportOptions.resx | 62 ++++++++++++++- 5 files changed, 240 insertions(+), 90 deletions(-) diff --git a/AssetStudioGUI/AssetStudioGUIForm.Designer.cs b/AssetStudioGUI/AssetStudioGUIForm.Designer.cs index df25025..477543a 100644 --- a/AssetStudioGUI/AssetStudioGUIForm.Designer.cs +++ b/AssetStudioGUI/AssetStudioGUIForm.Designer.cs @@ -45,7 +45,10 @@ namespace AssetStudioGUI optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); displayAll = new System.Windows.Forms.ToolStripMenuItem(); enablePreview = new System.Windows.Forms.ToolStripMenuItem(); + enableModelPreview = new System.Windows.Forms.ToolStripMenuItem(); modelsOnly = new System.Windows.Forms.ToolStripMenuItem(); + enableResolveDependencies = new System.Windows.Forms.ToolStripMenuItem(); + skipContainer = new System.Windows.Forms.ToolStripMenuItem(); displayInfo = new System.Windows.Forms.ToolStripMenuItem(); toolStripMenuItem14 = new System.Windows.Forms.ToolStripMenuItem(); specifyUnityVersion = new System.Windows.Forms.ToolStripTextBox(); @@ -161,7 +164,9 @@ namespace AssetStudioGUI exportAnimatorwithselectedAnimationClipMenuItem = new System.Windows.Forms.ToolStripMenuItem(); goToSceneHierarchyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); showOriginalFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - enableModelPreview = new System.Windows.Forms.ToolStripMenuItem(); + toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator(); + toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); + toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator(); menuStrip1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)splitContainer1).BeginInit(); splitContainer1.Panel1.SuspendLayout(); @@ -253,7 +258,7 @@ namespace AssetStudioGUI // // optionsToolStripMenuItem // - optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { displayAll, enablePreview, enableModelPreview, modelsOnly, displayInfo, toolStripMenuItem14, toolStripMenuItem18, toolStripMenuItem19, showExpOpt }); + optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { displayAll, toolStripSeparator10, enablePreview, enableModelPreview, modelsOnly, toolStripSeparator11, displayInfo, enableResolveDependencies, skipContainer, toolStripSeparator12, toolStripMenuItem14, toolStripMenuItem18, toolStripMenuItem19, showExpOpt }); optionsToolStripMenuItem.Name = "optionsToolStripMenuItem"; optionsToolStripMenuItem.Size = new System.Drawing.Size(61, 20); optionsToolStripMenuItem.Text = "Options"; @@ -262,7 +267,7 @@ namespace AssetStudioGUI // displayAll.CheckOnClick = true; displayAll.Name = "displayAll"; - displayAll.Size = new System.Drawing.Size(207, 22); + displayAll.Size = new System.Drawing.Size(225, 22); displayAll.Text = "Display all assets"; displayAll.ToolTipText = "Check this option will display all types assets. Not extractable assets can export the RAW file."; displayAll.CheckedChanged += displayAll_CheckedChanged; @@ -273,26 +278,55 @@ namespace AssetStudioGUI enablePreview.CheckOnClick = true; enablePreview.CheckState = System.Windows.Forms.CheckState.Checked; enablePreview.Name = "enablePreview"; - enablePreview.Size = new System.Drawing.Size(207, 22); + enablePreview.Size = new System.Drawing.Size(225, 22); enablePreview.Text = "Enable preview"; enablePreview.ToolTipText = "Toggle the loading and preview of readable assets, such as images, sounds, text, etc.\r\nDisable preview if you have performance or compatibility issues."; enablePreview.CheckedChanged += enablePreview_Check; // + // enableModelPreview + // + enableModelPreview.CheckOnClick = true; + enableModelPreview.Name = "enableModelPreview"; + enableModelPreview.Size = new System.Drawing.Size(225, 22); + enableModelPreview.Text = "Enable model preview"; + enableModelPreview.CheckedChanged += enableModelPreview_CheckedChanged; + // // modelsOnly // modelsOnly.CheckOnClick = true; modelsOnly.Name = "modelsOnly"; - modelsOnly.Size = new System.Drawing.Size(207, 22); + modelsOnly.Size = new System.Drawing.Size(225, 22); modelsOnly.Text = "Filter models only"; modelsOnly.CheckedChanged += modelsOnly_CheckedChanged; // + // enableResolveDependencies + // + enableResolveDependencies.Checked = true; + enableResolveDependencies.CheckOnClick = true; + enableResolveDependencies.CheckState = System.Windows.Forms.CheckState.Checked; + enableResolveDependencies.Name = "enableResolveDependencies"; + enableResolveDependencies.Size = new System.Drawing.Size(225, 22); + enableResolveDependencies.Text = "Enable resolve dependencies"; + enableResolveDependencies.ToolTipText = "Toggle the behaviour of loading assets.\r\nDisable to load file(s) without its dependencies."; + enableResolveDependencies.CheckedChanged += enableResolveDependencies_CheckedChanged; + // + // skipContainer + // + skipContainer.CheckOnClick = true; + skipContainer.Name = "skipContainer"; + skipContainer.Size = new System.Drawing.Size(225, 22); + skipContainer.Text = "Skip container recovery"; + skipContainer.ToolTipText = "Skips the container recovery step.\nImproves loading when dealing with a large num" + + "ber of files."; + skipContainer.CheckedChanged += skipContainer_CheckedChanged; + // // displayInfo // displayInfo.Checked = true; displayInfo.CheckOnClick = true; displayInfo.CheckState = System.Windows.Forms.CheckState.Checked; displayInfo.Name = "displayInfo"; - displayInfo.Size = new System.Drawing.Size(207, 22); + displayInfo.Size = new System.Drawing.Size(225, 22); displayInfo.Text = "Display asset information"; displayInfo.ToolTipText = "Toggle the overlay that shows information about each asset, eg. image size, format, audio bitrate, etc."; displayInfo.CheckedChanged += displayAssetInfo_Check; @@ -301,7 +335,7 @@ namespace AssetStudioGUI // toolStripMenuItem14.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { specifyUnityVersion }); toolStripMenuItem14.Name = "toolStripMenuItem14"; - toolStripMenuItem14.Size = new System.Drawing.Size(207, 22); + toolStripMenuItem14.Size = new System.Drawing.Size(225, 22); toolStripMenuItem14.Text = "Specify Unity version"; // // specifyUnityVersion @@ -314,7 +348,7 @@ namespace AssetStudioGUI // toolStripMenuItem18.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { specifyGame }); toolStripMenuItem18.Name = "toolStripMenuItem18"; - toolStripMenuItem18.Size = new System.Drawing.Size(207, 22); + toolStripMenuItem18.Size = new System.Drawing.Size(225, 22); toolStripMenuItem18.Text = "Specify Game"; // // specifyGame @@ -327,7 +361,7 @@ namespace AssetStudioGUI // toolStripMenuItem19.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { specifyAIVersion }); toolStripMenuItem19.Name = "toolStripMenuItem19"; - toolStripMenuItem19.Size = new System.Drawing.Size(207, 22); + toolStripMenuItem19.Size = new System.Drawing.Size(225, 22); toolStripMenuItem19.Text = "Specify AI version"; toolStripMenuItem19.DropDownOpening += toolStripMenuItem19_DropDownOpening; // @@ -341,7 +375,7 @@ namespace AssetStudioGUI // showExpOpt // showExpOpt.Name = "showExpOpt"; - showExpOpt.Size = new System.Drawing.Size(207, 22); + showExpOpt.Size = new System.Drawing.Size(225, 22); showExpOpt.Text = "Export options"; showExpOpt.Click += showExpOpt_Click; // @@ -1258,13 +1292,20 @@ namespace AssetStudioGUI showOriginalFileToolStripMenuItem.Visible = false; showOriginalFileToolStripMenuItem.Click += showOriginalFileToolStripMenuItem_Click; // - // enableModelPreview + // toolStripSeparator10 // - enableModelPreview.CheckOnClick = true; - enableModelPreview.Name = "enableModelPreview"; - enableModelPreview.Size = new System.Drawing.Size(207, 22); - enableModelPreview.Text = "Enable model preview"; - enableModelPreview.CheckedChanged += enableModelPreview_CheckedChanged; + toolStripSeparator10.Name = "toolStripSeparator10"; + toolStripSeparator10.Size = new System.Drawing.Size(222, 6); + // + // toolStripSeparator11 + // + toolStripSeparator11.Name = "toolStripSeparator11"; + toolStripSeparator11.Size = new System.Drawing.Size(222, 6); + // + // toolStripSeparator12 + // + toolStripSeparator12.Name = "toolStripSeparator12"; + toolStripSeparator12.Size = new System.Drawing.Size(222, 6); // // AssetStudioGUIForm // @@ -1445,6 +1486,11 @@ namespace AssetStudioGUI private System.Windows.Forms.ToolStripMenuItem exportSelectedNodessplitSelectedAnimationClipsToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem modelsOnly; private System.Windows.Forms.ToolStripMenuItem enableModelPreview; + private System.Windows.Forms.ToolStripMenuItem enableResolveDependencies; + private System.Windows.Forms.ToolStripMenuItem skipContainer; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator10; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator11; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator12; } } diff --git a/AssetStudioGUI/AssetStudioGUIForm.cs b/AssetStudioGUI/AssetStudioGUIForm.cs index bebd38f..b1db9ed 100644 --- a/AssetStudioGUI/AssetStudioGUIForm.cs +++ b/AssetStudioGUI/AssetStudioGUIForm.cs @@ -110,7 +110,10 @@ namespace AssetStudioGUI enablePreview.Checked = Properties.Settings.Default.enablePreview; enableModelPreview.Checked = Properties.Settings.Default.enableModelPreview; modelsOnly.Checked = Properties.Settings.Default.modelsOnly; - assetsManager.ResolveDependencies = Properties.Settings.Default.enableResolveDependencies; + enableResolveDependencies.Checked = Properties.Settings.Default.enableResolveDependencies; + skipContainer.Checked = Properties.Settings.Default.skipContainer; + assetsManager.ResolveDependencies = enableResolveDependencies.Checked; + SkipContainer = Properties.Settings.Default.skipContainer; MiHoYoBinData.Encrypted = Properties.Settings.Default.encrypted; MiHoYoBinData.Key = Properties.Settings.Default.key; AssetsHelper.Minimal = Properties.Settings.Default.minimalAssetMap; @@ -174,23 +177,23 @@ namespace AssetStudioGUI public async void LoadPaths(params string[] paths) { - ResetForm(); - assetsManager.SpecifyUnityVersion = specifyUnityVersion.Text; - assetsManager.Game = Studio.Game; - if (paths.Length == 1 && Directory.Exists(paths[0])) - { - await Task.Run(() => assetsManager.LoadFolder(paths[0])); - } - else - { - if (paths.Length == 1 && File.Exists(paths[0]) && Path.GetExtension(paths[0]) == ".txt") - { - paths = File.ReadAllLines(paths[0]); - } - await Task.Run(() => assetsManager.LoadFiles(paths)); - } - BuildAssetStructures(); + ResetForm(); + assetsManager.SpecifyUnityVersion = specifyUnityVersion.Text; + assetsManager.Game = Studio.Game; + if (paths.Length == 1 && Directory.Exists(paths[0])) + { + await Task.Run(() => assetsManager.LoadFolder(paths[0])); } + else + { + if (paths.Length == 1 && File.Exists(paths[0]) && Path.GetExtension(paths[0]) == ".txt") + { + paths = File.ReadAllLines(paths[0]); + } + await Task.Run(() => assetsManager.LoadFiles(paths)); + } + BuildAssetStructures(); + } private async void loadFile_Click(object sender, EventArgs e) { @@ -1243,15 +1246,15 @@ namespace AssetStudioGUI { var model = new ModelConverter(m_GameObject, Properties.Settings.Default.convertType, Studio.Game, false, Array.Empty()); PreviewModel(model); - } + } private void PreviewAnimator(Animator m_Animator) - { + { var model = new ModelConverter(m_Animator, Properties.Settings.Default.convertType, Studio.Game, false, Array.Empty()); PreviewModel(model); - } + } private void PreviewModel(ModelConverter model) - { + { if (model.MeshList.Count > 0) { viewMatrixData = Matrix4.CreateRotationY(-(float)Math.PI / 4) * Matrix4.CreateRotationX(-(float)Math.PI / 6); @@ -1754,7 +1757,7 @@ namespace AssetStudioGUI if (Properties.Settings.Default.modelsOnly) { var models = visibleAssets.FindAll(x => x.Type == ClassIDType.Animator || x.Type == ClassIDType.GameObject); - foreach(var model in models) + foreach (var model in models) { var hasModel = model.Asset switch { @@ -1872,7 +1875,7 @@ namespace AssetStudioGUI { return; } - if (Properties.Settings.Default.skipContainer) + if (skipContainer.Checked) { Logger.Info("Skip container is enabled, aborting..."); return; @@ -1962,6 +1965,21 @@ namespace AssetStudioGUI dumpTextBox.Text = DumpAsset(lastSelectedItem.Asset); } } + private void enableResolveDependencies_CheckedChanged(object sender, EventArgs e) + { + Properties.Settings.Default.enableResolveDependencies = enableResolveDependencies.Checked; + Properties.Settings.Default.Save(); + + assetsManager.ResolveDependencies = enableResolveDependencies.Checked; + } + private void skipContainer_CheckedChanged(object sender, EventArgs e) + { + Properties.Settings.Default.skipContainer = skipContainer.Checked; + Properties.Settings.Default.Save(); + + SkipContainer = skipContainer.Checked; + + } private void assetMapTypeComboBox_SelectedIndexChanged(object sender, EventArgs e) { Properties.Settings.Default.selectedAssetMapType = assetMapTypeComboBox.SelectedIndex; @@ -2169,7 +2187,7 @@ namespace AssetStudioGUI { ResetForm(); AssetsHelper.Clear(); - assetBrowser.Clear(); + assetBrowser?.Clear(); assetsManager.SpecifyUnityVersion = specifyUnityVersion.Text; assetsManager.Game = Studio.Game; } @@ -2201,7 +2219,7 @@ namespace AssetStudioGUI private async void loadAIToolStripMenuItem_Click(object sender, EventArgs e) { - if (Properties.Settings.Default.skipContainer) + if (skipContainer.Checked) { Logger.Info("Skip container is enabled, aborting..."); return; diff --git a/AssetStudioGUI/AssetStudioGUIForm.resx b/AssetStudioGUI/AssetStudioGUIForm.resx index ee3dd05..de2aa35 100644 --- a/AssetStudioGUI/AssetStudioGUIForm.resx +++ b/AssetStudioGUI/AssetStudioGUIForm.resx @@ -1,4 +1,64 @@ - + + + diff --git a/AssetStudioGUI/ExportOptions.Designer.cs b/AssetStudioGUI/ExportOptions.Designer.cs index d052025..82eca9f 100644 --- a/AssetStudioGUI/ExportOptions.Designer.cs +++ b/AssetStudioGUI/ExportOptions.Designer.cs @@ -71,13 +71,11 @@ namespace AssetStudioGUI key = new System.Windows.Forms.NumericUpDown(); keyToolTip = new System.Windows.Forms.ToolTip(components); groupBox4 = new System.Windows.Forms.GroupBox(); + minimalAssetMap = new System.Windows.Forms.CheckBox(); disableShader = new System.Windows.Forms.CheckBox(); disableRenderer = new System.Windows.Forms.CheckBox(); - skipContainer = new System.Windows.Forms.CheckBox(); - enableResolveDependencies = new System.Windows.Forms.CheckBox(); resolveToolTip = new System.Windows.Forms.ToolTip(components); skipToolTip = new System.Windows.Forms.ToolTip(components); - minimalAssetMap = new System.Windows.Forms.CheckBox(); groupBox1.SuspendLayout(); panel1.SuspendLayout(); groupBox2.SuspendLayout(); @@ -541,10 +539,8 @@ namespace AssetStudioGUI groupBox4.Controls.Add(minimalAssetMap); groupBox4.Controls.Add(disableShader); groupBox4.Controls.Add(disableRenderer); - groupBox4.Controls.Add(skipContainer); groupBox4.Controls.Add(key); groupBox4.Controls.Add(encrypted); - groupBox4.Controls.Add(enableResolveDependencies); groupBox4.Location = new System.Drawing.Point(13, 258); groupBox4.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); groupBox4.Name = "groupBox4"; @@ -554,10 +550,20 @@ namespace AssetStudioGUI groupBox4.TabStop = false; groupBox4.Text = "Options"; // + // minimalAssetMap + // + minimalAssetMap.AutoSize = true; + minimalAssetMap.Location = new System.Drawing.Point(8, 97); + minimalAssetMap.Name = "minimalAssetMap"; + minimalAssetMap.Size = new System.Drawing.Size(125, 19); + minimalAssetMap.TabIndex = 17; + minimalAssetMap.Text = "Minimal AssetMap"; + minimalAssetMap.UseVisualStyleBackColor = true; + // // disableShader // disableShader.AutoSize = true; - disableShader.Location = new System.Drawing.Point(8, 121); + disableShader.Location = new System.Drawing.Point(8, 72); disableShader.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); disableShader.Name = "disableShader"; disableShader.Size = new System.Drawing.Size(103, 19); @@ -569,7 +575,7 @@ namespace AssetStudioGUI // disableRenderer // disableRenderer.AutoSize = true; - disableRenderer.Location = new System.Drawing.Point(8, 96); + disableRenderer.Location = new System.Drawing.Point(8, 47); disableRenderer.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); disableRenderer.Name = "disableRenderer"; disableRenderer.Size = new System.Drawing.Size(114, 19); @@ -578,44 +584,6 @@ namespace AssetStudioGUI skipToolTip.SetToolTip(disableRenderer, "Skips the container recovery step.\nImproves loading when dealing with a large number of files."); disableRenderer.UseVisualStyleBackColor = true; // - // skipContainer - // - skipContainer.AutoSize = true; - skipContainer.Checked = true; - skipContainer.CheckState = System.Windows.Forms.CheckState.Checked; - skipContainer.Location = new System.Drawing.Point(8, 72); - skipContainer.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); - skipContainer.Name = "skipContainer"; - skipContainer.Size = new System.Drawing.Size(149, 19); - skipContainer.TabIndex = 14; - skipContainer.Text = "Skip container recovery"; - skipToolTip.SetToolTip(skipContainer, "Skips the container recovery step.\nImproves loading when dealing with a large number of files."); - skipContainer.UseVisualStyleBackColor = true; - // - // enableResolveDependencies - // - enableResolveDependencies.AutoSize = true; - enableResolveDependencies.Checked = true; - enableResolveDependencies.CheckState = System.Windows.Forms.CheckState.Checked; - enableResolveDependencies.Location = new System.Drawing.Point(8, 47); - enableResolveDependencies.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); - enableResolveDependencies.Name = "enableResolveDependencies"; - enableResolveDependencies.Size = new System.Drawing.Size(177, 19); - enableResolveDependencies.TabIndex = 13; - enableResolveDependencies.Text = "Enable resolve dependencies"; - resolveToolTip.SetToolTip(enableResolveDependencies, "Toggle the behaviour of loading assets.\r\nDisable to load file(s) without its dependencies."); - enableResolveDependencies.UseVisualStyleBackColor = true; - // - // minimalAssetMap - // - minimalAssetMap.AutoSize = true; - minimalAssetMap.Location = new System.Drawing.Point(8, 146); - minimalAssetMap.Name = "minimalAssetMap"; - minimalAssetMap.Size = new System.Drawing.Size(125, 19); - minimalAssetMap.TabIndex = 17; - minimalAssetMap.Text = "Minimal AssetMap"; - minimalAssetMap.UseVisualStyleBackColor = true; - // // ExportOptions // AcceptButton = OKbutton; @@ -693,8 +661,6 @@ namespace AssetStudioGUI private System.Windows.Forms.ToolTip keyToolTip; private System.Windows.Forms.CheckBox exportUV0UV1; private System.Windows.Forms.GroupBox groupBox4; - private System.Windows.Forms.CheckBox enableResolveDependencies; - private System.Windows.Forms.CheckBox skipContainer; private System.Windows.Forms.ToolTip resolveToolTip; private System.Windows.Forms.ToolTip skipToolTip; private System.Windows.Forms.CheckBox disableShader; diff --git a/AssetStudioGUI/ExportOptions.resx b/AssetStudioGUI/ExportOptions.resx index b787a62..5cb967e 100644 --- a/AssetStudioGUI/ExportOptions.resx +++ b/AssetStudioGUI/ExportOptions.resx @@ -1,4 +1,64 @@ - + + +