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/sidebar.cc
parent01f671303b75f3e4c683e3ff47b7ee120f0cda12 (diff)
Add entity manipulator widget, added support for editing entity angles.
Diffstat (limited to 'src/sidebar.cc')
-rw-r--r--src/sidebar.cc72
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);