aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2025-10-12 00:24:22 +0200
committerShauren <shauren.trinity@gmail.com>2025-10-12 00:24:22 +0200
commit069449c5018f72287c20d5962ae64a42602d5d7e (patch)
tree3b8094d2345d72e61f62b95cdacb1c0b3070a091
parent5344a408c4f26e8e2f81d23cb5c99fbc2ffe08cd (diff)
Core/Entities: Fixed relative position calculation formula in Position::GetPositionOffsetTo
-rw-r--r--src/server/game/Entities/Object/Position.cpp4
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 1ad21820e09..c3a4d0f57c9 100644
--- a/src/server/game/Entities/Object/Position.cpp
+++ b/src/server/game/Entities/Object/Position.cpp
@@ -49,8 +49,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());
}