diff options
author | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2011-03-11 00:10:48 +0100 |
---|---|---|
committer | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2011-03-11 00:13:09 +0100 |
commit | 698261f3a4a93f626d222473ef2c4592dedb19c9 (patch) | |
tree | 03a2be4b7452509fc3cc51a37f57e560069fb869 /src/game-server | |
parent | 6108a7f0db9aa356c64d4ffdab055d4a699a70b9 (diff) | |
download | manaserv-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/game-server')
-rw-r--r-- | src/game-server/collisiondetection.cpp | 10 |
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 ¢er1, int radius1, const Point ¢er2, 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; } |