From d6546f5c23244099bad6c8a6b6b0687056a9d2d9 Mon Sep 17 00:00:00 2001 From: Lubosz Sarnecki Date: Sat, 3 Aug 2024 14:33:23 +0200 Subject: [PATCH] graphics/Material: Fix -Wdeprecated-enum-enum-conversion. --- libraries/graphics/src/graphics/Material.cpp | 16 ++++++++++++++++ libraries/graphics/src/graphics/Material.h | 8 ++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/libraries/graphics/src/graphics/Material.cpp b/libraries/graphics/src/graphics/Material.cpp index 1061347e27..e923c5631a 100644 --- a/libraries/graphics/src/graphics/Material.cpp +++ b/libraries/graphics/src/graphics/Material.cpp @@ -30,6 +30,22 @@ const MaterialKey::OpacityMapMode Material::DEFAULT_OPACITY_MAP_MODE{ MaterialKe const float Material::DEFAULT_OPACITY_CUTOFF { 0.5f }; const MaterialKey::CullFaceMode Material::DEFAULT_CULL_FACE_MODE { MaterialKey::CULL_BACK }; + +MaterialKey::FlagBit MaterialKey::getFlagBitForChannel(MapChannel channel) { + // To retrieve the FlagBit from a MapChannel + static const std::map MapChannelFlagBits = { + {EMISSIVE_MAP, EMISSIVE_MAP_BIT}, + {ALBEDO_MAP, ALBEDO_MAP_BIT}, + {METALLIC_MAP, METALLIC_MAP_BIT}, + {ROUGHNESS_MAP, ROUGHNESS_MAP_BIT}, + {NORMAL_MAP, NORMAL_MAP_BIT}, + {OCCLUSION_MAP, OCCLUSION_MAP_BIT}, + {LIGHT_MAP, LIGHT_MAP_BIT}, + {SCATTERING_MAP, SCATTERING_MAP_BIT}, + }; + return MapChannelFlagBits.at(channel); +} + std::string MaterialKey::getOpacityMapModeName(OpacityMapMode mode) { const std::string names[3] = { "OPACITY_MAP_OPAQUE", "OPACITY_MAP_MASK", "OPACITY_MAP_BLEND" }; return names[mode]; diff --git a/libraries/graphics/src/graphics/Material.h b/libraries/graphics/src/graphics/Material.h index fd9c76dd97..97fa0de63c 100644 --- a/libraries/graphics/src/graphics/Material.h +++ b/libraries/graphics/src/graphics/Material.h @@ -82,11 +82,15 @@ public: NUM_MAP_CHANNELS, }; + + enum OpacityMapMode { OPACITY_MAP_OPAQUE = 0, OPACITY_MAP_MASK, OPACITY_MAP_BLEND, }; + + static FlagBit getFlagBitForChannel(MapChannel channel); static std::string getOpacityMapModeName(OpacityMapMode mode); // find the enum value from a string, return true if match found static bool getOpacityMapModeFromName(const std::string& modeName, OpacityMapMode& mode); @@ -215,8 +219,8 @@ public: void setScatteringMap(bool value) { _flags.set(SCATTERING_MAP_BIT, value); } bool isScatteringMap() const { return _flags[SCATTERING_MAP_BIT]; } - void setMapChannel(MapChannel channel, bool value) { _flags.set(EMISSIVE_MAP_BIT + channel, value); } - bool isMapChannel(MapChannel channel) const { return _flags[EMISSIVE_MAP_BIT + channel]; } + void setMapChannel(MapChannel channel, bool value) { _flags.set(getFlagBitForChannel(channel), value); } + bool isMapChannel(MapChannel channel) const { return _flags[getFlagBitForChannel(channel)]; } // Translucency and Opacity Heuristics are combining several flags: