Index: raydium_modler.c
===================================================================
--- raydium_modler.c	(revision 1009)
+++ raydium_modler.c	(revision 1010)
@@ -89,20 +89,20 @@
 for(i=0;i<raydium_vertex_index;i++)
   if(raydium_vertex_texture[i]==raydium_texture_current_main)
     {
-     if(raydium_vertex_normal_z[i]<-0.5 || raydium_vertex_normal_z[i]>0.5 )
+     if(raydium_vertex_normal_z(i)<-0.5 || raydium_vertex_normal_z(i)>0.5 )
      {
-     raydium_vertex_texture_u[i]=(raydium_vertex_x[i]-x1)/xdiff;
-     raydium_vertex_texture_v[i]=(raydium_vertex_y[i]-y1)/ydiff;
+     raydium_vertex_texture_u(i)=(raydium_vertex_x(i)-x1)/xdiff;
+     raydium_vertex_texture_v(i)=(raydium_vertex_y(i)-y1)/ydiff;
      }
-    else if(raydium_vertex_normal_x[i]<-0.5 || raydium_vertex_normal_x[i]>0.5 )
+    else if(raydium_vertex_normal_x(i)<-0.5 || raydium_vertex_normal_x(i)>0.5 )
      {
-     raydium_vertex_texture_u[i]=(raydium_vertex_z[i]-z1)/zdiff;
-     raydium_vertex_texture_v[i]=(raydium_vertex_y[i]-y1)/ydiff;
+     raydium_vertex_texture_u(i)=(raydium_vertex_z(i)-z1)/zdiff;
+     raydium_vertex_texture_v(i)=(raydium_vertex_y(i)-y1)/ydiff;
      }
     else
      {
-     raydium_vertex_texture_u[i]=(raydium_vertex_x[i]-x1)/xdiff;
-     raydium_vertex_texture_v[i]=(raydium_vertex_z[i]-z1)/zdiff;
+     raydium_vertex_texture_u(i)=(raydium_vertex_x(i)-x1)/xdiff;
+     raydium_vertex_texture_v(i)=(raydium_vertex_z(i)-z1)/zdiff;
      }
     }
 
@@ -221,9 +221,9 @@
 
 for(i=0;i<raydium_vertex_index;i++)
 {
-raydium_vertex_x[i]*=xfact;
-raydium_vertex_y[i]*=yfact;
-raydium_vertex_z[i]*=zfact;
+raydium_vertex_x(i)*=xfact;
+raydium_vertex_y(i)*=yfact;
+raydium_vertex_z(i)*=zfact;
 }
 
 }
@@ -236,7 +236,7 @@
 {
 //raydium_vertex_x[i]*=fact;
 //raydium_vertex_y[i]*=fact;
-raydium_vertex_z[i]*=-1;
+raydium_vertex_z(i)*=-1;
 }
 
 }
@@ -248,11 +248,11 @@
 
 for(i=0;i<raydium_vertex_index;i++)
 {
-x=raydium_vertex_x[i];
-y=raydium_vertex_y[i];
+x=raydium_vertex_x(i);
+y=raydium_vertex_y(i);
 
-raydium_vertex_x[i]=x*raydium_math_cos(angle) - y*raydium_math_sin(angle);
-raydium_vertex_y[i]=x*raydium_math_sin(angle) + y*raydium_math_cos(angle);
+raydium_vertex_x(i)=x*raydium_math_cos(angle) - y*raydium_math_sin(angle);
+raydium_vertex_y(i)=x*raydium_math_sin(angle) + y*raydium_math_cos(angle);
 //raydium_vertex_z[i]*=-1;
 }
 
@@ -266,11 +266,11 @@
 
 for(i=0;i<raydium_vertex_index;i++)
 {
-x=raydium_vertex_x[i];
-z=raydium_vertex_z[i];
+x=raydium_vertex_x(i);
+z=raydium_vertex_z(i);
 
-raydium_vertex_x[i]=x*raydium_math_cos(angle) - z*raydium_math_sin(angle);
-raydium_vertex_z[i]=x*raydium_math_sin(angle) + z*raydium_math_cos(angle);
+raydium_vertex_x(i)=x*raydium_math_cos(angle) - z*raydium_math_sin(angle);
+raydium_vertex_z(i)=x*raydium_math_sin(angle) + z*raydium_math_cos(angle);
 //raydium_vertex_z[i]*=-1;
 }
 
@@ -283,11 +283,11 @@
 
 for(i=0;i<raydium_vertex_index;i++)
 {
-y=raydium_vertex_y[i];
-z=raydium_vertex_z[i];
+y=raydium_vertex_y(i);
+z=raydium_vertex_z(i);
 
-raydium_vertex_y[i]=y*raydium_math_cos(angle) - z*raydium_math_sin(angle);
-raydium_vertex_z[i]=y*raydium_math_sin(angle) + z*raydium_math_cos(angle);
+raydium_vertex_y(i)=y*raydium_math_cos(angle) - z*raydium_math_sin(angle);
+raydium_vertex_z(i)=y*raydium_math_sin(angle) + z*raydium_math_cos(angle);
 //raydium_vertex_z[i]*=-1;
 }
 
@@ -297,32 +297,16 @@
 void size_n_(int n, GLfloat *min, GLfloat *max, int start, int end)
 {
 int i;
-GLfloat *tbl=NULL;
 
 if(!raydium_vertex_index) return;
 
-switch(n)
-{
-    case 0:
-        tbl=raydium_vertex_x;
-        break;
-    case 1:
-        tbl=raydium_vertex_y;
-        break;
-    case 2:
-        tbl=raydium_vertex_z;
-        break;
-}
 
-if(!tbl)
-    return;
+(*max)=(*min)=raydium_vertex_arr[start*3+n];
 
-(*max)=(*min)=tbl[start];
-
 for(i=start+1;i<end;i++)
     {
-    if(tbl[i]>(*max)) (*max)=tbl[i];
-    if(tbl[i]<(*min)) (*min)=tbl[i];
+    if(raydium_vertex_arr[i*3+n]>(*max)) (*max)=raydium_vertex_arr[i*3+n];
+    if(raydium_vertex_arr[i*3+n]<(*min)) (*min)=raydium_vertex_arr[i*3+n];
     }
 
 }
@@ -355,9 +er_cut(todo,part1,part2,'#');
  raydium_texture_current_set_name(part1); // main texture
  strcpy(todo,part2);

  while(raydium_parser_cut(todo,part1,part2,'#'))
        {
        raydium_texture_current_env[count++]=raydium_texture_find_by_name(part1);
        strcpy(todo,part2);
        }
  raydium_texture_current_env[count++]=raydium_texture_find_by_name(todo);

  return 3;
}



// 2 textures + 1 uv
if(sep && sep2)
{
  sscanf(sep+1,"%f|%f|%s\n", &raydium_texture_current_multi_u,
                            &raydium_texture_current_multi_v,
                            texname);
  raydium_texture_current_multi=raydium_texture_find_by_name(texname);
  *sep=0;
  raydium_texture_current_set_name(name);
  *sep=MULTI_SEP;
  return 2;
}


// 2 textures, but 0 uv
if(sep && !sep2)
{
  raydium_texture_current_multi=raydium_texture_find_by_name(sep+1);
  *sep=0;
  raydium_texture_current_set_name(name);
  *sep=MULTI_SEP;
  raydium_texture_current_multi_u=-99999;
  raydium_texture_current_multi_v=-99999;
  return 1;
}

// 1 texture and 0 uv
if(!sep && !sep2)
{
  raydium_texture_current_multi=0;
  raydium_texture_current_set_name(name);
  return 0;
}

return -1; // should never reach this
}



int read_vertex_from(char *filename)
{
GLfloat x,y,z,nx,ny,nz,u,v;
int i,ii;
unsigned int ui;
GLuint save;
GLint visu;
FILE *fp;
char name[RAYDIUM_MAX_NAME_LEN];

fp=raydium_file_fopen(filename,"rt");
if(!fp) { printf("cannot read from file \"%s\", fopen() failed\n",filename); return 0; }
fscanf(fp,"%i\n",&visu);


raydium_log("Object: loading \"%s\", version %i",filename,visu);

// test here version 2 (anims)
if(visu==2)
    {
    int j,k;
    fscanf(fp,"%i %i\n",&j,&k);

    if(j>RAYDIUM_MAX_OBJECT_ANIMS)
        {
        raydium_log("object: too much anims for this file ! (%i max)",RAYDIUM_MAX_OBJECT_ANIMS);
        j=RAYDIUM_MAX_OBJECT_ANIMS; // will no work ;) (fixme)
        }

    raydium_object_anims[raydium_object_index]=j;
    raydium_object_anim_len[raydium_object_index]=k;
    raydium_object_anim_instance_current[raydium_object_index]=0;
    raydium_object_anim_default_anim[raydium_object_index]=0;

    for(ii=0;ii<RAYDIUM_MAX_OBJECT_ANIM_INSTANCES;ii++)
        {
        raydium_object_anim_current[raydium_object_index][ii]=0;
        raydium_object_anim_frame_current[raydium_object_index][ii]=0;
        raydium_object_anim_previous[raydium_object_index][ii]=-1;
        raydium_object_anim_frame_previous[raydium_object_index][ii]=0;
        raydium_object_anim_frame_previous_timeout[raydium_object_index][ii]=0;
        raydium_object_anim_punctually_flag[raydium_object_index][ii]=-1;
        }


    for(i=0;i<raydium_object_anims[raydium_object_index];i++)
        {
        fscanf(fp,"%i %i %s\n",&j,&k,name);
        raydium_object_anim_start[raydium_object_index][i]=j;
        raydium_object_anim_end[raydium_object_index][i]=k;
        raydium_object_anim_automatic_factor[raydium_object_index][i]=0;
        strcpy(raydium_object_anim_names[raydium_object_index][i],name);
        }

    // build "current transformed model" space
    for(ui=0;ui<raydium_object_anim_len[raydium_object_index];ui++)
        {
        raydium_vertex_add(0,0,0);
        raydium_vertex_texture[raydium_vertex_index-1]=0;
        }

    fscanf(fp,"%i\n",&visu);
    raydium_log("object: anim: %i frame(s) with %i vertice per frame (ver %i)",raydium_object_anims[raydium_object_index],raydium_object_anim_len[raydium_object_index],visu);
    }
// ...

save=raydium_texture_current_main;
i=0;

if(visu>0)
{
 while( fscanf(fp,"%f %f %f %f %f %f %f %f %s\n",&x,&y,&z,&nx,&ny,&nz,&u,&v,name)!=EOF )
 {
  raydium_file_set_textures(name);
  raydium_vertex_uv_normals_add(x,y,z,nx,ny,nz,u,v);
  i++;
 }
}
else if(visu==0)
{
 while( fscanf(fp,"%f %f %f %f %f %s\n",&x,&y,&z,&u,&v,name)!=EOF )
 {
  raydium_file_set_textures(name);
  raydium_vertex_uv_add(x,y,z,u,v);
  i++;
 }
}
else if(visu<0)
{
 while( fscanf(fp,"%f %f %f %s\n",&x,&y,&z,name)!=EOF )
 {
  raydium_file_set_textures(name);
  raydium_vertex_add(x,y,z);
  i++;
 }

}

if(i%3)
    {
    raydium_log("ERROR: file: tri: object %s ... must be *3 !",filename);
    raydium_log("This object is invalid, and current engine state undefined.");
	raydium_log("***********************************************************");
    // and generate dummy vertices ?
    }

fclose(fp);

raydium_texture_current_multi=0;
raydium_texture_current_set(save);
//printf("loaded.\n");
return 1;
}
ster_function(C2PHP(raydium_rendering_normal),"raydium_rendering_normal");
raydium_register_function(C2PHP(raydium_rendering_displaylists_enable),"raydium_rendering_displaylists_enable");
raydium_register_function(C2PHP(raydium_rendering_displaylists_disable),"raydium_rendering_displaylists_disable");
raydium_register_function(C2PHP(raydium_render_lightmap_color_4f),"raydium_render_lightmap_color_4f");
raydium_register_variable(&raydium_render_fps,RAYDIUM_REGISTER_INT,"raydium_render_fps");
raydium_register_function(C2PHP(raydium_render_fps_limit),"raydium_render_fps_limit");
raydium_register_function(C2PHP(raydium_render_loading),"raydium_render_loading");
raydium_register_function(C2PHP(raydium_render_vblank),"raydium_render_vblank");

// window.c / projection
raydium_register_function(C2PHP(raydium_window_view_perspective),"raydium_window_view_perspective");
raydium_register_function(C2PHP(raydium_window_view_update),"raydium_window_view_update");

