All pastes #609481 Raw Edit

Untitled

public text v1 · immutable
#609481 ·published 2007-07-08 22:09 UTC
rendered paste body
    Raydium - CQFD Corp.
    http://raydium.org/
    License: GPL - GNU General Public License, see "gpl.txt" file.
*/

// This file is a default skeleton. Replace all [ ... ] sections with yours.
// Have fun !

#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;
GLfloat potencia=0;
GLfloat direccion[3];
int free_cam=1;
int flight=0;
int a=0;


void create_plane(void)
{
    direccion[0]=0;
    direccion[1]=0;
    direccion[2]=0;
    raydium_ode_object_delete_name("CESNA");
    a=raydium_ode_object_create("CESNA");
    raydium_ode_object_box_add("avion",a,1,RAYDIUM_ODE_AUTODETECT,RAYDIUM_ODE_AUTODETECT,RAYDIUM_ODE_AUTODETECT,RAYDIUM_ODE_STANDARD,0,"plane.tri");
    free_cam=0;
    flight=0;
}

void create_engine(void)
{
    //elevation force
    raydium_ode_motor_delete_name("elev");
    raydium_ode_motor_create("elev",a,RAYDIUM_ODE_MOTOR_ROCKET);
    raydium_ode_motor_rocket_set_name ("elev","avion", 0, 0, 0);    
    raydium_ode_motor_speed_name ("elev", 1);    
    raydium_ode_motor_rocket_orientation_name ("elev",0,0,0);
    //forwarding force = turbine/helix force
    
    raydium_ode_motor_delete_name("ff");
    raydium_ode_motor_create("ff",a,RAYDIUM_ODE_MOTOR_ROCKET);
    raydium_ode_motor_rocket_set_name ("ff","avion", 0, 0, 0);    
    raydium_ode_motor_speed_name ("ff", potencia/2);    
    raydium_ode_motor_rocket_orientation_name ("ff",0,90,0);  
   
    raydium_log("Engine created");
    flight=1;
}


void display(void)
{
    int delta_x, delta_y;
    raydium_joy_key_emul();
    if(free_cam)
    {
    cam_pos_z += (raydium_trigo_sin(cam_angle_x+90)*raydium_joy_y*speed*raydium_trigo_sin(90-cam_angle_y));
    cam_pos_x += (raydium_trigo_cos(cam_angle_x+90)*raydium_joy_y*speed*raydium_trigo_sin(90-cam_angle_y));
    cam_pos_y += (raydium_trigo_cos(90-cam_angle_y)*speed*raydium_joy_y);
    
    cam_pos_x -= (raydium_trigo_cos(cam_angle_x)*raydium_joy_x*speed);
    cam_pos_z -= (raydium_trigo_sin(cam_angle_x)*raydium_joy_x*speed);
    raydium_joy_key_emul();

    delta_x = raydium_mouse_x - (raydium_window_tx/2);
    cam_angle_x += (delta_x*sensibilite*0.1f); 

    delta_y = raydium_mouse_y - (raydium_window_ty/2);
    cam_angle_y += (delta_y*sensibilite*0.1f); 
    }
        
    raydium_mouse_move(raydium_window_tx/2, raydium_window_ty/2);
    
if(flight)
{
    //raydium_ode_motor_speed_name ("elev",1+(potencia/3) );


    if(raydium_ode_element_touched_get_name("avion")) potencia=potencia/2.0;

    if(raydium_key_last==1000+'+')
    {
        potencia+=0.1;
        raydium_log("potencia: %f",potencia);
    }
    if(raydium_key_last==1000+'-')
    {
        potencia-=0.1;
        raydium_log("potencia: %f",potencia);
    }
    if(raydium_key[GLUT_KEY_LEFT])direccion[0]+=0.01;
    if(raydium_key[GLUT_KEY_RIGHT])direccion[0]-=0.01;
    if(raydium_key[GLUT_KEY_UP])direccion[1]-=0.01;
    if(raydium_key[GLUT_KEY_DOWN])direccion[1]+=0.01;
    //datos extra
        raydium_ode_element_rotate_name_3f("avion",direccion[0],direccion[1],direccion[2]);
   raydium_ode_motor_rocket_orientation_name ("ff",direccion[0],direccion[1]+90,direccion[2]);

    raydium_ode_motor_speed_name ("ff", potencia);
    raydium_ode_motor_speed_name("elev",potencia/2);

}
    
    
if(raydium_key_last==1027)
    exit(0);
    //"a" to create the plane
if(raydium_key_last==1000+'a') 
    create_plane();
    //"s" to create engine
if(raydium_key_last==1000+'s')
    create_engine(); 



raydium_clear_frame();
/* [ place your camera here ] */ if(free_cam)
    {
        raydium_camera_place(cam_pos_x,cam_pos_y,cam_pos_z,cam_angle_x,cam_angle_y,0);
        raydium_camera_replace();
     }
     else
     {
        //plane relative camera
        raydium_ode_element_camera_inboard_name("avion",-3.3,0,2,6,0,0);
        
     }
     
/* [ draw here ] */ raydium_ode_draw_all(0);
raydium_rendering_finish();
}



int main(int argc, char **argv)
{
raydium_init_args(argc,argv);
raydium_window_create(800,600,RAYDIUM_RENDERING_WINDOW,"Situacion 1");

raydium_texture_filter_change(RAYDIUM_TEXTURE_FILTER_TRILINEAR);
raydium_window_view_perspective(60,0.01,2500); // fov 60 + near and far planes

raydium_fog_disable();  
//raydium_hdr_enable();  
raydium_light_enable();
raydium_light_on(0);

raydium_light_conf_7f(0,50,150,200,1000000,1,0.9,0.7); // id, pos, intensity and color (RGB)
raydium_background_color_change(1,0.9,0.7,1);

raydium_sky_box_cache();

/* [ place base scene here ] */ raydium_ode_ground_set_name("desertBIG.tri");

raydium_callback(&display);
return(0);
}

// EOF