Movement packets cleanup.

This commit is contained in:
tomrus88 2010-02-01 17:02:00 +03:00
parent 60f8b3874d
commit b85417df73
16 changed files with 436 additions and 485 deletions

View file

@ -63,7 +63,7 @@ float baseMoveSpeed[MAX_MOVE_TYPE] =
3.14f // MOVE_PITCH_RATE
};
// Used for prepare can/can`t triggr aura
// Used for prepare can/can`t trigger aura
static bool InitTriggerAuraData();
// Define can trigger auras
static bool isTriggerAura[TOTAL_AURAS];
@ -72,6 +72,118 @@ static bool isNonTriggerAura[TOTAL_AURAS];
// Prepare lists
static bool procPrepared = InitTriggerAuraData();
MovementInfo::MovementInfo(WorldPacket &data)
{
// Init fields
moveFlags = MOVEFLAG_NONE;
moveFlags2 = MOVEFLAG2_NONE;
time = 0;
t_guid = 0;
t_time = 0;
t_seat = -1;
t_time2 = 0;
s_pitch = 0.0f;
fallTime = 0;
j_velocity = j_sinAngle = j_cosAngle = j_xyspeed = 0.0f;
u_unk1 = 0.0f;
// Read actual data
Read(data);
}
void MovementInfo::Read(ByteBuffer &data)
{
data >> moveFlags;
data >> moveFlags2;
data >> time;
data >> pos.x;
data >> pos.y;
data >> pos.z;
data >> pos.o;
if(HasMovementFlag(MOVEFLAG_ONTRANSPORT))
{
if(!data.readPackGUID(t_guid))
return;
data >> t_pos.x;
data >> t_pos.y;
data >> t_pos.z;
data >> t_pos.o;
data >> t_time;
data >> t_seat;
if(moveFlags2 & MOVEFLAG2_UNK1)
data >> t_time2;
}
if((HasMovementFlag(MovementFlags(MOVEFLAG_SWIMMING | MOVEFLAG_FLYING))) || (moveFlags2 & MOVEFLAG2_ALLOW_PITCHING))
{
data >> s_pitch;
}
data >> fallTime;
if(HasMovementFlag(MOVEFLAG_JUMPING))
{
data >> j_velocity;
data >> j_sinAngle;
data >> j_cosAngle;
data >> j_xyspeed;
}
if(HasMovementFlag(MOVEFLAG_SPLINE))
{
data >> u_unk1;
}
}
void MovementInfo::Write(ByteBuffer &data)
{
data << moveFlags;
data << moveFlags2;
data << time;
data << pos.x;
data << pos.y;
data << pos.z;
data << pos.o;
if(HasMovementFlag(MOVEFLAG_ONTRANSPORT))
{
data.appendPackGUID(t_guid);
data << t_pos.x;
data << t_pos.y;
data << t_pos.z;
data << t_pos.o;
data << t_time;
data << t_seat;
if(moveFlags2 & MOVEFLAG2_UNK1)
data << t_time2;
}
if((HasMovementFlag(MovementFlags(MOVEFLAG_SWIMMING | MOVEFLAG_FLYING))) || (moveFlags2 & MOVEFLAG2_ALLOW_PITCHING))
{
data << s_pitch;
}
data << fallTime;
if(HasMovementFlag(MOVEFLAG_JUMPING))
{
data << j_velocity;
data << j_sinAngle;
data << j_cosAngle;
data << j_xyspeed;
}
if(HasMovementFlag(MOVEFLAG_SPLINE))
{
data << u_unk1;
}
}
Unit::Unit()
: WorldObject(), i_motionMaster(this), m_ThreatManager(this), m_HostileRefManager(this)
{
@ -321,7 +433,7 @@ void Unit::BuildHeartBeatMsg(WorldPacket *data) const
{
MovementFlags move_flags = GetTypeId()==TYPEID_PLAYER
? ((Player const*)this)->m_movementInfo.GetMovementFlags()
: MOVEMENTFLAG_NONE;
: MOVEFLAG_NONE;
data->Initialize(MSG_MOVE_HEARTBEAT, 32);
data->append(GetPackGUID());
@ -10442,7 +10554,7 @@ void Unit::UpdateWalkMode(Unit* source, bool self)
else if (self)
{
bool on = source->GetTypeId() == TYPEID_PLAYER
? ((Player*)source)->HasMovementFlag(MOVEMENTFLAG_WALK_MODE)
? ((Player*)source)->HasMovementFlag(MOVEFLAG_WALK_MODE)
: ((Creature*)source)->HasMonsterMoveFlag(MONSTER_MOVE_WALK);
if (on)
@ -12408,7 +12520,7 @@ void Unit::SetFeignDeath(bool apply, uint64 const& casterGUID, uint32 spellID)
if(GetTypeId() != TYPEID_PLAYER)
StopMoving();
else
((Player*)this)->m_movementInfo.SetMovementFlags(MOVEMENTFLAG_NONE);
((Player*)this)->m_movementInfo.SetMovementFlags(MOVEFLAG_NONE);
// blizz like 2.0.x
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_29);