#ifndef MOUSEPICKER_H #define MOUSEPICKER_H #include #include #include #include enum PickingMode{ PointPicker = 0, LinePicker = 1, AreaPicker = 2, }; class MousePicker : public QObject, public osgGA::GUIEventHandler { Q_OBJECT public: explicit MousePicker(QObject *parent = nullptr); void setRoot(osg::ref_ptr root = nullptr); void activate(PickingMode _mode, osg::Node* model); bool handle( const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa ); void disactivate(); static osg::ref_ptr createPointGeode(const osg::Vec3 &pos); signals: void editionDone(PickingMode, osg::ref_ptr); private: bool isActivated = false; bool isDrawing = false; PickingMode mode; osg::Vec3 pushPnt; osg::ref_ptr model; osg::ref_ptr drawNodeList = new osg::Group; osg::ref_ptr currentDrawNode = new osg::Geode; osg::ref_ptr lineGeometry; osg::ref_ptr vertexArray; }; #endif // MOUSEPICKER_H