13 if (
fabs(
n->origin[0] - o->
origin[0]) > (1.0f / 256.0f))
15 if (
fabs(
n->origin[1] - o->
origin[1]) > (1.0f / 256.0f))
17 if (
fabs(
n->origin[2] - o->
origin[2]) > (1.0f / 256.0f))
19 if ((
unsigned char) (
n->angles[0] * (256.0f / 360.0f)) != (
unsigned char) (o->
angles[0] * (256.0f / 360.0f)))
21 if ((
unsigned char) (
n->angles[1] * (256.0f / 360.0f)) != (
unsigned char) (o->
angles[1] * (256.0f / 360.0f)))
23 if ((
unsigned char) (
n->angles[2] * (256.0f / 360.0f)) != (
unsigned char) (o->
angles[2] * (256.0f / 360.0f)))
29 if ((
n->frame ^ o->
frame) & 0x00FF)
31 if ((
n->frame ^ o->
frame) & 0xFF00)
33 if ((
n->effects ^ o->
effects) & 0x00FF)
35 if ((
n->effects ^ o->
effects) & 0xFF00)
39 if (
n->skin != o->
skin)
53 if (
n->light[0] != o->
light[0] ||
n->light[1] != o->
light[1] ||
n->light[2] != o->
light[2] ||
n->light[3] != o->
light[3])
62 if (bits & 0xFF000000)
64 if (bits & 0x00FF0000)
66 if (bits & 0x0000FF00)
75 if (bits & 0x00000080)
78 if (bits & 0x00008000)
81 if (bits & 0x00800000)
243 Con_Print(
"EntityFrame_AddFrame: tried to add out of sequence frame to database\n");
245 Con_Print(
"EntityFrame_AddFrame: out of sequence frames in database\n");
279 for (
i = 0;
i < numstates;
i++)
282 if (ent->
number == viewentnum)
301 for (
i = 0;
i < numstates;
i++)
340 qbool need_empty =
false;
341 int i, numsendstates, numcsqcsendstates;
348 if (msg->
cursize + 25 > maxsize)
402 numcsqcsendstates = 0;
415 s->
flags &= ~RENDER_EXTERIORMODEL;
422 Con_Printf(
"entity %d is in sv.sendentities and marked, but not active, please breakpoint me\n", s->
number);
void EntityFrame_FetchFrame(entityframe_database_t *d, int framenum, entity_frame_t *f)
void EntityFrame_ClearDatabase(entityframe_database_t *d)
void MSG_WriteCoord32f(sizebuf_t *sb, float f)
void MSG_WriteShort(sizebuf_t *sb, int c)
void MSG_WriteAngle16i(sizebuf_t *sb, float f)
void MSG_WriteLong(sizebuf_t *sb, int c)
void MSG_WriteByte(sizebuf_t *sb, int c)
void MSG_WriteFloat(sizebuf_t *sb, float f)
void MSG_WriteAngle8i(sizebuf_t *sb, float f)
void MSG_WriteCoord16i(sizebuf_t *sb, float f)
@ PROTOCOL_DARKPLACES2
various changes
@ PROTOCOL_DARKPLACES4
various changes
@ PROTOCOL_DARKPLACES3
uses EntityFrame4 entity snapshot encoder/decoder which is broken, this attempted to do partial snaps...
@ PROTOCOL_DARKPLACES1
uses EntityFrame entity snapshot encoder/decoder which is a QuakeWorld-like entity snapshot delta com...
void Con_Print(const char *msg)
Prints to all appropriate console targets, and adds timestamps.
void Con_Printf(const char *fmt,...)
Prints to all appropriate console targets.
#define bound(min, num, max)
#define VectorSet(vec, x, y, z)
#define VectorCopy(in, out)
#define VectorAdd(a, b, out)
#define VectorMA(a, scale, b, out)
#define PRVM_serveredictvector(ed, fieldname)
#define PRVM_EDICT_TO_PROG(e)
#define PRVM_EDICT_NUM(n)
#define PRVM_serveredictfunction(ed, fieldname)
entity_state_t defaultstate
void Protocol_WriteStatsReliable(void)
#define RENDER_EXTERIORMODEL
#define MAX_ENTITY_DATABASE
#define ENTITYSIZEPROFILING_START(msg, num, flags)
#define MAX_ENTITY_HISTORY
qbool EntityFrameQuake_WriteFrame(struct sizebuf_s *msg, int maxsize, int numstates, const entity_state_t **states)
qbool EntityFrameCSQC_WriteFrame(struct sizebuf_s *msg, int maxsize, int numnumbers, const unsigned short *numbers, int framenum)
qbool EntityFrame4_WriteFrame(struct sizebuf_s *msg, int maxsize, entityframe4_database_t *d, int numstates, const entity_state_t **states)
#define ENTITYSIZEPROFILING_END(msg, num, flags)
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)
#define RENDER_LOWPRECISION
cvar_t sv_cullentities_stats
void SV_AddCameraEyes(void)
cvar_t sv_cullentities_trace_prediction
qbool SV_CanSeeBox(int numsamples, vec_t eyejitter, vec_t enlarge, vec_t entboxexpand, vec3_t eye, vec3_t entboxmins, vec3_t entboxmaxs)
void SV_MarkWriteEntityStateToClient(entity_state_t *s, client_t *client)
server_static_t svs
persistant server info
entityframe_database_t * entitydatabase
unsigned int movesequence
entityframe5_database_t * entitydatabase5
char name[MAX_SCOREBOARDNAME]
entityframe4_database_t * entitydatabase4
int clientcamera
clientcamera (entity to use as camera)
unsigned int lastmovesequence
int num_skippedentityframes
float ping
LadyHavoc: can be used for prediction or whatever...
entity_state_t entitydata[MAX_ENTITY_DATABASE]
unsigned short modelindex
unsigned short exteriormodelforclient
unsigned char lightpflags
entity_frameinfo_t frames[MAX_ENTITY_HISTORY]
entity_state_t entitydata[MAX_ENTITY_DATABASE]
entity_frame_t deltaframe
struct client_s * clients
client slots
unsigned char * writeentitiestoclient_pvs
vec3_t writeentitiestoclient_eyes[MAX_CLIENTNETWORKEYES]
int writeentitiestoclient_stats_culled_pvs
int writeentitiestoclient_stats_totalentities
int sententities[MAX_EDICTS]
int writeentitiestoclient_cliententitynumber
int writeentitiestoclient_numeyes
sizebuf_t * writeentitiestoclient_msg
const entity_state_t * writeentitiestoclient_sendstates[MAX_EDICTS]
int writeentitiestoclient_stats_visibleentities
unsigned short writeentitiestoclient_csqcsendstates[MAX_EDICTS]
entity_state_t sendentities[MAX_EDICTS]
int writeentitiestoclient_stats_culled_trace
struct model_s * worldmodel
int writeentitiestoclient_clientnumber
protocolversion_t protocol
one of the PROTOCOL_ values
void EntityState_WriteExtendBits(sizebuf_t *msg, unsigned int bits)
void EntityState_WriteUpdate(const entity_state_t *ent, sizebuf_t *msg, const entity_state_t *delta)
int EntityState_DeltaBits(const entity_state_t *o, const entity_state_t *n)
void SV_WriteEntitiesToClient(client_t *client, prvm_edict_t *clent, sizebuf_t *msg, int maxsize)
void EntityState_WriteFields(const entity_state_t *ent, sizebuf_t *msg, unsigned int bits)
void EntityFrame_AddFrame_Server(entityframe_database_t *d, vec3_t eye, int framenum, int numentities, const entity_state_t **entitydata)
qbool EntityFrame_WriteFrame(sizebuf_t *msg, int maxsize, entityframe_database_t *d, int numstates, const entity_state_t **states, int viewentnum)
cvar_t sv_cullentities_trace_prediction_time