public void Link(Package package, uint ownOffset, uint childOffset, uint childSize) { package.FileOffset = ownOffset + ObjectIndex.GetSizeFor(package) + 2; if (package.Header.Flags & PackageFlags.BuiltinOuterIndexFields) { package.FileOffset += ObjectIndex.GetSizeFor(package); } package.WriteUInt32(childSize); package.WriteUInt32(childOffset); }
public void Deserialize(Package package) { Index = ObjectIndex.Deserialize(package); TypeIndex = package.ReadUInt16(); if (package.Header.Flags & PackageFlags.BuiltinOuterIndexFields) { OuterIndex = ObjectIndex.Deserialize(package); } SizeInFile = package.ReadUInt32(); OffsetInFile = package.ReadUInt32(); LinkedObject = package.GetTypedObjectAt(OffsetInFile, TypeIndex); }
public ObjectTableEntry GetObject(ObjectIndex index) => _elements[(int)index.value];