/// <summary> /// Reads packet from the current position. /// </summary> public Packet ReadPacket() { int payloadLength; try { payloadLength = reader.ReadInt32(); } catch (EndOfStreamException) { return(null); } // Read common properties. PacketType packetType = (PacketType)reader.ReadInt32(); float clock = reader.ReadSingle(); byte[] payload = reader.ReadBytes(payloadLength); // read payload // Read subtype if possible. PacketSubtype subtype = PacketSubtype.None; if ((packetType == PacketType.EntityProperty) || (packetType == PacketType.EntityMethod)) { subtype = (PacketSubtype)BitConverter.ToInt32(payload, 4); } Packet packet = new Packet(packetType, subtype, clock); ReadProperties(packet, payload); // read packet properties return(packet); }
public Packet(PacketType packetType, PacketSubtype subtype, float clock) { this.packetType = packetType; this.subtype = subtype; this.clock = clock; }