ProjectStore.hpp 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #pragma once
  2. // Include modules
  3. #include "lib3mf_implicit.hpp"
  4. #include "OptiTrackPoint.hpp"
  5. // Include dependencies
  6. #include <string>
  7. typedef struct {
  8. bool OptiTrack;
  9. bool EMFTrack;
  10. bool SteamVRTrack;
  11. } ExportSettings;
  12. typedef struct {
  13. double length;
  14. double radius;
  15. } OptiTrackSettings;
  16. typedef struct {
  17. double width;
  18. double height;
  19. double depth;
  20. } EMFTrackSettings;
  21. typedef struct {
  22. double length;
  23. } SteamVRTrackSettings;
  24. class ProjectStore {
  25. public:
  26. // Create an empty project
  27. ProjectStore();
  28. // Destructor
  29. ~ProjectStore();
  30. // Load a mesh
  31. void loadMesh(std::string meshFile);
  32. // Load a project
  33. bool loadProject(std::string projectFile);
  34. // Save the project to the loaded file
  35. bool saveProject();
  36. // Save the project to a new file
  37. bool saveProject(std::string projectFile);
  38. // Export the project
  39. bool exportProject(std::string path, ExportSettings settings);
  40. // NORMAL MODIFIER
  41. // Update normal modifier
  42. void updateNormalModifier(osg::Vec3 modifier);
  43. // Return normal modifier
  44. osg::Vec3 getNormalModifier();
  45. // OPTITRACK
  46. // Get all OptiTrack points
  47. std::vector<OptiTrackPoint*> getOptiTrackPoints();
  48. // Add an OptiTrack point
  49. void addOptiTrackPoint(osg::Vec3 point, osg::Vec3 normal);
  50. // Remove an OptiTrack point
  51. void removeOptiTrackPoint();
  52. // Update actual OptiTrack settings
  53. void updateOptiTrackSettings(OptiTrackSettings optiTrackSettings);
  54. // Return OptiTrack settings
  55. OptiTrackSettings getOptiTrackSettings();
  56. private:
  57. bool projectLoaded;
  58. Lib3MF::PWrapper _wrapper;
  59. Lib3MF::PModel _project;
  60. std::string _projectFile;
  61. std::vector<OptiTrackPoint*> _optiTrackPoints;
  62. OptiTrackSettings _optiTrackSettings = OptiTrackSettings {OPTITRACK_DEFAULT_LENGTH, OPTITRACK_DEFAULT_RADIUS};
  63. EMFTrackSettings _emfTrackSettings;
  64. SteamVRTrackSettings _steamVrTrackSettings;
  65. osg::Vec3 _normalModifier = osg::Vec3(0.0f, 0.0f, 0.0f);
  66. void load3mfLib();
  67. void render3MFMesh(const std::vector<Lib3MF::sPosition> verticesBuffer, const std::vector<Lib3MF::sTriangle> triangleBuffer);
  68. void exportMetaData();
  69. };