TrackPointRenderer.cpp 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // Include own header
  2. #include "TrackPointRenderer.hpp"
  3. // Include modules
  4. #include "OptiTrackPoint.hpp"
  5. #include "MainWindow.hpp"
  6. // Include dependencies
  7. TrackPointRenderer::TrackPointRenderer(OSGWidget* osgWidget, osg::ref_ptr<osg::Group> renderRoot) {
  8. _osgWidget = osgWidget;
  9. _renderRoot = renderRoot;
  10. }
  11. TrackPointRenderer::~TrackPointRenderer() {
  12. }
  13. void TrackPointRenderer::render(ActiveTrackingSystem activeTrackingSystem) {
  14. for (PointShape* shape: _shapes) {
  15. delete shape;
  16. }
  17. _shapes.clear();
  18. switch(activeTrackingSystem) {
  19. case OptiTrack: {
  20. std::vector<OptiTrackPoint*> points = MainWindow::getInstance()->getStore()->getOptiTrackPoints();
  21. int id = 0;
  22. for (OptiTrackPoint* point: points) {
  23. PointShape* newShape = new PointShape(_renderRoot, activeTrackingSystem, point->getTranslation(), point->getNormal(), point->getNormalModifier());
  24. newShape->setupOptiTrack(point->getOptiTrackSettings());
  25. if (id == MainWindow::getInstance()->getEditWiget()->getSelectedPoint()) {
  26. newShape->setColor(osg::Vec4(0.0f, 0.0f, 1.0f, 0.2f));
  27. } else {
  28. newShape->setColor(osg::Vec4(0.0f, 1.0f, 0.0f, 0.2f));
  29. }
  30. newShape->rotateToNormalVector(point->getNormal());
  31. _shapes.push_back(newShape);
  32. id++;
  33. }
  34. break;
  35. }
  36. case EMFTrack: {
  37. break;
  38. }
  39. case SteamVRTrack: {
  40. std::vector<SteamVRTrackPoint*> points = MainWindow::getInstance()->getStore()->getSteamVRTrackPoints();
  41. int id = 0;
  42. for (SteamVRTrackPoint* point: points) {
  43. PointShape* newShape = new PointShape(_renderRoot, activeTrackingSystem, point->getTranslation(), point->getNormal(), point->getNormalModifier());
  44. newShape->setupSteamVRTrack(point->getSteamVRTrackSettings());
  45. if (id == MainWindow::getInstance()->getEditWiget()->getSelectedPoint()) {
  46. newShape->setColor(osg::Vec4(0.0f, 0.0f, 1.0f, 0.2f));
  47. } else {
  48. newShape->setColor(osg::Vec4(0.0f, 1.0f, 0.0f, 0.2f));
  49. }
  50. newShape->rotateToNormalVector(point->getNormal());
  51. _shapes.push_back(newShape);
  52. id++;
  53. }
  54. break;
  55. }
  56. case ActionPoints: {
  57. std::vector<ActionPoint*> points = MainWindow::getInstance()->getStore()->getActionPoints();
  58. int id = 0;
  59. for (ActionPoint* point: points) {
  60. PointShape* newShape = new PointShape(_renderRoot, activeTrackingSystem, point->getTranslation(), point->getNormal(), point->getNormalModifier());
  61. newShape->setupActionPoints();
  62. if (id == MainWindow::getInstance()->getEditWiget()->getSelectedPoint()) {
  63. newShape->setColor(osg::Vec4(0.0f, 0.0f, 1.0f, 0.2f));
  64. } else {
  65. newShape->setColor(osg::Vec4(0.0f, 1.0f, 0.0f, 0.2f));
  66. }
  67. newShape->rotateToNormalVector(point->getNormal());
  68. _shapes.push_back(newShape);
  69. id++;
  70. }
  71. break;
  72. }
  73. }
  74. _osgWidget->update();
  75. }
  76. std::vector<PointShape*> TrackPointRenderer::getShapes() {
  77. return _shapes;
  78. }