// sky.c
raydium_register_function(C2PHP(raydium_sky_box_name),"raydium_sky_box_name");
raydium_register_variable(&raydium_sky_force,RAYDIUM_REGISTER_SCHAR,"raydium_sky_force");

// console.c
raydium_register_function(C2PHP(raydium_console_exec_script),"raydium_console_exec_script");
raydium_register_function(C2PHP(raydium_console_event),"raydium_console_event");
raydium_register_variable(raydium_console_config_texture,RAYDIUM_REGISTER_STR,"raydium_console_config_texture");

// log.c
raydium_register_function(C2PHP(raydium_log),"raydium_log");

// capture.c
raydium_register_function(C2PHP(raydium_capture_frame),"raydium_capture_frame");

// key.c
raydium_register_variable(&raydium_key_last,RAYDIUM_REGISTER_INT,"raydium_key_last");
raydium_register_variable(&raydium_key_trace,RAYDIUM_REGISTER_SCHAR,"raydium_key_trace");
raydium_register_function(C2PHP(raydium_key_pressed),"raydium_key_pressed");

// mouse.c
raydium_register_variable(&raydium_mouse_x,RAYDIUM_REGISTER_INT,"raydium_mouse_x");
raydium_register_variable(&raydium_mouse_y,RAYDIUM_REGISTER_INT,"raydium_mouse_y");
raydium_register_variable(&raydium_mouse_click,RAYDIUM_REGISTER_INT,"raydium_mouse_click");
raydium_register_function(C2PHP(raydium_mouse_button_pressed),"raydium_mouse_button_pressed");
raydium_register_function(C2PHP(raydium_mouse_hide),"raydium_mouse_hide");
raydium_register_function(C2PHP(raydium_mouse_show),"raydium_mouse_show");

// clear.c
raydium_register_function(C2PHP(raydium_clear_frame),"raydium_clear_frame");

// camera.c
raydium_register_function(C2PHP(raydium_camera_replace),"raydium_camera_replace");
raydium_register_variable(&raydium_camera_freemove_speed,RAYDIUM_REGISTER_FLOAT,"raydium_camera_freemove_speed");
raydium_register_variable(&raydium_camera_freemove_sensibility,RAYDIUM_REGISTER_FLOAT,"raydium_camera_freemove_sensibility");
//Use with echo => echo $raydium_camera_x
raydium_register_variable(&raydium_camera_x,RAYDIUM_REGISTER_FLOAT,"raydium_camera_x");
raydium_register_variable(&raydium_camera_y,RAYDIUM_REGISTER_FLOAT,"raydium_camera_y");
raydium_register_variable(&raydium_camera_z,RAYDIUM_REGISTER_FLOAT,"raydium_camera_z");

// object.c
raydium_register_function(C2PHP(raydium_object_draw_name),"raydium_object_draw_name");

// network.c
//raydium_register_function(C2PHP(raydium_network_internet_test),"raydium_network_internet_test");
raydium_register_function(C2PHP(raydium_network_client_connect_to),"raydium_network_client_connect_to");

// particle2.c
raydium_register_function(C2PHP(raydium_particle_state_dump),"raydium_particle_state_dump");
raydium_register_function(C2PHP(raydium_particle_state_restore),"raydium_particle_state_restore");
raydium_register_function(C2PHP(raydium_particle_generator_load),"raydium_particle_generator_load");
raydium_register_function(C2PHP(raydium_particle_generator_delete_name),"raydium_particle_generator_delete_name");
raydium_register_function(C2PHP(raydium_particle_generator_move_name_3f),"raydium_particle_generator_move_name_3f");

// shadow.c
raydium_register_function(C2PHP(raydium_shadow_enable),"raydium_shadow_enable");
raydium_register_function(C2PHP(raydium_shadow_disable),"raydium_shadow_disable");
raydium_register_function(C2PHP(raydium_shadow_mode),"raydium_shadow_mode");
raydium_register_function(C2PHP(raydium_shadow_camerabox_size),"raydium_shadow_camerabox_size");
raydium_register_variable_const_i(RAYDIUM_SHADOW_MODE_FULLSCENE,"RAYDIUM_SHADOW_MODE_FULLSCENE");
raydium_register_variable_const_i(RAYDIUM_SHADOW_MODE_CAMERABOX,"RAYDIUM_SHADOW_MODE_CAMERABOX");

