- if (currentrenderentity->frameblend[i].lerp)
- GL_DrawSpriteImage(((mspriteframe_t *)(psprite->ofs_frames + (int) psprite)) + currentrenderentity->frameblend[i].frame, org, up, right, colorub[0],colorub[1],colorub[2], currentrenderentity->alpha*255*currentrenderentity->frameblend[i].lerp);
+ {
+ if (ent->frameblend[i].lerp >= 0.01f)
+ {
+ frame = ent->model->sprdata_frames + ent->frameblend[i].frame;
+ R_DrawSpriteImage((ent->effects & EF_ADDITIVE) || (ent->model->flags & EF_ADDITIVE), frame, R_GetTexture(frame->texture), org, up, left, color[0] * ifog, color[1] * ifog, color[2] * ifog, ent->alpha * ent->frameblend[i].lerp);
+ if (fog * ent->frameblend[i].lerp >= 0.01f)
+ R_DrawSpriteImage(true, frame, R_GetTexture(frame->fogtexture), org, up, left, fogcolor[0],fogcolor[1],fogcolor[2], fog * ent->alpha * ent->frameblend[i].lerp);
+ }
+ }
+#else
+ // LordHavoc: no interpolation
+ frame = NULL;
+ for (i = 0;i < 4 && ent->frameblend[i].lerp;i++)
+ frame = ent->model->sprdata_frames + ent->frameblend[i].frame;
+
+ R_DrawSpriteImage((ent->effects & EF_ADDITIVE) || (ent->model->flags & EF_ADDITIVE), frame, R_GetTexture(frame->texture), org, up, left, color[0] * ifog, color[1] * ifog, color[2] * ifog, ent->alpha);
+ if (fog * ent->frameblend[i].lerp >= 0.01f)
+ R_DrawSpriteImage(true, frame, R_GetTexture(frame->fogtexture), org, up, left, fogcolor[0],fogcolor[1],fogcolor[2], fog * ent->alpha);
+#endif
+}
+
+void R_Model_Sprite_Draw(entity_render_t *ent)
+{
+ if (ent->frameblend[0].frame < 0)
+ return;
+
+ c_sprites++;
+
+ R_MeshQueue_AddTransparent(ent->origin, R_DrawSpriteModelCallback, ent, 0);