Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
UpdateData.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#include "ByteBuffer.h"
7#include "Common.h"
8#include "Log.h"
9#include "Opcodes.h"
10#include "UpdateData.h"
11#include "World.h"
12#include "WorldPacket.h"
13#include "zlib.h"
14
16
17void UpdateData::AddOutOfRangeGUID(std::set<uint64>& guids)
18{
19 m_outOfRangeGUIDs.insert(guids.begin(), guids.end());
20}
21
23{
24 m_outOfRangeGUIDs.insert(guid);
25}
26
28{
29 m_data.append(block);
31}
32
34{
35 ASSERT(packet->empty()); // shouldn't happen
36 packet->Initialize(SMSG_UPDATE_OBJECT, 2 + 4 + (m_outOfRangeGUIDs.empty() ? 0 : 1 + 4 + 9 * m_outOfRangeGUIDs.size()) + m_data.wpos());
37
38 *packet << uint16(m_map);
39 *packet << uint32(m_blockCount + (m_outOfRangeGUIDs.empty() ? 0 : 1));
40
41 if (!m_outOfRangeGUIDs.empty())
42 {
44 *packet << uint32(m_outOfRangeGUIDs.size());
45
46 for (std::set<uint64>::const_iterator i = m_outOfRangeGUIDs.begin(); i != m_outOfRangeGUIDs.end(); ++i)
47 packet->appendPackGUID(*i);
48 }
49
50 packet->append(m_data);
51 return true;
52}
53
55{
56 m_data.clear();
57 m_outOfRangeGUIDs.clear();
58 m_blockCount = 0;
59 m_map = 0;
60}
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
std::uint64_t uint64
Definition Define.h:76
std::uint16_t uint16
Definition Define.h:78
#define ASSERT
Definition Errors.h:29
@ UPDATETYPE_OUT_OF_RANGE_OBJECTS
Definition UpdateData.h:19
void appendPackGUID(uint64 guid)
Definition ByteBuffer.h:681
void append(T value)
Definition ByteBuffer.h:147
bool empty() const
Definition ByteBuffer.h:610
uint16 m_map
Definition UpdateData.h:56
void AddUpdateBlock(const ByteBuffer &block)
uint32 m_blockCount
Definition UpdateData.h:57
void AddOutOfRangeGUID(std::set< uint64 > &guids)
UpdateData(uint16 map)
bool BuildPacket(WorldPacket *packet)
ByteBuffer m_data
Definition UpdateData.h:59
std::set< uint64 > m_outOfRangeGUIDs
Definition UpdateData.h:58
void Clear()
void Initialize(Opcodes opcode, size_t newres=200)
Definition WorldPacket.h:31
@ SMSG_UPDATE_OBJECT
Definition Opcodes.h:1053