109 lines
1.9 KiB
C++
109 lines
1.9 KiB
C++
#ifndef MAPVIEW3D_H
|
|
#define MAPVIEW3D_H
|
|
|
|
#include <QtWidgets>
|
|
#include <QtOpenGL>
|
|
|
|
#include <Indoor/geo/Point3.h>
|
|
|
|
class MapModel;
|
|
class GridModel;
|
|
class GridRenderer;
|
|
class NavMeshRenderer;
|
|
class NavMeshModel;
|
|
|
|
class MapView3D : public QGLWidget {
|
|
|
|
Q_OBJECT
|
|
|
|
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);
|
|
|
|
private:
|
|
void draw();
|
|
|
|
};
|
|
|
|
#endif // MAPVIEW3D_H
|