1// Fountain test script 2#pragma version(1) 3 4int newPart = 0; 5 6int main(int launchID) { 7 int ct; 8 int count = Control->count; 9 int rate = Control->rate; 10 float height = getHeight(); 11 struct point_s * p = (struct point_s *)point; 12 13 if (rate) { 14 float rMax = ((float)rate) * 0.005f; 15 int x = Control->x; 16 int y = Control->y; 17 int color = ((int)(Control->r * 255.f)) | 18 ((int)(Control->g * 255.f)) << 8 | 19 ((int)(Control->b * 255.f)) << 16 | 20 (0xf0 << 24); 21 struct point_s * np = &p[newPart]; 22 23 while (rate--) { 24 vec2Rand((float *)&np->delta.x, rMax); 25 np->position.x = x; 26 np->position.y = y; 27 np->color = color; 28 newPart++; 29 np++; 30 if (newPart >= count) { 31 newPart = 0; 32 np = &p[newPart]; 33 } 34 } 35 } 36 37 for (ct=0; ct < count; ct++) { 38 float dy = p->delta.y + 0.15f; 39 float posy = p->position.y + dy; 40 if ((posy > height) && (dy > 0)) { 41 dy *= -0.3f; 42 } 43 p->delta.y = dy; 44 p->position.x += p->delta.x; 45 p->position.y = posy; 46 p++; 47 } 48 49 uploadToBufferObject(NAMED_PartBuffer); 50 drawSimpleMesh(NAMED_PartMesh); 51 return 1; 52} 53