Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/game/StarMaterialDatabase.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2024-06-02 22:37:52 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2024-06-02 22:37:52 +1000
commitadd17da988f4518c451abc4d0bacf536071e1c0b (patch)
tree86e1db5f276269e41f93d9f6e198186d2d95fa26 /source/game/StarMaterialDatabase.cpp
parent68bd850fe73819c75841c5b6147255caf16c6ed9 (diff)
directive-based color variants for materials
Diffstat (limited to 'source/game/StarMaterialDatabase.cpp')
-rw-r--r--source/game/StarMaterialDatabase.cpp24
1 files changed, 22 insertions, 2 deletions
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<MaterialDatabase::MaterialInfo const> const& MaterialDatabase::getMat
shared_ptr<MaterialDatabase::ModInfo const> 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];
}