aboutsummaryrefslogtreecommitdiff
path: root/src/game/Object.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-08-29 23:20:16 -0500
committermegamage <none@none>2009-08-29 23:20:16 -0500
commitd802cd3811c77a1b0bef95a65fdfc4872ff557a8 (patch)
tree68be363ef1f3ce843a32254a9b8fd122b7803434 /src/game/Object.cpp
parent6954eae60ac320639451bd83782f294da367b733 (diff)
*More update about positions.
*Ulduar: do not allow demolisher to regenerate pyrite. Player must shoot down and grab the containers to refill pyrite. --HG-- branch : trunk
Diffstat (limited to 'src/game/Object.cpp')
-rw-r--r--src/game/Object.cpp31
1 files changed, 15 insertions, 16 deletions
diff --git a/src/game/Object.cpp b/src/game/Object.cpp
index 7d365b35710..5206a5a4219 100644
--- a/src/game/Object.cpp
+++ b/src/game/Object.cpp
@@ -1079,7 +1079,7 @@ bool Object::PrintIndexError(uint32 index, bool set) const
return false;
}
-bool Position::IsInLine(const Unit * const target, float distance, float width) const
+bool Position::HasInLine(const Unit * const target, float distance, float width) const
{
if(!HasInArc(M_PI, target) || !target->IsWithinDist3d(m_positionX, m_positionY, m_positionZ, distance)) return false;
width += target->GetObjectSize();
@@ -1382,13 +1382,11 @@ bool WorldObject::IsInBetween(const WorldObject *obj1, const WorldObject *obj2,
return abs(sin(angle)) * GetExactDist2d(obj1->GetPositionX(), obj1->GetPositionY()) < size;
}
-void WorldObject::GetRandomPoint( float x, float y, float z, float distance, float &rand_x, float &rand_y, float &rand_z) const
+void WorldObject::GetRandomPoint(const Position &pos, float distance, float &rand_x, float &rand_y, float &rand_z) const
{
- if(distance == 0)
+ if(!distance)
{
- rand_x = x;
- rand_y = y;
- rand_z = z;
+ pos.GetPosition(rand_x, rand_y, rand_z);
return;
}
@@ -1396,9 +1394,9 @@ void WorldObject::GetRandomPoint( float x, float y, float z, float distance, flo
float angle = rand_norm()*2*M_PI;
float new_dist = rand_norm()*distance;
- rand_x = x + new_dist * cos(angle);
- rand_y = y + new_dist * sin(angle);
- rand_z = z;
+ rand_x = pos.m_positionX + new_dist * cos(angle);
+ rand_y = pos.m_positionY + new_dist * sin(angle);
+ rand_z = pos.m_positionZ;
Trinity::NormalizeMapCoord(rand_x);
Trinity::NormalizeMapCoord(rand_y);
@@ -2175,14 +2173,15 @@ void WorldObject::GetNearPoint(WorldObject const* searcher, float &x, float &y,
*/
}
-void WorldObject::GetGroundPoint(float &x, float &y, float &z, float dist, float angle)
+void WorldObject::MovePosition(Position &pos, float dist, float angle)
{
- angle += GetOrientation();
- x += dist * cos(angle);
- y += dist * sin(angle);
- Trinity::NormalizeMapCoord(x);
- Trinity::NormalizeMapCoord(y);
- UpdateGroundPositionZ(x, y, z);
+ angle += m_orientation;
+ pos.m_positionX += dist * cos(angle);
+ pos.m_positionY += dist * sin(angle);
+ Trinity::NormalizeMapCoord(pos.m_positionX);
+ Trinity::NormalizeMapCoord(pos.m_positionY);
+ UpdateGroundPositionZ(pos.m_positionX, pos.m_positionY, pos.m_positionZ);
+ pos.m_orientation = m_orientation;
}
void WorldObject::SetPhaseMask(uint32 newPhaseMask, bool update)