#ifndef MV3DELEMENTFLOOROUTLINE_H #define MV3DELEMENTFLOOROUTLINE_H #include #include "misc/Cube.h" #include "MV3DElement.h" #include "../../lib/gpc/gpc.h" #include "misc/Polygon.h" class MV3DElementFloorOutline : public MV3DElement { Floorplan::Floor* f; Floorplan::FloorOutline* out; public: /** ctor */ MV3DElementFloorOutline(Floorplan::Floor* f, Floorplan::FloorOutline* out) : f(f), out(out) { ; } protected: /** repaint me */ void paintGL() override { std::vector add; std::vector rem; std::vector polys = *out; Polygon pol; for (Floorplan::FloorOutlinePolygon* poly : polys) { switch (poly->method) { case Floorplan::OutlineMethod::ADD: pol.add(poly->poly); break; case Floorplan::OutlineMethod::REMOVE: pol.remove(poly->poly); break; default: throw 1; } } std::vector> trias = pol.get(f->atHeight); glColor3f(0.2, 0.2, 0.2); glDisable(GL_CULL_FACE); for (const std::vector& tria : trias) { glBegin(GL_TRIANGLE_STRIP); for (const Point3& p3 : tria) { glVertex3f(p3.x, p3.z, p3.y); } glEnd(); } glEnable(GL_CULL_FACE); } }; #endif // MV3DELEMENTFLOOROUTLINE_H