#include "raydium/index.c"

GLfloat cam_angle_x = 0;
GLfloat cam_angle_y = 90;

GLfloat cam_pos_x = 0;
GLfloat cam_pos_y = 0;
GLfloat cam_pos_z = 0;

GLfloat speed = 0.1;
GLint sensibilite = 3;

GLint lacet = 0;

GLfloat light_color[] = {1.0, 0.9, 0.8, 1.0};
//    GLfloat back_color[] = {1, 1, 1, 1};
GLfloat  *back_color=light_color;
//    GLfloat light_color[] = {0, 0, 0, 1};





int create_ragdoll(void)
{
#define BONE_BREAK 0

//dReal pos[3];
int obj;
int head,body,u_leg,u_leg2,l_leg,l_leg2,u_arm,u_arm2,l_arm,l_arm2;
int jneck,jfemur,jfemur2,jknee,jknee2,jshoulder,jshoulder2,jelbow,jelbow2;
int mknees,mtorso,mneck;
char name[128];


//    raydium_ode_object_delete_name("RAGDOLL");
    raydium_ode_name_auto("RAGDOLL",name);
    obj=raydium_ode_object_create(name);
    raydium_ode_name_auto("head",name);
    head=raydium_ode_object_sphere_add(name,obj,0.1,RAYDIUM_ODE_AUTODETECT,RAYDIUM_ODE_STANDARD,0,"p_head.tri");
    raydium_ode_element_move_3f(head,5,0,1);

    raydium_ode_name_auto("body",name);
    body=raydium_ode_object_box_add(name,obj,0.01,RAYDIUM_ODE_AUTODETECT,0,0,RAYDIUM_ODE_STANDARD,0,"p_body.tri");
    raydium_ode_element_move_3f(body,5,0,0.66);
    raydium_ode_name_auto("neck",name);
    jneck=raydium_ode_joint_attach_hinge(name,body,head,5,0,0.95,RAYDIUM_ODE_JOINT_AXE_X);
    raydium_ode_joint_hinge_limits(jneck,-1,1);
    raydium_ode_joint_break_force(jneck,BONE_BREAK);
//    raydium_ode_joint_delete_callback_name("neck",bone_break);

    raydium_ode_name_auto("u_leg",name);
    u_leg=raydium_ode_object_box_add(name,obj,0.1,RAYDIUM_ODE_AUTODETECT,0,0,RAYDIUM_ODE_STANDARD,0,"p_u_leg.tri");
    raydium_ode_element_move_3f(u_leg,4.9,0,0.26);
    raydium_ode_element_rotate_3f(u_leg,0,-0.2,0);
    raydium_ode_name_auto("femur",name);
    jfemur=raydium_ode_joint_attach_hinge(name,body,u_leg,4.9,0,0.42,RAYDIUM_ODE_JOINT_AXE_X);
    raydium_ode_joint_hinge_limits(jfemur,-1,1);
    raydium_ode_joint_break_force(jfemur,BONE_BREAK);
//    raydium_ode_joint_delete_callback_name("femur",bone_break);

    raydium_ode_name_auto("u_leg2",name);
    u_leg2=raydium_ode_object_box_add(name,obj,0.1,RAYDIUM_ODE_AUTODETECT,0,0,RAYDIUM_ODE_STANDARD,0,"p_u_leg2.tri");
    raydium_ode_element_move_3f(u_leg2,5.1,0,0.26);
    raydium_ode_element_rotate_3f(u_leg2,0,0.2,0);
    raydium_ode_name_auto("femur2",name);
    jfemur2=raydium_ode_joint_attach_hinge(name,body,u_leg2,5.1,0,0.42,RAYDIUM_ODE_JOINT_AXE_X);
    raydium_ode_joint_hinge_limits(jfemur2,-1,1);
    raydium_ode_joint_break_force(jfemur2,BONE_BREAK);
//    raydium_ode_joint_delete_callback_name("femur2",bone_break);


    raydium_ode_name_auto("l_leg",name);
    l_leg=raydium_ode_object_box_add(name,obj,0.1,RAYDIUM_ODE_AUTODETECT,0,0,RAYDIUM_ODE_STANDARD,0,"p_l_leg.tri");
    raydium_ode_element_move_3f(l_leg,4.82,-0.02,-0.14);
    raydium_ode_element_rotate_3f(l_leg,0,-0.1,0);
    raydium_ode_element_slip(l_leg,RAYDIUM_ODE_SLIP_ICE);
    raydium_ode_name_auto("knee",name);
    jknee=raydium_ode_joint_attach_hinge(name,u_leg,l_leg,4.85,0,0.05,RAYDIUM_ODE_JOINT_AXE_X);
    raydium_ode_joint_hinge_limits(jknee,-2,0);
    raydium_ode_joint_break_force(jknee,BONE_BREAK);
//    raydium_ode_joint_delete_callback_name("knee",bone_break);

    raydium_ode_name_auto("u_leg2",name);
    l_leg2=raydium_ode_object_box_add(name,obj,0.1,RAYDIUM_ODE_AUTODETECT,0,0,RAYDIUM_ODE_STANDARD,0,"p_l_leg2.tri");
    raydium_ode_element_move_3f(l_leg2,5.18,-0.02,-0.14);
    raydium_ode_element_rotate_3f(l_leg2,0,0.1,0);
    raydium_ode_element_slip(l_leg2,RAYDIUM_ODE_SLIP_ICE);
    raydium_ode_name_auto("knee2",name);
    jknee2=raydium_ode_joint_attach_hinge(name,u_leg2,l_leg2,5.15,0,0.05,RAYDIUM_ODE_JOINT_AXE_X);
    raydium_ode_joint_hinge_limits(jknee2,-2,0);
    raydium_ode_joint_break_force(jknee2,BONE_BREAK);
//    raydium_ode_joint_delete_callback_name("knee2",bone_break);

    raydium_ode_name_auto("u_arm",name);
    u_arm=raydium_ode_object_box_add(name,obj,0.1,RAYDIUM_ODE_AUTODETECT,0,0,RAYDIUM_ODE_STANDARD,0,"p_u_arm.tri");
    raydium_ode_element_move_3f(u_arm,4.83,0,0.73);
    r