From c08eb5c91c4c76de8decadcb50f1dea7d4c496ca Mon Sep 17 00:00:00 2001 From: Javier Sancho Date: Sat, 12 Oct 2019 21:03:42 +0200 Subject: [PATCH] IAnimatedMeshSceneNode --- Makefile.am | 3 ++ include/IAnimatedMeshMD2.h | 51 ++++++++++++++++++++++++++++++ include/IAnimatedMeshSceneNode.h | 53 ++++++++++++++++++++++++++++++++ include/ISceneManager.h | 2 +- include/cirrlicht.h | 2 ++ src/IAnimatedMeshSceneNode.cpp | 51 ++++++++++++++++++++++++++++++ 6 files changed, 161 insertions(+), 1 deletion(-) create mode 100644 include/IAnimatedMeshMD2.h create mode 100644 include/IAnimatedMeshSceneNode.h create mode 100644 src/IAnimatedMeshSceneNode.cpp diff --git a/Makefile.am b/Makefile.am index 9f632a3..94fd41d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,6 +2,7 @@ ACLOCAL_AMFLAGS = -I m4 lib_LTLIBRARIES = libCIrrlicht.la libCIrrlicht_la_SOURCES = \ src/CIrrlicht.cpp \ + src/IAnimatedMeshSceneNode.cpp \ src/IGUIEnvironment.cpp \ src/IrrlichtDevice.cpp \ src/ISceneManager.cpp \ @@ -14,6 +15,8 @@ include_HEADERS = \ include/dimension2d.h \ include/EDriverTypes.h \ include/EMaterialFlags.h \ + include/IAnimatedMeshMD2.h \ + include/IAnimatedMeshSceneNode.h \ include/IGUIEnvironment.h \ include/IrrlichtDevice.h \ include/ISceneManager.h \ diff --git a/include/IAnimatedMeshMD2.h b/include/IAnimatedMeshMD2.h new file mode 100644 index 0000000..c9b84c9 --- /dev/null +++ b/include/IAnimatedMeshMD2.h @@ -0,0 +1,51 @@ +/* c-irrlicht --- C bindings for Irrlicht Engine + + Copyright (C) 2019 Javier Sancho + + This file is part of c-irrlicht. + + c-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. + + c-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 + . +*/ + +#ifndef __C_I_ANIMATED_MESH_MD2_H_INCLUDED__ +#define __C_I_ANIMATED_MESH_MD2_H_INCLUDED__ + +enum irr_scene_EMD2_ANIMATION_TYPE + { + irr_scene_EMAT_STAND = 0, + irr_scene_EMAT_RUN, + irr_scene_EMAT_ATTACK, + irr_scene_EMAT_PAIN_A, + irr_scene_EMAT_PAIN_B, + irr_scene_EMAT_PAIN_C, + irr_scene_EMAT_JUMP, + irr_scene_EMAT_FLIP, + irr_scene_EMAT_SALUTE, + irr_scene_EMAT_FALLBACK, + irr_scene_EMAT_WAVE, + irr_scene_EMAT_POINT, + irr_scene_EMAT_CROUCH_STAND, + irr_scene_EMAT_CROUCH_WALK, + irr_scene_EMAT_CROUCH_ATTACK, + irr_scene_EMAT_CROUCH_PAIN, + irr_scene_EMAT_CROUCH_DEATH, + irr_scene_EMAT_DEATH_FALLBACK, + irr_scene_EMAT_DEATH_FALLFORWARD, + irr_scene_EMAT_DEATH_FALLBACKSLOW, + irr_scene_EMAT_BOOM, + irr_scene_EMAT_COUNT + }; + +#endif diff --git a/include/IAnimatedMeshSceneNode.h b/include/IAnimatedMeshSceneNode.h new file mode 100644 index 0000000..34c3dc7 --- /dev/null +++ b/include/IAnimatedMeshSceneNode.h @@ -0,0 +1,53 @@ +/* c-irrlicht --- C bindings for Irrlicht Engine + + Copyright (C) 2019 Javier Sancho + + This file is part of c-irrlicht. + + c-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. + + c-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 + . +*/ + +#ifndef __C_SCENE_NODE_H_INCLUDED__ +#define __C_SCENE_NODE_H_INCLUDED__ + +#include "EMaterialFlags.h" +#include "IAnimatedMeshMD2.h" +#include "ITexture.h" + +typedef void irr_scene_IAnimatedMeshSceneNode; + +#ifdef __cplusplus +extern "C" { +#endif + + void + irr_scene_IAnimatedMeshSceneNode_setMaterialFlag(irr_scene_IAnimatedMeshSceneNode* node, + irr_video_E_MATERIAL_FLAG flag, + bool newvalue); + + void + irr_scene_IAnimatedMeshSceneNode_setMaterialTexture(irr_scene_IAnimatedMeshSceneNode* node, + u_int32_t textureLayer, + irr_video_ITexture* texture); + + bool + irr_scene_IAnimatedMeshSceneNode_setMD2Animation(irr_scene_IAnimatedMeshSceneNode* node, + irr_scene_EMD2_ANIMATION_TYPE anim); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/ISceneManager.h b/include/ISceneManager.h index eca8a48..728c607 100644 --- a/include/ISceneManager.h +++ b/include/ISceneManager.h @@ -22,10 +22,10 @@ #ifndef __C_SCENE_MANAGER_H_INCLUDED__ #define __C_SCENE_MANAGER_H_INCLUDED__ +#include "IAnimatedMeshSceneNode.h" #include "vector3d.h" typedef void irr_scene_IAnimatedMesh; -typedef void irr_scene_IAnimatedMeshSceneNode; typedef void irr_scene_ISceneManager; typedef void irr_scene_ISceneNode; diff --git a/include/cirrlicht.h b/include/cirrlicht.h index 68beb17..6401841 100644 --- a/include/cirrlicht.h +++ b/include/cirrlicht.h @@ -25,6 +25,8 @@ #include "dimension2d.h" #include "EDriverTypes.h" #include "EMaterialFlags.h" +#include "IAnimatedMeshMD2.h" +#include "IAnimatedMeshSceneNode.h" #include "IGUIEnvironment.h" #include "IrrlichtDevice.h" #include "ISceneManager.h" diff --git a/src/IAnimatedMeshSceneNode.cpp b/src/IAnimatedMeshSceneNode.cpp new file mode 100644 index 0000000..0a63c0f --- /dev/null +++ b/src/IAnimatedMeshSceneNode.cpp @@ -0,0 +1,51 @@ +/* c-irrlicht --- C bindings for Irrlicht Engine + + Copyright (C) 2019 Javier Sancho + + This file is part of c-irrlicht. + + c-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. + + c-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 "IAnimatedMeshSceneNode.h" + +extern "C" { + void + irr_scene_IAnimatedMeshSceneNode_setMaterialFlag(irr_scene_IAnimatedMeshSceneNode* node, + irr_video_E_MATERIAL_FLAG flag, + bool newvalue) + { + ((irr::scene::IAnimatedMeshSceneNode*)node)->setMaterialFlag((irr::video::E_MATERIAL_FLAG)flag, + newvalue); + } + + void + irr_scene_IAnimatedMeshSceneNode_setMaterialTexture(irr_scene_IAnimatedMeshSceneNode* node, + u_int32_t textureLayer, + irr_video_ITexture* texture) + { + ((irr::scene::IAnimatedMeshSceneNode*)node)->setMaterialTexture(textureLayer, + (irr::video::ITexture*)texture); + } + + bool + irr_scene_IAnimatedMeshSceneNode_setMD2Animation(irr_scene_IAnimatedMeshSceneNode* node, + irr_scene_EMD2_ANIMATION_TYPE anim) + { + return ((irr::scene::IAnimatedMeshSceneNode*)node)->setMD2Animation((irr::scene::EMD2_ANIMATION_TYPE)anim); + } + +} -- 2.39.5