static void tentacle_update(PluginInfo *goomInfo, Pixel *buf, Pixel *back, int W, int H, short data[2][512], float rapport, int drawit, TentacleFXData *fx_data) { int tmp; int tmp2; int color; int colorlow; float dist,dist2,rotangle; if ((!drawit) && (fx_data->ligs>0.0f)) fx_data->ligs = -fx_data->ligs; fx_data->lig += fx_data->ligs; if (fx_data->lig > 1.01f) { if ((fx_data->lig>10.0f) | (fx_data->lig<1.1f)) fx_data->ligs = -fx_data->ligs; if ((fx_data->lig<6.3f)&&(goom_irand(goomInfo->gRandom,30)==0)) fx_data->dstcol=goom_irand(goomInfo->gRandom,NB_TENTACLE_COLORS); fx_data->col = evolutecolor(fx_data->col,fx_data->colors[fx_data->dstcol],0xff,0x01); fx_data->col = evolutecolor(fx_data->col,fx_data->colors[fx_data->dstcol],0xff00,0x0100); fx_data->col = evolutecolor(fx_data->col,fx_data->colors[fx_data->dstcol],0xff0000,0x010000); fx_data->col = evolutecolor(fx_data->col,fx_data->colors[fx_data->dstcol],0xff000000,0x01000000); color = fx_data->col; colorlow = fx_data->col; lightencolor(&color,fx_data->lig * 2.0f + 2.0f); lightencolor(&colorlow,(fx_data->lig/3.0f)+0.67f); rapport = 1.0f + 2.0f * (rapport - 1.0f); rapport *= 1.2f; if (rapport > 1.12f) rapport = 1.12f; pretty_move (goomInfo, fx_data->cycle, &dist, &dist2, &rotangle, fx_data); for (tmp=0;tmp<nbgrid;tmp++) { for (tmp2=0;tmp2<definitionx;tmp2++) { float val = (float)(ShiftRight(data[0][goom_irand(goomInfo->gRandom,511)],10)) * rapport; fx_data->vals[tmp2] = val; } grid3d_update (fx_data->grille[tmp], rotangle, fx_data->vals, dist2); } fx_data->cycle+=0.01f; for (tmp=0;tmp<nbgrid;tmp++) grid3d_draw (goomInfo, fx_data->grille[tmp],color,colorlow,dist,buf,back,W,H); } else { fx_data->lig = 1.05f; if (fx_data->ligs < 0.0f) fx_data->ligs = -fx_data->ligs; pretty_move (goomInfo, fx_data->cycle, &dist, &dist2, &rotangle, fx_data); fx_data->cycle+=0.1f; if (fx_data->cycle > 1000) fx_data->cycle = 0; } }
void tentacle_update(int *buf, int *back, int W, int H, short data[2][512], float rapport, int drawit) { int tmp; int tmp2; static int colors[] = { (0x18<<(ROUGE*8))|(0x4c<<(VERT*8))|(0x2f<<(BLEU*8)), (0x48<<(ROUGE*8))|(0x2c<<(VERT*8))|(0x6f<<(BLEU*8)), (0x58<<(ROUGE*8))|(0x3c<<(VERT*8))|(0x0f<<(BLEU*8))}; static int col = (0x28<<(ROUGE*8))|(0x2c<<(VERT*8))|(0x5f<<(BLEU*8)); static int dstcol = 0; static float lig = 1.15f; static float ligs = 0.1f; int color; int colorlow; float dist,dist2,rotangle; if ((!drawit) && (ligs>0.0f)) ligs = -ligs; lig += ligs; if (lig > 1.01f) { if ((lig>10.0f) | (lig<1.1f)) ligs = -ligs; if ((lig<6.3f)&&(iRAND(30)==0)) dstcol=iRAND(3); col = evolutecolor(col,colors[dstcol],0xff,0x01); col = evolutecolor(col,colors[dstcol],0xff00,0x0100); col = evolutecolor(col,colors[dstcol],0xff0000,0x010000); col = evolutecolor(col,colors[dstcol],0xff000000,0x01000000); color = col; colorlow = col; lightencolor(&color,lig * 2.0f + 2.0f); lightencolor(&colorlow,(lig/3.0f)+0.67f); rapport = 1.0f + 2.0f * (rapport - 1.0f); rapport *= 1.2f; if (rapport > 1.12f) rapport = 1.12f; pretty_move (cycle,&dist,&dist2,&rotangle); for (tmp=0;tmp<nbgrid;tmp++) { for (tmp2=0;tmp2<definitionx;tmp2++) { float val = (float)(ShiftRight(data[0][iRAND(511)],10)) * rapport; vals[tmp2] = val; } grid3d_update (grille[tmp],rotangle, vals, dist2); } cycle+=0.01f; for (tmp=0;tmp<nbgrid;tmp++) grid3d_draw (grille[tmp],color,colorlow,dist,buf,back,W,H); } else { lig = 1.05f; if (ligs < 0.0f) ligs = -ligs; pretty_move (cycle,&dist,&dist2,&rotangle); cycle+=0.1f; if (cycle > 1000) cycle = 0; } }