From 7dbc20626e06d6f1d42bf4983f7f21c76b1eb787 Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 8 Sep 2012 15:24:59 -0500 Subject: [PATCH] Core/Entities: Fixed GameObject::FindNearestX for objects with the same coordinates. closes #4581 --- src/server/game/Entities/GameObject/GameObject.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 808cbd9a5e..c28ff21bfa 100755 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1707,6 +1707,11 @@ bool GameObject::IsInRange(float x, float y, float z, float radius) const float dy = y - GetPositionY(); float dz = z - GetPositionZ(); float dist = sqrt(dx*dx + dy*dy); + //! Check if the distance between the 2 objects is 0, can happen if both objects are on the same position. + //! The code below this check wont crash if dist is 0 because 0/0 in float operations is valid, and returns infinite + if (G3D::fuzzyEq(dist, 0.0f)) + return true; + float sinB = dx / dist; float cosB = dy / dist; dx = dist * (cosA * cosB + sinA * sinB);