Ejemplo n.º 1
0
static void display_func(void) {
    pre_display();

    draw_forces();
    draw_constraints();
    draw_particles();

    post_display();
}
Ejemplo n.º 2
0
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;
    }
}
Ejemplo n.º 3
0
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();
}