ProjectStore.hpp 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #pragma once
  2. // Include modules
  3. #include "lib3mf_implicit.hpp"
  4. #include "OptiTrackPoint.hpp"
  5. #include "TrackSystemSettingsStructs.hpp"
  6. #include "OpenScadRenderer.hpp"
  7. #include "enums.hpp"
  8. // Include dependencies
  9. #include <string>
  10. #include <nlohmann/json.hpp>
  11. using json = nlohmann::json;
  12. class ProjectStore {
  13. public:
  14. // Create an empty project
  15. ProjectStore();
  16. // Destructor
  17. ~ProjectStore();
  18. // Load a mesh
  19. void loadMesh(std::string meshFile);
  20. // Load a project
  21. bool loadProject(std::string projectFile);
  22. // Save the project to the loaded file
  23. bool saveProject();
  24. // Save the project to a new file
  25. bool saveProject(std::string projectFile);
  26. // Export the project
  27. bool exportProject(std::string path, ExportSettings settings);
  28. // UNIVERSAL
  29. // Get trackpoint
  30. TrackPoint* getTrackPointById(int id, ActiveTrackingSystem activeTrackingSystem);
  31. // Count trackpoints
  32. int getCount(ActiveTrackingSystem activeTrackingSystem);
  33. // Remove trackpoint
  34. void removeTrackPoint(int id, ActiveTrackingSystem activeTrackingSystem);
  35. // NORMAL MODIFIER
  36. // Update normal modifier
  37. void updateNormalModifier(osg::Vec3 modifier);
  38. // Return normal modifier
  39. osg::Vec3 getNormalModifier();
  40. // OPTITRACK
  41. // Get all OptiTrack points
  42. std::vector<OptiTrackPoint*> getOptiTrackPoints();
  43. // Add an OptiTrack point
  44. void addOptiTrackPoint(osg::Vec3 point, osg::Vec3 normal);
  45. // Update actual OptiTrack settings
  46. void updateOptiTrackSettings(OptiTrackSettings optiTrackSettings);
  47. // Return OptiTrack settings
  48. OptiTrackSettings getOptiTrackSettings();
  49. private:
  50. bool _projectLoaded;
  51. bool _projectModified;
  52. Lib3MF::PWrapper _wrapper;
  53. Lib3MF::PModel _project;
  54. std::string _projectFile;
  55. std::vector<OptiTrackPoint*> _optiTrackPoints;
  56. OptiTrackSettings _optiTrackSettings = OptiTrackSettings {OPTITRACK_DEFAULT_LENGTH, OPTITRACK_DEFAULT_RADIUS};
  57. EMFTrackSettings _emfTrackSettings;
  58. SteamVRTrackSettings _steamVrTrackSettings;
  59. osg::Vec3 _normalModifier = osg::Vec3(0.0f, 0.0f, 0.0f);
  60. void load3mfLib();
  61. void render3MFMesh();
  62. void updateMetaData();
  63. void loadMetaData();
  64. std::vector<float> osgVecToStdVec(osg::Vec3f input);
  65. osg::Vec3f stdVecToOsgVec(std::vector<float> input);
  66. };