diff --git a/Unity Studio/Properties/Settings.Designer.cs b/Unity Studio/Properties/Settings.Designer.cs
index 30223fa..e8e1740 100644
--- a/Unity Studio/Properties/Settings.Designer.cs
+++ b/Unity Studio/Properties/Settings.Designer.cs
@@ -226,5 +226,17 @@ namespace Unity_Studio.Properties {
this["convertType"] = value;
}
}
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool displayOriginalName {
+ get {
+ return ((bool)(this["displayOriginalName"]));
+ }
+ set {
+ this["displayOriginalName"] = value;
+ }
+ }
}
}
diff --git a/Unity Studio/Properties/Settings.settings b/Unity Studio/Properties/Settings.settings
index e3ce73f..77ab853 100644
--- a/Unity Studio/Properties/Settings.settings
+++ b/Unity Studio/Properties/Settings.settings
@@ -53,5 +53,8 @@
PNG
+
+ False
+
\ No newline at end of file
diff --git a/Unity Studio/Unity Classes/AssetBundle.cs b/Unity Studio/Unity Classes/AssetBundle.cs
new file mode 100644
index 0000000..da84b17
--- /dev/null
+++ b/Unity Studio/Unity Classes/AssetBundle.cs
@@ -0,0 +1,52 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Unity_Studio
+{
+
+ class AssetBundle
+ {
+ public class AssetInfo
+ {
+ public int preloadIndex;
+ public int preloadSize;
+ public PPtr asset;
+ }
+
+ public class ContainerData
+ {
+ public string first;
+ public AssetInfo second;
+ }
+
+
+ public List m_Container = new List();
+
+ public AssetBundle(AssetPreloadData preloadData)
+ {
+ var sourceFile = preloadData.sourceFile;
+ var a_Stream = preloadData.sourceFile.a_Stream;
+ a_Stream.Position = preloadData.Offset;
+
+ var m_Name = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
+ var size = a_Stream.ReadInt32();
+ for (int i = 0; i < size; i++)
+ {
+ sourceFile.ReadPPtr();
+ }
+ size = a_Stream.ReadInt32();
+ for (int i = 0; i < size; i++)
+ {
+ var temp = new ContainerData();
+ temp.first = a_Stream.ReadAlignedString(a_Stream.ReadInt32());
+ temp.second = new AssetInfo();
+ temp.second.preloadIndex = a_Stream.ReadInt32();
+ temp.second.preloadSize = a_Stream.ReadInt32();
+ temp.second.asset = sourceFile.ReadPPtr();
+ m_Container.Add(temp);
+ }
+ }
+ }
+}
diff --git a/Unity Studio/Unity Studio Classes/UnityStudio.cs b/Unity Studio/Unity Studio Classes/UnityStudio.cs
index 2230fbb..8247391 100644
--- a/Unity Studio/Unity Studio Classes/UnityStudio.cs
+++ b/Unity Studio/Unity Studio Classes/UnityStudio.cs
@@ -240,7 +240,7 @@ namespace Unity_Studio
return extractedCount;
}
- public static void BuildAssetStructures(bool loadAssetsMenuItem, bool displayAll, bool buildHierarchyMenuItem, bool buildClassStructuresMenuItem)
+ public static void BuildAssetStructures(bool loadAssetsMenuItem, bool displayAll, bool buildHierarchyMenuItem, bool buildClassStructuresMenuItem, bool displayOriginalName)
{
#region first loop - read asset data & create list
if (loadAssetsMenuItem)
@@ -255,7 +255,7 @@ namespace Unity_Studio
StatusStripUpdate("Building asset list from " + Path.GetFileName(assetsFile.filePath));
string fileID = i.ToString(fileIDfmt);
-
+ AssetBundle ab = null;
foreach (var asset in assetsFile.preloadTable.Values)
{
asset.uniqueID = fileID + asset.uniqueID;
@@ -330,6 +330,11 @@ namespace Unity_Studio
exportable = true;
break;
}
+ case 142: //AssetBundle
+ {
+ ab = new AssetBundle(asset);
+ break;
+ }
case 21: //Material
case 74: //AnimationClip
case 90: //Avatar
@@ -370,6 +375,15 @@ namespace Unity_Studio
}
ProgressBarPerformStep();
}
+ if (displayOriginalName)
+ {
+ assetsFile.exportableAssets.ForEach(x =>
+ {
+ var replacename = ab?.m_Container.Find(y => y.second.asset.m_PathID == x.m_PathID)?.first;
+ if (!string.IsNullOrEmpty(replacename))
+ x.Text = replacename.Replace(Path.GetExtension(replacename), "");
+ });
+ }
exportableAssets.AddRange(assetsFile.exportableAssets);
//if (assetGroup.Items.Count > 0) { listView1.Groups.Add(assetGroup); }
}
diff --git a/Unity Studio/Unity Studio.csproj b/Unity Studio/Unity Studio.csproj
index 25a5e48..24f400a 100644
--- a/Unity Studio/Unity Studio.csproj
+++ b/Unity Studio/Unity Studio.csproj
@@ -159,6 +159,7 @@
AboutBox.cs
+
diff --git a/Unity Studio/UnityStudioForm.Designer.cs b/Unity Studio/UnityStudioForm.Designer.cs
index 8ae181f..dd652a8 100644
--- a/Unity Studio/UnityStudioForm.Designer.cs
+++ b/Unity Studio/UnityStudioForm.Designer.cs
@@ -45,6 +45,7 @@
this.exportClassStructuresMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.displayAll = new System.Windows.Forms.ToolStripMenuItem();
+ this.displayOriginalName = new System.Windows.Forms.ToolStripMenuItem();
this.enablePreview = new System.Windows.Forms.ToolStripMenuItem();
this.displayInfo = new System.Windows.Forms.ToolStripMenuItem();
this.openAfterExport = new System.Windows.Forms.ToolStripMenuItem();
@@ -233,6 +234,7 @@
//
this.optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.displayAll,
+ this.displayOriginalName,
this.enablePreview,
this.displayInfo,
this.openAfterExport,
@@ -242,6 +244,15 @@
this.optionsToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
this.optionsToolStripMenuItem.Text = "Options";
//
+ // displayOriginalName
+ //
+ this.displayOriginalName.CheckOnClick = true;
+ this.displayOriginalName.Name = "displayOriginalName";
+ this.displayOriginalName.Size = new System.Drawing.Size(252, 22);
+ this.displayOriginalName.Text = "Display asset original name";
+ this.displayOriginalName.ToolTipText = "Check this option will use asset original name when display and export";
+ this.displayOriginalName.CheckedChanged += new System.EventHandler(this.MenuItem_CheckedChanged);
+ //
// displayAll
//
this.displayAll.CheckOnClick = true;
@@ -808,7 +819,7 @@
//
// timerOpenTK
//
- this.timerOpenTK.Interval = 1000/6;
+ this.timerOpenTK.Interval = 1000 / 6;
this.timerOpenTK.Tick += new System.EventHandler(this.timerOpenTK_Tick);
//
// openFileDialog1
@@ -929,6 +940,7 @@
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem displayAll;
+ private System.Windows.Forms.ToolStripMenuItem displayOriginalName;
private System.Windows.Forms.ToolStripMenuItem enablePreview;
private System.Windows.Forms.ToolStripMenuItem displayInfo;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
diff --git a/Unity Studio/UnityStudioForm.cs b/Unity Studio/UnityStudioForm.cs
index cda2964..1872b11 100644
--- a/Unity Studio/UnityStudioForm.cs
+++ b/Unity Studio/UnityStudioForm.cs
@@ -269,7 +269,7 @@ namespace Unity_Studio
bool optionBuildHierarchyMenuItem = !dontBuildHierarchyMenuItem.Checked;
bool optionBuildClassStructuresMenuItem = buildClassStructuresMenuItem.Checked;
- BuildAssetStructures(optionLoadAssetsMenuItem, optionDisplayAll, optionBuildHierarchyMenuItem, optionBuildClassStructuresMenuItem);
+ BuildAssetStructures(optionLoadAssetsMenuItem, optionDisplayAll, optionBuildHierarchyMenuItem, optionBuildClassStructuresMenuItem, displayOriginalName.Checked);
BeginInvoke(new Action(() =>
{
@@ -1069,7 +1069,7 @@ namespace Unity_Studio
textPreviewBox.Visible = true;
}
else*/
- StatusStripUpdate("Only supported export the raw file.");
+ StatusStripUpdate("Only supported export the raw file.");
break;
}
}
@@ -1682,6 +1682,7 @@ namespace Unity_Studio
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
InitializeComponent();
+ displayOriginalName.Checked = (bool)Properties.Settings.Default["displayOriginalName"];
displayAll.Checked = (bool)Properties.Settings.Default["displayAll"];
displayInfo.Checked = (bool)Properties.Settings.Default["displayInfo"];
enablePreview.Checked = (bool)Properties.Settings.Default["enablePreview"];
diff --git a/Unity Studio/app.config b/Unity Studio/app.config
index f66773c..9102bd1 100644
--- a/Unity Studio/app.config
+++ b/Unity Studio/app.config
@@ -58,6 +58,9 @@
PNG
+
+ False
+