mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 10:05:32 +01:00
*Fix the calculation of isInLine.
--HG-- branch : trunk
This commit is contained in:
@@ -1153,6 +1153,13 @@ float WorldObject::GetDistance2d(float x, float y) const
|
||||
return ( dist > 0 ? dist : 0);
|
||||
}
|
||||
|
||||
float WorldObject::GetExactDistance2d(const float x, const float y) const
|
||||
{
|
||||
float dx = GetPositionX() - x;
|
||||
float dy = GetPositionY() - y;
|
||||
return sqrt((dx*dx) + (dy*dy));
|
||||
}
|
||||
|
||||
float WorldObject::GetDistance(const float x, const float y, const float z) const
|
||||
{
|
||||
float dx = GetPositionX() - x;
|
||||
|
||||
@@ -438,6 +438,7 @@ class TRINITY_DLL_SPEC WorldObject : public Object
|
||||
float GetDistanceSq(const float &x, const float &y, const float &z) const;
|
||||
float GetDistance2d(const WorldObject* obj) const;
|
||||
float GetDistance2d(const float x, const float y) const;
|
||||
float GetExactDistance2d(const float x, const float y) const;
|
||||
float GetDistanceZ(const WorldObject* obj) const;
|
||||
bool IsInMap(const WorldObject* obj) const { return GetMapId()==obj->GetMapId() && GetInstanceId()==obj->GetInstanceId(); }
|
||||
bool IsWithinDistInMap(const WorldObject* obj, const float dist2compare, const bool is3D = true) const;
|
||||
|
||||
@@ -3525,10 +3525,9 @@ bool Unit::isInBack(Unit const* target, float distance, float arc) const
|
||||
bool Unit::isInLine(Unit const* target, float distance) const
|
||||
{
|
||||
if(!HasInArc(M_PI, target) || !IsWithinDistInMap(target, distance)) return false;
|
||||
float width = (GetObjectSize() / 2 + target->GetObjectSize()) / 2;
|
||||
float angle = GetAngle(target);
|
||||
angle -= GetOrientation();
|
||||
return abs(sin(angle)) * distance < width;
|
||||
float width = GetObjectSize() + target->GetObjectSize() * 0.5f;
|
||||
float angle = GetAngle(target) - GetOrientation();
|
||||
return abs(sin(angle)) * GetExactDistance2d(target->GetPositionX(), target->GetPositionY()) < width;
|
||||
}
|
||||
|
||||
bool Unit::isInAccessiblePlaceFor(Creature const* c) const
|
||||
|
||||
Reference in New Issue
Block a user