summaryrefslogtreecommitdiff
path: root/src/engine/explosion.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/explosion.h')
-rw-r--r--src/engine/explosion.h67
1 files changed, 2 insertions, 65 deletions
diff --git a/src/engine/explosion.h b/src/engine/explosion.h
index 4880125..819b0a3 100644
--- a/src/engine/explosion.h
+++ b/src/engine/explosion.h
@@ -1,6 +1,5 @@
namespace sphere
{
-
struct vert
{
vec pos;
@@ -110,13 +109,7 @@ struct fireballrenderer : listrenderer
void startrender()
{
- if(depthfx && depthfxtex.rendertex && numdepthfxranges>0)
- {
- if(!depthfxtex.highprecision()) SETSHADER(explosionsoft8);
- else SETSHADER(explosionsoft);
- }
- else SETSHADER(explosion);
-
+ SETSHADER(explosion);
sphere::enable();
}
@@ -130,62 +123,6 @@ struct fireballrenderer : listrenderer
sphere::cleanup();
}
- int finddepthfxranges(void **owners, float *ranges, int numranges, int maxranges, vec &bbmin, vec &bbmax)
- {
- static struct fireballent : physent
- {
- fireballent()
- {
- type = ENT_CAMERA;
- }
- } e;
-
- for(listparticle *p = list; p; p = p->next)
- {
- int ts = p->fade <= 5 ? 1 : lastmillis-p->millis;
- float pmax = p->val,
- size = p->fade ? float(ts)/p->fade : 1,
- psize = (p->size + pmax * size)*WOBBLE;
- if(2*(p->size + pmax)*WOBBLE < depthfxblend ||
- (!depthfxtex.highprecision() && !depthfxtex.emulatehighprecision() && psize > depthfxscale - depthfxbias) || ) continue;
-
- e.o = p->o;
- e.radius = e.xradius = e.yradius = e.eyeheight = e.aboveeye = psize;
- if(!::collide(&e, vec(0, 0, 0), 0, false)) continue;
-
- if(depthfxscissor==2 && !depthfxtex.addscissorbox(p->o, psize)) continue;
-
- vec dir = camera1->o;
- dir.sub(p->o);
- float dist = dir.magnitude();
- dir.mul(psize/dist).add(p->o);
- float depth = depthfxtex.eyedepth(dir);
-
- loopk(3)
- {
- bbmin[k] = min(bbmin[k], p->o[k] - psize);
- bbmax[k] = max(bbmax[k], p->o[k] + psize);
- }
-
- int pos = numranges;
- loopi(numranges) if(depth < ranges[i]) { pos = i; break; }
- if(pos >= maxranges) continue;
-
- if(numranges > pos)
- {
- int moved = min(numranges-pos, maxranges-(pos+1));
- memmove(&ranges[pos+1], &ranges[pos], moved*sizeof(float));
- memmove(&owners[pos+1], &owners[pos], moved*sizeof(void *));
- }
- if(numranges < maxranges) numranges++;
-
- ranges[pos] = depth;
- owners[pos] = p;
- }
-
- return numranges;
- }
-
void seedemitter(particleemitter &pe, const vec &o, const vec &d, int fade, float size, int gravity)
{
pe.maxfade = max(pe.maxfade, fade);
@@ -226,7 +163,6 @@ struct fireballrenderer : listrenderer
LOCALPARAM(center, o);
LOCALPARAMF(millis, lastmillis/1000.0f);
LOCALPARAMF(blendparams, inside ? 0.5f : 4, inside ? 0.25f : 0);
- binddepthfxparams(depthfxblend, inside ? blend/(2*255.0f) : 0, 2*(p->size + pmax)*WOBBLE >= depthfxblend, p);
int passes = inside ? 2 : 1;
loopi(passes)
@@ -238,5 +174,6 @@ struct fireballrenderer : listrenderer
}
}
};
+
static fireballrenderer fireballs("packages/particles/explosion.png"), bluefireballs("packages/particles/plasma.png");