예제 #1
0
        /// <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);
        }
예제 #2
0
 public Packet(PacketType packetType, PacketSubtype subtype, float clock)
 {
     this.packetType = packetType;
     this.subtype    = subtype;
     this.clock      = clock;
 }