]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - client.h
globally rename model_t to dp_model_t for OpenSolaris. Sorry, guys who now have svn...
[xonotic/darkplaces.git] / client.h
index fac7edfbed2c92ff638e5e17b5b1137dbb92f042..6e73a042113be1b21d54012b3e9405e900fc8696 100644 (file)
--- a/client.h
+++ b/client.h
@@ -27,9 +27,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 // LordHavoc: 256 dynamic lights
 #define MAX_DLIGHTS 256
 
-// this is the maximum number of input packets that can be lost without a
-// misprediction
-#define CL_MAX_USERCMDS 16
+// this is the maximum number of input packets that can be predicted
+#define CL_MAX_USERCMDS 256
 
 // flags for rtlight rendering
 #define LIGHTFLAG_NORMALMODE 1
@@ -248,7 +247,7 @@ typedef struct entity_render_s
        float scale;
 
        // NULL = no model
-       model_t *model;
+       dp_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
@@ -356,14 +355,21 @@ typedef struct usercmd_s
        vec_t   cursor_fraction;
        int             cursor_entitynumber;
 
-       double time;
-       double receivetime;
-       int msec; // for qw moves
+       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;
        int sequence;
        qboolean applied; // if false we're still accumulating a move
        qboolean predicted; // if true the sequence should be sent as 0
+
+       // derived properties
+       double frametime;
+       qboolean canjump;
+       qboolean jump;
+       qboolean crouch;
 } usercmd_t;
 
 typedef struct lightstyle_s
@@ -485,6 +491,14 @@ typedef struct cl_downloadack_s
 }
 cl_downloadack_t;
 
+typedef struct cl_soundstats_s
+{
+       int mixedsounds;
+       int totalsounds;
+       int latency_milliseconds;
+}
+cl_soundstats_t;
+
 //
 // the client_static_t structure is persistent through an arbitrary number
 // of server connections
@@ -518,13 +532,17 @@ typedef struct client_static_s
        int td_frames; // total frames parsed
        double td_onesecondnexttime;
        double td_onesecondframes;
-       double td_onesecondminframes;
-       double td_onesecondmaxframes;
-       double td_onesecondavgframes;
+       double td_onesecondrealtime;
+       double td_onesecondminfps;
+       double td_onesecondmaxfps;
+       double td_onesecondavgfps;
        int td_onesecondavgcount;
        // LordHavoc: pausedemo
        qboolean demopaused;
 
+       // sound mixer statistics for showsound display
+       cl_soundstats_t soundstats;
+
        qboolean connect_trying;
        int connect_remainingtries;
        double connect_nextsendtime;
@@ -653,7 +671,7 @@ typedef struct decal_s
        // fields not used by rendering: (36 bytes in 32bit, 40 bytes in 64bit)
        float                   time2; // used for decal fade
        unsigned int    owner; // decal stuck to this entity
-       model_t                 *ownermodel; // model the decal is stuck to (used to make sure the entity is still alive)
+       dp_model_t                      *ownermodel; // model the decal is stuck to (used to make sure the entity is still alive)
        vec3_t                  relativeorigin; // decal at this location in entity's coordinate space
        vec3_t                  relativenormal; // decal oriented this way relative to entity's coordinate space
 }
@@ -782,18 +800,9 @@ typedef struct client_state_s
        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;
-       // timestamps of latest two predicted moves for interpolation
-       double movement_time[4];
        // simulated data (this is valid even if cl.movement is false)
        vec3_t movement_origin;
-       vec3_t movement_oldorigin;
        vec3_t movement_velocity;
-       // queue of proposed moves
-       int movement_numqueue;
-       client_movementqueue_t movement_queue[256];
        // whether the replay should allow a jump at the first sequence
        qboolean movement_replay_canjump;
 
@@ -870,10 +879,10 @@ typedef struct client_state_s
        int gametype;
 
        // models and sounds used by engine code (particularly cl_parse.c)
-       model_t *model_bolt;
-       model_t *model_bolt2;
-       model_t *model_bolt3;
-       model_t *model_beam;
+       dp_model_t *model_bolt;
+       dp_model_t *model_bolt2;
+       dp_model_t *model_bolt3;
+       dp_model_t *model_beam;
        sfx_t *sfx_wizhit;
        sfx_t *sfx_knighthit;
        sfx_t *sfx_tink1;
@@ -1003,7 +1012,6 @@ typedef struct client_state_s
        float movevars_wallfriction;
        float movevars_waterfriction;
        float movevars_friction;
-       float movevars_packetinterval; // in game time (cl.time), not realtime
        float movevars_timescale;
        float movevars_gravity;
        float movevars_stopspeed;
@@ -1173,7 +1181,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, model_t *m, int lightning);
+void CL_NewBeam (int ent, vec3_t start, vec3_t end, dp_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);
@@ -1401,6 +1409,8 @@ typedef struct r_refdef_view_s
 
        // whether to call R_ClearScreen before rendering stuff
        qboolean clear;
+       // if true, don't clear or do any post process effects (bloom, etc)
+       qboolean isoverlay;
 
        // whether to draw r_showtris and such, this is only true for the main
        // view render, all secondary renders (HDR, mirrors, portals, cameras,
@@ -1449,7 +1459,7 @@ typedef struct r_refdef_scene_s {
        entity_render_t *worldentity;
 
        // same as worldentity->model
-       model_t *worldmodel;
+       dp_model_t *worldmodel;
 
        // renderable entities (excluding world)
        entity_render_t **entities;
@@ -1470,6 +1480,13 @@ typedef struct r_refdef_scene_s {
        // 8.8bit fixed point intensities for light styles
        // controls intensity lightmap layers
        unsigned short lightstylevalue[256];    // 8.8 fraction of base light value
+
+       float ambient;
+
+       qboolean rtworld;
+       qboolean rtworldshadows;
+       qboolean rtdlight;
+       qboolean rtdlightshadows;
 } r_refdef_scene_t;
 
 typedef struct r_refdef_s
@@ -1523,10 +1540,6 @@ typedef struct r_refdef_s
        // (often reduced when world rtlights are enabled)
        float lightmapintensity;
        // whether to draw world lights realtime, dlights realtime, and their shadows
-       qboolean rtworld;
-       qboolean rtworldshadows;
-       qboolean rtdlight;
-       qboolean rtdlightshadows;
        float polygonfactor;
        float polygonoffset;
        float shadowpolygonfactor;