public static Packet GetPacket( byte[] data )
        {
            Packet packet = null;

            using ( var ms = new MemoryStream( data ) )
            using ( var br = new BinaryReader( ms, Encoding.UTF8 ) )
            {
                int channel = br.ReadInt32();

                switch ( channel )
                {
                    case -1:
                        packet = GetOOBPacket( data );
                        break;

                    case -2:
                        break; // todo: split packet

                    default:
                        packet = new NetMessagePacket();
                        break;
                }

                if ( packet == null )
                {
                    DebugLog.WriteLine( "PacketFactory", "Recieved unknown packet!" );
                    Debugger.Break();

                    return null;
                }

                ms.Seek( 0, SeekOrigin.Begin );
                packet.Deserialize( ms );
            }

            return packet;
        }
 void HandleNetPacket( NetMessagePacket packet )
 {
 }