Index: trunk/include/FlairSensorActuator/SimuGps.h
===================================================================
--- trunk/include/FlairSensorActuator/SimuGps.h	(revision 33)
+++ trunk/include/FlairSensorActuator/SimuGps.h	(revision 34)
@@ -87,7 +87,9 @@
 
   typedef struct {
-    float x;
-    float y;
-    float z;
+    float e;
+    float n;
+    float u;
+    float ve;
+    float vn;
   } gps_states_t;
 
Index: trunk/include/FlairSimulator/FixedCamera.h
===================================================================
--- trunk/include/FlairSimulator/FixedCamera.h	(revision 34)
+++ trunk/include/FlairSimulator/FixedCamera.h	(revision 34)
@@ -0,0 +1,47 @@
+// %flair:license{
+// This file is part of the Flair framework distributed under the
+// CECILL-C License, Version 1.0.
+// %flair:license}
+//  created:    2016/09/01
+//  filename:   FixedCamera.h
+//
+//  author:     Guillaume Sanahuja
+//              Copyright Heudiasyc UMR UTC/CNRS 7253
+//
+//  version:    $Id: $
+//
+//  purpose:    cclass for a fixed camera in the gui
+//
+/*********************************************************************/
+
+#ifndef FIXEDCAMERA_H
+#define FIXEDCAMERA_H
+
+#include "VisualizationCamera.h"
+#include <Vector3D.h>
+
+namespace flair {
+namespace simulator {
+
+class FixedCamera : public VisualizationCamera {
+public:
+  FixedCamera(std::string name,core::Vector3D position,core::Vector3D lookat=core::Vector3D(0,0,0),float rotateSpeed = -500.0f, float zoomSpeed = .05f);
+  ~FixedCamera();
+
+  void animateNode(irr::scene::ISceneNode *node, irr::u32 timeMs);
+
+private:
+  float sat(float value);
+  irr::core::position2df RotateStart;
+  irr::core::vector3df rotation;
+  bool Rotating;
+  float rotateSpeed;
+  float zoomSpeed;
+  float fov;
+  bool init;
+};
+
+} // end namespace simulator
+} // end namespace flair
+
+#endif // FIXEDCAMERA_H
Index: trunk/include/FlairSimulator/Gui.h
===================================================================
--- trunk/include/FlairSimulator/Gui.h	(revision 33)
+++ trunk/include/FlairSimulator/Gui.h	(revision 34)
@@ -52,4 +52,5 @@
 class Gui : public core::Object {
   friend class ::Simulator_impl;
+  friend class VisualizationCamera;
 
 public:
@@ -62,8 +63,8 @@
   irr::scene::IAnimatedMesh *getMesh(std::string filename) const;
   irr::scene::ISceneManager *getSceneManager(void) const;
+  irr::IrrlichtDevice *getDevice(void) const;
   float getAspectRatio(void) const;
 
 protected:
-  irr::IrrlichtDevice *getDevice(void) const;
   void setMesh(std::string file,
                irr::core::vector3df position = irr::core::vector3df(0, 0, 0),
Index: trunk/include/FlairSimulator/Model.h
===================================================================
--- trunk/include/FlairSimulator/Model.h	(revision 33)
+++ trunk/include/FlairSimulator/Model.h	(revision 34)
@@ -25,4 +25,5 @@
 #ifdef GL
 #include <aabbox3d.h>
+#include <IEventReceiver.h>
 namespace irr {
 class SEvent;
@@ -51,11 +52,14 @@
 namespace simulator {
 class Simulator;
-class AnimPoursuite;
+class FollowMeCamera;
 
-class Model : public core::IODevice {
+class Model : public core::IODevice
+#ifdef GL
+, public irr::IEventReceiver
+#endif
+ {
   friend class ::Gui_impl;
   friend class ::Simulator_impl;
   friend class ::Model_impl;
-  friend class AnimPoursuite;
   friend class sensor::SensorGL;
 
@@ -80,5 +84,7 @@
   virtual void WritedbtBuf(char *dbtbuf) = 0;
   virtual void ReaddbtBuf(char *dbtbuf) = 0;
-  virtual bool OnEvent(const irr::SEvent &event) = 0;
+
+  //default event handling
+  bool OnEvent(const irr::SEvent &event) { return false;};
 
   //! Sets the value of the camera's far clipping plane (default: 2000.0f)
@@ -93,5 +99,5 @@
   virtual void CalcModel(void) = 0;
 #ifdef GL
-  AnimPoursuite *getCamera(void) const;
+  FollowMeCamera *getFollowMeCamera(void) const;
   virtual void AnimateModel(void) = 0;
   // void setPosition(core::Vector3D pos);
Index: trunk/include/FlairSimulator/Parser.h
===================================================================
--- trunk/include/FlairSimulator/Parser.h	(revision 33)
+++ trunk/include/FlairSimulator/Parser.h	(revision 34)
@@ -23,4 +23,10 @@
 
 namespace flair {
+  namespace core {
+    class Vector3D;
+  }
+}
+
+namespace flair {
 namespace simulator {
 class Parser : public Gui {
@@ -28,4 +34,5 @@
   /*can create:
   - cylinders: in y axis
+  - fixed cameras
 
   */
@@ -45,4 +52,5 @@
   irr::core::vector3df getSceneVect(xmlNode *mesh_node, xmlChar *param,
                                     bool isScale = false);
+  core::Vector3D getMeshVector3D(xmlNode *mesh_node, xmlChar *param);
 };
 }
Index: trunk/include/FlairSimulator/VisualizationCamera.h
===================================================================
--- trunk/include/FlairSimulator/VisualizationCamera.h	(revision 34)
+++ trunk/include/FlairSimulator/VisualizationCamera.h	(revision 34)
@@ -0,0 +1,59 @@
+// %flair:license{
+// This file is part of the Flair framework distributed under the
+// CECILL-C License, Version 1.0.
+// %flair:license}
+//  created:    2016/09/01
+//  filename:   VisualizationCamera.h
+//
+//  author:     Guillaume Sanahuja
+//              Copyright Heudiasyc UMR UTC/CNRS 7253
+//
+//  version:    $Id: $
+//
+//  purpose:    cclass for a visualization camera in the gui
+//
+/*********************************************************************/
+
+#ifndef VISUALIZATIONCAMERA_H
+#define VISUALIZATIONCAMERA_H
+
+#include <ISceneNodeAnimator.h>
+#include <position2d.h>
+#include <Vector3D.h>
+#include <string>
+
+namespace irr {
+  namespace scene {
+    class ICameraSceneNode;
+  }
+}
+
+namespace flair {
+namespace simulator {
+
+class VisualizationCamera : private irr::scene::ISceneNodeAnimator {
+public:
+  VisualizationCamera(std::string name);
+  ~VisualizationCamera();
+
+  ISceneNodeAnimator *createClone(irr::scene::ISceneNode *node,
+                                  irr::scene::ISceneManager *newManager = 0);
+  virtual bool OnEvent(const irr::SEvent& event);
+  irr::scene::ICameraSceneNode *getCameraSceneNode(void);
+  std::string getName(void);
+
+private:
+  virtual bool isEventReceiverEnabled(void) const { return true; }
+
+protected:
+  bool LMouseKey;
+  irr::scene::ICameraSceneNode *camera;
+  irr::core::position2df MousePos;
+  float currentZoom;
+  std::string name;
+};
+
+} // end namespace simulator
+} // end namespace flair
+
+#endif // VISUALIZATIONCAMERA_H
Index: trunk/include/FlairSimulator/X4.h
===================================================================
--- trunk/include/FlairSimulator/X4.h	(revision 33)
+++ trunk/include/FlairSimulator/X4.h	(revision 34)
@@ -66,5 +66,4 @@
   void CalcModel(void);
 #ifdef GL
-  bool OnEvent(const irr::SEvent &event){};
   void AnimateModel(void);
   size_t dbtSize(void) const;
Index: trunk/include/FlairSimulator/X8.h
===================================================================
--- trunk/include/FlairSimulator/X8.h	(revision 33)
+++ trunk/include/FlairSimulator/X8.h	(revision 34)
@@ -66,5 +66,4 @@
   void CalcModel(void);
 #ifdef GL
-  bool OnEvent(const irr::SEvent &event){};
   void AnimateModel(void);
   size_t dbtSize(void) const;
