diff options
| author | xinef1 <w.szyszko2@gmail.com> | 2017-02-06 01:10:15 +0100 |
|---|---|---|
| committer | ariel- <ariel-@users.noreply.github.com> | 2017-02-05 21:10:15 -0300 |
| commit | c6060dd0c511ddad3cb1f0423aa9ccf2de7aedec (patch) | |
| tree | f418ab2a2b7f12bf5384e8653eeb3481370108b6 /src/server/game/Entities/Object | |
| parent | d06391d0628ffbf43da471c83653853b0926b4ab (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.cpp | 3 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Position.h | 2 |
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 |
