asset browser: make dooodadset selector actually work
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();});
|
||||
|
||||
Reference in New Issue
Block a user