server_floodaddress_t connectfloodaddresses[MAX_CONNECTFLOODADDRESSES];
server_floodaddress_t getstatusfloodaddresses[MAX_GETSTATUSFLOODADDRESSES];
-#define SV_MAX_PARTICLEEFFECTNAME 256
qboolean particleeffectnamesloaded;
- char particleeffectname[SV_MAX_PARTICLEEFFECTNAME][MAX_QPATH];
+ char particleeffectname[MAX_PARTICLEEFFECTNAME][MAX_QPATH];
int writeentitiestoclient_stats_culled_pvs;
int writeentitiestoclient_stats_culled_trace;
/// requested rate in bytes per second
int rate;
+ /// temporarily exceed rate by this amount of bytes
+ int rate_burstsize;
+
/// realtime this client connected
double connecttime;
/// communications handle
netconn_t *netconnection;
- int movesequence;
+ unsigned int movesequence;
signed char movement_count[NETGRAPH_PACKETS];
- int movement_highestsequence_seen; // not the same as movesequence if prediction is off
+ unsigned int movement_highestsequence_seen; // not the same as movesequence if prediction is off
/// movement
usercmd_t cmd;
/// intended motion calced from cmd
unsigned int csqcentitysendflags[MAX_EDICTS];
#define NUM_CSQCENTITYDB_FRAMES 256
- unsigned char csqcentityglobalhistory[MAX_EDICTS]; // set to 1 if the entity was ever csqc networked to the client, and never reset back to 0
csqcentityframedb_t csqcentityframehistory[NUM_CSQCENTITYDB_FRAMES];
int csqcentityframehistory_next;
int csqcentityframe_lastreset;
// last sent move sequence
// if the move sequence changed, an empty entity frame is sent
- int lastmovesequence;
+ unsigned int lastmovesequence;
} client_t;
extern cvar_t sv_gameplayfix_setmodelrealbox;
extern cvar_t sv_gameplayfix_slidemoveprojectiles;
extern cvar_t sv_gameplayfix_stepdown;
-extern cvar_t sv_gameplayfix_stepwhilejumping;
extern cvar_t sv_gameplayfix_stepmultipletimes;
extern cvar_t sv_gameplayfix_nostepmoveonsteepslopes;
extern cvar_t sv_gameplayfix_swiminbmodels;
* returns true if it found a better place
*/
qboolean SV_UnstickEntity (prvm_edict_t *ent);
+/*! move an entity that is stuck out of the surface it is stuck in (can move large amounts)
+ * returns true if it found a better place
+ */
+qboolean SV_NudgeOutOfSolid(prvm_edict_t *ent);
/// calculates hitsupercontentsmask for a generic qc entity
int SV_GenericHitSuperContentsMask(const prvm_edict_t *edict);
/// traces a box move against worldmodel and all entities in the specified area
-trace_t SV_TraceBox(const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end, int type, prvm_edict_t *passedict, int hitsupercontentsmask);
-trace_t SV_TraceLine(const vec3_t start, const vec3_t end, int type, prvm_edict_t *passedict, int hitsupercontentsmask);
+trace_t SV_TraceBox(const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end, int type, prvm_edict_t *passedict, int hitsupercontentsmask, float extend);
+trace_t SV_TraceLine(const vec3_t start, const vec3_t end, int type, prvm_edict_t *passedict, int hitsupercontentsmask, float extend);
trace_t SV_TracePoint(const vec3_t start, int type, prvm_edict_t *passedict, int hitsupercontentsmask);
int SV_EntitiesInBox(const vec3_t mins, const vec3_t maxs, int maxedicts, prvm_edict_t **resultedicts);