// AlbumArtCubeRain.vtx // Author - MrC // Based on CubeRain.r4 by Gordon Williams int x,y; float c,tm,tn,td; float[] c_x(256),c_y(256),c_z(256),c_vz(256),c_rx(256),c_ry(256),c_sx(256),c_sy(256),c_sz(256); float counter; void MakeNew(int n) { c_x[n]=c_y[n]=0; while (Mag(c_x[n],c_y[n])<1) { c_x[n] = (Rand()*10.0)-5.0; c_y[n] = (Rand()*10.0)-5.0; } c_z[n] = 10; c_vz[n] = (1.0+Rand())*4; c_rx[n] = (1.0+Rand())*80; c_ry[n] = (1.0+Rand())*80; c_sx[n] = (0.5+Rand())*0.5; c_sy[n] = (0.5+Rand())*0.15; c_sz[n] = (0.5+Rand())*0.15; } void Init() { counter = 0; for (x=0;x<256;x=x+1) { MakeNew(x); c_z[x] = Rand()*10; } tm = tn = 0; } void Render() { td = ((TREBLE+1.0f)*TIMEPASS); tm = tm + td; tn = tn + ((BASS+1.5)*TIMEPASS*2); gfxTranslate(Cos(tn * 1.23f) * 0.5f, Sin(tn) * 0.5f, 0.0f); gfxRotate(Cos(tn*0.6734f)*20.0f, 1.0f, 0.0f, 0.0f); gfxRotate(Sin(tn*0.2143f)*20.0f, 0.0f, 1.0f, 0.0f); gfxSetTexture(TEXTURE_ALBUMART); for (x=0;x<20;x=x+1) { c_z[x] = c_z[x] - (td*c_vz[x]); if (c_z[x]<0) { MakeNew(x); } c = Cos(c_z[x]*0.05*3.1416); gfxColour(c,c,c,1); gfxPushMatrix(); gfxTranslate(c_x[x],c_y[x],c_z[x]); gfxRotate(c_rx[x]*tm, 1, 0, 0); gfxRotate(c_ry[x]*tm, 0, 1, 0); gfxCube(-c_sx[x],-c_sx[x],-c_sx[x],c_sx[x],c_sx[x],c_sx[x]); gfxPopMatrix(); } }