- int i, index, *indexlist = &explosiontris[0][0], alpha = bound(0, e->alpha * 128.0f, 128), texnum, fogtexnum;
- float s, t;
-// s = cl.time * 1;
-// t = cl.time * 0.75;
-// s -= (int) s;
-// t -= (int) t;
- s = 0;
- t = 0;
- /*
- glColor4f(1,1,1,e->alpha);
- glDisable(GL_TEXTURE_2D);
-// glBindTexture(GL_TEXTURE_2D, explosiontexture);
- glVertexPointer(3, GL_FLOAT, sizeof(float[3]), (float *) &e->vert[0][0]);
-// glTexCoordPointer(2, GL_FLOAT, sizeof(float[2]), (float *) &explosiontexcoords[0][0]);
- glEnableClientState(GL_VERTEX_ARRAY);
-// glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- glDrawElements(GL_TRIANGLES, EXPLOSIONTRIS, GL_UNSIGNED_INT, indexlist);
-// glDisableClientState(GL_TEXTURE_COORD_ARRAY);
- glDisableClientState(GL_VERTEX_ARRAY);
- glEnable(GL_TEXTURE_2D);
- */
- texnum = R_GetTexture(explosiontexture);
- fogtexnum = R_GetTexture(explosiontexturefog);
- for (i = 0;i < EXPLOSIONTRIS;i++)
+ int i, numtriangles, numverts;
+ float *c, *v, diff[3], centerdir[3], ifog, alpha, dist;
+ rmeshstate_t m;
+ const explosion_t *e;
+ e = calldata1;
+
+ memset(&m, 0, sizeof(m));
+ m.blendfunc1 = GL_SRC_ALPHA;
+ m.blendfunc2 = GL_ONE;
+ m.wantoverbright = false;
+ m.tex[0] = R_GetTexture(explosiontexture);
+ R_Mesh_Matrix(&r_identitymatrix);
+ R_Mesh_State(&m);
+
+ numtriangles = EXPLOSIONTRIS;
+ numverts = EXPLOSIONVERTS;
+ R_Mesh_ResizeCheck(numverts, numtriangles);
+
+ memcpy(varray_element, explosiontris, numtriangles * sizeof(int[3]));
+ for (i = 0, v = varray_vertex;i < numverts;i++, v += 4)
+ {
+ v[0] = e->vert[i][0];
+ v[1] = e->vert[i][1];
+ v[2] = e->vert[i][2];
+ }
+ memcpy(varray_texcoord[0], explosiontexcoords, numverts * sizeof(float[2]));
+ alpha = e->alpha;
+ VectorSubtract(r_origin, e->origin, centerdir);
+ VectorNormalizeFast(centerdir);
+ if (fogenabled)