121 va_start(argptr,fmt);
143 va_start(argptr,fmt);
168 for (
i=0 ;
i<3 ;
i++)
232 int sound_num, field_mask,
i, ent, speed4000;
236 if (nvolume < 0 || nvolume > 255)
238 Con_Printf (
"SV_StartSound: volume = %i\n", nvolume);
242 if (attenuation < 0 || attenuation > 4)
244 Con_Printf (
"SV_StartSound: attenuation = %f\n", attenuation);
250 Con_Printf (
"SV_StartSound: channel = %i\n", channel);
266 speed4000 = (
int)
floor(speed * 4000.0f + 0.5f);
272 if (speed4000 && speed4000 != 4000)
274 if (ent >= 8192 || channel < 0 || channel > 7)
276 if (sound_num >= 256)
299 for (
i = 0;
i < 3;
i++)
322 int sound_num, field_mask,
i, speed4000;
324 if (nvolume < 0 || nvolume > 255)
326 Con_Printf (
"SV_StartPointSound: volume = %i\n", nvolume);
330 if (attenuation < 0 || attenuation > 4)
332 Con_Printf (
"SV_StartPointSound: attenuation = %f\n", attenuation);
344 speed4000 = (
int)(speed * 40.0f);
350 if (sound_num >= 256)
352 if (speed4000 && speed4000 != 4000)
370 for (
i = 0;
i < 3;
i++)
398 unsigned int sendflags;
400 unsigned int modelindex,
effects,
flags, glowsize, lightstyle, lightpflags, light[4], specialvisibilityradius;
401 unsigned int customizeentityforclient;
402 unsigned int sendentity;
405 vec3_t cullmins, cullmaxs;
431 glowsize = (
unsigned char)
bound(0,
i, 255);
439 light[0] = (
unsigned short)
bound(0,
f, 65535);
441 light[1] = (
unsigned short)
bound(0,
f, 65535);
443 light[2] = (
unsigned short)
bound(0,
f, 65535);
445 light[3] = (
unsigned short)
bound(0,
f, 65535);
461 light[0] = (
int)(0.2*256);
462 light[1] = (
int)(1.0*256);
463 light[2] = (
int)(0.2*256);
469 specialvisibilityradius = 0;
471 specialvisibilityradius =
max(specialvisibilityradius, light[3]);
473 specialvisibilityradius =
max(specialvisibilityradius, glowsize * 4);
475 specialvisibilityradius =
max(specialvisibilityradius, 100);
479 specialvisibilityradius =
max(specialvisibilityradius, 80);
481 specialvisibilityradius =
max(specialvisibilityradius, 100);
483 specialvisibilityradius =
max(specialvisibilityradius, 400);
485 specialvisibilityradius =
max(specialvisibilityradius, 200);
487 specialvisibilityradius =
max(specialvisibilityradius, 200);
489 specialvisibilityradius =
max(specialvisibilityradius, 200);
491 specialvisibilityradius =
max(specialvisibilityradius, 250);
493 specialvisibilityradius =
max(specialvisibilityradius, 100);
609 cs->
light[0] = light[0];
610 cs->
light[1] = light[1];
611 cs->
light[2] = light[2];
612 cs->
light[3] = light[3];
646 if (specialvisibilityradius)
648 cullmins[0] =
min(cullmins[0], cs->
origin[0] - specialvisibilityradius);
649 cullmins[1] =
min(cullmins[1], cs->
origin[1] - specialvisibilityradius);
650 cullmins[2] =
min(cullmins[2], cs->
origin[2] - specialvisibilityradius);
651 cullmaxs[0] =
max(cullmaxs[0], cs->
origin[0] + specialvisibilityradius);
652 cullmaxs[1] =
max(cullmaxs[1], cs->
origin[1] + specialvisibilityradius);
653 cullmaxs[2] =
max(cullmaxs[2], cs->
origin[2] + specialvisibilityradius);
688 sendflags = 0xFFFFFF;
694 svs.
clients[
i].csqcentitysendflags[enumber] |= sendflags;
721#define MAX_LINEOFSIGHTTRACES 64
728 float starttransformed[3], endtransformed[3];
729 float boxminstransformed[3], boxmaxstransformed[3];
730 float localboxcenter[3], localboxextents[3], localboxmins[3], localboxmaxs[3];
733 int originalnumtouchedicts;
734 int numtouchedicts = 0;
740 vec3_t eyemins, eyemaxs, start;
742 vec3_t clipboxmins, clipboxmaxs;
748 eyemins[0] = eye[0] - eyejitter;
749 eyemaxs[0] = eye[0] + eyejitter;
750 eyemins[1] = eye[1] - eyejitter;
751 eyemaxs[1] = eye[1] + eyejitter;
752 eyemins[2] = eye[2] - eyejitter;
753 eyemaxs[2] = eye[2] + eyejitter;
755 boxmins[0] = (enlarge+1) * entboxmins[0] - enlarge * entboxmaxs[0] - entboxexpand;
756 boxmaxs[0] = (enlarge+1) * entboxmaxs[0] - enlarge * entboxmins[0] + entboxexpand;
757 boxmins[1] = (enlarge+1) * entboxmins[1] - enlarge * entboxmaxs[1] - entboxexpand;
758 boxmaxs[1] = (enlarge+1) * entboxmaxs[1] - enlarge * entboxmins[1] + entboxexpand;
759 boxmins[2] = (enlarge+1) * entboxmins[2] - enlarge * entboxmaxs[2] - entboxexpand;
760 boxmaxs[2] = (enlarge+1) * entboxmaxs[2] - enlarge * entboxmins[2] + entboxexpand;
762 VectorMAM(0.5f, boxmins, 0.5f, boxmaxs, endpoints[0]);
763 for (traceindex = 1;traceindex < numtraces;traceindex++)
769 for (traceindex = 0;traceindex < numtraces;traceindex++)
771 clipboxmins[0] =
min(clipboxmins[0], endpoints[traceindex][0]);
772 clipboxmins[1] =
min(clipboxmins[1], endpoints[traceindex][1]);
773 clipboxmins[2] =
min(clipboxmins[2], endpoints[traceindex][2]);
774 clipboxmaxs[0] =
max(clipboxmaxs[0], endpoints[traceindex][0]);
775 clipboxmaxs[1] =
max(clipboxmaxs[1], endpoints[traceindex][1]);
776 clipboxmaxs[2] =
max(clipboxmaxs[2], endpoints[traceindex][2]);
789 originalnumtouchedicts = numtouchedicts;
791 for (touchindex = 0;touchindex < originalnumtouchedicts;touchindex++)
793 touch = touchedicts[touchindex];
805 touchedicts[numtouchedicts++] = touch;
812 for (traceindex = 0;traceindex < numtraces;traceindex++)
819 for (touchindex = 0;touchindex < numtouchedicts;touchindex++)
821 touch = touchedicts[touchindex];
827 Matrix4x4_CreateFromQuakeEntity(&matrix,
PRVM_serveredictvector(touch,
origin)[0],
PRVM_serveredictvector(touch,
origin)[1],
PRVM_serveredictvector(touch,
origin)[2], pitchsign *
PRVM_serveredictvector(touch,
angles)[0],
PRVM_serveredictvector(touch,
angles)[1],
PRVM_serveredictvector(touch,
angles)[2], 1);
835 VectorMAM(0.5f, boxminstransformed, 0.5f, boxmaxstransformed, localboxcenter);
836 localboxextents[0] =
fabs(boxmaxstransformed[0] - localboxcenter[0]);
837 localboxextents[1] =
fabs(boxmaxstransformed[1] - localboxcenter[1]);
838 localboxextents[2] =
fabs(boxmaxstransformed[2] - localboxcenter[2]);
839 localboxmins[0] = localboxcenter[0] - localboxextents[0];
840 localboxmins[1] = localboxcenter[1] - localboxextents[1];
841 localboxmins[2] = localboxcenter[2] - localboxextents[2];
842 localboxmaxs[0] = localboxcenter[0] + localboxextents[0];
843 localboxmaxs[1] = localboxcenter[1] + localboxextents[1];
844 localboxmaxs[2] = localboxcenter[2] + localboxextents[2];
845 if (!
model->brush.TraceLineOfSight(
model, starttransformed, endtransformed, localboxmins, localboxmaxs))
853 if (touchindex < numtouchedicts)
990#if MAX_LEVELNETWORKEYES > 0
991#define MAX_EYE_RECURSION 1
1020 cameras[n_cameras] = e;
1042 if(eye_levels[k] <= MAX_EYE_RECURSION)
1101 float *statsf = (
float *)stats;
1113 for (
i=0 ;
i<3 ;
i++)
1140 for (
i=0 ;
i < 3 ;
i++)
1176 for (
i=0 ;
i<3 ;
i++)
1270 if (bits >= 16777216)
1287 for (
i=0 ;
i<3 ;
i++)
1354 for (
i = 0;
i < 32;
i++)
1390 int numsegments, j, split;
1401 if (numsegments == 1)
1408 if (msg->
cursize + split <= maxsize)
1427 int clientrate, maxrate, maxsize, maxsize2, downloadsize;
1470 maxsize =
sizeof(sv_sendclientdatagram_buf);
1471 maxsize2 =
sizeof(sv_sendclientdatagram_buf);
1493 maxsize = (
int)(clientrate * timedelta) - 28;
1496 maxsize =
bound(128, maxsize, 1400);
1510 maxsize =
sizeof(sv_sendclientdatagram_buf);
1511 maxsize2 =
sizeof(sv_sendclientdatagram_buf);
1513 clientrate = 1000000000;
1521 msg.
data = sv_sendclientdatagram_buf;
1522 msg.
maxsize =
sizeof(sv_sendclientdatagram_buf);
1558 downloadsize =
min(maxsize*2,maxsize2) - msg.
cursize - 7;
1562 unsigned char data[1400];
1564 downloadsize =
min(downloadsize, (
int)
sizeof(
data));
1575 if (downloadsize > 0)
1699 int i, prepared =
false;
1702 Sys_Error(
"SV_SendClientMessages: no quakeworld support\n");
#define IS_OLDNEXUIZ_DERIVED(g)
@ GAME_TENEBRAE
full of evil hackery
void MSG_WriteCoord32f(sizebuf_t *sb, float f)
void MSG_WriteShort(sizebuf_t *sb, int c)
void MSG_WriteString(sizebuf_t *sb, const char *s)
void MSG_WriteAngle16i(sizebuf_t *sb, float f)
void MSG_WriteLong(sizebuf_t *sb, int c)
void MSG_WriteCoord(sizebuf_t *sb, float f, protocolversion_t protocol)
void MSG_WriteByte(sizebuf_t *sb, int c)
void MSG_WriteFloat(sizebuf_t *sb, float f)
void MSG_WriteAngle(sizebuf_t *sb, float f, protocolversion_t protocol)
void MSG_WriteChar(sizebuf_t *sb, int c)
void MSG_WriteCoord16i(sizebuf_t *sb, float f)
void SZ_Clear(sizebuf_t *buf)
int dpvsnprintf(char *buffer, size_t buffersize, const char *format, va_list args)
Returns the number of printed characters, excluding the final '\0' or returns -1 if the buffer isn't ...
void SZ_Write(sizebuf_t *buf, const unsigned char *data, int length)
@ PROTOCOL_DARKPLACES2
various changes
@ PROTOCOL_DARKPLACES4
various changes
@ PROTOCOL_NEHAHRABJP2
same as NEHAHRABJP but with 16bit soundindex
@ PROTOCOL_DARKPLACES3
uses EntityFrame4 entity snapshot encoder/decoder which is broken, this attempted to do partial snaps...
@ PROTOCOL_NEHAHRABJP
same as QUAKEDP but with 16bit modelindex
@ PROTOCOL_DARKPLACES5
uses EntityFrame5 entity snapshot encoder/decoder which is based on a Tribes networking article at ht...
@ PROTOCOL_QUAKEDP
darkplaces extended quake protocol (used by TomazQuake and others), backwards compatible as long as n...
@ PROTOCOL_QUAKE
quake (aka netquake/normalquake/nq) protocol
@ PROTOCOL_NEHAHRABJP3
same as NEHAHRABJP2 but with some changes
@ PROTOCOL_NEHAHRAMOVIE
Nehahra movie protocol, a big nasty hack dating back to early days of the Quake Standards Group (but ...
@ PROTOCOL_QUAKEWORLD
quakeworld protocol
@ PROTOCOL_DARKPLACES1
uses EntityFrame entity snapshot encoder/decoder which is a QuakeWorld-like entity snapshot delta com...
#define dp_strlcpy(dst, src, dsize)
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.
void Cvar_SetValueQuick(cvar_t *var, float value)
entity viewmodelforclient
entity exteriormodeltoclient
fs_offset_t FS_Read(qfile_t *file, void *buffer, size_t buffersize)
fs_offset_t FS_Tell(qfile_t *file)
static int(ZEXPORT *qz_inflate)(z_stream *strm
static int const char * version
GLenum GLenum GLsizei count
GLsizeiptr const GLvoid * data
static lhnetaddresstype_t LHNETADDRESS_GetAddressType(const lhnetaddress_t *address)
#define bound(min, num, max)
#define lhrandom(MIN, MAX)
LadyHavoc: this function never returns exactly MIN or exactly MAX, because of a QuakeC bug in id1 whe...
#define VectorSet(vec, x, y, z)
#define VectorCompare(a, b)
#define VectorCopy(in, out)
#define VectorMAM(scale1, b1, scale2, b2, out)
#define VectorAdd(a, b, out)
#define VectorMA(a, scale, b, out)
void Matrix4x4_Transform(const matrix4x4_t *in, const float v[3], float out[3])
void Matrix4x4_CreateFromQuakeEntity(matrix4x4_t *out, double x, double y, double z, double pitch, double yaw, double roll, double scale)
void Matrix4x4_Invert_Simple(matrix4x4_t *out, const matrix4x4_t *in1)
#define CHECKPVSBIT(pvs, b)
qbool NetConn_CanSend(netconn_t *conn)
int NetConn_SendUnreliableMessage(netconn_t *conn, sizebuf_t *data, protocolversion_t protocol, int rate, int burstsize, qbool quakesignon_suppressreliables)
#define MAX_ENTITYCLUSTERS
#define PRVM_serveredictvector(ed, fieldname)
#define PRVM_serverglobaledict(fieldname)
#define PRVM_serveredictedict(ed, fieldname)
int PRVM_SetEngineString(prvm_prog_t *prog, const char *s)
#define PRVM_EDICT_NUM(n)
#define PRVM_NEXT_EDICT(e)
const char * PRVM_GetString(prvm_prog_t *prog, int num)
#define PRVM_NUM_FOR_EDICT(e)
#define PRVM_PROG_TO_EDICT(n)
#define PRVM_serverglobalfloat(fieldname)
#define PRVM_serveredictfloat(ed, fieldname)
#define PRVM_serveredictstring(ed, fieldname)
#define PRVM_serveredictfunction(ed, fieldname)
#define PRVM_serverglobalvector(fieldname)
void Protocol_UpdateClientStats(const int *stats)
entity_state_t defaultstate
#define DEFAULT_VIEWHEIGHT
#define RENDER_COMPLEXANIMATION
#define SU_INWATER
no data follows, the bit is it
#define PFLAGS_FULLDYNAMIC
#define SND_SPEEDUSHORT4000
#define SU_EXTEND2
another byte to follow, future expansion
#define RENDER_COLORMAPPED
#define SU_VIEWZOOM
byte factor (0 = 0.0 (not valid), 255 = 1.0)
#define SU_ONGROUND
no data follows, the bit is it
#define RENDER_LOWPRECISION
#define MAX_INPUTLINE
maximum size of console commandline, QuakeC strings, and many other text processing buffers
#define MAX_EDICTS
max number of objects in game world at once (32768 protocol limit)
#define NET_MAXMESSAGE
max reliable packet size (sent as multiple fragments of MAX_PACKETFRAGMENT)
#define NET_MINRATE
limits "rate" and "sv_maxrate" cvars
#define MAX_PACKETFRAGMENT
max length of packet fragment
#define MAX_LEVELNETWORKEYES
max number of locations that can be added to pvs when culling network entities (must be at least 2 fo...
#define MAX_CLIENTNETWORKEYES
max number of locations that can be added to pvs when culling network entities (must be at least 2 fo...
#define MAX_MODELS
max number of models loaded at once (including during level transitions)
#define STAT_MOVEVARS_WARSOWBUNNY_ACCEL
DP.
#define STAT_MOVEFLAGS
DP.
#define STAT_MOVEVARS_MAXAIRSPEED
DP.
#define STAT_MOVEVARS_AIRACCELERATE
DP.
#define STAT_MOVEVARS_WATERACCELERATE
DP.
#define STAT_TOTALMONSTERS
#define STAT_MOVEVARS_AIRACCEL_QW
DP.
#define STAT_MOVEVARS_AIRSTOPACCELERATE
DP.
#define STAT_MOVEVARS_TIMESCALE
DP.
#define STAT_MOVEVARS_AIRSTRAFEACCEL_QW
DP.
#define STAT_MOVEVARS_AIRCONTROL
DP.
#define STAT_MOVEVARS_WARSOWBUNNY_BACKTOSIDERATIO
DP.
#define STAT_MOVEVARS_GRAVITY
DP.
#define STAT_MOVEVARS_AIRSTRAFEACCELERATE
DP.
#define STAT_MOVEVARS_AIRACCEL_QW_STRETCHFACTOR
DP.
#define STAT_MOVEVARS_TICRATE
DP.
#define STAT_TOTALSECRETS
#define STAT_FRAGLIMIT
DP.
#define STAT_ACTIVEWEAPON
#define STAT_MOVEVARS_SPECTATORMAXSPEED
DP.
#define STAT_MOVEVARS_MAXSPEED
DP.
#define STAT_MOVEVARS_STEPHEIGHT
DP.
#define STAT_MOVEVARS_AIRSPEEDLIMIT_NONQW
DP.
#define STAT_MOVEVARS_AIRCONTROL_PENALTY
DP.
#define STAT_MOVEVARS_AIRACCEL_SIDEWAYS_FRICTION
DP.
#define STAT_MOVEVARS_WARSOWBUNNY_AIRFORWARDACCEL
DP.
#define STAT_MOVEVARS_MAXAIRSTRAFESPEED
DP.
#define STAT_MOVEVARS_STOPSPEED
DP.
#define STAT_MOVEVARS_ACCELERATE
DP.
#define STAT_MOVEVARS_ENTGRAVITY
DP.
#define STAT_MOVEVARS_WATERFRICTION
DP.
#define STAT_MOVEVARS_EDGEFRICTION
DP.
#define STAT_TIMELIMIT
DP.
#define STAT_MOVEVARS_AIRCONTROL_POWER
DP.
#define STAT_ITEMS
FTE, DP.
#define STAT_MOVEVARS_WARSOWBUNNY_TURNACCEL
DP.
#define STAT_MOVEVARS_JUMPVELOCITY
DP.
#define STAT_MOVEVARS_WARSOWBUNNY_TOPSPEED
DP.
#define STAT_MOVEVARS_FRICTION
DP.
#define STAT_VIEWHEIGHT
FTE, DP.
#define MOVEFLAG_Q2AIRACCELERATE
#define MOVEFLAG_NOGRAVITYONGROUND
#define MOVEFLAG_GRAVITYUNAFFECTEDBYTICRATE
#define FL_MONSTER
movement is smoothed on the client side by step based interpolation
int SV_SoundIndex(const char *s, int precachemode)
cvar_t sv_maxairstrafespeed
cvar_t sv_airstopaccelerate
cvar_t sv_cullentities_trace_enlarge
cvar_t sv_cullentities_pvs
void SV_SetIdealPitch(void)
void VM_SV_UpdateCustomStats(client_t *client, prvm_edict_t *ent, sizebuf_t *msg, int *stats)
cvar_t sv_airspeedlimit_nonqw
void SV_Name(int clientnum)
int SV_ModelIndex(const char *s, int precachemode)
cvar_t sv_gameplayfix_nogravityonground
cvar_t sv_wateraccelerate
model_t * SV_GetModelByIndex(int modelindex)
cvar_t sv_aircontrol_penalty
cvar_t sv_cullentities_nevercullbmodels
int SV_EntitiesInBox(const vec3_t mins, const vec3_t maxs, int maxedicts, prvm_edict_t **resultedicts)
cvar_t sv_airstrafeaccelerate
void SV_WriteEntitiesToClient(client_t *client, prvm_edict_t *clent, sizebuf_t *msg, int maxsize)
cvar_t sv_gameplayfix_gravityunaffectedbyticrate
cvar_t sv_gameplayfix_q2airaccelerate
cvar_t sv_aircontrol_power
int SV_GetPitchSign(prvm_prog_t *prog, prvm_edict_t *ent)
void SV_DropClient(qbool leaving, const char *reason,...)
cvar_t sv_airstrafeaccel_qw
model_t * SV_GetModelFromEdict(prvm_edict_t *ed)
server_static_t svs
persistant server info
cvar_t sv_cullentities_trace_samples
cvar_t sv_cullentities_trace
cvar_t sv_cullentities_trace_samples_extra
#define MOVETYPE_STEP
gravity, special edge handling, special step based client side interpolation
cvar_t sv_airaccel_sideways_friction
cvar_t sv_cullentities_trace_delay
#define SOLID_BSP
bsp clip, touch on edge, block
#define DEFAULT_SOUND_PACKET_ATTENUATION
#define CHAN_ENGINE2NET(c)
#define DEFAULT_SOUND_PACKET_VOLUME
char playermodel[MAX_QPATH]
qbool active
false = empty client slot
qbool begun
false = don't send datagrams
char weaponmodel[MAX_QPATH]
cache weaponmodel name lookups
double keepalivetime
keepalive messages must be sent periodically during signon
int unreliablemsg_splitpoint[NET_MAXMESSAGE/16]
qbool clientconnectcalled
false = don't do ClientDisconnect on drop
int unreliablemsg_splitpoints
int rate
requested rate in bytes per second
int sendsignon
1 = send svc_serverinfo and advance to 2, 2 doesn't send, then advances to 0 (allowing unlimited send...
qbool fixangle_angles_set
char playerskin[MAX_QPATH]
char name[MAX_SCOREBOARDNAME]
int clientcamera
clientcamera (entity to use as camera)
netconn_t * netconnection
communications handle
int rate_burstsize
temporarily exceed rate by this amount of bytes
prvm_edict_t * edict
PRVM_EDICT_NUM(clientnum+1)
framegroupblend_t framegroupblend[4]
unsigned short specialvisibilityradius
unsigned short viewmodelforclient
unsigned short modelindex
unsigned short drawonlytoclient
unsigned char colormod[3]
unsigned short traileffectnum
skeleton_t skeletonobject
unsigned short nodrawtoclient
unsigned short exteriormodelforclient
unsigned int customizeentityforclient
unsigned char lightpflags
double realtime
the accumulated mainloop time since application started (with filtering), without any slowmo or clamp...
lhnetaddress_t peeraddress
int sendMessageLength
reliable message that is currently sending (for building fragments)
sizebuf_t message
writing buffer to send to peer as the next reliable message can be added to at any time,...
qbool free
true if this edict is unused
union prvm_edict_t::@29 priv
struct edict_engineprivate_s * server
FIXME: this server pointer really means world, not server (it is used by both server qc and client qc...
int num_edicts
copies of some vars that were former read from sv
int max_edicts
number of edicts for which space has been (should be) allocated
void(* ExecuteProgram)(struct prvm_prog_s *prog, func_t fnum, const char *errormessage)
pointer to one of the *VM_ExecuteProgram functions
struct client_s * clients
client slots
int maxclients
number of svs.clients slots (updated by maxplayers command)
unsigned char * writeentitiestoclient_pvs
vec3_t writeentitiestoclient_eyes[MAX_CLIENTNETWORKEYES]
int sententitiesconsideration[MAX_EDICTS]
int writeentitiestoclient_stats_culled_pvs
int writeentitiestoclient_stats_totalentities
entity_state_t * sendentitiesindex[MAX_EDICTS]
int sententities[MAX_EDICTS]
int writeentitiestoclient_cliententitynumber
sizebuf_t reliable_datagram
int writeentitiestoclient_numeyes
int writeentitiestoclient_stats_visibleentities
entity_state_t sendentities[MAX_EDICTS]
int writeentitiestoclient_stats_culled_trace
struct model_s * worldmodel
unsigned char csqcentityversion[MAX_EDICTS]
legacy support for self.Version based csqc entity networking
struct model_s * models[MAX_MODELS]
int writeentitiestoclient_clientnumber
protocolversion_t protocol
one of the PROTOCOL_ values
qbool overflowed
set to true if the buffer size failed
qbool allowoverflow
if false, do a Sys_Error
void SV_WriteDemoMessage(client_t *client, sizebuf_t *sendbuffer, qbool clienttoserver)
static void SV_UpdateToReliableMessages(void)
#define MAX_LINEOFSIGHTTRACES
static void SV_CleanupEnts(void)
void SV_ClientPrintf(const char *fmt,...)
void SV_StartParticle(vec3_t org, vec3_t dir, int color, int count)
void SV_FlushBroadcastMessages(void)
void SV_StartEffect(vec3_t org, int modelindex, int startframe, int framecount, int framerate)
qbool SV_CanSeeBox(int numtraces, vec_t eyejitter, vec_t enlarge, vec_t entboxexpand, vec3_t eye, vec3_t entboxmins, vec3_t entboxmaxs)
void SV_AddCameraEyes(void)
static void SV_SendClientDatagram(client_t *client)
cvar_t sv_airaccel_qw_stretchfactor
cvar_t sv_warsowbunny_turnaccel
void SV_WriteClientdataToMessage(client_t *client, prvm_edict_t *ent, sizebuf_t *msg, int *stats)
void SV_BroadcastPrintf(const char *fmt,...)
cvar_t sv_cullentities_trace_expand
cvar_t sv_cullentities_trace_eyejitter
void SV_ClientPrint(const char *msg)
void SV_StartSound(prvm_edict_t *entity, int channel, const char *sample, int nvolume, float attenuation, qbool reliable, float speed)
cvar_t sv_warsowbunny_airforwardaccel
void SV_SendClientMessages(void)
void SV_MarkWriteEntityStateToClient(entity_state_t *s, client_t *client)
void SV_ClientCommands(const char *fmt,...)
static qbool SV_PrepareEntityForSending(prvm_edict_t *ent, entity_state_t *cs, int enumber)
static void SV_PrepareEntitiesForSending(void)
void SV_BroadcastPrint(const char *msg)
void SV_StartPointSound(vec3_t origin, const char *sample, int nvolume, float attenuation, float speed)
cvar_t sv_warsowbunny_accel
cvar_t sv_cullentities_trace_entityocclusion
cvar_t sv_warsowbunny_backtosideratio
cvar_t sv_cullentities_trace_delay_players
cvar_t sv_cullentities_trace_samples_players
cvar_t sv_cullentities_trace_spectators
static void SV_WriteUnreliableMessages(client_t *client, sizebuf_t *msg, int maxsize, int maxsize2)
cvar_t sv_onlycsqcnetworking
cvar_t sv_warsowbunny_topspeed
void Sys_Error(const char *error,...) DP_FUNC_PRINTF(1) DP_FUNC_NORETURN
Causes the entire program to exit ASAP.