// Includes #ifdef G_OS_WIN32 #define WIN32_LEAN_AND_MEAN 1 #include #endif #include #include #include #include "fluids.h" #include "seedpoint.h" #include "renderer_gl.h" struct point seedpoints[MAX_SEEDPOINTS]; int cur_seedpoint; void create_seedpoint(float mx, float my) { if (cur_seedpoint >= MAX_SEEDPOINTS) return; seedpoints[cur_seedpoint].x = mx; seedpoints[cur_seedpoint].y = my; seedpoints[cur_seedpoint].z = -725.0f; cur_seedpoint++; } // create_seedpoint void delete_seedpoint(int seedpoint_nr) { int i = seedpoint_nr; for (i; i < cur_seedpoint; i++) { seedpoints[i].x = seedpoints[i+1].x; seedpoints[i].y = seedpoints[i+1].y; seedpoints[i].z = seedpoints[i+1].z; } for (i; i < MAX_SEEDPOINTS; i++) { seedpoints[i].x = 0.0f; seedpoints[i].y = 0.0f; seedpoints[i].z = 0.0f; } } // delete_seedpoint void render_seedpoints(void) { int i; GLuint lid = glGenLists(1); GLUquadricObj *qobj = gluNewQuadric(); gluQuadricDrawStyle(qobj, GLU_FILL); gluQuadricNormals(qobj, GLU_SMOOTH); gluQuadricOrientation(qobj, GLU_INSIDE); gluQuadricTexture(qobj, GL_TRUE); glNewList(lid, GL_COMPILE); gluSphere(qobj, 10.0f, 16, 16); glEndList(); for (i = 0; i < cur_seedpoint; i++) { float color_scale = (float)i/MAX_SEEDPOINTS; glColor3f(color_scale, 1.0f - color_scale, 0.0f); glPushMatrix(); glLoadIdentity(); glTranslatef(seedpoints[i].x - (winWidth/2), -(seedpoints[i].y - (winHeight/2)), seedpoints[i].z); glCallList(lid); glPopMatrix(); } gluDeleteQuadric(qobj); glDeleteLists(lid, 1); } int get_cur_seedpoint(void) { return cur_seedpoint; } void set_cur_seedpoint(int seed_nr) { cur_seedpoint = seed_nr; } struct point get_seedpoint(int index) { struct point p; p.x = seedpoints[index].x; p.y = seedpoints[index].y; p.z = seedpoints[index].z; return p; }