#pragma once // Include modules #include "TrackSystemSettingsStructs.hpp" #include "enums.hpp" // Include dependencies #include #include #include #include #include #include class PointShape { public: PointShape(const osg::ref_ptr renderRoot, const ActiveTrackingSystem activeTrackingSystem, osg::Vec3f point, osg::Vec3f normal, osg::Vec3f normalModifier); ~PointShape(); void moveTo(osg::Vec3f position); void setNormalModifier(osg::Vec3f normalModifier); void rotateToNormalVector(osg::Vec3f normal); void setVisibility(bool mode); void setColor(osg::Vec4 color); void setupOptiTrack(OptiTrackSettings optiTrackSettings); void setupSteamVRTrack(SteamVRTrackSettings steamVrTrackSettings); void setupActionPoints(); osg::ref_ptr getMesh(); private: osg::ref_ptr _selectionSwitch; osg::ref_ptr _selectionTranslateGroup; osg::ref_ptr _selectionRotateGroup; osg::ref_ptr _selectionMoveToEndGroup; osg::ref_ptr _screwMove; osg::ref_ptr _renderRoot; osg::ref_ptr _shape; osg::ref_ptr _geode; osg::Vec3f _normalModifier; double _optiTrackSteamVRLength; ActiveTrackingSystem _activeTrackingSystem; };