void WorldPolygon::draw ( bool drawWires ) { TextureSystem &ts = TextureSystem::Instance() ; if (textureID >= 0 || texture.size() ) { if ( textureID < 0 ) textureID = ts.getID(texture); ts.bind(textureID); } else glDisable(GL_TEXTURE_2D); if (!selected) glColor4f(color.r,color.g,color.b,color.a); else glColor4f(0.5f,0,0,1); glBegin(GL_POLYGON); for ( unsigned int i = 0; i < verts.size(); i++) { glNormal3f(norms[i].X(),norms[i].Y(),norms[i].Z()); glTexCoord2f(uvs[i].s,uvs[i].t); glVertex3f(verts[i].X(),verts[i].Y(),verts[i].Z()); } glEnd(); if (drawWires) { glDisable(GL_TEXTURE_2D); glDisable(GL_LIGHTING); glDepthFunc(GL_LEQUAL); glLineWidth(3.0f); if (!selected) glColor4f(0.5f,0.5f,0.5f,0.5f); else glColor4f(1,0,0,0.75f); glPolygonOffset(-1,-1); glEnable(GL_POLYGON_OFFSET_LINE); glBegin(GL_LINE_LOOP); for ( unsigned int i = 0; i < verts.size(); i++) { glNormal3f(norms[i].X(),norms[i].Y(),norms[i].Z()); glTexCoord2f(uvs[i].s,uvs[i].t); glVertex3f(verts[i].X(),verts[i].Y(),verts[i].Z()); } glEnd(); glDepthFunc(GL_LESS); glDisable(GL_POLYGON_OFFSET_LINE); glLineWidth(1.0f); glEnable(GL_LIGHTING); } glEnable(GL_TEXTURE_2D); }