X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fmaterial-flags.cpp;h=d69bd77cae2da988cd9b29b5b338cda2069bdef8;hb=3bb58c2b45af12c0f9c9eac648e67ac6fa90e104;hp=d700e4c3bb258e24738e516f585f4fd2d790b40e;hpb=2ffd7c24faa64f27fe9574a3fc25b4bdfc86c6c8;p=guile-irrlicht.git diff --git a/src/material-flags.cpp b/src/material-flags.cpp index d700e4c..d69bd77 100644 --- a/src/material-flags.cpp +++ b/src/material-flags.cpp @@ -21,130 +21,101 @@ #include #include -#include "animated-mesh-scene-node.h" -#include "material-flags.h" -#include "scene-node.h" -extern "C" { +using namespace irr; - void - init_material_flag (void) - { - scm_c_define_gsubr ("set-material-flag!", 3, 0, 0, (scm_t_subr)irr_scene_setMaterialFlag); - } +video::E_MATERIAL_FLAG +scm_to_material_flag (SCM material_flag) +{ + char* flag_name = scm_to_utf8_string (scm_symbol_to_string (material_flag)); + video::E_MATERIAL_FLAG flag; - SCM - irr_scene_setMaterialFlag (SCM wrapped_obj, - SCM flag, - SCM newvalue) - { - if (animated_mesh_scene_node_p (wrapped_obj)) - { - unwrap_animated_mesh_scene_node (wrapped_obj)->setMaterialFlag (scm_to_material_flag (flag), - scm_to_bool (newvalue)); - } - else if (scene_node_p (wrapped_obj)) - { - unwrap_scene_node (wrapped_obj)->setMaterialFlag (scm_to_material_flag (flag), - scm_to_bool (newvalue)); - } - else - { - scm_error (scm_arg_type_key, NULL, "Cannot set material flag for object: ~S", - scm_list_1 (wrapped_obj), scm_list_1 (wrapped_obj)); - } - return SCM_UNSPECIFIED; - } - - irr::video::E_MATERIAL_FLAG - scm_to_material_flag (SCM material_flag) - { - char* flag = scm_to_utf8_stringn (scm_symbol_to_string (material_flag), NULL); - if (!strcmp (flag, "wireframe")) - { - return irr::video::EMF_WIREFRAME; - } - else if (!strcmp (flag, "pointcloud")) - { - return irr::video::EMF_POINTCLOUD; - } - else if (!strcmp (flag, "gouraud-shading")) - { - return irr::video::EMF_GOURAUD_SHADING; - } - else if (!strcmp (flag, "lighting")) - { - return irr::video::EMF_LIGHTING; - } - else if (!strcmp (flag, "zbuffer")) - { - return irr::video::EMF_ZBUFFER; - } - else if (!strcmp (flag, "zwrite-enable")) - { - return irr::video::EMF_ZWRITE_ENABLE; - } - else if (!strcmp (flag, "back-face-culling")) - { - return irr::video::EMF_BACK_FACE_CULLING; - } - else if (!strcmp (flag, "front-face-culling")) - { - return irr::video::EMF_FRONT_FACE_CULLING; - } - else if (!strcmp (flag, "bilinear-filter")) - { - return irr::video::EMF_BILINEAR_FILTER; - } - else if (!strcmp (flag, "trilinear-filter")) - { - return irr::video::EMF_TRILINEAR_FILTER; - } - else if (!strcmp (flag, "anisotropic-filter")) - { - return irr::video::EMF_ANISOTROPIC_FILTER; - } - else if (!strcmp (flag, "fog-enable")) - { - return irr::video::EMF_FOG_ENABLE; - } - else if (!strcmp (flag, "normalize-normals")) - { - return irr::video::EMF_NORMALIZE_NORMALS; - } - else if (!strcmp (flag, "texture-wrap")) - { - return irr::video::EMF_TEXTURE_WRAP; - } - else if (!strcmp (flag, "anti-aliasing")) - { - return irr::video::EMF_ANTI_ALIASING; - } - else if (!strcmp (flag, "color-mask")) - { - return irr::video::EMF_COLOR_MASK; - } - else if (!strcmp (flag, "color-material")) - { - return irr::video::EMF_COLOR_MATERIAL; - } - else if (!strcmp (flag, "use-mip-maps")) - { - return irr::video::EMF_USE_MIP_MAPS; - } - else if (!strcmp (flag, "blend-operation")) - { - return irr::video::EMF_BLEND_OPERATION; - } - else if (!strcmp (flag, "polygon-offset")) - { - return irr::video::EMF_POLYGON_OFFSET; - } - else - { - scm_error (scm_arg_type_key, NULL, "Wrong material flag: ~S", - scm_list_1 (material_flag), scm_list_1 (material_flag)); - } - } + if (!strcmp (flag_name, "wireframe")) + { + flag = video::EMF_WIREFRAME; + } + else if (!strcmp (flag_name, "pointcloud")) + { + flag = video::EMF_POINTCLOUD; + } + else if (!strcmp (flag_name, "gouraud-shading")) + { + flag = video::EMF_GOURAUD_SHADING; + } + else if (!strcmp (flag_name, "lighting")) + { + flag = video::EMF_LIGHTING; + } + else if (!strcmp (flag_name, "zbuffer")) + { + flag = video::EMF_ZBUFFER; + } + else if (!strcmp (flag_name, "zwrite-enable")) + { + flag = video::EMF_ZWRITE_ENABLE; + } + else if (!strcmp (flag_name, "back-face-culling")) + { + flag = video::EMF_BACK_FACE_CULLING; + } + else if (!strcmp (flag_name, "front-face-culling")) + { + flag = video::EMF_FRONT_FACE_CULLING; + } + else if (!strcmp (flag_name, "bilinear-filter")) + { + flag = video::EMF_BILINEAR_FILTER; + } + else if (!strcmp (flag_name, "trilinear-filter")) + { + flag = video::EMF_TRILINEAR_FILTER; + } + else if (!strcmp (flag_name, "anisotropic-filter")) + { + flag = video::EMF_ANISOTROPIC_FILTER; + } + else if (!strcmp (flag_name, "fog-enable")) + { + flag = video::EMF_FOG_ENABLE; + } + else if (!strcmp (flag_name, "normalize-normals")) + { + flag = video::EMF_NORMALIZE_NORMALS; + } + else if (!strcmp (flag_name, "texture-wrap")) + { + flag = video::EMF_TEXTURE_WRAP; + } + else if (!strcmp (flag_name, "anti-aliasing")) + { + flag = video::EMF_ANTI_ALIASING; + } + else if (!strcmp (flag_name, "color-mask")) + { + flag = video::EMF_COLOR_MASK; + } + else if (!strcmp (flag_name, "color-material")) + { + flag = video::EMF_COLOR_MATERIAL; + } + else if (!strcmp (flag_name, "use-mip-maps")) + { + flag = video::EMF_USE_MIP_MAPS; + } + else if (!strcmp (flag_name, "blend-operation")) + { + flag = video::EMF_BLEND_OPERATION; + } + else if (!strcmp (flag_name, "polygon-offset")) + { + flag = video::EMF_POLYGON_OFFSET; + } + else + { + scm_error (scm_arg_type_key, NULL, "Wrong material flag: ~S", + scm_list_1 (material_flag), scm_list_1 (material_flag)); + } + free (flag_name); + return flag; }