- Exportable GameObject

- Split models option to preview and fliter.
This commit is contained in:
Razmoth
2023-05-18 23:57:04 +04:00
parent 3d1799b9df
commit d2329ed581
7 changed files with 64 additions and 16 deletions

View File

@@ -106,6 +106,9 @@
<setting name="modelsOnly" serializeAs="String"> <setting name="modelsOnly" serializeAs="String">
<value>False</value> <value>False</value>
</setting> </setting>
<setting name="enableModelPreview" serializeAs="String">
<value>False</value>
</setting>
</AssetStudioGUI.Properties.Settings> </AssetStudioGUI.Properties.Settings>
</userSettings> </userSettings>
</configuration> </configuration>

View File

@@ -45,7 +45,7 @@ namespace AssetStudioGUI
optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
displayAll = new System.Windows.Forms.ToolStripMenuItem(); displayAll = new System.Windows.Forms.ToolStripMenuItem();
enablePreview = new System.Windows.Forms.ToolStripMenuItem(); enablePreview = new System.Windows.Forms.ToolStripMenuItem();
enableModelPreview = new System.Windows.Forms.ToolStripMenuItem(); modelsOnly = new System.Windows.Forms.ToolStripMenuItem();
displayInfo = new System.Windows.Forms.ToolStripMenuItem(); displayInfo = new System.Windows.Forms.ToolStripMenuItem();
toolStripMenuItem14 = new System.Windows.Forms.ToolStripMenuItem(); toolStripMenuItem14 = new System.Windows.Forms.ToolStripMenuItem();
specifyUnityVersion = new System.Windows.Forms.ToolStripTextBox(); specifyUnityVersion = new System.Windows.Forms.ToolStripTextBox();
@@ -161,6 +161,7 @@ namespace AssetStudioGUI
exportAnimatorwithselectedAnimationClipMenuItem = new System.Windows.Forms.ToolStripMenuItem(); exportAnimatorwithselectedAnimationClipMenuItem = new System.Windows.Forms.ToolStripMenuItem();
goToSceneHierarchyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); goToSceneHierarchyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
showOriginalFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); showOriginalFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
enableModelPreview = new System.Windows.Forms.ToolStripMenuItem();
menuStrip1.SuspendLayout(); menuStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)splitContainer1).BeginInit(); ((System.ComponentModel.ISupportInitialize)splitContainer1).BeginInit();
splitContainer1.Panel1.SuspendLayout(); splitContainer1.Panel1.SuspendLayout();
@@ -252,7 +253,7 @@ namespace AssetStudioGUI
// //
// optionsToolStripMenuItem // optionsToolStripMenuItem
// //
optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { displayAll, enablePreview, enableModelPreview, displayInfo, toolStripMenuItem14, toolStripMenuItem18, toolStripMenuItem19, showExpOpt }); optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { displayAll, enablePreview, enableModelPreview, modelsOnly, displayInfo, toolStripMenuItem14, toolStripMenuItem18, toolStripMenuItem19, showExpOpt });
optionsToolStripMenuItem.Name = "optionsToolStripMenuItem"; optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
optionsToolStripMenuItem.Size = new System.Drawing.Size(61, 20); optionsToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
optionsToolStripMenuItem.Text = "Options"; optionsToolStripMenuItem.Text = "Options";
@@ -277,13 +278,13 @@ namespace AssetStudioGUI
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.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; enablePreview.CheckedChanged += enablePreview_Check;
// //
// enableModelPreview // modelsOnly
// //
enableModelPreview.CheckOnClick = true; modelsOnly.CheckOnClick = true;
enableModelPreview.Name = "enableModelPreview"; modelsOnly.Name = "modelsOnly";
enableModelPreview.Size = new System.Drawing.Size(207, 22); modelsOnly.Size = new System.Drawing.Size(207, 22);
enableModelPreview.Text = "Enable model preview"; modelsOnly.Text = "Filter models only";
enableModelPreview.CheckedChanged += enableModelPreview_CheckedChanged; modelsOnly.CheckedChanged += modelsOnly_CheckedChanged;
// //
// displayInfo // displayInfo
// //
@@ -1257,6 +1258,14 @@ namespace AssetStudioGUI
showOriginalFileToolStripMenuItem.Visible = false; showOriginalFileToolStripMenuItem.Visible = false;
showOriginalFileToolStripMenuItem.Click += showOriginalFileToolStripMenuItem_Click; showOriginalFileToolStripMenuItem.Click += showOriginalFileToolStripMenuItem_Click;
// //
// enableModelPreview
//
enableModelPreview.CheckOnClick = true;
enableModelPreview.Name = "enableModelPreview";
enableModelPreview.Size = new System.Drawing.Size(207, 22);
enableModelPreview.Text = "Enable model preview";
enableModelPreview.CheckedChanged += enableModelPreview_CheckedChanged;
//
// AssetStudioGUIForm // AssetStudioGUIForm
// //
AllowDrop = true; AllowDrop = true;
@@ -1434,6 +1443,7 @@ namespace AssetStudioGUI
private System.Windows.Forms.ToolStripSeparator toolStripSeparator9; private System.Windows.Forms.ToolStripSeparator toolStripSeparator9;
private System.Windows.Forms.ToolStripMenuItem exportSelectedNodessplitToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem exportSelectedNodessplitToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem exportSelectedNodessplitSelectedAnimationClipsToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem exportSelectedNodessplitSelectedAnimationClipsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem modelsOnly;
private System.Windows.Forms.ToolStripMenuItem enableModelPreview; private System.Windows.Forms.ToolStripMenuItem enableModelPreview;
} }
} }

