-void GL_DrawSpriteImage (int fog, mspriteframe_t *frame, int texture, vec3_t origin, vec3_t up, vec3_t right, float red, float green, float blue, float alpha)
-{
- rmeshinfo_t m;
- float v[4][4], st[4][2];
- // LordHavoc: this meshinfo must match up with R_Mesh_DrawDecal
- // LordHavoc: the commented out lines are hardwired behavior in R_Mesh_DrawDecal
- memset(&m, 0, sizeof(m));
- m.transparent = true;
- m.blendfunc1 = GL_SRC_ALPHA;
- m.blendfunc2 = GL_ONE_MINUS_SRC_ALPHA;
- if ((currentrenderentity->effects & EF_ADDITIVE)
- || (currentrenderentity->model->flags & EF_ADDITIVE)
- || fog)
- m.blendfunc2 = GL_ONE;
- //m.numtriangles = 2;
- //m.index = spritepolyindex;
- //m.numverts = 4;
- m.vertex = &v[0][0];
- //m.vertexstep = sizeof(float[4]);
- m.cr = red;
- m.cg = green;
- m.cb = blue;
- m.ca = alpha;
- m.tex[0] = texture;
- m.texcoords[0] = &st[0][0];
- //m.texcoordstep[0] = sizeof(float[2]);
-
- v[0][0] = origin[0] + frame->down * up[0] + frame->left * right[0];
- v[0][1] = origin[1] + frame->down * up[1] + frame->left * right[1];
- v[0][2] = origin[2] + frame->down * up[2] + frame->left * right[2];
- v[1][0] = origin[0] + frame->up * up[0] + frame->left * right[0];
- v[1][1] = origin[1] + frame->up * up[1] + frame->left * right[1];
- v[1][2] = origin[2] + frame->up * up[2] + frame->left * right[2];
- v[2][0] = origin[0] + frame->up * up[0] + frame->right * right[0];
- v[2][1] = origin[1] + frame->up * up[1] + frame->right * right[1];
- v[2][2] = origin[2] + frame->up * up[2] + frame->right * right[2];
- v[3][0] = origin[0] + frame->down * up[0] + frame->right * right[0];
- v[3][1] = origin[1] + frame->down * up[1] + frame->right * right[1];
- v[3][2] = origin[2] + frame->down * up[2] + frame->right * right[2];
- st[0][0] = 0;
- st[0][1] = 1;
- st[1][0] = 0;
- st[1][1] = 0;
- st[2][0] = 1;
- st[2][1] = 0;
- st[3][0] = 1;
- st[3][1] = 1;
-
- R_Mesh_DrawDecal(&m);
-}
-
-/*
-=================
-R_DrawSpriteModel
-=================
-*/
-void R_DrawSpriteModel ()
-{
- int i;
- vec3_t right, up, org, color;
- mspriteframe_t *frame;
- vec3_t diff;
- float fog, ifog;
-
- if (currentrenderentity->frameblend[0].frame < 0)
- return;
-
- if (R_SpriteSetup(currentrenderentity->model->sprnum_type, org, right, up))
- return;
-
- c_sprites++;
-
- if ((currentrenderentity->model->flags & EF_FULLBRIGHT) || (currentrenderentity->effects & EF_FULLBRIGHT))