Index: reg_api.c
===================================================================
--- reg_api.c	(revision 0)
+++ reg_api.c	(revision 1)
@@ -0,0 +1,340 @@
+#ifndef REG_API_C
+#define REG_API_C
+
+/*
+    Raydium - CQFD Corp.
+    http://raydium.cqfd-corp.org
+    License: GPL - GNU General Public License, see "gpl.txt" file.
+*/
+
+#ifndef DONT_INCLUDE_HEADERS
+#include "index.h"
+#else
+#include "headers/reg_api.h"
+#endif
+
+
+#ifdef REG_API
+#ifdef PHP_SUPPORT
+
+// Part 1: create PHP wrappers
+// light.c
+PHP_v_v(raydium_light_enable)
+PHP_v_v(raydium_light_disable)
+PHP_v_i(raydium_light_on)
+PHP_v_i(raydium_light_off)
+PHP_v_i(raydium_light_switch)
+// fog.c
+PHP_v_v(raydium_fog_enable)
+PHP_v_v(raydium_fog_disable)
+// background.c
+PHP_v_ffff(raydium_background_color_change)
+// sound.c
+PHP_i_s(raydium_sound_load_music)
+PHP_i_if(raydium_sound_SetSourceGain)
+// render.c
+PHP_v_v(raydium_rendering_wireframe)
+PHP_v_v(raydium_rendering_normal)
+PHP_v_v(raydium_rendering_displaylists_enable)
+PHP_v_v(raydium_rendering_displaylists_disable)
+// window.c
+PHP_v_v(raydium_window_view_update)
+PHP_v_fff(raydium_window_view_perspective);
+// console.c
+PHP_v_s(raydium_console_exec_script)
+PHP_v_v(raydium_console_event)
+// log.c
+PHP_v_svaria(raydium_log)
+// capture.c
+PHP_v_s(raydium_capture_frame)
+// key.c
+PHP_i_i(raydium_key_pressed)
+// mouse.c
+PHP_i_i(raydium_mouse_button_pressed)
+// clear.c
+PHP_v_v(raydium_clear_frame);
+// camera.c
+PHP_v_v(raydium_camera_replace);
+// object.c
+PHP_v_s(raydium_object_draw_name);
+// particle2.c
+PHP_i_ss(raydium_particle_generator_load);
+PHP_v_s(raydium_particle_generator_delete_name);
+PHP_v_sfff(raydium_particle_generator_move_name_3f);
+PHP_i_s(raydium_particle_state_dump);
+PHP_i_s(raydium_particle_state_restore);
+
+#ifdef ODE_SUPPORT
+//ode.c
+PHP_v_v(raydium_ode_callback);
+PHP_v_i(raydium_ode_draw_all);
+PHP_v_sffffff(raydium_ode_element_camera_inboard_name);
+PHP_i_s(raydium_ode_element_find);
+PHP_i_ii(raydium_ode_element_delete);
+PHP_i_si(raydium_ode_element_delete_name);
+PHP_v_ii(raydium_ode_element_gravity);
+PHP_v_si(raydium_ode_element_gravity_name);
+//PHP_i_s(raydium_ode_element_ground_texture_get_name);
+PHP_i_sff(raydium_ode_element_material_name);
+PHP_v_sfff(raydium_ode_element_move_name_3f);
+PHP_v_sfff(raydium_ode_element_rotate_name_3f);
+PHP_v_ssi(raydium_ode_element_moveto_name);
+PHP_v_ss(raydium_ode_element_particle_name);
+PHP_i_sf(raydium_ode_element_player_angle_name);
+PHP_i_i(raydium_ode_element_player_get);
+PHP_v_si(raydium_ode_element_rotate_direction_name);
+//PHP_v_sf(raydium_ode_element_rotateq_name);
+PHP_i_sf(raydium_ode_element_rotfriction_name);
+//PHP_i_sf(raydium_ode_element_rotq_get_name);
+PHP_i_sf(raydium_ode_element_slip_name);
+PHP_v_ii(raydium_ode_element_sound_update);
+PHP_v_si(raydium_ode_element_sound_update_name);
+PHP_i_i(raydium_ode_element_tag_get);
+PHP_i_s(raydium_ode_element_touched_get_name);
+PHP_v_si(raydium_ode_element_ttl_set_name);
+PHP_v_s(raydium_ode_ground_set_name);
+PHP_i_sssffffff(raydium_ode_joint_attach_hinge_name);
+PHP_i_sssffffff(raydium_ode_joint_attach_hinge2_name);
+PHP_v_sf(raydium_ode_joint_break_force_name);
+PHP_v_sff(raydium_ode_joint_hinge_limits_name);
+PHP_v_si(raydium_ode_joint_hinge2_block_name);
+PHP_v_sff(raydium_ode_joint_suspension_name);
+PHP_i_ssffff(raydium_ode_launcher_name_3f);
+PHP_i_ssffff(raydium_ode_launcher_simple_name_3f);
+PHP_v_sf(raydium_ode_motor_angle_name);
+PHP_v_ssi(raydium_ode_motor_attach_name);
+PHP_i_sii(raydium_ode_motor_create);
+PHP_v_si(raydium_ode_motor_gear_change_name);
+PHP_v_sf(raydium_ode_motor_power_max_name);
+PHP_v_sfff(raydium_ode_motor_rocket_orientation_name);
+PHP_v_si(raydium_ode_motor_rocket_playermovement_name);
+PHP_v_ssfff(raydium_ode_motor_rocket_set_name);
+PHP_v_sf(raydium_ode_motor_speed_name);
+PHP_f_si(raydium_ode_motor_speed_get_name);
+PHP_v_ss(raydium_ode_name_auto);
+PHP_i_siffffiis(raydium_ode_object_box_add);
+PHP_i_s(raydium_ode_object_create);
+PHP_i_i(raydium_ode_object_delete);
+PHP_i_s(raydium_ode_object_delete_name);
+PHP_i_s(raydium_ode_object_find);
+PHP_v_sfff(raydium_ode_object_move_name_3f);
+PHP_i_siffiis(raydium_ode_object_sphere_add);
+PHP_v_f(raydium_ode_time_change);
+PHP_i_s(raydium_ode_capture_3d);
+
+// ode_net.c
+PHP_i_i(raydium_ode_network_element_isdistant);
+PHP_v_v(raydium_ode_network_element_send_all);
+PHP_v_i(raydium_ode_network_element_send_iterative);
+PHP_v_i(raydium_ode_network_element_send_random);
+#endif
+
+// gui.c
+PHP_i_s(raydium_gui_theme_load);
+PHP_v_v(raydium_gui_show);
+PHP_v_v(raydium_gui_hide);
+PHP_i_v(raydium_gui_isvisible);
+PHP_v_s(raydium_gui_window_delete_name);
+PHP_v_fff(raydium_gui_widget_sizes);
+PHP_i_sffff(raydium_gui_window_create);
+PHP_i_siffs(raydium_gui_button_create_simple);
+PHP_i_siffsfff(raydium_gui_label_create);
+PHP_i_siffiii(raydium_gui_track_create);
+PHP_i_siffs(raydium_gui_edit_create);
+PHP_i_siffsi(raydium_gui_check_create);
+PHP_i_siffsi(raydium_gui_combo_create);
+PHP_i_sss(raydium_gui_read_name);
+PHP_i_v(raydium_gui_button_clicked);
+
+// Part 2: register functions
+void raydium_register_api(void)
+{
+static int done=0;
+
+if(done)
+    {
+    raydium_log("RegAPI: PASSED (already done previously)");
+    return;
+    }
+
+// light.c
+raydium_register_function(C2PHP(raydium_light_enable),"raydium_light_enable");
+raydium_register_function(C2PHP(raydium_light_disable),"raydium_light_disable");
+raydium_register_function(C2PHP(raydium_light_on),"raydium_light_on");
+raydium_register_function(C2PHP(raydium_light_off),"raydium_light_off");
+raydium_register_function(C2PHP(raydium_light_switch),"raydium_light_switch");
+
+// fog.c
+raydium_register_function(C2PHP(raydium_fog_enable),"raydium_fog_enable");
+raydium_register_function(C2PHP(raydium_fog_disable),"raydium_fog_disable");
+
+// background.c
+raydium_register_function(C2PHP(raydium_background_color_change),"raydium_background_color_change");
+
+// sound.c
+raydium_register_function(C2PHP(raydium_sound_load_music),"raydium_sound_load_music");
+raydium_register_function(C2PHP(raydium_sound_SetSourceGain),"raydium_sound_setsourcegain");
+
+// render.c
+raydium_register_function(C2PHP(raydium_rendering_wireframe),"raydium_rendering_wireframe");
+raydium_register_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_variable(&raydium_render_fps,RAYDIUM_REGISTER_INT,"raydium_render_fps");
+
+// 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_variable(&raydium_sky_force,RAYDIUM_REGISTER_INT,"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_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");
+
+// clear.c
+raydium_register_function(C2PHP(raydium_clear_frame),"raydium_clear_frame");
+
+// camera.c
+raydium_register_function(C2PHP(raydium_camera_replace),"raydium_camera_replace");
+
+// object.c
+raydium_register_function(C2PHP(raydium_object_draw_name),"raydium_object_draw_name");
+
+// 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");
+
+// 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");
+
+
+#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_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_sphere_add),"raydium_ode_object_sphere_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_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");
+
+// 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
+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