+ entityframeqw_database_t *entitydatabaseqw;
+
+ // keep track of quake entities because they need to be killed if they get stale
+ int lastquakeentity;
+ unsigned char isquakeentity[MAX_EDICTS];
+
+ // bounding boxes for clientside movement
+ vec3_t playerstandmins;
+ vec3_t playerstandmaxs;
+ vec3_t playercrouchmins;
+ vec3_t playercrouchmaxs;
+
+ int max_entities;
+ int max_static_entities;
+ int max_effects;
+ int max_beams;
+ int max_dlights;
+ int max_lightstyle;
+ int max_brushmodel_entities;
+ int max_particles;
+ int max_decals;
+ int max_showlmps;
+
+ entity_t *entities;
+ unsigned char *entities_active;
+ entity_t *static_entities;
+ cl_effect_t *effects;
+ beam_t *beams;
+ dlight_t *dlights;
+ lightstyle_t *lightstyle;
+ int *brushmodel_entities;
+ particle_t *particles;
+ decal_t *decals;
+ showlmp_t *showlmps;
+
+ int num_entities;
+ int num_static_entities;
+ int num_brushmodel_entities;
+ int num_effects;
+ int num_beams;
+ int num_dlights;
+ int num_particles;
+ int num_decals;
+ int num_showlmps;
+
+ double particles_updatetime;
+ double decals_updatetime;
+ int free_particle;
+ int free_decal;
+
+ // cl_serverextension_download feature
+ int loadmodel_current;
+ int downloadmodel_current;
+ int loadmodel_total;
+ int loadsound_current;
+ int downloadsound_current;
+ int loadsound_total;
+ qboolean downloadcsqc;
+ qboolean loadcsqc;
+ qboolean loadbegun;
+ qboolean loadfinished;
+
+ // quakeworld stuff
+
+ // local copy of the server infostring
+ char qw_serverinfo[MAX_SERVERINFO_STRING];
+
+ // time of last qw "pings" command sent to server while showing scores
+ double last_ping_request;
+
+ // used during connect
+ int qw_servercount;
+
+ // updated from serverinfo
+ int qw_teamplay;
+
+ // unused: indicates whether the player is spectating
+ // use cl.scores[cl.playerentity-1].qw_spectator instead
+ //qboolean qw_spectator;
+
+ // last time an input packet was sent
+ double lastpackettime;
+
+ // movement parameters for client prediction
+ float movevars_wallfriction;
+ float movevars_waterfriction;
+ float movevars_friction;
+ float movevars_timescale;
+ float movevars_gravity;
+ float movevars_stopspeed;
+ float movevars_maxspeed;
+ float movevars_spectatormaxspeed;
+ float movevars_accelerate;
+ float movevars_airaccelerate;
+ float movevars_wateraccelerate;
+ float movevars_entgravity;
+ float movevars_jumpvelocity;
+ float movevars_edgefriction;
+ float movevars_maxairspeed;
+ float movevars_stepheight;
+ float movevars_airaccel_qw;
+ float movevars_airaccel_sideways_friction;
+
+ // models used by qw protocol
+ int qw_modelindex_spike;
+ int qw_modelindex_player;
+ int qw_modelindex_flag;
+ int qw_modelindex_s_explod;
+
+ vec3_t qw_intermission_origin;
+ vec3_t qw_intermission_angles;
+
+ // 255 is the most nails the QW protocol could send
+ int qw_num_nails;
+ vec_t qw_nails[255][6];
+
+ float qw_weaponkick;
+
+ int qw_validsequence;
+
+ int qw_deltasequence[QW_UPDATE_BACKUP];
+
+ // csqc stuff:
+ // server entity number corresponding to a clientside entity
+ unsigned short csqc_server2csqcentitynumber[MAX_EDICTS];
+ qboolean csqc_loaded;
+ vec3_t csqc_origin;
+ vec3_t csqc_angles;
+ qboolean csqc_usecsqclistener;
+ matrix4x4_t csqc_listenermatrix;
+ char csqc_printtextbuf[MAX_INPUTLINE];
+
+ // 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;
+
+ // processing buffer used by R_BuildLightMap, reallocated as needed,
+ // freed on each level change
+ size_t buildlightmapmemorysize;
+ unsigned char *buildlightmapmemory;