#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");
setWindowIcon(QIcon::fromTheme("view-sort-ascending"));
QVBoxLayout* layout = new QVBoxLayout();
setLayout(layout);
listView = new QListView();
layout->addWidget(listView);
connect(listView, &QListView::clicked, [&context](QModelIndex index) {
context.selectedEntities.clear();
if(index.isValid()) {
const auto entity = ECS::getWorldEntities(worldManager.getCurrentWorld())[index.row()];
context.selectedEntities.push_back(entity);
}
});
listModel = new QStringListModel();
listView->setModel(listModel);
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);