vrecko
virtual reality framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
KMTracker.h
Go to the documentation of this file.
1 #include <vrecko/Ability.h>
2 
4 #include <vrecko/World.h>
5 #include <osg/Vec2>
6 
7 using namespace vrecko;
8 
9 namespace navigation {
10 
11 class KMTracker: public Ability {
12  public:
13  KMTracker();
14  ~KMTracker() {};
15  void preInitialize(void);
16  void postInitialize(void);
17 
18  void processEvent(const std::string &input_name, VreckoMessage *message);
19  bool loadXMLParameters(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *parametersNode);
20  XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *saveXMLParameters(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *);
21 
22  void update(void);
23 
24  protected:
25  osg::Vec3 _actual_position, _last_position;
27  osg::Vec3 avatar_position;
28  osg::Vec3 avatar_look_at;
29  osg::Vec3 avatar_up_vector;
30  osg::Vec3 smer3d, move_direction;
31 
32  osg::Vec3 hand_position_left;
36  osg::Vec4 direction;
37 
38  osg::Vec2 smer; // delta 2D smer pohybu
39  double vert, horiz; // rotace Avatara
40 
41  osg::Vec2 mouse_pos;
42  osg::Vec2 old_mouse_pos;
43 
44  // TODO not used at all??? remove?
45  //bool mouse_button_left;
46  //bool mouse_button_right;
47  //bool mouse_button_middle;
49 
52  float move_step;
54 
55  typedef enum {
56  plane_xz = 0,
58  plane_yz
59  }Plane_type;
60 
61  Plane_type move_plane; // rovina, ve ktere se pohybuje ruka
62  bool moving, stopped;
63  bool _avatarMovement; // Avatar/Gloves switch
64  bool right_hand; // right/left hand switch
65  bool alwaysSendOrientationWithPosition; //kdyz se posila pozice, posle se i orientace (ikdyz se nezmenila)
66  //vice odpovida zarizeni optitrack, ktere posila pozici i orientaci zaroven
67 
68 
69 
70  int i;
71  std::string mesg;
72 
74 
75 
76  void KMTracker::sendSensorInfo( bool rightHand );
77 
78 
79 
80  DECLARE_OUTPUT(Orientation, MessageQuat);
82  DECLARE_OUTPUT(MoveLocal, MessageVec3);
83 
84  DECLARE_OUTPUT(PositionRight, MessageVec3);
85  DECLARE_OUTPUT(PositionLeft, MessageVec3);
86  DECLARE_OUTPUT(OrientationRight, MessageQuat);
87  DECLARE_OUTPUT(OrientationLeft, MessageQuat);
88 
89  DECLARE_OUTPUT(ButtonLeft, MessageBool);
90  DECLARE_OUTPUT(ButtonRight, MessageBool);
91 
92  DECLARE_OUTPUT(LH_ButtonLeft, MessageBool);
93  DECLARE_OUTPUT(LH_ButtonRight, MessageBool);
94 
96 
97 };
98 }