diff options
author | megamage <none@none> | 2009-05-17 10:09:06 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-05-17 10:09:06 -0500 |
commit | d99e66d93125f991c638c192f6322df915cefbd9 (patch) | |
tree | cf5a250e4839afab8a8cb8bde7db88244faca610 /src/game/Object.cpp | |
parent | 98e32a041d08734c3ddbedf527491ec2bdee76b0 (diff) |
[7836] Fixes for distance range checks. Author: VladimirMangos
* ignore 0.0f min range limit (this correct case when 2 object overlapped)
Also use int32 for temporary store GetSessionDbLocaleIndex result.
--HG--
branch : trunk
Diffstat (limited to 'src/game/Object.cpp')
-rw-r--r-- | src/game/Object.cpp | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/src/game/Object.cpp b/src/game/Object.cpp index 5c186921524..634702daab1 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -1311,9 +1311,13 @@ bool WorldObject::IsInRange(WorldObject const* obj, float minRange, float maxRan float sizefactor = GetObjectSize() + obj->GetObjectSize(); - float mindist = minRange + sizefactor; - if(distsq < mindist * mindist) - return false; + // check only for real range + if(minRange > 0.0f) + { + float mindist = minRange + sizefactor; + if(distsq < mindist * mindist) + return false; + } float maxdist = maxRange + sizefactor; return distsq < maxdist * maxdist; @@ -1327,9 +1331,13 @@ bool WorldObject::IsInRange2d(float x, float y, float minRange, float maxRange) float sizefactor = GetObjectSize(); - float mindist = minRange + sizefactor; - if(distsq < mindist * mindist) - return false; + // check only for real range + if(minRange > 0.0f) + { + float mindist = minRange + sizefactor; + if(distsq < mindist * mindist) + return false; + } float maxdist = maxRange + sizefactor; return distsq < maxdist * maxdist; @@ -1344,9 +1352,13 @@ bool WorldObject::IsInRange3d(float x, float y, float z, float minRange, float m float sizefactor = GetObjectSize(); - float mindist = minRange + sizefactor; - if(distsq < mindist * mindist) - return false; + // check only for real range + if(minRange > 0.0f) + { + float mindist = minRange + sizefactor; + if(distsq < mindist * mindist) + return false; + } float maxdist = maxRange + sizefactor; return distsq < maxdist * maxdist; |