X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=r_explosion.c;h=9f5888dc20323b2020c175d09a9b05da6e44a546;hp=6f2c36eceb41b265d0db37af50e479ebac120432;hb=432fdce0e6f63debeb5310db1606dfe659946b11;hpb=544356c7bb6288760533142b8ab402f4d8d966ef diff --git a/r_explosion.c b/r_explosion.c index 6f2c36ec..9f5888dc 100644 --- a/r_explosion.c +++ b/r_explosion.c @@ -171,7 +171,7 @@ void R_NewExplosion(const vec3_t org) // clip start origin if (e->clipping) { - trace = CL_TraceBox(e->origin, vec3_origin, vec3_origin, e->vert[j], true, NULL, SUPERCONTENTS_SOLID, false); + trace = CL_Move(e->origin, vec3_origin, vec3_origin, e->vert[j], MOVE_NOMONSTERS, NULL, SUPERCONTENTS_SOLID, true, false, NULL, false); VectorCopy(trace.endpos, e->vert[i]); } } @@ -187,10 +187,13 @@ static void R_DrawExplosion_TransparentCallback(const entity_render_t *ent, cons rmeshstate_t m; GL_BlendFunc(GL_SRC_ALPHA, GL_ONE); GL_DepthMask(false); + GL_DepthRange(0, 1); + GL_PolygonOffset(r_refdef.polygonfactor, r_refdef.polygonoffset); GL_DepthTest(true); + GL_CullFace(r_view.cullface_back); R_Mesh_Matrix(&identitymatrix); - R_Mesh_ColorPointer(NULL); + R_Mesh_ColorPointer(NULL, 0, 0); memset(&m, 0, sizeof(m)); m.tex[0] = R_GetTexture(explosiontexture); m.pointer_texcoord[0] = explosiontexcoord2f[0]; @@ -198,10 +201,11 @@ static void R_DrawExplosion_TransparentCallback(const entity_render_t *ent, cons for (surfacelistindex = 0;surfacelistindex < numsurfaces;surfacelistindex++) { const explosion_t *e = explosion + surfacelist[surfacelistindex]; - R_Mesh_VertexPointer(e->vert[0]); - GL_Color(e->alpha, e->alpha, e->alpha, 1); + R_Mesh_VertexPointer(e->vert[0], 0, 0); + // FIXME: fixed function path can't properly handle r_view.colorscale > 1 + GL_Color(e->alpha * r_view.colorscale, e->alpha * r_view.colorscale, e->alpha * r_view.colorscale, 1); GL_LockArrays(0, numverts); - R_Mesh_Draw(0, numverts, numtriangles, explosiontris[0]); + R_Mesh_Draw(0, numverts, numtriangles, explosiontris[0], 0, 0); GL_LockArrays(0, 0); } } @@ -227,7 +231,7 @@ static void R_MoveExplosion(explosion_t *e) VectorMA(e->vert[i], frametime, e->vertvel[i], end); if (e->clipping) { - trace = CL_TraceBox(e->vert[i], vec3_origin, vec3_origin, end, true, NULL, SUPERCONTENTS_SOLID, false); + trace = CL_Move(e->vert[i], vec3_origin, vec3_origin, end, MOVE_NOMONSTERS, NULL, SUPERCONTENTS_SOLID, true, false, NULL, false); if (trace.fraction < 1) { // clip velocity against the wall