diff options
| author | ccrs <ccrs@users.noreply.github.com> | 2025-10-14 11:06:02 +0200 |
|---|---|---|
| committer | ccrs <ccrs@users.noreply.github.com> | 2025-10-14 11:06:02 +0200 |
| commit | 4a7fcfe354db808360a66dbb2fdf79a0c9257091 (patch) | |
| tree | d7d524a9bcfa525a41168124d049621b41f6dee3 /src | |
| parent | 67d7734ff4a2f3ef00bc41c6326ad0f915f578c2 (diff) | |
Core/Entities: Fixed relative position calculation formula in Position::GetPositionOffsetTo
(cherry picked from commit 069449c5018f72287c20d5962ae64a42602d5d7e)
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Entities/Object/Position.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/server/game/Entities/Object/Position.cpp b/src/server/game/Entities/Object/Position.cpp index ecbe15d96cd..8a1bed6f103 100644 --- a/src/server/game/Entities/Object/Position.cpp +++ b/src/server/game/Entities/Object/Position.cpp @@ -51,8 +51,8 @@ void Position::GetPositionOffsetTo(Position const& endPos, Position& retOffset) float dx = endPos.GetPositionX() - GetPositionX(); float dy = endPos.GetPositionY() - GetPositionY(); - retOffset.m_positionX = dx * std::cos(GetOrientation()) + dy * std::sin(GetOrientation()); - retOffset.m_positionY = dy * std::cos(GetOrientation()) - dx * std::sin(GetOrientation()); + retOffset.m_positionX = (dx + dy * std::tan(GetOrientation())) / (std::cos(GetOrientation()) + std::sin(GetOrientation()) * std::tan(GetOrientation())); + retOffset.m_positionY = (dy - dx * std::tan(GetOrientation())) / (std::cos(GetOrientation()) + std::sin(GetOrientation()) * std::tan(GetOrientation())); retOffset.m_positionZ = endPos.GetPositionZ() - GetPositionZ(); retOffset.SetOrientation(endPos.GetOrientation() - GetOrientation()); } |
