Browse Source

Add storage for SteamVRTrackPoints, ActionPoints

Johannes Kreutz 2 years ago
parent
commit
aace5d0692

+ 1 - 0
trackpoint-app/CMakeLists.txt

@@ -67,6 +67,7 @@ QT_ADD_EXECUTABLE(TrackpointApp
   src/PickHandler.cpp
   src/TrackPoint.cpp
   src/OptiTrackPoint.cpp
+  src/SteamVRTrackPoint.cpp
   src/OpenScadRenderer.cpp
   src/StringBasics.cpp
   src/TrackPointRenderer.cpp

+ 16 - 3
trackpoint-app/include/ProjectStore.hpp

@@ -3,6 +3,7 @@
 // Include modules
 #include "lib3mf_implicit.hpp"
 #include "OptiTrackPoint.hpp"
+#include "SteamVRTrackPoint.hpp"
 #include "TrackSystemSettingsStructs.hpp"
 #include "OpenScadRenderer.hpp"
 #include "enums.hpp"
@@ -32,6 +33,8 @@ public:
   // UNIVERSAL
   // Get trackpoint
   TrackPoint* getTrackPointById(int id, ActiveTrackingSystem activeTrackingSystem);
+  // Add trackpoint
+  void addTrackPoint(osg::Vec3 point, osg::Vec3 normal, ActiveTrackingSystem activeTrackingSystem);
   // Count trackpoints
   int getCount(ActiveTrackingSystem activeTrackingSystem);
   // Remove trackpoint
@@ -44,12 +47,20 @@ public:
   // OPTITRACK
   // Get all OptiTrack points
   std::vector<OptiTrackPoint*> getOptiTrackPoints();
-  // Add an OptiTrack point
-  void addOptiTrackPoint(osg::Vec3 point, osg::Vec3 normal);
   // Update actual OptiTrack settings
   void updateOptiTrackSettings(OptiTrackSettings optiTrackSettings);
   // Return OptiTrack settings
   OptiTrackSettings getOptiTrackSettings();
+  // STEAM VR TRACK
+  // Get all SteamVRTrack points
+  std::vector<SteamVRTrackPoint*> getSteamVRTrackPoints();
+  // Update actual SteamVRTrack settings
+  void updateSteamVRTrackSettings(SteamVRTrackSettings steamVrTrackSettings);
+  // Return SteamVRTrack settings
+  SteamVRTrackSettings getSteamVRTrackSettings();
+  // ACTION POINTS
+  // Get all Action points
+  std::vector<TrackPoint*> getActionPoints();
 
 private:
   bool _projectLoaded;
@@ -58,9 +69,11 @@ private:
   Lib3MF::PModel _project;
   std::string _projectFile;
   std::vector<OptiTrackPoint*> _optiTrackPoints;
+  std::vector<SteamVRTrackPoint*> _steamVrTrackPoints;
+  std::vector<TrackPoint*> _actionPoints;
   OptiTrackSettings _optiTrackSettings = OptiTrackSettings {OPTITRACK_DEFAULT_LENGTH, OPTITRACK_DEFAULT_RADIUS};
   EMFTrackSettings _emfTrackSettings;
-  SteamVRTrackSettings _steamVrTrackSettings;
+  SteamVRTrackSettings _steamVrTrackSettings = SteamVRTrackSettings {STEAMVR_DEFAULT_LENGTH};
   osg::Vec3 _normalModifier = osg::Vec3(0.0f, 0.0f, 0.0f);
   void load3mfLib();
   void render3MFMesh();

+ 17 - 0
trackpoint-app/include/SteamVRTrackPoint.hpp

@@ -0,0 +1,17 @@
+#pragma once
+
+// Include modules
+#include "defaults.hpp"
+#include "TrackPoint.hpp"
+#include "TrackSystemSettingsStructs.hpp"
+
+class SteamVRTrackPoint: public TrackPoint {
+public:
+  SteamVRTrackPoint(const osg::Vec3 point, const osg::Vec3 normal, const osg::Vec3 normalModifier, const double length = STEAMVR_DEFAULT_LENGTH);
+  double getLength();
+  SteamVRTrackSettings getSteamVRTrackSettings();
+  void updateSteamVRTrackSettings(SteamVRTrackSettings settings);
+
+private:
+  double _length;
+};

+ 2 - 0
trackpoint-app/include/defaults.hpp

@@ -2,3 +2,5 @@
 
 #define OPTITRACK_DEFAULT_LENGTH 10.0
 #define OPTITRACK_DEFAULT_RADIUS 1.0
+
+#define STEAMVR_DEFAULT_LENGTH 10.0

+ 2 - 15
trackpoint-app/src/PickHandler.cpp

@@ -211,21 +211,8 @@ void PickHandler::setVisibility(bool mode) {
 }
 
 void PickHandler::addPoint(osg::Vec3 point, osg::Vec3 normal) {
-  switch(MainWindow::getInstance()->getEditWiget()->getSelectedTrackingSystem()) {
-    case OptiTrack: {
-      MainWindow::getInstance()->getStore()->addOptiTrackPoint(point, normal);
-      break;
-    }
-    case EMFTrack: {
-      break;
-    }
-    case SteamVRTrack: {
-      break;
-    }
-    case ActionPoints: {
-      break;
-    }
-  }
+  ActiveTrackingSystem activeTrackingSystem = MainWindow::getInstance()->getEditWiget()->getSelectedTrackingSystem();
+  MainWindow::getInstance()->getStore()->addTrackPoint(point, normal, activeTrackingSystem);
   _osgWidget->getPointRenderer()->render(MainWindow::getInstance()->getEditWiget()->getSelectedTrackingSystem());
 }
 

+ 39 - 6
trackpoint-app/src/ProjectStore.cpp

@@ -133,6 +133,29 @@ TrackPoint* ProjectStore::getTrackPointById(int id, ActiveTrackingSystem activeT
   }
 }
 
