X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;ds=sidebyside;f=client.h;h=5b6d6b34051c2e64468bf3859eedc7a1646a720b;hb=eb3aa49bcc51a01aff898d29ef285dbc4637eb99;hp=14148b1e8c1f8c43c7db71ce68807345500e9bb0;hpb=14f9eeb18092745b92bc0b1285f572c5838c824a;p=xonotic%2Fdarkplaces.git diff --git a/client.h b/client.h index 14148b1e..5b6d6b34 100644 --- a/client.h +++ b/client.h @@ -31,6 +31,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // max lights shining on one entity #define MAXENTLIGHTS 128 +// flags for rtlight rendering +#define LIGHTFLAG_NORMALMODE 1 +#define LIGHTFLAG_REALTIMEMODE 2 + extern int cl_max_entities; extern int cl_max_static_entities; extern int cl_max_temp_entities; @@ -90,12 +94,22 @@ typedef struct rtlight_s vec_t radius; // light filter char cubemapname[64]; + // light style to monitor for brightness + int style; // whether light should render shadows int shadow; // intensity of corona to render vec_t corona; - // light style to monitor for brightness - int style; + // radius scale of corona to render (1.0 means same as light radius) + vec_t coronasizescale; + // ambient intensity to render + vec_t ambientscale; + // diffuse intensity to render + vec_t diffusescale; + // specular intensity to render + vec_t specularscale; + // LIGHTFLAG_* flags + int flags; // generated properties // used only for shadow volumes @@ -180,6 +194,21 @@ typedef struct dlight_s // corona intensity // (worldlight: saved to .rtlights file) vec_t corona; + // radius scale of corona to render (1.0 means same as light radius) + // (worldlight: saved to .rtlights file) + vec_t coronasizescale; + // ambient intensity to render + // (worldlight: saved to .rtlights file) + vec_t ambientscale; + // diffuse intensity to render + // (worldlight: saved to .rtlights file) + vec_t diffusescale; + // specular intensity to render + // (worldlight: saved to .rtlights file) + vec_t specularscale; + // LIGHTFLAG_* flags + // (worldlight: saved to .rtlights file) + int flags; // linked list of world lights // (worldlight only) struct dlight_s *next; @@ -226,6 +255,9 @@ typedef struct entity_render_s // render flags int flags; + // colormod tinting of models + float colormod[3]; + // interpolated animation // frame that the model is interpolating from @@ -308,6 +340,14 @@ typedef struct float forwardmove; float sidemove; float upmove; + + vec3_t cursor_screen; + vec3_t cursor_start; + vec3_t cursor_end; + vec3_t cursor_impact; + vec3_t cursor_normal; + vec_t cursor_fraction; + int cursor_entitynumber; } usercmd_t; typedef struct @@ -427,16 +467,18 @@ typedef struct // send a clc_nop periodically until connected float sendnoptime; - // last command sent to the server + // current input to send to the server usercmd_t cmd; // information for local display // health, etc int stats[MAX_CL_STATS]; - // inventory bit flags - int items; + // last known inventory bit flags, for blinking + int olditems; // cl.time of acquiring item, for blinking float item_gettime[32]; + // last known STAT_ACTIVEWEAPON + int activeweapon; // cl.time of changing STAT_ACTIVEWEAPON float weapontime; // use pain anim frame if cl.time < this @@ -474,7 +516,6 @@ typedef struct float driftmove; double laststop; - float viewheight; // local amount for smoothing stepups //float crouch; @@ -540,8 +581,11 @@ typedef struct int protocol; // entity database stuff - entity_database_t entitydatabase; - entity_database4_t *entitydatabase4; + // latest received entity frame numbers +#define LATESTFRAMENUMS 3 + int latestframenums[LATESTFRAMENUMS]; + entityframe_database_t *entitydatabase; + entityframe4_database_t *entitydatabase4; } client_state_t; @@ -554,6 +598,8 @@ extern cvar_t cl_name; extern cvar_t cl_color; extern cvar_t cl_rate; extern cvar_t cl_pmodel; +extern cvar_t cl_playermodel; +extern cvar_t cl_playerskin; extern cvar_t cl_upspeed; extern cvar_t cl_forwardspeed; @@ -592,6 +638,9 @@ extern cvar_t cl_explosions_size_start; extern cvar_t cl_explosions_size_end; extern cvar_t cl_explosions_lifetime; extern cvar_t cl_stainmaps; +extern cvar_t cl_stainmaps_clearonload; + +extern cvar_t cl_prydoncursor; // these are updated by CL_ClearState extern int cl_num_entities; @@ -599,6 +648,7 @@ extern int cl_num_static_entities; extern int cl_num_temp_entities; extern int cl_num_brushmodel_entities; +extern mempool_t *cl_entities_mempool; extern entity_t *cl_entities; extern qbyte *cl_entities_active; extern entity_t *cl_static_entities; @@ -612,7 +662,7 @@ extern lightstyle_t *cl_lightstyle; extern client_state_t cl; -extern void CL_AllocDlight (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); +extern void CL_AllocDlight (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); extern void CL_DecayLights (void); //============================================================================= @@ -649,9 +699,11 @@ extern kbutton_t in_strafe; extern kbutton_t in_speed; void CL_InitInput (void); -void CL_SendCmd (usercmd_t *cmd); -void CL_SendMove (usercmd_t *cmd); +void CL_SendCmd (void); +void CL_SendMove (void); +void CL_ValidateState(entity_state_t *s); +void CL_MoveLerpEntityStates(entity_t *ent); void CL_LerpUpdate(entity_t *e); void CL_ParseTEnt (void); void CL_RelinkBeams (void); @@ -665,8 +717,8 @@ void CL_ClearState (void); int CL_ReadFromServer (void); -void CL_WriteToServer (usercmd_t *cmd); -void CL_BaseMove (usercmd_t *cmd); +void CL_WriteToServer (void); +void CL_BaseMove (void); float CL_KeyState (kbutton_t *key); @@ -713,14 +765,36 @@ void CL_InitTEnts (void); // cl_part // +extern cvar_t cl_particles; +extern cvar_t cl_particles_quality; +extern cvar_t cl_particles_size; +extern cvar_t cl_particles_bloodshowers; +extern cvar_t cl_particles_blood; +extern cvar_t cl_particles_blood_alpha; +extern cvar_t cl_particles_blood_bloodhack; +extern cvar_t cl_particles_bulletimpacts; +extern cvar_t cl_particles_explosions_bubbles; +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_smoke; +extern cvar_t cl_particles_smoke_alpha; +extern cvar_t cl_particles_smoke_alphafade; +extern cvar_t cl_particles_sparks; +extern cvar_t cl_particles_bubbles; +extern cvar_t cl_decals; +extern cvar_t cl_decals_time; +extern cvar_t cl_decals_fadetime; + void CL_Particles_Clear(void); void CL_Particles_Init(void); void CL_ParseParticleEffect (void); void CL_RunParticleEffect (vec3_t org, vec3_t dir, int color, int count); -void CL_RocketTrail (vec3_t start, vec3_t end, int type, entity_t *ent); -void CL_RocketTrail2 (vec3_t start, vec3_t end, int color, entity_t *ent); -void CL_SparkShower (vec3_t org, vec3_t dir, int count); +void CL_RocketTrail (vec3_t start, vec3_t end, int type, int color, entity_t *ent); +void CL_SparkShower (vec3_t org, vec3_t dir, int count, vec_t gravityscale); +void CL_Smoke (vec3_t org, vec3_t dir, int count); +void CL_BulletMark (vec3_t org); void CL_PlasmaBurn (vec3_t org); void CL_BloodPuff (vec3_t org, vec3_t vel, int count); void CL_Stardust (vec3_t mins, vec3_t maxs, int count); @@ -763,10 +837,25 @@ typedef struct // fullscreen color blend float viewblend[4]; + // whether to call S_ExtraUpdate during render to reduce sound chop + qboolean extraupdate; + + // client gameworld time for rendering time based effects + double time; + + // the world + entity_render_t *worldentity; + + // same as worldentity->model + model_t *worldmodel; + + // renderable entities (excluding world) entity_render_t **entities; int numentities; int maxentities; + // 2D art drawing queue + // TODO: get rid of this qbyte *drawqueue; int drawqueuesize; int maxdrawqueuesize;