From acb1721e94a49a4941bb11dfc2f832c3848aa204 Mon Sep 17 00:00:00 2001 From: neoraider Date: Fri, 8 Feb 2008 21:21:01 +0000 Subject: zoomedit: Implemented Rotate tool; added simple gates. --- Renderer.cpp | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) (limited to 'Renderer.cpp') diff --git a/Renderer.cpp b/Renderer.cpp index 98859d9..c8ecac2 100644 --- a/Renderer.cpp +++ b/Renderer.cpp @@ -86,6 +86,8 @@ void Renderer::renderObject(const LevelObject &object, bool selected, bool highl renderRoom(*(Room*)&object, selected, highlighted, scale); else if(object.isOfType("PlayerStart")) renderPlayerStart(*(PlayerStart*)&object, selected, highlighted, scale); + else if(object.isOfType("Portal")) + renderPortal(*(Portal*)&object, selected, highlighted, scale); } void Renderer::renderRoom(const Room &room, bool selected, bool highlighted, float scale) { @@ -125,13 +127,50 @@ void Renderer::renderPlayerStart(const PlayerStart &start, bool selected, bool h glColor4f(0.0f, 0.7f, 0.7f, 0.7f); glLineWidth(1.0f); } - drawCircle(Vertex(start.getX(), start.getZ()), 0.3f, 128); + drawCircle(Vertex(start.getX(), start.getZ()), 0.3f); glLineWidth(2.0f); glColor4f(1.0f, 1.0f, 1.0f, 0.7f); drawCross(Vertex(start.getX(), start.getZ()), 0.5f/sqrtf(scale)); } +void Renderer::renderPortal(const Portal &portal, 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, 0.7f, 0.7f); + glLineWidth(2.0f); + } + else { + glColor4f(0.0f, 0.7f, 0.7f, 0.7f); + glLineWidth(1.0f); + } + + float s = sinf(portal.getOrientation()); + float c = cosf(portal.getOrientation()); + float x = portal.getWidth()/2*c; + float y = portal.getWidth()/2*s; + float ts = portal.getThickness()/2*s; + float tc = portal.getThickness()/2*c; + + glBegin(GL_LINES); + + glVertex2f(portal.getPosition().getX()-x+ts, portal.getPosition().getY()-y-tc); + glVertex2f(portal.getPosition().getX()-x-ts, portal.getPosition().getY()-y+tc); + + glVertex2f(portal.getPosition().getX()+x+ts, portal.getPosition().getY()+y-tc); + glVertex2f(portal.getPosition().getX()+x-ts, portal.getPosition().getY()+y+tc); + + glColor4f(1.0f, 1.0f, 1.0f, 0.9f); + + glVertex2f(portal.getPosition().getX()-x, portal.getPosition().getY()-y); + glVertex2f(portal.getPosition().getX()+x, portal.getPosition().getY()+y); + + glEnd(); +} + void Renderer::render(const Level &level, const Rectangle &rect, float scale) { glClear(GL_COLOR_BUFFER_BIT); -- cgit v1.2.3