aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGosha <284210+Lordron@users.noreply.github.com>2022-10-11 23:18:54 +0300
committerGitHub <noreply@github.com>2022-10-11 22:18:54 +0200
commit81bf8de9895e050d5800a8a37316c0e6874b5e40 (patch)
tree41aab36d2e9d5cbb8c72560afbc73f94c6e275cd /src
parent0d0954b35523308066d788c54bfacccb49d5ac0a (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.cpp12
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateData.cpp6
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateData.h3
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();