diff --git a/SCHNApps/Plugins/surface_deformation/src/surface_deformation.cpp b/SCHNApps/Plugins/surface_deformation/src/surface_deformation.cpp index e05f3a8201b96c0014eead66f8d39b2f75d537af..b72a7e77557bce2c0f88a4e5faad3cde12f681d0 100644 --- a/SCHNApps/Plugins/surface_deformation/src/surface_deformation.cpp +++ b/SCHNApps/Plugins/surface_deformation/src/surface_deformation.cpp @@ -136,34 +136,41 @@ void Surface_Deformation_Plugin::keyPress(View* view, QKeyEvent* event) { case Qt::Key_D : { MapHandlerGen* mh = m_schnapps->getSelectedMap(); - const MapParameters& p = h_parameterSet[mh]; - if(!m_dragging) + if(mh) { - if(p.handleSelector && !p.handleSelector->getSelectedCells().empty()) + const MapParameters& p = h_parameterSet[mh]; + if(!m_dragging) { - m_dragging = true; + if(p.handleSelector && !p.handleSelector->getSelectedCells().empty()) + { + m_dragging = true; + m_draginit = false; + view->setMouseTracking(true); + } + } + else + { + m_dragging = false; m_draginit = false; - view->setMouseTracking(true); + view->setMouseTracking(false); } } - else - { - m_dragging = false; - m_draginit = false; - view->setMouseTracking(false); - } break; } + case Qt::Key_R : { -// ParameterSet* params = h_viewParams[view]; -// MapHandlerGen* map = params->selectedMap; -// if(map) -// { -// asRigidAsPossible(view, map); -// PerMapParameterSet* perMap = params->perMap[map->getName()]; -// params->selectedMap->notifyAttributeModification(perMap->positionAttribute); -// view->updateGL(); -// } + MapHandlerGen* mh = m_schnapps->getSelectedMap(); + if(mh) + { + const MapParameters& p = h_parameterSet[mh]; + if(p.initialized) + { + asRigidAsPossible(mh); + mh->notifyAttributeModification(p.positionAttribute); + static_cast*>(mh)->updateBB(p.positionAttribute); + view->updateGL(); + } + } break; } } @@ -208,10 +215,11 @@ void Surface_Deformation_Plugin::mouseMove(View* view, QMouseEvent* event) // matchDiffCoord(map); if(p.initialized) + { asRigidAsPossible(mh); - - mh->notifyAttributeModification(p.positionAttribute); - static_cast*>(mh)->updateBB(p.positionAttribute); + mh->notifyAttributeModification(p.positionAttribute); + static_cast*>(mh)->updateBB(p.positionAttribute); + } } view->updateGL(); diff --git a/SCHNApps/include/mapHandler.h b/SCHNApps/include/mapHandler.h index ca666ade0f76c4a4e354dba99084c916295775f3..0fa158462a7d5bd5cc242dff5ea494ad4d05aa6b 100644 --- a/SCHNApps/include/mapHandler.h +++ b/SCHNApps/include/mapHandler.h @@ -111,9 +111,12 @@ public: void notifyConnectivityModification() { - m_render->setPrimitiveDirty(Algo::Render::GL2::POINTS); - m_render->setPrimitiveDirty(Algo::Render::GL2::LINES); - m_render->setPrimitiveDirty(Algo::Render::GL2::TRIANGLES); + if (m_render) + { + m_render->setPrimitiveDirty(Algo::Render::GL2::POINTS); + m_render->setPrimitiveDirty(Algo::Render::GL2::LINES); + m_render->setPrimitiveDirty(Algo::Render::GL2::TRIANGLES); + } emit(connectivityModified()); diff --git a/include/Algo/Import/import2tables.h b/include/Algo/Import/import2tables.h index 331963864a0c35c6150447eb4a129d2405b9844c..39446d0e80a0727c3d6616b1d7d8813059ac3326 100644 --- a/include/Algo/Import/import2tables.h +++ b/include/Algo/Import/import2tables.h @@ -113,6 +113,8 @@ public: bool importPlySLFgeneric(const std::string& filename, std::vector& attrNames); bool importPlySLFgenericBin(const std::string& filename, std::vector& attrNames); + bool importFromVoxelGrid(const VoxelGrid& grid); + #ifdef WITH_ASSIMP bool importASSIMP(const std::string& filename, std::vector& attrNames); #endif