And instead of ControlState, we should probably pass a direction vector and force player to convert it's lat/lon to a directionality vector before calling this function.