Merge pull request #3819 from arnova/subtitles_for_stacks
[vuplus_xbmc] / addons / visualization.vortex / resources / Presets / MentalHangover.vtx
1 // MentalHangover.vtx
2 // Author - MrC
3
4 Texture checker;
5 Texture ball;
6 float ty;
7
8 float d = 0;
9 float c;
10
11 // colours
12 float ar,ag,ab,br,bg,bb;
13 float colamt,coltime;
14
15 // balls
16 float[] c_z(64),c_vz(64),c_sx(64),c_sy(64), c_vy(64);
17
18 void Init()
19 {
20         checker.LoadTexture("checker_transp.png");
21         ball.LoadTexture("smiley.png");
22         
23         ty = 0;
24         coltime = 0;
25         
26         for (int x=0;x<64;x=x+1)
27         {
28       MakeNew(x);
29       c_z[x] = (Rand()*6) - 2;
30           c_vy[x] = Rand()*2 - 1;
31         }
32 }
33
34 void MakeNew(int n)
35 {
36    c_z[n] = 4;
37    c_vz[n] = Rand()* 1.0f + 1.0;
38    c_vy[n] = (Rand()*1.0 + 0.5);
39    c_sx[n] = (-0.5+Rand())*2.5;
40    c_sy[n] = 0.0f;
41 }
42
43
44 void Sprite(float x, float y, float z, float sz)
45 {
46    gfxTexCoord(0,0);
47    gfxVertex(x-sz,y+sz,z);
48    gfxTexCoord(1,0);
49    gfxVertex(x+sz,y+sz,z);
50    gfxTexCoord(1,1);
51    gfxVertex(x+sz,y-sz,z);
52    gfxTexCoord(0,1);
53    gfxVertex(x-sz,y-sz,z);
54 }
55
56 void Render()
57 {
58         d = (TIMEPASS*6 + (TREBLE * 4 * TIMEPASS)) * 0.25;
59
60         ty -= d;
61
62         if (ty > 2)
63         ty -= 1.0f;
64
65         if (ty < 2)
66         ty += 1.0f;
67
68         // Floor
69
70         coltime = coltime - TIMEPASS;
71         if (coltime<0)
72         {
73                 coltime = 1+(Rand()*5);
74                 ar = br; ag = bg; ab = bb;
75                 colamt =  0;
76                 float x = (Rand()*5.0)+1.0;
77                 br = x%2;
78                 bg = ((x%4)-br)/2;
79                 bb = ((x%8)-(bg*2)-br)/4;
80                 br = br/2.0;
81                 bg = bg/2.0;
82                 bb = bb/2.0;
83         }
84         colamt = colamt + TIMEPASS;
85         if (colamt>1) colamt=1;
86
87         gfxRotate(-5.0,1,0,0);
88
89         gfxSetTexture(NULL);
90         gfxTranslate(0, -0.245, 2.0f);
91         gfxSetBlendMode(BLEND_MOD);
92
93         gfxBegin(PRIM_QUADLIST);
94         gfxColour( ((1.0f-colamt)*ag)+(colamt*bg), ((1.0f-colamt)*ab)+(colamt*bb), ((1.0f-colamt)*ar)+(colamt*br), 1 );
95         gfxVertex(-5, 0, 2.5);
96         gfxVertex(5, 0, 2.5);
97         gfxVertex(5, 0, -2.5);
98         gfxVertex(-5, 0, -2.5);
99         gfxEnd();
100
101         gfxSetTexture(checker);
102         gfxSetBlendMode(BLEND_MOD);
103
104         gfxBegin(PRIM_QUADLIST);
105         gfxColour(0, 0, 0, 0.4);
106         gfxColour( ((1.0f-colamt)*ar)+(colamt*br), ((1.0f-colamt)*ag)+(colamt*bg), ((1.0f-colamt)*ab)+(colamt*bb), 1 );
107         gfxTexCoord(0, 0 + ty);
108         gfxVertex(-10, 0, 2.5);
109         gfxTexCoord(20, 0 + ty);
110         gfxVertex(10, 0, 2.5);
111         gfxTexCoord(20, 5 + ty);
112         gfxVertex(10, 0, -2.5);
113         gfxTexCoord(0, 5 + ty);
114         gfxVertex(-10, 0, -2.5);
115         gfxEnd();
116
117         gfxSetTexture(ball);
118
119         gfxSetBlendMode(BLEND_MOD);
120
121         gfxBegin(PRIM_QUADLIST);
122         for (int x=0;x<32;x++)
123         {
124         
125                 c_z[x] = c_z[x] - (d*c_vz[x]);
126                 c_vy[x] = c_vy[x] + 1 * TIMEPASS*2;
127                 c_sy[x] = c_sy[x] - (c_vy[x] * d);
128                 if (c_sy[x] < 0.025)
129                 {
130                         c_sy[x] = 0.025;
131                         c_vy[x] = - (c_vy[x]* 0.9);
132                 }
133                 if (c_z[x]<-2)
134                         MakeNew(x);
135
136                 c = (7.0-(c_z[x]+2))*0.11; 
137                 gfxColour(1,1,1,1); 
138                 Sprite(c_sx[x],c_sy[x],c_z[x], 0.0350);
139         } 
140
141         gfxEnd();
142         
143 }