From add17da988f4518c451abc4d0bacf536071e1c0b Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Sun, 2 Jun 2024 22:37:52 +1000 Subject: directive-based color variants for materials --- source/game/StarMaterialDatabase.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'source/game/StarMaterialDatabase.cpp') diff --git a/source/game/StarMaterialDatabase.cpp b/source/game/StarMaterialDatabase.cpp index 6363c5d..99ce32e 100644 --- a/source/game/StarMaterialDatabase.cpp +++ b/source/game/StarMaterialDatabase.cpp @@ -402,11 +402,31 @@ ItemDescriptor MaterialDatabase::modItemDrop(ModId modId) const { return {}; } +MaterialColorVariant MaterialDatabase::materialColorVariants(MaterialId materialId) const { + if (isRealMaterial(materialId)) { + auto const& matInfo = getMaterialInfo(materialId); + if (matInfo->materialRenderProfile) + return matInfo->materialRenderProfile->colorVariants; + } + + return 0; +} + +MaterialColorVariant MaterialDatabase::modColorVariants(ModId modId) const { + if (isRealMod(modId)) { + auto const& modInfo = getModInfo(modId); + if (modInfo->modRenderProfile) + return modInfo->modRenderProfile->colorVariants; + } + + return 0; +} + bool MaterialDatabase::isMultiColor(MaterialId materialId) const { if (isRealMaterial(materialId)) { auto const& matInfo = getMaterialInfo(materialId); if (matInfo->materialRenderProfile) - return matInfo->materialRenderProfile->multiColor; + return matInfo->materialRenderProfile->colorVariants > 0; } return false; @@ -568,7 +588,7 @@ shared_ptr const& MaterialDatabase::getMat shared_ptr const& MaterialDatabase::getModInfo(ModId modId) const { if (modId >= m_mods.size() || !m_mods[modId]) - throw MaterialException(strf("No such modId id: {}\n", modId)); + throw MaterialException(strf("No such mod id: {}\n", modId)); else return m_mods[modId]; } -- cgit v1.2.3