mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 04:37:00 +00:00
Movement packets cleanup.
This commit is contained in:
parent
60f8b3874d
commit
b85417df73
16 changed files with 436 additions and 485 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue