X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=client.h;h=fea8d0486c510f004c115b54db3d4365547ed050;hb=0e2bba8afcaafbb7e196b37988f0c54ce4a0bcaa;hp=2af844a2b8d1d5270bcdf2a8003f4b27842d8e3c;hpb=c94ea5856018e15a26b9180f2ba83314798dd9ab;p=xonotic%2Fdarkplaces.git diff --git a/client.h b/client.h index 2af844a2..fea8d048 100644 --- a/client.h +++ b/client.h @@ -69,6 +69,8 @@ typedef struct rtlight_s // note that the world to light matrices are inversely scaled (divided) by lightradius // core properties + // matrix for transforming light filter coordinates to world coordinates + matrix4x4_t matrix_lighttoworld; // matrix for transforming world coordinates to light filter coordinates matrix4x4_t matrix_worldtolight; // typically 1 1 1, can be lower (dim) or higher (overbright) @@ -126,6 +128,19 @@ typedef struct rtlight_s // surfaces seen by light int static_numsurfaces; int *static_surfacelist; + // flag bits indicating which triangles of the world model should cast + // shadows, and which ones should be lit + // + // this avoids redundantly scanning the triangles in each surface twice + // for whether they should cast shadows, once in culling and once in the + // actual shadowmarklist production. + int static_numshadowtrispvsbytes; + unsigned char *static_shadowtrispvs; + // this allows the lighting batch code to skip backfaces andother culled + // triangles not relevant for lighting + // (important on big surfaces such as terrain) + int static_numlighttrispvsbytes; + unsigned char *static_lighttrispvs; } rtlight_t; @@ -638,6 +653,14 @@ typedef enum cl_parsingtextmode_e } 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 @@ -704,6 +727,8 @@ typedef struct client_state_s // these fields are only updated by CL_ClientMovement (called by CL_SendMove after parsing each network packet) // set by CL_ClientMovement_Replay functions qboolean movement_predicted; + // if true the CL_ClientMovement_Replay function will update origin, etc + qboolean movement_replay; // this is set true by svc_time parsing and causes a new movement to be // queued for prediction purposes qboolean movement_needupdate; @@ -939,6 +964,12 @@ typedef struct client_state_s // 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; @@ -1000,10 +1031,15 @@ extern cvar_t cl_stainmaps_clearonload; 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); + //============================================================================= // @@ -1019,7 +1055,7 @@ void CL_Disconnect (void); void CL_Disconnect_f (void); void CL_UpdateRenderEntity(entity_render_t *ent); -void CL_UpdateEntities(void); +void CL_UpdateViewEntities(void); // // cl_input @@ -1045,6 +1081,7 @@ void CL_ParseTEnt (void); void CL_NewBeam (int ent, vec3_t start, vec3_t end, model_t *m, int lightning); void CL_RelinkBeams (void); void CL_Beam_CalculatePositions (const beam_t *b, vec3_t start, vec3_t end); +void CL_ClientMovement_Replay(void); void CL_ClearTempEntities (void); entity_t *CL_NewTempEntity (void); @@ -1116,6 +1153,8 @@ extern cvar_t cl_particles_bulletimpacts; 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; @@ -1322,6 +1361,7 @@ typedef struct r_view_s vec3_t up; mplane_t frustum[5]; float frustum_x, frustum_y; + vec3_t frustumcorner[4]; // screen area to render in int x;