diff --git a/src/Surfaces/SurfaceStack.cpp b/src/Surfaces/SurfaceStack.cpp index 2e7eea4..5618e9a 100644 --- a/src/Surfaces/SurfaceStack.cpp +++ b/src/Surfaces/SurfaceStack.cpp @@ -41,6 +41,14 @@ void SurfaceStack::draw(){ } } +void SurfaceStack::clear(){ + for(int i = 0; i < size(); ++i){ + ofRemoveListener(_surfaces[i]->verticesChangedEvent, this, &SurfaceStack::onVerticesChanged); + ofRemoveListener(_surfaces[i]->vertexChangedEvent, this, &SurfaceStack::onVertexChanged); + } + _surfaces.clear(); +} + int SurfaceStack::size(){ return _surfaces.size(); } diff --git a/src/Surfaces/SurfaceStack.h b/src/Surfaces/SurfaceStack.h index 68084a9..19e808d 100644 --- a/src/Surfaces/SurfaceStack.h +++ b/src/Surfaces/SurfaceStack.h @@ -18,6 +18,7 @@ class SurfaceStack { void erase(int i); void swap(int a, int b); void draw(); + void clear(); int size(); @@ -31,6 +32,8 @@ class SurfaceStack { void onVerticesChanged(vector & vertices); void onVertexChanged(int & i); + vector & getSurfaces(){ return _surfaces; }; + private: SurfaceStack(){}