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