]> git.jsancho.org Git - c-irrlicht.git/blobdiff - src/ISceneManager.cpp
Bug when coordinates are NULL
[c-irrlicht.git] / src / ISceneManager.cpp
index 230a3eacfb5e00bbe9c5df0825d82c4ab70c62b4..e88bd00a95a0246994ce026e18668040ae90365a 100644 (file)
@@ -27,21 +27,27 @@ extern "C" {
   irr_scene_ISceneManager_addAnimatedMeshSceneNode(irr_scene_ISceneManager* smgr,
                                                    irr_scene_IAnimatedMesh* mesh,
                                                    irr_scene_ISceneNode* parent,
-                                                   int32_t id,
+                                                   int id,
                                                    irr_core_vector3df* position,
                                                    irr_core_vector3df* rotation,
                                                    irr_core_vector3df* scale,
-                                                   bool alsoAddIfMeshPointerZero)
+                                                   int 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);
+    const irr::core::vector3df iPosition =
+      position ?
+      irr::core::vector3df(position->x, position->y, position->z) :
+      irr::core::vector3df(0, 0, 0);
+
+    const irr::core::vector3df iRotation =
+      rotation ?
+      irr::core::vector3df(rotation->x, rotation->y, rotation->z) :
+      irr::core::vector3df(0, 0, 0);
+
+    const irr::core::vector3df& iScale =
+      scale ?
+      irr::core::vector3df(scale->x, scale->y, scale->z) :
+      irr::core::vector3df(1, 1, 1);
+
     return (irr_scene_IAnimatedMeshSceneNode*)
       ((irr::scene::ISceneManager*)smgr)->addAnimatedMeshSceneNode((irr::scene::IAnimatedMesh*)mesh,
                                                                    (irr::scene::ISceneNode*)parent,
@@ -53,19 +59,23 @@ extern "C" {
   }
 
   irr_scene_ICameraSceneNode*
-  addCameraSceneNode(irr_scene_ISceneManager* smgr,
-                     irr_scene_ISceneNode* parent,
-                     irr_core_vector3df* position,
-                     irr_core_vector3df* lookat,
-                     int32_t id,
-                     bool makeActive)
+  irr_scene_ISceneManager_addCameraSceneNode(irr_scene_ISceneManager* smgr,
+                                             irr_scene_ISceneNode* parent,
+                                             irr_core_vector3df* position,
+                                             irr_core_vector3df* lookat,
+                                             int id,
+                                             int makeActive)
   {
-    const irr::core::vector3df& iPosition = irr::core::vector3df(position->x,
-                                                                 position->y,
-                                                                 position->z);
-    const irr::core::vector3df& iLookat = irr::core::vector3df(lookat->x,
-                                                               lookat->y,
-                                                               lookat->z);
+    const irr::core::vector3df& iPosition =
+      position ?
+      irr::core::vector3df(position->x, position->y, position->z) :
+      irr::core::vector3df(0, 0, 0);
+
+    const irr::core::vector3df& iLookat =
+      lookat ?
+      irr::core::vector3df(lookat->x, lookat->y, lookat->z) :
+      irr::core::vector3df(0, 0, 100);
+
     return (irr_scene_ICameraSceneNode*)
       ((irr::scene::ISceneManager*)smgr)->addCameraSceneNode((irr::scene::ISceneNode*)parent,
                                                              iPosition,
@@ -74,6 +84,13 @@ extern "C" {
                                                              makeActive);
   }
 
+  void
+  irr_scene_ISceneManager_drawAll(irr_scene_ISceneManager* smgr)
+  {
+    ((irr::scene::ISceneManager*)smgr)->drawAll();
+  }
+
+
   irr_scene_IAnimatedMesh*
   irr_scene_ISceneManager_getMesh(irr_scene_ISceneManager* smgr,
                                   const char* filename)