Archived
1
Fork 0
This repository has been archived on 2025-04-12. You can view files and clone it, but cannot push or open issues or pull requests.
graph/tools/leveleditor/src/hierarchy.cpp

59 lines
1.5 KiB
C++
Raw Normal View History

2018-12-25 09:58:31 -05:00
#include "hierarchy.h"
#include <QVBoxLayout>
#include "context.h"
#include "ecs.h"
#include "worldmanager.h"
Hierarchy::Hierarchy(Context& context, QWidget* parent) : QWidget(parent), context(context) {
setWindowTitle("Hierarchy");
2018-12-25 20:17:56 -05:00
setWindowIcon(QIcon::fromTheme("view-sort-ascending"));
2018-12-25 09:58:31 -05:00
QVBoxLayout* layout = new QVBoxLayout();
setLayout(layout);
listView = new QListView();
layout->addWidget(listView);
2018-12-25 10:57:12 -05:00
connect(listView, &QListView::clicked, [&context](QModelIndex index) {
context.selectedEntities.clear();
if(index.isValid()) {
2018-12-26 07:03:05 -05:00
const auto entities = ECS::getWorldEntities(worldManager.getCurrentWorld());
2018-12-25 10:57:12 -05:00
2018-12-26 07:03:05 -05:00
QList<EntityID> filteredEntities;
for(auto entity : entities) {
const auto info = ECS::getComponent<InfoComponent>(entity);
if(info)
filteredEntities.push_back(entity);
}
context.selectedEntities.push_back(filteredEntities[index.row()]);
2018-12-25 10:57:12 -05:00
}
2018-12-25 22:38:26 -05:00
emit context.selectionChanged();
2018-12-25 10:57:12 -05:00
});
2018-12-25 09:58:31 -05:00
listModel = new QStringListModel();
listView->setModel(listModel);
2018-12-26 07:03:05 -05:00
connect(&context, &Context::entitiesChanged, this, &Hierarchy::rebuild);
2018-12-25 09:58:31 -05:00
rebuild();
}
void Hierarchy::rebuild() {
const auto entities = ECS::getWorldEntities(worldManager.getCurrentWorld());
QStringList list;
for(auto entity : entities) {
const auto info = ECS::getComponent<InfoComponent>(entity);
if(info)
list << info->name.c_str();
}
listModel->setStringList(list);
}