model_t *model;
// current uninterpolated animation frame (for things which do not use interpolation)
int frame;
+ // number of the entity represents, or 0 for non-network entities
+ int entitynumber;
// entity shirt and pants colors (-1 if not colormapped)
int colormap;
// literal colors for renderer
vec3_t colormap_shirtcolor;
// light, particles, etc
int effects;
+ // qw CTF flags and other internal-use-only effect bits
+ int internaleffects;
// for Alias models
int skinnum;
// render flags
}
cl_parsingtextmode_t;
+typedef struct cl_locnode_s
+{
+ struct cl_locnode_s *next;
+ char *name;
+ vec3_t mins, maxs;
+}
+cl_locnode_t;
+
//
// the client_state_t structure is wiped completely at every
// server signon
sfx_t *sfx_ric2;
sfx_t *sfx_ric3;
sfx_t *sfx_r_exp3;
+ // indicates that the file "sound/misc/talk2.wav" was found (for use by team chat messages)
+ qboolean foundtalk2wav;
// refresh related state
// collision culling data
world_t world;
+
+ // loc file stuff (points and boxes describing locations in the level)
+ cl_locnode_t *locnodes;
+ // this is updated to cl.movement_origin whenever health is < 1
+ // used by %d print in say/say_team messages if cl_locs_enable is on
+ vec3_t lastdeathorigin;
}
client_state_t;
extern cvar_t cl_shownet;
extern cvar_t cl_nolerp;
-extern cvar_t cl_nettimesyncmode;
+extern cvar_t cl_nettimesyncfactor;
+extern cvar_t cl_nettimesyncboundmode;
+extern cvar_t cl_nettimesyncboundtolerance;
extern cvar_t cl_pitchdriftspeed;
extern cvar_t lookspring;
extern cvar_t cl_prydoncursor;
+extern cvar_t cl_locs_enable;
+
extern client_state_t cl;
extern void CL_AllocLightFlash (entity_render_t *ent, matrix4x4_t *matrix, float radius, float red, float green, float blue, float decay, float lifetime, int cubemapnum, int style, int shadowenable, vec_t corona, vec_t coronasizescale, vec_t ambientscale, vec_t diffusescale, vec_t specularscale, int flags);
+cl_locnode_t *CL_Locs_FindNearest(const vec3_t point);
+void CL_Locs_FindLocationName(char *buffer, size_t buffersize, vec3_t point);
+
//=============================================================================
//
void CL_SetInfo(const char *key, const char *value, qboolean send, qboolean allowstarkey, qboolean allowmodel, qboolean quiet);
-int CL_ReadFromServer (void);
+void CL_UpdateWorld (void);
void CL_WriteToServer (void);
void CL_Input (void);
extern qboolean cl_ignoremousemove;
//
void CL_StopPlayback(void);
void CL_ReadDemoMessage(void);
-void CL_WriteDemoMessage(void);
+void CL_WriteDemoMessage(sizebuf_t *mesage);
void CL_NextDemo(void);
void CL_Stop_f(void);
extern cvar_t cl_particles_explosions_smoke;
extern cvar_t cl_particles_explosions_sparks;
extern cvar_t cl_particles_explosions_shell;
+extern cvar_t cl_particles_rain;
+extern cvar_t cl_particles_snow;
extern cvar_t cl_particles_smoke;
extern cvar_t cl_particles_smoke_alpha;
extern cvar_t cl_particles_smoke_alphafade;
#define NUMCROSSHAIRS 32
extern cachepic_t *r_crosshairs[NUMCROSSHAIRS+1];
-#define FOGTABLEWIDTH 1024
-extern int fogtableindex;
-#define VERTEXFOGTABLE(dist) (fogtableindex = (int)((dist) * r_refdef.fogtabledistmultiplier), r_refdef.fogtable[bound(0, fogtableindex, FOGTABLEWIDTH - 1)])
+float FogPoint_World(const vec3_t p);
+float FogPoint_Model(const vec3_t p);
typedef struct r_refdef_stats_s
{
vec3_t fogcolor;
vec_t fogrange;
vec_t fograngerecip;
- vec_t fogtabledistmultiplier;
- float fogtable[FOGTABLEWIDTH];
+ vec_t fogmasktabledistmultiplier;
+#define FOGMASKTABLEWIDTH 1024
+ float fogmasktable[FOGMASKTABLEWIDTH];
float fog_density;
float fog_red;
float fog_green;