39#define ENTITYSIZEPROFILING_START(msg, num, flags) \
40 int entityprofiling_startsize = msg->cursize
42#define ENTITYSIZEPROFILING_END(msg, num, flags) \
43 if(developer_networkentities.integer >= 2) \
45 prvm_edict_t *edict = prog->edicts + num; \
46 Con_Printf("sent entity update of size %u for %d classname %s flags %d\n", (msg->cursize - entityprofiling_startsize), num, PRVM_serveredictstring(edict, classname) ? PRVM_GetString(prog, PRVM_serveredictstring(edict, classname)) : "(no classname)", flags); \
50#define SCOPE_WANTREMOVE 1
51#define SCOPE_WANTUPDATE 2
52#define SCOPE_WANTSEND (SCOPE_WANTREMOVE | SCOPE_WANTUPDATE)
53#define SCOPE_EXISTED_ONCE 4
54#define SCOPE_ASSUMED_EXISTING 8
68#define EF_BRIGHTFIELD 1
69#define EF_MUZZLEFLASH 2
70#define EF_BRIGHTLIGHT 4
76#define EF_NOGUNBOB 256
77#define EF_FULLBRIGHT 512
79#define EF_STARDUST 2048
80#define EF_NOSHADOW 4096
81#define EF_NODEPTHTEST 8192
82#define EF_SELECTABLE 16384
83#define EF_DOUBLESIDED 32768
84#define EF_NOSELFSHADOW 65536
85#define EF_DYNAMICMODELLIGHT 131072
86#define EF_UNUSED18 262144
87#define EF_UNUSED19 524288
88#define EF_RESTARTANIM_BIT 1048576
89#define EF_TELEPORT_BIT 2097152
90#define EF_LOWPRECISION 4194304
91#define EF_NOMODELFLAGS 8388608
92#define EF_ROCKET 16777216
93#define EF_GRENADE 33554432
94#define EF_GIB 67108864
95#define EF_ROTATE 134217728
96#define EF_TRACER 268435456
97#define EF_ZOMGIB 536870912
98#define EF_TRACER2 1073741824
99#define EF_TRACER3 0x80000000
102#define INTEF_FLAG1QW 1
103#define INTEF_FLAG2QW 2
106#define PFLAGS_NOSHADOW 1
107#define PFLAGS_CORONA 2
108#define PFLAGS_FULLDYNAMIC 128
111#define U_MOREBITS (1u<<0)
112#define U_ORIGIN1 (1u<<1)
113#define U_ORIGIN2 (1u<<2)
114#define U_ORIGIN3 (1u<<3)
115#define U_ANGLE2 (1u<<4)
117#define U_STEP (1u<<5)
118#define U_FRAME (1u<<6)
120#define U_SIGNAL (1u<<7)
122#define U_ANGLE1 (1u<<8)
123#define U_ANGLE3 (1u<<9)
124#define U_MODEL (1u<<10)
125#define U_COLORMAP (1u<<11)
126#define U_SKIN (1u<<12)
127#define U_EFFECTS (1u<<13)
128#define U_LONGENTITY (1u<<14)
131#define U_EXTEND1 (1u<<15)
133#define U_DELTA (1u<<16)
134#define U_ALPHA (1u<<17)
135#define U_SCALE (1u<<18)
136#define U_EFFECTS2 (1u<<19)
137#define U_GLOWSIZE (1u<<20)
138#define U_GLOWCOLOR (1u<<21)
139#define U_COLORMOD (1u<<22)
140#define U_EXTEND2 (1u<<23)
142#define U_GLOWTRAIL (1u<<24)
143#define U_VIEWMODEL (1u<<25)
144#define U_FRAME2 (1u<<26)
145#define U_MODEL2 (1u<<27)
146#define U_EXTERIORMODEL (1u<<28)
147#define U_UNUSED29 (1u<<29)
148#define U_UNUSED30 (1u<<30)
149#define U_EXTEND3 (1u<<31)
152#define SU_VIEWHEIGHT (1u<<0)
153#define SU_IDEALPITCH (1u<<1)
154#define SU_PUNCH1 (1u<<2)
155#define SU_PUNCH2 (1u<<3)
156#define SU_PUNCH3 (1u<<4)
157#define SU_VELOCITY1 (1u<<5)
158#define SU_VELOCITY2 (1u<<6)
159#define SU_VELOCITY3 (1u<<7)
161#define SU_ITEMS (1u<<9)
162#define SU_ONGROUND (1u<<10)
163#define SU_INWATER (1u<<11)
164#define SU_WEAPONFRAME (1u<<12)
165#define SU_ARMOR (1u<<13)
166#define SU_WEAPON (1u<<14)
167#define SU_EXTEND1 (1u<<15)
169#define SU_PUNCHVEC1 (1u<<16)
170#define SU_PUNCHVEC2 (1u<<17)
171#define SU_PUNCHVEC3 (1u<<18)
172#define SU_VIEWZOOM (1u<<19)
173#define SU_UNUSED20 (1u<<20)
174#define SU_UNUSED21 (1u<<21)
175#define SU_UNUSED22 (1u<<22)
176#define SU_EXTEND2 (1u<<23)
178#define SU_UNUSED24 (1u<<24)
179#define SU_UNUSED25 (1u<<25)
180#define SU_UNUSED26 (1u<<26)
181#define SU_UNUSED27 (1u<<27)
182#define SU_UNUSED28 (1u<<28)
183#define SU_UNUSED29 (1u<<29)
184#define SU_UNUSED30 (1u<<30)
185#define SU_EXTEND3 (1u<<31)
189#define SND_VOLUME (1<<0)
190#define SND_ATTENUATION (1<<1)
191#define SND_LOOPING (1<<2)
192#define SND_LARGEENTITY (1<<3)
193#define SND_LARGESOUND (1<<4)
194#define SND_SPEEDUSHORT4000 (1<<5)
198#define DEFAULT_VIEWHEIGHT 22
204#define GAME_DEATHMATCH 1
216#define svc_disconnect 2
217#define svc_updatestat 3
223#define svc_stufftext 9
225#define svc_setangle 10
227#define svc_serverinfo 11
231#define svc_lightstyle 12
232#define svc_updatename 13
233#define svc_updatefrags 14
234#define svc_clientdata 15
235#define svc_stopsound 16
236#define svc_updatecolors 17
237#define svc_particle 18
240#define svc_spawnstatic 20
242#define svc_spawnbaseline 22
244#define svc_temp_entity 23
246#define svc_setpause 24
247#define svc_signonnum 25
249#define svc_centerprint 26
251#define svc_killedmonster 27
252#define svc_foundsecret 28
254#define svc_spawnstaticsound 29
256#define svc_intermission 30
259#define svc_cdtrack 32
260#define svc_sellscreen 33
262#define svc_cutscene 34
264#define svc_showlmp 35
265#define svc_hidelmp 36
269#define svc_downloaddata 50
270#define svc_updatestatubyte 51
272#define svc_effect2 53
274#define svc_precache 54
275#define svc_spawnbaseline2 55
276#define svc_spawnstatic2 56
277#define svc_entities 57
278#define svc_csqcentities 58
279#define svc_spawnstaticsound2 59
280#define svc_trailparticles 60
281#define svc_pointparticles 61
282#define svc_pointparticles1 62
289#define clc_disconnect 2
291#define clc_stringcmd 4
294#define clc_ackframe 50
295#define clc_ackdownloaddata 51
296#define clc_unusedlh2 52
297#define clc_unusedlh3 53
298#define clc_unusedlh4 54
299#define clc_unusedlh5 55
300#define clc_unusedlh6 56
301#define clc_unusedlh7 57
302#define clc_unusedlh8 58
303#define clc_unusedlh9 59
309#define TE_SUPERSPIKE 1
311#define TE_EXPLOSION 3
312#define TE_TAREXPLOSION 4
313#define TE_LIGHTNING1 5
314#define TE_LIGHTNING2 6
316#define TE_KNIGHTSPIKE 8
317#define TE_LIGHTNING3 9
318#define TE_LAVASPLASH 10
319#define TE_TELEPORT 11
320#define TE_EXPLOSION2 12
327#define TE_EXPLOSION3 16
328#define TE_LIGHTNING4NEH 17
333#define TE_BLOODSHOWER 52
334#define TE_EXPLOSIONRGB 53
335#define TE_PARTICLECUBE 54
336#define TE_PARTICLERAIN 55
337#define TE_PARTICLESNOW 56
338#define TE_GUNSHOTQUAD 57
339#define TE_SPIKEQUAD 58
340#define TE_SUPERSPIKEQUAD 59
342#define TE_EXPLOSIONQUAD 70
344#define TE_SMALLFLASH 72
345#define TE_CUSTOMFLASH 73
346#define TE_FLAMEJET 74
347#define TE_PLASMABURN 75
350#define TE_TEI_SMOKE 77
351#define TE_TEI_BIGEXPLOSION 78
352#define TE_TEI_PLASMAHIT 79
357#define RENDER_GLOWTRAIL 2
358#define RENDER_VIEWMODEL 4
359#define RENDER_EXTERIORMODEL 8
360#define RENDER_LOWPRECISION 16
361#define RENDER_COLORMAPPED 32
362#define RENDER_WORLDOBJECT 64
363#define RENDER_COMPLEXANIMATION 128
365#define RENDER_SHADOW 65536
366#define RENDER_LIGHT 131072
367#define RENDER_NOSELFSHADOW 262144
369#define RENDER_NODEPTHTEST 1048576
370#define RENDER_ADDITIVE 2097152
371#define RENDER_DOUBLESIDED 4194304
372#define RENDER_CUSTOMIZEDMODELLIGHT 4096
373#define RENDER_DYNAMICMODELLIGHT 8388608
375typedef struct usercmd_s
408#define MAX_FRAMEGROUPBLENDS 4
409typedef struct framegroupblend_s
423typedef struct skeleton_s
430typedef enum entity_state_active_e
439typedef struct entity_state_s
458 unsigned short light[4];
553#define MAX_ENTITY_HISTORY 64
554#define MAX_ENTITY_DATABASE (MAX_EDICTS * 2)
557typedef struct entity_frame_s
569typedef struct entity_frameinfo_s
578typedef struct entityframe_database_s
613#define E_ORIGIN1 (1u<<0)
614#define E_ORIGIN2 (1u<<1)
615#define E_ORIGIN3 (1u<<2)
616#define E_ANGLE1 (1u<<3)
617#define E_ANGLE2 (1u<<4)
618#define E_ANGLE3 (1u<<5)
619#define E_MODEL1 (1u<<6)
620#define E_EXTEND1 (1u<<7)
623#define E_FRAME1 (1u<<8)
624#define E_EFFECTS1 (1u<<9)
625#define E_ALPHA (1u<<10)
626#define E_SCALE (1u<<11)
627#define E_COLORMAP (1u<<12)
628#define E_SKIN (1u<<13)
629#define E_FLAGS (1u<<14)
630#define E_EXTEND2 (1u<<15)
633#define E_FRAME2 (1u<<16)
634#define E_MODEL2 (1u<<17)
635#define E_EFFECTS2 (1u<<18)
636#define E_GLOWSIZE (1u<<19)
637#define E_GLOWCOLOR (1u<<20)
638#define E_LIGHT (1u<<21)
639#define E_LIGHTPFLAGS (1u<<22)
640#define E_EXTEND3 (1u<<23)
642#define E_SOUND1 (1u<<24)
643#define E_SOUNDVOL (1u<<25)
644#define E_SOUNDATTEN (1u<<26)
645#define E_TAGATTACHMENT (1u<<27)
646#define E_LIGHTSTYLE (1u<<28)
647#define E_UNUSED6 (1u<<29)
648#define E_UNUSED7 (1u<<30)
649#define E_EXTEND4 (1u<<31)
689typedef struct entity_database4_commit_s
701typedef struct entity_database4_s
742#define E5_FULLUPDATE (1u<<0)
745#define E5_ORIGIN (1u<<1)
748#define E5_ANGLES (1u<<2)
751#define E5_MODEL (1u<<3)
754#define E5_FRAME (1u<<4)
756#define E5_SKIN (1u<<5)
761#define E5_EFFECTS (1u<<6)
763#define E5_EXTEND1 (1u<<7)
766#define E5_FLAGS (1u<<8)
768#define E5_ALPHA (1u<<9)
770#define E5_SCALE (1u<<10)
772#define E5_ORIGIN32 (1u<<11)
774#define E5_ANGLES16 (1u<<12)
776#define E5_MODEL16 (1u<<13)
778#define E5_COLORMAP (1u<<14)
780#define E5_EXTEND2 (1u<<15)
784#define E5_ATTACHMENT (1u<<16)
788#define E5_LIGHT (1u<<17)
791#define E5_GLOW (1u<<18)
793#define E5_EFFECTS16 (1u<<19)
795#define E5_EFFECTS32 (1u<<20)
797#define E5_FRAME16 (1u<<21)
799#define E5_COLORMOD (1u<<22)
801#define E5_EXTEND3 (1u<<23)
804#define E5_GLOWMOD (1u<<24)
811#define E5_COMPLEXANIMATION (1u<<25)
813#define E5_TRAILEFFECTNUM (1u<<26)
815#define E5_UNUSED27 (1u<<27)
817#define E5_UNUSED28 (1u<<28)
819#define E5_UNUSED29 (1u<<29)
821#define E5_UNUSED30 (1u<<30)
823#define E5_EXTEND4 (1u<<31)
826#define ENTITYFRAME5_MAXPACKETLOGS 64
827#define ENTITYFRAME5_MAXSTATES 1024
828#define ENTITYFRAME5_PRIORITYLEVELS 32
830typedef struct entityframe5_changestate_s
837typedef struct entityframe5_packetlog_s
846typedef struct entityframe5_database_s
908#define qw_svc_disconnect 2
909#define qw_svc_updatestat 3
910#define qw_svc_setview 5
911#define qw_svc_sound 6
912#define qw_svc_print 8
913#define qw_svc_stufftext 9
914#define qw_svc_setangle 10
915#define qw_svc_serverdata 11
916#define qw_svc_lightstyle 12
917#define qw_svc_updatefrags 14
918#define qw_svc_stopsound 16
919#define qw_svc_damage 19
920#define qw_svc_spawnstatic 20
921#define qw_svc_spawnbaseline 22
922#define qw_svc_temp_entity 23
923#define qw_svc_setpause 24
924#define qw_svc_centerprint 26
925#define qw_svc_killedmonster 27
926#define qw_svc_foundsecret 28
927#define qw_svc_spawnstaticsound 29
928#define qw_svc_intermission 30
929#define qw_svc_finale 31
930#define qw_svc_cdtrack 32
931#define qw_svc_sellscreen 33
932#define qw_svc_smallkick 34
933#define qw_svc_bigkick 35
934#define qw_svc_updateping 36
935#define qw_svc_updateentertime 37
936#define qw_svc_updatestatlong 38
937#define qw_svc_muzzleflash 39
938#define qw_svc_updateuserinfo 40
939#define qw_svc_download 41
940#define qw_svc_playerinfo 42
941#define qw_svc_nails 43
942#define qw_svc_chokecount 44
943#define qw_svc_modellist 45
944#define qw_svc_soundlist 46
945#define qw_svc_packetentities 47
946#define qw_svc_deltapacketentities 48
947#define qw_svc_maxspeed 49
948#define qw_svc_entgravity 50
949#define qw_svc_setinfo 51
950#define qw_svc_serverinfo 52
951#define qw_svc_updatepl 53
957#define qw_clc_stringcmd 4
958#define qw_clc_delta 5
959#define qw_clc_tmove 6
960#define qw_clc_upload 7
964#define QW_PF_MSEC (1<<0)
965#define QW_PF_COMMAND (1<<1)
966#define QW_PF_VELOCITY1 (1<<2)
967#define QW_PF_VELOCITY2 (1<<3)
968#define QW_PF_VELOCITY3 (1<<4)
969#define QW_PF_MODEL (1<<5)
970#define QW_PF_SKINNUM (1<<6)
971#define QW_PF_EFFECTS (1<<7)
972#define QW_PF_WEAPONFRAME (1<<8)
973#define QW_PF_DEAD (1<<9)
974#define QW_PF_GIB (1<<10)
975#define QW_PF_NOGRAV (1<<11)
980#define QW_CM_ANGLE1 (1<<0)
981#define QW_CM_ANGLE3 (1<<1)
982#define QW_CM_FORWARD (1<<2)
983#define QW_CM_SIDE (1<<3)
984#define QW_CM_UP (1<<4)
985#define QW_CM_BUTTONS (1<<5)
986#define QW_CM_IMPULSE (1<<6)
987#define QW_CM_ANGLE2 (1<<7)
991#define QW_U_ORIGIN1 (1<<9)
992#define QW_U_ORIGIN2 (1<<10)
993#define QW_U_ORIGIN3 (1<<11)
994#define QW_U_ANGLE2 (1<<12)
995#define QW_U_FRAME (1<<13)
996#define QW_U_REMOVE (1<<14)
997#define QW_U_MOREBITS (1<<15)
999#define QW_U_ANGLE1 (1<<0)
1000#define QW_U_ANGLE3 (1<<1)
1001#define QW_U_MODEL (1<<2)
1002#define QW_U_COLORMAP (1<<3)
1003#define QW_U_SKIN (1<<4)
1004#define QW_U_EFFECTS (1<<5)
1005#define QW_U_SOLID (1<<6)
1008#define QW_TE_SPIKE 0
1009#define QW_TE_SUPERSPIKE 1
1010#define QW_TE_GUNSHOT 2
1011#define QW_TE_EXPLOSION 3
1012#define QW_TE_TAREXPLOSION 4
1013#define QW_TE_LIGHTNING1 5
1014#define QW_TE_LIGHTNING2 6
1015#define QW_TE_WIZSPIKE 7
1016#define QW_TE_KNIGHTSPIKE 8
1017#define QW_TE_LIGHTNING3 9
1018#define QW_TE_LAVASPLASH 10
1019#define QW_TE_TELEPORT 11
1020#define QW_TE_BLOOD 12
1021#define QW_TE_LIGHTNINGBLOOD 13
1024#define QW_EF_BRIGHTFIELD 1
1025#define QW_EF_MUZZLEFLASH 2
1026#define QW_EF_BRIGHTLIGHT 4
1027#define QW_EF_DIMLIGHT 8
1028#define QW_EF_FLAG1 16
1029#define QW_EF_FLAG2 32
1030#define QW_EF_BLUE 64
1031#define QW_EF_RED 128
1033#define QW_UPDATE_BACKUP 64
1034#define QW_UPDATE_MASK (QW_UPDATE_BACKUP - 1)
1035#define QW_MAX_PACKET_ENTITIES 64
1040#define QW_STAT_HEALTH 0
1042#define QW_STAT_WEAPON 2
1043#define QW_STAT_AMMO 3
1044#define QW_STAT_ARMOR 4
1046#define QW_STAT_SHELLS 6
1047#define QW_STAT_NAILS 7
1048#define QW_STAT_ROCKETS 8
1049#define QW_STAT_CELLS 9
1050#define QW_STAT_ACTIVEWEAPON 10
1051#define QW_STAT_TOTALSECRETS 11
1052#define QW_STAT_TOTALMONSTERS 12
1053#define QW_STAT_SECRETS 13
1054#define QW_STAT_MONSTERS 14
1055#define QW_STAT_ITEMS 15
1059typedef struct entityframeqw_snapshot_s
1068typedef struct entityframeqw_database_s
void EntityFrame_AddFrame_Client(entityframe_database_t *d, vec3_t eye, int framenum, int numentities, const entity_state_t *entitydata)
qbool EntityFrame_WriteFrame(struct sizebuf_s *msg, int maxsize, entityframe_database_t *d, int numstates, const entity_state_t **states, int viewentnum)
#define MAX_ENTITY_DATABASE
enum protocolversion_e Protocol_EnumForNumber(int n)
enum protocolversion_e Protocol_EnumForName(const char *s)
void EntityFrame_Clear(entity_frame_t *f, vec3_t eye, int framenum)
#define MAX_ENTITY_HISTORY
qbool EntityFrameQuake_WriteFrame(struct sizebuf_s *msg, int maxsize, int numstates, const entity_state_t **states)
void EntityState_WriteExtendBits(struct sizebuf_s *msg, unsigned int bits)
void EntityFrame4_FreeDatabase(entityframe4_database_t *d)
void EntityFrame5_FreeDatabase(entityframe5_database_t *d)
void EntityState_WriteFields(const entity_state_t *ent, struct sizebuf_s *msg, unsigned int bits)
void EntityState_ReadFields(entity_state_t *e, unsigned int bits)
const char * Protocol_NameForEnum(enum protocolversion_e p)
int EntityFrame4_AckFrame(entityframe4_database_t *d, int framenum, int servermode)
int EntityState5_DeltaBitsForState(entity_state_t *o, entity_state_t *n)
void EntityFrame_FetchFrame(entityframe_database_t *d, int framenum, entity_frame_t *f)
void Protocol_UpdateClientStats(const int *stats)
qbool EntityFrameCSQC_WriteFrame(struct sizebuf_s *msg, int maxsize, int numnumbers, const unsigned short *numbers, int framenum)
void EntityFrameCSQC_LostFrame(struct client_s *client, int framenum)
int EntityState_ReadExtendBits(void)
int EntityState_DeltaBits(const entity_state_t *o, const entity_state_t *n)
qbool EntityFrame4_WriteFrame(struct sizebuf_s *msg, int maxsize, entityframe4_database_t *d, int numstates, const entity_state_t **states)
entityframe5_database_t * EntityFrame5_AllocDatabase(struct mempool_s *pool)
void EntityStateQW_ReadPlayerUpdate(void)
void EntityFrame4_ResetDatabase(entityframe4_database_t *d)
entity_state_t * EntityFrame4_GetReferenceEntity(entityframe4_database_t *d, int number)
entityframe_database_t * EntityFrame_AllocDatabase(struct mempool_s *mempool)
entity_state_t defaultstate
void EntityFrameQuake_ReadEntity(int bits)
void EntityFrame4_AddCommitEntity(entityframe4_database_t *d, const entity_state_t *s)
void EntityState5_WriteUpdate(int number, const entity_state_t *s, int changedbits, struct sizebuf_s *msg)
void EntityFrameQuake_ISeeDeadEntities(void)
int EntityFrame_MostRecentlyRecievedFrameNum(entityframe_database_t *d)
void EntityFrame5_AckFrame(entityframe5_database_t *d, int framenum)
void EntityFrame_AckFrame(entityframe_database_t *d, int frame)
#define ENTITYFRAME5_MAXSTATES
int Protocol_NumberForEnum(enum protocolversion_e p)
void EntityFrame4_CL_ReadFrame(void)
void Protocol_Names(char *buffer, size_t buffersize)
void EntityState_WriteUpdate(const entity_state_t *ent, struct sizebuf_s *msg, const entity_state_t *delta)
void EntityFrameQW_FreeDatabase(entityframeqw_database_t *d)
void EntityFrame_ClearDatabase(entityframe_database_t *d)
struct cvar_s developer_networkentities
void EntityFrame5_LostFrame(entityframe5_database_t *d, int framenum)
void Protocol_WriteStatsReliable(void)
qbool EntityFrame5_WriteFrame(struct sizebuf_s *msg, int maxsize, entityframe5_database_t *d, int numstates, const entity_state_t **states, int viewentnum, unsigned int movesequence, qbool need_empty)
void EntityFrame_AddFrame_Server(entityframe_database_t *d, vec3_t eye, int framenum, int numentities, const entity_state_t **entitydata)
entityframeqw_database_t * EntityFrameQW_AllocDatabase(struct mempool_s *pool)
entityframe4_database_t * EntityFrame4_AllocDatabase(struct mempool_s *pool)
#define ENTITYFRAME5_MAXPACKETLOGS
#define QW_MAX_PACKET_ENTITIES
#define ENTITYFRAME5_PRIORITYLEVELS
void EntityFrameQW_CL_ReadFrame(qbool delta)
void EntityFrame5_CL_ReadFrame(void)
void EntityFrame_FreeDatabase(entityframe_database_t *d)
void EntityFrame_CL_ReadFrame(void)
unsigned short specialvisibilityradius
unsigned short viewmodelforclient
unsigned short modelindex
unsigned short drawonlytoclient
unsigned short traileffectnum
skeleton_t skeletonobject
unsigned short nodrawtoclient
unsigned char internaleffects
unsigned short exteriormodelforclient
unsigned int customizeentityforclient
unsigned char lightpflags
entity_state_t * referenceentity
entity_database4_commit_t * currentcommit
struct mempool_s * mempool
unsigned char * visiblebits
unsigned char * priorities
entity_frame_t deltaframe
const struct model_s * model
struct matrix4x4_s * relativetransforms