X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fvertex3d.cpp;h=6ffc86dc3046eb4ca852ed9473d28f39ad98277d;hb=69ed7f57e6295034fa64ab2bf6d10da6882860ef;hp=27bf94137077833fa97a6351df6fe9bc17401f81;hpb=37217d692d4ead81cfed829395a9a7a5caf9325c;p=guile-irrlicht.git diff --git a/src/vertex3d.cpp b/src/vertex3d.cpp index 27bf941..6ffc86d 100644 --- a/src/vertex3d.cpp +++ b/src/vertex3d.cpp @@ -21,7 +21,9 @@ #include #include + #include "color.h" +#include "gsubr.h" #include "vector2d.h" #include "vector3d.h" #include "vertex3d.h" @@ -33,9 +35,8 @@ extern "C" { init_vertex3d (void) { init_vertex3d_type (); - scm_c_define_gsubr ("make-vertex3d", 4, 0, 0, (scm_t_subr)make_vertex3d); - scm_c_define_gsubr ("vertex3d-position", 1, 0, 0, (scm_t_subr)vertex3d_position); - scm_c_export ("make-vertex3d", "vertex3d-position", NULL); + DEFINE_GSUBR ("make-vertex3d", 4, 0, 0, make_vertex3d); + DEFINE_GSUBR ("vertex3d-position", 1, 0, 0, vertex3d_position); } DEFINE_WRAPPED_TYPE (irr::video::S3DVertex*, "vertex3d", @@ -62,4 +63,27 @@ extern "C" { 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)); + } + } + }