]> git.jsancho.org Git - c-irrlicht.git/blobdiff - src/ISceneManager.cpp
Scene manager
[c-irrlicht.git] / src / ISceneManager.cpp
diff --git a/src/ISceneManager.cpp b/src/ISceneManager.cpp
new file mode 100644 (file)
index 0000000..83dcda1
--- /dev/null
@@ -0,0 +1,62 @@
+/* c-irrlicht --- C bindings for Irrlicht Engine
+
+   Copyright (C) 2019 Javier Sancho <jsf@jsancho.org>
+
+   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
+   <http://www.gnu.org/licenses/>.
+*/
+
+#include <irrlicht/irrlicht.h>
+#include "ISceneManager.h"
+
+extern "C" {
+  irr_scene_IAnimatedMeshSceneNode*
+  irr_scene_ISceneManager_addAnimatedMeshSceneNode(irr_scene_ISceneManager* smgr,
+                                                   irr_scene_IAnimatedMesh* mesh,
+                                                   irr_scene_ISceneNode* parent,
+                                                   int32_t id,
+                                                   irr_core_vector3df* position,
+                                                   irr_core_vector3df* rotation,
+                                                   irr_core_vector3df* scale,
+                                                   bool alsoAddIfMeshPointerZero)
+  {
+    const irr::core::vector3df& iPosition = irr::core::vector3df(position->x,
+                                                                 position->y,
+                                                                 position->z);
+    const irr::core::vector3df& iRotation = irr::core::vector3df(rotation->x,
+                                                                 rotation->y,
+                                                                 rotation->z);
+    const irr::core::vector3df& iScale = irr::core::vector3df(scale->x,
+                                                              scale->y,
+                                                              scale->z);
+    return (irr_scene_IAnimatedMeshSceneNode*)
+      ((irr::scene::ISceneManager*)smgr)->addAnimatedMeshSceneNode((irr::scene::IAnimatedMesh*)mesh,
+                                                                   (irr::scene::ISceneNode*)parent,
+                                                                   id,
+                                                                   iPosition,
+                                                                   iRotation,
+                                                                   iScale,
+                                                                   alsoAddIfMeshPointerZero);
+  }
+
+  irr_scene_IAnimatedMesh*
+  irr_scene_ISceneManager_getMesh(irr_scene_ISceneManager* smgr,
+                                  const char* filename)
+  {
+    return (irr_scene_IAnimatedMesh*)
+      ((irr::scene::ISceneManager*)smgr)->getMesh(filename);
+  }
+}