/// <summary> /// Creates a new <see cref="TpsRecord"/>. This is typically done on the first of a list. /// </summary> /// <param name="rx">The data to read from.</param> public TpsRecord(RandomAccess rx) { if (rx == null) { throw new ArgumentNullException(nameof(rx)); } Flags = rx.Byte(); if ((Flags & 0xC0) != 0xC0) { throw new ArgumentException($"Cannot construct a TpsRecord without record lengths (0x{rx.ToHex2(Flags)})"); } RecordLength = rx.ShortLE(); HeaderLength = rx.ShortLE(); Data = rx.Read(RecordLength); BuildHeader(); }