Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
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
15
UpdateData::UpdateData
(
uint16
map) :
m_map
(map),
m_blockCount
(0) { }
16
17
void
UpdateData::AddOutOfRangeGUID
(std::set<uint64>& guids)
18
{
19
m_outOfRangeGUIDs
.insert(guids.begin(), guids.end());
20
}
21
22
void
UpdateData::AddOutOfRangeGUID
(
uint64
guid)
23
{
24
m_outOfRangeGUIDs
.insert(guid);
25
}
26
27
void
UpdateData::AddUpdateBlock
(
const
ByteBuffer
& block)
28
{
29
m_data
.append(block);
30
++
m_blockCount
;
31
}
32
33
bool
UpdateData::BuildPacket
(
WorldPacket
* packet)
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
{
43
*packet <<
uint8
(
UPDATETYPE_OUT_OF_RANGE_OBJECTS
);
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
54
void
UpdateData::Clear
()
55
{
56
m_data
.clear();
57
m_outOfRangeGUIDs
.clear();
58
m_blockCount
= 0;
59
m_map
= 0;
60
}
ByteBuffer.h
Common.h
uint8
std::uint8_t uint8
Definition
Define.h:79
uint32
std::uint32_t uint32
Definition
Define.h:77
uint64
std::uint64_t uint64
Definition
Define.h:76
uint16
std::uint16_t uint16
Definition
Define.h:78
ASSERT
#define ASSERT
Definition
Errors.h:29
Log.h
Opcodes.h
UpdateData.h
UPDATETYPE_OUT_OF_RANGE_OBJECTS
@ UPDATETYPE_OUT_OF_RANGE_OBJECTS
Definition
UpdateData.h:19
World.h
WorldPacket.h
ByteBuffer
Definition
ByteBuffer.h:120
ByteBuffer::appendPackGUID
void appendPackGUID(uint64 guid)
Definition
ByteBuffer.h:681
ByteBuffer::append
void append(T value)
Definition
ByteBuffer.h:147
ByteBuffer::empty
bool empty() const
Definition
ByteBuffer.h:610
UpdateData::m_map
uint16 m_map
Definition
UpdateData.h:56
UpdateData::AddUpdateBlock
void AddUpdateBlock(const ByteBuffer &block)
Definition
UpdateData.cpp:27
UpdateData::m_blockCount
uint32 m_blockCount
Definition
UpdateData.h:57
UpdateData::AddOutOfRangeGUID
void AddOutOfRangeGUID(std::set< uint64 > &guids)
Definition
UpdateData.cpp:17
UpdateData::UpdateData
UpdateData(uint16 map)
Definition
UpdateData.cpp:15
UpdateData::BuildPacket
bool BuildPacket(WorldPacket *packet)
Definition
UpdateData.cpp:33
UpdateData::m_data
ByteBuffer m_data
Definition
UpdateData.h:59
UpdateData::m_outOfRangeGUIDs
std::set< uint64 > m_outOfRangeGUIDs
Definition
UpdateData.h:58
UpdateData::Clear
void Clear()
Definition
UpdateData.cpp:54
WorldPacket
Definition
WorldPacket.h:16
WorldPacket::Initialize
void Initialize(Opcodes opcode, size_t newres=200)
Definition
WorldPacket.h:31
SMSG_UPDATE_OBJECT
@ SMSG_UPDATE_OBJECT
Definition
Opcodes.h:1053
src
server
game
Entities
Object
Updates
UpdateData.cpp
Generated on
for Project SkyFire Core by
1.17.0