}
}
-void R_DrawExplosion(explosion_t *e)
+void R_DrawExplosionCallback(const void *calldata1, int calldata2)
{
int i;
float *c, *v, diff[3], centerdir[3], ifog, alpha, dist;
rmeshbufferinfo_t m;
+ const explosion_t *e;
+ e = calldata1;
memset(&m, 0, sizeof(m));
- m.transparent = true;
m.blendfunc1 = GL_SRC_ALPHA;
m.blendfunc2 = GL_ONE;
m.numtriangles = EXPLOSIONTRIS;
m.numverts = EXPLOSIONVERTS;
m.tex[0] = R_GetTexture(explosiontexture);
+ Matrix4x4_CreateIdentity(&m.matrix);
if (R_Mesh_Draw_GetBuffer(&m, false))
{
memcpy(m.index, explosiontris, m.numtriangles * sizeof(int[3]));
c[3] = 1;
}
}
+ R_Mesh_Render();
}
}
return;
for (i = 0;i < MAX_EXPLOSIONS;i++)
if (explosion[i].alpha > 0.01f)
- R_DrawExplosion(&explosion[i]);
+ R_MeshQueue_AddTransparent(explosion[i].origin, R_DrawExplosionCallback, &explosion[i], 0);
}