summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThorbjørn Lindeijer <thorbjorn@lindeijer.nl>2011-03-11 00:10:48 +0100
committerThorbjørn Lindeijer <thorbjorn@lindeijer.nl>2011-03-11 00:13:09 +0100
commit698261f3a4a93f626d222473ef2c4592dedb19c9 (patch)
tree03a2be4b7452509fc3cc51a37f57e560069fb869 /src
parent6108a7f0db9aa356c64d4ffdab055d4a699a70b9 (diff)
downloadmanaserv-698261f3a4a93f626d222473ef2c4592dedb19c9.tar.gz
manaserv-698261f3a4a93f626d222473ef2c4592dedb19c9.tar.bz2
manaserv-698261f3a4a93f626d222473ef2c4592dedb19c9.tar.xz
manaserv-698261f3a4a93f626d222473ef2c4592dedb19c9.zip
Avoid sqrt and double in circle-to-circle collision detection
We can just stick with integers by trading a sqrt for a multiplication. Reviewed-by: Bertram
Diffstat (limited to 'src')
-rw-r--r--src/game-server/collisiondetection.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/game-server/collisiondetection.cpp b/src/game-server/collisiondetection.cpp
index 9aab4c5b..0e1ac288 100644
--- a/src/game-server/collisiondetection.cpp
+++ b/src/game-server/collisiondetection.cpp
@@ -282,8 +282,10 @@ Collision::diskWithCircleSector2(const Point &diskCenter, int diskRadius,
bool Collision::circleWithCircle(const Point &center1, int radius1,
const Point &center2, int radius2)
{
- int distx = center1.x - center2.x;
- int disty = center1.y - center2.y;
- double dist = sqrt((distx * distx) + (disty * disty));
- return (dist < radius1 + radius2);
+ const int touchDistance = radius1 + radius2;
+ const int distX = center1.x - center2.x;
+ const int distY = center1.y - center2.y;
+ const int distSquared = distX * distX + distY * distY;
+
+ return distSquared < touchDistance * touchDistance;
}