- float dx=Sector::current()->player->get_pos().x-position.x;
- float dy=Sector::current()->player->get_pos().y-position.y;
- float sqrdistance=dx*dx+dy*dy;
+ float px,py;
+ float rx,ry;
+
+ // Player position
+
+ px=Sector::current()->player->get_pos().x;
+ py=Sector::current()->player->get_pos().y;
+
+ // Relate to which point in the area
+
+ rx=px<position.x?position.x:
+ (px<position.x+dimension.x?px:position.x+dimension.x);
+ ry=py<position.y?position.y:
+ (py<position.y+dimension.y?py:position.y+dimension.y);
+
+ // calculate square of distance
+
+ float sqrdistance=(px-rx)*(px-rx)+(py-ry)*(py-ry);