typedef struct tridecal_s
{
// color and initial alpha value
- unsigned char colors[3][4];
+ float texcoord2f[3][2];
+ float vertex3f[3][3];
+ unsigned char color4ub[3][4];
// 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 triangleindex;
+ // for visibility culling
+ int surfaceindex;
+ // old decals are killed to obey cl_decals_max
+ int decalsequence;
}
tridecal_t;
vec3_t mins, maxs;
// 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];
+ // skeletal animation data (if skeleton.relativetransforms is not NULL, it overrides frameblend)
+ skeleton_t *skeleton;
// animation cache index
int animcacheindex;
// fields used by rendering: (44 bytes)
unsigned short typeindex;
unsigned short texnum;
+ int decalsequence;
vec3_t org;
vec3_t normal;
float size;
vec3_t playercrouchmins;
vec3_t playercrouchmaxs;
+ // old decals are killed based on this
+ int decalsequence;
+
int max_entities;
+ int max_csqcrenderentities;
int max_static_entities;
int max_effects;
int max_beams;
int max_showlmps;
entity_t *entities;
+ entity_render_t *csqcrenderentities;
unsigned char *entities_active;
entity_t *static_entities;
cl_effect_t *effects;
void CL_ClearState (void);
void CL_ExpandEntities(int num);
+void CL_ExpandCSQCRenderEntities(int num);
void CL_SetInfo(const char *key, const char *value, qboolean send, qboolean allowstarkey, qboolean allowmodel, qboolean quiet);
int lightmapupdates;
int lightmapupdatepixels;
int particles;
- int decals;
+ int drawndecals;
+ int totaldecals;
int meshes;
int meshes_elements;
int lights;