asset browser: make dooodadset selector actually work

This commit is contained in:
sshumakov3
2020-11-17 22:43:53 +03:00
parent ab7019ca84
commit 1bdb81dd86
3 changed files with 33 additions and 1 deletions

View File

@@ -96,6 +96,7 @@ void ModelViewer::setModel(std::string const& filename)
makeCurrent();
PreviewRenderer::setModel(filename);
emit model_set(filename);
_last_selected_model = filename;
}
float ModelViewer::aspect_ratio() const
@@ -247,3 +248,23 @@ QStringList ModelViewer::getDoodadSetNames(const std::string& filename)
return std::move(names);
}
void ModelViewer::setActiveDoodadSet(const std::string& filename, const std::string& doodadset_name)
{
for (auto& wmo_instance : _wmo_instances)
{
if (wmo_instance.wmo->filename != filename)
{
continue;
}
int counter = 0;
for (auto& doodad_set : wmo_instance.wmo->doodadsets)
{
wmo_instance.change_doodadset(counter);
counter++;
}
break;
}
}

View File

@@ -38,6 +38,8 @@ namespace noggit
void setMoveSensitivity(float s) { _move_sensitivity = s / 30.0f; };
float getMoveSensitivity() { return _move_sensitivity; };
QStringList getDoodadSetNames(std::string const& filename);
void setActiveDoodadSet(std::string const& filename, std::string const& doodadset_name);
std::string& getLastSelectedModel() { return _last_selected_model; };
signals:
@@ -51,6 +53,7 @@ namespace noggit
QPointF _last_mouse_pos;
float moving, strafing, updown, mousedir, turn, lookat;
bool look;
std::string _last_selected_model;
QElapsedTimer _startup_time;
qreal _last_update = 0.f;

View File

@@ -94,7 +94,6 @@ AssetBrowserWidget::AssetBrowserWidget(QWidget *parent)
if (path.endsWith(".m2") || path.endsWith(".wmo"))
{
ui->viewport->setModel(path.toStdString());
}
}
}
@@ -105,6 +104,7 @@ AssetBrowserWidget::AssetBrowserWidget(QWidget *parent)
,[=] (const std::string& filename)
{
viewport_overlay_ui->doodadSetSelector->insertItems(0, ui->viewport->getDoodadSetNames(filename));
viewport_overlay_ui->doodadSetSelector->setVisible(QString::fromStdString(filename).endsWith(".wmo"));
}
);
@@ -198,6 +198,14 @@ AssetBrowserWidget::AssetBrowserWidget(QWidget *parent)
}
);
connect(viewport_overlay_ui->doodadSetSelector, qOverload<int>(&QComboBox::currentIndexChanged)
,[this](int index)
{
ui->viewport->setActiveDoodadSet(ui->viewport->getLastSelectedModel(),
viewport_overlay_ui->doodadSetSelector->currentText().toStdString());
}
);
// Render toggles
connect(viewport_overlay_ui->toggleWMOButton, &QPushButton::clicked,
[this]() {ui->viewport->_draw_wmo.toggle();});