// hdr.c
raydium_register_function(C2PHP(raydium_hdr_enable),"raydium_hdr_enable");
raydium_register_function(C2PHP(raydium_hdr_disable),"raydium_hdr_disable");

// lensflare.c
raydium_register_function(C2PHP(raydium_lensflare_enable),"raydium_lensflare_enable");
raydium_register_function(C2PHP(raydium_lensflare_disable),"raydium_lensflare_disable");

// gui.c
raydium_register_function(C2PHP(raydium_gui_theme_load),"raydium_gui_theme_load");
raydium_register_function(C2PHP(raydium_gui_show),"raydium_gui_show");
raydium_register_function(C2PHP(raydium_gui_hide),"raydium_gui_hide");
raydium_register_function(C2PHP(raydium_gui_isvisible),"raydium_gui_isvisible");
raydium_register_function(C2PHP(raydium_gui_window_delete_name),"raydium_gui_window_delete_name");
raydium_register_function(C2PHP(raydium_gui_widget_sizes),"raydium_gui_widget_sizes");
raydium_register_function(C2PHP(raydium_gui_window_create),"raydium_gui_window_create");
raydium_register_function(C2PHP(raydium_gui_button_create_simple),"raydium_gui_button_create_simple");
raydium_register_function(C2PHP(raydium_gui_label_create),"raydium_gui_label_create");
raydium_register_function(C2PHP(raydium_gui_track_create),"raydium_gui_track_create");
raydium_register_function(C2PHP(raydium_gui_edit_create),"raydium_gui_edit_create");
raydium_register_function(C2PHP(raydium_gui_check_create),"raydium_gui_check_create");
raydium_register_function(C2PHP(raydium_gui_combo_create),"raydium_gui_combo_create");
raydium_register_function(C2PHP(raydium_gui_read_name),"raydium_gui_read_name");
raydium_register_function(C2PHP(raydium_gui_button_clicked),"raydium_gui_button_clicked");

//osd.c
raydium_register_function(C2PHP(raydium_osd_cursor_offset),"raydium_osd_cursor_offset");

// parser
raydium_register_function(C2PHP(raydium_parser_db_set),"raydium_parser_db_set");
raydium_register_function(C2PHP(raydium_parser_db_get),"raydium_parser_db_get");