+void ProjectStore::addTrackPoint(osg::Vec3 point, osg::Vec3 normal, ActiveTrackingSystem activeTrackingSystem) {
+  switch(activeTrackingSystem) {
+    case OptiTrack: {
+      OptiTrackPoint* optiTrackPoint = new OptiTrackPoint(point, normal, _normalModifier, _optiTrackSettings.length, _optiTrackSettings.radius);
+      _optiTrackPoints.push_back(optiTrackPoint);
+      MainWindow::getInstance()->getEditWiget()->updateTrackpointCount();
+      break;
+    }
+    case EMFTrack: {
+      break;
+    }
+    case SteamVRTrack: {
+      SteamVRTrackPoint* steamVrTrackPoint = new SteamVRTrackPoint(point, normal, _normalModifier, _steamVrTrackSettings.length);
+      _steamVrTrackPoints.push_back(steamVrTrackPoint);
+      MainWindow::getInstance()->getEditWiget()->updateTrackpointCount();
+      break;
+    }
+    case ActionPoints: {
+      break;
+    }
+  }
+}
+
 int ProjectStore::getCount(ActiveTrackingSystem activeTrackingSystem) {
   switch(activeTrackingSystem) {
     case OptiTrack: {
@@ -181,12 +204,6 @@ std::vector<OptiTrackPoint*> ProjectStore::getOptiTrackPoints() {
   return _optiTrackPoints;
 }
 
-void ProjectStore::addOptiTrackPoint(osg::Vec3 point, osg::Vec3 normal) {
-  OptiTrackPoint* optiTrackPoint = new OptiTrackPoint(point, normal, _normalModifier, _optiTrackSettings.length, _optiTrackSettings.radius);
-  _optiTrackPoints.push_back(optiTrackPoint);
-  MainWindow::getInstance()->getEditWiget()->updateTrackpointCount();
-}
-
 void ProjectStore::updateOptiTrackSettings(OptiTrackSettings optiTrackSettings) {
   _optiTrackSettings = optiTrackSettings;
 }
@@ -195,6 +212,22 @@ OptiTrackSettings ProjectStore::getOptiTrackSettings() {
   return _optiTrackSettings;
 }
 
+std::vector<SteamVRTrackPoint*> ProjectStore::getSteamVRTrackPoints() {
+  return _steamVrTrackPoints;
+}
+
+void ProjectStore::updateSteamVRTrackSettings(SteamVRTrackSettings steamVrTrackSettings) {
+  _steamVrTrackSettings = steamVrTrackSettings;
+}
+
+SteamVRTrackSettings ProjectStore::getSteamVRTrackSettings() {
+  return _steamVrTrackSettings;
+}
+
+std::vector<TrackPoint*> ProjectStore::getActionPoints() {
+  return _actionPoints;
+}
+
 void ProjectStore::load3mfLib() {
   _wrapper = Lib3MF::CWrapper::loadLibrary();
   _project = _wrapper->CreateModel();

+ 21 - 0
trackpoint-app/src/SteamVRTrackPoint.cpp

@@ -0,0 +1,21 @@
+// Include own headers
+#include "SteamVRTrackPoint.hpp"
+
+SteamVRTrackPoint::SteamVRTrackPoint(const osg::Vec3 point, const osg::Vec3 normal, const osg::Vec3 normalModifier, const double length): TrackPoint(point, normal, normalModifier) {
+  _length = length;
+
+  osg::Vec3 shift = normal.operator*(length);
+  _trackOrigin = shift.operator+(point);
+}
+
+double SteamVRTrackPoint::getLength() {
+  return _length;
+}
+
+SteamVRTrackSettings SteamVRTrackPoint::getSteamVRTrackSettings() {
+  return SteamVRTrackSettings {_length};
+}
+
+void SteamVRTrackPoint::updateSteamVRTrackSettings(SteamVRTrackSettings settings) {
+  _length = settings.length;
+}