aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Object
diff options
context:
space:
mode:
authorxinef1 <w.szyszko2@gmail.com>2017-02-06 01:10:15 +0100
committerariel- <ariel-@users.noreply.github.com>2017-02-05 21:10:15 -0300
commitc6060dd0c511ddad3cb1f0423aa9ccf2de7aedec (patch)
treef418ab2a2b7f12bf5384e8653eeb3481370108b6 /src/server/game/Entities/Object
parentd06391d0628ffbf43da471c83653853b0926b4ab (diff)
Core/Spells: Remade trajectory target selection (#19048)
* Remade trajectory target selection * Added possibility to apply conditions to trajectory spells * Properly recalculate delay time if CMSG_UPDATE_PROJECTILE_POSITION is received
Diffstat (limited to 'src/server/game/Entities/Object')
-rw-r--r--src/server/game/Entities/Object/Position.cpp3
-rw-r--r--src/server/game/Entities/Object/Position.h2
2 files changed, 3 insertions, 2 deletions
diff --git a/src/server/game/Entities/Object/Position.cpp b/src/server/game/Entities/Object/Position.cpp
index c9e6ea6eee8..0fdbaf8e008 100644
--- a/src/server/game/Entities/Object/Position.cpp
+++ b/src/server/game/Entities/Object/Position.cpp
@@ -159,11 +159,12 @@ bool Position::HasInArc(float arc, const Position* obj, float border) const
return ((angle >= lborder) && (angle <= rborder));
}
-bool Position::HasInLine(Position const* pos, float width) const
+bool Position::HasInLine(Position const* pos, float objSize, float width) const
{
if (!HasInArc(float(M_PI), pos))
return false;
+ width += objSize;
float angle = GetRelativeAngle(pos);
return std::fabs(std::sin(angle)) * GetExactDist2d(pos->GetPositionX(), pos->GetPositionY()) < width;
}
diff --git a/src/server/game/Entities/Object/Position.h b/src/server/game/Entities/Object/Position.h
index 46c8d4874ec..db694a51bfd 100644
--- a/src/server/game/Entities/Object/Position.h
+++ b/src/server/game/Entities/Object/Position.h
@@ -230,7 +230,7 @@ public:
bool IsWithinBox(const Position& center, float xradius, float yradius, float zradius) const;
bool HasInArc(float arcangle, Position const* pos, float border = 2.0f) const;
- bool HasInLine(Position const* pos, float width) const;
+ bool HasInLine(Position const* pos, float objSize, float width) const;
std::string ToString() const;
// modulos a radian orientation to the range of 0..2PI