1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-04-26 05:37:46 +00:00

Fix most warnings

This commit is contained in:
Joshua Goins 2023-12-09 22:35:59 -05:00
parent 2e033e1ee1
commit 81e9c09be8
36 changed files with 134 additions and 118 deletions

View file

@ -10,7 +10,6 @@ target_link_libraries(novus-argcracker
Physis::Physis
Qt6::Core
Qt6::Core5Compat)
target_include_directories(novus-argcracker PUBLIC include)
if (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
target_compile_definitions(novus-argcracker PUBLIC MACOS)

View file

@ -30,7 +30,7 @@ FullModelViewer::FullModelViewer(GameData *data, FileCache &cache, QWidget *pare
auto datOpenAction = fileMenu->addAction(QStringLiteral("Load character DAT..."));
datOpenAction->setIcon(QIcon::fromTheme(QStringLiteral("document-open")));
connect(datOpenAction, &QAction::triggered, [=] {
connect(datOpenAction, &QAction::triggered, [this] {
auto fileName =
QFileDialog::getOpenFileName(nullptr, QStringLiteral("Open DAT File"), QStringLiteral("~"), QStringLiteral("FFXIV Character DAT File (*.dat)"));
@ -210,7 +210,7 @@ void FullModelViewer::reloadGear()
void FullModelViewer::updateHeightScaling(float scale)
{
auto &boneData = *gearView->part().skeleton;
for (int i = 0; i < boneData.num_bones; i++) {
for (uint32_t i = 0; i < boneData.num_bones; i++) {
const std::string_view name{boneData.bones[i].name};
if (name == "n_root") {
auto racialScaling = physis_cmp_get_racial_scaling_parameters(cmp, gearView->currentRace, gearView->currentSubrace);
@ -234,7 +234,7 @@ void FullModelViewer::updateHeightScaling(float scale)
void FullModelViewer::updateBustScaling(float scale)
{
auto &boneData = *gearView->part().skeleton;
for (int i = 0; i < boneData.num_bones; i++) {
for (uint32_t i = 0; i < boneData.num_bones; i++) {
const std::string_view name{boneData.bones[i].name};
if (name == "j_mune_l" || name == "j_mune_r") {
auto racialScaling = physis_cmp_get_racial_scaling_parameters(cmp, gearView->currentRace, gearView->currentSubrace);
@ -275,19 +275,19 @@ QGroupBox *FullModelViewer::addFaceGroup()
faceGroup->setLayout(faceGroupLayout);
auto faceRadio1 = new QRadioButton(QStringLiteral("Face 1"));
connect(faceRadio1, &QRadioButton::clicked, this, [=] {
connect(faceRadio1, &QRadioButton::clicked, this, [this] {
gearView->setFace(1);
});
faceGroupLayout->addWidget(faceRadio1);
auto faceRadio2 = new QRadioButton(QStringLiteral("Face 2"));
connect(faceRadio2, &QRadioButton::clicked, this, [=] {
connect(faceRadio2, &QRadioButton::clicked, this, [this] {
gearView->setFace(2);
});
faceGroupLayout->addWidget(faceRadio2);
auto faceRadio3 = new QRadioButton(QStringLiteral("Face 3"));
connect(faceRadio3, &QRadioButton::clicked, this, [=] {
connect(faceRadio3, &QRadioButton::clicked, this, [this] {
gearView->setFace(3);
});
faceGroupLayout->addWidget(faceRadio3);
@ -302,19 +302,19 @@ QGroupBox *FullModelViewer::addHairGroup()
hairGroup->setLayout(hairGroupLayout);
auto hairRadio1 = new QRadioButton(QStringLiteral("Hair 1"));
connect(hairRadio1, &QRadioButton::clicked, this, [=] {
connect(hairRadio1, &QRadioButton::clicked, this, [this] {
gearView->setHair(1);
});
hairGroupLayout->addWidget(hairRadio1);
auto hairRadio2 = new QRadioButton(QStringLiteral("Hair 2"));
connect(hairRadio2, &QRadioButton::clicked, this, [=] {
connect(hairRadio2, &QRadioButton::clicked, this, [this] {
gearView->setHair(2);
});
hairGroupLayout->addWidget(hairRadio2);
auto hairRadio3 = new QRadioButton(QStringLiteral("Hair 3"));
connect(hairRadio3, &QRadioButton::clicked, this, [=] {
connect(hairRadio3, &QRadioButton::clicked, this, [this] {
gearView->setHair(3);
});
hairGroupLayout->addWidget(hairRadio3);
@ -329,19 +329,19 @@ QGroupBox *FullModelViewer::addEarGroup()
earGroup->setLayout(earGroupLayout);
auto earRadio1 = new QRadioButton(QStringLiteral("Ears 1"));
connect(earRadio1, &QRadioButton::clicked, this, [=] {
connect(earRadio1, &QRadioButton::clicked, this, [this] {
gearView->setEar(1);
});
earGroupLayout->addWidget(earRadio1);
auto earRadio2 = new QRadioButton(QStringLiteral("Ears 2"));
connect(earRadio2, &QRadioButton::clicked, this, [=] {
connect(earRadio2, &QRadioButton::clicked, this, [this] {
gearView->setEar(2);
});
earGroupLayout->addWidget(earRadio2);
auto earRadio3 = new QRadioButton(QStringLiteral("Ears 3"));
connect(earRadio3, &QRadioButton::clicked, this, [=] {
connect(earRadio3, &QRadioButton::clicked, this, [this] {
gearView->setEar(3);
});
earGroupLayout->addWidget(earRadio3);
@ -356,19 +356,19 @@ QGroupBox *FullModelViewer::addTailGroup()
tailGroup->setLayout(tailGroupLayout);
auto tailRadio1 = new QRadioButton(QStringLiteral("Tail 1"));
connect(tailRadio1, &QRadioButton::clicked, this, [=] {
connect(tailRadio1, &QRadioButton::clicked, this, [this] {
gearView->setTail(1);
});
tailGroupLayout->addWidget(tailRadio1);
auto tailRadio2 = new QRadioButton(QStringLiteral("Tail 2"));
connect(tailRadio2, &QRadioButton::clicked, this, [=] {
connect(tailRadio2, &QRadioButton::clicked, this, [this] {
gearView->setTail(2);
});
tailGroupLayout->addWidget(tailRadio2);
auto tailRadio3 = new QRadioButton(QStringLiteral("Tail 3"));
connect(tailRadio3, &QRadioButton::clicked, this, [=] {
connect(tailRadio3, &QRadioButton::clicked, this, [this] {
gearView->setTail(3);
});
tailGroupLayout->addWidget(tailRadio3);

View file

@ -35,7 +35,7 @@ GearListModel::GearListModel(GameData *data, QObject *parent)
connect(exdFuture, &QFutureWatcher<physis_EXD>::finished, this, &GearListModel::finished);
QVector<int> pages;
for (int i = 0; i < exh->page_count; i++) {
for (uint32_t i = 0; i < exh->page_count; i++) {
pages.push_back(i);
}
@ -69,6 +69,7 @@ int GearListModel::rowCount(const QModelIndex &parent) const
int GearListModel::columnCount(const QModelIndex &parent) const
{
Q_UNUSED(parent)
return 1;
}
@ -147,10 +148,10 @@ void GearListModel::exdFinished(int index)
{
auto exd = exdFuture->resultAt(index);
for (int i = 0; i < exd.row_count; i++) {
for (unsigned int i = 0; i < exd.row_count; i++) {
const auto row = exd.row_data[i];
auto primaryModel = row.column_data[47].u_int64._0;
auto secondaryModel = row.column_data[48].u_int64._0;
// auto secondaryModel = row.column_data[48].u_int64._0;
int16_t parts[4];
memcpy(parts, &primaryModel, sizeof(int16_t) * 4);

View file

@ -49,10 +49,10 @@ GearView::GearView(GameData *data, FileCache &cache, QWidget *parent)
Q_EMIT loadingChanged(true);
QtConcurrent::run(QThreadPool::globalInstance(), [this] {
Q_UNUSED(QtConcurrent::run(QThreadPool::globalInstance(), [this] {
updatePart();
Q_EMIT loadingChanged(false);
});
}));
}
};
}
@ -61,7 +61,7 @@ std::vector<std::pair<Race, Subrace>> GearView::supportedRaces() const
{
std::vector<std::pair<Race, Subrace>> races;
for (const auto &gear : loadedGears) {
for (const auto [race, race_name] : magic_enum::enum_entries<Race>()) {
for (const auto &[race, race_name] : magic_enum::enum_entries<Race>()) {
for (const auto subrace : physis_get_supported_subraces(race).subraces) {
auto equip_path = physis_build_equipment_path(gear.info.modelInfo.primaryID, race, subrace, currentGender, gear.info.slot);
@ -314,7 +314,7 @@ void GearView::updatePart()
auto mdl = physis_mdl_parse(mdl_data);
std::vector<physis_Material> materials;
for (int i = 0; i < mdl.num_material_names; i++) {
for (uint32_t i = 0; i < mdl.num_material_names; i++) {
const char *material_name = mdl.material_names[i];
const std::string mtrl_path = gearAddition.info.getMtrlPath(material_name);
@ -375,7 +375,7 @@ void GearView::updatePart()
auto mdl = physis_mdl_parse(mdl_data);
std::vector<physis_Material> materials;
for (int i = 0; i < mdl.num_material_names; i++) {
for (uint32_t i = 0; i < mdl.num_material_names; i++) {
const char *material_name = mdl.material_names[i];
const std::string skinmtrl_path =
physis_build_face_material_path(physis_get_race_code(currentRace, currentSubrace, currentGender), *face, material_name);
@ -398,7 +398,7 @@ void GearView::updatePart()
auto mdl = physis_mdl_parse(mdl_data);
std::vector<physis_Material> materials;
for (int i = 0; i < mdl.num_material_names; i++) {
for (uint32_t i = 0; i < mdl.num_material_names; i++) {
const char *material_name = mdl.material_names[i];
const std::string skinmtrl_path =
physis_build_hair_material_path(physis_get_race_code(currentRace, currentSubrace, currentGender), *hair, material_name);
@ -421,7 +421,7 @@ void GearView::updatePart()
auto mdl = physis_mdl_parse(mdl_data);
std::vector<physis_Material> materials;
for (int i = 0; i < mdl.num_material_names; i++) {
for (uint32_t i = 0; i < mdl.num_material_names; i++) {
const char *material_name = mdl.material_names[i];
const std::string skinmtrl_path =
physis_build_ear_material_path(physis_get_race_code(currentRace, currentSubrace, currentGender), *ear, material_name);

View file

@ -36,13 +36,13 @@ MainWindow::MainWindow(GameData *in_data)
auto gearListWidget = new GearListWidget(&data);
gearListWidget->setMaximumWidth(350);
connect(gearListWidget, &GearListWidget::gearSelected, this, [=](const GearInfo &gear) {
connect(gearListWidget, &GearListWidget::gearSelected, this, [this](const GearInfo &gear) {
gearView->setGear(gear);
});
layout->addWidget(gearListWidget);
gearView = new SingleGearView(&data, cache);
connect(gearView, &SingleGearView::addToFullModelViewer, this, [=](GearInfo &info) {
connect(gearView, &SingleGearView::addToFullModelViewer, this, [this](GearInfo &info) {
fullModelViewer->addGear(info);
});
@ -51,7 +51,7 @@ MainWindow::MainWindow(GameData *in_data)
layout->addWidget(tabWidget);
fullModelViewer = new FullModelViewer(&data, cache);
connect(fullModelViewer, &FullModelViewer::loadingChanged, this, [=](const bool loading) {
connect(fullModelViewer, &FullModelViewer::loadingChanged, this, [this](const bool loading) {
gearView->setFMVAvailable(!loading);
});
fullModelViewer->show();

View file

@ -30,7 +30,7 @@ SettingsWindow::SettingsWindow(QWidget *parent)
outputBoxLayout->setContentsMargins(0, 0, 0, 0);
KConfig config(QStringLiteral("novusrc"));
KConfigGroup game = config.group("Armoury");
KConfigGroup game = config.group(QStringLiteral("Armoury"));
m_outputLineEdit = new QLineEdit();
m_outputLineEdit->setText(game.readEntry("PenumbraOutputDirectory"));
@ -67,6 +67,6 @@ SettingsWindow::SettingsWindow(QWidget *parent)
void SettingsWindow::applySettings()
{
KConfig config(QStringLiteral("novusrc"));
KConfigGroup game = config.group("Armoury");
KConfigGroup game = config.group(QStringLiteral("Armoury"));
game.writeEntry("PenumbraOutputDirectory", m_outputLineEdit->text());
}

View file

@ -134,16 +134,16 @@ SingleGearView::SingleGearView(GameData *data, FileCache &cache, QWidget *parent
Q_EMIT gotMDLPath();
}
});
connect(this, &SingleGearView::raceChanged, this, [=] {
connect(this, &SingleGearView::raceChanged, this, [this] {
gearView->setRace(currentRace);
});
connect(this, &SingleGearView::subraceChanged, this, [=] {
connect(this, &SingleGearView::subraceChanged, this, [this] {
gearView->setSubrace(currentSubrace);
});
connect(this, &SingleGearView::genderChanged, this, [=] {
connect(this, &SingleGearView::genderChanged, this, [this] {
gearView->setGender(currentGender);
});
connect(this, &SingleGearView::levelOfDetailChanged, this, [=] {
connect(this, &SingleGearView::levelOfDetailChanged, this, [this] {
gearView->setLevelOfDetail(currentLod);
});
@ -324,8 +324,8 @@ void SingleGearView::importModel(const QString &filename)
gearView->part().reloadModel(0);
KConfig config(QStringLiteral("novusrc"));
KConfigGroup game = config.group("Armoury");
QString outputDirectory = game.readEntry("PenumbraOutputDirectory");
KConfigGroup game = config.group(QStringLiteral("Armoury"));
QString outputDirectory = game.readEntry(QStringLiteral("PenumbraOutputDirectory"));
auto buffer = physis_mdl_write(&mdl.model);
QFile file(QStringLiteral("%1/%2").arg(outputDirectory, gearView->getLoadedGearPath()));

View file

@ -15,8 +15,11 @@ protected:
virtual void setupFileMenu(QMenu *menu)
{
Q_UNUSED(menu)
}
virtual void setupAdditionalMenus(QMenuBar *menuBar)
{
Q_UNUSED(menuBar)
}
};

View file

@ -2,6 +2,7 @@
# SPDX-License-Identifier: CC0-1.0
set(BUILD_SHARED_LIBS OFF)
add_compile_options(-w)
find_package(Corrosion REQUIRED)

2
extern/dxbc vendored

@ -1 +1 @@
Subproject commit 9db12735951da73adb2818c492ce70c80b663f75
Subproject commit 907b70249bcc4c0889778b0c47902ef359afacc0

View file

@ -33,7 +33,7 @@ MainWindow::MainWindow(GameData *data)
auto listWidget = new QListWidget();
auto names = physis_gamedata_get_all_sheet_names(data);
for (int i = 0; i < names.name_count; i++) {
for (uint32_t i = 0; i < names.name_count; i++) {
listWidget->addItem(QString::fromStdString(names.names[i]));
}

View file

@ -51,7 +51,7 @@ MainWindow::MainWindow()
auto formLayout = new QFormLayout();
KConfig config(QStringLiteral("novusrc"));
KConfigGroup game = config.group("Game");
KConfigGroup game = config.group(QStringLiteral("Game"));
auto gameCombo = new QComboBox();
formLayout->addRow(QStringLiteral("Current Game"), gameCombo);

View file

@ -42,7 +42,7 @@ void MainWindow::setupFileMenu(QMenu *menu)
{
auto openMDLFile = menu->addAction(QStringLiteral("Open MDL..."));
openMDLFile->setIcon(QIcon::fromTheme(QStringLiteral("document-open")));
connect(openMDLFile, &QAction::triggered, [=] {
connect(openMDLFile, &QAction::triggered, [this] {
auto fileName = QFileDialog::getOpenFileName(nullptr, QStringLiteral("Open MDL File"), QStringLiteral("~"), QStringLiteral("FFXIV Model File (*.mdl)"));
auto buffer = physis_read_file(fileName.toStdString().c_str());

View file

@ -58,6 +58,7 @@ void CmpPart::load(physis_Buffer file)
raceListWidget->expandAll();
connect(raceListWidget, &QTreeWidget::itemClicked, [this](QTreeWidgetItem *item, int column) {
Q_UNUSED(column)
if (auto treeData = qvariant_cast<RaceTreeData *>(item->data(0, Qt::UserRole))) {
loadRaceData(treeData->race, treeData->subrace);
}

View file

@ -75,7 +75,7 @@ void EXDPart::loadSheet(const QString &name, physis_Buffer buffer)
headerFormLayout->addRow(QStringLiteral("Num Pages"), new QLabel(QString::number(exh->page_count)));
headerFormLayout->addRow(QStringLiteral("Num Languages"), new QLabel(QString::number(exh->language_count)));
for (int i = 0; i < exh->page_count; i++) {
for (uint32_t i = 0; i < exh->page_count; i++) {
auto tableWidget = new QTableWidget();
tableWidget->setColumnCount(exh->column_count);
@ -85,7 +85,7 @@ void EXDPart::loadSheet(const QString &name, physis_Buffer buffer)
tableWidget->setRowCount(exd.row_count);
for (int z = 0; z < exd.column_count; z++) {
for (unsigned int z = 0; z < exd.column_count; z++) {
auto columnData = exd.row_data[0].column_data[z];
QString columnType;
@ -125,7 +125,7 @@ void EXDPart::loadSheet(const QString &name, physis_Buffer buffer)
break;
}
if (definitionList.contains(z)) {
if (definitionList.contains(static_cast<int>(z))) {
columnType = definitionList[z].toObject()[QLatin1String("name")].toString();
}
@ -135,8 +135,8 @@ void EXDPart::loadSheet(const QString &name, physis_Buffer buffer)
tableWidget->setHorizontalHeaderItem(z, headerItem);
}
for (int j = 0; j < exd.row_count; j++) {
for (int z = 0; z < exd.column_count; z++) {
for (unsigned int j = 0; j < exd.row_count; j++) {
for (unsigned int z = 0; z < exd.column_count; z++) {
auto columnData = exd.row_data[j].column_data[z];
QString columnString;
@ -185,7 +185,7 @@ void EXDPart::loadSheet(const QString &name, physis_Buffer buffer)
break;
}
if (definitionList.contains(z)) {
if (definitionList.contains(static_cast<int>(z))) {
auto definition = definitionList[z].toObject();
if (definition.contains(QLatin1String("converter"))
&& definition[QLatin1String("converter")].toObject()[QLatin1String("type")].toString() == QLatin1String("link")) {
@ -193,7 +193,7 @@ void EXDPart::loadSheet(const QString &name, physis_Buffer buffer)
if (cachedExcelSheets.contains(linkName)) {
auto cachedExcel = cachedExcelSheets[linkName];
if (columnRow < cachedExcel.exd.row_count) {
if (static_cast<unsigned int>(columnRow) < cachedExcel.exd.row_count) {
columnString = QString::fromStdString(cachedExcel.exd.row_data[columnRow].column_data->string._0);
}
}
@ -214,7 +214,7 @@ void EXDPart::loadSheet(const QString &name, physis_Buffer buffer)
Language EXDPart::getSuitableLanguage(physis_EXH *pExh)
{
for (int i = 0; i < pExh->language_count; i++) {
for (uint32_t i = 0; i < pExh->language_count; i++) {
if (pExh->languages[i] == Language::English) {
return Language::English;
}

View file

@ -24,7 +24,7 @@ void QHexBuffer::replace(qint64 offset, const QByteArray &data)
this->insert(offset, data);
}
void QHexBuffer::read(char *data, int size)
void QHexBuffer::readRaw(char *data, int size)
{
QBuffer *buffer = new QBuffer(this);
buffer->setData(data, size);
@ -32,10 +32,10 @@ void QHexBuffer::read(char *data, int size)
if (!buffer->isOpen())
buffer->open(QBuffer::ReadWrite);
this->read(buffer);
this->readDevice(buffer);
}
void QHexBuffer::read(const QByteArray &ba)
void QHexBuffer::readArray(const QByteArray &ba)
{
QBuffer *buffer = new QBuffer(this);
@ -43,7 +43,7 @@ void QHexBuffer::read(const QByteArray &ba)
if (!buffer->isOpen())
buffer->open(QBuffer::ReadWrite);
this->read(buffer);
this->readDevice(buffer);
}
#include "moc_qhexbuffer.cpp"

View file

@ -17,16 +17,16 @@ public:
public:
virtual uchar at(qint64 idx);
virtual void replace(qint64 offset, const QByteArray &data);
virtual void read(char *data, int size);
virtual void read(const QByteArray &ba);
virtual void readRaw(char *data, int size);
virtual void readArray(const QByteArray &ba);
public:
virtual qint64 length() const = 0;
virtual void insert(qint64 offset, const QByteArray &data) = 0;
virtual void remove(qint64 offset, int length) = 0;
virtual QByteArray read(qint64 offset, int length) = 0;
virtual bool read(QIODevice *iodevice) = 0;
virtual void write(QIODevice *iodevice) = 0;
virtual bool readDevice(QIODevice *iodevice) = 0;
virtual void writeDevice(QIODevice *iodevice) = 0;
virtual qint64 indexOf(const QByteArray &ba, qint64 from) = 0;
virtual qint64 lastIndexOf(const QByteArray &ba, qint64 from) = 0;

View file

@ -28,12 +28,12 @@ QByteArray QMemoryBuffer::read(qint64 offset, int length)
return m_buffer.mid(static_cast<int>(offset), length);
}
bool QMemoryBuffer::read(QIODevice *device)
bool QMemoryBuffer::readDevice(QIODevice *device)
{
m_buffer = device->readAll();
return true;
}
void QMemoryBuffer::write(QIODevice *device)
void QMemoryBuffer::writeDevice(QIODevice *device)
{
device->write(m_buffer);
}

View file

@ -16,8 +16,8 @@ public:
void insert(qint64 offset, const QByteArray &data) override;
void remove(qint64 offset, int length) override;
QByteArray read(qint64 offset, int length) override;
bool read(QIODevice *device) override;
void write(QIODevice *device) override;
bool readDevice(QIODevice *device) override;
void writeDevice(QIODevice *device) override;
qint64 indexOf(const QByteArray &ba, qint64 from) override;
qint64 lastIndexOf(const QByteArray &ba, qint64 from) override;

View file

@ -33,7 +33,7 @@ QByteArray QMemoryRefBuffer::read(qint64 offset, int length)
return m_buffer->read(length);
}
bool QMemoryRefBuffer::read(QIODevice *device)
bool QMemoryRefBuffer::readDevice(QIODevice *device)
{
m_buffer = qobject_cast<QBuffer *>(device);
if (m_buffer) {
@ -43,7 +43,7 @@ bool QMemoryRefBuffer::read(QIODevice *device)
return false;
}
void QMemoryRefBuffer::write(QIODevice *device)
void QMemoryRefBuffer::writeDevice(QIODevice *device)
{
m_buffer->seek(0);
if (m_buffer->size() < INT_MAX) {

View file

@ -16,8 +16,8 @@ public:
void insert(qint64 offset, const QByteArray &data) override;
void remove(qint64 offset, int length) override;
QByteArray read(qint64 offset, int length) override;
bool read(QIODevice *device) override;
void write(QIODevice *device) override;
bool readDevice(QIODevice *device) override;
void writeDevice(QIODevice *device) override;
qint64 indexOf(const QByteArray &ba, qint64 from) override;
qint64 lastIndexOf(const QByteArray &ba, qint64 from) override;

View file

@ -186,16 +186,22 @@ void QHexDocument::replace(qint64 offset, uchar b)
void QHexDocument::insert(qint64 offset, const QByteArray &data)
{
Q_UNUSED(offset)
Q_UNUSED(data)
Q_EMIT documentChanged();
}
void QHexDocument::replace(qint64 offset, const QByteArray &data)
{
Q_UNUSED(offset)
Q_UNUSED(data)
Q_EMIT documentChanged();
}
void QHexDocument::remove(qint64 offset, int len)
{
Q_UNUSED(offset)
Q_UNUSED(len)
Q_EMIT documentChanged();
}
@ -209,7 +215,7 @@ bool QHexDocument::saveTo(QIODevice *device)
if (!device->isWritable())
return false;
m_buffer->write(device);
m_buffer->writeDevice(device);
return true;
}

View file

@ -92,7 +92,7 @@ QHexDocument *QHexDocument::fromDevice(QIODevice *iodevice, QObject *parent)
}
QHexBuffer *hexbuffer = new T();
if (hexbuffer->read(iodevice)) {
if (hexbuffer->readDevice(iodevice)) {
if (needsclose)
iodevice->close();
@ -119,7 +119,7 @@ template<typename T>
QHexDocument *QHexDocument::fromMemory(char *data, int size, QObject *parent)
{
QHexBuffer *hexbuffer = new T();
hexbuffer->read(data, size);
hexbuffer->readRaw(data, size);
return new QHexDocument(hexbuffer, parent);
}
@ -127,6 +127,6 @@ template<typename T>
QHexDocument *QHexDocument::fromMemory(const QByteArray &ba, QObject *parent)
{
QHexBuffer *hexbuffer = new T();
hexbuffer->read(ba);
hexbuffer->readArray(ba);
return new QHexDocument(hexbuffer, parent);
}

View file

@ -19,16 +19,16 @@ public:
void setReadOnly(bool b);
protected:
virtual bool event(QEvent *e);
virtual void keyPressEvent(QKeyEvent *e);
virtual void mousePressEvent(QMouseEvent *e);
virtual void mouseMoveEvent(QMouseEvent *e);
virtual void mouseReleaseEvent(QMouseEvent *e);
virtual void focusInEvent(QFocusEvent *e);
virtual void focusOutEvent(QFocusEvent *e);
virtual void wheelEvent(QWheelEvent *e);
virtual void resizeEvent(QResizeEvent *e);
virtual void paintEvent(QPaintEvent *e);
bool event(QEvent *e) override;
void keyPressEvent(QKeyEvent *e) override;
void mousePressEvent(QMouseEvent *e) override;
void mouseMoveEvent(QMouseEvent *e) override;
void mouseReleaseEvent(QMouseEvent *e) override;
void focusInEvent(QFocusEvent *e) override;
void focusOutEvent(QFocusEvent *e) override;
void wheelEvent(QWheelEvent *e) override;
void resizeEvent(QResizeEvent *e) override;
void paintEvent(QPaintEvent *e) override;
private Q_SLOTS:
void renderCurrentLine();

View file

@ -21,12 +21,12 @@ void exportModel(const QString &name, const physis_MDL &model, const physis_Skel
auto &gltfSkeletonNode = gltfModel.nodes.emplace_back();
gltfSkeletonNode.name = skeleton.root_bone->name;
for (int i = 0; i < model.num_affected_bones; i++) {
for (uint32_t i = 0; i < model.num_affected_bones; i++) {
auto &node = gltfModel.nodes.emplace_back();
node.name = model.affected_bone_names[i];
int real_bone_id = 0;
for (int k = 0; k < skeleton.num_bones; k++) {
for (uint32_t k = 0; k < skeleton.num_bones; k++) {
if (strcmp(skeleton.bones[k].name, model.affected_bone_names[i]) == 0) {
real_bone_id = k;
}
@ -39,9 +39,9 @@ void exportModel(const QString &name, const physis_MDL &model, const physis_Skel
}
// setup parenting
for (int i = 0; i < model.num_affected_bones; i++) {
for (uint32_t i = 0; i < model.num_affected_bones; i++) {
int real_bone_id = 0;
for (int k = 0; k < skeleton.num_bones; k++) {
for (uint32_t k = 0; k < skeleton.num_bones; k++) {
if (strcmp(skeleton.bones[k].name, model.affected_bone_names[i]) == 0) {
real_bone_id = k;
}
@ -50,7 +50,7 @@ void exportModel(const QString &name, const physis_MDL &model, const physis_Skel
auto &real_bone = skeleton.bones[real_bone_id];
if (real_bone.parent_bone != nullptr) {
bool found = false;
for (int k = 0; k < model.num_affected_bones; k++) {
for (uint32_t k = 0; k < model.num_affected_bones; k++) {
if (strcmp(model.affected_bone_names[k], real_bone.parent_bone->name) == 0) {
gltfModel.nodes[k + 1].children.push_back(i + 1); // +1 for the skeleton node taking up the first index
found = true;
@ -70,7 +70,7 @@ void exportModel(const QString &name, const physis_MDL &model, const physis_Skel
auto &gltfSkin = gltfModel.skins.emplace_back();
gltfSkin.name = gltfSkeletonNode.name;
gltfSkin.skeleton = 0;
for (int i = 1; i < gltfModel.nodes.size(); i++) {
for (size_t i = 1; i < gltfModel.nodes.size(); i++) {
gltfSkin.joints.push_back(i);
}
@ -88,9 +88,9 @@ void exportModel(const QString &name, const physis_MDL &model, const physis_Skel
inverseBufferView.buffer = gltfModel.buffers.size();
auto &inverseBuffer = gltfModel.buffers.emplace_back();
for (int i = 0; i < model.num_affected_bones; i++) {
for (uint32_t i = 0; i < model.num_affected_bones; i++) {
int real_bone_id = 0;
for (int k = 0; k < skeleton.num_bones; k++) {
for (uint32_t k = 0; k < skeleton.num_bones; k++) {
if (strcmp(skeleton.bones[k].name, model.affected_bone_names[i]) == 0) {
real_bone_id = k;
}
@ -106,7 +106,7 @@ void exportModel(const QString &name, const physis_MDL &model, const physis_Skel
inverseBufferView.byteLength = inverseBuffer.data.size();
}
for (int i = 0; i < lod.num_parts; i++) {
for (uint32_t i = 0; i < lod.num_parts; i++) {
gltfSkeletonNode.children.push_back(gltfModel.nodes.size());
auto &gltfNode = gltfModel.nodes.emplace_back();

View file

@ -30,7 +30,6 @@ void importModel(physis_MDL &existingModel, const QString &filename)
qInfo() << "Importing" << node.name;
const QStringList parts = QString::fromStdString(node.name).split(QLatin1Char(' '));
const QString &name = parts[0];
const QStringList lodPartNumber = parts[2].split(QLatin1Char('.'));
// const int lodNumber = lodPartNumber[0].toInt();
@ -69,7 +68,7 @@ void importModel(physis_MDL &existingModel, const QString &filename)
qInfo() << "- Importing mesh of" << vertexAccessor.count << "vertices and" << indexAccessor.count << "indices.";
std::vector<Vertex> newVertices;
for (int i = 0; i < vertexAccessor.count; i++) {
for (uint32_t i = 0; i < vertexAccessor.count; i++) {
auto vertexData = (glm::vec3 *)(vertexBuffer.data.data() + (std::max(vertexView.byteStride, sizeof(float) * 3) * i) + vertexView.byteOffset
+ vertexAccessor.byteOffset);

View file

@ -140,8 +140,8 @@ void MDLPart::reloadBoneData()
for (auto &model : models) {
// we want to map the actual affected bones to bone ids
std::map<int, int> boneMapping;
for (int i = 0; i < model.model.num_affected_bones; i++) {
for (int k = 0; k < skeleton->num_bones; k++) {
for (uint32_t i = 0; i < model.model.num_affected_bones; i++) {
for (uint32_t k = 0; k < skeleton->num_bones; k++) {
if (std::string_view{skeleton->bones[k].name} == std::string_view{model.model.affected_bone_names[i]}) {
boneMapping[i] = k;
}
@ -149,7 +149,7 @@ void MDLPart::reloadBoneData()
}
std::vector<glm::mat4> deformBones(model.model.num_affected_bones);
for (int i = 0; i < model.model.num_affected_bones; i++) {
for (uint32_t i = 0; i < model.model.num_affected_bones; i++) {
deformBones[i] = glm::mat4(1.0f);
}
@ -159,7 +159,7 @@ void MDLPart::reloadBoneData()
for (int i = 0; i < deform.num_bones; i++) {
auto deformBone = deform.bones[i];
for (int k = 0; k < model.model.num_affected_bones; k++) {
for (uint32_t k = 0; k < model.model.num_affected_bones; k++) {
if (std::string_view{model.model.affected_bone_names[k]} == std::string_view{deformBone.name}) {
deformBones[k] = glm::mat4{deformBone.deform[0],
deformBone.deform[1],
@ -182,7 +182,7 @@ void MDLPart::reloadBoneData()
}
}
for (int i = 0; i < model.model.num_affected_bones; i++) {
for (uint32_t i = 0; i < model.model.num_affected_bones; i++) {
const int originalBoneId = boneMapping[i];
model.boneData[i] = boneData[originalBoneId].localTransform * deformBones[i] * boneData[originalBoneId].inversePose;
}
@ -194,7 +194,7 @@ RenderMaterial MDLPart::createMaterial(const physis_Material &material)
{
RenderMaterial newMaterial;
for (int i = 0; i < material.num_textures; i++) {
for (uint32_t i = 0; i < material.num_textures; i++) {
std::string t = material.textures[i];
if (t.find("skin") != std::string::npos) {
@ -209,7 +209,7 @@ RenderMaterial MDLPart::createMaterial(const physis_Material &material)
auto tex = renderer->addTexture(texture.width, texture.height, texture.rgba, texture.rgba_size);
newMaterial.multiTexture = new RenderTexture(tex);
}
} break;
case 'd': {
auto texture = physis_texture_parse(cache.lookupFile(QLatin1String(material.textures[i])));
auto tex = renderer->addTexture(texture.width, texture.height, texture.rgba, texture.rgba_size);
@ -248,7 +248,7 @@ void MDLPart::calculateBoneInversePose(physis_Skeleton &skeleton, physis_Bone &b
boneData[bone.index].inversePose = parentMatrix * local;
for (int i = 0; i < skeleton.num_bones; i++) {
for (uint32_t i = 0; i < skeleton.num_bones; i++) {
if (skeleton.bones[i].parent_bone != nullptr && std::string_view{skeleton.bones[i].parent_bone->name} == std::string_view{bone.name}) {
calculateBoneInversePose(skeleton, skeleton.bones[i], &bone);
}
@ -267,7 +267,7 @@ void MDLPart::calculateBone(physis_Skeleton &skeleton, physis_Bone &bone, const
boneData[bone.index].localTransform = parent_matrix * local;
boneData[bone.index].finalTransform = parent_matrix;
for (int i = 0; i < skeleton.num_bones; i++) {
for (uint32_t i = 0; i < skeleton.num_bones; i++) {
if (skeleton.bones[i].parent_bone != nullptr && std::string_view{skeleton.bones[i].parent_bone->name} == std::string_view{bone.name}) {
calculateBone(skeleton, skeleton.bones[i], &bone);
}

View file

@ -76,7 +76,7 @@ bool VulkanWindow::event(QEvent *e)
part->cameraDistance * part->pitch,
part->cameraDistance * std::cos(part->yaw));
const glm::quat rot = glm::quatLookAt((part->position + position) - part->position, {0, 1, 0});
// const glm::quat rot = glm::quatLookAt((part->position + position) - part->position, {0, 1, 0});
part->position += glm::vec3{0, 1, 0} * (float)deltaY * 0.01f;
part->position.y = std::clamp(part->position.y, 0.0f, 10.0f);
@ -92,6 +92,8 @@ bool VulkanWindow::event(QEvent *e)
part->cameraDistance -= (scrollEvent->angleDelta().y() / 120.0f) * 0.1f; // FIXME: why 120?
part->cameraDistance = std::clamp(part->cameraDistance, 1.0f, 4.0f);
} break;
default:
break;
}
return QWindow::event(e);

View file

@ -22,7 +22,7 @@ void addItem(physis_Skeleton &skeleton, physis_Bone &bone, QTreeWidget *widget,
parent_item->addChild(item);
}
for (int i = 0; i < skeleton.num_bones; i++) {
for (uint32_t i = 0; i < skeleton.num_bones; i++) {
if (skeleton.bones[i].parent_bone != nullptr && strcmp(skeleton.bones[i].parent_bone->name, bone.name) == 0)
addItem(skeleton, skeleton.bones[i], widget, item);
}
@ -74,7 +74,7 @@ SklbPart::SklbPart(QWidget *parent)
void SklbPart::treeItemClicked(QTreeWidgetItem *item, int column)
{
for (int i = 0; i < skeleton.num_bones; i++) {
for (uint32_t i = 0; i < skeleton.num_bones; i++) {
if (strcmp(skeleton.bones[i].name, item->text(column).toStdString().c_str()) == 0) {
currentPosition = glm::make_vec3(skeleton.bones[i].position);
currentRotation = glm::make_quat(skeleton.bones[i].rotation);

View file

@ -3,6 +3,7 @@
add_library(renderer STATIC)
target_sources(renderer PRIVATE
include/renderer.hpp
src/renderer.cpp
src/imguipass.cpp
src/imguipass.h)
@ -13,7 +14,7 @@ qt_add_resources(renderer "shaders"
shaders/imgui.vert.spv
shaders/mesh.frag.spv
shaders/mesh.vert.spv)
target_include_directories(renderer PUBLIC include)
target_include_directories(renderer PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_link_libraries(renderer PUBLIC
Qt6::Core
Vulkan::Vulkan

View file

@ -69,7 +69,7 @@ public:
void resize(VkSurfaceKHR surface, int width, int height);
RenderModel addModel(const physis_MDL &model, int lod);
void reloadModel(RenderModel &model, int lod);
void reloadModel(RenderModel &model, uint32_t lod);
RenderTexture addTexture(uint32_t width, uint32_t height, const uint8_t *data, uint32_t data_size);
void render(std::vector<RenderModel> models);

View file

@ -36,6 +36,10 @@ VKAPI_ATTR VkBool32 VKAPI_CALL DebugCallback(VkDebugUtilsMessageSeverityFlagBits
const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData,
void *pUserData)
{
Q_UNUSED(messageSeverity)
Q_UNUSED(messageType)
Q_UNUSED(pUserData)
qInfo() << pCallbackData->pMessage;
return VK_FALSE;
@ -52,8 +56,6 @@ Renderer::Renderer()
ImGui::StyleColorsDark();
VkApplicationInfo applicationInfo = {};
std::vector<const char *> instanceExtensions = {"VK_EXT_debug_utils"};
uint32_t extensionCount = 0;
@ -189,8 +191,6 @@ Renderer::Renderer()
deviceCeateInfo.ppEnabledExtensionNames = deviceExtensions.data();
deviceCeateInfo.enabledExtensionCount = static_cast<uint32_t>(deviceExtensions.size());
VkPhysicalDeviceFeatures enabledFeatures = {};
vkCreateDevice(physicalDevice, &deviceCeateInfo, nullptr, &device);
// get queues
@ -488,7 +488,7 @@ void Renderer::render(std::vector<RenderModel> models)
continue;
for (const auto &part : model.parts) {
if (part.materialIndex >= model.materials.size()) {
if (static_cast<size_t>(part.materialIndex) >= model.materials.size()) {
continue;
}
@ -643,14 +643,14 @@ RenderModel Renderer::addModel(const physis_MDL &model, int lod)
return renderModel;
}
void Renderer::reloadModel(RenderModel &renderModel, int lod)
void Renderer::reloadModel(RenderModel &renderModel, uint32_t lod)
{
if (lod < 0 || lod > renderModel.model.num_lod)
if (lod > renderModel.model.num_lod)
return;
renderModel.parts.clear();
for (int i = 0; i < renderModel.model.lods[lod].num_parts; i++) {
for (uint32_t i = 0; i < renderModel.model.lods[lod].num_parts; i++) {
RenderPart renderPart;
const physis_Part part = renderModel.model.lods[lod].parts[i];
@ -1173,6 +1173,8 @@ void Renderer::inlineTransitionImageLayout(VkCommandBuffer commandBuffer,
VkPipelineStageFlags src_stage_mask,
VkPipelineStageFlags dst_stage_mask)
{
Q_UNUSED(format)
VkImageMemoryBarrier barrier = {};
barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
barrier.oldLayout = oldLayout;

View file

@ -25,7 +25,7 @@ FileTreeModel::FileTreeModel(bool showUnknown, const QString &gamePath, GameData
if (info.exists() && (info.completeSuffix() == QStringLiteral("win32.index"))) {
std::string pathStd = info.filePath().toStdString();
auto indexEntries = physis_index_parse(pathStd.c_str());
for (int i = 0; i < indexEntries.num_entries; i++) {
for (uint32_t i = 0; i < indexEntries.num_entries; i++) {
if (knownDirHashes.contains(indexEntries.dir_entries[i])) {
QString name;
if (m_database.knowsFile(indexEntries.filename_entries[i])) {
@ -56,6 +56,7 @@ int FileTreeModel::rowCount(const QModelIndex &parent) const
int FileTreeModel::columnCount(const QModelIndex &parent) const
{
Q_UNUSED(parent)
return 1;
}

View file

@ -53,7 +53,7 @@ FileTreeWindow::FileTreeWindow(const QString &gamePath, GameData *data, QWidget
auto menu = new QMenu();
auto extractAction = menu->addAction(QStringLiteral("Extract.."));
connect(extractAction, &QAction::triggered, this, [=] {
connect(extractAction, &QAction::triggered, this, [this, path] {
Q_EMIT extractFile(path);
});

View file

@ -185,7 +185,7 @@ int main(int argc, char *argv[])
auto sheetNames = physis_gamedata_get_all_sheet_names(data);
for (int i = 0; i < sheetNames.name_count; i++) {
for (uint32_t i = 0; i < sheetNames.name_count; i++) {
auto sheetName = sheetNames.names[i];
auto nameLowercase = QString::fromStdString(sheetName).toLower().toStdString();
@ -195,8 +195,8 @@ int main(int argc, char *argv[])
std::string headerNameStd = headerName.toStdString();
auto exh = physis_parse_excel_sheet_header(physis_gamedata_extract_file(data, headerNameStd.c_str()));
for (int j = 0; j < exh->page_count; j++) {
for (int z = 0; z < exh->language_count; z++) {
for (uint32_t j = 0; j < exh->page_count; j++) {
for (uint32_t z = 0; z < exh->language_count; z++) {
std::string path = physis_gamedata_get_exd_filename(nameLowercase.c_str(), exh, exh->languages[z], j);
database.addFile(QStringLiteral("exd/") + QString::fromStdString(path));

View file

@ -50,7 +50,7 @@ MainWindow::MainWindow(const QString &gamePath, GameData *data)
file.write(reinterpret_cast<const char *>(fileData.data), fileData.size);
}
});
connect(tree, &FileTreeWindow::pathSelected, this, [=](const QString &path) {
connect(tree, &FileTreeWindow::pathSelected, this, [this](const QString &path) {
refreshParts(path);
});
tree->setMaximumWidth(200);