DLL: Add static array initializer value preview
This commit is contained in:
@@ -63,6 +63,7 @@ namespace Il2CppInspector.Outputs
|
||||
private TypeDef fieldOffsetAttribute;
|
||||
private TypeDef attributeAttribute;
|
||||
private TypeDef metadataOffsetAttribute;
|
||||
private TypeDef metadataPreviewAttribute;
|
||||
private TypeDef tokenAttribute;
|
||||
|
||||
// The namespace for our custom types
|
||||
@@ -115,6 +116,10 @@ namespace Il2CppInspector.Outputs
|
||||
metadataOffsetAttribute.Fields.Add(new FieldDefUser("Offset", stringField, FieldAttributes.Public));
|
||||
metadataOffsetAttribute.AddDefaultConstructor(attributeCtorRef);
|
||||
|
||||
metadataPreviewAttribute = createAttribute("MetadataPreviewAttribute");
|
||||
metadataPreviewAttribute.Fields.Add(new FieldDefUser("Data", stringField, FieldAttributes.Public));
|
||||
metadataPreviewAttribute.AddDefaultConstructor(attributeCtorRef);
|
||||
|
||||
tokenAttribute = createAttribute("TokenAttribute");
|
||||
tokenAttribute.Fields.Add(new FieldDefUser("Token", stringField, FieldAttributes.Public));
|
||||
tokenAttribute.AddDefaultConstructor(attributeCtorRef);
|
||||
@@ -203,9 +208,17 @@ namespace Il2CppInspector.Outputs
|
||||
mField.Constant = new ConstantUser(field.DefaultValue);
|
||||
|
||||
// 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}"));
|
||||
|
||||
// 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
|
||||
if (!field.IsLiteral && !field.IsStatic && field.Offset != 0)
|
||||
mField.AddAttribute(module, fieldOffsetAttribute, ("Offset", $"0x{field.Offset:X}"));
|
||||
@@ -215,7 +228,7 @@ namespace Il2CppInspector.Outputs
|
||||
|
||||
// Add custom attribute attributes
|
||||
foreach (var ca in field.CustomAttributes)
|
||||
AddCustomAttribute(module, mField, ca);
|
||||
AddCustomAttribute(module, mField, ca);
|
||||
|
||||
mType.Fields.Add(mField);
|
||||
return mField;
|
||||
|
||||
Reference in New Issue
Block a user