diff options
Diffstat (limited to 'Renderer.cpp')
-rw-r--r-- | Renderer.cpp | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/Renderer.cpp b/Renderer.cpp index 42614a7..0a4f403 100644 --- a/Renderer.cpp +++ b/Renderer.cpp @@ -93,6 +93,8 @@ void Renderer::drawCross(const Vertex &m, float r) { void Renderer::renderObject(const LevelObject &object, bool selected, bool highlighted, float scale) { if(object.isOfType("LevelVertex")) renderLevelVertex(*(LevelVertex*)&object, selected, highlighted, scale); + else if(object.isOfType("LevelEdge")) + renderLevelEdge(*(LevelEdge*)&object, selected, highlighted, scale); else if(object.isOfType("Room")) renderRoom(*(Room*)&object, selected, highlighted, scale); else if(object.isOfType("PlayerStart")) @@ -115,13 +117,33 @@ void Renderer::renderLevelVertex(const LevelVertex &vertex, bool selected, bool drawCircle(*vertex, 3.5f/scale, 16); } +void Renderer::renderLevelEdge(const LevelEdge &edge, bool selected, bool highlighted, float scale) { + if(selected) { + glColor4f(1.0f, 1.0f, 1.0f, 0.9f); + glLineWidth(2.0f); + } + else if(highlighted) { + glColor4f(0.0f, 0.7f, 1.0f, 0.7f); + glLineWidth(2.0f); + } + else + return; + + glBegin(GL_LINES); + + glVertex2f(edge->getVertex1()->getX(), edge->getVertex1()->getY()); + glVertex2f(edge->getVertex2()->getX(), edge->getVertex2()->getY()); + + glEnd(); +} + void Renderer::renderRoom(const Room &room, bool selected, bool highlighted, float scale) { if(selected) glColor4f(0.0f, 0.7f, 1.0f, 0.2f); else glColor4f(0.0f, 0.7f, 1.0f, 0.3f); - fillPolygon(room); + fillPolygon(room.getPolygon()); if(selected) { glColor4f(1.0f, 1.0f, 1.0f, 0.9f); @@ -136,7 +158,7 @@ void Renderer::renderRoom(const Room &room, bool selected, bool highlighted, flo glLineWidth(1.0f); } - drawPolygon(room); + drawPolygon(room.getPolygon()); } void Renderer::renderPlayerStart(const PlayerStart &start, bool selected, bool highlighted, float scale) { |