2D steering behaviors in C++