X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fguile-irrlicht.cpp;h=a1e84116ed28d4b07e88e873ae740eaaf5e7384c;hb=789237bc01f8b2172725b51dbc7ae72b9a30be7a;hp=35e27f108879944c2120031b8c3721d2d55a0c67;hpb=5e5b0caed972e0b225199551aff09c399edb8d3c;p=guile-irrlicht.git diff --git a/src/guile-irrlicht.cpp b/src/guile-irrlicht.cpp index 35e27f1..a1e8411 100644 --- a/src/guile-irrlicht.cpp +++ b/src/guile-irrlicht.cpp @@ -27,6 +27,7 @@ #include "camera-scene-node.h" #include "cursor-control.h" #include "device.h" +#include "event-receiver.h" #include "file-archive.h" #include "file-system.h" #include "gui-element.h" @@ -35,7 +36,6 @@ #include "guile-irrlicht.h" #include "keymap.h" #include "material.h" -#include "material-flags.h" #include "mesh.h" #include "mesh-scene-node.h" #include "reference-counted.h" @@ -59,6 +59,7 @@ extern "C" { init_camera_scene_node (); init_cursor_control (); init_device (); + init_event_receiver (); init_file_archive (); init_file_system (); init_gui_element (); @@ -66,7 +67,6 @@ extern "C" { init_gui_static_text (); init_keymap (); init_material (); - init_material_flag (); init_mesh (); init_mesh_scene_node (); init_reference_counted (); @@ -81,10 +81,11 @@ extern "C" { scm_c_define_gsubr ("draw-all", 1, 0, 0, (scm_t_subr)irr_drawAll); scm_c_define_gsubr ("get-name", 1, 0, 0, (scm_t_subr)irr_getName); scm_c_define_gsubr ("set-material!", 2, 0, 0, (scm_t_subr)irr_setMaterial); + scm_c_define_gsubr ("set-material-flag!", 3, 0, 0, (scm_t_subr)irr_setMaterialFlag); scm_c_define_gsubr ("set-position!", 2, 0, 0, (scm_t_subr)irr_setPosition); scm_c_define_gsubr ("set-visible!", 2, 0, 0, (scm_t_subr)irr_setVisible); - scm_c_export ("draw-all", "get-name", "set-material!", "set-position!", - "set-visible!", NULL); + scm_c_export ("draw-all", "get-name", "set-material!", "set-material-flag!", + "set-position!", "set-visible!", NULL); } SCM @@ -135,6 +136,22 @@ extern "C" { } } + SCM + irr_setMaterialFlag (SCM wrapped_obj, + SCM flag, + SCM newvalue) + { + if (mesh_scene_node_p (wrapped_obj) || scene_node_p (wrapped_obj)) + { + return irr_scene_ISceneNode_setMaterialFlag (wrapped_obj, flag, newvalue); + } + else + { + scm_error (scm_arg_type_key, NULL, "Cannot set material flag to object: ~S", + scm_list_1 (wrapped_obj), scm_list_1 (wrapped_obj)); + } + } + SCM irr_setPosition (SCM wrapped_obj, SCM position) @@ -149,7 +166,7 @@ extern "C" { } else { - scm_error (scm_arg_type_key, NULL, "Cannot set position for object: ~S", + scm_error (scm_arg_type_key, NULL, "Cannot set position to object: ~S", scm_list_1 (wrapped_obj), scm_list_1 (wrapped_obj)); } } @@ -172,7 +189,7 @@ extern "C" { } else { - scm_error (scm_arg_type_key, NULL, "Cannot set visibility for object: ~S", + scm_error (scm_arg_type_key, NULL, "Cannot set visibility to object: ~S", scm_list_1 (wrapped_obj), scm_list_1 (wrapped_obj)); } return SCM_UNSPECIFIED;