]> 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 f4f2c87e6b05b757a0e8a024f01ec9b85eaa8b63..d01e785b399fa2ca605f268be8edd02f9fff0f11 100644 (file)
@@ -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);
   }
 };
 
@@ -95,29 +89,14 @@ extern "C" {
                                      irr_core_vector3df* scale,
                                      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);
   }
 
@@ -129,21 +108,11 @@ extern "C" {
                                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);
   }
@@ -191,28 +160,13 @@ 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,
@@ -236,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)
   {