#ifndef MAPVIEW3D_H #define MAPVIEW3D_H #include "../../fixC11.h" #include #include #include class MapModel; class GridModel; class GridRenderer; class NavMeshRenderer; class NavMeshModel; class FloorplanRenderer; class FloorplanRendererModel; class MapView3D : public QOpenGLWidget { Q_OBJECT bool usePerspectiveProjection = false; bool useWireframe = false; public: MapView3D(QWidget* parent = 0); /** set the underlying data-model */ void setModel(MapModel* mdl) { this->model = mdl; update(); } /** redraw on layer change */ void layerChange(); /** get the underlying data-model */ MapModel* getModel() {return model;} /** get the renderer to use for the floorplan */ FloorplanRenderer* getFloorplanRenderer() {return floorplanRenderer;} /** 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; FloorplanRenderer* floorplanRenderer = nullptr; FloorplanRendererModel* floorplanRendererModel = 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); // android bool event(QEvent *e) override; bool gestureEvent(QGestureEvent* event); void pinchTriggered(QPinchGesture* gesture); void panTriggered(QPanGesture* gesture); private: void moveXY(float dx, float dy); signals: void onShow3DFloorplan(bool show); void onShow3DGrid(bool show); void onShow3DNavMesh(bool show); private: void draw(); }; #endif // MAPVIEW3D_H