]> Creatis software - creaVtk.git/blobdiff - lib/creaVtk/MeshManagerModel.cpp
#3517 Adjustments Undo - Redo for deformation
[creaVtk.git] / lib / creaVtk / MeshManagerModel.cpp
index 1f0ce15a3f5a61a7209e86574d9a5428a08b80ff..84713441479ad9dbe9fcfade3da2982d05596f8d 100644 (file)
@@ -330,6 +330,7 @@ MeshManagerModel::MeshManagerModel()
        lastModified = 0;
        memoryMode = false;
        referencePoint = {0, 0, 0};
+       referenceNormal = {0, 0, 1};
 }
 
 MeshManagerModel::~MeshManagerModel()
@@ -367,6 +368,16 @@ std::vector<double> MeshManagerModel::GetReferencePoint()
        return referencePoint;
 }
 
+void MeshManagerModel::SetReferenceNormal(std::vector<double> normal)
+{
+       referenceNormal = normal;
+}
+
+std::vector<double> MeshManagerModel::GetReferenceNormal()
+{
+       return referenceNormal;
+}
+
 int MeshManagerModel::GetNumberOfMeshes()
 {
        return _meshes.size();
@@ -701,7 +712,7 @@ void MeshManagerModel::Undo()
        if(history->UndoSize() > 0)
        {
                if(memoryMode == false){
-                       RestoreState(history->Undo(new ManagerState(_meshes, meshId, lastModified, referencePoint)));
+                       RestoreState(history->Undo(new ManagerState(_meshes, meshId, lastModified)));
                        RefreshOutputs(true);
                }
                else if(history->UndoSize() > 1){
@@ -715,7 +726,7 @@ void MeshManagerModel::Redo()
        if(history->RedoSize() > 0)
        {
                if(memoryMode == false){
-                       RestoreState(history->Redo(new ManagerState(_meshes, meshId, lastModified, referencePoint)));
+                       RestoreState(history->Redo(new ManagerState(_meshes, meshId, lastModified)));
                        RefreshOutputs(true);
                }
                else{
@@ -726,7 +737,7 @@ void MeshManagerModel::Redo()
 
 void MeshManagerModel::Save()
 {
-       history->Save(new ManagerState(_meshes, meshId, currentMesh, referencePoint));
+       history->Save(new ManagerState(_meshes, meshId, currentMesh));
 }
 
 void MeshManagerModel::SaveMemoryMode()
@@ -735,7 +746,7 @@ void MeshManagerModel::SaveMemoryMode()
        {
                std::vector<std::shared_ptr<MeshModel>> savedMesh;
                savedMesh.push_back(std::make_shared<MeshModel>(_meshes.at(0).get()));
-               history->Save(new ManagerState(savedMesh, meshId, 0, referencePoint));
+               history->Save(new ManagerState(savedMesh, meshId, 0, referencePoint, referenceNormal));
        }
        else{
                printf("PG MeshManagerModel::SaveMemoryMode WARNING Mesh vector has invalid size or memoryMode is not set \n");
@@ -766,6 +777,7 @@ void MeshManagerModel::RestoreStateMemoryMode(ManagerState* state){
                _meshes.at(0)->GetMeshBase()->GetPoints()->Modified();
         _meshes.at(0)->GetMeshBase()->Modified();
         referencePoint = state->GetReferencePoint();
+        referenceNormal = state->referenceNormal;
        }else{
                printf("PG MeshManagerModel::RestoreStateMemoryMode WARNING Mesh vector has invalid size or state is NULL\n");
        }
@@ -774,12 +786,20 @@ void MeshManagerModel::RestoreStateMemoryMode(ManagerState* state){
 //
 //Manager State
 //
-MeshManagerModel::ManagerState::ManagerState(std::vector<std::shared_ptr<MeshModel>> meshesToSave, int meshId, int modifiedPos, std::vector<double> refPoint)
+MeshManagerModel::ManagerState::ManagerState(std::vector<std::shared_ptr<MeshModel>> meshesToSave, int meshId, int modifiedPos)
+{
+       savedMeshes = meshesToSave;
+       savedId = meshId;
+       savedModifiedPos = modifiedPos;
+}
+
+MeshManagerModel::ManagerState::ManagerState(std::vector<std::shared_ptr<MeshModel>> meshesToSave, int meshId, int modifiedPos, std::vector<double> refPoint, std::vector<double> refNormal)
 {
        savedMeshes = meshesToSave;
        savedId = meshId;
        savedModifiedPos = modifiedPos;
        referencePoint = refPoint;
+       referenceNormal = refNormal;
 }
 
 MeshManagerModel::ManagerState::~ManagerState()