Fri, 06 Mar 2020 16:08:53 +0200
begin work on axes program
| 47 | 1 | #pragma once |
| 2 | #include "gl/partrenderer.h" | |
|
61
4585d8d7a7ec
moved GridProgram to Canvas
Teemu Piippo <teemu@hecknology.net>
parents:
57
diff
changeset
|
3 | #include "gl/gridprogram.h" |
| 47 | 4 | |
| 5 | class Canvas : public PartRenderer | |
| 6 | { | |
| 7 | Q_OBJECT | |
| 8 | public: | |
| 9 | Canvas( | |
| 10 | Model* model, | |
| 11 | DocumentManager* documents, | |
| 12 | const ldraw::ColorTable& colorTable, | |
| 13 | QWidget* parent = nullptr); | |
| 51 | 14 | public slots: |
| 15 | void handleSelectionChange(const QSet<ldraw::Id>& selectedIds, const QSet<ldraw::Id>& deselectedIds); | |
| 47 | 16 | protected: |
| 17 | void mouseMoveEvent(QMouseEvent* event) override; | |
| 51 | 18 | void mousePressEvent(QMouseEvent* event) override; |
| 19 | void mouseReleaseEvent(QMouseEvent* event) override; | |
|
61
4585d8d7a7ec
moved GridProgram to Canvas
Teemu Piippo <teemu@hecknology.net>
parents:
57
diff
changeset
|
20 | void initializeGL() override; |
|
57
5c0005f63319
use glm::unProject to implement screenToModelCoordinates
Teemu Piippo <teemu@hecknology.net>
parents:
51
diff
changeset
|
21 | void paintGL() override; |
| 47 | 22 | signals: |
| 23 | void newStatusText(const QString& newStatusText); | |
| 51 | 24 | void selectionChanged(const QSet<ldraw::Id>& newSelection); |
| 25 | private: | |
|
64
f99d52b1646b
grid snapping now also works with transformed grids
Teemu Piippo <teemu@hecknology.net>
parents:
61
diff
changeset
|
26 | void updateGridMatrix(); |
| 67 | 27 | glm::vec3 cameraVector() const; |
|
66
77c819262b7a
added a method to find out if the view is perpendicular to grid
Teemu Piippo <teemu@hecknology.net>
parents:
64
diff
changeset
|
28 | bool isGridPerpendicularToScreen(float threshold) const; |
|
61
4585d8d7a7ec
moved GridProgram to Canvas
Teemu Piippo <teemu@hecknology.net>
parents:
57
diff
changeset
|
29 | std::optional<GridProgram> gridProgram; |
|
57
5c0005f63319
use glm::unProject to implement screenToModelCoordinates
Teemu Piippo <teemu@hecknology.net>
parents:
51
diff
changeset
|
30 | std::optional<glm::vec3> worldPosition; |
|
64
f99d52b1646b
grid snapping now also works with transformed grids
Teemu Piippo <teemu@hecknology.net>
parents:
61
diff
changeset
|
31 | glm::mat4 gridMatrix; |
|
f99d52b1646b
grid snapping now also works with transformed grids
Teemu Piippo <teemu@hecknology.net>
parents:
61
diff
changeset
|
32 | geom::Plane gridPlane; |
| 51 | 33 | int totalMouseMove = 0; |
| 34 | QSet<ldraw::Id> selection; | |
| 47 | 35 | }; |