From ebae9caece1a91e8775c19b4765e141ecb416604 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sat, 27 Apr 2024 14:01:08 -0400 Subject: [PATCH] Fix the material editor not working with the new renderer --- mateditor/src/materialview.cpp | 8 +++++++- renderer/src/gamerenderer.cpp | 6 +++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/mateditor/src/materialview.cpp b/mateditor/src/materialview.cpp index d137ed7..bca9cfb 100644 --- a/mateditor/src/materialview.cpp +++ b/mateditor/src/materialview.cpp @@ -33,7 +33,13 @@ void MaterialView::addSphere(physis_Material material) { mdlPart->clear(); - mdlPart->addModel(m_mdl, false, glm::vec3(), QStringLiteral(""), {material}, 0); + const int raceCode = physis_get_race_code(Race::Hyur, Subrace::Midlander, Gender::Male); + + QString skelName = QStringLiteral("chara/human/c%1/skeleton/base/b0001/skl_c%1b0001.sklb").arg(raceCode, 4, 10, QLatin1Char{'0'}); + std::string skelNameStd = skelName.toStdString(); + mdlPart->setSkeleton(physis_parse_skeleton(physis_gamedata_extract_file(data, skelNameStd.c_str()))); + + mdlPart->addModel(m_mdl, true, glm::vec3(), QStringLiteral(""), {material}, 0); } #include "moc_materialview.cpp" diff --git a/renderer/src/gamerenderer.cpp b/renderer/src/gamerenderer.cpp index b417e8e..08d84f2 100644 --- a/renderer/src/gamerenderer.cpp +++ b/renderer/src/gamerenderer.cpp @@ -205,7 +205,11 @@ void GameRenderer::render(VkCommandBuffer commandBuffer, uint32_t imageIndex, Ca } for (const auto &part : model.parts) { - auto &renderMaterial = model.materials[part.materialIndex]; + RenderMaterial renderMaterial = model.materials[part.materialIndex]; + + if (part.materialIndex + 1 > model.materials.size()) { + renderMaterial = model.materials[0]; // TODO: better fallback + } if (renderMaterial.shaderPackage.p_ptr == nullptr) { qWarning() << "Invalid shader package!";