]> git.jsancho.org Git - guile-irrlicht.git/blobdiff - src/vertex3d.cpp
draw-vertex-primitive-list
[guile-irrlicht.git] / src / vertex3d.cpp
index 07a85b9801d8414005ba3e44a8593bfb9d5da57c..f6adab086d5371d8352dee98cfb0814c55a64c4a 100644 (file)
@@ -34,7 +34,8 @@ extern "C" {
   {
     init_vertex3d_type ();
     scm_c_define_gsubr ("make-vertex3d", 4, 0, 0, (scm_t_subr)make_vertex3d);
-    scm_c_export ("make-vertex3d", NULL);
+    scm_c_define_gsubr ("vertex3d-position", 1, 0, 0, (scm_t_subr)vertex3d_position);
+    scm_c_export ("make-vertex3d", "vertex3d-position", NULL);
   }
 
   DEFINE_WRAPPED_TYPE (irr::video::S3DVertex*, "vertex3d",
@@ -55,4 +56,33 @@ extern "C" {
     return wrap_vertex3d (vertex);
   }
 
+  SCM
+  vertex3d_position (SCM vertex) {
+    irr::video::S3DVertex* s3dvertex = unwrap_vertex3d (vertex);
+    return scm_from_vector3df (s3dvertex->Pos);
+  }
+
+  irr::video::E_VERTEX_TYPE
+  scm_to_vertex_type (SCM vertex_type)
+  {
+    char* type = scm_to_utf8_stringn (scm_symbol_to_string (vertex_type), NULL);
+    if (!strcmp (type, "standard"))
+      {
+        return irr::video::EVT_STANDARD;
+      }
+    else if (!strcmp (type, "2tcoords"))
+      {
+        return irr::video::EVT_2TCOORDS;
+      }
+    else if (!strcmp (type, "tangents"))
+      {
+        return irr::video::EVT_TANGENTS;
+      }
+    else
+      {
+        scm_error (scm_arg_type_key, NULL, "Wrong vertex_type: ~S",
+                   scm_list_1 (vertex_type), scm_list_1 (vertex_type));
+      }
+  }
+
 }