// Author - MrC // Based on R4Rain.r4 by Gordon Williams int x,y, t; float c,tm,tn,td, s; float[] c_x(64),c_y(64),c_z(64),c_vz(64),c_rx(64),c_ry(64),c_sx(64),c_sy(64),c_sz(64); float d; Texture texture; Texture sky; void MakeNew(int n) { c_x[n]=c_y[n]=0; while (Mag(c_x[n],c_y[n])<1) { c_x[n] = (Rand()*6.0)-3.0; c_y[n] = (Rand()*6.0)-3.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.5; c_sz[n] = (1.0+Rand())*0.05; } void Init() { texture.LoadTexture("splash_original.dds"); sky.LoadTexture("skybox.dds"); for (x=0;x<64;x=x+1) { MakeNew(x); c_z[x] = Rand()*10; } tm = tn = 0; } void mything(float x,float y,float z) { gfxBegin(PRIM_QUADLIST); for (t=0; t<1; t++) { s = z*((t/2.0f)-1.0); gfxTexCoord(0,0); gfxVertex(-x,y,s); gfxTexCoord(1,0); gfxVertex(x,y,s); gfxTexCoord(1,1); gfxVertex(x,-y,s); gfxTexCoord(0,1); gfxVertex(-x,-y,s); } gfxEnd(); } void Render() { td = ((TREBLE+1.5f)*TIMEPASS); tm = tm + td; tn = tn + ((BASS+1.0)*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(sky); gfxCube(-100,-100,-100,100,100,100); gfxSetTexture(texture); gfxSetBlendMode(BLEND_ADD); for (x=0;x<64;x++) { c_z[x] = c_z[x] - (td*c_vz[x]); if (c_z[x]<0) MakeNew(x); c = (10.0-c_z[x])*0.11; gfxColour(c,c,c,1); gfxPushMatrix(); gfxTranslate(c_x[x],c_y[x],c_z[x]); gfxRotate(c_rx[x]*tm,1.0f,0.0f,0.0f); gfxRotate(c_ry[x]*tm,0.0f,1.0f,0.0f); mything(c_sx[x],c_sy[x],c_sz[x]); gfxPopMatrix(); } }