aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2018-04-01 13:20:49 +0200
committerShauren <shauren.trinity@gmail.com>2021-09-23 21:31:15 +0200
commitbf958da14828123442781f98443326b0f916b34b (patch)
treec8cb4f1e8dc031d3e0e509ad5a218d3af37075f4
parent086447370b5c2401e1f44453c32eee49da239937 (diff)
Core/Position: code style cleanup of position.h; no change in functionality.
(cherry picked from commit fb39980c52cdb28b9de43356ee37470c7fd6797c)
-rw-r--r--src/server/game/Entities/Object/Object.cpp8
-rw-r--r--src/server/game/Entities/Object/Object.h2
-rw-r--r--src/server/game/Entities/Object/Position.cpp39
-rw-r--r--src/server/game/Entities/Object/Position.h148
4 files changed, 47 insertions, 150 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 02728e4a7a3..85a925a5dc3 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -2981,12 +2981,12 @@ void WorldObject::GetNearPoint2D(float &x, float &y, float distance2d, float abs
Trinity::NormalizeMapCoord(y);
}
-void WorldObject::GetNearPoint(WorldObject const* /*searcher*/, float &x, float &y, float &z, float searcher_size, float distance2d, float absAngle) const
+void WorldObject::GetNearPoint(WorldObject const* searcher, float &x, float &y, float &z, float searcher_size, float distance2d, float absAngle) const
{
GetNearPoint2D(x, y, distance2d+searcher_size, absAngle);
z = GetPositionZ();
- // Should "searcher" be used instead of "this" when updating z coordinate ?
- UpdateAllowedPositionZ(x, y, z);
+
+ (searcher ? searcher : this)->UpdateAllowedPositionZ(x, y, z);
// if detection disabled, return first point
if (!sWorld->getBoolConfig(CONFIG_DETECT_POS_COLLISION))
@@ -3006,7 +3006,7 @@ void WorldObject::GetNearPoint(WorldObject const* /*searcher*/, float &x, float
{
GetNearPoint2D(x, y, distance2d + searcher_size, absAngle + angle);
z = GetPositionZ();
- UpdateAllowedPositionZ(x, y, z);
+ (searcher ? searcher : this)->UpdateAllowedPositionZ(x, y, z);
if (IsWithinLOS(x, y, z))
return;
}
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index 14ccecc2b74..c5e55a7b216 100644
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -421,7 +421,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation
void GetNearPoint2D(float &x, float &y, float distance, float absAngle) const;
void GetNearPoint(WorldObject const* searcher, float &x, float &y, float &z, float searcher_size, float distance2d, float absAngle) const;
- void GetClosePoint(float &x, float &y, float &z, float size, float distance2d = 0, float angle = 0) const;
+ void GetClosePoint(float &x, float &y, float &z, float size, float distance2d = 0, float relAngle = 0) const;
void MovePosition(Position &pos, float dist, float angle);
Position GetNearPosition(float dist, float angle);
void MovePositionToFirstCollision(Position &pos, float dist, float angle);
diff --git a/src/server/game/Entities/Object/Position.cpp b/src/server/game/Entities/Object/Position.cpp
index daffd7a9b52..af6e3d035e1 100644
--- a/src/server/game/Entities/Object/Position.cpp
+++ b/src/server/game/Entities/Object/Position.cpp
@@ -44,26 +44,6 @@ bool Position::IsPositionValid() const
return Trinity::IsValidMapCoord(m_positionX, m_positionY, m_positionZ, m_orientation);
}
-float Position::GetExactDist2d(const float x, const float y) const
-{
- return std::sqrt(GetExactDist2dSq(x, y));
-}
-
-float Position::GetExactDist2d(Position const* pos) const
-{
- return std::sqrt(GetExactDist2dSq(pos));
-}
-
-float Position::GetExactDist(float x, float y, float z) const
-{
- return std::sqrt(GetExactDistSq(x, y, z));
-}
-
-float Position::GetExactDist(Position const* pos) const
-{
- return std::sqrt(GetExactDistSq(pos));
-}
-
void Position::GetPositionOffsetTo(Position const& endPos, Position& retOffset) const
{
float dx = endPos.GetPositionX() - GetPositionX();
@@ -82,25 +62,6 @@ Position Position::GetPositionWithOffset(Position const& offset) const
return ret;
}
-float Position::GetAngle(Position const* pos) const
-{
- if (!pos)
- return 0;
-
- return GetAngle(pos->GetPositionX(), pos->GetPositionY());
-}
-
-// Return angle in range 0..2*pi
-float Position::GetAngle(float x, float y) const
-{
- float dx = x - GetPositionX();
- float dy = y - GetPositionY();
-
- float ang = std::atan2(dy, dx);
- ang = (ang >= 0) ? ang : 2 * float(M_PI) + ang;
- return ang;
-}
-
void Position::GetSinCos(const float x, const float y, float &vsin, float &vcos) const
{
float dx = GetPositionX() - x;
diff --git a/src/server/game/Entities/Object/Position.h b/src/server/game/Entities/Object/Position.h
index fbf9f87d753..6940da13885 100644
--- a/src/server/game/Entities/Object/Position.h
+++ b/src/server/game/Entities/Object/Position.h
@@ -60,36 +60,13 @@ private:
public:
bool operator==(Position const& a) const;
+ bool operator!=(Position const& a) const { return !(operator==(a)); }
- inline bool operator!=(Position const& a) const
- {
- return !(operator==(a));
- }
-
- void Relocate(float x, float y)
- {
- m_positionX = x; m_positionY = y;
- }
-
- void Relocate(float x, float y, float z)
- {
- m_positionX = x; m_positionY = y; m_positionZ = z;
- }
-
- void Relocate(float x, float y, float z, float orientation)
- {
- m_positionX = x; m_positionY = y; m_positionZ = z; SetOrientation(orientation);
- }
-
- void Relocate(Position const& pos)
- {
- m_positionX = pos.m_positionX; m_positionY = pos.m_positionY; m_positionZ = pos.m_positionZ; SetOrientation(pos.m_orientation);
- }
-
- void Relocate(Position const* pos)
- {
- m_positionX = pos->m_positionX; m_positionY = pos->m_positionY; m_positionZ = pos->m_positionZ; SetOrientation(pos->m_orientation);
- }
+ void Relocate(float x, float y) { m_positionX = x; m_positionY = y; }
+ void Relocate(float x, float y, float z) { m_positionX = x; m_positionY = y; m_positionZ = z; }
+ void Relocate(float x, float y, float z, float o) { *this = { x,y,z,o }; }
+ void Relocate(Position const& pos) { *this = pos; }
+ void Relocate(Position const* pos) { *this = *pos; }
void RelocateOffset(Position const& offset);
@@ -103,21 +80,9 @@ public:
float GetPositionZ() const { return m_positionZ; }
float GetOrientation() const { return m_orientation; }
- void GetPosition(float &x, float &y) const
- {
- x = m_positionX; y = m_positionY;
- }
-
- void GetPosition(float &x, float &y, float &z) const
- {
- x = m_positionX; y = m_positionY; z = m_positionZ;
- }
-
- void GetPosition(float &x, float &y, float &z, float &o) const
- {
- x = m_positionX; y = m_positionY; z = m_positionZ; o = m_orientation;
- }
-
+ void GetPosition(float &x, float &y) const { x = m_positionX; y = m_positionY; }
+ void GetPosition(float &x, float &y, float &z) const { GetPosition(x, y); z = m_positionZ; }
+ void GetPosition(float &x, float &y, float &z, float &o) const { GetPosition(x, y, z); o = m_orientation; }
Position GetPosition() const { return *this; }
Streamer<XY> PositionXYStream() { return Streamer<XY>(*this); }
@@ -133,78 +98,50 @@ public:
float GetExactDist2dSq(const float x, const float y) const
{
- float dx = m_positionX - x; float dy = m_positionY - y; return dx*dx + dy*dy;
+ float dx = m_positionX - x;
+ float dy = m_positionY - y;
+ return dx*dx + dy*dy;
}
+ float GetExactDist2dSq(Position const& pos) const { return GetExactDist2dSq(pos.m_positionX, pos.m_positionY); }
+ float GetExactDist2dSq(Position const* pos) const { return GetExactDist2dSq(*pos); }
- float GetExactDist2d(const float x, const float y) const;
-
- float GetExactDist2dSq(Position const& pos) const
- {
- float dx = m_positionX - pos.m_positionX; float dy = m_positionY - pos.m_positionY; return dx*dx + dy*dy;
- }
-
- float GetExactDist2d(Position const& pos) const
- {
- return std::sqrt(GetExactDist2dSq(pos));
- }
-
- float GetExactDist2dSq(Position const* pos) const
- {
- float dx = m_positionX - pos->m_positionX; float dy = m_positionY - pos->m_positionY; return dx*dx + dy*dy;
- }
-
- float GetExactDist2d(Position const* pos) const;
+ float GetExactDist2d(const float x, const float y) const { return std::sqrt(GetExactDist2dSq(x, y)); }
+ float GetExactDist2d(Position const& pos) const { return GetExactDist2d(pos.m_positionX, pos.m_positionY); }
+ float GetExactDist2d(Position const* pos) const { return GetExactDist2d(*pos); }
float GetExactDistSq(float x, float y, float z) const
{
- float dz = m_positionZ - z; return GetExactDist2dSq(x, y) + dz*dz;
+ float dz = m_positionZ - z;
+ return GetExactDist2dSq(x, y) + dz*dz;
}
+ float GetExactDistSq(Position const& pos) const { return GetExactDistSq(pos.m_positionX, pos.m_positionY, pos.m_positionZ); }
+ float GetExactDistSq(Position const* pos) const { return GetExactDistSq(*pos); }
- float GetExactDist(float x, float y, float z) const;
-
- float GetExactDistSq(Position const& pos) const
- {
- float dx = m_positionX - pos.m_positionX; float dy = m_positionY - pos.m_positionY; float dz = m_positionZ - pos.m_positionZ; return dx*dx + dy*dy + dz*dz;
- }
-
- float GetExactDist(Position const& pos) const
- {
- return std::sqrt(GetExactDistSq(pos));
- }
-
- float GetExactDistSq(Position const* pos) const
- {
- float dx = m_positionX - pos->m_positionX; float dy = m_positionY - pos->m_positionY; float dz = m_positionZ - pos->m_positionZ; return dx*dx + dy*dy + dz*dz;
- }
-
- float GetExactDist(Position const* pos) const;
+ float GetExactDist(float x, float y, float z) const { return std::sqrt(GetExactDistSq(x, y, z)); }
+ float GetExactDist(Position const& pos) const { return GetExactDist(pos.m_positionX, pos.m_positionY, pos.m_positionZ); }
+ float GetExactDist(Position const* pos) const { return GetExactDist(*pos); }
void GetPositionOffsetTo(Position const & endPos, Position & retOffset) const;
Position GetPositionWithOffset(Position const& offset) const;
- float GetAngle(Position const* pos) const;
- float GetAngle(Position const& pos) const
+ float GetAngle(float x, float y) const
{
- return GetAngle(pos.m_positionX, pos.m_positionY);
- }
- float GetAngle(float x, float y) const;
- float GetRelativeAngle(Position const* pos) const
- {
- return GetAngle(pos) - m_orientation;
+ float dx = m_positionX - x;
+ float dy = m_positionY - y;
+ return NormalizeOrientation(std::atan2(dy, dx));
}
+ float GetAngle(Position const& pos) const { return GetAngle(pos.m_positionX, pos.m_positionY); }
+ float GetAngle(Position const* pos) const { return GetAngle(*pos); }
- float GetRelativeAngle(float x, float y) const { return GetAngle(x, y) - m_orientation; }
- void GetSinCos(float x, float y, float &vsin, float &vcos) const;
+ float GetAbsoluteAngle(float relAngle) const { return NormalizeOrientation(relAngle + m_orientation); }
+ float GetRelativeAngle(float absAngle) const { return NormalizeOrientation(absAngle - m_orientation); }
+ float GetRelativeAngle(float x, float y) const { return GetRelativeAngle(GetAngle(x, y)); }
+ float GetRelativeAngle(Position const* pos) const { return GetRelativeAngle(GetAngle(pos)); }
- bool IsInDist2d(float x, float y, float dist) const
- {
- return GetExactDist2dSq(x, y) < dist * dist;
- }
+ void GetSinCos(float x, float y, float &vsin, float &vcos) const;
- bool IsInDist2d(Position const* pos, float dist) const
- {
- return GetExactDist2dSq(pos) < dist * dist;
- }
+ bool IsInDist2d(float x, float y, float dist) const { return GetExactDist2dSq(x, y) < dist * dist; }
+ bool IsInDist2d(Position const* pos, float dist) const { return GetExactDist2dSq(pos) < dist * dist; }
bool IsInDist(float x, float y, float z, float dist) const { return GetExactDistSq(x, y, z) < dist * dist; }
bool IsInDist(Position const& pos, float dist) const { return GetExactDistSq(pos) < dist * dist; }
@@ -212,15 +149,14 @@ public:
bool IsWithinBox(Position const& center, float xradius, float yradius, float zradius) const;
- /*
- search using this relation: dist2d < radius && abs(dz) < height
- */
+ // dist2d < radius && abs(dz) < height
bool IsWithinDoubleVerticalCylinder(Position const* center, float radius, float height) const;
- bool HasInArc(float arcangle, Position const* pos, float border = 2.0f, Optional<float> orientation = Optional<float>()) const;
- bool HasInLine(Position const* pos, float objSize, float width, Optional<float> orientation = Optional<float>()) const;
+
+ bool HasInArc(float arcangle, Position const* pos, float border = 2.0f, Optional<float> orientation = {}) const;
+ bool HasInLine(Position const* pos, float objSize, float width, Optional<float> orientation = {}) const;
std::string ToString() const;
- // modulos a radian orientation to the range of 0..2PI
+ // constrain arbitrary radian orientation to interval [0,2*PI)
static float NormalizeOrientation(float o);
};