+ }
+ /*
+ for (l = list;l < listend;l++)
+ {
+ VectorSubtract(e->vert[i], (*l)->origin, diff);
+ dist = DotProduct(diff, diff);
+ if (dist < 4096 && dist >= 1)
+ {
+ dist = (*l)->pressure * frametime / dist;
+ VectorMA(e->vertvel[i], dist, diff, e->vertvel[i]);
+ }
+ }
+ */
+ }
+ for (i = 0;i < EXPLOSIONGRID;i++)
+ VectorCopy(e->vert[i * (EXPLOSIONGRID + 1)], e->vert[i * (EXPLOSIONGRID + 1) + EXPLOSIONGRID]);
+ memcpy(e->vert[EXPLOSIONGRID * (EXPLOSIONGRID + 1)], e->vert[0], sizeof(float[3]) * (EXPLOSIONGRID + 1));
+}
+
+/*
+void R_MoveExplosionGas(explosiongas_t *e, explosiongas_t **list, explosiongas_t **listend, float frametime)
+{
+ vec3_t end, diff;
+ vec_t dist, frictionscale;
+ explosiongas_t **l;
+ frictionscale = 1 - frametime;
+ frictionscale = bound(0, frictionscale, 1);
+ if (e->velocity[0] || e->velocity[1] || e->velocity[2])
+ {
+ end[0] = e->origin[0] + frametime * e->velocity[0];
+ end[1] = e->origin[1] + frametime * e->velocity[1];
+ end[2] = e->origin[2] + frametime * e->velocity[2];
+ if (r_explosionclip.integer)
+ {
+ float f, dot;
+ vec3_t impact, normal;
+ f = TraceLine(e->origin, end, impact, normal, 0, true);
+ VectorCopy(impact, e->origin);
+ if (f < 1)
+ {
+ // clip velocity against the wall
+ dot = DotProduct(e->velocity, normal) * -1.3f;
+ e->velocity[0] += normal[0] * dot;
+ e->velocity[1] += normal[1] * dot;
+ e->velocity[2] += normal[2] * dot;
+ }
+ }
+ else
+ {
+ VectorCopy(end, e->origin);
+ }
+ e->velocity[2] += sv_gravity.value * frametime;
+ VectorScale(e->velocity, frictionscale, e->velocity);
+ }
+ for (l = list;l < listend;l++)
+ {
+ if (*l != e)
+ {
+ VectorSubtract(e->origin, (*l)->origin, diff);
+ dist = DotProduct(diff, diff);
+ if (dist < 4096 && dist >= 1)
+ {
+ dist = (*l)->pressure * frametime / dist;
+ VectorMA(e->velocity, dist, diff, e->velocity);