]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - r_explosion.c
changed to use C runtime library DLL instead of static linking it
[xonotic/darkplaces.git] / r_explosion.c
index 3f8daa4b8007d554510bc0367321687af6f4dc57..0f027e5f2c3af4fc43e21d502c4718ad66b3c1bc 100644 (file)
@@ -173,19 +173,21 @@ void R_NewExplosion(vec3_t org)
        }
 }
 
-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]));
@@ -238,6 +240,7 @@ void R_DrawExplosion(explosion_t *e)
                                c[3] = 1;
                        }
                }
+               R_Mesh_Render();
        }
 }
 
@@ -302,6 +305,6 @@ void R_DrawExplosions(void)
                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);
 }