// Fountain test script #pragma version(1) int newPart = 0; int main(int launchID) { int ct; int count = Control->count; int rate = Control->rate; float height = getHeight(); struct point_s * p = (struct point_s *)point; if (rate) { float rMax = ((float)rate) * 0.005f; int x = Control->x; int y = Control->y; int color = ((int)(Control->r * 255.f)) | ((int)(Control->g * 255.f)) << 8 | ((int)(Control->b * 255.f)) << 16 | (0xf0 << 24); struct point_s * np = &p[newPart]; while (rate--) { vec2Rand((float *)&np->delta.x, rMax); np->position.x = x; np->position.y = y; np->color = color; newPart++; np++; if (newPart >= count) { newPart = 0; np = &p[newPart]; } } } for (ct=0; ct < count; ct++) { float dy = p->delta.y + 0.15f; float posy = p->position.y + dy; if ((posy > height) && (dy > 0)) { dy *= -0.3f; } p->delta.y = dy; p->position.x += p->delta.x; p->position.y = posy; p++; } uploadToBufferObject(NAMED_PartBuffer); drawSimpleMesh(NAMED_PartMesh); return 1; }