]> git.jsancho.org Git - c-irrlicht.git/commitdiff
Scene manager
authorJavier Sancho <jsf@jsancho.org>
Sat, 12 Oct 2019 10:32:52 +0000 (12:32 +0200)
committerJavier Sancho <jsf@jsancho.org>
Sat, 12 Oct 2019 10:32:52 +0000 (12:32 +0200)
Makefile.am
include/ISceneManager.h [new file with mode: 0644]
include/cirrlicht.h
include/vector3d.h [new file with mode: 0644]
src/ISceneManager.cpp [new file with mode: 0644]

index 5570dfe3e449856dc30eea81a9e811c8cbb66a24..83bc545d92b16b53fbd8123701b6d96a203c17ca 100644 (file)
@@ -3,6 +3,7 @@ lib_LTLIBRARIES = libCIrrlicht.la
 libCIrrlicht_la_SOURCES = \
   src/CIrrlicht.cpp \
   src/IGUIEnvironment.cpp \
+  src/ISceneManager.cpp \
   src/IVideoDriver.cpp \
   src/IrrlichtDevice.cpp
 libCIrrlicht_la_CPPFLAGS = -I$(top_srcdir)/include
@@ -10,9 +11,11 @@ libCIrrlicht_la_LDFLAGS = -version-info 0:1
 include_HEADERS = \
   include/EDriverTypes.h \
   include/IGUIEnvironment.h \
+  include/ISceneManager.h \
   include/IVideoDriver.h \
   include/IrrlichtDevice.h \
   include/SColor.h \
   include/cirrlicht.h \
   include/dimension2d.h \
-  include/rect.h
+  include/rect.h \
+  include/vector3d.h
diff --git a/include/ISceneManager.h b/include/ISceneManager.h
new file mode 100644 (file)
index 0000000..eca8a48
--- /dev/null
@@ -0,0 +1,54 @@
+/* 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/>.
+*/
+
+#ifndef __C_SCENE_MANAGER_H_INCLUDED__
+#define __C_SCENE_MANAGER_H_INCLUDED__
+
+#include "vector3d.h"
+
+typedef void irr_scene_IAnimatedMesh;
+typedef void irr_scene_IAnimatedMeshSceneNode;
+typedef void irr_scene_ISceneManager;
+typedef void irr_scene_ISceneNode;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  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);
+
+  irr_scene_IAnimatedMesh*
+  irr_scene_ISceneManager_getMesh(irr_scene_ISceneManager* smgr,
+                                  const char* filename);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
index 9a0736843065b63d66e7704a8ab1a6e28e5ce864..95febb108eaa2b48531f2d306034b9542b2fa2cd 100644 (file)
 #ifndef __C_IRRLICHT_H_INCLUDED__
 #define __C_IRRLICHT_H_INCLUDED__
 
+#include "dimension2d.h"
 #include "EDriverTypes.h"
 #include "IGUIEnvironment.h"
 #include "IrrlichtDevice.h"
-#include "dimension2d.h"
+#include "ISceneManager.h"
+#include "IVideoDriver.h"
+#include "rect.h"
+#include "SColor.h"
+#include "vector3d.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/include/vector3d.h b/include/vector3d.h
new file mode 100644 (file)
index 0000000..6019d94
--- /dev/null
@@ -0,0 +1,32 @@
+/* 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/>.
+*/
+
+#ifndef __C_IRR_POINT_3D_H_INCLUDED__
+#define __C_IRR_POINT_3D_H_INCLUDED__
+
+typedef struct
+{
+  float_t x;
+  float_t y;
+  float_t z;
+} irr_core_vector3df;
+
+#endif
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);
+  }
+}