#pragma once #include "StoreHandler.hpp" #include "OpenScadRenderer.hpp" #include "ThreeMFWriter.hpp" #include class PickHandler: public osgGA::GUIEventHandler { public: PickHandler(StoreHandler* storeHandler, OpenScadRenderer* openScadRenderer, ThreeMFWriter* threeMFWriter, osg::ref_ptr axesNode); osg::Node* getOrCreateSelectionCylinder(); virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa); void moveTo(osg::Vec3f position); void rotateToNormalVector(osg::Vec3f normal); void setVisibility(bool mode); protected: osg::ref_ptr _selectionSwitch; osg::ref_ptr _selectionTranslateGroup; osg::ref_ptr _selectionRotateGroup; osg::ref_ptr _selectionMoveToEndGroup; bool isSelection = true; private: StoreHandler* _storeHandler; OpenScadRenderer* _openScadRenderer; ThreeMFWriter* _threeMFWriter; osg::ref_ptr _axesNode; };