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;
        }