]> git.jsancho.org Git - c-irrlicht.git/blobdiff - src/ISceneManager.cpp
Use structs with casting, without classes replication
[c-irrlicht.git] / src / ISceneManager.cpp
index 7edf4cf6e432fc8414a7080d8c0fd67d66130fb9..d01e785b399fa2ca605f268be8edd02f9fff0f11 100644 (file)
@@ -26,7 +26,7 @@ class CustomSceneNode : public irr::scene::ISceneNode
 {
   void (*Render)();
   irr_core_aabbox3d_f32* (*GetBoundingBox)();
-  int (*GetMaterialCount)();
+  uint32_t (*GetMaterialCount)();
   irr_video_SMaterial* (*GetMaterial)(unsigned int i);
 
 public:
@@ -38,7 +38,7 @@ public:
                   const irr::core::vector3df& scale,
                   void (*render)(),
                   irr_core_aabbox3d_f32* (*getBoundingBox)(),
-                  int (*getMaterialCount)(),
+                  uint32_t (*getMaterialCount)(),
                   irr_video_SMaterial* (*getMaterial)(unsigned int i))
   : irr::scene::ISceneNode(parent, smgr, id, position, rotation, scale)
   {
@@ -64,9 +64,7 @@ public:
 
   virtual const irr::core::aabbox3d<irr::f32>& getBoundingBox() const
   {
-    irr_core_aabbox3d_f32* box = GetBoundingBox();
-    irr::core::aabbox3d<irr::f32>* irrBox = new irr::core::aabbox3d<irr::f32>();
-    return *irrBox;
+    return *(irr::core::aabbox3d<irr::f32>*)GetBoundingBox();
   }
 
   virtual irr::u32 getMaterialCount() const
@@ -76,11 +74,7 @@ public:
 
   virtual irr::video::SMaterial& getMaterial(irr::u32 i)
   {
-    irr_video_SMaterial* material = GetMaterial(i);
-    irr::video::SMaterial* irrMaterial = new irr::video::SMaterial();
-    irrMaterial->Wireframe = material->wireframe;
-    irrMaterial->Lighting = material->lighting;
-    return *irrMaterial;
+    return *(irr::video::SMaterial*)GetMaterial(i);
   }
 };
 
@@ -89,35 +83,20 @@ extern "C" {
   irr_scene_addAnimatedMeshSceneNode(irr_scene_ISceneManager* smgr,
                                      irr_scene_IAnimatedMesh* mesh,
                                      irr_scene_ISceneNode* parent,
-                                     int id,
+                                     int32_t id,
                                      irr_core_vector3df* position,
                                      irr_core_vector3df* rotation,
                                      irr_core_vector3df* scale,
-                                     int alsoAddIfMeshPointerZero)
+                                     bool alsoAddIfMeshPointerZero)
   {
-    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,
                                  id,
-                                 iPosition,
-                                 iRotation,
-                                 iScale,
+                                 position ? *(irr::core::vector3df*)position : irr::core::vector3df(0, 0, 0),
+                                 rotation ? *(irr::core::vector3df*)rotation : irr::core::vector3df(0, 0, 0),
+                                 scale ? *(irr::core::vector3df*)scale : irr::core::vector3df(1, 1, 1),
                                  alsoAddIfMeshPointerZero);
   }
 
@@ -126,24 +105,14 @@ extern "C" {
                                irr_scene_ISceneNode* parent,
                                irr_core_vector3df* position,
                                irr_core_vector3df* lookat,
-                               int id,
-                               int makeActive)
+                               int32_t id,
+                               bool makeActive)
   {
-    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,
-                           iLookat,
+                           position ? *(irr::core::vector3df*)position : irr::core::vector3df(0, 0, 0),
+                           lookat ? *(irr::core::vector3df*)lookat : irr::core::vector3df(0, 0, 100),
                            id,
                            makeActive);
   }
