}
dlight_t;
-typedef struct frameblend_s
+#define MAX_FRAMEGROUPBLENDS 4
+typedef struct framegroupblend_s
{
+ // animation number and blend factor
+ // (for most models this is the frame number)
int frame;
float lerp;
+ // time frame began playing (for framegroup animations)
+ double start;
+}
+framegroupblend_t;
+
+// this is derived from processing of the framegroupblend array
+// note: technically each framegroupblend can produce two of these, but that
+// never happens in practice because no one blends between more than 2
+// framegroups at once
+#define MAX_FRAMEBLENDS MAX_FRAMEGROUPBLENDS
+typedef struct frameblend_s
+{
+ int subframe;
+ float lerp;
}
frameblend_t;
// colormod tinting of models
float colormod[3];
- // interpolated animation
+ // interpolated animation - active framegroups and blend factors
+ framegroupblend_t framegroupblend[MAX_FRAMEGROUPBLENDS];
- // frame that the model is interpolating from
- int frame1;
- // frame that the model is interpolating to
- int frame2;
- // interpolation factor, usually computed from frame2time
- float framelerp;
- // time frame1 began playing (for framegroup animations)
- double frame1time;
- // time frame2 began playing (for framegroup animations)
- double frame2time;
// time of last model change (for shader animations)
double shadertime;
// calculated during R_AddModelEntities
vec3_t mins, maxs;
- // 4 frame numbers (-1 if not used) and their blending scalers (0-1), if interpolation is not desired, use frame instead
- frameblend_t frameblend[4];
+ // subframe numbers (-1 if not used) and their blending scalers (0-1), if interpolation is not desired, use subframeblend[0].subframe
+ frameblend_t frameblend[MAX_FRAMEBLENDS];
// current lighting from map (updated ONLY by client code, not renderer)
vec3_t modellight_ambient;
typedef struct decal_s
{
- // fields used by rendering: (40 bytes)
+ // fields used by rendering: (44 bytes)
unsigned short typeindex;
unsigned short texnum;
vec3_t org;
float alpha; // 0-255
unsigned char color[3];
unsigned char unused1;
+ int clusterindex; // cheap culling by pvs
// fields not used by rendering: (36 bytes in 32bit, 40 bytes in 64bit)
float time2; // used for decal fade
float movevars_stepheight;
float movevars_airaccel_qw;
float movevars_airaccel_sideways_friction;
+ float movevars_airstopaccelerate;
+ float movevars_airstrafeaccelerate;
+ float movevars_maxairstrafespeed;
+ float movevars_aircontrol;
// models used by qw protocol
int qw_modelindex_spike;
void CL_Parse_ErrorCleanUp(void);
void QW_CL_StartUpload(unsigned char *data, int size);
extern cvar_t qport;
+void CL_KeepaliveMessage(qboolean readmessages); // call this during loading of large content
//
// view