public float ReadFloat() { var a = A.ReadFloat(); var b = B.ReadFloat(); Verify(a, b); return(a); }
public void Parse(IBitStream bitstream) { while (!bitstream.ChunkFinished) { var desc = bitstream.ReadProtobufVarInt(); var wireType = desc & 7; var fieldnum = desc >> 3; if (wireType == 2) { if (fieldnum == 2) { VarName = bitstream.ReadProtobufString(); } else if (fieldnum == 5) { DtName = bitstream.ReadProtobufString(); } else throw new InvalidDataException("yes I know we should drop this but we" + "probably want to know that they added a new big field"); } else if (wireType == 0) { var val = bitstream.ReadProtobufVarInt(); switch (fieldnum) { case 1: Type = val; break; case 3: Flags = val; break; case 4: Priority = val; break; case 6: NumElements = val; break; case 9: NumBits = val; break; default: // silently drop break; } } else if (wireType == 5) { var val = bitstream.ReadFloat(); switch (fieldnum) { case 7: LowValue = val; break; case 8: HighValue = val; break; default: // silently drop break; } } else throw new InvalidDataException(); } }
static bool DecodeSpecialFloat(SendTableProperty prop, IBitStream reader, out float result) { if (prop.Flags.HasFlagFast(SendPropertyFlags.Coord)) { result = ReadBitCoord(reader); return(true); } else if (prop.Flags.HasFlagFast(SendPropertyFlags.CoordMp)) { result = ReadBitCoordMP(reader, false, false); return(true); } else if (prop.Flags.HasFlagFast(SendPropertyFlags.CoordMpLowPrecision)) { result = ReadBitCoordMP(reader, false, true); return(true); } else if (prop.Flags.HasFlagFast(SendPropertyFlags.CoordMpIntegral)) { result = ReadBitCoordMP(reader, true, false); return(true); } else if (prop.Flags.HasFlagFast(SendPropertyFlags.NoScale)) { result = reader.ReadFloat(); return(true); } else if (prop.Flags.HasFlagFast(SendPropertyFlags.Normal)) { result = ReadBitNormal(reader); return(true); } else if (prop.Flags.HasFlagFast(SendPropertyFlags.CellCoord)) { result = ReadBitCellCoord(reader, prop.NumberOfBits, false, false); return(true); } else if (prop.Flags.HasFlagFast(SendPropertyFlags.CellCoordLowPrecision)) { result = ReadBitCellCoord(reader, prop.NumberOfBits, true, false); return(true); } else if (prop.Flags.HasFlagFast(SendPropertyFlags.CellCoordIntegral)) { result = ReadBitCellCoord(reader, prop.NumberOfBits, false, true); return(true); } result = 0; return(false); }
} // length of sigondata in bytes public static DemoHeader ParseFrom(IBitStream reader) { return(new DemoHeader { Filestamp = reader.ReadCString(8), Protocol = reader.ReadSignedInt(32), NetworkProtocol = reader.ReadSignedInt(32), ServerName = reader.ReadCString(MAX_OSPATH), ClientName = reader.ReadCString(MAX_OSPATH), MapName = reader.ReadCString(MAX_OSPATH), GameDirectory = reader.ReadCString(MAX_OSPATH), PlaybackTime = reader.ReadFloat(), PlaybackTicks = reader.ReadSignedInt(32), PlaybackFrames = reader.ReadSignedInt(32), SignonLength = reader.ReadSignedInt(32) }); }
public static DemoHeader ParseFrom(IBitStream reader) { return(new DemoHeader { Filestamp = reader.ReadCString(8), Protocol = reader.ReadSignedInt(32), NetworkProtocol = Math.Abs(reader.ReadSignedInt(32)), ServerName = reader.ReadCString(MaxOspath), ClientName = reader.ReadCString(MaxOspath), MapName = reader.ReadCString(MaxOspath), GameDirectory = reader.ReadCString(MaxOspath), PlaybackTime = Math.Abs(reader.ReadFloat()), PlaybackTicks = Math.Abs(reader.ReadSignedInt(32)), EventCount = Math.Abs(reader.ReadSignedInt(32)), SignonLength = Math.Abs(reader.ReadSignedInt(32)) }); }
public int SignonLength { get; private set; } // length of sigondata in bytes public static DemoHeader ParseFrom(IBitStream reader) { return new DemoHeader() { Filestamp = reader.ReadCString(8), Protocol = reader.ReadSignedInt(32), NetworkProtocol = reader.ReadSignedInt(32), ServerName = reader.ReadCString(MAX_OSPATH), ClientName = reader.ReadCString(MAX_OSPATH), MapName = reader.ReadCString(MAX_OSPATH), GameDirectory = reader.ReadCString(MAX_OSPATH), PlaybackTime = reader.ReadFloat(), PlaybackTicks = reader.ReadSignedInt(32), PlaybackFrames = reader.ReadSignedInt(32), SignonLength = reader.ReadSignedInt(32), }; }
public static Split Parse(IBitStream reader) { return(new Split { Flags = reader.ReadSignedInt(32), viewOrigin = new Vector3(reader.ReadFloat(), reader.ReadFloat(), reader.ReadFloat()), viewAngles = QAngle.Parse(reader), localViewAngles = QAngle.Parse(reader), viewOrigin2 = new Vector3(reader.ReadFloat(), reader.ReadFloat(), reader.ReadFloat()), viewAngles2 = QAngle.Parse(reader), localViewAngles2 = QAngle.Parse(reader), }); }
public void Parse(IBitStream bitstream) { while (!bitstream.ChunkFinished) { var desc = bitstream.ReadProtobufVarInt(); var wireType = desc & 7; var fieldnum = desc >> 3; if (wireType == 2) { if (fieldnum == 2) { VarName = bitstream.ReadProtobufString(); } else if (fieldnum == 5) { DtName = bitstream.ReadProtobufString(); } else { throw new InvalidDataException("yes I know we should drop this but we" + "probably want to know that they added a new big field"); } } else if (wireType == 0) { var val = bitstream.ReadProtobufVarInt(); switch (fieldnum) { case 1: Type = val; break; case 3: Flags = val; break; case 4: Priority = val; break; case 6: NumElements = val; break; case 9: NumBits = val; break; } } else if (wireType == 5) { var val = bitstream.ReadFloat(); switch (fieldnum) { case 7: LowValue = val; break; case 8: HighValue = val; break; } } else { throw new InvalidDataException(); } } }
public void Parse(IBitStream bitstream, DemoParser parser) { Keys = new List <object>(); while (!bitstream.ChunkFinished) { var desc = bitstream.ReadProtobufVarInt(); var wireType = desc & 7; var fieldnum = desc >> 3; if (wireType == 2 && fieldnum == 1) { EventName = bitstream.ReadProtobufString(); } else if (wireType == 0 && fieldnum == 2) { EventId = bitstream.ReadProtobufVarInt(); } else if (wireType == 2 && fieldnum == 3) { bitstream.BeginChunk(bitstream.ReadProtobufVarInt() * 8); /* * Hope and pray that gaben is once again nice to us and * sends 'type' first, then the respective member, then NOTHING. */ desc = bitstream.ReadProtobufVarInt(); wireType = desc & 7; fieldnum = desc >> 3; if (wireType != 0 || fieldnum != 1) { throw new InvalidDataException("Lord Gaben wasn't nice to us :/"); } var typeMember = bitstream.ReadProtobufVarInt(); desc = bitstream.ReadProtobufVarInt(); wireType = desc & 7; fieldnum = desc >> 3; if (fieldnum != typeMember + 1) { throw new InvalidDataException("Lord Gaben wasn't nice to us :/ (srsly wtf!?)"); } switch (typeMember) { case 1: // string if (wireType != 2) { throw new InvalidDataException("proto definition differs"); } Keys.Add(bitstream.ReadProtobufString()); break; case 2: // float if (wireType != 5) { throw new InvalidDataException("proto definition differs"); } Keys.Add(bitstream.ReadFloat()); break; case 3: // long case 4: // short case 5: // byte if (wireType != 0) { throw new InvalidDataException("proto definition differs"); } Keys.Add(bitstream.ReadProtobufVarInt()); break; case 6: // bool if (wireType != 0) { throw new InvalidDataException("proto definition differs"); } Keys.Add(bitstream.ReadProtobufVarInt() != 0); break; default: throw new InvalidDataException("Looks like they introduced a new type"); } if (!bitstream.ChunkFinished) { throw new InvalidDataException("Lord Gaben tricked us! D:"); } bitstream.EndChunk(); } else { throw new InvalidDataException(); } } GameEventHandler.Apply(this, parser); }
public void Parse(IBitStream bitstream, DemoParser parser) { while (!bitstream.ChunkFinished) { var desc = bitstream.ReadProtobufVarInt(); var wireType = desc & 7; var fieldnum = desc >> 3; if (wireType == 5) { if (fieldnum == 14) { parser.TickInterval = bitstream.ReadFloat(); } else { var val = bitstream.ReadInt(32); switch (fieldnum) { case 8: MapCrc = val; break; case 9: ClientCrc = val; break; case 10: StringTableCrc = val; break; } } } else if (wireType == 2) { var val = bitstream.ReadProtobufString(); switch (fieldnum) { case 15: GameDir = val; break; case 16: MapName = val; break; case 17: MapGroupName = val; break; case 18: SkyName = val; break; case 19: HostName = val; break; } } else if (wireType == 0) { var val = bitstream.ReadProtobufVarInt(); var boolval = (val == 0) ? false : true; switch (fieldnum) { case 1: Protocol = val; break; case 2: ServerCount = val; break; case 3: IsDedicated = boolval; break; case 4: IsOfficialValveServer = boolval; break; case 5: IsHltv = boolval; break; case 6: IsReplay = boolval; break; case 7: COs = val; break; case 11: MaxClients = val; break; case 12: MaxClasses = val; break; case 13: PlayerSlot = val; break; case 20: PublicIp = (uint)val; break; case 21: IsRedirectingToProxyRelay = boolval; break; case 22: UgcMapId = (uint)val; break; } } } }
static bool DecodeSpecialFloat(SendTableProperty prop, IBitStream reader, out float result) { if (prop.Flags.HasFlagFast(SendPropertyFlags.Coord)) { result = ReadBitCoord(reader); return true; } else if (prop.Flags.HasFlagFast(SendPropertyFlags.CoordMp)) { result = ReadBitCoordMP(reader, false, false); return true; } else if (prop.Flags.HasFlagFast(SendPropertyFlags.CoordMpLowPrecision)) { result = ReadBitCoordMP(reader, false, true); return true; } else if (prop.Flags.HasFlagFast(SendPropertyFlags.CoordMpIntegral)) { result = ReadBitCoordMP(reader, true, false); return true; } else if (prop.Flags.HasFlagFast(SendPropertyFlags.NoScale)) { result = reader.ReadFloat(); return true; } else if (prop.Flags.HasFlagFast(SendPropertyFlags.Normal)) { result = ReadBitNormal(reader); return true; } else if (prop.Flags.HasFlagFast(SendPropertyFlags.CellCoord)) { result = ReadBitCellCoord(reader, prop.NumberOfBits, false, false); return true; } else if (prop.Flags.HasFlagFast(SendPropertyFlags.CellCoordLowPrecision)) { result = ReadBitCellCoord(reader, prop.NumberOfBits, true, false); return true; } else if (prop.Flags.HasFlagFast(SendPropertyFlags.CellCoordIntegral)) { result = ReadBitCellCoord(reader, prop.NumberOfBits, false, true); return true; } result = 0; return false; }
public void Parse(IBitStream bitstream, DemoParser parser) { Keys = new List<object>(); while (!bitstream.ChunkFinished) { var desc = bitstream.ReadProtobufVarInt(); var wireType = desc & 7; var fieldnum = desc >> 3; if ((wireType == 2) && (fieldnum == 1)) { EventName = bitstream.ReadProtobufString(); } else if ((wireType == 0) && (fieldnum == 2)) { EventId = bitstream.ReadProtobufVarInt(); } else if ((wireType == 2) && (fieldnum == 3)) { bitstream.BeginChunk(bitstream.ReadProtobufVarInt() * 8); /* * Hope and pray that gaben is once again nice to us and * sends 'type' first, then the respective member, then NOTHING. */ desc = bitstream.ReadProtobufVarInt(); wireType = desc & 7; fieldnum = desc >> 3; if ((wireType != 0) || (fieldnum != 1)) throw new InvalidDataException("Lord Gaben wasn't nice to us :/"); var typeMember = bitstream.ReadProtobufVarInt(); desc = bitstream.ReadProtobufVarInt(); wireType = desc & 7; fieldnum = desc >> 3; if (fieldnum != (typeMember + 1)) throw new InvalidDataException("Lord Gaben wasn't nice to us :/ (srsly wtf!?)"); switch (typeMember) { case 1: // string if (wireType != 2) throw new InvalidDataException("proto definition differs"); Keys.Add(bitstream.ReadProtobufString()); break; case 2: // float if (wireType != 5) throw new InvalidDataException("proto definition differs"); Keys.Add(bitstream.ReadFloat()); break; case 3: // long case 4: // short case 5: // byte if (wireType != 0) throw new InvalidDataException("proto definition differs"); Keys.Add(bitstream.ReadProtobufVarInt()); break; case 6: // bool if (wireType != 0) throw new InvalidDataException("proto definition differs"); Keys.Add(bitstream.ReadProtobufVarInt() != 0); break; default: throw new InvalidDataException("Looks like they introduced a new type"); } if (!bitstream.ChunkFinished) throw new InvalidDataException("Lord Gaben tricked us! D:"); bitstream.EndChunk(); } else throw new InvalidDataException(); } GameEventHandler.Apply(this, parser); }
public static Vector Parse(IBitStream reader) { return new Vector { X = reader.ReadFloat(), Y = reader.ReadFloat(), Z = reader.ReadFloat(), }; }
public static QAngle Parse(IBitStream reader) { return new QAngle { X = reader.ReadFloat(), Y = reader.ReadFloat(), Z = reader.ReadFloat(), }; }