Some fixes for TypeTreeHelper. Close #137

- Fixed an error during parsing typetree data of Font assets
- Chaged display format of large byte arrays to base64 string
This commit is contained in:
VaDiM
2026-03-16 02:35:29 +03:00
parent 54d0a96235
commit 5719a6bab8
+17 -1
View File
@@ -141,7 +141,7 @@ namespace AssetStudio
reader.BaseStream.Position += size;
i += 2;
sb.AppendFormat("{0}{1} {2}\r\n", (new string('\t', level)), varTypeStr, varNameStr);
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level)), "int", "size", size);
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level + 1)), "int", "size", size);
break;
}
default:
@@ -151,12 +151,26 @@ namespace AssetStudio
if ((m_Nodes[i + 1].m_MetaFlag & 0x4000) != 0)
align = true;
append = false;
var arrayTypeStr = m_Nodes.Count > i + 3
? m_Nodes[i + 3].m_Type
: "";
sb.AppendFormat("{0}{1} {2}\r\n", (new string('\t', level)), varTypeStr, varNameStr);
sb.AppendFormat("{0}{1} {2}\r\n", (new string('\t', level + 1)), "Array", "Array");
var size = reader.ReadInt32();
sb.AppendFormat("{0}{1} {2} = {3}\r\n", (new string('\t', level + 1)), "int", "size", size);
var vector = GetNodes(m_Nodes, i);
i += vector.Count - 1;
if (varNameStr.ToLower() == "m_fontdata" && arrayTypeStr == "char")
{
vector[vector.Count - 1].m_Type = arrayTypeStr = "UInt8";
}
if (size > 8192 && arrayTypeStr == "UInt8")
{
var data = Convert.ToBase64String(reader.ReadBytes(size));
sb.AppendFormat("{0}{1} {2} = \"{3}\"\r\n", (new string('\t', level + 1)), "byte[]", "data", data);
break;
}
for (int j = 0; j < size; j++)
{
sb.AppendFormat("{0}[{1}]\r\n", (new string('\t', level + 2)), j);
@@ -324,11 +338,13 @@ namespace AssetStudio
var arrayTypeStr = m_Nodes.Count > i + 3
? m_Nodes[i + 3].m_Type
: "";
var nodeName = m_Nodes[i].m_Name.ToLower();
var vector = GetNodes(m_Nodes, i);
i += vector.Count - 1;
switch (arrayTypeStr)
{
case "UInt8":
case "char" when nodeName == "m_fontdata":
value = reader.ReadUInt8Array();
break;
case "UInt16":