FIRE-23943: Fix "Could not load the settings for [NAME] from the database." when selecting env setting in QP under certain circumstances

meow-7.2.2
Ansariel 2019-06-19 21:00:24 +02:00
parent ccea567c08
commit e246487959
2 changed files with 89 additions and 64 deletions

View File

@ -196,7 +196,7 @@ void FloaterQuickPrefs::initCallbacks()
getChild<LLUICtrl>("DCNextPreset")->setCommitCallback(boost::bind(&FloaterQuickPrefs::onClickDayCycleNext, this));
getChild<LLUICtrl>("ResetToRegionDefault")->setCommitCallback(boost::bind(&FloaterQuickPrefs::onClickResetToRegionDefault, this));
getChild<LLMultiSliderCtrl>("time_offset")->setSliderMouseUpCallback(boost::bind(&FloaterQuickPrefs::onDayOffset, this));
getChild<LLUICtrl>("sun_rotation")->setCommitCallback([this](LLUICtrl *, const LLSD &) { onSunMoved(); });
getChild<LLUICtrl>("sun_rotation")->setCommitCallback([this](LLUICtrl *, const LLSD &) { onSunMoved(); });
// Phototools additions
if (getIsPhototools())
@ -506,7 +506,7 @@ void FloaterQuickPrefs::setSelectedEnvironment()
break;
}
updateDayOffset();
updateDayOffset();
}
BOOL FloaterQuickPrefs::postBuild()
@ -559,10 +559,9 @@ BOOL FloaterQuickPrefs::postBuild()
mWaterPresetsCombo = getChild<LLComboBox>("WaterPresetsCombo");
mWLPresetsCombo = getChild<LLComboBox>("WLPresetsCombo");
mDayCyclePresetsCombo = getChild<LLComboBox>("DCPresetsCombo");
mWLSunRot = getChild<LLVirtualTrackball>("sun_rotation");
mWLSunRot = getChild<LLVirtualTrackball>("sun_rotation");
mWLDayOffset = getChild<LLMultiSliderCtrl>("time_offset");
mWLDayOffset->addSlider(0);
mWLDayOffset->addSlider(0);
initCallbacks();
loadPresets();
@ -743,10 +742,7 @@ void FloaterQuickPrefs::stepComboBox(LLComboBox* ctrl, bool forward)
S32 lastitem = ctrl->getItemCount() - 1;
S32 curid = ctrl->getCurrentIndex();
S32 startid = curid;
// std::string preset_name;
// std::string start_preset_name;
// start_preset_name = ctrl->getSelectedValue().asString();
do
{
curid += increment;
@ -759,10 +755,8 @@ void FloaterQuickPrefs::stepComboBox(LLComboBox* ctrl, bool forward)
curid = 0;
}
ctrl->setCurrentByIndex(curid);
// preset_name = ctrl->getSelectedValue().asString();
}
while (!isValidPreset(ctrl->getSelectedValue()) && curid != startid);
// while (!isValidPreset(ctrl->getSelectedValue()) && preset_name != start_preset_name);
}
void FloaterQuickPrefs::selectSkyPreset(const LLSD& preset)
@ -792,7 +786,15 @@ void FloaterQuickPrefs::onChangeWaterPreset()
{
stepComboBox(mWaterPresetsCombo, true);
}
selectWaterPreset(mWaterPresetsCombo->getSelectedValue());
if (isValidPreset(mWaterPresetsCombo->getSelectedValue()))
{
selectWaterPreset(mWaterPresetsCombo->getSelectedValue());
}
else
{
LLNotificationsUtil::add("NoValidEnvSettingFound");
}
}
void FloaterQuickPrefs::onChangeSkyPreset()
@ -801,7 +803,15 @@ void FloaterQuickPrefs::onChangeSkyPreset()
{
stepComboBox(mWLPresetsCombo, true);
}
selectSkyPreset(mWLPresetsCombo->getSelectedValue());
if (isValidPreset(mWLPresetsCombo->getSelectedValue()))
{
selectSkyPreset(mWLPresetsCombo->getSelectedValue());
}
else
{
LLNotificationsUtil::add("NoValidEnvSettingFound");
}
}
void FloaterQuickPrefs::onChangeDayCyclePreset()
@ -810,7 +820,15 @@ void FloaterQuickPrefs::onChangeDayCyclePreset()
{
stepComboBox(mDayCyclePresetsCombo, true);
}
selectDayCyclePreset(mDayCyclePresetsCombo->getSelectedValue());
if (isValidPreset(mDayCyclePresetsCombo->getSelectedValue()))
{
selectDayCyclePreset(mDayCyclePresetsCombo->getSelectedValue());
}
else
{
LLNotificationsUtil::add("NoValidEnvSettingFound");
}
}
void FloaterQuickPrefs::onClickWaterPrev()
@ -851,68 +869,68 @@ void FloaterQuickPrefs::onClickDayCycleNext()
void FloaterQuickPrefs::draw()
{
updateSun();
LLTransientDockableFloater::draw();
updateSun();
LLTransientDockableFloater::draw();
}
void FloaterQuickPrefs::updateDayOffset()
{
// KC: Limit day cycle offset max to day length if less than a full real day
LLSettingsDay::Seconds day_length = LLEnvironment::instance().getDayLength();
if (day_length > LLSettingsDay::MINIMUM_DAYOFFSET)
{
if (day_length < LLSettingsDay::MAXIMUM_DAYOFFSET)
{
mWLDayOffset->setMaxValue(day_length);
}
else
{
mWLDayOffset->setMaxValue(LLSettingsDay::MAXIMUM_DAYOFFSET);
}
mWLDayOffset->setCurSliderValue(LLEnvironment::instance().getDayOffsetOverride());
}
else
{
mWLDayOffset->setCurSliderValue(0);
}
// KC: Limit day cycle offset max to day length if less than a full real day
LLSettingsDay::Seconds day_length = LLEnvironment::instance().getDayLength();
if (day_length > LLSettingsDay::MINIMUM_DAYOFFSET)
{
if (day_length < LLSettingsDay::MAXIMUM_DAYOFFSET)
{
mWLDayOffset->setMaxValue(day_length);
}
else
{
mWLDayOffset->setMaxValue(LLSettingsDay::MAXIMUM_DAYOFFSET);
}
mWLDayOffset->setCurSliderValue(LLEnvironment::instance().getDayOffsetOverride());
}
else
{
mWLDayOffset->setCurSliderValue(0);
}
}
const F32 SUN_ROTATION_PRECISION = 0.1f;
void FloaterQuickPrefs::updateSun()
{
LLSettingsSky::ptr_t psky = LLEnvironment::instance().getCurrentSky();
mWLSunRot->setRotation(psky->getSunRotation());
LLSettingsSky::ptr_t psky = LLEnvironment::instance().getCurrentSky();
mWLSunRot->setRotation(psky->getSunRotation());
}
void FloaterQuickPrefs::onDayOffset()
{
//KC: Forces the environment time by an additional offset
if (LLEnvironment::instance().getDayOffset() > LLSettingsDay::INVALID_DAYOFFSET)
{
LLSettingsDay::Seconds day_offset(mWLDayOffset->getCurSliderValue());
LLEnvironment::instance().setDayOffsetOverride(day_offset);
LLEnvironment::instance().updateEnvironment();
}
//KC: Forces the environment time by an additional offset
if (LLEnvironment::instance().getDayOffset() > LLSettingsDay::INVALID_DAYOFFSET)
{
LLSettingsDay::Seconds day_offset(mWLDayOffset->getCurSliderValue());
LLEnvironment::instance().setDayOffsetOverride(day_offset);
LLEnvironment::instance().updateEnvironment();
}
}
void FloaterQuickPrefs::onSunMoved()
{
LLSettingsSky::ptr_t psky = LLEnvironment::instance().getCurrentSky();
psky->setSunRotation(mWLSunRot->getRotation());
psky->updateSettings();
LLSettingsSky::ptr_t psky = LLEnvironment::instance().getCurrentSky();
psky->setSunRotation(mWLSunRot->getRotation());
psky->updateSettings();
}
void FloaterQuickPrefs::onClickResetToRegionDefault()
{
mWLPresetsCombo->setValue(LLSD(PRESET_NAME_REGION_DEFAULT));
mWLPresetsCombo->setValue(LLSD(PRESET_NAME_REGION_DEFAULT));
mWaterPresetsCombo->setValue(LLSD(PRESET_NAME_REGION_DEFAULT));
LLEnvironment::instance().setDayOffsetOverride(LLSettingsDay::MINIMUM_DAYOFFSET);
mWLDayOffset->setCurSliderValue(0);
LLEnvironment::instance().setDayOffsetOverride(LLSettingsDay::MINIMUM_DAYOFFSET);
mWLDayOffset->setCurSliderValue(0);
LLEnvironment::instance().clearEnvironment(LLEnvironment::ENV_LOCAL);
LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
LLEnvironment::instance().updateEnvironment();
LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
LLEnvironment::instance().updateEnvironment();
}
void FloaterQuickPrefs::setSelectedSky(const std::string& preset_name)
@ -936,19 +954,15 @@ void FloaterQuickPrefs::setSelectedDayCycle(const std::string& preset_name)
// Phototools additions
void FloaterQuickPrefs::refreshSettings()
{
BOOL reflections = gSavedSettings.getBOOL("VertexShaderEnable")
&& gGLManager.mHasCubeMap
&& LLCubeMap::sUseCubeMaps;
BOOL reflections = gSavedSettings.getBOOL("VertexShaderEnable") && gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps;
mCtrlReflectionDetail->setEnabled(reflections);
bool fCtrlShaderEnable = LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable");
mCtrlShaderEnable->setEnabled(
fCtrlShaderEnable && ((!gRlvHandler.hasBehaviour(RLV_BHVR_SETENV)) || (!gSavedSettings.getBOOL("VertexShaderEnable"))) );
mCtrlShaderEnable->setEnabled(fCtrlShaderEnable && ((!gRlvHandler.hasBehaviour(RLV_BHVR_SETENV)) || (!gSavedSettings.getBOOL("VertexShaderEnable"))) );
BOOL shaders = mCtrlShaderEnable->get();
bool fCtrlWindLightEnable = fCtrlShaderEnable && shaders;
mCtrlWindLight->setEnabled(
fCtrlWindLightEnable && ((!gRlvHandler.hasBehaviour(RLV_BHVR_SETENV)) || (!gSavedSettings.getBOOL("WindLightUseAtmosShaders"))) );
mCtrlWindLight->setEnabled(fCtrlWindLightEnable && ((!gRlvHandler.hasBehaviour(RLV_BHVR_SETENV)) || (!gSavedSettings.getBOOL("WindLightUseAtmosShaders"))) );
LLTextBox* sky_label = getChild<LLTextBox>("T_Sky_Detail");
LLSlider* sky_slider = getChild<LLSlider>("SB_Sky_Detail");
@ -970,7 +984,7 @@ void FloaterQuickPrefs::refreshSettings()
mCtrlDeferred->setEnabled(enabled);
enabled = enabled && LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferredSSAO") && (mCtrlDeferred->get() ? TRUE : FALSE);
mCtrlUseSSAO->setEnabled(enabled);
mCtrlUseDoF->setEnabled(enabled);
@ -985,7 +999,7 @@ void FloaterQuickPrefs::refreshSettings()
{
mCtrlShaderEnable->setEnabled(FALSE);
mCtrlShaderEnable->setValue(FALSE);
mCtrlWindLight->setEnabled(FALSE);
mCtrlWindLight->setValue(FALSE);
@ -993,7 +1007,7 @@ void FloaterQuickPrefs::refreshSettings()
sky_slider->setEnabled(FALSE);
sky_spinner->setEnabled(FALSE);
sky_default_button->setEnabled(FALSE);
mCtrlReflectionDetail->setEnabled(FALSE);
mCtrlReflectionDetail->setValue(0);
@ -1012,7 +1026,7 @@ void FloaterQuickPrefs::refreshSettings()
mCtrlDeferred->setEnabled(FALSE);
mCtrlDeferred->setValue(FALSE);
}
// disabled windlight
if (!LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders"))
{
@ -1060,14 +1074,14 @@ void FloaterQuickPrefs::refreshSettings()
mCtrlDeferred->setEnabled(FALSE);
mCtrlDeferred->setValue(FALSE);
}
// disabled deferred SSAO
if (!LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferredSSAO"))
{
mCtrlUseSSAO->setEnabled(FALSE);
mCtrlUseSSAO->setValue(FALSE);
}
// disabled deferred shadows
if (!LLFeatureManager::getInstance()->isFeatureAvailable("RenderShadowDetail"))
{
@ -1105,7 +1119,7 @@ void FloaterQuickPrefs::refreshSettings()
mCtrlDeferred->setEnabled(FALSE);
mCtrlDeferred->setValue(FALSE);
}
// <FS:CR> FIRE-9630 - Vignette UI controls
if (getIsPhototools())
{

View File

@ -13262,5 +13262,16 @@ Unable to load the track into [TRACK].
Unable to load the track from [TRACK1] into [TRACK2].
<tag>fail</tag>
</notification>
<notification
icon="notify.tga"
name="NoValidEnvSettingFound"
persist="true"
type="alertmodal">
No valid environment setting selected.
Please note that "Region default" and "Day cycle based" cannot be selected!
<tag>fail</tag>
</notification>
</notifications>