Commit 44d02608 authored by untereiner's avatar untereiner
Browse files

plugin renderExplod v0.01

parent 3908de25
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
</widget> </widget>
</item> </item>
<item row="1" column="1" colspan="2"> <item row="1" column="1" colspan="2">
<widget class="QComboBox" name="combo_colorVBO"> <widget class="QComboBox" name="combo_colorAttribute">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch> <horstretch>0</horstretch>
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
</widget> </widget>
</item> </item>
<item row="0" column="2"> <item row="0" column="2">
<widget class="QComboBox" name="combo_positionVBO"> <widget class="QComboBox" name="combo_positionAttribute">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch> <horstretch>0</horstretch>
......
...@@ -12,25 +12,28 @@ namespace CGoGN ...@@ -12,25 +12,28 @@ namespace CGoGN
namespace SCHNApps namespace SCHNApps
{ {
enum FaceShadingStyle
{
FLAT = 0,
SMOOTH = 1
};
struct PerMapParameterSet struct PerMapParameterSet
{ {
PerMapParameterSet() : PerMapParameterSet(MapHandlerGen* mh);
positionVBO(NULL), ~PerMapParameterSet();
colorVBO(NULL),
facesScaleFactor(1.0f),
volumesScaleFactor(1.0f),
renderEdges(false),
renderFaces(true)
{}
PerMapParameterSet(MapHandlerGen* map); void updateRender();
Utils::VBO* positionVBO; Algo::Render::GL2::ExplodeVolumeRender* m_renderExplod;
Utils::VBO* colorVBO; MapHandlerGen* mh;
VertexAttribute<PFP3::VEC3> positionAttribute;
VolumeAttribute<PFP3::VEC3> colorAttribute;
float facesScaleFactor; float facesScaleFactor;
float volumesScaleFactor; float volumesScaleFactor;
bool renderEdges; bool renderEdges;
bool renderFaces; bool renderFaces;
FaceShadingStyle faceStyle;
}; };
struct ParameterSet struct ParameterSet
...@@ -38,7 +41,7 @@ struct ParameterSet ...@@ -38,7 +41,7 @@ struct ParameterSet
ParameterSet() : selectedMap(NULL) ParameterSet() : selectedMap(NULL)
{} {}
QHash<QString, PerMapParameterSet> perMap; QHash<QString, PerMapParameterSet*> perMap;
MapHandlerGen* selectedMap; MapHandlerGen* selectedMap;
}; };
...@@ -81,16 +84,20 @@ public slots: ...@@ -81,16 +84,20 @@ public slots:
void mapLinked(MapHandlerGen* m); void mapLinked(MapHandlerGen* m);
void mapUnlinked(MapHandlerGen* m); void mapUnlinked(MapHandlerGen* m);
void vboAdded(Utils::VBO* vbo); //void addAttributeToList(unsigned int orbit, const QString& nameAttr);
void vboRemoved(Utils::VBO* vbo);
void changeSelectedMap(View* view, MapHandlerGen* map, bool fromUI = false); void changeSelectedMap(View* view, MapHandlerGen* map, bool fromUI = false);
void changePositionVBO(View* view, MapHandlerGen* map, Utils::VBO* vbo, bool fromUI = false);
void changeColorVBO(View* view, MapHandlerGen* map, Utils::VBO* vbo, bool fromUI = false); void changePositionAttribute(View* view, MapHandlerGen* map, VertexAttribute<PFP3::VEC3> attribute, bool fromUI = false);
void changeColorAttribute(View* view, MapHandlerGen* map, VertexAttribute<PFP3::VEC3> attribute, bool fromUI = false);
void changeRenderEdges(View* view, MapHandlerGen* map, bool b, bool fromUI = false); void changeRenderEdges(View* view, MapHandlerGen* map, bool b, bool fromUI = false);
void changeRenderFaces(View* view, MapHandlerGen* map, bool b, bool fromUI = false); void changeRenderFaces(View* view, MapHandlerGen* map, bool b, bool fromUI = false);
void changeFacesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI = false); void changeFacesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI = false);
void changeVolumesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI = false); void changeVolumesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI = false);
void attributeModified(unsigned int orbit, QString nameAttr);
void connectivityModified();
}; };
} // namespace SCHNApps } // namespace SCHNApps
......
#ifndef _RENDEREXPLOD_DOCK_TAB_H_ #ifndef _RENDER_EXPLOD_DOCK_TAB_H_
#define _RENDEREXPLOD_DOCK_TAB_H_ #define _RENDER_EXPLOD_DOCK_TAB_H_
#include "ui_renderExplod.h" #include "ui_renderExplod.h"
...@@ -30,12 +30,14 @@ public slots: ...@@ -30,12 +30,14 @@ public slots:
void refreshUI(ParameterSet* params); void refreshUI(ParameterSet* params);
void selectedMapChanged(); void selectedMapChanged();
void positionVBOChanged(int index); void positionAttributeChanged(int index);
void colorVBOChanged(int index); void colorAttributeChanged(int index);
void renderEdgesChanged(bool b); void renderEdgesChanged(bool b);
void renderFacesChanged(bool b); void renderFacesChanged(bool b);
void facesScaleFactorChanged(int i); void facesScaleFactorChanged(int i);
void volumesScaleFactorChanged(int i); void volumesScaleFactorChanged(int i);
void addAttributeToList(unsigned int orbit, const QString& nameAttr);
}; };
} // namespace SCHNApps } // namespace SCHNApps
......
...@@ -8,72 +8,74 @@ namespace CGoGN ...@@ -8,72 +8,74 @@ namespace CGoGN
namespace SCHNApps namespace SCHNApps
{ {
PerMapParameterSet::PerMapParameterSet(MapHandlerGen* map) : PerMapParameterSet::PerMapParameterSet(MapHandlerGen* m) :
positionVBO(NULL), mh(m),
colorVBO(NULL),
facesScaleFactor(1.0f), facesScaleFactor(1.0f),
volumesScaleFactor(1.0f), volumesScaleFactor(1.0f),
renderEdges(false), renderEdges(false),
renderFaces(true) renderFaces(true),
faceStyle(FLAT)
{ {
bool positionFound = false;
bool colorFound = false;
QList<Utils::VBO*> vbos = map->getVBOList(); m_renderExplod = new Algo::Render::GL2::ExplodeVolumeRender(false, false, false);
for(int i = 0; i < vbos.count(); ++i)
m_renderExplod->setNoClippingPlane();
m_renderExplod->setExplodeVolumes(1.0f);
m_renderExplod->setExplodeFaces(1.0f);
QString positionName;
QString vec3TypeName = QString::fromStdString(nameOfType(PFP3::VEC3()));
const AttributeHash& attribs = mh->getAttributesList(VERTEX);
for(AttributeHash::const_iterator i = attribs.constBegin(); i != attribs.constEnd(); ++i)
{ {
if(vbos[i]->dataSize() == 3) if(i.value() == vec3TypeName)
{ {
if(!positionFound) positionVBO = vbos[i]; if(positionName != "position") // try to select an attribute named "position"
if(vbos[i]->name() == "position") // try to select a VBO named "position" positionName = i.key(); // or anything else if not found
{
positionVBO = vbos[i];
positionFound = true;
}
if(!colorFound) colorVBO = vbos[i];
if(vbos[i]->name() == "color") // try to select a VBO named "color"
{
colorVBO = vbos[i];
colorFound = true;
}
} }
} }
positionAttribute = mh->getAttribute<PFP3::VEC3, VERTEX>(positionName);
colorAttribute = mh->getAttribute<PFP3::VEC3, VOLUME>("color");
updateRender();
}
PerMapParameterSet::~PerMapParameterSet()
{
delete m_renderExplod;
} }
void PerMapParameterSet::updateRender()
{
MapHandler<PFP3>* mh3 = static_cast<MapHandler<PFP3>*>(mh);
if(mh3 == NULL)
return;
PFP3::MAP* m = mh3->getMap();
//if(!color.isValid())
m_renderExplod->updateData<PFP3>(*m,positionAttribute);
}
bool RenderExplodPlugin::enable() bool RenderExplodPlugin::enable()
{ {
m_dockTab = new RenderExplodDockTab(m_window, this); m_dockTab = new RenderExplodDockTab(m_window, this);
addTabInDock(m_dockTab, "RenderExplod"); addTabInDock(m_dockTab, "RenderExplod");
// m_renderExplod = new Algo::Render::GL2::ExplodeVolumeRender(true);
//
// m_renderExplod->setNoClippingPlane();
// m_renderExplod->setExplodeVolumes(0.9f);
// m_renderExplod->setExplodeFaces(1.0f);
//
// //m_renderExplod->setAmbiant(Geom::Vec4f(0.1f,0.1f,0.1f,0.0f));
// //m_renderExplod->setBackColor(Geom::Vec4f(0.1f,1.0f,0.1f,0.0f));
// //m_renderExplod->setColorLine(Geom::Vec4f(0.1f,0.1f,0.1f,0.0f));
// //m_renderExplod->setAmbiant(Geom::Vec4f(0.9f, 0.5f, 0.0f, 0.0f));
// m_renderExplod->setBackColor(Geom::Vec4f(0.9f, 0.5f, 0.0f, 0.0f));
// //m_renderExplod->setColorLine(Geom::Vec4f(0.9f, 0.5f, 0.0f, 0.0f));
// m_renderExplod->setColorLine(Geom::Vec4f(0.0f, 0.0f, 0.0f, 0.0f));
//
// registerShader(m_renderExplod->shaderFaces());
// registerShader(m_renderExplod->shaderLines());
connect(m_window, SIGNAL(viewAndPluginLinked(View*, Plugin*)), this, SLOT(viewLinked(View*, Plugin*))); connect(m_window, SIGNAL(viewAndPluginLinked(View*, Plugin*)), this, SLOT(viewLinked(View*, Plugin*)));
connect(m_window, SIGNAL(viewAndPluginUnlinked(View*, Plugin*)), this, SLOT(viewUnlinked(View*, Plugin*))); connect(m_window, SIGNAL(viewAndPluginUnlinked(View*, Plugin*)), this, SLOT(viewUnlinked(View*, Plugin*)));
connect(m_window, SIGNAL(currentViewChanged(View*)), this, SLOT(currentViewChanged(View*))); connect(m_window, SIGNAL(currentViewChanged(View*)), this, SLOT(currentViewChanged(View*)));
return true; return true;
} }
void RenderExplodPlugin::disable() void RenderExplodPlugin::disable()
{ {
//delete m_renderExplod;
} }
void RenderExplodPlugin::redraw(View* view) void RenderExplodPlugin::redraw(View* view)
...@@ -83,22 +85,23 @@ void RenderExplodPlugin::redraw(View* view) ...@@ -83,22 +85,23 @@ void RenderExplodPlugin::redraw(View* view)
const QList<MapHandlerGen*>& maps = view->getLinkedMaps(); const QList<MapHandlerGen*>& maps = view->getLinkedMaps();
foreach(MapHandlerGen* m, maps) foreach(MapHandlerGen* m, maps)
{ {
const PerMapParameterSet& p = params->perMap[m->getName()]; PerMapParameterSet* p = params->perMap[m->getName()];
if(p.positionVBO != NULL)
p->m_renderExplod->setExplodeFaces(p->facesScaleFactor);
p->m_renderExplod->setExplodeVolumes(p->volumesScaleFactor);
if(p->renderEdges)
{ {
if(p.renderEdges) p->m_renderExplod->drawEdges();
{ }
// m_renderExplod->drawEdges(); if(p->renderFaces)
} {
if(p.renderFaces) glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
{ glEnable(GL_LIGHTING);
// glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glEnable(GL_POLYGON_OFFSET_FILL);
// glEnable(GL_LIGHTING); glPolygonOffset(1.0f, 1.0f) ;
// glEnable(GL_POLYGON_OFFSET_FILL); p->m_renderExplod->drawFaces();
// glPolygonOffset(1.0f, 1.0f) ; glDisable(GL_POLYGON_OFFSET_FILL);
// m_renderExplod->drawFaces();
// glDisable(GL_POLYGON_OFFSET_FILL);
}
} }
} }
} }
...@@ -110,10 +113,12 @@ void RenderExplodPlugin::viewLinked(View* view, Plugin* plugin) ...@@ -110,10 +113,12 @@ void RenderExplodPlugin::viewLinked(View* view, Plugin* plugin)
ParameterSet* params = new ParameterSet(); ParameterSet* params = new ParameterSet();
h_viewParams.insert(view, params); h_viewParams.insert(view, params);
const QList<MapHandlerGen*>& maps = view->getLinkedMaps(); const QList<MapHandlerGen*>& maps = view->getLinkedMaps();
foreach(MapHandlerGen* map, maps) foreach(MapHandlerGen* mh, maps)
{ {
PerMapParameterSet p(map); PerMapParameterSet* p = new PerMapParameterSet(mh);
params->perMap.insert(map->getName(), p); registerShader(p->m_renderExplod->shaderFaces());
registerShader(p->m_renderExplod->shaderLines());
params->perMap.insert(mh->getName(), p);
} }
if (!maps.empty()) if (!maps.empty())
changeSelectedMap(view, maps[0]); changeSelectedMap(view, maps[0]);
...@@ -140,7 +145,11 @@ void RenderExplodPlugin::viewUnlinked(View* view, Plugin* plugin) ...@@ -140,7 +145,11 @@ void RenderExplodPlugin::viewUnlinked(View* view, Plugin* plugin)
void RenderExplodPlugin::currentViewChanged(View* view) void RenderExplodPlugin::currentViewChanged(View* view)
{ {
if(isLinkedToView(view)) if(isLinkedToView(view))
{
ParameterSet* params = h_viewParams[view];
changeSelectedMap(view, params->selectedMap);
m_dockTab->refreshUI(h_viewParams[view]); m_dockTab->refreshUI(h_viewParams[view]);
}
} }
void RenderExplodPlugin::mapLinked(MapHandlerGen* m) void RenderExplodPlugin::mapLinked(MapHandlerGen* m)
...@@ -148,9 +157,17 @@ void RenderExplodPlugin::mapLinked(MapHandlerGen* m) ...@@ -148,9 +157,17 @@ void RenderExplodPlugin::mapLinked(MapHandlerGen* m)
View* view = static_cast<View*>(QObject::sender()); View* view = static_cast<View*>(QObject::sender());
assert(isLinkedToView(view)); assert(isLinkedToView(view));
connect(m, SIGNAL(attributeModified(unsigned int, QString)), this, SLOT(attributeModified(unsigned int, QString)));
connect(m, SIGNAL(connectivityModified()), this, SLOT(connectivityModified()));
ParameterSet* params = h_viewParams[view]; ParameterSet* params = h_viewParams[view];
PerMapParameterSet p(m);
PerMapParameterSet* p = new PerMapParameterSet(m);
registerShader(p->m_renderExplod->shaderFaces());
registerShader(p->m_renderExplod->shaderLines());
params->perMap.insert(m->getName(), p); params->perMap.insert(m->getName(), p);
if(params->selectedMap == NULL || params->perMap.count() == 1) if(params->selectedMap == NULL || params->perMap.count() == 1)
changeSelectedMap(view, m); changeSelectedMap(view, m);
else else
...@@ -162,6 +179,10 @@ void RenderExplodPlugin::mapUnlinked(MapHandlerGen* m) ...@@ -162,6 +179,10 @@ void RenderExplodPlugin::mapUnlinked(MapHandlerGen* m)
View* view = static_cast<View*>(QObject::sender()); View* view = static_cast<View*>(QObject::sender());
assert(isLinkedToView(view)); assert(isLinkedToView(view));
disconnect(m, SIGNAL(attributeModified(unsigned int, QString)), this, SLOT(attributeModified(unsigned int, QString)));
disconnect(m, SIGNAL(connectivityModified()), this, SLOT(connectivityModified()));
ParameterSet* params = h_viewParams[view]; ParameterSet* params = h_viewParams[view];
params->perMap.remove(m->getName()); params->perMap.remove(m->getName());
...@@ -176,24 +197,6 @@ void RenderExplodPlugin::mapUnlinked(MapHandlerGen* m) ...@@ -176,24 +197,6 @@ void RenderExplodPlugin::mapUnlinked(MapHandlerGen* m)
m_dockTab->refreshUI(params); m_dockTab->refreshUI(params);
} }
void RenderExplodPlugin::vboAdded(Utils::VBO* vbo)
{
m_dockTab->refreshUI(h_viewParams[m_window->getCurrentView()]);
}
void RenderExplodPlugin::vboRemoved(Utils::VBO* vbo)
{
MapHandlerGen* map = static_cast<MapHandlerGen*>(QObject::sender());
View* view = m_window->getCurrentView();
ParameterSet* params = h_viewParams[view];
if(params->perMap[map->getName()].positionVBO == vbo)
changePositionVBO(view, map, NULL);
if(params->perMap[map->getName()].colorVBO == vbo)
changeColorVBO(view, map, NULL);
m_dockTab->refreshUI(h_viewParams[view]);
}
void RenderExplodPlugin::changeSelectedMap(View* view, MapHandlerGen* map, bool fromUI) void RenderExplodPlugin::changeSelectedMap(View* view, MapHandlerGen* map, bool fromUI)
{ {
...@@ -204,21 +207,18 @@ void RenderExplodPlugin::changeSelectedMap(View* view, MapHandlerGen* map, bool ...@@ -204,21 +207,18 @@ void RenderExplodPlugin::changeSelectedMap(View* view, MapHandlerGen* map, bool
if(view->isCurrentView()) if(view->isCurrentView())
{ {
if(prev)
disconnect(prev, SIGNAL(vboAdded(Utils::VBO*)), this, SLOT(vboAdded(Utils::VBO*)));
if(map)
connect(map, SIGNAL(vboAdded(Utils::VBO*)), this, SLOT(vboAdded(Utils::VBO*)));
if(!fromUI) if(!fromUI)
m_dockTab->refreshUI(params); m_dockTab->refreshUI(params);
view->updateGL(); view->updateGL();
} }
} }
void RenderExplodPlugin::changePositionVBO(View* view, MapHandlerGen* map, Utils::VBO* vbo, bool fromUI) void RenderExplodPlugin::changePositionAttribute(View* view, MapHandlerGen* map, VertexAttribute<PFP3::VEC3> attribute, bool fromUI)
{ {
ParameterSet* params = h_viewParams[view]; ParameterSet* params = h_viewParams[view];
params->perMap[map->getName()].positionVBO = vbo; PerMapParameterSet* perMap = params->perMap[map->getName()];
perMap->positionAttribute = attribute;
perMap->updateRender();
if(view->isCurrentView()) if(view->isCurrentView())
{ {
...@@ -228,10 +228,11 @@ void RenderExplodPlugin::changePositionVBO(View* view, MapHandlerGen* map, Utils ...@@ -228,10 +228,11 @@ void RenderExplodPlugin::changePositionVBO(View* view, MapHandlerGen* map, Utils
} }
} }
void RenderExplodPlugin::changeColorVBO(View* view, MapHandlerGen* map, Utils::VBO* vbo, bool fromUI) void RenderExplodPlugin::changeColorAttribute(View* view, MapHandlerGen* map, VertexAttribute<PFP3::VEC3> attribute, bool fromUI)
{ {
ParameterSet* params = h_viewParams[view]; ParameterSet* params = h_viewParams[view];
params->perMap[map->getName()].colorVBO = vbo; // params->perMap[map->getName()].colorAttribute = attribute;
//perMap->colorAttribute = attribute;
if(view->isCurrentView()) if(view->isCurrentView())
{ {
...@@ -244,7 +245,7 @@ void RenderExplodPlugin::changeColorVBO(View* view, MapHandlerGen* map, Utils::V ...@@ -244,7 +245,7 @@ void RenderExplodPlugin::changeColorVBO(View* view, MapHandlerGen* map, Utils::V
void RenderExplodPlugin::changeRenderEdges(View* view, MapHandlerGen* map, bool b, bool fromUI) void RenderExplodPlugin::changeRenderEdges(View* view, MapHandlerGen* map, bool b, bool fromUI)
{ {
ParameterSet* params = h_viewParams[view]; ParameterSet* params = h_viewParams[view];
params->perMap[map->getName()].renderEdges = b; params->perMap[map->getName()]->renderEdges = b;
if(view->isCurrentView()) if(view->isCurrentView())
{ {
...@@ -257,7 +258,7 @@ void RenderExplodPlugin::changeRenderEdges(View* view, MapHandlerGen* map, bool ...@@ -257,7 +258,7 @@ void RenderExplodPlugin::changeRenderEdges(View* view, MapHandlerGen* map, bool
void RenderExplodPlugin::changeRenderFaces(View* view, MapHandlerGen* map, bool b, bool fromUI) void RenderExplodPlugin::changeRenderFaces(View* view, MapHandlerGen* map, bool b, bool fromUI)
{ {
ParameterSet* params = h_viewParams[view]; ParameterSet* params = h_viewParams[view];
params->perMap[map->getName()].renderFaces = b; params->perMap[map->getName()]->renderFaces = b;
if(view->isCurrentView()) if(view->isCurrentView())
{ {
...@@ -270,7 +271,7 @@ void RenderExplodPlugin::changeRenderFaces(View* view, MapHandlerGen* map, bool ...@@ -270,7 +271,7 @@ void RenderExplodPlugin::changeRenderFaces(View* view, MapHandlerGen* map, bool
void RenderExplodPlugin::changeFacesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI) void RenderExplodPlugin::changeFacesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI)
{ {
ParameterSet* params = h_viewParams[view]; ParameterSet* params = h_viewParams[view];
params->perMap[map->getName()].facesScaleFactor = i / 50.0; params->perMap[map->getName()]->facesScaleFactor = i / 50.0;
if(view->isCurrentView()) if(view->isCurrentView())
{ {
...@@ -283,7 +284,7 @@ void RenderExplodPlugin::changeFacesScaleFactor(View* view, MapHandlerGen* map, ...@@ -283,7 +284,7 @@ void RenderExplodPlugin::changeFacesScaleFactor(View* view, MapHandlerGen* map,
void RenderExplodPlugin::changeVolumesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI) void RenderExplodPlugin::changeVolumesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI)
{ {
ParameterSet* params = h_viewParams[view]; ParameterSet* params = h_viewParams[view];
params->perMap[map->getName()].volumesScaleFactor = i / 50.0; params->perMap[map->getName()]->volumesScaleFactor = i / 50.0;
if(view->isCurrentView()) if(view->isCurrentView())
{ {
...@@ -293,6 +294,49 @@ void RenderExplodPlugin::changeVolumesScaleFactor(View* view, MapHandlerGen* map ...@@ -293,6 +294,49 @@ void RenderExplodPlugin::changeVolumesScaleFactor(View* view, MapHandlerGen* map
} }
} }
void RenderExplodPlugin::attributeModified(unsigned int orbit, QString nameAttr)
{
// if(orbit == VERTEX)
// {
//
// MapHandler<PFP3>* mh = static_cast<MapHandler<PFP3>*>(QObject::sender());
// if(mh == NULL)
// return;
//
// VertexAttribute<PFP2::VEC3> position = mh->getAttribute<PFP3::VEC3, VERTEX>(nameAttr);
// if(!position.isValid())
// return;
//
// PFP3::MAP* map = mh->getMap();
//
// m_renderExplod->updateData<PFP3>(*map,position);
//
//// if(computeNormalLastParameters.contains(map->getName()))
//// {
//// ComputeNormalParameters& params = computeNormalLastParameters[map->getName()];
//// if(params.positionName == nameAttr && params.autoUpdate)
//// computeNormal(map->getName(), params.positionName, params.normalName);
//// }
// }
}
void RenderExplodPlugin::connectivityModified()
{
// MapHandler<PFP3>* mh = static_cast<MapHandler<PFP3>*>(QObject::sender());