X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2FIrrlichtDevice.cpp;h=026df21fa8c889118db96aee51462d323c07fb43;hb=03d4e13abc392abec3ef9cb6a97d83a5ae722ca8;hp=125163f060d11dfdd120a01dbd5c322053b1df55;hpb=2dd8c4827c6c6afaba10fd04f50ec1587a750be5;p=guile-irrlicht.git diff --git a/src/IrrlichtDevice.cpp b/src/IrrlichtDevice.cpp index 125163f..026df21 100644 --- a/src/IrrlichtDevice.cpp +++ b/src/IrrlichtDevice.cpp @@ -25,9 +25,11 @@ #include "dimension2d.h" #include "EDriverTypes.h" +#include "IGUIEnvironment.h" #include "IrrlichtDevice.h" #include "ISceneManager.h" #include "IVideoDriver.h" +#include "util.h" extern "C" { @@ -36,39 +38,14 @@ extern "C" { { init_device_type (); scm_c_define_gsubr ("create-device", 7, 0, 0, (scm_t_subr)irr_createDevice); + scm_c_define_gsubr ("get-gui-environment", 1, 0, 0, (scm_t_subr)irr_getGUIEnvironment); scm_c_define_gsubr ("get-scene-manager", 1, 0, 0, (scm_t_subr)irr_getSceneManager); scm_c_define_gsubr ("get-video-driver", 1, 0, 0, (scm_t_subr)irr_getVideoDriver); scm_c_define_gsubr ("set-window-caption!", 2, 0, 0, (scm_t_subr)irr_setWindowCaption); } - static SCM device_type; - - void - init_device_type (void) - { - SCM name, slots; - scm_t_struct_finalize finalizer; - - name = scm_from_utf8_symbol ("device"); - slots = scm_list_1 (scm_from_utf8_symbol ("data")); - finalizer = NULL; - - device_type = - scm_make_foreign_object_type (name, slots, finalizer); - } - - SCM - wrap_device (irr::IrrlichtDevice* device) - { - return scm_make_foreign_object_1 (device_type, device); - } - - irr::IrrlichtDevice* - unwrap_device (SCM device_obj) - { - scm_assert_foreign_object_type (device_type, device_obj); - return (irr::IrrlichtDevice*)scm_foreign_object_ref (device_obj, 0); - } + DEFINE_WRAPPED_TYPE (irr::IrrlichtDevice*, "device", + init_device_type, wrap_device, unwrap_device); SCM irr_createDevice (SCM deviceType, @@ -89,6 +66,14 @@ extern "C" { return wrap_device (device); } + SCM + irr_getGUIEnvironment (SCM device_obj) + { + irr::IrrlichtDevice* device = unwrap_device (device_obj); + irr::gui::IGUIEnvironment* gui_environment = device->getGUIEnvironment(); + return wrap_gui_environment (gui_environment); + } + SCM irr_getSceneManager (SCM device_obj) {