X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fguile-irrlicht.cpp;fp=src%2Fguile-irrlicht.cpp;h=4531715adcd5a385d4ce75ea85d9a59dfe3bc2ae;hb=8876c6e31fddf00f9764d9fe73930d8dc8fc6c4a;hp=29fb2fbdb2961200ebe08f70e7d71698e99917e8;hpb=898d352f35f3f007dd4c1f49091f38bdeb012fd3;p=guile-irrlicht.git diff --git a/src/guile-irrlicht.cpp b/src/guile-irrlicht.cpp index 29fb2fb..4531715 100644 --- a/src/guile-irrlicht.cpp +++ b/src/guile-irrlicht.cpp @@ -88,6 +88,7 @@ extern "C" { // Shared procedures (used by two or more objects) DEFINE_GSUBR ("draw-all", 1, 0, 0, irr_drawAll); + DEFINE_GSUBR ("get-position", 1, 1, 0, irr_getPosition); DEFINE_GSUBR ("get-name", 1, 0, 0, irr_getName); DEFINE_GSUBR ("set-material!", 2, 0, 0, irr_setMaterial); DEFINE_GSUBR ("set-material-flag!", 3, 0, 0, irr_setMaterialFlag); @@ -128,6 +129,25 @@ extern "C" { } } + SCM + irr_getPosition (SCM wrapped_obj, + SCM i) + { + if (cursor_control_p (wrapped_obj)) + { + return irr_gui_getPosition (wrapped_obj); + } + else if (is_scene_node_object (wrapped_obj)) + { + return irr_scene_getPosition (wrapped_obj); + } + else + { + scm_error (scm_arg_type_key, NULL, "Cannot get position from object: ~S", + scm_list_1 (wrapped_obj), scm_list_1 (wrapped_obj)); + } + } + SCM irr_setMaterial (SCM wrapped_obj, SCM material) @@ -148,9 +168,7 @@ extern "C" { SCM flag, SCM newvalue) { - if (animated_mesh_scene_node_p (wrapped_obj) || - mesh_scene_node_p (wrapped_obj) || - scene_node_p (wrapped_obj)) + if (is_scene_node_object (wrapped_obj)) { return irr_scene_ISceneNode_setMaterialFlag (wrapped_obj, flag, newvalue); } @@ -169,7 +187,7 @@ extern "C" { { return irr_gui_setPosition (wrapped_obj, position); } - else if (scene_node_p (wrapped_obj) || mesh_scene_node_p (wrapped_obj)) + else if (is_scene_node_object (wrapped_obj)) { return irr_scene_setPosition (wrapped_obj, position); } @@ -194,7 +212,7 @@ extern "C" { { SET_VISIBLE (unwrap_gui_element (wrapped_obj)); } - else if (scene_node_p (wrapped_obj)) + else if (is_scene_node_object (wrapped_obj)) { SET_VISIBLE (unwrap_scene_node (wrapped_obj)); }