mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-06-03 00:58:13 -04:00
Support file size greater than 2GB
Support preview .otf type font
This commit is contained in:
parent
2e8ef2a403
commit
86e30c5dc0
@ -9,7 +9,7 @@ namespace Unity_Studio
|
|||||||
public class AssetPreloadData : ListViewItem
|
public class AssetPreloadData : ListViewItem
|
||||||
{
|
{
|
||||||
public long m_PathID;
|
public long m_PathID;
|
||||||
public int Offset;
|
public uint Offset;
|
||||||
public int Size;
|
public int Size;
|
||||||
public int Type1;
|
public int Type1;
|
||||||
public ushort Type2;
|
public ushort Type2;
|
||||||
|
@ -49,7 +49,7 @@ namespace Unity_Studio
|
|||||||
int tableSize = a_Stream.ReadInt32();
|
int tableSize = a_Stream.ReadInt32();
|
||||||
int dataEnd = a_Stream.ReadInt32();
|
int dataEnd = a_Stream.ReadInt32();
|
||||||
fileGen = a_Stream.ReadInt32();
|
fileGen = a_Stream.ReadInt32();
|
||||||
int dataOffset = a_Stream.ReadInt32();
|
uint dataOffset = a_Stream.ReadUInt32();
|
||||||
sharedAssetsList[0].fileName = Path.GetFileName(fullName); //reference itself because sharedFileIDs start from 1
|
sharedAssetsList[0].fileName = Path.GetFileName(fullName); //reference itself because sharedFileIDs start from 1
|
||||||
|
|
||||||
switch (fileGen)
|
switch (fileGen)
|
||||||
@ -123,6 +123,7 @@ namespace Unity_Studio
|
|||||||
case 16: platformStr = "Google NaCl"; break;
|
case 16: platformStr = "Google NaCl"; break;
|
||||||
case 21: platformStr = "WP8"; break;
|
case 21: platformStr = "WP8"; break;
|
||||||
case 25: platformStr = "Linux"; break;
|
case 25: platformStr = "Linux"; break;
|
||||||
|
default: platformStr = "Unknown Platform"; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
int baseCount = a_Stream.ReadInt32();
|
int baseCount = a_Stream.ReadInt32();
|
||||||
@ -161,7 +162,7 @@ namespace Unity_Studio
|
|||||||
AssetPreloadData asset = new AssetPreloadData();
|
AssetPreloadData asset = new AssetPreloadData();
|
||||||
if (fileGen < 14) { asset.m_PathID = a_Stream.ReadInt32(); }
|
if (fileGen < 14) { asset.m_PathID = a_Stream.ReadInt32(); }
|
||||||
else { asset.m_PathID = a_Stream.ReadInt64(); }
|
else { asset.m_PathID = a_Stream.ReadInt64(); }
|
||||||
asset.Offset = a_Stream.ReadInt32();
|
asset.Offset = a_Stream.ReadUInt32();
|
||||||
asset.Offset += dataOffset;
|
asset.Offset += dataOffset;
|
||||||
asset.Size = a_Stream.ReadInt32();
|
asset.Size = a_Stream.ReadInt32();
|
||||||
if (fileGen > 15)
|
if (fileGen > 15)
|
||||||
|
@ -655,7 +655,7 @@ namespace Unity_Studio
|
|||||||
//progressBar1.Value = 0;
|
//progressBar1.Value = 0;
|
||||||
//progressBar1.Maximum = totalAssetCount;
|
//progressBar1.Maximum = totalAssetCount;
|
||||||
SetProgressBarValue(0);
|
SetProgressBarValue(0);
|
||||||
SetProgressBarMaximum(assetsfileList.Count);
|
SetProgressBarMaximum(assetsfileList.Sum(x => x.preloadTable.Values.Count));
|
||||||
|
|
||||||
string fileIDfmt = "D" + assetsfileList.Count.ToString().Length.ToString();
|
string fileIDfmt = "D" + assetsfileList.Count.ToString().Length.ToString();
|
||||||
|
|
||||||
@ -775,11 +775,10 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
assetsFile.exportableAssets.Add(asset);
|
assetsFile.exportableAssets.Add(asset);
|
||||||
}
|
}
|
||||||
|
ProgressBarPerformStep();
|
||||||
}
|
}
|
||||||
|
|
||||||
exportableAssets.AddRange(assetsFile.exportableAssets);
|
exportableAssets.AddRange(assetsFile.exportableAssets);
|
||||||
//if (assetGroup.Items.Count > 0) { listView1.Groups.Add(assetGroup); }
|
//if (assetGroup.Items.Count > 0) { listView1.Groups.Add(assetGroup); }
|
||||||
ProgressBarPerformStep();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
visibleAssets = exportableAssets;
|
visibleAssets = exportableAssets;
|
||||||
@ -799,7 +798,7 @@ namespace Unity_Studio
|
|||||||
//progressBar1.Value = 0;
|
//progressBar1.Value = 0;
|
||||||
//progressBar1.Maximum = totalTreeNodes;
|
//progressBar1.Maximum = totalTreeNodes;
|
||||||
SetProgressBarValue(0);
|
SetProgressBarValue(0);
|
||||||
SetProgressBarMaximum(assetsfileList.Count);
|
SetProgressBarMaximum(assetsfileList.Sum(x => x.GameObjectList.Values.Count));
|
||||||
foreach (var assetsFile in assetsfileList)
|
foreach (var assetsFile in assetsfileList)
|
||||||
{
|
{
|
||||||
StatusStripUpdate("Building tree structure from " + Path.GetFileName(assetsFile.filePath));
|
StatusStripUpdate("Building tree structure from " + Path.GetFileName(assetsFile.filePath));
|
||||||
@ -828,6 +827,7 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
|
|
||||||
parentNode.Nodes.Add(m_GameObject);
|
parentNode.Nodes.Add(m_GameObject);
|
||||||
|
ProgressBarPerformStep();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -836,7 +836,6 @@ namespace Unity_Studio
|
|||||||
fileNode.Text += " (no children)";
|
fileNode.Text += " (no children)";
|
||||||
}
|
}
|
||||||
fileNodes.Add(fileNode);
|
fileNodes.Add(fileNode);
|
||||||
ProgressBarPerformStep();
|
|
||||||
}
|
}
|
||||||
//sceneTreeView.EndUpdate();
|
//sceneTreeView.EndUpdate();
|
||||||
|
|
||||||
@ -914,9 +913,8 @@ namespace Unity_Studio
|
|||||||
}
|
}
|
||||||
StatusStripUpdate("Finished loading " + assetsfileList.Count.ToString() + " files with " + (assetListView.Items.Count + sceneTreeView.Nodes.Count).ToString() + " exportable assets.");
|
StatusStripUpdate("Finished loading " + assetsfileList.Count.ToString() + " files with " + (assetListView.Items.Count + sceneTreeView.Nodes.Count).ToString() + " exportable assets.");
|
||||||
treeSearch.Select();
|
treeSearch.Select();
|
||||||
|
saveFolderDialog1.InitialDirectory = mainPath;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
saveFolderDialog1.InitialDirectory = mainPath;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assetListView_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
|
private void assetListView_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
|
||||||
@ -1327,53 +1325,53 @@ namespace Unity_Studio
|
|||||||
case 128: //Font
|
case 128: //Font
|
||||||
{
|
{
|
||||||
unityFont m_Font = new unityFont(asset, true);
|
unityFont m_Font = new unityFont(asset, true);
|
||||||
|
if (m_Font.m_FontData != null)
|
||||||
if (asset.extension != ".otf" && m_Font.m_FontData != null)
|
|
||||||
{
|
{
|
||||||
IntPtr data = Marshal.AllocCoTaskMem(m_Font.m_FontData.Length);
|
IntPtr data = Marshal.AllocCoTaskMem(m_Font.m_FontData.Length);
|
||||||
Marshal.Copy(m_Font.m_FontData, 0, data, m_Font.m_FontData.Length);
|
Marshal.Copy(m_Font.m_FontData, 0, data, m_Font.m_FontData.Length);
|
||||||
|
|
||||||
// We HAVE to do this to register the font to the system (Weird .NET bug !)
|
// We HAVE to do this to register the font to the system (Weird .NET bug !)
|
||||||
uint cFonts = 0;
|
uint cFonts = 0;
|
||||||
AddFontMemResourceEx(data, (uint)m_Font.m_FontData.Length, IntPtr.Zero, ref cFonts);
|
var re = AddFontMemResourceEx(data, (uint)m_Font.m_FontData.Length, IntPtr.Zero, ref cFonts);
|
||||||
|
if (re != IntPtr.Zero)
|
||||||
pfc = new System.Drawing.Text.PrivateFontCollection();
|
|
||||||
pfc.AddMemoryFont(data, m_Font.m_FontData.Length);
|
|
||||||
Marshal.FreeCoTaskMem(data);
|
|
||||||
|
|
||||||
if (pfc.Families.Length > 0)
|
|
||||||
{
|
{
|
||||||
//textPreviewBox.Font = new Font(pfc.Families[0], 16, FontStyle.Regular);
|
pfc = new PrivateFontCollection();
|
||||||
//textPreviewBox.Text = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWYZ\r\n1234567890.:,;'\"(!?)+-*/=\r\nThe quick brown fox jumps over the lazy dog. 1234567890";
|
pfc.AddMemoryFont(data, m_Font.m_FontData.Length);
|
||||||
fontPreviewBox.SelectionStart = 0;
|
Marshal.FreeCoTaskMem(data);
|
||||||
fontPreviewBox.SelectionLength = 80;
|
if (pfc.Families.Length > 0)
|
||||||
fontPreviewBox.SelectionFont = new Font(pfc.Families[0], 16, FontStyle.Regular);
|
{
|
||||||
fontPreviewBox.SelectionStart = 81;
|
//textPreviewBox.Font = new Font(pfc.Families[0], 16, FontStyle.Regular);
|
||||||
fontPreviewBox.SelectionLength = 56;
|
//textPreviewBox.Text = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWYZ\r\n1234567890.:,;'\"(!?)+-*/=\r\nThe quick brown fox jumps over the lazy dog. 1234567890";
|
||||||
fontPreviewBox.SelectionFont = new Font(pfc.Families[0], 12, FontStyle.Regular);
|
fontPreviewBox.SelectionStart = 0;
|
||||||
fontPreviewBox.SelectionStart = 138;
|
fontPreviewBox.SelectionLength = 80;
|
||||||
fontPreviewBox.SelectionLength = 56;
|
fontPreviewBox.SelectionFont = new Font(pfc.Families[0], 16, FontStyle.Regular);
|
||||||
fontPreviewBox.SelectionFont = new Font(pfc.Families[0], 18, FontStyle.Regular);
|
fontPreviewBox.SelectionStart = 81;
|
||||||
fontPreviewBox.SelectionStart = 195;
|
fontPreviewBox.SelectionLength = 56;
|
||||||
fontPreviewBox.SelectionLength = 56;
|
fontPreviewBox.SelectionFont = new Font(pfc.Families[0], 12, FontStyle.Regular);
|
||||||
fontPreviewBox.SelectionFont = new Font(pfc.Families[0], 24, FontStyle.Regular);
|
fontPreviewBox.SelectionStart = 138;
|
||||||
fontPreviewBox.SelectionStart = 252;
|
fontPreviewBox.SelectionLength = 56;
|
||||||
fontPreviewBox.SelectionLength = 56;
|
fontPreviewBox.SelectionFont = new Font(pfc.Families[0], 18, FontStyle.Regular);
|
||||||
fontPreviewBox.SelectionFont = new Font(pfc.Families[0], 36, FontStyle.Regular);
|
fontPreviewBox.SelectionStart = 195;
|
||||||
fontPreviewBox.SelectionStart = 309;
|
fontPreviewBox.SelectionLength = 56;
|
||||||
fontPreviewBox.SelectionLength = 56;
|
fontPreviewBox.SelectionFont = new Font(pfc.Families[0], 24, FontStyle.Regular);
|
||||||
fontPreviewBox.SelectionFont = new Font(pfc.Families[0], 48, FontStyle.Regular);
|
fontPreviewBox.SelectionStart = 252;
|
||||||
fontPreviewBox.SelectionStart = 366;
|
fontPreviewBox.SelectionLength = 56;
|
||||||
fontPreviewBox.SelectionLength = 56;
|
fontPreviewBox.SelectionFont = new Font(pfc.Families[0], 36, FontStyle.Regular);
|
||||||
fontPreviewBox.SelectionFont = new Font(pfc.Families[0], 60, FontStyle.Regular);
|
fontPreviewBox.SelectionStart = 309;
|
||||||
fontPreviewBox.SelectionStart = 423;
|
fontPreviewBox.SelectionLength = 56;
|
||||||
fontPreviewBox.SelectionLength = 55;
|
fontPreviewBox.SelectionFont = new Font(pfc.Families[0], 48, FontStyle.Regular);
|
||||||
fontPreviewBox.SelectionFont = new Font(pfc.Families[0], 72, FontStyle.Regular);
|
fontPreviewBox.SelectionStart = 366;
|
||||||
fontPreviewBox.Visible = true;
|
fontPreviewBox.SelectionLength = 56;
|
||||||
|
fontPreviewBox.SelectionFont = new Font(pfc.Families[0], 60, FontStyle.Regular);
|
||||||
|
fontPreviewBox.SelectionStart = 423;
|
||||||
|
fontPreviewBox.SelectionLength = 55;
|
||||||
|
fontPreviewBox.SelectionFont = new Font(pfc.Families[0], 72, FontStyle.Regular);
|
||||||
|
fontPreviewBox.Visible = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { StatusStripUpdate("Unsupported font for preview. Try to export."); }
|
StatusStripUpdate("Unsupported font for preview. Try to export.");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
Loading…
x
Reference in New Issue
Block a user