X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=client.h;h=260bfc0f2492b815eaa22a35927ae7713e2f9603;hp=cbe86f44819a71a6a842c97f188d826e31187adf;hb=01547eb038afe0bd7925c88844a37a150fe25b28;hpb=123d759d4e8793229127f44661afe7c1960fae99 diff --git a/client.h b/client.h index cbe86f44..260bfc0f 100644 --- a/client.h +++ b/client.h @@ -26,10 +26,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // LordHavoc: 256 dynamic lights #define MAX_DLIGHTS 256 -// LordHavoc: this affects the lighting scale of the whole game -#define LIGHTOFFSET 1024.0f -// max lights shining on one entity -#define MAXENTLIGHTS 128 // flags for rtlight rendering #define LIGHTFLAG_NORMALMODE 1 @@ -117,16 +113,6 @@ typedef struct rtlight_s // this is R_Shadow_Cubemap(rtlight->cubemapname) rtexture_t *currentcubemap; - // lightmap renderer stuff (remove someday!) - // the size of the light - vec_t lightmap_cullradius; - // the size of the light, squared - vec_t lightmap_cullradius2; - // the brightness of the light - vec3_t lightmap_light; - // to avoid sudden brightness change at cullradius, subtract this - vec_t lightmap_subtract; - // static light info // true if this light should be compiled as a static light int isstatic; @@ -280,12 +266,10 @@ typedef struct entity_render_s // 4 frame numbers (-1 if not used) and their blending scalers (0-1), if interpolation is not desired, use frame instead frameblend_t frameblend[4]; - // caching results of static light traces (this is semi-persistent) - double entlightstime; - vec3_t entlightsorigin; - int entlightsframe; - int numentlights; - unsigned short entlights[MAXENTLIGHTS]; + // current lighting from map + vec3_t modellight_ambient; + vec3_t modellight_diffuse; // q3bsp + vec3_t modellight_lightdir; // q3bsp } entity_render_t; @@ -382,8 +366,8 @@ typedef struct scoreboard_s typedef struct cshift_s { - int destcolor[3]; - int percent; // 0-256 + float destcolor[3]; + float percent; // 0-256 } cshift_t; #define CSHIFT_CONTENTS 0 @@ -440,8 +424,9 @@ typedef struct client_static_s { cactive_t state; - // all client memory allocations go in this pool - mempool_t *mempool; + // all client memory allocations go in these pools + mempool_t *levelmempool; + mempool_t *permanentmempool; // demo loop control // -1 = don't play demos @@ -598,12 +583,14 @@ typedef struct particle_s vec3_t org; vec3_t vel; // velocity of particle, or orientation of decal, or end point of beam float size; + float sizeincrease; // rate of size change per second float alpha; // 0-255 float alphafade; // how much alpha reduces per second float time2; // used for snow fluttering and decal fade float bounce; // how much bounce-back from a surface the particle hits (0 = no physics, 1 = stop and slide, 2 = keep bouncing forever, 1.5 is typical) float gravity; // how much gravity affects this particle (1.0 = normal gravity, 0.0 = none) - float friction; // how much air friction affects this object (objects with a low mass/size ratio tend to get more air friction) + float airfriction; // how much air friction affects this object (objects with a low mass/size ratio tend to get more air friction) + float liquidfriction; // how much liquid friction affects this object (objects with a low mass/size ratio tend to get more liquid friction) unsigned char color[4]; unsigned short owner; // decal stuck to this entity model_t *ownermodel; // model the decal is stuck to (used to make sure the entity is still alive) @@ -714,7 +701,7 @@ typedef struct client_state_s // don't change view angle, full screen, etc int intermission; // latched at intermission start - int completed_time; + double completed_time; // the timestamp of the last two messages double mtime[2]; @@ -722,7 +709,10 @@ typedef struct client_state_s // clients view of time, time should be between mtime[0] and mtime[1] to // generate a lerp point for other data, oldtime is the previous frame's // value of time, frametime is the difference between time and oldtime - double time, oldtime, frametime; + double time, oldtime; + // how long it has been since the previous client frame in real time + // (not game time, for that use cl.time - cl.oldtime) + double realframetime; // copy of realtime from last recieved message, for net trouble icon float last_received_message; @@ -927,6 +917,9 @@ extern cvar_t m_yaw; extern cvar_t m_forward; extern cvar_t m_side; +extern cvar_t cl_autodemo; +extern cvar_t cl_autodemo_nameformat; + extern cvar_t r_draweffects; extern cvar_t cl_explosions_alpha_start; @@ -1048,7 +1041,6 @@ extern cvar_t cl_particles; extern cvar_t cl_particles_quality; extern cvar_t cl_particles_size; extern cvar_t cl_particles_quake; -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; @@ -1070,32 +1062,61 @@ void CL_Particles_Clear(void); void CL_Particles_Init(void); void CL_Particles_Shutdown(void); +typedef enum effectnameindex_s +{ + EFFECT_NONE, + EFFECT_TE_GUNSHOT, + EFFECT_TE_GUNSHOTQUAD, + EFFECT_TE_SPIKE, + EFFECT_TE_SPIKEQUAD, + EFFECT_TE_SUPERSPIKE, + EFFECT_TE_SUPERSPIKEQUAD, + EFFECT_TE_WIZSPIKE, + EFFECT_TE_KNIGHTSPIKE, + EFFECT_TE_VORESPIKE, + EFFECT_TE_EXPLOSION, + EFFECT_TE_EXPLOSIONQUAD, + EFFECT_TE_TAREXPLOSION, + EFFECT_TE_TELEPORT, + EFFECT_TE_LAVASPLASH, + EFFECT_TE_SMALLFLASH, + EFFECT_TE_FLAMEJET, + EFFECT_EF_FLAME, + EFFECT_TE_BLOOD, + EFFECT_TE_SPARK, + EFFECT_TE_PLASMABURN, + EFFECT_TE_TEI_G3, + EFFECT_TE_TEI_SMOKE, + EFFECT_TE_TEI_BIGEXPLOSION, + EFFECT_TE_TEI_PLASMAHIT, + EFFECT_EF_STARDUST, + EFFECT_TR_ROCKET, + EFFECT_TR_GRENADE, + EFFECT_TR_BLOOD, + EFFECT_TR_WIZSPIKE, + EFFECT_TR_SLIGHTBLOOD, + EFFECT_TR_KNIGHTSPIKE, + EFFECT_TR_VORESPIKE, + EFFECT_TR_NEHAHRASMOKE, + EFFECT_TR_NEXUIZPLASMA, + EFFECT_TR_GLOWTRAIL, + EFFECT_SVC_PARTICLE, + EFFECT_TOTAL +} +effectnameindex_t; + +int CL_ParticleEffectIndexForName(const char *name); +const char *CL_ParticleEffectNameForIndex(int i); +void CL_ParticleEffect(int effectindex, float pcount, const vec3_t originmins, const vec3_t originmaxs, const vec3_t velocitymins, const vec3_t velocitymaxs, entity_t *ent, int palettecolor); 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, int color, entity_t *ent); -void CL_SparkShower (vec3_t org, vec3_t dir, int count, vec_t gravityscale, vec_t radius); -void CL_Smoke (vec3_t org, vec3_t dir, int count, vec_t radius); -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); -void CL_FlameCube (vec3_t mins, vec3_t maxs, int count); -void CL_Flames (vec3_t org, vec3_t vel, int count); -void CL_BloodShower (vec3_t mins, vec3_t maxs, float velspeed, int count); -void CL_ParticleCube (vec3_t mins, vec3_t maxs, vec3_t dir, int count, int colorbase, int gravity, int randomvel); -void CL_ParticleRain (vec3_t mins, vec3_t maxs, vec3_t dir, int count, int colorbase, int type); -void CL_EntityParticles (entity_t *ent); -void CL_BlobExplosion (vec3_t org); -void CL_ParticleExplosion (vec3_t org); -void CL_ParticleExplosion2 (vec3_t org, int colorStart, int colorLength); -void CL_LavaSplash (vec3_t org); -void CL_TeleportSplash (vec3_t org); -void CL_BeamParticle (const vec3_t start, const vec3_t end, vec_t radius, float red, float green, float blue, float alpha, float lifetime); -void CL_Tei_Smoke(const vec3_t pos, const vec3_t dir, int count); -void CL_Tei_PlasmaHit(const vec3_t pos, const vec3_t dir, int count); +void CL_ParticleCube (const vec3_t mins, const vec3_t maxs, const vec3_t dir, int count, int colorbase, vec_t gravity, vec_t randomvel); +void CL_ParticleRain (const vec3_t mins, const vec3_t maxs, const vec3_t dir, int count, int colorbase, int type); +void CL_EntityParticles (const entity_t *ent); +void CL_ParticleExplosion (const vec3_t org); +void CL_ParticleExplosion2 (const vec3_t org, int colorStart, int colorLength); void CL_MoveParticles(void); void R_MoveExplosions(void); -void R_NewExplosion(vec3_t org); +void R_NewExplosion(const vec3_t org); #include "cl_screen.h" @@ -1146,11 +1167,7 @@ typedef struct refdef_s // controls intensity of dynamic lights and lightmap layers unsigned short lightstylevalue[256]; // 8.8 fraction of base light value - // 2D art drawing queue - // TODO: get rid of this - unsigned char *drawqueue; - int drawqueuesize; - int maxdrawqueuesize; + qboolean draw2dstage; } refdef_t;