X-Git-Url: http://git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=client.h;h=fdf1a7881f5b1c9316056c65ff514c93feaaeee5;hp=61c2ede9ec3fcb052b679d47db68d020ae6ec46d;hb=f847004b9818defbfd4bf15fe7b891fee2706079;hpb=4d01a285bf854691d10de6998cc35b2808175d75;ds=sidebyside diff --git a/client.h b/client.h index 61c2ede9..fdf1a788 100644 --- a/client.h +++ b/client.h @@ -28,171 +28,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "cap.h" #include "cl_parse.h" #include "cl_particles.h" - -// NOTE: r_stat_name[] must match this indexing -typedef enum r_stat_e -{ - r_stat_timedelta, - r_stat_quality, - r_stat_renders, - r_stat_entities, - r_stat_entities_surfaces, - r_stat_entities_triangles, - r_stat_world_leafs, - r_stat_world_portals, - r_stat_world_surfaces, - r_stat_world_triangles, - r_stat_lightmapupdates, - r_stat_lightmapupdatepixels, - r_stat_particles, - r_stat_drawndecals, - r_stat_totaldecals, - r_stat_draws, - r_stat_draws_vertices, - r_stat_draws_elements, - r_stat_lights, - r_stat_lights_clears, - r_stat_lights_scissored, - r_stat_lights_lighttriangles, - r_stat_lights_shadowtriangles, - r_stat_lights_dynamicshadowtriangles, - r_stat_bouncegrid_lights, - r_stat_bouncegrid_particles, - r_stat_bouncegrid_traces, - r_stat_bouncegrid_hits, - r_stat_bouncegrid_splats, - r_stat_bouncegrid_bounces, - r_stat_photoncache_animated, - r_stat_photoncache_cached, - r_stat_photoncache_traced, - r_stat_bloom, - r_stat_bloom_copypixels, - r_stat_bloom_drawpixels, - r_stat_rendertargets_used, - r_stat_rendertargets_pixels, - r_stat_indexbufferuploadcount, - r_stat_indexbufferuploadsize, - r_stat_vertexbufferuploadcount, - r_stat_vertexbufferuploadsize, - r_stat_framedatacurrent, - r_stat_framedatasize, - r_stat_bufferdatacurrent_vertex, // R_BUFFERDATA_ types are added to this index - r_stat_bufferdatacurrent_index16, - r_stat_bufferdatacurrent_index32, - r_stat_bufferdatacurrent_uniform, - r_stat_bufferdatasize_vertex, // R_BUFFERDATA_ types are added to this index - r_stat_bufferdatasize_index16, - r_stat_bufferdatasize_index32, - r_stat_bufferdatasize_uniform, - r_stat_animcache_skeletal_count, - r_stat_animcache_skeletal_bones, - r_stat_animcache_skeletal_maxbones, - r_stat_animcache_shade_count, - r_stat_animcache_shade_vertices, - r_stat_animcache_shade_maxvertices, - r_stat_animcache_shape_count, - r_stat_animcache_shape_vertices, - r_stat_animcache_shape_maxvertices, - r_stat_batch_batches, - r_stat_batch_withgaps, - r_stat_batch_surfaces, - r_stat_batch_vertices, - r_stat_batch_triangles, - r_stat_batch_fast_batches, - r_stat_batch_fast_surfaces, - r_stat_batch_fast_vertices, - r_stat_batch_fast_triangles, - r_stat_batch_copytriangles_batches, - r_stat_batch_copytriangles_surfaces, - r_stat_batch_copytriangles_vertices, - r_stat_batch_copytriangles_triangles, - r_stat_batch_dynamic_batches, - r_stat_batch_dynamic_surfaces, - r_stat_batch_dynamic_vertices, - r_stat_batch_dynamic_triangles, - r_stat_batch_dynamicskeletal_batches, - r_stat_batch_dynamicskeletal_surfaces, - r_stat_batch_dynamicskeletal_vertices, - r_stat_batch_dynamicskeletal_triangles, - r_stat_batch_dynamic_batches_because_cvar, - r_stat_batch_dynamic_surfaces_because_cvar, - r_stat_batch_dynamic_vertices_because_cvar, - r_stat_batch_dynamic_triangles_because_cvar, - r_stat_batch_dynamic_batches_because_lightmapvertex, - r_stat_batch_dynamic_surfaces_because_lightmapvertex, - r_stat_batch_dynamic_vertices_because_lightmapvertex, - r_stat_batch_dynamic_triangles_because_lightmapvertex, - r_stat_batch_dynamic_batches_because_deformvertexes_autosprite, - r_stat_batch_dynamic_surfaces_because_deformvertexes_autosprite, - r_stat_batch_dynamic_vertices_because_deformvertexes_autosprite, - r_stat_batch_dynamic_triangles_because_deformvertexes_autosprite, - r_stat_batch_dynamic_batches_because_deformvertexes_autosprite2, - r_stat_batch_dynamic_surfaces_because_deformvertexes_autosprite2, - r_stat_batch_dynamic_vertices_because_deformvertexes_autosprite2, - r_stat_batch_dynamic_triangles_because_deformvertexes_autosprite2, - r_stat_batch_dynamic_batches_because_deformvertexes_normal, - r_stat_batch_dynamic_surfaces_because_deformvertexes_normal, - r_stat_batch_dynamic_vertices_because_deformvertexes_normal, - r_stat_batch_dynamic_triangles_because_deformvertexes_normal, - r_stat_batch_dynamic_batches_because_deformvertexes_wave, - r_stat_batch_dynamic_surfaces_because_deformvertexes_wave, - r_stat_batch_dynamic_vertices_because_deformvertexes_wave, - r_stat_batch_dynamic_triangles_because_deformvertexes_wave, - r_stat_batch_dynamic_batches_because_deformvertexes_bulge, - r_stat_batch_dynamic_surfaces_because_deformvertexes_bulge, - r_stat_batch_dynamic_vertices_because_deformvertexes_bulge, - r_stat_batch_dynamic_triangles_because_deformvertexes_bulge, - r_stat_batch_dynamic_batches_because_deformvertexes_move, - r_stat_batch_dynamic_surfaces_because_deformvertexes_move, - r_stat_batch_dynamic_vertices_because_deformvertexes_move, - r_stat_batch_dynamic_triangles_because_deformvertexes_move, - r_stat_batch_dynamic_batches_because_tcgen_lightmap, - r_stat_batch_dynamic_surfaces_because_tcgen_lightmap, - r_stat_batch_dynamic_vertices_because_tcgen_lightmap, - r_stat_batch_dynamic_triangles_because_tcgen_lightmap, - r_stat_batch_dynamic_batches_because_tcgen_vector, - r_stat_batch_dynamic_surfaces_because_tcgen_vector, - r_stat_batch_dynamic_vertices_because_tcgen_vector, - r_stat_batch_dynamic_triangles_because_tcgen_vector, - r_stat_batch_dynamic_batches_because_tcgen_environment, - r_stat_batch_dynamic_surfaces_because_tcgen_environment, - r_stat_batch_dynamic_vertices_because_tcgen_environment, - r_stat_batch_dynamic_triangles_because_tcgen_environment, - r_stat_batch_dynamic_batches_because_tcmod_turbulent, - r_stat_batch_dynamic_surfaces_because_tcmod_turbulent, - r_stat_batch_dynamic_vertices_because_tcmod_turbulent, - r_stat_batch_dynamic_triangles_because_tcmod_turbulent, - r_stat_batch_dynamic_batches_because_nogaps, - r_stat_batch_dynamic_surfaces_because_nogaps, - r_stat_batch_dynamic_vertices_because_nogaps, - r_stat_batch_dynamic_triangles_because_nogaps, - r_stat_batch_dynamic_batches_because_derived, - r_stat_batch_dynamic_surfaces_because_derived, - r_stat_batch_dynamic_vertices_because_derived, - r_stat_batch_dynamic_triangles_because_derived, - r_stat_batch_entitycache_count, - r_stat_batch_entitycache_surfaces, - r_stat_batch_entitycache_vertices, - r_stat_batch_entitycache_triangles, - r_stat_batch_entityanimate_count, - r_stat_batch_entityanimate_surfaces, - r_stat_batch_entityanimate_vertices, - r_stat_batch_entityanimate_triangles, - r_stat_batch_entityskeletal_count, - r_stat_batch_entityskeletal_surfaces, - r_stat_batch_entityskeletal_vertices, - r_stat_batch_entityskeletal_triangles, - r_stat_batch_entitystatic_count, - r_stat_batch_entitystatic_surfaces, - r_stat_batch_entitystatic_vertices, - r_stat_batch_entitystatic_triangles, - r_stat_batch_entitycustom_count, - r_stat_batch_entitycustom_surfaces, - r_stat_batch_entitycustom_vertices, - r_stat_batch_entitycustom_triangles, - r_stat_count // size of array -} -r_stat_t; +#include "r_stats.h" // flags for rtlight rendering #define LIGHTFLAG_NORMALMODE 1 @@ -218,7 +54,7 @@ tridecal_t; typedef struct decalsystem_s { - dp_model_t *model; + model_t *model; double lastupdatetime; int maxdecals; int freedecal; @@ -238,7 +74,7 @@ typedef struct effect_s vec3_t origin; double starttime; float framerate; - dp_model_t *model; + model_t *model; int startframe; int endframe; // these are for interpolation @@ -505,7 +341,7 @@ typedef struct entity_render_s float transparent_offset; // NULL = no model - dp_model_t *model; + model_t *model; // number of the entity represents, or 0 for non-network entities int entitynumber; // literal colormap colors for renderer, if both are 0 0 0 it is not colormapped @@ -643,40 +479,6 @@ typedef struct entity_s } entity_t; -typedef struct usercmd_s -{ - vec3_t viewangles; - -// intended velocities - 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; - - double time; // time the move is executed for (cl_movement: clienttime, non-cl_movement: receivetime) - double receivetime; // time the move was received at - double clienttime; // time to which server state the move corresponds to - int msec; // for predicted moves - int buttons; - int impulse; - unsigned int sequence; - qbool applied; // if false we're still accumulating a move - qbool predicted; // if true the sequence should be sent as 0 - - // derived properties - double frametime; - qbool canjump; - qbool jump; - qbool crouch; -} usercmd_t; - typedef struct lightstyle_s { int length; @@ -775,7 +577,7 @@ typedef struct client_static_s int demonum; // list of demos in loop char demos[MAX_DEMOS][MAX_DEMONAME]; - // the actively playing demo (set by CL_PlayDemo_f) + // the actively playing demo (set by CL_PlayDemo) char demoname[MAX_QPATH]; // demo recording info must be here, because record is started before @@ -1068,7 +870,12 @@ typedef struct client_state_s // 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; - + + // used by cl_nettimesyncboundmode 7 +#define NUM_TS_ERRORS 32 // max 256 + unsigned char ts_error_num; + float ts_error_stor[NUM_TS_ERRORS]; + // fade var for fading while dead float deathfade; @@ -1108,10 +915,10 @@ typedef struct client_state_s int gametype; // models and sounds used by engine code (particularly cl_parse.c) - dp_model_t *model_bolt; - dp_model_t *model_bolt2; - dp_model_t *model_bolt3; - dp_model_t *model_beam; + model_t *model_bolt; + model_t *model_bolt2; + model_t *model_bolt3; + model_t *model_beam; sfx_t *sfx_wizhit; sfx_t *sfx_knighthit; sfx_t *sfx_tink1; @@ -1239,8 +1046,8 @@ typedef struct client_state_s // use cl.scores[cl.playerentity-1].qw_spectator instead //qbool qw_spectator; - // last time an input packet was sent - double lastpackettime; + // time accumulated since an input packet was sent + float timesincepacket; // movement parameters for client prediction unsigned int moveflags; @@ -1412,9 +1219,12 @@ double CL_Frame(double time); void CL_Shutdown (void); void CL_Init (void); +void CL_StartVideo(void); + void CL_EstablishConnection(const char *host, int firstarg); -void CL_Disconnect (void); +void CL_Disconnect(void); +void CL_DisconnectEx(qbool kicked, const char *reason, ... ); void CL_Disconnect_f(cmd_state_t *cmd); void CL_UpdateRenderEntity(entity_render_t *ent); @@ -1442,7 +1252,7 @@ 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_NewBeam (int ent, vec3_t start, vec3_t end, dp_model_t *m, int lightning); +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); @@ -1450,7 +1260,7 @@ void CL_ClientMovement_Replay(void); void CL_ClearTempEntities (void); entity_render_t *CL_NewTempEntity (double shadertime); -void CL_Effect(vec3_t org, dp_model_t *model, int startframe, int framecount, float framerate); +void CL_Effect(vec3_t org, model_t *model, int startframe, int framecount, float framerate); void CL_ClearState (void); void CL_ExpandEntities(int num); @@ -1490,6 +1300,7 @@ void CL_WriteDemoMessage(sizebuf_t *mesage); void CL_CutDemo(unsigned char **buf, fs_offset_t *filesize); void CL_PasteDemo(unsigned char **buf, fs_offset_t *filesize); +void CL_PlayDemo(const char *demo); void CL_NextDemo(void); void CL_Stop_f(cmd_state_t *cmd); void CL_Record_f(cmd_state_t *cmd); @@ -1549,7 +1360,7 @@ typedef enum meshname_e { NUM_MESHENTITIES, } meshname_t; extern entity_t cl_meshentities[NUM_MESHENTITIES]; -extern dp_model_t cl_meshentitymodels[NUM_MESHENTITIES]; +extern model_t cl_meshentitymodels[NUM_MESHENTITIES]; extern const char *cl_meshentitynames[NUM_MESHENTITIES]; #define CL_Mesh_Scene() (&cl_meshentitymodels[MESH_SCENE]) #define CL_Mesh_UI() (&cl_meshentitymodels[MESH_UI])