-=================
-*/
-void R_DrawSpriteModel (entity_t *e)
-{
- mspriteframe_t *oldframe, *newframe;
- float lerp, ilerp;
- vec3_t forward, right, up, org, color;
- msprite_t *psprite;
-
- // don't even bother culling, because it's just a single
- // polygon without a surface cache
-
- c_sprites++;
-
- R_GetSpriteFrame (e, &oldframe, &newframe, &lerp);
- if (lerp < 0) lerp = 0;
- if (lerp > 1) lerp = 1;
- if (isRagePro) // LordHavoc: no alpha scaling supported on per pixel alpha images on ATI Rage Pro... ACK!
- lerp = 1;
- ilerp = 1.0 - lerp;
- psprite = e->model->cache.data;
-
- if (psprite->type == SPR_ORIENTED)
- { // bullet marks on walls
- AngleVectors (e->angles, forward, right, up);
- VectorSubtract(e->origin, vpn, org);
- }
- else
- { // normal sprite
- VectorCopy(vup, up);
- VectorCopy(vright, right);
- VectorCopy(e->origin, org);
- }
- if (e->scale != 1)
- {
- VectorScale(up, e->scale, up);
- VectorScale(right, e->scale, right);
- }
-
- if (e->model->flags & EF_FULLBRIGHT || e->effects & EF_FULLBRIGHT)
- {
- color[0] = e->colormod[0] * 255;
- color[1] = e->colormod[1] * 255;
- color[2] = e->colormod[2] * 255;
- }
- else
- {
- R_LightPoint (color, e->origin);
- R_DynamicLightPointNoMask(color, e->origin);
- }
-
- // LordHavoc: interpolated sprite rendering
- if (ilerp != 0)
- GL_DrawSpriteImage(oldframe, org, up, right, color[0],color[1],color[2],e->alpha*255*ilerp);
- if (lerp != 0)
- GL_DrawSpriteImage(newframe, org, up, right, color[0],color[1],color[2],e->alpha*255*lerp);