Top Down Player Movement

I’m making a top-down shooter, and need some help with player movement.

Basically, I need the player to always move in the same direction, regardless of what angle the player is facing. So when I press W, the player would move towards the black circle, and when I press A, the player moves towards the red circle.

Could anyone offer me some ideas on how to go about this?

I know I need to use a Move hook along with SetForwardSpeed and SetSideSpeed, I just aren’t sure how to calculate what values to give to the functions.

[editline]23rd February 2011[/editline]

Nevermind, done it.

function GM:SetupMove(ply, mv)
mv:SetMoveAngles(Angle(0, 0, 0))