@@ -43,6 +43,8 @@ public class Metadata : BinaryObjectStreamReader
4343 public ImmutableArray < uint > VTableMethodIndices { get ; set ; }
4444 public string [ ] StringLiterals { get ; set ; }
4545
46+ public ImmutableArray < Il2CppInlineArrayLength > TypeInlineArrays { get ; set ; }
47+
4648 public int FieldAndParameterDefaultValueDataOffset => Version >= MetadataVersions . V380
4749 ? Header . FieldAndParameterDefaultValueData . Offset
4850 : Header . FieldAndParameterDefaultValueDataOffset ;
@@ -95,7 +97,7 @@ private void Initialize()
9597 // Set object versioning for Bin2Object from metadata version
9698 Version = new StructVersion ( Header . Version ) ;
9799
98- if ( Version < MetadataVersions . V160 || Version > MetadataVersions . V390 ) {
100+ if ( Version < MetadataVersions . V160 || Version > MetadataVersions . V1040 ) {
99101 throw new InvalidOperationException ( $ "The supplied metadata file is not of a supported version ({ Header . Version } ).") ;
100102 }
101103
@@ -149,6 +151,18 @@ static int GetIndexSize(int elementCount)
149151 fullTag += $ "_{ ParameterIndex . TagPrefix } { parameterIndexSize } ";
150152 }
151153
154+ if ( Version >= MetadataVersions . V1040 )
155+ {
156+ var eventIndexSize = GetIndexSize ( Header . Events . Count ) ;
157+ var interfacesIndexSize = GetIndexSize ( Header . InterfaceOffsets . Count ) ;
158+ var nestedTypeIndexSize = GetIndexSize ( Header . NestedTypes . Count ) ;
159+ var propertyIndexSize = GetIndexSize ( Header . Properties . Count ) ;
160+ fullTag += $ "_{ EventIndex . TagPrefix } { eventIndexSize } "
161+ + $ "_{ InterfacesIndex . TagPrefix } { interfacesIndexSize } "
162+ + $ "_{ NestedTypeIndex . TagPrefix } { nestedTypeIndexSize } "
163+ + $ "_{ PropertyIndex . TagPrefix } { propertyIndexSize } ";
164+ }
165+
152166 Version = new StructVersion ( Version . Major , Version . Minor , fullTag ) ;
153167 }
154168
@@ -259,6 +273,11 @@ static int GetIndexSize(int elementCount)
259273 Header . AttributeDataRangeSize , Header . AttributeDataRanges ) ;
260274 }
261275
276+ if ( Version >= MetadataVersions . V1040 )
277+ {
278+ TypeInlineArrays = ReadMetadataArray < Il2CppInlineArrayLength > ( 0 , 0 , Header . TypeInlineArrays ) ;
279+ }
280+
262281 // Get all metadata strings
263282 var pluginGetStringsResult = PluginHooks . GetStrings ( this ) ;
264283 if ( pluginGetStringsResult . IsDataModified && ! pluginGetStringsResult . IsInvalid )
0 commit comments