42 std::size_t numpoints = 1; |
42 std::size_t numpoints = 1; |
43 EditingMode mode = SelectMode; |
43 EditingMode mode = SelectMode; |
44 glm::mat4 mvpMatrix; |
44 glm::mat4 mvpMatrix; |
45 glm::mat4 gridMatrix{1}; |
45 glm::mat4 gridMatrix{1}; |
46 Plane gridPlane; |
46 Plane gridPlane; |
|
47 QPointF localPosition; |
47 opt<glm::vec3> worldPosition; |
48 opt<glm::vec3> worldPosition; |
48 CircleToolOptions circleToolOptions = { |
49 CircleToolOptions circleToolOptions = { |
49 .fraction = {16, 16}, |
50 .fraction = {16, 16}, |
50 .type = CircularPrimitive::Circle, |
51 .type = CircularPrimitive::Circle, |
51 }; |
52 }; |
52 public: |
53 public: |
53 explicit EditTools(QObject *parent = nullptr); |
54 explicit EditTools(QObject *parent = nullptr); |
54 ~EditTools() override; |
55 ~EditTools() override; |
55 void applyToVertices(VertexMap::ApplyFunction fn) const; |
56 void applyToVertices(VertexMap::ApplyFunction fn) const; |
56 const QSet<ModelId> selectedObjects() const; |
57 [[nodiscard]] const QSet<ModelId> selectedObjects() const; |
57 EditingMode currentEditingMode() const; |
58 [[nodiscard]] EditingMode currentEditingMode() const; |
58 Q_SLOT void setEditMode(EditingMode mode); |
59 Q_SLOT void setEditMode(EditingMode mode); |
59 Q_SLOT void setGridMatrix(const glm::mat4& gridMatrix); |
60 Q_SLOT void setGridMatrix(const glm::mat4& gridMatrix); |
60 Q_SLOT void setCircleToolOptions(const CircleToolOptions& options); |
61 Q_SLOT void setCircleToolOptions(const CircleToolOptions& options); |
61 Q_SIGNALS: |
62 Q_SIGNALS: |
62 void newStatusText(const QString& newStatusText); |
63 void newStatusText(const QString& newStatusText); |
67 void mvpMatrixChanged(const glm::mat4& matrix) override; |
68 void mvpMatrixChanged(const glm::mat4& matrix) override; |
68 void mouseMoved(const QMouseEvent* event) override; |
69 void mouseMoved(const QMouseEvent* event) override; |
69 void mouseClick(const QMouseEvent* event) override; |
70 void mouseClick(const QMouseEvent* event) override; |
70 void overpaint(QPainter* painter) override; |
71 void overpaint(QPainter* painter) override; |
71 private: |
72 private: |
72 const std::vector<ModelAction> modelActions() const; |
73 [[nodiscard]] const std::vector<ModelAction> modelActions() const; |
73 const std::vector<ModelAction> circleModeActions() const; |
74 [[nodiscard]] const std::vector<ModelAction> circleModeActions() const; |
74 const std::vector<ModelAction> drawModeActions() const; |
75 [[nodiscard]] const std::vector<ModelAction> drawModeActions() const; |
75 bool usePolygon() const; |
76 bool usePolygon() const; |
76 void closeShape(); |
77 void closeShape(); |
77 void renderPreview(QPainter* painter, const void* pensptr); |
78 void renderPreview(QPainter* painter, const void* pensptr); |
78 void removeLastPoint(); |
79 void removeLastPoint(); |
79 bool isCloseToExistingPoints() const; |
80 [[nodiscard]] bool isCloseToExistingPoints() const; |
|
81 [[nodiscard]] std::size_t calcNumPoints() const; |
80 }; |
82 }; |