typedef struct decalsystem_s
{
- dp_model_t *model;
+ model_t *model;
double lastupdatetime;
int maxdecals;
int freedecal;
vec3_t origin;
double starttime;
float framerate;
- dp_model_t *model;
+ model_t *model;
int startframe;
int endframe;
// these are for interpolation
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
}
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;
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
// 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;
char sound_name[MAX_SOUNDS][MAX_QPATH];
// for display on solo scoreboard
- char worldmessage[40]; // map title (not related to filename)
+ char worldmessage[MAX_QPATH]; // map title (not related to filename)
// variants of map name
char worldbasename[MAX_QPATH]; // %s
char worldname[MAX_QPATH]; // maps/%s.bsp
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;
// 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;
+ // how many optimally timed inputs we sent since we received an update from the server
+ uint8_t opt_inputs_since_update;
// movement parameters for client prediction
unsigned int moveflags;
// csqc stuff:
// server entity number corresponding to a clientside entity
unsigned short csqc_server2csqcentitynumber[MAX_EDICTS];
- qbool csqc_loaded;
vec3_t csqc_vieworigin;
vec3_t csqc_viewangles;
vec3_t csqc_vieworiginfromengine;
qbool csqc_usecsqclistener;
matrix4x4_t csqc_listenermatrix;
char csqc_printtextbuf[MAX_INPUTLINE];
+ size_t csqc_printtextbuf_len; ///< strlen
// collision culling data
world_t world;
// used by EntityState5_ReadUpdate
skeleton_t *engineskeletonobjects;
+
+ // used by underwater sound filter (snd_waterfx)
+ qbool view_underwater;
}
client_state_t;
extern cvar_t cl_autofire;
extern cvar_t cl_shownet;
-extern cvar_t cl_nolerp;
extern cvar_t cl_nettimesyncfactor;
extern cvar_t cl_nettimesyncboundmode;
extern cvar_t cl_nettimesyncboundtolerance;
extern cvar_t cl_locs_enable;
+extern cvar_t cl_areagrid_link_SOLID_NOT;
+
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, char *cubemapname, int style, int shadowenable, vec_t corona, vec_t coronasizescale, vec_t ambientscale, vec_t diffusescale, vec_t specularscale, int flags);
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);
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);
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);
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);
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])
+void CL_MeshEntities_Init(void);
void CL_MeshEntities_Scene_Clear(void);
void CL_MeshEntities_Scene_AddRenderEntity(void);
void CL_MeshEntities_Scene_FinalizeRenderEntity(void);