git-svn-id: svn://db.shs.com.ru/libs@705 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2019-12-20 10:55:11 +00:00
parent cb19854e1b
commit 7c271cc3b5
13 changed files with 193 additions and 44 deletions

View File

@@ -103,6 +103,7 @@ QList<QAction *> SceneTree::actionsSelection() {
<< ui->actionGroup << ui->actionClone << newSeparator()
<< ui->actionSelect_parent << ui->actionSelect_by_mesh << ui->actionSelect_by_material << newSeparator()
<< ui->actionTransfer_transform_to_children << newSeparator()
<< ui->actionActive_camera << ui->actionDefault_camera << newSeparator()
<< ui->actionRemove;
return ret;
}
@@ -165,6 +166,8 @@ void SceneTree::makeObjetTree(ObjectBase * o, QTreeWidgetItem * ti) {
case ObjectBase::glCamera:
t = otCamera;
ci->setIcon(cName, icon_camera);
ci->setText(cVis, (co == view->camera()) ? "*" : "");
cam_items << ci;
break;
default: break;
}
@@ -217,6 +220,16 @@ void SceneTree::materialsChanged() {
}
void SceneTree::cameraChanged() {
if (!view) return;
foreach (QTreeWidgetItem * i, cam_items) {
ObjectBase * o = itemObject(i);
if (!o) continue;
i->setText(cVis, (o == view->camera()) ? "*" : "");
}
}
bool SceneTree::filterTree(QTreeWidgetItem * ti, const QString & filter, int types) {
bool ret = false;
for (int i = 0; i < ti->childCount(); ++i) {
@@ -262,6 +275,7 @@ void SceneTree::checkActions() {
ui->actionSelect_parent->setEnabled(has_1);
ui->actionSelect_by_mesh->setEnabled(has_1);
ui->actionSelect_by_material->setEnabled(has_1);
ui->actionActive_camera->setEnabled(has_1);
}
@@ -299,6 +313,11 @@ void SceneTree::__objectDeleted(ObjectBase * o) {
geo_items.removeAt(i);
--i;
}
for (int i = 0; i < cam_items.size(); ++i)
if (itemObject(cam_items[i]) == o) {
cam_items.removeAt(i);
--i;
}
}
@@ -396,6 +415,23 @@ void SceneTree::on_actionTransfer_transform_to_children_triggered() {
}
void SceneTree::on_actionActive_camera_triggered() {
if (!view) return;
ObjectBase * o = view->scene()->selectedObject();
if (!o) return;
if (o->type() != ObjectBase::glCamera) return;
view->setCamera((Camera *)o);
cameraChanged();
}
void SceneTree::on_actionDefault_camera_triggered() {
if (!view) return;
view->setDefaultCamera();
cameraChanged();
}
void SceneTree::on_actionSelect_parent_triggered() {
if (!view) return;
ObjectBaseList sol = view->scene()->selectedObjects(true);
@@ -448,6 +484,7 @@ void SceneTree::objectsTreeChanged() {
int vpos = ui->treeObjects->verticalScrollBar()->value();
expanded_.clear();
geo_items.clear();
cam_items.clear();
rememberExpanded(ui->treeObjects->invisibleRootItem());
block_tree = true;
ui->treeObjects->clear();