controller implementations now emit their changes, player object keeps track of the combined movement direction as well as the external movement direction
player is responsible for sending the movement change data