]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - client.h
Merge MR 'Make trace entity culling optional for spectators'
[xonotic/darkplaces.git] / client.h
index 61c2ede9ec3fcb052b679d47db68d020ae6ec46d..fdf1a7881f5b1c9316056c65ff514c93feaaeee5 100644 (file)
--- 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])