From 640617fe3becca2626df6a6d3eb2ce5d64ce9945 Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Wed, 24 Mar 2010 01:38:54 +0300 Subject: [PATCH] [9612] Add to SendMonsterMove var args for optional values. Also drop currently unused Unit::m_InteractionObject --- src/game/Unit.cpp | 26 +++++++++++++++++--------- src/game/Unit.h | 4 +--- src/shared/revision_nr.h | 2 +- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index b9af5d070ba..149cee147a3 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -50,6 +50,7 @@ #include "MovementGenerator.h" #include +#include float baseMoveSpeed[MAX_MOVE_TYPE] = { @@ -343,8 +344,12 @@ bool Unit::haveOffhandWeapon() const return false; } -void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, SplineType type, SplineFlags flags, uint32 Time, Player* player) +void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, SplineType type, SplineFlags flags, uint32 Time, Player* player, ...) { + + va_list vargs; + va_start(vargs,player); + float moveTime = (float)Time; WorldPacket data( SMSG_MONSTER_MOVE, (41 + GetPackGUID().size()) ); @@ -359,18 +364,21 @@ void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, SplineTy case SPLINETYPE_NORMAL: // normal packet break; case SPLINETYPE_STOP: // stop packet (raw pos?) + va_end(vargs); SendMessageToSet( &data, true ); return; case SPLINETYPE_FACINGSPOT: // facing spot, not used currently - data << float(0); - data << float(0); - data << float(0); + { + data << float(va_arg(vargs,float)); + data << float(va_arg(vargs,float)); + data << float(va_arg(vargs,float)); break; + } case SPLINETYPE_FACINGTARGET: - data << uint64(m_InteractionObject); // set in SetFacingToObject() + data << uint64(va_arg(vargs,uint64)); break; case SPLINETYPE_FACINGANGLE: // not used currently - data << float(0); // facing angle + data << float(va_arg(vargs,float)); // facing angle break; } @@ -384,6 +392,8 @@ void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, SplineTy data << uint32(1); // 1 single waypoint data << NewPosX << NewPosY << NewPosZ; // the single waypoint Point B + va_end(vargs); + if(player) player->GetSession()->SendPacket(&data); else @@ -3515,12 +3525,10 @@ void Unit::SetFacingToObject(WorldObject* pObject) if (!IsStopped()) return; - m_InteractionObject = pObject->GetGUID(); - // TODO: figure out under what conditions creature will move towards object instead of facing it where it currently is. SetOrientation(GetAngle(pObject)); - SendMonsterMove(GetPositionX(), GetPositionY(), GetPositionZ(), SPLINETYPE_FACINGTARGET, ((Creature*)this)->GetSplineFlags(), 0); + SendMonsterMove(GetPositionX(), GetPositionY(), GetPositionZ(), SPLINETYPE_FACINGTARGET, ((Creature*)this)->GetSplineFlags(), 0, NULL, pObject->GetGUID()); } bool Unit::isInAccessablePlaceFor(Creature const* c) const diff --git a/src/game/Unit.h b/src/game/Unit.h index 8266046ccc7..9aae2cb7f73 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -1376,7 +1376,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject void MonsterMoveWithSpeed(float x, float y, float z, uint32 transitTime = 0); // recommend use MonsterMove/MonsterMoveWithSpeed for most case that correctly work with movegens - void SendMonsterMove(float x, float y, float z, SplineType type, SplineFlags flags, uint32 Time, Player* player = NULL); + void SendMonsterMove(float x, float y, float z, SplineType type, SplineFlags flags, uint32 Time, Player* player = NULL, ...); void SendMonsterMoveByPath(Path const& path, uint32 start, uint32 end, SplineFlags flags); void SendMonsterMoveWithSpeed(float x, float y, float z, uint32 transitTime = 0, Player* player = NULL); @@ -1852,8 +1852,6 @@ class MANGOS_DLL_SPEC Unit : public WorldObject uint32 m_regenTimer; uint32 m_lastManaUseTimer; - uint64 m_InteractionObject; - private: void CleanupDeletedAuras(); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index d94bfab9d66..ad132966ad6 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "9611" + #define REVISION_NR "9612" #endif // __REVISION_NR_H__