summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhilipp Sehmisch <crush@themanaworld.org>2009-08-19 18:49:33 +0200
committerPhilipp Sehmisch <crush@themanaworld.org>2009-08-19 18:49:33 +0200
commite706c092f3b28ff4e5bd229ce3a00e604828ce89 (patch)
tree731429e9a2ce9a22b216bf2f9dacfe397297c326 /src
parent3327475b675bf94fd827ffd36838baa42a84f11b (diff)
downloadmanaserv-e706c092f3b28ff4e5bd229ce3a00e604828ce89.tar.gz
manaserv-e706c092f3b28ff4e5bd229ce3a00e604828ce89.tar.bz2
manaserv-e706c092f3b28ff4e5bd229ce3a00e604828ce89.tar.xz
manaserv-e706c092f3b28ff4e5bd229ce3a00e604828ce89.zip
Performance improvement of range calculation (suggested by Octalot)
Diffstat (limited to 'src')
-rw-r--r--src/game-server/being.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/game-server/being.cpp b/src/game-server/being.cpp
index e5983ee7..3993154e 100644
--- a/src/game-server/being.cpp
+++ b/src/game-server/being.cpp
@@ -19,7 +19,6 @@
*/
#include <cassert>
-#include <cmath>
#include "game-server/being.hpp"
@@ -242,11 +241,12 @@ void Being::performAttack(Being *target, unsigned range, const Damage &damage)
getType() == OBJECT_CHARACTER)
return;
- // check if target is in range
+ // check if target is in range using the pythagorean theorem
int distx = this->getPosition().x - target->getPosition().x;
int disty = this->getPosition().y - target->getPosition().y;
- int dist = std::sqrt(distx * distx + disty * disty); // pythagoras
- if (range + target->getSize() < dist )
+ int distSquare = (distx * distx + disty * disty);
+ int maxDist = range + target->getSize();
+ if (maxDist * maxDist < distSquare)
return;
mTarget->damage(this, damage);