]> git.jsancho.org Git - guile-irrlicht.git/blobdiff - src/guile-irrlicht.cpp
set-material-flag! refactor
[guile-irrlicht.git] / src / guile-irrlicht.cpp
index f81cff7c73730aeba74dc477fd5c8496da62b8f9..a1e84116ed28d4b07e88e873ae740eaaf5e7384c 100644 (file)
@@ -36,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"
@@ -68,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 ();
@@ -83,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
@@ -137,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)
@@ -151,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));
       }
   }
@@ -174,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;