Fix element alignment errors

This commit is contained in:
Perfare 2020-08-14 01:18:43 +08:00
parent 9b2c85bcae
commit bd2decdb8f
1 changed files with 8 additions and 4 deletions

View File

@ -140,7 +140,7 @@ namespace AssetStudio
private List<TypeTreeNode> ProcessingFieldRef(FieldReference fieldDef) private List<TypeTreeNode> ProcessingFieldRef(FieldReference fieldDef)
{ {
var typeRef = TypeResolver.Resolve(fieldDef.FieldType); var typeRef = TypeResolver.Resolve(fieldDef.FieldType);
return TypeRefToTypeTreeNodes(typeRef, fieldDef.Name, Indent); return TypeRefToTypeTreeNodes(typeRef, fieldDef.Name, Indent, false);
} }
private static bool IsStruct(TypeReference typeRef) private static bool IsStruct(TypeReference typeRef)
@ -178,7 +178,7 @@ namespace AssetStudio
return typeRef.FullName == "System.String"; return typeRef.FullName == "System.String";
} }
private List<TypeTreeNode> TypeRefToTypeTreeNodes(TypeReference typeRef, string name, int indent) private List<TypeTreeNode> TypeRefToTypeTreeNodes(TypeReference typeRef, string name, int indent, bool isElement)
{ {
var align = false; var align = false;
@ -235,6 +235,10 @@ namespace AssetStudio
default: default:
throw new NotSupportedException(); throw new NotSupportedException();
} }
if (isElement)
{
align = false;
}
nodes.Add(new TypeTreeNode(primitiveName, name, indent, align)); nodes.Add(new TypeTreeNode(primitiveName, name, indent, align));
} }
else if (IsSystemString(typeRef)) else if (IsSystemString(typeRef))
@ -250,14 +254,14 @@ namespace AssetStudio
var elementRef = CecilUtils.ElementTypeOfCollection(typeRef); var elementRef = CecilUtils.ElementTypeOfCollection(typeRef);
nodes.Add(new TypeTreeNode(typeRef.Name, name, indent, align)); nodes.Add(new TypeTreeNode(typeRef.Name, name, indent, align));
Helper.AddArray(nodes, indent + 1); Helper.AddArray(nodes, indent + 1);
nodes.AddRange(TypeRefToTypeTreeNodes(elementRef, "data", indent + 2)); nodes.AddRange(TypeRefToTypeTreeNodes(elementRef, "data", indent + 2, true));
} }
else if (typeRef.IsArray) else if (typeRef.IsArray)
{ {
var elementRef = typeRef.GetElementType(); var elementRef = typeRef.GetElementType();
nodes.Add(new TypeTreeNode(typeRef.Name, name, indent, align)); nodes.Add(new TypeTreeNode(typeRef.Name, name, indent, align));
Helper.AddArray(nodes, indent + 1); Helper.AddArray(nodes, indent + 1);
nodes.AddRange(TypeRefToTypeTreeNodes(elementRef, "data", indent + 2)); nodes.AddRange(TypeRefToTypeTreeNodes(elementRef, "data", indent + 2, true));
} }
else if (UnityEngineTypePredicates.IsUnityEngineObject(typeRef)) else if (UnityEngineTypePredicates.IsUnityEngineObject(typeRef))
{ {