Portal In/Out effects

This commit is contained in:
Simon Robertshaw 2011-11-18 14:57:49 +00:00
parent f135dbb734
commit d94914040b

View File

@ -1710,6 +1710,7 @@ GLfloat lineC[(((YRES*XRES)*2)*6)];
void render_parts(pixel *vid) void render_parts(pixel *vid)
{ {
int deca, decr, decg, decb, cola, colr, colg, colb, firea, firer, fireg, fireb, pixel_mode, q, i, t, nx, ny, x, y, caddress; int deca, decr, decg, decb, cola, colr, colg, colb, firea, firer, fireg, fireb, pixel_mode, q, i, t, nx, ny, x, y, caddress;
int orbd[4] = {0, 0, 0, 0}, orbl[4] = {0, 0, 0, 0};
float gradv, flicker, fnx, fny; float gradv, flicker, fnx, fny;
#ifdef OGLR #ifdef OGLR
int cfireV = 0, cfireC = 0, cfire = 0; int cfireV = 0, cfireC = 0, cfire = 0;
@ -1877,15 +1878,14 @@ void render_parts(pixel *vid)
cola = 255; cola = 255;
if(pixel_mode & (FIREMODE | PMODE_GLOW)) pixel_mode = (pixel_mode & ~(FIREMODE|PMODE_GLOW)) | PMODE_BLUR; if(pixel_mode & (FIREMODE | PMODE_GLOW)) pixel_mode = (pixel_mode & ~(FIREMODE|PMODE_GLOW)) | PMODE_BLUR;
} }
if (colour_mode & COLOUR_GRAD) else if (colour_mode & COLOUR_GRAD)
{ {
float frequency = 0.05; float frequency = 0.05;
int q = parts[i].temp-40; int q = parts[i].temp-40;
colr = sin(frequency*q) * 16 + PIXR(ptypes[t].pcolors); colr = sin(frequency*q) * 16 + colr;
colg = sin(frequency*q) * 16 + PIXG(ptypes[t].pcolors); colg = sin(frequency*q) * 16 + colg;
colb = sin(frequency*q) * 16 + PIXB(ptypes[t].pcolors); colb = sin(frequency*q) * 16 + colb;
if(pixel_mode & (FIREMODE | PMODE_GLOW)) pixel_mode = (pixel_mode & ~(FIREMODE|PMODE_GLOW)) | PMODE_BLUR; if(pixel_mode & (FIREMODE | PMODE_GLOW)) pixel_mode = (pixel_mode & ~(FIREMODE|PMODE_GLOW)) | PMODE_BLUR;
pixel_mode |= PMODE_BLEND;
} }
//Apply decoration colour //Apply decoration colour
@ -2366,6 +2366,42 @@ void render_parts(pixel *vid)
} }
#endif #endif
} }
if (pixel_mode & EFFECT_GRAVIN)
{
int nxo = 0;
int nyo = 0;
int r;
int fire_rv = 0;
float drad = 0.0f;
float ddist = 0.0f;
orbitalparts_get(parts[i].life, parts[i].ctype, orbd, orbl);
for (r = 0; r < 4; r++) {
ddist = ((float)orbd[r])/16.0f;
drad = (M_PI * ((float)orbl[r]) / 180.0f)*1.41f;
nxo = ddist*cos(drad);
nyo = ddist*sin(drad);
if (ny+nyo>0 && ny+nyo<YRES && nx+nxo>0 && nx+nxo<XRES)
addpixel(vid, nx+nxo, ny+nyo, colr, colg, colb, 255-orbd[r]);
}
}
if (pixel_mode & EFFECT_GRAVOUT)
{
int nxo = 0;
int nyo = 0;
int r;
int fire_bv = 0;
float drad = 0.0f;
float ddist = 0.0f;
orbitalparts_get(parts[i].life, parts[i].ctype, orbd, orbl);
for (r = 0; r < 4; r++) {
ddist = ((float)orbd[r])/16.0f;
drad = (M_PI * ((float)orbl[r]) / 180.0f)*1.41f;
nxo = ddist*cos(drad);
nyo = ddist*sin(drad);
if (ny+nyo>0 && ny+nyo<YRES && nx+nxo>0 && nx+nxo<XRES)
addpixel(vid, nx+nxo, ny+nyo, colr, colg, colb, 255-orbd[r]);
}
}
//Fire effects //Fire effects
if(firea && (pixel_mode & FIRE_BLEND)) if(firea && (pixel_mode & FIRE_BLEND))
{ {