public void Read(SR1_Reader reader, SR1_Structure parent, string name) { Start = (uint)reader.BaseStream.Position; End = (uint)reader.BaseStream.Position; Parent = parent; Name = name; if (Parent == null) { reader.File._Structures.Add(Start, this); } else { Parent.MembersRead.Add(this); } try { ReadMembers(reader, parent); if (_padding != null && reader.PlanMarkerList != null && reader.PlanMarkerList.Offset != 0 && reader.BaseStream.Position == reader.PlanMarkerList.Offset) { _padding = null; } if (_padding != null) { uint mod = (uint)reader.BaseStream.Position % (uint)_padding.Length; if (mod > 0) { uint padding = (uint)_padding.Length - mod; for (int i = 0; i < padding; i++) { _padding[i] = reader.ReadByte(); } } } End = (uint)reader.BaseStream.Position; ReadReferences(reader, parent); } catch (Exception exception) { reader.LogError(GetTypeName(true) + " (0x" + Start.ToString("X8") + "):\r\n" + exception.Message); } reader.BaseStream.Position = End; }
public void ReadTemp(SR1_Reader reader) { Start = (uint)reader.BaseStream.Position; End = (uint)reader.BaseStream.Position; Parent = null; Name = ""; try { ReadMembers(reader, null); End = (uint)reader.BaseStream.Position; } catch (Exception exception) { reader.LogError(exception.Message); } reader.BaseStream.Position = End; }