X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2FISceneManager.cpp;h=5e8d2d5a13153d9c70a445fdc9815a75f5261941;hb=2dfe078cf4082caf641c96449907f36a9029b486;hp=6b24b3dd955f0e65bbbfca3de38af5a5d65e814f;hpb=03d4e13abc392abec3ef9cb6a97d83a5ae722ca8;p=guile-irrlicht.git diff --git a/src/ISceneManager.cpp b/src/ISceneManager.cpp index 6b24b3d..5e8d2d5 100644 --- a/src/ISceneManager.cpp +++ b/src/ISceneManager.cpp @@ -21,8 +21,12 @@ #include #include +#include "IAnimatedMesh.h" +#include "IAnimatedMeshSceneNode.h" #include "ISceneManager.h" -#include "util.h" +#include "ISceneNode.h" +#include "vector3d.h" +#include "wrapped.h" extern "C" { @@ -30,10 +34,44 @@ extern "C" { init_scene_manager (void) { init_scene_manager_type (); + scm_c_define_gsubr ("add-animated-mesh-scene-node", 8, 0, 0, + (scm_t_subr)irr_scene_addAnimatedMeshSceneNode); + scm_c_define_gsubr ("get-mesh", 2, 0, 0, (scm_t_subr)irr_scene_getMesh); } DEFINE_WRAPPED_TYPE (irr::scene::ISceneManager*, "scene-manager", - init_scene_manager_type, + init_scene_manager_type, scene_manager_p, wrap_scene_manager, unwrap_scene_manager); + SCM + irr_scene_addAnimatedMeshSceneNode (SCM wrapped_scene_manager, + SCM mesh, + SCM parent, + SCM id, + SCM position, + SCM rotation, + SCM scale, + SCM alsoAddIfMeshPointerZero) + { + irr::scene::ISceneManager* smgr = unwrap_scene_manager (wrapped_scene_manager); + irr::scene::IAnimatedMeshSceneNode* node = + smgr->addAnimatedMeshSceneNode (unwrap_animated_mesh (mesh), + scm_is_false (parent) ? 0 : unwrap_scene_node (parent), + scm_to_int32 (id), + scm_to_vector3df (position), + scm_to_vector3df (rotation), + scm_to_vector3df (scale), + scm_to_bool (alsoAddIfMeshPointerZero)); + return wrap_animated_mesh_scene_node (node); + } + + SCM + irr_scene_getMesh (SCM wrapped_scene_manager, + SCM filename) + { + irr::scene::ISceneManager* smgr = unwrap_scene_manager (wrapped_scene_manager); + irr::scene::IAnimatedMesh* mesh = smgr->getMesh(scm_to_utf8_stringn (filename, NULL)); + return wrap_animated_mesh (mesh); + } + }