DLL: Add static array initializer value preview
This commit is contained in:
@@ -63,6 +63,7 @@ namespace Il2CppInspector.Outputs
|
|||||||
private TypeDef fieldOffsetAttribute;
|
private TypeDef fieldOffsetAttribute;
|
||||||
private TypeDef attributeAttribute;
|
private TypeDef attributeAttribute;
|
||||||
private TypeDef metadataOffsetAttribute;
|
private TypeDef metadataOffsetAttribute;
|
||||||
|
private TypeDef metadataPreviewAttribute;
|
||||||
private TypeDef tokenAttribute;
|
private TypeDef tokenAttribute;
|
||||||
|
|
||||||
// The namespace for our custom types
|
// The namespace for our custom types
|
||||||
@@ -115,6 +116,10 @@ namespace Il2CppInspector.Outputs
|
|||||||
metadataOffsetAttribute.Fields.Add(new FieldDefUser("Offset", stringField, FieldAttributes.Public));
|
metadataOffsetAttribute.Fields.Add(new FieldDefUser("Offset", stringField, FieldAttributes.Public));
|
||||||
metadataOffsetAttribute.AddDefaultConstructor(attributeCtorRef);
|
metadataOffsetAttribute.AddDefaultConstructor(attributeCtorRef);
|
||||||
|
|
||||||
|
metadataPreviewAttribute = createAttribute("MetadataPreviewAttribute");
|
||||||
|
metadataPreviewAttribute.Fields.Add(new FieldDefUser("Data", stringField, FieldAttributes.Public));
|
||||||
|
metadataPreviewAttribute.AddDefaultConstructor(attributeCtorRef);
|
||||||
|
|
||||||
tokenAttribute = createAttribute("TokenAttribute");
|
tokenAttribute = createAttribute("TokenAttribute");
|
||||||
tokenAttribute.Fields.Add(new FieldDefUser("Token", stringField, FieldAttributes.Public));
|
tokenAttribute.Fields.Add(new FieldDefUser("Token", stringField, FieldAttributes.Public));
|
||||||
tokenAttribute.AddDefaultConstructor(attributeCtorRef);
|
tokenAttribute.AddDefaultConstructor(attributeCtorRef);
|
||||||
@@ -203,9 +208,17 @@ namespace Il2CppInspector.Outputs
|
|||||||
mField.Constant = new ConstantUser(field.DefaultValue);
|
mField.Constant = new ConstantUser(field.DefaultValue);
|
||||||
|
|
||||||
// Add offset attribute if no default value but metadata present
|
// Add offset attribute if no default value but metadata present
|
||||||
else if (field.HasFieldRVA)
|
else if (field.HasFieldRVA || field.IsLiteral)
|
||||||
mField.AddAttribute(module, metadataOffsetAttribute, ("Offset", $"0x{field.DefaultValueMetadataAddress:X8}"));
|
mField.AddAttribute(module, metadataOffsetAttribute, ("Offset", $"0x{field.DefaultValueMetadataAddress:X8}"));
|
||||||
|
|
||||||
|
// Static array initializer preview
|
||||||
|
if (field.HasFieldRVA) {
|
||||||
|
var preview = model.Package.Metadata.ReadBytes((long) field.DefaultValueMetadataAddress, 8);
|
||||||
|
var previewText = string.Join(" ", preview.Select(b => $"{b:x2}"));
|
||||||
|
|
||||||
|
mField.AddAttribute(module, metadataPreviewAttribute, ("Data", previewText));
|
||||||
|
}
|
||||||
|
|
||||||
// Field offset
|
// Field offset
|
||||||
if (!field.IsLiteral && !field.IsStatic && field.Offset != 0)
|
if (!field.IsLiteral && !field.IsStatic && field.Offset != 0)
|
||||||
mField.AddAttribute(module, fieldOffsetAttribute, ("Offset", $"0x{field.Offset:X}"));
|
mField.AddAttribute(module, fieldOffsetAttribute, ("Offset", $"0x{field.Offset:X}"));
|
||||||
|
|||||||
Reference in New Issue
Block a user