static void display_func(void) { pre_display(); draw_forces(); draw_constraints(); draw_particles(); post_display(); }
void step() { //"1-4: demos, p - pause, y - kick body, ' - draw contacts/constraints" clock_t cl = clock(); if (cl > prevCl + (double)CLOCKS_PER_SEC * speed / 1000 && !pause) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); draw_bodies(world.bodies); //draw_ropes(world.ropes); if (draw_cos) { draw_collisions(world.collisions); draw_constraints(world.constraints); } if (drag_force != 0) { double wx, wy; screen_coords2world(motion_x, motion_y, wx, wy); Vector2 head(wx, wy), tail(drag_force->Body->form->point + drag_force->LocalPoint); Vector2 vect = head - tail; drag_force->Magnitude[0] = drag_force_spring_coef * vect.v1 * drag_force->Body->mass - drag_force_damper_coef * drag_force->Body->velocity.v1; drag_force->Magnitude[1] = drag_force_spring_coef * vect.v2 * drag_force->Body->mass - drag_force_damper_coef * drag_force->Body->velocity.v2; glColor3f(0.0f, 1.0f, 0.0f); draw_segment(Segment(head, tail)); } if (kickBody != 0) { double wx, wy; screen_coords2world(motion_x, motion_y, wx, wy); glColor3f(0.0f, 0.0f, 1.0f); draw_segment(Segment(Vector2(wx, wy), kickBody->form->point)); } if (player_body) { camera_xpos = player_body->form->point.v1; camera_ypos = player_body->form->point.v2; int w = glutGet(GLUT_WINDOW_WIDTH); int h = glutGet(GLUT_WINDOW_HEIGHT); reshape_window(w, h); } if (draw_tw) TwDraw(); glutSwapBuffers(); } if (cl > prevCl + (double)CLOCKS_PER_SEC * speed / 1000 && !pause) { world.update(world.vars.timeStep); prevCl = cl; } }
static void display_func(void) { pre_display(); if (dvel) draw_velocity(); else draw_density(); if (dpar) { draw_forces(); draw_constraints(); draw_particles(); } for(int i = 0; i < bodies.size(); i++){ bodies[i]->draw(); } post_display(); }