DarkPlaces
Game engine based on the Quake 1 engine by id Software, developed by LadyHavoc
 
com_ents.c File Reference
#include "quakedef.h"
#include "protocol.h"
+ Include dependency graph for com_ents.c:

Go to the source code of this file.

Functions

void EntityFrame_AckFrame (entityframe_database_t *d, int frame)
 
entityframe_database_tEntityFrame_AllocDatabase (mempool_t *mempool)
 
void EntityFrame_Clear (entity_frame_t *f, vec3_t eye, int framenum)
 
void EntityFrame_ClearDatabase (entityframe_database_t *d)
 
void EntityFrame_FetchFrame (entityframe_database_t *d, int framenum, entity_frame_t *f)
 
void EntityFrame_FreeDatabase (entityframe_database_t *d)
 

Function Documentation

◆ EntityFrame_AckFrame()

void EntityFrame_AckFrame ( entityframe_database_t * d,
int frame )

Definition at line 35 of file com_ents.c.

36{
37 int i;
38 d->ackframenum = frame;
39 for (i = 0;i < d->numframes && d->frames[i].framenum < frame;i++);
40 // ignore outdated frame acks (out of order packets)
41 if (i == 0)
42 return;
43 d->numframes -= i;
44 // if some queue is left, slide it down to beginning of array
45 if (d->numframes)
46 memmove(&d->frames[0], &d->frames[i], sizeof(d->frames[0]) * d->numframes);
47}
float frame
int i
entity_frameinfo_t frames[MAX_ENTITY_HISTORY]
Definition protocol.h:596

References entityframe_database_t::ackframenum, frame, entity_frameinfo_t::framenum, entityframe_database_t::frames, i, and entityframe_database_t::numframes.

Referenced by EntityFrame_CL_ReadFrame(), and SV_FrameAck().

◆ EntityFrame_AllocDatabase()

entityframe_database_t * EntityFrame_AllocDatabase ( mempool_t * mempool)

Definition at line 5 of file com_ents.c.

6{
8}
#define Mem_Alloc(pool, size)
Definition zone.h:92

References Mem_Alloc.

Referenced by EntityFrame_CL_ReadFrame(), and SV_SendServerinfo().

◆ EntityFrame_Clear()

void EntityFrame_Clear ( entity_frame_t * f,
vec3_t eye,
int framenum )

Definition at line 23 of file com_ents.c.

24{
25 f->time = 0;
26 f->framenum = framenum;
27 f->numentities = 0;
28 if (eye == NULL)
29 VectorClear(f->eye);
30 else
31 VectorCopy(eye, f->eye);
32}
#define VectorClear(a)
Definition mathlib.h:97
#define VectorCopy(in, out)
Definition mathlib.h:101
#define NULL
Definition qtypes.h:12
float f

References f, NULL, VectorClear, and VectorCopy.

Referenced by EntityFrame_CL_ReadFrame(), and EntityFrame_FetchFrame().

◆ EntityFrame_ClearDatabase()

void EntityFrame_ClearDatabase ( entityframe_database_t * d)

Definition at line 17 of file com_ents.c.

18{
19 memset(d, 0, sizeof(*d));
20}

Referenced by EntityFrame_AddFrame_Client(), and EntityFrame_AddFrame_Server().

◆ EntityFrame_FetchFrame()

void EntityFrame_FetchFrame ( entityframe_database_t * d,
int framenum,
entity_frame_t * f )

Definition at line 50 of file com_ents.c.

51{
52 int i, n;
54 for (i = 0;i < d->numframes && d->frames[i].framenum < framenum;i++);
55 if (i < d->numframes && framenum == d->frames[i].framenum)
56 {
57 f->framenum = framenum;
58 f->numentities = d->frames[i].endentity - d->frames[i].firstentity;
60 if (n > f->numentities)
61 n = f->numentities;
62 memcpy(f->entitydata, d->entitydata + d->frames[i].firstentity % MAX_ENTITY_DATABASE, sizeof(*f->entitydata) * n);
63 if (f->numentities > n)
64 memcpy(f->entitydata + n, d->entitydata, sizeof(*f->entitydata) * (f->numentities - n));
65 VectorCopy(d->eye, f->eye);
66 }
67}
void EntityFrame_Clear(entity_frame_t *f, vec3_t eye, int framenum)
Definition com_ents.c:23
#define n(x, y)
#define MAX_ENTITY_DATABASE
Definition protocol.h:554
entity_state_t entitydata[MAX_ENTITY_DATABASE]
Definition protocol.h:598

References entity_frameinfo_t::endentity, entityframe_database_t::entitydata, EntityFrame_Clear(), entityframe_database_t::eye, f, entity_frameinfo_t::firstentity, entity_frameinfo_t::framenum, entityframe_database_t::frames, i, MAX_ENTITY_DATABASE, n, NULL, entityframe_database_t::numframes, and VectorCopy.

Referenced by EntityFrame_CL_ReadFrame(), and EntityFrame_WriteFrame().

◆ EntityFrame_FreeDatabase()

void EntityFrame_FreeDatabase ( entityframe_database_t * d)

Definition at line 11 of file com_ents.c.

12{
13 Mem_Free(d);
14}
#define Mem_Free(mem)
Definition zone.h:96

References Mem_Free.

Referenced by SV_DropClient(), and SV_SendServerinfo().