diff --git a/src/game/MapManager.h b/src/game/MapManager.h index 2d80bbe04..d1d37e696 100644 --- a/src/game/MapManager.h +++ b/src/game/MapManager.h @@ -119,7 +119,7 @@ class MANGOS_DLL_DECL MapManager : public MaNGOS::SingletonGetPositionX(), obj->GetPositionY() ); + if (!obj) + return 0.0f; + + MANGOS_ASSERT(obj != this); + + return GetAngle(obj->GetPositionX(), obj->GetPositionY()); } // Return angle in range 0..2*pi -float WorldObject::GetAngle( const float x, const float y ) const +float WorldObject::GetAngle(const float x, const float y) const { float dx = x - GetPositionX(); float dy = y - GetPositionY(); - float ang = atan2(dy, dx); + float ang = atan2(dy, dx); // returns value between -Pi..Pi ang = (ang >= 0) ? ang : 2 * M_PI_F + ang; return ang; } @@ -1205,7 +1209,7 @@ float WorldObject::GetAngle( const float x, const float y ) const bool WorldObject::HasInArc(const float arcangle, const WorldObject* obj) const { // always have self in arc - if(obj == this) + if (obj == this) return true; float arc = arcangle; @@ -1213,12 +1217,12 @@ bool WorldObject::HasInArc(const float arcangle, const WorldObject* obj) const // move arc to range 0.. 2*pi arc = MapManager::NormalizeOrientation(arc); - float angle = GetAngle( obj ); + float angle = GetAngle(obj); angle -= m_position.o; // move angle to range -pi ... +pi angle = MapManager::NormalizeOrientation(angle); - if(angle > M_PI_F) + if (angle > M_PI_F) angle -= 2.0f*M_PI_F; float lborder = -1 * (arc/2.0f); // in range -pi..0 @@ -1581,7 +1585,7 @@ namespace MaNGOS { public: NearUsedPosDo(WorldObject const& obj, WorldObject const* searcher, float absAngle, ObjectPosSelector& selector) - : i_object(obj), i_searcher(searcher), i_absAngle(absAngle), i_selector(selector) {} + : i_object(obj), i_searcher(searcher), i_absAngle(MapManager::NormalizeOrientation(absAngle)), i_selector(selector) {} void operator()(Corpse*) const {} void operator()(DynamicObject*) const {} @@ -1635,10 +1639,10 @@ namespace MaNGOS float angle = i_object.GetAngle(u) - i_absAngle; - // move angle to range -pi ... +pi - while (angle > M_PI_F) + // move angle to range -pi ... +pi, range before is -2Pi..2Pi + if (angle > M_PI_F) angle -= 2.0f * M_PI_F; - while (angle < -M_PI_F) + else if (angle < -M_PI_F) angle += 2.0f * M_PI_F; i_selector.AddUsedArea(u->GetObjectBoundingRadius(), angle, dist2d); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index ec7bfe940..92ec5945a 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "11881" + #define REVISION_NR "11882" #endif // __REVISION_NR_H__