#ifndef MAPVIEW3D_H #define MAPVIEW3D_H #include "../../fixC11.h" #include #include #include class MapModel; class GridModel; class GridRenderer; class NavMeshRenderer; class NavMeshModel; class MapView3D : public QOpenGLWidget { Q_OBJECT bool usePerspectiveProjection = false; public: MapView3D(QWidget* parent = 0); /** set the underlying data-model */ void setModel(MapModel* mdl) { this->model = mdl; update(); } void layerChange() { update(); } /** get the underlying data-model */ MapModel* getModel() {return model;} /** get the renderer to use for the grid */ GridRenderer* getGridRenderer() {return gridRenderer;} /** get the renderer to use for the NavMesh */ NavMeshRenderer* getNavMeshRenderer() {return navMeshRenderer;} // /** show 3D rendered floorplan */ // void showFloorplan(); // /** show 3D rendered grid derived from the floorplan */ // void showGrid(); // /** show 3D rendered NavMesh derived from the floorplan */ // void showNavMesh(); /** show 3D rendered floorplan */ void setShowFloorplan(bool show); /** show 3D rendered grid derived from the floorplan */ void setShowGrid(bool show); /** show 3D rendered NavMesh derived from the floorplan */ void setShowNavMesh(bool show); private: /** the underlying data-model */ MapModel* model = nullptr; GridModel* gridModel = nullptr; GridRenderer* gridRenderer = nullptr; NavMeshModel* navMeshModel = nullptr; NavMeshRenderer* navMeshRenderer = nullptr; bool showFloorplan = true; bool showGrid = false; bool showNavMesh = false; Point3 rot; Point3 center; Point3 scale; struct Mouse { int btn; float x; float y; } mouse; struct Viewport { Point2 size; } viewport; protected: void initializeGL(); void paintGL(); void resizeGL(int width, int height); void mousePressEvent(QMouseEvent* e); void mouseMoveEvent(QMouseEvent* e); void mouseReleaseEvent(QMouseEvent* e); void wheelEvent(QWheelEvent* e); signals: void onShow3DFloorplan(bool show); void onShow3DGrid(bool show); void onShow3DNavMesh(bool show); private: void draw(); }; #endif // MAPVIEW3D_H