gepetto-viewer  4.12.0
An user-friendly Graphical Interface
keyboard-manipulator.h
Go to the documentation of this file.
1 #ifndef GEPETTO_VIEWER_FPSMANIPULATOR_H
2 #define GEPETTO_VIEWER_FPSMANIPULATOR_H
3 //
4 // KeyboardManipulator
5 // gepetto-viewer
6 //
7 // Alternative CameraManipulator for OSG, use keyboard and mouse
8 // KeyBinding are inspired by the classic system in games
9 //
10 // Created by Pierre Fernbach in january 2016
11 //
12 
13 
14 #include <osgGA/FirstPersonManipulator>
15 #include <osgViewer/Viewer>
16 #include <osg/Camera>
17 #include <osgViewer/GraphicsWindow>
18 
19 namespace osgGA {
20 
21  const double startSpeed_ = 2.;
24  class OSGGA_EXPORT KeyboardManipulator : public FirstPersonManipulator
25  {
26  typedef FirstPersonManipulator inherited;
27 
28  public:
29  KeyboardManipulator( int flags = DEFAULT_SETTINGS );
30  KeyboardManipulator( const KeyboardManipulator& fpm, const osg::CopyOp& copyOp = osg::CopyOp::SHALLOW_COPY );
32  KeyboardManipulator(osgViewer::GraphicsWindow* window, int flags = DEFAULT_SETTINGS );
33 
34  META_Object( osgGA, KeyboardManipulator );
35 
36  protected :
37 
38  virtual bool handleKeyDown( const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& us );
39  virtual bool handleKeyUp( const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& us );
40  virtual bool handleFrame( const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& us );
41  virtual bool handleMousePush( const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& us );
42  virtual bool handleMouseRelease( const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& us );
43  // virtual bool handleMouseWheel( const GUIEventAdapter& ea, GUIActionAdapter& us );
44  virtual bool performMovementLeftMouseButton( const double eventTimeDelta, const double dx, const double dy );
45 
46  virtual void rotateRoll( const double roll/*,const osg::Vec3d& localUp */);
47  virtual void getUsage(osg::ApplicationUsage &usage) const;
48  bool initKeyboard();
49  private :
50 
51  double speed_;
52  double speedX_;
53  double speedY_;
54  double speedZ_;
55  double speedRoll_;
56  /* double zNear_;
57  double zFar_;
58  double fovy_;
59  double ratio_;*/
60  osg::Quat rotateRoll_;
61  // osg::Quat rotatePitch_;
62  // osg::Quat rotateYaw_;
63  osg::Vec3d localUp_;
64  int keyLayout_;
65 
66  //osg::Camera* camera_;
67  osgViewer::GraphicsWindow* gWindow_;
68  // Display *display_;
69  int keycode_;
70  bool rightClic_;
71  bool ctrl_;
72  bool shift_;
73  bool noRoll_;
74 
75 
76  };// end class
77 
78  /*
79  * zqsd for azerty keyboard, if qwerty keyboard is detected, the keySym will be modified
80  * */
82  {
83  key_forward = GUIEventAdapter::KEY_W, //depend on qwerty / azerty
84  key_backward = GUIEventAdapter::KEY_S,
85  key_right = GUIEventAdapter::KEY_D,
86  key_left = GUIEventAdapter::KEY_A,
87  key_roll_right = GUIEventAdapter::KEY_E,
88  key_roll_left = GUIEventAdapter::KEY_Q,
89  key_up = GUIEventAdapter::KEY_Space,
90  key_down = GUIEventAdapter::KEY_V
91  };
92 
93  enum keyLayout{
95  };
96 }//namespace osgGA
97 #endif // FPSMANIPULATOR_H
Definition: keyboard-manipulator.h:84
Definition: keyboard-manipulator.h:94
Definition: keyboard-manipulator.h:94
Definition: keyboard-manipulator.h:90
Definition: keyboard-manipulator.h:89
Definition: keyboard-manipulator.h:87
Definition: keyboard-manipulator.h:85
KeyBinding
Definition: keyboard-manipulator.h:81
Definition: keyboard-manipulator.h:19
Definition: keyboard-manipulator.h:88
keyLayout
Definition: keyboard-manipulator.h:93
Definition: keyboard-manipulator.h:83
Definition: keyboard-manipulator.h:86
Definition: keyboard-manipulator.h:94
Definition: keyboard-manipulator.h:24
const double startSpeed_
Definition: keyboard-manipulator.h:21