float texcoord2f[3][2];
float vertex3f[3][3];
float color4f[3][4];
+ float plane[4]; // backface culling
// how long this decal has lived so far (the actual fade begins at cl_decals_time)
float lived;
// if >= 0 this indicates the decal should follow an animated triangle
int particlecache_maxparticles;
int particlecache_updateparticle;
rtlight_particle_t *particlecache_particles;
+
+ /// bouncegrid light info
+ float photoncolor[3];
+ float photons;
}
rtlight_t;
}
dlight_t;
-#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
float movevars_maxairspeed;
float movevars_stepheight;
float movevars_airaccel_qw;
+ float movevars_airaccel_qw_stretchfactor;
float movevars_airaccel_sideways_friction;
float movevars_airstopaccelerate;
float movevars_airstrafeaccelerate;
// server entity number corresponding to a clientside entity
unsigned short csqc_server2csqcentitynumber[MAX_EDICTS];
qboolean csqc_loaded;
- vec3_t csqc_origin;
- vec3_t csqc_angles;
+ vec3_t csqc_vieworigin;
+ vec3_t csqc_viewangles;
+ vec3_t csqc_vieworiginfromengine;
+ vec3_t csqc_viewanglesfromengine;
+ matrix4x4_t csqc_viewmodelmatrixfromengine;
qboolean csqc_usecsqclistener;
matrix4x4_t csqc_listenermatrix;
char csqc_printtextbuf[MAX_INPUTLINE];
// freed on each level change
size_t buildlightmapmemorysize;
unsigned char *buildlightmapmemory;
+
+ // used by EntityState5_ReadUpdate
+ skeleton_t *engineskeletonobjects;
}
client_state_t;
extern r_refdef_t r_refdef;
+// warpzone prediction hack (CSQC builtin)
+void CL_RotateMoves(const matrix4x4_t *m);
+
#endif