struct model_s *model;
float endtime;
vec3_t start, end;
- // if this beam is owned by an entity, this is the beam start relative to
- // that entity's matrix for per frame start updates
- vec3_t relativestart;
- vec3_t relativeend;
- // indicates whether relativestart is valid
- int relativestartvalid;
}
beam_t;
CAPTUREVIDEOFORMAT_TARGA,
CAPTUREVIDEOFORMAT_JPEG,
CAPTUREVIDEOFORMAT_RAWRGB,
- CAPTUREVIDEOFORMAT_RAWYV12
+ CAPTUREVIDEOFORMAT_RAWYV12,
+ CAPTUREVIDEOFORMAT_AVI_I420
}
capturevideoformat_t;
+typedef struct capturevideostate_s
+{
+ double starttime;
+ double framerate;
+ // for AVI saving some values have to be written after capture ends
+ fs_offset_t videofile_totalframes_offset1;
+ fs_offset_t videofile_totalframes_offset2;
+ fs_offset_t videofile_totalsampleframes_offset;
+ qfile_t *videofile;
+ qfile_t *soundfile;
+ qboolean active;
+ qboolean error;
+ capturevideoformat_t format;
+ int soundrate;
+ int frame;
+ int soundsampleframe; // for AVI saving
+ unsigned char *buffer;
+ sizebuf_t riffbuffer;
+ unsigned char riffbufferdata[128];
+ // note: riffindex buffer has an allocated ->data member, not static like most!
+ sizebuf_t riffindexbuffer;
+ int riffstacklevel;
+ fs_offset_t riffstackstartoffset[4];
+ short rgbtoyuvscaletable[3][3][256];
+ unsigned char yuvnormalizetable[3][256];
+ char basename[64];
+}
+capturevideostate_t;
+
//
// the client_static_t structure is persistent through an arbitrary number
// of server connections
// value of "qport" cvar at time of connection
int qw_qport;
+ // copied from cls.netcon->qw. variables every time they change, or set by demos (which have no cls.netcon)
+ int qw_incoming_sequence;
+ int qw_outgoing_sequence;
// current file download buffer (only saved when file is completed)
char qw_downloadname[MAX_QPATH];
char userinfo[MAX_USERINFO_STRING];
// video capture stuff
- qboolean capturevideo_active;
- capturevideoformat_t capturevideo_format;
- double capturevideo_starttime;
- double capturevideo_framerate;
- int capturevideo_soundrate;
- int capturevideo_frame;
- unsigned char *capturevideo_buffer;
- qfile_t *capturevideo_videofile;
- qfile_t *capturevideo_soundfile;
- short capturevideo_rgbtoyuvscaletable[3][3][256];
- unsigned char capturevideo_yuvnormalizetable[3][256];
+ capturevideostate_t capturevideo;
}
client_static_t;
}
particle_t;
+typedef enum cl_parsingtextmode_e
+{
+ CL_PARSETEXTMODE_NONE,
+ CL_PARSETEXTMODE_PING,
+ CL_PARSETEXTMODE_STATUS,
+ CL_PARSETEXTMODE_STATUS_PLAYERID,
+ CL_PARSETEXTMODE_STATUS_PLAYERIP
+}
+cl_parsingtextmode_t;
+
//
// the client_state_t structure is wiped completely at every
// server signon
float weapontime;
// use pain anim frame if cl.time < this
float faceanimtime;
+ // for stair smoothing
+ float stairoffset;
// color shifts for damage, powerups
cshift_t cshifts[NUM_CSHIFTS];
// client movement simulation
// these fields are only updated by CL_ClientMovement (called by CL_SendMove after parsing each network packet)
- qboolean movement;
+ // set by CL_ClientMovement_Replay functions
+ qboolean movement_predicted;
// this is set true by svc_time parsing and causes a new movement to be
// queued for prediction purposes
qboolean movement_needupdate;
vec3_t movement_velocity;
// queue of proposed moves
int movement_numqueue;
- client_movementqueue_t movement_queue[64];
+ client_movementqueue_t movement_queue[256];
int movesequence;
int servermovesequence;
+ // whether the replay should allow a jump at the first sequence
+ qboolean movement_replay_canjump;
// pitch drifting vars
float idealpitch;
// [cl.maxclients]
scoreboard_t *scores;
+ // keep track of svc_print parsing state (analyzes ping reports and status reports)
+ cl_parsingtextmode_t parsingtextmode;
+ int parsingtextplayerindex;
+ // set by scoreboard code when sending ping command, this causes the next ping results to be hidden
+ // (which could eat the wrong ping report if the player issues one
+ // manually, but they would still see a ping report, just a later one
+ // caused by the scoreboard code rather than the one they intentionally
+ // issued)
+ int parsingtextexpectingpingforscores;
+
// entity database stuff
// latest received entity frame numbers
#define LATESTFRAMENUMS 3
extern cvar_t cl_autofire;
-extern cvar_t csqc_progname; //[515]: csqc crc check and right csprogs name according to progs.dat
-extern cvar_t csqc_progcrc;
-
extern cvar_t cl_shownet;
extern cvar_t cl_nolerp;
void CL_BoundingBoxForEntity(entity_render_t *ent);
-extern cvar_t cl_beams_polygons;
-extern cvar_t cl_beams_relative;
-extern cvar_t cl_beams_lightatend;
-
//
// cl_input
//
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_RelinkBeams (void);
+void CL_Beam_CalculatePositions (const beam_t *b, vec3_t start, vec3_t end);
void CL_ClearTempEntities (void);
entity_t *CL_NewTempEntity (void);
EFFECT_TE_SUPERSPIKEQUAD,
EFFECT_TE_WIZSPIKE,
EFFECT_TE_KNIGHTSPIKE,
- EFFECT_TE_VORESPIKE,
EFFECT_TE_EXPLOSION,
EFFECT_TE_EXPLOSIONQUAD,
EFFECT_TE_TAREXPLOSION,
#include "cl_screen.h"
+extern qboolean sb_showscores;
+
#define NUMCROSSHAIRS 32
extern cachepic_t *r_crosshairs[NUMCROSSHAIRS+1];
// which color components to allow (for anaglyph glasses)
int colormask[4];
+
+ // global RGB color multiplier for rendering, this is required by HDR
+ float colorscale;
}
r_view_t;