diff options
Diffstat (limited to 'Room.h')
-rw-r--r-- | Room.h | 23 |
1 files changed, 5 insertions, 18 deletions
@@ -17,8 +17,6 @@ class Room : public LevelObject, private VertexProvider, private EdgeProvider { std::vector<Edge> edges; - void rotateAround(Vertex z, float a); - public: Room() {height = 10;} Room(std::string name) {this->name = name; height = 10;} @@ -57,18 +55,7 @@ class Room : public LevelObject, private VertexProvider, private EdgeProvider { *v += m; } - virtual void rotate(float a) { - rotateAround(getCenter(), a); - } - - virtual Vertex getCenter() const { - Vertex ret; - - for(Polygon::const_iterator v = polygon.begin(); v != polygon.end(); v++) - ret += *v; - - return ret / polygon.size(); - } + virtual void rotate(Vertex m, float a); virtual const Vertex* getVertex(size_t id) const { return &polygon[id]; @@ -82,8 +69,8 @@ class Room : public LevelObject, private VertexProvider, private EdgeProvider { polygon[id] += Vertex(x, y); } - virtual void rotateVertex(size_t id, float a) { - rotateAround(polygon[id], a); + virtual void rotateVertex(size_t id, Vertex m, float a) { + rotate(m, a); } virtual const Edge* getEdge(size_t id) const { @@ -99,8 +86,8 @@ class Room : public LevelObject, private VertexProvider, private EdgeProvider { moveVertex((id+1)%polygon.size(), x, y); } - virtual void rotateEdge(size_t id, float a) { - rotateAround((polygon[id]+polygon[(id+1)%polygon.size()])/2, a); + virtual void rotateEdge(size_t id, Vertex m, float a) { + rotate(m, a); } }; |