]> git.jsancho.org Git - c-irrlicht.git/blobdiff - src/ISceneManager.cpp
First Person Shooter (FPS) camera
[c-irrlicht.git] / src / ISceneManager.cpp
index 422250569e79de84edc543bece5061eb41ba2e03..a3a24b44e611dc0da351f813fee1f1a0a0137841 100644 (file)
 
 extern "C" {
   irr_scene_IAnimatedMeshSceneNode*
-  irr_scene_ISceneManager_addAnimatedMeshSceneNode(irr_scene_ISceneManager* smgr,
-                                                   irr_scene_IAnimatedMesh* mesh,
-                                                   irr_scene_ISceneNode* parent,
-                                                   int id,
-                                                   irr_core_vector3df* position,
-                                                   irr_core_vector3df* rotation,
-                                                   irr_core_vector3df* scale,
-                                                   int alsoAddIfMeshPointerZero)
+  irr_scene_addAnimatedMeshSceneNode(irr_scene_ISceneManager* smgr,
+                                     irr_scene_IAnimatedMesh* mesh,
+                                     irr_scene_ISceneNode* parent,
+                                     int id,
+                                     irr_core_vector3df* position,
+                                     irr_core_vector3df* rotation,
+                                     irr_core_vector3df* scale,
+                                     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,
-                                                                   id,
-                                                                   iPosition,
-                                                                   iRotation,
-                                                                   iScale,
-                                                                   alsoAddIfMeshPointerZero);
+      ((irr::scene::ISceneManager*)smgr)
+      ->addAnimatedMeshSceneNode((irr::scene::IAnimatedMesh*)mesh,
+                                 (irr::scene::ISceneNode*)parent,
+                                 id,
+                                 iPosition,
+                                 iRotation,
+                                 iScale,
+                                 alsoAddIfMeshPointerZero);
   }
 
   irr_scene_ICameraSceneNode*
-  irr_scene_ISceneManager_addCameraSceneNode(irr_scene_ISceneManager* smgr,
-                                             irr_scene_ISceneNode* parent,
-                                             irr_core_vector3df* position,
-                                             irr_core_vector3df* lookat,
-                                             int id,
-                                             int makeActive)
+  irr_scene_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,
-                                                             iLookat,
-                                                             id,
-                                                             makeActive);
+      ((irr::scene::ISceneManager*)smgr)
+      ->addCameraSceneNode((irr::scene::ISceneNode*)parent,
+                           iPosition,
+                           iLookat,
+                           id,
+                           makeActive);
+  }
+
+  irr_scene_ICameraSceneNode*
+  irr_scene_addCameraSceneNodeFPS(irr_scene_ISceneManager* smgr,
+                                  irr_scene_ISceneNode* parent,
+                                  float rotateSpeed,
+                                  float moveSpeed,
+                                  int id,
+                                  irr_SkeyMap* keyMapArray,
+                                  int keyMapSize,
+                                  int noVerticalMovement,
+                                  float jumpSpeed,
+                                  int invertMouse,
+                                  int makeActive)
+  {
+    return ((irr::scene::ISceneManager*)smgr)
+      ->addCameraSceneNodeFPS((irr::scene::ISceneNode*)parent,
+                              rotateSpeed,
+                              moveSpeed,
+                              id,
+                              (irr::SKeyMap*)keyMapArray,
+                              keyMapSize,
+                              noVerticalMovement,
+                              jumpSpeed,
+                              invertMouse,
+                              makeActive);
+  }
+
+  irr_scene_IMeshSceneNode*
+  irr_scene_addOctreeSceneNodeAM(irr_scene_ISceneManager* smgr,
+                                 irr_scene_IAnimatedMesh* mesh,
+                                 irr_scene_ISceneNode* parent,
+                                 int id,
+                                 int minimalPolysPerNode,
+                                 int alsoAddIfMeshPointerZero)
+  {
+    return ((irr::scene::ISceneManager*)smgr)
+      ->addOctreeSceneNode((irr::scene::IAnimatedMesh*)mesh,
+                           (irr::scene::ISceneNode*)parent,
+                           id,
+                           minimalPolysPerNode,
+                           alsoAddIfMeshPointerZero);
   }
 
   void
-  irr_scene_ISceneManager_drawAll(irr_scene_ISceneManager* smgr)
+  irr_scene_drawAll(irr_scene_ISceneManager* smgr)
   {
     ((irr::scene::ISceneManager*)smgr)->drawAll();
   }
 
 
   irr_scene_IAnimatedMesh*
-  irr_scene_ISceneManager_getMesh(irr_scene_ISceneManager* smgr,
-                                  const char* filename)
+  irr_scene_getMesh(irr_scene_ISceneManager* smgr,
+                    const char* filename)
   {
     return (irr_scene_IAnimatedMesh*)
       ((irr::scene::ISceneManager*)smgr)->getMesh(filename);