#pragma once // Include modules #include "TrackSystemSettingsStructs.hpp" #include "enums.hpp" // Include dependencies #include #include #include #include #include #include #include "lib3mf_implicit.hpp" class PointShape { public: static void loadSteamvrThread(); PointShape(const osg::ref_ptr renderRoot, const ActiveTrackingSystem activeTrackingSystem, osg::Vec3f point, osg::Vec3f normal, osg::Vec3f normalModifier, float normalRotation); ~PointShape(); void moveTo(osg::Vec3f position); void setNormalModifier(osg::Vec3f normalModifier); void rotateToNormalVector(osg::Vec3f normal, float normalRotation); void setVisibility(bool mode); void setColor(osg::Vec4 color); void setupOptiTrack(OptiTrackSettings optiTrackSettings); void setupEMFTrack(EMFTrackSettings emfTrackSettings); void setupSteamVRTrack(SteamVRTrackSettings steamVrTrackSettings); void setupActionPoints(); osg::ref_ptr getMesh(); private: osg::Matrix emfYFix(osg::Vec3 normal); 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 _optiConnector; osg::ref_ptr _thread; osg::ref_ptr _geode; osg::Vec3f _normalModifier; double _optiTrackSteamVRLength; ActiveTrackingSystem _activeTrackingSystem; };