internal static void FromBinaryReader(LoxStatFile loxStatFile, BinaryReader reader) { var list = loxStatFile.DataPoints; var valueCount = loxStatFile.ValueCount; int index = 0; while (true) { var bytes = reader.ReadBytes(4); if (bytes.Length == 0) { return; //End of file } var dataPoint = new LoxStatDataPoint { LoxStatFile = loxStatFile, Index = index++, }; list.Add(dataPoint); dataPoint.ObjectUidPart1 = BitConverter.ToUInt16(bytes, 0); dataPoint.ObjectUidPart2 = BitConverter.ToUInt16(bytes, 2); dataPoint.TimestampOffset = reader.ReadUInt32(); dataPoint.Values = new double[valueCount]; for (int i = 0; i < valueCount; i++) { dataPoint.Values[i] = reader.ReadDouble(); } dataPoint.Padding = reader.ReadBytes( loxStatFile.GetPaddingLength(8 + valueCount * 8)); } }
public static LoxStatFile Load(string fileName, bool headerOnly = false) { var loxStatFile = new LoxStatFile(); loxStatFile.FileName = fileName; try { using (var reader = new BinaryReader(File.Open(fileName, FileMode.Open))) { loxStatFile.ValueCount = reader.ReadUInt16(); loxStatFile.Unknown0x02 = reader.ReadUInt16(); loxStatFile.Unknown0x04 = reader.ReadUInt32(); loxStatFile.TextLength = reader.ReadInt32(); loxStatFile.TextBytes = reader.ReadBytes(loxStatFile.TextLength); loxStatFile.TextTerminator = reader.ReadByte(); loxStatFile.Padding = reader.ReadBytes( loxStatFile.GetPaddingLength(13 + loxStatFile.TextLength)); var dataPoints = new List <LoxStatDataPoint>(); loxStatFile.DataPoints = dataPoints; if (!headerOnly) { LoxStatDataPoint.FromBinaryReader(loxStatFile, reader); } } } catch (Exception ex) { loxStatFile.LoadException = ex; } return(loxStatFile); }