#ifdef ODE_SUPPORT
// ode.c
raydium_register_function(C2PHP(raydium_ode_callback),"raydium_ode_callback");
raydium_register_function(C2PHP(raydium_ode_draw_all),"raydium_ode_draw_all");
raydium_register_function(C2PHP(raydium_ode_element_camera_inboard_name),"raydium_ode_element_camera_inboard_name");
raydium_register_function(C2PHP(raydium_ode_element_find),"raydium_ode_element_find");
raydium_register_function(C2PHP(raydium_ode_element_delete),"raydium_ode_element_delete");
raydium_register_function(C2PHP(raydium_ode_element_delete_name),"raydium_ode_element_delete_name");
raydium_register_function(C2PHP(raydium_ode_element_gravity),"raydium_ode_element_gravity");
raydium_register_function(C2PHP(raydium_ode_element_gravity_name),"raydium_ode_element_gravity_name");
//raydium_register_function(C2PHP(raydium_ode_element_ground_texture_get_name),"raydium_ode_element_ground_texture_get_name");
raydium_register_function(C2PHP(raydium_ode_element_material_name),"raydium_ode_element_material_name");
raydium_register_function(C2PHP(raydium_ode_element_move_name_3f),"raydium_ode_element_move_name_3f");
raydium_register_function(C2PHP(raydium_ode_element_rotate_name_3f),"raydium_ode_element_rotate_name_3f");
raydium_register_function(C2PHP(raydium_ode_element_moveto_name),"raydium_ode_element_moveto_name");
raydium_register_function(C2PHP(raydium_ode_element_particle_name),"raydium_ode_element_particle_name");
raydium_register_function(C2PHP(raydium_ode_element_player_angle_name),"raydium_ode_element_player_angle_name");
raydium_register_function(C2PHP(raydium_ode_element_player_get),"raydium_ode_element_player_get");
raydium_register_function(C2PHP(raydium_ode_element_rotate_direction_name),"raydium_ode_element_rotate_direction_name");
//raydium_register_function(C2PHP(raydium_ode_element_rotateq_name),"raydium_ode_element_rotateq_name");
raydium_register_function(C2PHP(raydium_ode_element_rotfriction_name),"raydium_ode_element_rotfriction_name");
//raydium_register_function(C2PHP(raydium_ode_element_rotq_get_name),"raydium_ode_element_rotq_get_name");
raydium_register_function(C2PHP(raydium_ode_element_slip_name),"raydium_ode_element_slip_name");
raydium_register_function(C2PHP(raydium_ode_element_sound_update),"raydium_ode_element_sound_update");
raydium_register_function(C2PHP(raydium_ode_element_sound_update_name),"raydium_ode_element_sound_update_name");
raydium_register_function(C2PHP(raydium_ode_element_tag_get),"raydium_ode_element_tag_get");
raydium_register_function(C2PHP(raydium_ode_element_touched_get_name),"raydium_ode_element_touched_get_name");
raydium_register_function(C2PHP(raydium_ode_element_ttl_set_name),"raydium_ode_element_ttl_set_name");
raydium_register_function(C2PHP(raydium_ode_ground_set_name),"raydium_ode_ground_set_name");
raydium_register_function(C2PHP(raydium_ode_joint_attach_hinge_name),"raydium_ode_joint_attach_hinge_name");
raydium_register_function(C2PHP(raydium_ode_joint_attach_hinge2_name),"raydium_ode_joint_attach_hinge2_name");
raydium_register_function(C2PHP(raydium_ode_joint_attach_fixed),"raydium_ode_joint_attach_fixed");
raydium_register_function(C2PHP(raydium_ode_joint_break_force_name),"raydium_ode_joint_break_force_name");
raydium_register_function(C2PHP(raydium_ode_joint_hinge_limits_name),"raydium_ode_joint_hinge_limits_name");
raydium_register_function(C2PHP(raydium_ode_joint_hinge2_block_name),"raydium_ode_joint_hinge2_block_name");
raydium_register_function(C2PHP(raydium_ode_joint_suspension_name),"raydium_ode_joint_suspension_name");
raydium_register_function(C2PHP(raydium_ode_launcher_name_3f),"raydium_ode_launcher_name_3f");
raydium_register_function(C2PHP(raydium_ode_launcher_simple_name_3f),"raydium_ode_launcher_simple_name_3f");
raydium_register_function(C2PHP(raydium_ode_motor_angle_name),"raydium_ode_motor_angle_name");
raydium_register_function(C2PHP(raydium_ode_motor_attach_name),"raydium_ode_motor_attach_name");
raydium_register_function(C2PHP(raydium_ode_motor_create),"raydium_ode_motor_create");
raydium_register_function(C2PHP(raydium_ode_motor_gear_change_name),"raydium_ode_motor_gear_change_name");
raydium_register_function(C2PHP(raydium_ode_motor_power_max_name),"raydium_ode_motor_power_max_name");
raydium_register_function(C2PHP(raydium_ode_motor_rocket_orientation_name),"raydium_ode_motor_rocket_orientation_name");
raydium_register_function(C2PHP(raydium_ode_motor_rocket_playermovement_name),"raydium_ode_motor_rocket_playermovement_name");
raydium_register_function(C2PHP(raydium_ode_motor_rocket_set_name),"raydium_ode_motor_rocket_set_name");
raydium_register_function(C2PHP(raydium_ode_motor_speed_name),"raydium_ode_motor_speed_name");
raydium_register_function(C2PHP(raydium_ode_motor_speed_get_name),"raydium_ode_motor_speed_get_name");
raydium_register_function(C2PHP(raydium_ode_name_auto),"raydium_ode_name_auto");
raydium_register_function(C2PHP(raydium_ode_object_box_add),"raydium_ode_object_box_add");
raydium_register_function(C2PHP(raydium_ode_object_create),"raydium_ode_object_create");
raydium_register_function(C2PHP(raydium_ode_object_delete),"raydium_ode_object_delete");
raydium_register_function(C2PHP(raydium_ode_object_delete_name),"raydium_ode_object_delete_name");
raydium_register_function(C2PHP(raydium_ode_object_find),"raydium_ode_object_find");
raydium_register_function(C2PHP(raydium_ode_object_move_name_3f),"raydium_ode_object_move_name_3f");
raydium_register_function(C2PHP(raydium_ode_object_rotate_name_3f),"raydium_ode_object_rotate_name_3f");
raydium_register_function(C2PHP(raydium_ode_object_sphere_add),"raydium_ode_object_sphere_add");
raydium_register_function(C2PHP(raydium_ode_object_capsule_add),"raydium_ode_object_capsule_add");
raydium_register_function(C2PHP(raydium_ode_time_change),"raydium_ode_time_change");
raydium_register_function(C2PHP(raydium_ode_capture_3d),"raydium_ode_capture_3d");
raydium_register_function(C2PHP(raydium_ode_capture_record),"raydium_ode_capture_record");
raydium_register_function(C2PHP(raydium_ode_capture_record_stop),"raydium_ode_capture_record_stop");
raydium_register_function(C2PHP(raydium_ode_capture_play),"raydium_ode_capture_play");
raydium_register_function(C2PHP(raydium_ode_capture_stop),"raydium_ode_capture_stop");
raydium_register_function(C2PHP(raydium_ode_autodisable_set),"raydium_ode_autodisable_set");
raydium_register_variable_const_i(RAYDIUM_ODE_AUTODETECT,"RAYDIUM_ODE_AUTODETECT");
raydium_register_variable_const_i(RAYDIUM_ODE_STANDARD,"RAYDIUM_ODE_STANDARD");
raydium_register_variable_const_i(RAYDIUM_ODE_STATIC,"RAYDIUM_ODE_STATIC");
raydium_register_variable_const_i(RAYDIUM_ODE_FIXING,"RAYDIUM_ODE_FIXING");
raydium_register_variable_const_i(RAYDIUM_ODE_MOTOR_ENGINE,"RAYDIUM_ODE_MOTOR_ENGINE");
raydium_register_variable_const_i(RAYDIUM_ODE_MOTOR_ANGULAR,"RAYDIUM_ODE_MOTOR_ANGULAR");
raydium_register_variable_const_i(RAYDIUM_ODE_MOTOR_ROCKET,"RAYDIUM_ODE_MOTOR_ROCKET");
raydium_register_variable_const_f(RAYDIUM_ODE_SLIP_ICE,"RAYDIUM_ODE_SLIP_ICE");
raydium_register_variable_const_f(RAYDIUM_ODE_SLIP_PLAYER,"RAYDIUM_ODE_SLIP_PLAYER");
raydium_register_variable_const_f(RAYDIUM_ODE_SLIP_NORMAL,"RAYDIUM_ODE_SLIP_NORMAL");
raydium_register_variable_const_f(RAYDIUM_ODE_JOINT_FIXED,"RAYDIUM_ODE_JOINT_FIXED");
// ode_net.c
raydium_register_function(C2PHP(raydium_ode_network_element_isdistant),"raydium_ode_network_element_isdistant");
raydium_register_function(C2PHP(raydium_ode_network_element_send_all),"raydium_ode_netword_element_send_all");
raydium_register_function(C2PHP(raydium_ode_network_element_send_iterative),"raydium_ode_network_element_send_iterative");
raydium_register_function(C2PHP(raydium_ode_network_element_send_random),"raydium_ode_element_send_random");
#endif

// php.c
raydium_register_variable(raydium_php_rayphp_path,RAYDIUM_REGISTER_STR,"raydium_php_rayphp_path");

// shader.c
raydium_register_function(C2PHP(raydium_shader_var_i_name),"raydium_shader_var_i_name");
raydium_register_function(C2PHP(raydium_shader_var_f_name),"raydium_shader_var_f_name");
raydium_register_function(C2PHP(raydium_shader_var_2f_name),"raydium_shader_var_2f_name");
raydium_register_function(C2PHP(raydium_shader_var_3f_name),"raydium_shader_var_3f_name");
raydium_register_function(C2PHP(raydium_shader_var_4f_name),"raydium_shader_var_4f_name");


raydium_log("RegAPI: OK");
done=1;
}

#else
void raydium_register_api(void)
{
/* no PHP */
raydium_log("RegAPI: DISABLED (No PHP support)");
};
#endif

#else
void raydium_register_api(void)
{
/* no REG_API */
raydium_log("RegAPI: DISABLED (config.h: no REG_API symbol)");
};
#endif
#endif