Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2012-02-25 16:56:25 +0000
committerStijn Buys <ingar@osirion.org>2012-02-25 16:56:25 +0000
commite10c0a7602c612993e6b99348bab507b7def0881 (patch)
tree2d863e946024fc3560221bedcddb149b253b4918 /src/entitywidget.cc
parent01f671303b75f3e4c683e3ff47b7ee120f0cda12 (diff)
Add entity manipulator widget, added support for editing entity angles.
Diffstat (limited to 'src/entitywidget.cc')
-rw-r--r--src/entitywidget.cc31
1 files changed, 28 insertions, 3 deletions
diff --git a/src/entitywidget.cc b/src/entitywidget.cc
index c903ea8..b589063 100644
--- a/src/entitywidget.cc
+++ b/src/entitywidget.cc
@@ -11,6 +11,8 @@
#include <QMouseEvent>
#include <QDebug>
+#include <cmath>
+
namespace editor
{
@@ -34,10 +36,30 @@ void EntityWidget::paintEvent(QPaintEvent *event)
if (is_selected) {
pen.setColor(Qt::red);
painter.setPen(pen);
+
+ painter.setClipping(false);
+ } else {
+ painter.setClipping(true);
}
painter.setPen(pen);
painter.drawEllipse(0, 0, width() - 1 , height() - 1);
+
+ float r = width() / 2;
+ if (r < 12)
+ r = 12;
+
+ /*
+ float dx = r * sin(entitywidget_entityproperties.yaw());
+ float dy = r * cos(entitywidget_entityproperties.yaw());
+
+ if (!is_selected) {
+ pen.setColor(Qt::yellow);
+ }
+ painter.setPen(pen);
+
+ painter.drawLine(width() /2, height() /2, width() /2 - dx, height() /2 - dy);
+ */
}
void EntityWidget::mousePressEvent(QMouseEvent *event)
@@ -45,8 +67,10 @@ void EntityWidget::mousePressEvent(QMouseEvent *event)
if (event->button() == Qt::LeftButton) {
//qDebug() << "clicked entity " << name();
event->accept();
- if (is_selected)
+ if (is_selected) {
is_dragging = true;
+ emit dragStart();
+ }
emit clicked(this);
} else {
event->ignore();
@@ -57,6 +81,8 @@ void EntityWidget::mousePressEvent(QMouseEvent *event)
void EntityWidget::mouseReleaseEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
+ if (is_dragging)
+ emit dragStop();
is_dragging = false;
}
}
@@ -64,8 +90,7 @@ void EntityWidget::mouseReleaseEvent(QMouseEvent *event)
void EntityWidget::mouseMoveEvent(QMouseEvent *event)
{
if (is_dragging) {
- // TODO add delay
- emit dragged(this, event->pos().x(), event->pos().y());
+ emit dragMove(this, event->pos().x(), event->pos().y());
}
}