Core/Packets: updated update_object structure
Welcome ingame!
This commit is contained in:
1 parent
8eac7e3fdc
commit
7fdefceb43
15 files changed
+109
-132
No files matched your search
@@ -74,7 +74,7 @@ void BattlegroundIC::SendTransportInit(Player* player)
|
||||
if (!gunshipAlliance || !gunshipHorde)
|
||||
return;
|
||||
|
||||
UpdateData transData;
|
||||
UpdateData transData(player->GetMapId());
|
||||
|
||||
gunshipAlliance->BuildCreateUpdateBlockForPlayer(&transData, player);
|
||||
gunshipHorde->BuildCreateUpdateBlockForPlayer(&transData, player);
|
||||
|
||||
@@ -266,7 +266,7 @@ void BattlegroundSA::StartShips()
|
||||
{
|
||||
if (Player* p = ObjectAccessor::FindPlayer(itr->first))
|
||||
{
|
||||
UpdateData data;
|
||||
UpdateData data(p->GetMapId());
|
||||
WorldPacket pkt;
|
||||
GetBGObject(i)->BuildValuesUpdateBlockForPlayer(&data, p);
|
||||
data.BuildPacket(&pkt);
|
||||
@@ -900,7 +900,7 @@ void BattlegroundSA::SendTransportInit(Player* player)
|
||||
{
|
||||
if (m_BgObjects[BG_SA_BOAT_ONE] || m_BgObjects[BG_SA_BOAT_TWO])
|
||||
{
|
||||
UpdateData transData;
|
||||
UpdateData transData(player->GetMapId());
|
||||
if (m_BgObjects[BG_SA_BOAT_ONE])
|
||||
GetBGObject(BG_SA_BOAT_ONE)->BuildCreateUpdateBlockForPlayer(&transData, player);
|
||||
if (m_BgObjects[BG_SA_BOAT_TWO])
|
||||
@@ -915,7 +915,7 @@ void BattlegroundSA::SendTransportsRemove(Player* player)
|
||||
{
|
||||
if (m_BgObjects[BG_SA_BOAT_ONE] || m_BgObjects[BG_SA_BOAT_TWO])
|
||||
{
|
||||
UpdateData transData;
|
||||
UpdateData transData(player->GetMapId());
|
||||
if (m_BgObjects[BG_SA_BOAT_ONE])
|
||||
GetBGObject(BG_SA_BOAT_ONE)->BuildOutOfRangeUpdateBlock(&transData);
|
||||
if (m_BgObjects[BG_SA_BOAT_TWO])
|
||||
|
||||
@@ -32,7 +32,7 @@ Corpse::Corpse(CorpseType type) : WorldObject()
|
||||
m_objectType |= TYPEMASK_CORPSE;
|
||||
m_objectTypeId = TYPEID_CORPSE;
|
||||
|
||||
m_updateFlag = (UPDATEFLAG_HIGHGUID | UPDATEFLAG_HAS_POSITION | UPDATEFLAG_POSITION);
|
||||
m_updateFlag = (UPDATEFLAG_HAS_POSITION | UPDATEFLAG_POSITION);
|
||||
|
||||
m_valuesCount = CORPSE_END;
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ DynamicObject::DynamicObject() : WorldObject(),
|
||||
m_objectType |= TYPEMASK_DYNAMICOBJECT;
|
||||
m_objectTypeId = TYPEID_DYNAMICOBJECT;
|
||||
|
||||
m_updateFlag = (UPDATEFLAG_HIGHGUID | UPDATEFLAG_HAS_POSITION | UPDATEFLAG_POSITION);
|
||||
m_updateFlag = (UPDATEFLAG_HAS_POSITION | UPDATEFLAG_POSITION);
|
||||
|
||||
m_valuesCount = DYNAMICOBJECT_END;
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ GameObject::GameObject() : WorldObject(), m_goValue(new GameObjectValue), m_AI(N
|
||||
m_objectType |= TYPEMASK_GAMEOBJECT;
|
||||
m_objectTypeId = TYPEID_GAMEOBJECT;
|
||||
|
||||
m_updateFlag = (UPDATEFLAG_HIGHGUID | UPDATEFLAG_HAS_POSITION | UPDATEFLAG_POSITION | UPDATEFLAG_ROTATION);
|
||||
m_updateFlag = (UPDATEFLAG_HAS_POSITION | UPDATEFLAG_POSITION | UPDATEFLAG_ROTATION);
|
||||
|
||||
m_valuesCount = GAMEOBJECT_END;
|
||||
m_respawnTime = 0;
|
||||
@@ -296,7 +296,7 @@ void GameObject::Update(uint32 diff)
|
||||
SetGoState(GO_STATE_ACTIVE);
|
||||
SetUInt32Value(GAMEOBJECT_FLAGS, GO_FLAG_NODESPAWN);
|
||||
|
||||
UpdateData udata;
|
||||
UpdateData udata(caster->GetMapId());
|
||||
WorldPacket packet;
|
||||
BuildValuesUpdateBlockForPlayer(&udata, caster->ToPlayer());
|
||||
udata.BuildPacket(&packet);
|
||||
|
||||
@@ -238,7 +238,7 @@ Item::Item()
|
||||
m_objectType |= TYPEMASK_ITEM;
|
||||
m_objectTypeId = TYPEID_ITEM;
|
||||
|
||||
m_updateFlag = UPDATEFLAG_HIGHGUID;
|
||||
m_updateFlag = 0;
|
||||
|
||||
m_valuesCount = ITEM_END;
|
||||
m_slot = 0;
|
||||
|
||||
@@ -250,7 +250,7 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c
|
||||
void Object::SendUpdateToPlayer(Player* player)
|
||||
{
|
||||
// send create update to player
|
||||
UpdateData upd;
|
||||
UpdateData upd(player->GetMapId());
|
||||
WorldPacket packet;
|
||||
|
||||
BuildCreateUpdateBlockForPlayer(&upd, player);
|
||||
@@ -296,17 +296,18 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint16 flags) const
|
||||
// 0x20
|
||||
if (flags & UPDATEFLAG_LIVING)
|
||||
{
|
||||
((Unit*)this)->BuildMovementPacket(data);
|
||||
const Unit* self = ToUnit();
|
||||
self->BuildMovementPacket(data);
|
||||
|
||||
*data << ((Unit*)this)->GetSpeed(MOVE_WALK);
|
||||
*data << ((Unit*)this)->GetSpeed(MOVE_RUN);
|
||||
*data << ((Unit*)this)->GetSpeed(MOVE_SWIM_BACK);
|
||||
*data << ((Unit*)this)->GetSpeed(MOVE_SWIM);
|
||||
*data << ((Unit*)this)->GetSpeed(MOVE_RUN_BACK);
|
||||
*data << ((Unit*)this)->GetSpeed(MOVE_FLIGHT);
|
||||
*data << ((Unit*)this)->GetSpeed(MOVE_FLIGHT_BACK);
|
||||
*data << ((Unit*)this)->GetSpeed(MOVE_TURN_RATE);
|
||||
*data << ((Unit*)this)->GetSpeed(MOVE_PITCH_RATE);
|
||||
*data << self->GetSpeed(MOVE_WALK);
|
||||
*data << self->GetSpeed(MOVE_RUN);
|
||||
*data << self->GetSpeed(MOVE_SWIM_BACK);
|
||||
*data << self->GetSpeed(MOVE_SWIM);
|
||||
*data << self->GetSpeed(MOVE_RUN_BACK);
|
||||
*data << self->GetSpeed(MOVE_FLIGHT);
|
||||
*data << self->GetSpeed(MOVE_FLIGHT_BACK);
|
||||
*data << self->GetSpeed(MOVE_TURN_RATE);
|
||||
*data << self->GetSpeed(MOVE_PITCH_RATE);
|
||||
|
||||
const Player* player = ToPlayer();
|
||||
|
||||
@@ -375,19 +376,20 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint16 flags) const
|
||||
}
|
||||
else
|
||||
{
|
||||
WorldObject* worldObj = ((WorldObject*)this);
|
||||
if (flags & UPDATEFLAG_POSITION)
|
||||
{
|
||||
*data << uint8(0); // unk PGUID!
|
||||
*data << ((WorldObject*)this)->GetPositionX();
|
||||
*data << ((WorldObject*)this)->GetPositionY();
|
||||
*data << ((WorldObject*)this)->GetPositionZ();
|
||||
*data << ((WorldObject*)this)->GetPositionX();
|
||||
*data << ((WorldObject*)this)->GetPositionY();
|
||||
*data << ((WorldObject*)this)->GetPositionZ();
|
||||
*data << ((WorldObject*)this)->GetOrientation();
|
||||
*data << worldObj->GetPositionX();
|
||||
*data << worldObj->GetPositionY();
|
||||
*data << worldObj->GetPositionZ();
|
||||
*data << worldObj->GetPositionX();
|
||||
*data << worldObj->GetPositionY();
|
||||
*data << worldObj->GetPositionZ();
|
||||
*data << worldObj->GetOrientation();
|
||||
|
||||
if (GetTypeId() == TYPEID_CORPSE)
|
||||
*data << float(((WorldObject*)this)->GetOrientation());
|
||||
*data << worldObj->GetOrientation();
|
||||
else
|
||||
*data << float(0);
|
||||
}
|
||||
@@ -402,58 +404,23 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint16 flags) const
|
||||
*data << (float)0;
|
||||
*data << (float)0;
|
||||
*data << (float)0;
|
||||
*data << ((WorldObject*)this)->GetOrientation();
|
||||
*data << worldObj->GetOrientation();
|
||||
}
|
||||
else
|
||||
{
|
||||
*data << ((WorldObject*)this)->GetPositionX();
|
||||
*data << ((WorldObject*)this)->GetPositionY();
|
||||
*data << ((WorldObject*)this)->GetPositionZ();
|
||||
*data << ((WorldObject*)this)->GetOrientation();
|
||||
*data << worldObj->GetPositionX();
|
||||
*data << worldObj->GetPositionY();
|
||||
*data << worldObj->GetPositionZ();
|
||||
*data << worldObj->GetOrientation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 0x8
|
||||
if (flags & UPDATEFLAG_LOWGUID)
|
||||
{
|
||||
switch (GetTypeId())
|
||||
{
|
||||
case TYPEID_OBJECT:
|
||||
case TYPEID_ITEM:
|
||||
case TYPEID_CONTAINER:
|
||||
case TYPEID_GAMEOBJECT:
|
||||
case TYPEID_DYNAMICOBJECT:
|
||||
case TYPEID_CORPSE:
|
||||
*data << uint32(GetGUIDLow()); // GetGUIDLow()
|
||||
break;
|
||||
case TYPEID_UNIT:
|
||||
*data << uint32(0x0000000B); // unk, can be 0xB or 0xC
|
||||
break;
|
||||
case TYPEID_PLAYER:
|
||||
if (flags & UPDATEFLAG_SELF)
|
||||
*data << uint32(0x0000002F); // unk, can be 0x15 or 0x22
|
||||
else
|
||||
*data << uint32(0x00000008); // unk, can be 0x7 or 0x8
|
||||
break;
|
||||
default:
|
||||
*data << uint32(0x00000000); // unk
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 0x10
|
||||
if (flags & UPDATEFLAG_HIGHGUID)
|
||||
{
|
||||
// not high guid
|
||||
*data << uint32(GetUInt32Value(OBJECT_FIELD_GUID)); // unk
|
||||
}
|
||||
|
||||
// 0x4
|
||||
if (flags & UPDATEFLAG_HAS_TARGET) // packed guid (current target guid)
|
||||
{
|
||||
if (Unit* victim = ((Unit*)this)->getVictim())
|
||||
if (Unit *victim = this->ToUnit()->getVictim())
|
||||
data->append(victim->GetPackGUID());
|
||||
else
|
||||
*data << uint8(0);
|
||||
@@ -472,11 +439,14 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint16 flags) const
|
||||
*data << float(((Creature*)this)->GetOrientation()); // facing adjustment
|
||||
}
|
||||
|
||||
// 0x200
|
||||
if (flags & UPDATEFLAG_ROTATION)
|
||||
{
|
||||
*data << uint64(((GameObject*)this)->GetRotation());
|
||||
}
|
||||
// 0x800
|
||||
if (flags & UPDATEFLAG_UNK2)
|
||||
*data << uint16(0) << uint16(0) << uint16(0); //unk
|
||||
|
||||
|
||||
// 0x1000
|
||||
if (flags & UPDATEFLAG_UNK3)
|
||||
*data << uint8(0);//unk counter to read uint32 values
|
||||
}
|
||||
|
||||
void Object::_BuildValuesUpdate(uint8 updatetype, ByteBuffer * data, UpdateMask* updateMask, Player* target) const
|
||||
@@ -774,7 +744,7 @@ void Object::BuildFieldsUpdate(Player* player, UpdateDataMapType& data_map) cons
|
||||
|
||||
if (iter == data_map.end())
|
||||
{
|
||||
std::pair<UpdateDataMapType::iterator, bool> p = data_map.insert(UpdateDataMapType::value_type(player, UpdateData()));
|
||||
std::pair<UpdateDataMapType::iterator, bool> p = data_map.insert(UpdateDataMapType::value_type(player, UpdateData(player->GetMapId())));
|
||||
ASSERT(p.second);
|
||||
iter = p.first;
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#include "World.h"
|
||||
#include "zlib.h"
|
||||
|
||||
UpdateData::UpdateData() : m_blockCount(0)
|
||||
UpdateData::UpdateData(uint16 map) : m_blockCount(0), m_map(map)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -104,44 +104,26 @@ void UpdateData::Compress(void* dst, uint32 *dst_size, void* src, int src_size)
|
||||
bool UpdateData::BuildPacket(WorldPacket* packet)
|
||||
{
|
||||
ASSERT(packet->empty()); // shouldn't happen
|
||||
packet->Initialize(SMSG_UPDATE_OBJECT, 2 + 4 + (m_outOfRangeGUIDs.empty() ? 0 : 1 + 4 + 9 * m_outOfRangeGUIDs.size()) + m_data.wpos());
|
||||
|
||||
ByteBuffer buf(4 + (m_outOfRangeGUIDs.empty() ? 0 : 1 + 4 + 9 * m_outOfRangeGUIDs.size()) + m_data.wpos());
|
||||
|
||||
buf << (uint32) (!m_outOfRangeGUIDs.empty() ? m_blockCount + 1 : m_blockCount);
|
||||
*packet << uint16(m_map);
|
||||
*packet << uint32(m_blockCount);
|
||||
|
||||
if (!m_outOfRangeGUIDs.empty())
|
||||
{
|
||||
buf << (uint8) UPDATETYPE_OUT_OF_RANGE_OBJECTS;
|
||||
buf << (uint32) m_outOfRangeGUIDs.size();
|
||||
*packet << uint8(UPDATETYPE_OUT_OF_RANGE_OBJECTS);
|
||||
*packet << uint32(m_outOfRangeGUIDs.size());
|
||||
|
||||
for (std::set<uint64>::const_iterator i = m_outOfRangeGUIDs.begin(); i != m_outOfRangeGUIDs.end(); ++i)
|
||||
{
|
||||
buf.appendPackGUID(*i);
|
||||
packet->appendPackGUID(*i);
|
||||
}
|
||||
}
|
||||
|
||||
buf.append(m_data);
|
||||
packet->append(m_data);
|
||||
|
||||
size_t pSize = buf.wpos(); // use real used data size
|
||||
|
||||
if (pSize > 100) // compress large packets
|
||||
{
|
||||
uint32 destsize = compressBound(pSize);
|
||||
packet->resize(destsize + sizeof(uint32));
|
||||
|
||||
packet->put<uint32>(0, pSize);
|
||||
Compress(const_cast<uint8*>(packet->contents()) + sizeof(uint32), &destsize, (void*)buf.contents(), pSize);
|
||||
if (destsize == 0)
|
||||
return false;
|
||||
|
||||
packet->resize(destsize + sizeof(uint32));
|
||||
packet->SetOpcode(SMSG_COMPRESSED_UPDATE_OBJECT);
|
||||
}
|
||||
else // send small packets without compression
|
||||
{
|
||||
packet->append(buf);
|
||||
packet->SetOpcode(SMSG_UPDATE_OBJECT);
|
||||
}
|
||||
//if (packet->wpos() > 100)
|
||||
// compress meee!!
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -151,5 +133,6 @@ void UpdateData::Clear()
|
||||
m_data.clear();
|
||||
m_outOfRangeGUIDs.clear();
|
||||
m_blockCount = 0;
|
||||
m_map = 0;
|
||||
}
|
||||
|
||||
@@ -36,19 +36,23 @@ enum OBJECT_UPDATE_FLAGS
|
||||
UPDATEFLAG_SELF = 0x0001,
|
||||
UPDATEFLAG_TRANSPORT = 0x0002,
|
||||
UPDATEFLAG_HAS_TARGET = 0x0004,
|
||||
UPDATEFLAG_LOWGUID = 0x0008,
|
||||
UPDATEFLAG_HIGHGUID = 0x0010,
|
||||
UPDATEFLAG_UNK1 = 0x0008,
|
||||
UPDATEFLAG_UNK2 = 0x0010,
|
||||
UPDATEFLAG_LIVING = 0x0020,
|
||||
UPDATEFLAG_HAS_POSITION = 0x0040,
|
||||
UPDATEFLAG_VEHICLE = 0x0080,
|
||||
UPDATEFLAG_POSITION = 0x0100,
|
||||
UPDATEFLAG_ROTATION = 0x0200
|
||||
UPDATEFLAG_ROTATION = 0x0200,
|
||||
UPDATEFLAG_UNK3 = 0x0400,
|
||||
UPDATEFLAG_UNK4 = 0x0800,
|
||||
UPDATEFLAG_UNK5 = 0x1000,
|
||||
UPDATEFLAG_UNK6 = 0x2000
|
||||
};
|
||||
|
||||
class UpdateData
|
||||
{
|
||||
public:
|
||||
UpdateData();
|
||||
UpdateData(uint16 map);
|
||||
|
||||
void AddOutOfRangeGUID(std::set<uint64>& guids);
|
||||
void AddOutOfRangeGUID(uint64 guid);
|
||||
@@ -60,6 +64,7 @@ class UpdateData
|
||||
std::set<uint64> const& GetOutOfRangeGUIDs() const { return m_outOfRangeGUIDs; }
|
||||
|
||||
protected:
|
||||
uint16 m_map;
|
||||
uint32 m_blockCount;
|
||||
std::set<uint64> m_outOfRangeGUIDs;
|
||||
ByteBuffer m_data;
|
||||
|
||||
@@ -21229,7 +21229,7 @@ void Player::UpdateTriggerVisibility()
|
||||
if (!IsInWorld())
|
||||
return;
|
||||
|
||||
UpdateData udata;
|
||||
UpdateData udata(GetMapId());
|
||||
WorldPacket packet;
|
||||
for (ClientGUIDs::iterator itr = m_clientGUIDs.begin(); itr != m_clientGUIDs.end(); ++itr)
|
||||
{
|
||||
@@ -22037,7 +22037,7 @@ void Player::UpdateForQuestWorldObjects()
|
||||
if (m_clientGUIDs.empty())
|
||||
return;
|
||||
|
||||
UpdateData udata;
|
||||
UpdateData udata(GetMapId());
|
||||
WorldPacket packet;
|
||||
for (ClientGUIDs::iterator itr=m_clientGUIDs.begin(); itr != m_clientGUIDs.end(); ++itr)
|
||||
{
|
||||
|
||||
@@ -173,7 +173,7 @@ void MapManager::LoadTransportNPCs()
|
||||
Transport::Transport(uint32 period, uint32 script) : GameObject(), m_pathTime(0), m_timer(0),
|
||||
currenttguid(0), m_period(period), ScriptId(script), m_nextNodeTime(0)
|
||||
{
|
||||
m_updateFlag = (UPDATEFLAG_TRANSPORT | UPDATEFLAG_HIGHGUID | UPDATEFLAG_HAS_POSITION | UPDATEFLAG_ROTATION);
|
||||
m_updateFlag = (UPDATEFLAG_TRANSPORT | UPDATEFLAG_HAS_POSITION | UPDATEFLAG_ROTATION);
|
||||
}
|
||||
|
||||
Transport::~Transport()
|
||||
@@ -585,7 +585,7 @@ void Transport::UpdateForMap(Map const* targetMap)
|
||||
{
|
||||
if (this != itr->getSource()->GetTransport())
|
||||
{
|
||||
UpdateData transData;
|
||||
UpdateData transData(GetMapId());
|
||||
BuildCreateUpdateBlockForPlayer(&transData, itr->getSource());
|
||||
WorldPacket packet;
|
||||
transData.BuildPacket(&packet);
|
||||
@@ -595,7 +595,7 @@ void Transport::UpdateForMap(Map const* targetMap)
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateData transData;
|
||||
UpdateData transData(targetMap->GetId());
|
||||
BuildOutOfRangeUpdateBlock(&transData);
|
||||
WorldPacket out_packet;
|
||||
transData.BuildPacket(&out_packet);
|
||||
|
||||
@@ -156,7 +156,7 @@ m_vehicleKit(NULL), m_unitTypeMask(UNIT_MASK_NONE), m_HostileRefManager(this)
|
||||
m_objectType |= TYPEMASK_UNIT;
|
||||
m_objectTypeId = TYPEID_UNIT;
|
||||
|
||||
m_updateFlag = (UPDATEFLAG_HIGHGUID | UPDATEFLAG_LIVING | UPDATEFLAG_HAS_POSITION);
|
||||
m_updateFlag = (UPDATEFLAG_LIVING | UPDATEFLAG_HAS_POSITION);
|
||||
|
||||
m_attackTimer[BASE_ATTACK] = 0;
|
||||
m_attackTimer[OFF_ATTACK] = 0;
|
||||
@@ -17141,13 +17141,30 @@ void Unit::BuildMovementPacket(ByteBuffer *data) const
|
||||
|
||||
(*data).writeBits(GetUnitMovementFlags(), 30);
|
||||
(*data).writeBits(m_movementInfo.flags2, 12);
|
||||
|
||||
if (data->writeBit(GetUnitMovementFlags() & MOVEMENTFLAG_ONTRANSPORT))
|
||||
{
|
||||
data->writeBit(m_movementInfo.flags2 & MOVEMENTFLAG2_INTERPOLATED_MOVEMENT);
|
||||
data->writeBit(0); // Flag for time3
|
||||
}
|
||||
|
||||
data->writeBit((GetUnitMovementFlags() & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) || (m_movementInfo.flags2 & MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING));
|
||||
|
||||
if (data->writeBit(m_movementInfo.flags2 & MOVEMENTFLAG2_INTERPOLATED_TURNING))
|
||||
data->writeBit(GetUnitMovementFlags() & MOVEMENTFLAG_JUMPING);
|
||||
|
||||
data->writeBit(GetUnitMovementFlags() & MOVEMENTFLAG_SPLINE_ELEVATION);
|
||||
|
||||
// has spline data
|
||||
data->writeBit(0);
|
||||
|
||||
*data << uint64(GetGUID()); // added in 4.2.0
|
||||
*data << uint32(getMSTime()); // time
|
||||
*data << GetPositionX();
|
||||
*data << GetPositionY();
|
||||
*data << GetPositionZ();
|
||||
*data << GetOrientation();
|
||||
|
||||
// 0x00000200
|
||||
if (GetUnitMovementFlags() & MOVEMENTFLAG_ONTRANSPORT)
|
||||
{
|
||||
if (m_vehicle)
|
||||
@@ -17161,27 +17178,29 @@ void Unit::BuildMovementPacket(ByteBuffer *data) const
|
||||
*data << float (GetTransOffsetY());
|
||||
*data << float (GetTransOffsetZ());
|
||||
*data << float (GetTransOffsetO());
|
||||
*data << uint32(GetTransTime());
|
||||
*data << uint8 (GetTransSeat());
|
||||
*data << uint32(GetTransTime());
|
||||
|
||||
if (m_movementInfo.flags2 & MOVEMENTFLAG2_INTERPOLATED_MOVEMENT)
|
||||
*data << uint32(m_movementInfo.t_time2);
|
||||
}
|
||||
|
||||
// 0x02200000
|
||||
if ((GetUnitMovementFlags() & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING))
|
||||
|| (m_movementInfo.flags2 & MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING))
|
||||
if ((GetUnitMovementFlags() & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) || (m_movementInfo.flags2 & MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING))
|
||||
*data << (float)m_movementInfo.pitch;
|
||||
|
||||
*data << (uint32)m_movementInfo.fallTime;
|
||||
|
||||
// 0x00001000
|
||||
if (GetUnitMovementFlags() & MOVEMENTFLAG_JUMPING)
|
||||
if (m_movementInfo.flags2 & MOVEMENTFLAG2_INTERPOLATED_TURNING)
|
||||
{
|
||||
*data << (uint32)m_movementInfo.fallTime;
|
||||
*data << (float)m_movementInfo.j_zspeed;
|
||||
*data << (float)m_movementInfo.j_sinAngle;
|
||||
*data << (float)m_movementInfo.j_cosAngle;
|
||||
*data << (float)m_movementInfo.j_xyspeed;
|
||||
|
||||
if (GetUnitMovementFlags() & MOVEMENTFLAG_JUMPING)
|
||||
{
|
||||
*data << (float)m_movementInfo.j_sinAngle;
|
||||
*data << (float)m_movementInfo.j_cosAngle;
|
||||
*data << (float)m_movementInfo.j_xyspeed;
|
||||
}
|
||||
}
|
||||
|
||||
// 0x04000000
|
||||
if (GetUnitMovementFlags() & MOVEMENTFLAG_SPLINE_ELEVATION)
|
||||
*data << (float)m_movementInfo.splineElevation;
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace Trinity
|
||||
std::set<Unit*> i_visibleNow;
|
||||
Player::ClientGUIDs vis_guids;
|
||||
|
||||
VisibleNotifier(Player &player) : i_player(player), vis_guids(player.m_clientGUIDs) {}
|
||||
VisibleNotifier(Player &player) : i_player(player), vis_guids(player.m_clientGUIDs), i_data(player.GetMapId()) {}
|
||||
template<class T> void Visit(GridRefManager<T> &m);
|
||||
void SendToSelf(void);
|
||||
};
|
||||
|
||||
@@ -1853,7 +1853,7 @@ void Map::SendInitSelf(Player* player)
|
||||
{
|
||||
sLog->outDetail("Creating player data for himself %u", player->GetGUIDLow());
|
||||
|
||||
UpdateData data;
|
||||
UpdateData data(player->GetMapId());
|
||||
|
||||
// attach to player data current transport data
|
||||
if (Transport* transport = player->GetTransport())
|
||||
@@ -1890,7 +1890,7 @@ void Map::SendInitTransports(Player* player)
|
||||
if (tmap.find(player->GetMapId()) == tmap.end())
|
||||
return;
|
||||
|
||||
UpdateData transData;
|
||||
UpdateData transData(player->GetMapId());
|
||||
|
||||
MapManager::TransportSet& tset = tmap[player->GetMapId()];
|
||||
|
||||
@@ -1917,7 +1917,7 @@ void Map::SendRemoveTransports(Player* player)
|
||||
if (tmap.find(player->GetMapId()) == tmap.end())
|
||||
return;
|
||||
|
||||
UpdateData transData;
|
||||
UpdateData transData(player->GetMapId());
|
||||
|
||||
MapManager::TransportSet& tset = tmap[player->GetMapId()];
|
||||
|
||||
|
||||
@@ -211,7 +211,7 @@ void InitOpcodes()
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_CHANNEL_UNBAN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelUnban );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_CHANNEL_ANNOUNCEMENTS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelAnnouncements );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_CHANNEL_MODERATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_UPDATE_OBJECT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_UPDATE_OBJECT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_DESTROY_OBJECT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_USE_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUseItemOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_OPEN_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleOpenItemOpcode );
|
||||
@@ -544,7 +544,7 @@ void InitOpcodes()
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_PLAY_SPELL_VISUAL, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_ZONEUPDATE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleZoneUpdateOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_PARTYKILLLOG, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_COMPRESSED_UPDATE_OBJECT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_COMPRESSED_UPDATE_OBJECT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_PLAY_SPELL_IMPACT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_EXPLORATION_EXPERIENCE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_GM_SET_SECURITY_GROUP, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
|
||||
Reference in new issue
Block a user