X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fanimated-mesh-md2.cpp;fp=src%2Fanimated-mesh-md2.cpp;h=70e74736cf002640c996079fe8093932d6bdaa01;hb=8ff6816b98af584ca7670ad964d5f13f84e18044;hp=0000000000000000000000000000000000000000;hpb=2ffd7c24faa64f27fe9574a3fc25b4bdfc86c6c8;p=guile-irrlicht.git diff --git a/src/animated-mesh-md2.cpp b/src/animated-mesh-md2.cpp new file mode 100644 index 0000000..70e7473 --- /dev/null +++ b/src/animated-mesh-md2.cpp @@ -0,0 +1,123 @@ +/* guile-irrlicht --- GNU Guile bindings for Irrlicht Engine + + Copyright (C) 2020 Javier Sancho + + This file is part of guile-irrlicht. + + guile-irrlicht is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 3 of the + License, or (at your option) any later version. + + guile-irrlicht is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with guile-irrlicht. If not, see + . +*/ + +#include +#include +#include "animated-mesh-md2.h" + +extern "C" { + + irr::scene::EMD2_ANIMATION_TYPE + scm_to_md2_animation_type (SCM md2_animation_type) + { + char* flag = scm_to_utf8_stringn (scm_symbol_to_string (md2_animation_type), NULL); + if (!strcmp (flag, "stand")) + { + return irr::scene::EMAT_STAND; + } + else if (!strcmp (flag, "run")) + { + return irr::scene::EMAT_RUN; + } + else if (!strcmp (flag, "attack")) + { + return irr::scene::EMAT_ATTACK; + } + else if (!strcmp (flag, "pain-a")) + { + return irr::scene::EMAT_PAIN_A; + } + else if (!strcmp (flag, "pain-b")) + { + return irr::scene::EMAT_PAIN_B; + } + else if (!strcmp (flag, "pain-c")) + { + return irr::scene::EMAT_PAIN_C; + } + else if (!strcmp (flag, "jump")) + { + return irr::scene::EMAT_JUMP; + } + else if (!strcmp (flag, "flip")) + { + return irr::scene::EMAT_FLIP; + } + else if (!strcmp (flag, "salute")) + { + return irr::scene::EMAT_SALUTE; + } + else if (!strcmp (flag, "fallback")) + { + return irr::scene::EMAT_FALLBACK; + } + else if (!strcmp (flag, "wave")) + { + return irr::scene::EMAT_WAVE; + } + else if (!strcmp (flag, "point")) + { + return irr::scene::EMAT_POINT; + } + else if (!strcmp (flag, "crouch-stand")) + { + return irr::scene::EMAT_CROUCH_STAND; + } + else if (!strcmp (flag, "crouch-walk")) + { + return irr::scene::EMAT_CROUCH_WALK; + } + else if (!strcmp (flag, "crouch-attack")) + { + return irr::scene::EMAT_CROUCH_ATTACK; + } + else if (!strcmp (flag, "crouch-pain")) + { + return irr::scene::EMAT_CROUCH_PAIN; + } + else if (!strcmp (flag, "crouch-death")) + { + return irr::scene::EMAT_CROUCH_DEATH; + } + else if (!strcmp (flag, "death-fallback")) + { + return irr::scene::EMAT_DEATH_FALLBACK; + } + else if (!strcmp (flag, "death-fallforward")) + { + return irr::scene::EMAT_DEATH_FALLFORWARD; + } + else if (!strcmp (flag, "death-fallbackslow")) + { + return irr::scene::EMAT_DEATH_FALLBACKSLOW; + } + else if (!strcmp (flag, "boom")) + { + return irr::scene::EMAT_BOOM; + } + else + { + scm_error (scm_arg_type_key, NULL, "Wrong MD2 animation type: ~S", + scm_list_1 (md2_animation_type), scm_list_1 (md2_animation_type)); + } + } + +}