added strafing support. involved refactoring 'direction' (1, 0, -1) to 'direction' (0, 2PI) and 'motion' (1, 0).