// NULL = no model
model_t *model;
- // current uninterpolated animation frame (for things which do not use interpolation)
- int frame;
// number of the entity represents, or 0 for non-network entities
int entitynumber;
// entity shirt and pants colors (-1 if not colormapped)
double starttime;
double framerate;
// for AVI saving some values have to be written after capture ends
+ fs_offset_t videofile_firstchunkframes_offset;
fs_offset_t videofile_totalframes_offset1;
fs_offset_t videofile_totalframes_offset2;
fs_offset_t videofile_totalsampleframes_offset;
int soundrate;
int frame;
int soundsampleframe; // for AVI saving
- unsigned char *buffer;
+ unsigned char *screenbuffer;
+ unsigned char *outbuffer;
sizebuf_t riffbuffer;
unsigned char riffbufferdata[128];
// note: riffindex buffer has an allocated ->data member, not static like most!
short rgbtoyuvscaletable[3][3][256];
unsigned char yuvnormalizetable[3][256];
char basename[64];
+ int width, height;
}
capturevideostate_t;
int viewentity;
// the real player entity (normally same as viewentity,
// different than viewentity if mod uses chasecam or other tricks)
+ int realplayerentity;
+ // this is updated to match cl.viewentity whenever it is in the clients
+ // range, basically this is used in preference to cl.realplayerentity for
+ // most purposes because when spectating another player it should show
+ // their information rather than yours
int playerentity;
// max players that can be in this game
int maxclients;
int downloadsound_current;
int loadsound_total;
qboolean downloadcsqc;
+ qboolean loadcsqc;
qboolean loadbegun;
qboolean loadfinished;
int qw_teamplay;
// unused: indicates whether the player is spectating
- // use cl.scores[cl.playerentity].qw_spectator instead
+ // use cl.scores[cl.playerentity-1].qw_spectator instead
//qboolean qw_spectator;
// movement parameters for client prediction
vec3_t left;
vec3_t right;
vec3_t up;
- mplane_t frustum[5];
+ int numfrustumplanes;
+ mplane_t frustum[6];
+ qboolean useclipplane;
+ qboolean usecustompvs; // uses r_viewcache.pvsbits as-is rather than computing it
+ mplane_t clipplane;
float frustum_x, frustum_y;
vec3_t frustumcorner[4];
+ // if turned off it renders an ortho view
+ int useperspective;
+ float ortho_x, ortho_y;
// screen area to render in
int x;
// global RGB color multiplier for rendering, this is required by HDR
float colorscale;
+
+ // whether to draw r_showtris and such, this is only true for the main
+ // view render, all secondary renders (HDR, mirrors, portals, cameras,
+ // distortion effects, etc) omit such debugging information
+ qboolean showdebug;
+
+ // these define which values to use in GL_CullFace calls to request frontface or backface culling
+ int cullface_front;
+ int cullface_back;
}
r_view_t;
// flag arrays used for visibility checking on world model
// (all other entities have no per-surface/per-leaf visibility checks)
// TODO: dynamic resize according to r_refdef.worldmodel->brush.num_clusters
- unsigned char world_pvsbits[(32768+7)>>3];
+ unsigned char world_pvsbits[(32768+7)>>3]; // FIXME: buffer overflow on huge maps
// TODO: dynamic resize according to r_refdef.worldmodel->brush.num_leafs
- unsigned char world_leafvisible[32768];
+ unsigned char world_leafvisible[32768]; // FIXME: buffer overflow on huge maps
// TODO: dynamic resize according to r_refdef.worldmodel->num_surfaces
- unsigned char world_surfacevisible[262144];
+ unsigned char world_surfacevisible[262144]; // FIXME: buffer overflow on huge maps
// if true, the view is currently in a leaf without pvs data
qboolean world_novis;
}