TrackPointRenderer.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. break;
  41. }
  42. case ActionPoints: {
  43. break;
  44. }
  45. }
  46. _osgWidget->update();
  47. }
  48. std::vector<PointShape*> TrackPointRenderer::getShapes() {
  49. return _shapes;
  50. }