diff options
| author | megamage <none@none.none> | 2011-10-10 17:08:01 -0400 |
|---|---|---|
| committer | megamage <none@none.none> | 2011-10-10 17:08:01 -0400 |
| commit | d156e066cfa8be95031aff31ab7b6aa905e12839 (patch) | |
| tree | 5e8fd750f70f58cb6f92681ccbaddfb0a6c09065 /src/server/game | |
| parent | 76c9c30c2b3ad32f61a0a588c7d8625e0c5f2d09 (diff) | |
Rename "SetPosition" to "UpdatePosition".
Replace CreatureRelocation in scripts with new Creature::SetPosition.
Diffstat (limited to 'src/server/game')
| -rw-r--r-- | src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp | 4 | ||||
| -rwxr-xr-x | src/server/game/Entities/Creature/Creature.cpp | 17 | ||||
| -rwxr-xr-x | src/server/game/Entities/Creature/Creature.h | 3 | ||||
| -rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 6 | ||||
| -rwxr-xr-x | src/server/game/Entities/Player/Player.h | 4 | ||||
| -rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 6 | ||||
| -rwxr-xr-x | src/server/game/Entities/Unit/Unit.h | 4 | ||||
| -rwxr-xr-x | src/server/game/Entities/Vehicle/Vehicle.cpp | 2 | ||||
| -rwxr-xr-x | src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp | 2 | ||||
| -rwxr-xr-x | src/server/game/Movement/Traveller.h | 4 | ||||
| -rwxr-xr-x | src/server/game/Server/Protocol/Handlers/MovementHandler.cpp | 4 | ||||
| -rwxr-xr-x | src/server/game/Spells/SpellEffects.cpp | 2 |
12 files changed, 38 insertions, 20 deletions
diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp index cdea190dfbc..f210f077fdd 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp @@ -493,7 +493,7 @@ void npc_escortAI::SetEscortPaused(bool on) bool npc_escortAI::SetNextWaypoint(uint32 pointId, float x, float y, float z, float orientation) { - me->SetPosition(x, y, z, orientation); + me->UpdatePosition(x, y, z, orientation); return SetNextWaypoint(pointId, false, true); } @@ -516,7 +516,7 @@ bool npc_escortAI::SetNextWaypoint(uint32 pointId, bool setPosition, bool resetW if (waypoint.id == pointId) { if (setPosition) - me->SetPosition(waypoint.x, waypoint.y, waypoint.z, me->GetOrientation()); + me->UpdatePosition(waypoint.x, waypoint.y, waypoint.z, me->GetOrientation()); CurrentWP = WaypointList.begin(); return true; diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 5ac2fdcaca1..5682e0c0361 100755 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -2387,6 +2387,7 @@ const char* Creature::GetNameForLocaleIdx(LocaleConstant loc_idx) const return GetName(); } +//TODO: This may cause crash. Creature must be removed from the original grid and added to the new grid. void Creature::FarTeleportTo(Map* map, float X, float Y, float Z, float O) { InterruptNonMeleeSpells(true); @@ -2401,7 +2402,21 @@ void Creature::FarTeleportTo(Map* map, float X, float Y, float Z, float O) SetMap(map); AddToWorld(); - SetPosition(X, Y, Z, O, true); + UpdatePosition(X, Y, Z, O, true); +} + +void Creature::SetPosition(float x, float y, float z, float o) +{ + // prevent crash when a bad coord is sent by the client + if (!Trinity::IsValidMapCoord(x, y, z, o)) + { + sLog->outDebug(LOG_FILTER_UNITS, "Creature::SetPosition(%f, %f, %f) .. bad coordinates!", x, y, z); + return; + } + + GetMap()->CreatureRelocation(ToCreature(), x, y, z, o); + if (IsVehicle()) + GetVehicleKit()->RelocatePassengers(x, y, z, o); } bool Creature::IsDungeonBoss() const diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index 6bca501f76b..1d25dd46992 100755 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -664,6 +664,9 @@ class Creature : public Unit, public GridObject<Creature>, public MapCreature return m_charmInfo->GetCharmSpell(pos)->GetAction(); } + void SetPosition(float x, float y, float z, float o); + void SetPosition(const Position &pos) { SetPosition(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation()); } + void SetHomePosition(float x, float y, float z, float o) { m_homePosition.Relocate(x, y, z, o); } void SetHomePosition(const Position &pos) { m_homePosition.Relocate(pos); } void GetHomePosition(float &x, float &y, float &z, float &ori) { m_homePosition.GetPosition(x, y, z, ori); } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 4a8e2c9de0d..deade7431a8 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -6727,9 +6727,9 @@ ActionButton const* Player::GetActionButton(uint8 button) return &buttonItr->second; } -bool Player::SetPosition(float x, float y, float z, float orientation, bool teleport) +bool Player::UpdatePosition(float x, float y, float z, float orientation, bool teleport) { - if (!Unit::SetPosition(x, y, z, orientation, teleport)) + if (!Unit::UpdatePosition(x, y, z, orientation, teleport)) return false; //if (movementInfo.flags & MOVEMENTFLAG_MOVING) @@ -6743,7 +6743,7 @@ bool Player::SetPosition(float x, float y, float z, float orientation, bool tele SetGroupUpdateFlag(GROUP_UPDATE_FLAG_POSITION); // code block for underwater state update - // Unit::SetPosition() checks for validity and updates our coordinates + // Unit::UpdatePosition() checks for validity and updates our coordinates // so we re-fetch them instead of using "raw" coordinates from function params UpdateUnderwaterState(GetMap(), GetPositionX(), GetPositionY(), GetPositionZ()); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 862b271c464..05ef060add9 100755 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1937,8 +1937,8 @@ class Player : public Unit, public GridObject<Player> void SendResetInstanceFailed(uint32 reason, uint32 MapId); void SendResetFailedNotify(uint32 mapid); - virtual bool SetPosition(float x, float y, float z, float orientation, bool teleport = false); - bool SetPosition(const Position &pos, bool teleport = false) { return SetPosition(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), teleport); } + virtual bool UpdatePosition(float x, float y, float z, float orientation, bool teleport = false); + bool UpdatePosition(const Position &pos, bool teleport = false) { return UpdatePosition(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), teleport); } void UpdateUnderwaterState(Map* m, float x, float y, float z); void SendMessageToSet(WorldPacket* data, bool self) {SendMessageToSetInRange(data, GetVisibilityRange(), self); };// overwrite Object::SendMessageToSet diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 6d02d943f63..ba801354457 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -17151,16 +17151,16 @@ void Unit::NearTeleportTo(float x, float y, float z, float orientation, bool cas { // FIXME: this interrupts spell visual DestroyForNearbyPlayers(); - SetPosition(x, y, z, orientation, true); + UpdatePosition(x, y, z, orientation, true); } } -bool Unit::SetPosition(float x, float y, float z, float orientation, bool teleport) +bool Unit::UpdatePosition(float x, float y, float z, float orientation, bool teleport) { // prevent crash when a bad coord is sent by the client if (!Trinity::IsValidMapCoord(x, y, z, orientation)) { - sLog->outDebug(LOG_FILTER_UNITS, "Unit::SetPosition(%f, %f, %f) .. bad coordinates!", x, y, z); + sLog->outDebug(LOG_FILTER_UNITS, "Unit::UpdatePosition(%f, %f, %f) .. bad coordinates!", x, y, z); return false; } diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 8f052ab41ae..c683cbbe957 100755 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1600,9 +1600,9 @@ class Unit : public WorldObject void SendSpellDamageImmune(Unit* target, uint32 spellId); void NearTeleportTo(float x, float y, float z, float orientation, bool casting = false); - virtual bool SetPosition(float x, float y, float z, float ang, bool teleport = false); + virtual bool UpdatePosition(float x, float y, float z, float ang, bool teleport = false); // returns true if unit's position really changed - bool SetPosition(const Position &pos, bool teleport = false) { return SetPosition(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), teleport); } + bool UpdatePosition(const Position &pos, bool teleport = false) { return UpdatePosition(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), teleport); } void KnockbackFrom(float x, float y, float speedXY, float speedZ); void JumpTo(float speedXY, float speedZ, bool forward = true); diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index effd43cd320..107e275d47b 100755 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -445,7 +445,7 @@ void Vehicle::RelocatePassengers(float x, float y, float z, float ang) float pz = z + passenger->m_movementInfo.t_pos.m_positionZ; float po = ang + passenger->m_movementInfo.t_pos.m_orientation; - passenger->SetPosition(px, py, pz, po); + passenger->UpdatePosition(px, py, pz, po); } } diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp index 4ad2f0638d0..99deef200a6 100755 --- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp @@ -266,7 +266,7 @@ void FlightPathMovementGenerator::Finalize(Player & player) float y = 0; float z = 0; i_destinationHolder.GetLocationNow(player.GetBaseMap(), x, y, z); - player.SetPosition(x, y, z, player.GetOrientation()); + player.UpdatePosition(x, y, z, player.GetOrientation()); } diff --git a/src/server/game/Movement/Traveller.h b/src/server/game/Movement/Traveller.h index 27700eb61c4..9cd6a6cda17 100755 --- a/src/server/game/Movement/Traveller.h +++ b/src/server/game/Movement/Traveller.h @@ -85,7 +85,7 @@ inline float Traveller<Creature>::Speed() template<> inline void Traveller<Creature>::Relocation(float x, float y, float z, float orientation) { - i_traveller.SetPosition(x, y, z, orientation); + i_traveller.UpdatePosition(x, y, z, orientation); } template<> @@ -136,7 +136,7 @@ inline float Traveller<Player>::GetMoveDestinationTo(float x, float y, float z) template<> inline void Traveller<Player>::Relocation(float x, float y, float z, float orientation) { - i_traveller.SetPosition(x, y, z, orientation); + i_traveller.UpdatePosition(x, y, z, orientation); } template<> diff --git a/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp b/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp index bf971cae32f..9f91e944e7a 100755 --- a/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp @@ -215,7 +215,7 @@ void WorldSession::HandleMoveTeleportAck(WorldPacket& recv_data) WorldLocation const& dest = plMover->GetTeleportDest(); - plMover->SetPosition(dest, true); + plMover->UpdatePosition(dest, true); uint32 newzone, newarea; plMover->GetZoneAndAreaId(newzone, newarea); @@ -355,7 +355,7 @@ void WorldSession::HandleMovementOpcodes(WorldPacket & recv_data) return; } - mover->SetPosition(movementInfo.pos); + mover->UpdatePosition(movementInfo.pos); if (plMover) // nothing is charmed, or player charmed { diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 926a2280d18..5594b66f22d 100755 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -3368,7 +3368,7 @@ void Spell::EffectDistract(SpellEffIndex /*effIndex*/) if (unitTarget->GetTypeId() == TYPEID_PLAYER) { // For players just turn them - unitTarget->ToPlayer()->SetPosition(unitTarget->GetPositionX(), unitTarget->GetPositionY(), unitTarget->GetPositionZ(), angle, false); + unitTarget->ToPlayer()->UpdatePosition(unitTarget->GetPositionX(), unitTarget->GetPositionY(), unitTarget->GetPositionZ(), angle, false); unitTarget->ToPlayer()->SendTeleportAckPacket(); } else |
