diff options
author | Gosha <284210+Lordron@users.noreply.github.com> | 2022-10-11 23:18:54 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-11 22:18:54 +0200 |
commit | 81bf8de9895e050d5800a8a37316c0e6874b5e40 (patch) | |
tree | 41aab36d2e9d5cbb8c72560afbc73f94c6e275cd /src | |
parent | 0d0954b35523308066d788c54bfacccb49d5ac0a (diff) |
Core/PacketIO: Use ByteBuffer from UpdateData instead of copying to it after (#28347)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 12 | ||||
-rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateData.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateData.h | 3 |
3 files changed, 8 insertions, 13 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 96749c87b43..056ced889aa 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -166,14 +166,14 @@ void Object::RemoveFromWorld() void Object::BuildMovementUpdateBlock(UpdateData* data, uint32 flags) const { - ByteBuffer buf(500); + ByteBuffer& buf = data->GetBuffer(); buf << uint8(UPDATETYPE_MOVEMENT); buf << GetPackGUID(); BuildMovementUpdate(&buf, flags); - data->AddUpdateBlock(buf); + data->AddUpdateBlock(); } void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) const @@ -196,14 +196,14 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c //TC_LOG_DEBUG("BuildCreateUpdate: update-type: %u, object-type: %u got flags: %X, flags2: %X", updateType, m_objectTypeId, flags, flags2); - ByteBuffer buf(500); + ByteBuffer& buf = data->GetBuffer(); buf << uint8(updateType); buf << GetPackGUID(); buf << uint8(m_objectTypeId); BuildMovementUpdate(&buf, flags); BuildValuesUpdate(updateType, &buf, target); - data->AddUpdateBlock(buf); + data->AddUpdateBlock(); } void Object::SendUpdateToPlayer(Player* player) @@ -222,14 +222,14 @@ void Object::SendUpdateToPlayer(Player* player) void Object::BuildValuesUpdateBlockForPlayer(UpdateData* data, Player const* target) const { - ByteBuffer buf(500); + ByteBuffer& buf = data->GetBuffer(); buf << uint8(UPDATETYPE_VALUES); buf << GetPackGUID(); BuildValuesUpdate(UPDATETYPE_VALUES, &buf, target); - data->AddUpdateBlock(buf); + data->AddUpdateBlock(); } void Object::BuildOutOfRangeUpdateBlock(UpdateData* data) const diff --git a/src/server/game/Entities/Object/Updates/UpdateData.cpp b/src/server/game/Entities/Object/Updates/UpdateData.cpp index 541e48cc22f..72a34b73a1a 100644 --- a/src/server/game/Entities/Object/Updates/UpdateData.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateData.cpp @@ -35,12 +35,6 @@ void UpdateData::AddOutOfRangeGUID(ObjectGuid guid) m_outOfRangeGUIDs.insert(guid); } -void UpdateData::AddUpdateBlock(ByteBuffer const& block) -{ - m_data.append(block); - ++m_blockCount; -} - void UpdateData::Compress(void* dst, uint32 *dst_size, void* src, int src_size) { z_stream c_stream; diff --git a/src/server/game/Entities/Object/Updates/UpdateData.h b/src/server/game/Entities/Object/Updates/UpdateData.h index f19cb246b8d..c7c9fbdcd3a 100644 --- a/src/server/game/Entities/Object/Updates/UpdateData.h +++ b/src/server/game/Entities/Object/Updates/UpdateData.h @@ -62,7 +62,8 @@ class UpdateData void AddOutOfRangeGUID(GuidSet& guids); void AddOutOfRangeGUID(ObjectGuid guid); - void AddUpdateBlock(ByteBuffer const& block); + void AddUpdateBlock() { ++m_blockCount; } + ByteBuffer& GetBuffer() { return m_data; } bool BuildPacket(WorldPacket* packet); bool HasData() const { return m_blockCount > 0 || !m_outOfRangeGUIDs.empty(); } void Clear(); |