diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 7d6f0f6c8b..0ea35e6c5a 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -340,7 +340,9 @@ void EntityTreeRenderer::applyZonePropertiesToScene(std::shared_ptrsetBackgroundMode(model::SunSkyStage::SKY_BOX); break; } + case BACKGROUND_MODE_INHERIT: + default: skyStage->setBackgroundMode(model::SunSkyStage::SKY_DOME); // let the application background through _pendingSkyboxTexture = false; _skyboxTexture.clear(); diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index c86989d589..6644f28139 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -184,38 +184,26 @@ void EntityItemProperties::setShapeTypeFromString(const QString& shapeName) { } } -const char* backgroundModeNames[] = {"inherit", "skybox" }; - -QHash stringToBackgroundModeLookup; - -void addBackgroundMode(BackgroundMode type) { - stringToBackgroundModeLookup[backgroundModeNames[type]] = type; -} - -void buildStringToBackgroundModeLookup() { - addBackgroundMode(BACKGROUND_MODE_INHERIT); - addBackgroundMode(BACKGROUND_MODE_SKYBOX); -} +using BackgroundPair = std::pair; +const std::array BACKGROUND_MODES = { + BackgroundPair { BACKGROUND_MODE_INHERIT, { "inherit" } }, + BackgroundPair { BACKGROUND_MODE_SKYBOX, { "skybox" } } +}; QString EntityItemProperties::getBackgroundModeAsString() const { - if (_backgroundMode < sizeof(backgroundModeNames) / sizeof(char *)) - return QString(backgroundModeNames[_backgroundMode]); - return QString(backgroundModeNames[BACKGROUND_MODE_INHERIT]); + return BACKGROUND_MODES[_backgroundMode].second; } QString EntityItemProperties::getBackgroundModeString(BackgroundMode mode) { - if (mode < sizeof(backgroundModeNames) / sizeof(char *)) - return QString(backgroundModeNames[mode]); - return QString(backgroundModeNames[BACKGROUND_MODE_INHERIT]); + return BACKGROUND_MODES[mode].second; } void EntityItemProperties::setBackgroundModeFromString(const QString& backgroundMode) { - if (stringToBackgroundModeLookup.empty()) { - buildStringToBackgroundModeLookup(); - } - auto backgroundModeItr = stringToBackgroundModeLookup.find(backgroundMode.toLower()); - if (backgroundModeItr != stringToBackgroundModeLookup.end()) { - _backgroundMode = backgroundModeItr.value(); + auto result = std::find_if(BACKGROUND_MODES.begin(), BACKGROUND_MODES.end(), [&](const BackgroundPair& pair) { + return (pair.second == backgroundMode); + }); + if (result != BACKGROUND_MODES.end()) { + _backgroundMode = result->first; _backgroundModeChanged = true; } } diff --git a/libraries/shared/src/BackgroundMode.h b/libraries/shared/src/BackgroundMode.h index 939ecee114..e6e585d9d8 100644 --- a/libraries/shared/src/BackgroundMode.h +++ b/libraries/shared/src/BackgroundMode.h @@ -14,6 +14,8 @@ enum BackgroundMode { BACKGROUND_MODE_INHERIT, BACKGROUND_MODE_SKYBOX, + + BACKGROUND_MODE_ITEM_COUNT, };