]> 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 42bfac57fd3deea71cad27044a380c5c4169c832..d01e785b399fa2ca605f268be8edd02f9fff0f11 100644 (file)
@@ -89,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);
   }
 
@@ -123,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);
   }
@@ -185,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,
@@ -234,11 +194,8 @@ extern "C" {
   irr_scene_createRotationAnimator(irr_scene_ISceneManager* smgr,
                                    irr_core_vector3df* rotationSpeed)
   {
-    const irr::core::vector3df& irrRotationSpeed =
-      irr::core::vector3df(rotationSpeed->x, rotationSpeed->y, rotationSpeed->z);
-
     return ((irr::scene::ISceneManager*)smgr)
-      ->createRotationAnimator(irrRotationSpeed);
+      ->createRotationAnimator(*(irr::core::vector3df*)rotationSpeed);
   }
 
   void