public void TestSerialzation()
        {
            //Clientside create command, send to server
            var writer = new LiteNetLibSerializer();

            new TestCommand();

            //Serverside, gather input
            var writer2 = new LiteNetLibSerializer();
            var packer  = new InputPacker();

            packer.AddInput(writer.Data);
            packer.Pack(writer2);

            //Clientside, receive input
            var reader = new LiteNetLibDeserializer();

            reader.SetSource(writer2.Data);

            var messageTag = reader.GetByte();

            messageTag.ShouldBe((byte)MessageTag.Frame);

            var commands = new InputParser(r => new TestCommand()).DeserializeInput(reader);

            commands.ShouldNotBeNull();
            commands.Length.ShouldBe(1);
            commands.First().ShouldBeOfType <TestCommand>();
        }
    public void SendHashCode(HashCode checksum)
    {
        var writer = new LiteNetLibSerializer();

        writer.Put((byte)MessageTag.Checksum);
        checksum.Serialize(writer);
        _client.FirstPeer.Send(writer.Data, 0, writer.Length, DeliveryMethod.ReliableOrdered);
    }
    public void SendInput(CommandTag commandTag, ISerializable message)
    {
        var writer = new LiteNetLibSerializer();

        writer.Put((byte)MessageTag.Input);
        writer.Put((ushort)commandTag);
        message.Serialize(writer);

        Debug.Log(writer.Length + " bytes");
        _client.FirstPeer.Send(writer.Data, 0, writer.Length, DeliveryMethod.ReliableOrdered);
    }