1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-04-22 20:17:46 +00:00

Hide FMV by default, toggle with a menu action

This commit is contained in:
Joshua Goins 2023-12-10 07:29:51 -05:00
parent 09e1d25d09
commit 34082479ed
4 changed files with 46 additions and 3 deletions

View file

@ -18,9 +18,14 @@ class FullModelViewer : public QMainWindow
public:
explicit FullModelViewer(GameData *data, FileCache &cache, QWidget *parent = nullptr);
void showEvent(QShowEvent *event) override;
void hideEvent(QHideEvent *event) override;
void closeEvent(QCloseEvent *event) override;
Q_SIGNALS:
void gearChanged();
void loadingChanged(bool loading);
void visibleChanged();
public Q_SLOTS:
void clear();

View file

@ -5,6 +5,7 @@
#include "boneeditor.h"
#include "magic_enum.hpp"
#include <QCloseEvent>
#include <QFileDialog>
#include <QFormLayout>
#include <QGroupBox>
@ -19,6 +20,7 @@ FullModelViewer::FullModelViewer(GameData *data, FileCache &cache, QWidget *pare
setWindowTitle(QStringLiteral("Full Model Viewer"));
setMinimumWidth(1280);
setMinimumHeight(720);
setAttribute(Qt::WA_DeleteOnClose, false);
auto dummyWidget = new QWidget();
setCentralWidget(dummyWidget);
@ -136,6 +138,25 @@ FullModelViewer::FullModelViewer(GameData *data, FileCache &cache, QWidget *pare
reloadGear();
}
void FullModelViewer::showEvent(QShowEvent *event)
{
Q_EMIT visibleChanged();
QWidget::showEvent(event);
}
void FullModelViewer::hideEvent(QHideEvent *event)
{
Q_EMIT visibleChanged();
QWidget::hideEvent(event);
}
void FullModelViewer::closeEvent(QCloseEvent *event)
{
event->setAccepted(true);
hide();
QWidget::closeEvent(event);
}
void FullModelViewer::clear()
{
topSlot.reset();

View file

@ -54,13 +54,25 @@ MainWindow::MainWindow(GameData *in_data)
connect(fullModelViewer, &FullModelViewer::loadingChanged, this, [this](const bool loading) {
gearView->setFMVAvailable(!loading);
});
fullModelViewer->show();
}
void MainWindow::setupAdditionalMenus(QMenuBar *menuBar)
{
auto toolsMenu = menuBar->addMenu(QStringLiteral("Tools"));
auto fmvMenu = toolsMenu->addAction(QStringLiteral("Full Model viewer"));
fmvMenu->setCheckable(true);
connect(fmvMenu, &QAction::toggled, [this](bool toggled) {
if (toggled) {
fullModelViewer->show();
} else {
fullModelViewer->hide();
}
});
connect(fullModelViewer, &FullModelViewer::visibleChanged, this, [this, fmvMenu] {
fmvMenu->setChecked(fullModelViewer->isVisible());
});
auto cmpEditorMenu = toolsMenu->addAction(QStringLiteral("CMP Editor"));
cmpEditorMenu->setIcon(QIcon::fromTheme(QStringLiteral("document-edit")));
connect(cmpEditorMenu, &QAction::triggered, [this] {

View file

@ -24,10 +24,11 @@ void VulkanWindow::exposeEvent(QExposeEvent *)
m_initialized = true;
auto surface = m_instance->surfaceForWindow(this);
if (!m_renderer->initSwapchain(surface, width() * screen()->devicePixelRatio(), height() * screen()->devicePixelRatio()))
if (!m_renderer->initSwapchain(surface, width() * screen()->devicePixelRatio(), height() * screen()->devicePixelRatio())) {
m_initialized = false;
else
} else {
render();
}
}
if (!isExposed() && m_initialized) {
@ -113,6 +114,10 @@ bool VulkanWindow::event(QEvent *e)
void VulkanWindow::render()
{
if (!m_initialized) {
return;
}
ImGui::SetCurrentContext(m_renderer->ctx);
auto &io = ImGui::GetIO();