TrackPointRenderer.cpp 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. clear();
  15. switch(activeTrackingSystem) {
  16. case OptiTrack: {
  17. std::vector<OptiTrackPoint*> points = MainWindow::getInstance()->getStore()->getOptiTrackPoints();
  18. int id = 0;
  19. for (OptiTrackPoint* point: points) {
  20. PointShape* newShape = new PointShape(_renderRoot, activeTrackingSystem, point->getTranslation(), point->getNormal(), point->getNormalModifier());
  21. newShape->setupOptiTrack(point->getOptiTrackSettings());
  22. if (id == MainWindow::getInstance()->getEditWiget()->getSelectedPoint()) {
  23. newShape->setColor(osg::Vec4(0.0f, 0.0f, 1.0f, 0.2f));
  24. } else {
  25. newShape->setColor(osg::Vec4(0.0f, 1.0f, 0.0f, 0.2f));
  26. }
  27. newShape->rotateToNormalVector(point->getNormal());
  28. _shapes.push_back(newShape);
  29. id++;
  30. }
  31. break;
  32. }
  33. case EMFTrack: {
  34. break;
  35. }
  36. case SteamVRTrack: {
  37. std::vector<SteamVRTrackPoint*> points = MainWindow::getInstance()->getStore()->getSteamVRTrackPoints();
  38. int id = 0;
  39. for (SteamVRTrackPoint* point: points) {
  40. PointShape* newShape = new PointShape(_renderRoot, activeTrackingSystem, point->getTranslation(), point->getNormal(), point->getNormalModifier());
  41. newShape->setupSteamVRTrack(point->getSteamVRTrackSettings());
  42. if (id == MainWindow::getInstance()->getEditWiget()->getSelectedPoint()) {
  43. newShape->setColor(osg::Vec4(0.0f, 0.0f, 1.0f, 0.2f));
  44. } else {
  45. newShape->setColor(osg::Vec4(0.0f, 1.0f, 0.0f, 0.2f));
  46. }
  47. newShape->rotateToNormalVector(point->getNormal());
  48. _shapes.push_back(newShape);
  49. id++;
  50. }
  51. break;
  52. }
  53. case ActionPoints: {
  54. std::vector<ActionPoint*> points = MainWindow::getInstance()->getStore()->getActionPoints();
  55. int id = 0;
  56. for (ActionPoint* point: points) {
  57. PointShape* newShape = new PointShape(_renderRoot, activeTrackingSystem, point->getTranslation(), point->getNormal(), point->getNormalModifier());
  58. newShape->setupActionPoints();
  59. if (id == MainWindow::getInstance()->getEditWiget()->getSelectedPoint()) {
  60. newShape->setColor(osg::Vec4(0.0f, 0.0f, 1.0f, 0.2f));
  61. } else {
  62. newShape->setColor(osg::Vec4(0.0f, 1.0f, 0.0f, 0.2f));
  63. }
  64. newShape->rotateToNormalVector(point->getNormal());
  65. _shapes.push_back(newShape);
  66. id++;
  67. }
  68. break;
  69. }
  70. }
  71. _osgWidget->update();
  72. }
  73. std::vector<PointShape*> TrackPointRenderer::getShapes() {
  74. return _shapes;
  75. }
  76. void TrackPointRenderer::clear() {
  77. for (PointShape* shape: _shapes) {
  78. delete shape;
  79. }
  80. _shapes.clear();
  81. }