View File

@@ -108,7 +108,8 @@ namespace AssetStudioGUI
displayAll.Checked = Properties.Settings.Default.displayAll; displayAll.Checked = Properties.Settings.Default.displayAll;
displayInfo.Checked = Properties.Settings.Default.displayInfo; displayInfo.Checked = Properties.Settings.Default.displayInfo;
enablePreview.Checked = Properties.Settings.Default.enablePreview; enablePreview.Checked = Properties.Settings.Default.enablePreview;
enableModelPreview.Checked = Properties.Settings.Default.modelsOnly; enableModelPreview.Checked = Properties.Settings.Default.enableModelPreview;
modelsOnly.Checked = Properties.Settings.Default.modelsOnly;
assetsManager.ResolveDependencies = Properties.Settings.Default.enableResolveDependencies; assetsManager.ResolveDependencies = Properties.Settings.Default.enableResolveDependencies;
MiHoYoBinData.Encrypted = Properties.Settings.Default.encrypted; MiHoYoBinData.Encrypted = Properties.Settings.Default.encrypted;
MiHoYoBinData.Key = Properties.Settings.Default.key; MiHoYoBinData.Key = Properties.Settings.Default.key;
@@ -760,7 +761,7 @@ namespace AssetStudioGUI
{ {
switch (assetItem.Asset) switch (assetItem.Asset)
{ {
case GameObject m_GameObject when Properties.Settings.Default.modelsOnly: case GameObject m_GameObject when Properties.Settings.Default.enableModelPreview:
PreviewGameObject(m_GameObject); PreviewGameObject(m_GameObject);
break; break;
case Texture2D m_Texture2D: case Texture2D m_Texture2D:
@@ -791,7 +792,7 @@ namespace AssetStudioGUI
case Sprite m_Sprite: case Sprite m_Sprite:
PreviewSprite(assetItem, m_Sprite); PreviewSprite(assetItem, m_Sprite);
break; break;
case Animator m_Animator when Properties.Settings.Default.modelsOnly: case Animator m_Animator when Properties.Settings.Default.enableModelPreview:
//StatusStripUpdate("Can be exported to FBX file."); //StatusStripUpdate("Can be exported to FBX file.");
PreviewAnimator(m_Animator); PreviewAnimator(m_Animator);
break; break;
@@ -1966,9 +1967,9 @@ namespace AssetStudioGUI
Properties.Settings.Default.selectedAssetMapType = assetMapTypeComboBox.SelectedIndex; Properties.Settings.Default.selectedAssetMapType = assetMapTypeComboBox.SelectedIndex;
Properties.Settings.Default.Save(); Properties.Settings.Default.Save();
} }
private void enableModelPreview_CheckedChanged(object sender, EventArgs e) private void modelsOnly_CheckedChanged(object sender, EventArgs e)
{ {
Properties.Settings.Default.modelsOnly = enableModelPreview.Checked; Properties.Settings.Default.modelsOnly = modelsOnly.Checked;
Properties.Settings.Default.Save(); Properties.Settings.Default.Save();
if (visibleAssets.Count > 0) if (visibleAssets.Count > 0)
@@ -1976,6 +1977,11 @@ namespace AssetStudioGUI
FilterAssetList(); FilterAssetList();
} }
} }
private void enableModelPreview_CheckedChanged(object sender, EventArgs e)
{
Properties.Settings.Default.enableModelPreview = enableModelPreview.Checked;
Properties.Settings.Default.Save();
}
private void specifyGame_SelectedIndexChanged(object sender, EventArgs e) private void specifyGame_SelectedIndexChanged(object sender, EventArgs e)
{ {

View File

@@ -60,6 +60,9 @@
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>312, 17</value> <value>312, 17</value>
</metadata> </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"> <data name="fontPreviewBox.Text" xml:space="preserve">
<value>abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWYZ <value>abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWYZ
1234567890.:,;'\"(!?)+-*/= 1234567890.:,;'\"(!?)+-*/=
@@ -78,9 +81,6 @@ The quick brown fox jumps over the lazy dog. 1234567890
The quick brown fox jumps over the lazy dog. 1234567890</value> The quick brown fox jumps over the lazy dog. 1234567890</value>
</data> </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"> <metadata name="timer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>553, 17</value> <value>553, 17</value>
</metadata> </metadata>

View File

@@ -331,6 +331,18 @@ namespace AssetStudioGUI
return true; return true;
} }
public static bool ExportGameObject(AssetItem item, string exportPath, List <AssetItem> animationList = null)
{
var exportFullPath = Path.Combine(exportPath, item.Text, item.Text + ".fbx");
if (File.Exists(exportFullPath))
{
exportFullPath = Path.Combine(exportPath, item.Text + item.UniqueID, item.Text + ".fbx");
}
var m_GameObject = (GameObject)item.Asset;
ExportGameObject(m_GameObject, exportFullPath, animationList);
return true;
}
public static void ExportGameObject(GameObject gameObject, string exportPath, List<AssetItem> animationList = null) public static void ExportGameObject(GameObject gameObject, string exportPath, List<AssetItem> animationList = null)
{ {
var convert = animationList != null var convert = animationList != null
@@ -390,6 +402,8 @@ namespace AssetStudioGUI
{ {
switch (item.Type) switch (item.Type)
{ {
case ClassIDType.GameObject:
return ExportGameObject(item, exportPath);
case ClassIDType.Texture2D: case ClassIDType.Texture2D:
return ExportTexture2D(item, exportPath); return ExportTexture2D(item, exportPath);
case ClassIDType.AudioClip: case ClassIDType.AudioClip:

View File

@@ -430,5 +430,17 @@ namespace AssetStudioGUI.Properties {
this["modelsOnly"] = value; this["modelsOnly"] = value;
} }
} }
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool enableModelPreview {
get {
return ((bool)(this["enableModelPreview"]));
}
set {
this["enableModelPreview"] = value;
}
}
} }
} }

View File

@@ -104,5 +104,8 @@
<Setting Name="modelsOnly" Type="System.Boolean" Scope="User"> <Setting Name="modelsOnly" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value> <Value Profile="(Default)">False</Value>
</Setting> </Setting>
<Setting Name="enableModelPreview" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
</Settings> </Settings>
</SettingsFile> </SettingsFile>