@@ -151,15 +120,15 @@ extern "C" {
   irr_scene_ICameraSceneNode*
   irr_scene_addCameraSceneNodeFPS(irr_scene_ISceneManager* smgr,
                                   irr_scene_ISceneNode* parent,
-                                  float rotateSpeed,
-                                  float moveSpeed,
-                                  int id,
+                                  float_t rotateSpeed,
+                                  float_t moveSpeed,
+                                  int32_t id,
                                   irr_SkeyMap* keyMapArray,
-                                  int keyMapSize,
-                                  int noVerticalMovement,
-                                  float jumpSpeed,
-                                  int invertMouse,
-                                  int makeActive)
+                                  int32_t keyMapSize,
+                                  bool noVerticalMovement,
+                                  float_t jumpSpeed,
+                                  bool invertMouse,
+                                  bool makeActive)
   {
     return ((irr::scene::ISceneManager*)smgr)
       ->addCameraSceneNodeFPS((irr::scene::ISceneNode*)parent,
@@ -177,13 +146,13 @@ extern "C" {
   irr_scene_ISceneNode*
   irr_scene_addCustomSceneNode(irr_scene_ISceneManager* smgr,
                                irr_scene_ISceneNode* parent,
-                               int id,
+                               int32_t id,
                                irr_core_vector3df* position,
                                irr_core_vector3df* rotation,
                                irr_core_vector3df* scale,
                                void (*render)(),
                                irr_core_aabbox3d_f32* (*getBoundingBox)(),
-                               int (*getMaterialCount)(),
+                               uint32_t (*getMaterialCount)(),
                                irr_video_SMaterial* (*getMaterial)(unsigned int i))
   {
     if (parent == NULL)
@@ -191,45 +160,27 @@ extern "C" {
         parent = irr_scene_getRootSceneNode(smgr);
       }
 
-    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);
-
     CustomSceneNode *node =
       new CustomSceneNode((irr::scene::ISceneNode*)parent,
                           (irr::scene::ISceneManager*)smgr,
                           id,
-                          iPosition,
-                          iRotation,
-                          iScale,
+                          position ? *(irr::core::vector3df*)position : irr::core::vector3df(0, 0, 0),
+                          rotation ? *(irr::core::vector3df*)rotation : irr::core::vector3df(0, 0, 0),
+                          scale ? *(irr::core::vector3df*)scale : irr::core::vector3df(1, 1, 1),
                           render,
                           getBoundingBox,
                           getMaterialCount,
                           getMaterial);
-    //node->drop();
-    //node = 0;
-    //return NULL;
     return node;
   }
 
   irr_scene_IMeshSceneNode*
-  irr_scene_addOctreeSceneNodeAM(irr_scene_ISceneManager* smgr,
-                                 irr_scene_IAnimatedMesh* mesh,
-                                 irr_scene_ISceneNode* parent,
-                                 int id,
-                                 int minimalPolysPerNode,
-                                 int alsoAddIfMeshPointerZero)
+  irr_scene_addOctreeSceneNode(irr_scene_ISceneManager* smgr,
+                               irr_scene_IAnimatedMesh* mesh,
+                               irr_scene_ISceneNode* parent,
+                               int32_t id,
+                               int32_t minimalPolysPerNode,
+                               bool alsoAddIfMeshPointerZero)
   {
     return ((irr::scene::ISceneManager*)smgr)
       ->addOctreeSceneNode((irr::scene::IAnimatedMesh*)mesh,
@@ -239,6 +190,14 @@ extern "C" {
                            alsoAddIfMeshPointerZero);
   }
 
+  irr_scene_ISceneNodeAnimator*
+  irr_scene_createRotationAnimator(irr_scene_ISceneManager* smgr,
+                                   irr_core_vector3df* rotationSpeed)
+  {
+    return ((irr::scene::ISceneManager*)smgr)
+      ->createRotationAnimator(*(irr::core::vector3df*)rotationSpeed);
+  }
+
   void
   irr_scene_drawAll(irr_scene_ISceneManager* smgr)
   {