blob: a18d98137c1b0ec69458d50544ef29add995943b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#ifndef ENTS_SHARED_H
#define ENTS_SHARED_H
#include <protocol.h>
#include <iserver.h>
#include "clientframe.h"
#include "packed_entity.h"
#ifdef _WIN32
#pragma once
#endif
class CEntityInfo
{
public:
CEntityInfo() {
m_nOldEntity = -1;
m_nNewEntity = -1;
m_nHeaderBase = -1;
}
virtual ~CEntityInfo() {};
bool m_bAsDelta;
CClientFrame *m_pFrom;
CClientFrame *m_pTo;
UpdateType m_UpdateType;
int m_nOldEntity; // current entity index in m_pFrom
int m_nNewEntity; // current entity index in m_pTo
int m_nHeaderBase;
int m_nHeaderCount;
inline void NextOldEntity( void )
{
if ( m_pFrom )
{
m_nOldEntity = m_pFrom->transmit_entity.FindNextSetBit( m_nOldEntity+1 );
if ( m_nOldEntity < 0 )
{
// Sentinel/end of list....
m_nOldEntity = ENTITY_SENTINEL;
}
}
else
{
m_nOldEntity = ENTITY_SENTINEL;
}
}
inline void NextNewEntity( void )
{
m_nNewEntity = m_pTo->transmit_entity.FindNextSetBit( m_nNewEntity+1 );
if ( m_nNewEntity < 0 )
{
// Sentinel/end of list....
m_nNewEntity = ENTITY_SENTINEL;
}
}
};
// PostDataUpdate calls are stored in a list until all ents have been updated.
class CPostDataUpdateCall
{
public:
int m_iEnt;
DataUpdateType_t m_UpdateType;
};
// Passed around the read functions.
class CEntityReadInfo : public CEntityInfo
{
public:
CEntityReadInfo()
{ m_nPostDataUpdateCalls = 0;
m_nLocalPlayerBits = 0;
m_nOtherPlayerBits = 0;
m_UpdateType = PreserveEnt;
}
bf_read *m_pBuf;
int m_UpdateFlags; // from the subheader
bool m_bIsEntity;
int m_nBaseline; // what baseline index do we use (0/1)
bool m_bUpdateBaselines; // update baseline while parsing snaphsot
int m_nLocalPlayerBits; // profiling data
int m_nOtherPlayerBits; // profiling data
CPostDataUpdateCall m_PostDataUpdateCalls[MAX_EDICTS];
int m_nPostDataUpdateCalls;
};
#endif // ENTS_SHARED_H
|