void HandleInputPacket(PlayerController inPlayerController, NetIncomingMessage inInputStream)
        {
            uint32_t moveCount = inInputStream.ReadUInt32(2);

            if (moveCount == 0)
            {
                inPlayerController.SetIsLastMoveTimestampDirty(true);
                return;
            }

            for (; moveCount > 0; --moveCount)
            {
                Move move = new Move();
                if (move.Read(inInputStream))
                {
                    //log.InfoFormat("recv move {0}, {1}, {2}, {3}", move.GetDeltaTime(), move.GetInputState(), move.GetTimestamp(), moveCount);
                    //Log.Information("recv move {0}",  move.GetInputState());
                    if (inPlayerController.GetUnprocessedMoveList().AddMoveIfNew(move))
                    {
                        inPlayerController.SetIsLastMoveTimestampDirty(true);

                        //Log.Information($"move list size {inPlayerController.GetUnprocessedMoveList().mMoves.Count}");
                    }
                }
            }
        }
        void HandleInputPacket(ClientProxy inClientProxy, NetIncomingMessage inInputStream)
        {
            Move     move      = new Move();
            uint32_t moveCount = inInputStream.ReadUInt32(2);

            for (; moveCount > 0; --moveCount)
            {
                if (move.Read(inInputStream))
                {
                    //log.InfoFormat("recv move {0}, {1}, {2}, {3}", move.GetDeltaTime(), move.GetInputState(), move.GetTimestamp(), moveCount);
                    if (inClientProxy.GetUnprocessedMoveList().AddMoveIfNew(move))
                    {
                        inClientProxy.SetIsLastMoveTimestampDirty(true);
                    }
                }
            }
        }