diff --git a/src/Surfaces/BaseSurface.cpp b/src/Surfaces/BaseSurface.cpp index 8e679fe..27e07a0 100644 --- a/src/Surfaces/BaseSurface.cpp +++ b/src/Surfaces/BaseSurface.cpp @@ -91,6 +91,20 @@ BaseSource * BaseSurface::getDefaultSource(){ void BaseSurface::setMoved(bool moved){ _moved = moved; } + +void BaseSurface::scaleTo(float scale){ + cout << "TriangleSurface::scaleTo()" << endl; + + ofVec3f centroid = mesh.getCentroid(); + for(unsigned int i = 0; i < mesh.getVertices().size(); ++i){ + ofVec3f d = mesh.getVertices()[i] - centroid; + d *= scale; + mesh.getVertices()[i] = centroid + d; + } + + ofNotifyEvent(verticesChangedEvent, mesh.getVertices(), this); +} + bool BaseSurface::getMoved(){ return _moved; } diff --git a/src/Surfaces/BaseSurface.h b/src/Surfaces/BaseSurface.h index 02eee35..8141d54 100644 --- a/src/Surfaces/BaseSurface.h +++ b/src/Surfaces/BaseSurface.h @@ -22,7 +22,6 @@ class BaseSurface { virtual void setTexCoord(int index, ofVec2f t) = 0; virtual void setTexCoords(vector t) = 0; virtual void moveBy(ofVec2f v) = 0; - virtual void scaleTo(float scale) = 0; virtual int getType() = 0; @@ -39,6 +38,7 @@ class BaseSurface { void drawTexture(ofVec2f position); void setSource(BaseSource * newSource); void setMoved(bool moved); + void scaleTo(float scale); BaseSource * getSource(); BaseSource * getDefaultSource(); diff --git a/src/Surfaces/GridWarpSurface.h b/src/Surfaces/GridWarpSurface.h index ab03d0c..122405c 100644 --- a/src/Surfaces/GridWarpSurface.h +++ b/src/Surfaces/GridWarpSurface.h @@ -15,7 +15,6 @@ class GridWarpSurface : public BaseSurface { void setup(); void draw(); void moveBy(ofVec2f v); - void scaleTo(float scale){} int getType(); int getGridRows(); diff --git a/src/Surfaces/QuadSurface.h b/src/Surfaces/QuadSurface.h index 9cdaa5d..4c6642b 100644 --- a/src/Surfaces/QuadSurface.h +++ b/src/Surfaces/QuadSurface.h @@ -27,7 +27,6 @@ class QuadSurface : public BaseSurface { void setTexCoords(vector t); void moveBy(ofVec2f v); - void scaleTo(float scale){} // TODO: fill this int getType(); bool hitTest(ofVec2f p); diff --git a/src/Surfaces/TriangleSurface.cpp b/src/Surfaces/TriangleSurface.cpp index 5df7f4f..3d0d937 100644 --- a/src/Surfaces/TriangleSurface.cpp +++ b/src/Surfaces/TriangleSurface.cpp @@ -133,19 +133,6 @@ void TriangleSurface::moveBy(ofVec2f v){ ofNotifyEvent(verticesChangedEvent, mesh.getVertices(), this); } -void TriangleSurface::scaleTo(float scale){ - cout << "TriangleSurface::scaleTo()" << endl; - - ofVec3f centroid = mesh.getCentroid(); - for(unsigned int i = 0; i < mesh.getVertices().size(); ++i){ - ofVec3f d = mesh.getVertices()[i] - centroid; - d *= scale; - mesh.getVertices()[i] = centroid + d; - } - - ofNotifyEvent(verticesChangedEvent, mesh.getVertices(), this); -} - int TriangleSurface::getType(){ return SurfaceType::TRIANGLE_SURFACE; } diff --git a/src/Surfaces/TriangleSurface.h b/src/Surfaces/TriangleSurface.h index c0f8184..f3797e9 100644 --- a/src/Surfaces/TriangleSurface.h +++ b/src/Surfaces/TriangleSurface.h @@ -25,7 +25,6 @@ class TriangleSurface : public BaseSurface { void setTexCoords(vector t); void moveBy(ofVec2f v); - void scaleTo(float scale); int getType(); bool hitTest(ofVec2f p);