diff --git a/src/Surfaces/SurfaceManagerGui.cpp b/src/Surfaces/SurfaceManagerGui.cpp index 3f00f73..8ca67b0 100644 --- a/src/Surfaces/SurfaceManagerGui.cpp +++ b/src/Surfaces/SurfaceManagerGui.cpp @@ -226,11 +226,19 @@ void SurfaceManagerGui::mouseDragged(ofMouseEventArgs & args){ } void SurfaceManagerGui::setSurfaceManager(SurfaceManager * newSurfaceManager){ + if(surfaceManager == 0){ + ofRemoveListener(newSurfaceManager->vertexChangedEvent, this, &SurfaceManagerGui::onVertexChanged); + ofRemoveListener(newSurfaceManager->verticesChangedEvent, this, &SurfaceManagerGui::onVerticesChanged); + ofRemoveListener(newSurfaceManager->surfaceSelectedEvent, this, &SurfaceManagerGui::onSurfaceSelected); + ofRemoveListener(newSurfaceManager->vertexSelectedEvent, this, &SurfaceManagerGui::onVertexSelected); + } + surfaceManager = newSurfaceManager; ofAddListener(newSurfaceManager->vertexChangedEvent, this, &SurfaceManagerGui::onVertexChanged); ofAddListener(newSurfaceManager->verticesChangedEvent, this, &SurfaceManagerGui::onVerticesChanged); ofAddListener(newSurfaceManager->surfaceSelectedEvent, this, &SurfaceManagerGui::onSurfaceSelected); + ofAddListener(newSurfaceManager->vertexSelectedEvent, this, &SurfaceManagerGui::onVertexSelected); projectionEditor.setSurfaceManager(surfaceManager); sourcesEditor.setSurfaceManager(surfaceManager); @@ -345,5 +353,14 @@ void SurfaceManagerGui::onSurfaceSelected(int & surfaceIndex){ projectionEditor.createJoints(); } +void SurfaceManagerGui::onVertexSelected(int & vertexIndex){ + if(projectionEditor.getJoints()->size() == 0){ + return; + } + + projectionEditor.unselectAllJoints(); + projectionEditor.getJoints()->at(vertexIndex)->select(); +} + } // namespace piMapper } // namespace ofx \ No newline at end of file diff --git a/src/Surfaces/SurfaceManagerGui.h b/src/Surfaces/SurfaceManagerGui.h index 814649b..3b13d18 100644 --- a/src/Surfaces/SurfaceManagerGui.h +++ b/src/Surfaces/SurfaceManagerGui.h @@ -50,6 +50,7 @@ class SurfaceManagerGui { void onVertexChanged(ofVec3f & vertex); void onVerticesChanged(vector & vertices); void onSurfaceSelected(int & surfaceIndex); + void onVertexSelected(int & vertexIndex); private: SurfaceManager * surfaceManager;