diff options
Diffstat (limited to 'src/sidebar.cc')
-rw-r--r-- | src/sidebar.cc | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/sidebar.cc b/src/sidebar.cc index 77d87ae..bcd944e 100644 --- a/src/sidebar.cc +++ b/src/sidebar.cc @@ -56,6 +56,20 @@ SideBar::SideBar(QWidget *parent) : QWidget(parent) connect(edit_entitylocation_y, SIGNAL(textChanged(const QString &)), this, SLOT(updateEntityLocationY(const QString &))); connect(edit_entitylocation_z, SIGNAL(textChanged(const QString &)), this, SLOT(updateEntityLocationZ(const QString &))); + // entity angles + QHBoxLayout *box_entityangles = new QHBoxLayout(); + QLabel *label_entityangles = new QLabel(tr("angles")); + edit_entityangles_yaw = new QLineEdit(tr("yaw")); + edit_entityangles_pitch = new QLineEdit(tr("pitch")); + edit_entityangles_roll = new QLineEdit(tr("roll")); + box_entityangles->addWidget(label_entityangles); + box_entityangles->addWidget(edit_entityangles_yaw); + box_entityangles->addWidget(edit_entityangles_pitch); + box_entityangles->addWidget(edit_entityangles_roll); + connect(edit_entityangles_yaw, SIGNAL(textChanged(const QString &)), this, SLOT(updateEntityAnglesYaw(const QString &))); + connect(edit_entityangles_pitch, SIGNAL(textChanged(const QString &)), this, SLOT(updateEntityAnglesPitch(const QString &))); + connect(edit_entityangles_roll, SIGNAL(textChanged(const QString &)), this, SLOT(updateEntityAnglesRoll(const QString &))); + // entity radius QHBoxLayout *box_entityradius = new QHBoxLayout(); QLabel *label_entityradius = new QLabel(tr("radius")); @@ -93,6 +107,7 @@ SideBar::SideBar(QWidget *parent) : QWidget(parent) box_global->addLayout(box_entitylabel); box_global->addLayout(box_entityname); box_global->addLayout(box_entitylocation); + box_global->addLayout(box_entityangles); box_global->addLayout(box_entityradius); box_global->addWidget(label_entityproperties); @@ -159,6 +174,42 @@ void SideBar::updateEntityLocationZ(const QString &value) } } +void SideBar::updateEntityAnglesYaw(const QString &value) +{ + if (last_selected) { + bool ok; + float yaw = value.toFloat(&ok); + if (ok) { + last_selected->set_angles(yaw, last_selected->angles()[1], last_selected->angles()[2]); + emit entityChanged(); + } + } +} + +void SideBar::updateEntityAnglesPitch(const QString &value) +{ + if (last_selected) { + bool ok; + float pitch = value.toFloat(&ok); + if (ok) { + last_selected->set_angles(last_selected->angles()[0], pitch, last_selected->angles()[2]); + emit entityChanged(); + } + } +} + +void SideBar::updateEntityAnglesRoll(const QString &value) +{ + if (last_selected) { + bool ok; + float roll = value.toFloat(&ok); + if (ok) { + last_selected->set_angles(last_selected->angles()[0], last_selected->angles()[1], roll); + emit entityChanged(); + } + } +} + void SideBar::updateEntityRadius(const QString &value) { if (last_selected) { @@ -216,6 +267,15 @@ void SideBar::setProperties(EntityProperties *properties) edit_entitylocation_z->setEnabled(false); edit_entitylocation_z->clear(); + edit_entityangles_yaw->setEnabled(false); + edit_entityangles_yaw->clear(); + + edit_entityangles_pitch->setEnabled(false); + edit_entityangles_pitch->clear(); + + edit_entityangles_roll->setEnabled(false); + edit_entityangles_roll->clear(); + edit_entityradius->setEnabled(false); edit_entityradius->clear(); @@ -254,6 +314,18 @@ void SideBar::setProperties(EntityProperties *properties) value.setNum(properties->location()[2]); edit_entitylocation_z->setText(value); + edit_entityangles_yaw->setEnabled(true); + value.setNum(properties->angles()[0]); + edit_entityangles_yaw->setText(value); + + edit_entityangles_pitch->setEnabled(true); + value.setNum(properties->angles()[1]); + edit_entityangles_pitch->setText(value); + + edit_entityangles_roll->setEnabled(true); + value.setNum(properties->angles()[2]); + edit_entityangles_roll->setText(value); + edit_entityradius->setEnabled(true); value.setNum(properties->radius()); edit_entityradius->setText(value); |