vizkit3d
PickHandler.hpp
Go to the documentation of this file.
1 #ifndef __VIZKIT_PICKHANDLER_HPP__
2 #define __VIZKIT_PICKHANDLER_HPP__
3 
4 #include <QObject>
5 #include <QVector3D>
6 #include <osgViewer/Viewer>
7 #include <iostream>
8 
9 #include "Vizkit3DPlugin.hpp"
10 
11 namespace vizkit3d
12 {
13 class PickedCallback : public osg::Referenced
14 {
15  public:
16  virtual void picked() = 0;
17 };
18 
19 class PickedUserData : public osg::Referenced
20 {
21  public:
22  PickedUserData(VizPluginBase* plugin){ this->plugin = plugin; }
23  VizPluginBase* getPlugin() { return plugin; }
24  private:
25  VizPluginBase* plugin;
26 };
27 
28 // class to handle events with a pick
29 class PickHandler : public QObject, public osgGA::GUIEventHandler
30 {
31  Q_OBJECT
32  public:
33  typedef void (*functionType) ();
34 
36  {
37  KEY_UP, KEY_DOWN
38  };
39 
41  {
42  functionStatusType() {keyState = KEY_UP; keyFunction = NULL;}
43  functionType keyFunction;
45  };
46 
47 
48  public:
49  PickHandler();
50  ~PickHandler();
51 
52  bool addFunction(int whatKey, functionType newFunction);
53  bool addFunction(int whatKey, keyStatusType keyPressStatus, functionType newFunction);
54 
55  bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa);
56  void pick(const osgGA::GUIEventAdapter& ea, osgViewer::View* viewer);
57 
58  signals:
59  void picked(const QVector3D& coord);
60 
61  protected:
62  void setTrackedNode(osgViewer::View* viewer, osg::ref_ptr< osg::Node > node);
63 
64  void wireFrameModeOn(osg::Node *srcNode);
65  void wireFrameModeOff(osg::Node *srcNode);
66 
67  float _mx,_my;
70 
71  typedef std::map<int, functionStatusType > keyFunctionMap;
72  keyFunctionMap keyFuncMap;
73  keyFunctionMap keyUPFuncMap;
74 };
75 }
76 
77 #endif
PickedUserData(VizPluginBase *plugin)
Definition: PickHandler.hpp:22
virtual void picked()=0
Definition: PickHandler.hpp:29
functionType keyFunction
Definition: PickHandler.hpp:43
functionStatusType()
Definition: PickHandler.hpp:42
VizPluginBase * getPlugin()
Definition: PickHandler.hpp:23
Definition: PickHandler.hpp:40
bool _usePolytopeIntersector
Definition: PickHandler.hpp:68
Definition: PickHandler.hpp:13
Definition: PickHandler.hpp:19
keyStatusType
Definition: PickHandler.hpp:35
keyFunctionMap keyFuncMap
Definition: PickHandler.hpp:72
keyStatusType keyState
Definition: PickHandler.hpp:44
std::map< int, functionStatusType > keyFunctionMap
Definition: PickHandler.hpp:71
float _my
Definition: PickHandler.hpp:67
keyFunctionMap keyUPFuncMap
Definition: PickHandler.hpp:73
Definition: AxesNode.cpp:12
Definition: PickHandler.hpp:37
bool _useWindowCoordinates
Definition: PickHandler.hpp:69
Definition: Vizkit3DPlugin.hpp:110