X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fmisc.cpp;h=bd3e037bb0ad43be3ee3f1e95d8972177d4111e4;hb=fd10e89f595a8ae45d4471a7d77426d0a1b77502;hp=9997fdd811a08dc5997d011ac1403651ae11d783;hpb=2cdd08f70b0a58b2f00b341df5b73704d3febd47;p=guile-irrlicht.git diff --git a/src/misc.cpp b/src/misc.cpp index 9997fdd..bd3e037 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -23,6 +23,7 @@ #include #include "cursor-control.h" +#include "gui-element.h" #include "mesh-scene-node.h" #include "misc.h" #include "scene-node.h" @@ -36,7 +37,8 @@ extern "C" { { scm_c_define_gsubr ("get-name", 1, 0, 0, (scm_t_subr)irr_getName); scm_c_define_gsubr ("set-position!", 2, 0, 0, (scm_t_subr)irr_setPosition); - scm_c_export ("get-name", "set-position!", NULL); + scm_c_define_gsubr ("set-visible!", 2, 0, 0, (scm_t_subr)irr_setVisible); + scm_c_export ("get-name", "set-position!", "set-visible!", NULL); } SCM @@ -72,4 +74,28 @@ extern "C" { } } + SCM + irr_setVisible (SCM wrapped_obj, + SCM visible) + { + if (cursor_control_p (wrapped_obj)) + { + unwrap_cursor_control (wrapped_obj)->setVisible (scm_to_bool (visible)); + } + else if (gui_element_p (wrapped_obj)) + { + unwrap_gui_element (wrapped_obj)->setVisible (scm_to_bool (visible)); + } + else if (scene_node_p (wrapped_obj)) + { + unwrap_scene_node (wrapped_obj)->setVisible (scm_to_bool (visible)); + } + else + { + scm_error (scm_arg_type_key, NULL, "Cannot set visibility for object: ~S", + scm_list_1 (wrapped_obj), scm_list_1 (wrapped_obj)); + } + return SCM_UNSPECIFIED; + } + }