public static BasicAttackDataPacket ReadBasicAttackDataPacket(this PacketReader reader)
        {
            var attack = new BasicAttackDataPacket();

            attack.TargetNetID    = reader.ReadNetID();
            attack.TargetPosition = reader.ReadVector3();
            attack.ExtraTime      = (sbyte)(reader.ReadSByte() - 128);
            attack.MissileNextID  = reader.ReadNetID();
            attack.AttackSlot     = reader.ReadByte();
            return(attack);
        }
 public static void WriteBasicAttackDataPacket(this PacketWriter writer, BasicAttackDataPacket attack)
 {
     if (attack == null)
     {
         attack = new BasicAttackDataPacket();
     }
     writer.WriteNetID(attack.TargetNetID);
     writer.WriteVector3(attack.TargetPosition);
     writer.WriteSByte((sbyte)(attack.ExtraTime + 128));
     writer.WriteNetID(attack.MissileNextID);
     writer.WriteByte(attack.AttackSlot);
 }