/* entitywidget.cc This file is part of the Project::OSiRiON world editor and is distributed under the terms and conditions of the GNU General Public License version 2 */ #include #include #include #include #include namespace editor { EntityWidget::EntityWidget(QWidget *parent) : QWidget(parent) { is_selected = false; is_dragging = false; } void EntityWidget::set_selected(const bool selected) { is_selected = selected; update(); } void EntityWidget::paintEvent(QPaintEvent *event) { QPen pen(Qt::black, 1, Qt::SolidLine); QPainter painter(this); 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) { if (event->button() == Qt::LeftButton) { //qDebug() << "clicked entity " << name(); event->accept(); if (is_selected) { is_dragging = true; emit dragStart(); } emit clicked(this); } else { event->ignore(); is_dragging = false; } } void EntityWidget::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { if (is_dragging) emit dragStop(); is_dragging = false; } } void EntityWidget::mouseMoveEvent(QMouseEvent *event) { if (is_dragging) { emit dragMove(this, event->pos().x(), event->pos().y()); } } }