Round #1 : EEP in OS.
Basic changes to allow EEP viewer to operate in OpenSim. These changes restore windlight support by converting to EEP As OpenSim does not yet have EEP Asset support this can only be done on-the-fly. Quickprefs and region windlight support should now work. windlight setting through the region floater will not work, editing windlight settings will also not work. Windlight support is not allowed in Second Life.master
parent
102b1b5031
commit
0fa2fde0b3
|
|
@ -33,6 +33,7 @@
|
|||
#include "llagent.h"
|
||||
#include "llviewercontrol.h" // for gSavedSettings
|
||||
#include "llviewerregion.h"
|
||||
#include "llviewernetwork.h" // <FS:Beq/> for LLGridManager
|
||||
#include "llwlhandlers.h"
|
||||
#include "lltrans.h"
|
||||
#include "lltrace.h"
|
||||
|
|
@ -821,6 +822,72 @@ LLEnvironment::LLEnvironment():
|
|||
mShowMoonBeacon(false)
|
||||
{
|
||||
}
|
||||
// <FS:Beq> OpenSim legacy Windlight setting support
|
||||
#ifdef OPENSIM
|
||||
std::string unescape_name(const std::string& name);
|
||||
void LLEnvironment::loadLegacyPresets()
|
||||
{
|
||||
// [EEPMERGE]
|
||||
//LLDayCycleManager::preset_name_list_t user_presets, sys_presets;
|
||||
//LLDayCycleManager::instance().getPresetNames(user_presets, sys_presets);
|
||||
// [/EEPMERGE]
|
||||
std::string path_name;
|
||||
|
||||
path_name = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", "skies", "");
|
||||
bool found = true;
|
||||
|
||||
while (found)
|
||||
{
|
||||
std::string name;
|
||||
found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name);
|
||||
if (found)
|
||||
{
|
||||
name = name.erase(name.length() - 4);
|
||||
mLegacySkies.push_back(unescape_name(name));
|
||||
LL_DEBUGS("WindlightCaps") << "Added Legacy Sky: " << unescape_name(name) << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
path_name = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", "water", "");
|
||||
found = true;
|
||||
|
||||
while (found)
|
||||
{
|
||||
std::string name;
|
||||
found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name);
|
||||
if (found)
|
||||
{
|
||||
name = name.erase(name.length() - 4);
|
||||
mLegacyWater.push_back(unescape_name(name));
|
||||
LL_DEBUGS("WindlightCaps") << "Added Legacy Water: " << unescape_name(name) << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
path_name = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", "days", "");
|
||||
found = true;
|
||||
|
||||
while (found)
|
||||
{
|
||||
std::string name;
|
||||
found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name);
|
||||
if (found)
|
||||
{
|
||||
name = name.erase(name.length() - 4);
|
||||
mLegacyDayCycles.push_back(unescape_name(name));
|
||||
LL_DEBUGS("WindlightCaps") << "Added Legacy Day Cycle: " << unescape_name(name) << LL_ENDL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LLEnvironment::loadUserPrefs()
|
||||
{
|
||||
// operate on members directly to avoid side effects
|
||||
mWaterPresetName = gSavedSettings.getString("WaterPresetName");
|
||||
mSkyPresetName = gSavedSettings.getString("SkyPresetName");
|
||||
mDayCycleName = gSavedSettings.getString("DayCycleName");
|
||||
}
|
||||
#endif //opensim
|
||||
//</FS:Beq>
|
||||
|
||||
void LLEnvironment::initSingleton()
|
||||
{
|
||||
|
|
@ -832,6 +899,12 @@ void LLEnvironment::initSingleton()
|
|||
mCurrentEnvironment->setWater(p_default_water);
|
||||
|
||||
mEnvironments[ENV_DEFAULT] = mCurrentEnvironment;
|
||||
// <FS:Beq> OpenSim legacy Windlight setting support
|
||||
#ifdef OPENSIM
|
||||
loadLegacyPresets();
|
||||
loadUserPrefs();
|
||||
#endif
|
||||
// </FS:Beq>
|
||||
|
||||
requestRegion();
|
||||
|
||||
|
|
@ -1221,7 +1294,7 @@ void LLEnvironment::onSetEnvAssetLoaded(EnvSelection_t env,
|
|||
if (!settings || status)
|
||||
{
|
||||
LLSD args;
|
||||
args["DESC"] = asset_id.asString();
|
||||
args["NAME"] = asset_id.asString();// <FS:Beq/> fix the args to match the template.
|
||||
LLNotificationsUtil::add("FailedToFindSettings", args);
|
||||
return;
|
||||
}
|
||||
|
|
@ -1367,12 +1440,12 @@ void LLEnvironment::updateEnvironment(LLSettingsBase::Seconds transition, bool f
|
|||
{
|
||||
if (transition != TRANSITION_INSTANT)
|
||||
{
|
||||
DayInstance::ptr_t trans = std::make_shared<DayTransition>(
|
||||
mCurrentEnvironment->getSky(), mCurrentEnvironment->getWater(), pinstance, transition);
|
||||
|
||||
trans->animate();
|
||||
|
||||
mCurrentEnvironment = trans;
|
||||
DayInstance::ptr_t trans = std::make_shared<DayTransition>(
|
||||
mCurrentEnvironment->getSky(), mCurrentEnvironment->getWater(), pinstance, transition);
|
||||
|
||||
trans->animate();
|
||||
|
||||
mCurrentEnvironment = trans;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -1618,8 +1691,14 @@ void LLEnvironment::recordEnvironment(S32 parcel_id, LLEnvironment::EnvironmentI
|
|||
if (!envinfo->mDayCycle)
|
||||
{
|
||||
clearEnvironment(ENV_PARCEL);
|
||||
setEnvironment(ENV_REGION, LLSettingsDay::GetDefaultAssetId(), LLSettingsDay::DEFAULT_DAYLENGTH, LLSettingsDay::DEFAULT_DAYOFFSET, envinfo->mEnvVersion);
|
||||
updateEnvironment();
|
||||
// <FS:Beq> opensim legacy windlight. Nothing we can do here as the default assets do not exist in OpenSim
|
||||
LL_WARNS("ENVIRONMENT") << "No DayCycle specified - setting default" << LL_ENDL;
|
||||
if(LLGridManager::getInstance()->isInSecondLife())
|
||||
{
|
||||
setEnvironment(ENV_REGION, LLSettingsDay::GetDefaultAssetId(), LLSettingsDay::DEFAULT_DAYLENGTH, LLSettingsDay::DEFAULT_DAYOFFSET, envinfo->mEnvVersion);
|
||||
updateEnvironment();
|
||||
}
|
||||
// </FS:Beq>
|
||||
}
|
||||
else if (envinfo->mDayCycle->isTrackEmpty(LLSettingsDay::TRACK_WATER)
|
||||
|| envinfo->mDayCycle->isTrackEmpty(LLSettingsDay::TRACK_GROUND_LEVEL))
|
||||
|
|
@ -2152,10 +2231,14 @@ LLEnvironment::EnvironmentInfo::ptr_t LLEnvironment::EnvironmentInfo::extractLeg
|
|||
pinfo->mDayHash = pinfo->mDayCycle->getHash();
|
||||
|
||||
pinfo->mAltitudes[0] = 0;
|
||||
pinfo->mAltitudes[2] = 10001;
|
||||
pinfo->mAltitudes[3] = 10002;
|
||||
pinfo->mAltitudes[4] = 10003;
|
||||
|
||||
// <FS:Beq> Fix typos that offset this by 1. Shoudl get fixed in a merge from the lab soon.
|
||||
// pinfo->mAltitudes[2] = 10001;
|
||||
// pinfo->mAltitudes[3] = 10002;
|
||||
// pinfo->mAltitudes[4] = 10003;
|
||||
pinfo->mAltitudes[1] = 10001;
|
||||
pinfo->mAltitudes[2] = 10002;
|
||||
pinfo->mAltitudes[3] = 10003;
|
||||
// </FS:Beq>
|
||||
return pinfo;
|
||||
}
|
||||
|
||||
|
|
@ -2361,7 +2444,7 @@ void LLEnvironment::onSetExperienceEnvAssetLoaded(LLUUID experience_id, LLSettin
|
|||
if (!settings || status)
|
||||
{
|
||||
LLSD args;
|
||||
args["DESC"] = experience_id.asString();
|
||||
args["NAME"] = experience_id.asString();// <FS:Beq/> fix the args to match the template.
|
||||
LLNotificationsUtil::add("FailedToFindSettings", args);
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -374,6 +374,20 @@ private:
|
|||
experience_overrides_t mExperienceOverrides;
|
||||
|
||||
DayInstance::ptr_t getEnvironmentInstance(EnvSelection_t env, bool create = false);
|
||||
// <FS:Beq> opensim windlight setting
|
||||
#ifdef OPENSIM
|
||||
public:
|
||||
std::vector<std::string> mLegacySkies;
|
||||
std::vector<std::string> mLegacyWater;
|
||||
std::vector<std::string> mLegacyDayCycles;
|
||||
std::string mWaterPresetName;
|
||||
std::string mSkyPresetName;
|
||||
std::string mDayCycleName;
|
||||
private:
|
||||
void loadLegacyPresets();
|
||||
void loadUserPrefs();
|
||||
#endif
|
||||
// </FS:Beq>
|
||||
|
||||
void updateCloudScroll();
|
||||
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@
|
|||
#include "llspinctrl.h"
|
||||
#include "lltoolbarview.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "llviewernetwork.h" // <FS:Beq/> for LLGridManager
|
||||
#include "llviewerregion.h"
|
||||
#include "llvoavatar.h"
|
||||
#include "llvoavatarself.h"
|
||||
|
|
@ -288,6 +289,27 @@ void FloaterQuickPrefs::loadDayCyclePresets(const std::multimap<std::string, LLU
|
|||
mDayCyclePresetsCombo->add(preset_name, LLSD(asset_id));
|
||||
}
|
||||
}
|
||||
// <FS:Beq> Opensim legacy windlight support
|
||||
// Opensim may support both environment and extenvironment caps on the same region
|
||||
// we also need these disabled in SL on the OpenSim build.
|
||||
#ifdef OPENSIM
|
||||
if(LLGridManager::getInstance()->isInOpenSim())
|
||||
{
|
||||
LL_DEBUGS("WindlightCaps") << "Adding legacy day cycle presets to QP" << LL_ENDL;
|
||||
// WL still supported
|
||||
if (!daycycle_map.empty() && !LLEnvironment::getInstance()->mLegacyDayCycles.empty())
|
||||
{
|
||||
mDayCyclePresetsCombo->addSeparator();
|
||||
}
|
||||
for(const auto& preset_name : LLEnvironment::getInstance()->mLegacyDayCycles)
|
||||
{
|
||||
// we add by name and only build the envp on demand
|
||||
LL_DEBUGS("WindlightCaps") << "Adding legacy day cycle " << preset_name << LL_ENDL;
|
||||
mDayCyclePresetsCombo->add(preset_name, LLSD(preset_name));
|
||||
}
|
||||
LL_DEBUGS("WindlightCaps") << "Done: Adding legacy day cycle presets to QP" << LL_ENDL;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void FloaterQuickPrefs::loadSkyPresets(const std::multimap<std::string, LLUUID>& sky_map)
|
||||
|
|
@ -308,6 +330,27 @@ void FloaterQuickPrefs::loadSkyPresets(const std::multimap<std::string, LLUUID>&
|
|||
mWLPresetsCombo->add(preset_name, LLSD(asset_id));
|
||||
}
|
||||
}
|
||||
// <FS:Beq> Opensim legacy windlight support
|
||||
// Opensim may support both environment and extenvironment caps on the same region
|
||||
// we also need these disabled in SL on the OpenSim build.
|
||||
#ifdef OPENSIM
|
||||
if(LLGridManager::getInstance()->isInOpenSim())
|
||||
{
|
||||
LL_DEBUGS("WindlightCaps") << "Adding legacy sky presets to QP" << LL_ENDL;
|
||||
// WL still supported
|
||||
if (!sky_map.empty() && !LLEnvironment::getInstance()->mLegacySkies.empty())
|
||||
{
|
||||
mWLPresetsCombo->addSeparator();
|
||||
}
|
||||
for(const auto& preset_name : LLEnvironment::getInstance()->mLegacySkies)
|
||||
{
|
||||
// we add by name and only build the envp on demand
|
||||
LL_DEBUGS("WindlightCaps") << "Adding legacy sky " << preset_name << LL_ENDL;
|
||||
mWLPresetsCombo->add(preset_name, LLSD(preset_name));
|
||||
}
|
||||
LL_DEBUGS("WindlightCaps") << "Done: Adding legacy sky presets to QP" << LL_ENDL;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void FloaterQuickPrefs::loadWaterPresets(const std::multimap<std::string, LLUUID>& water_map)
|
||||
|
|
@ -328,6 +371,27 @@ void FloaterQuickPrefs::loadWaterPresets(const std::multimap<std::string, LLUUID
|
|||
mWaterPresetsCombo->add(preset_name, LLSD(asset_id));
|
||||
}
|
||||
}
|
||||
// <FS:Beq> Opensim legacy windlight support
|
||||
// Opensim may support both environment and extenvironment caps on the same region
|
||||
// we also need these disabled in SL on the OpenSim build.
|
||||
#ifdef OPENSIM
|
||||
if(LLGridManager::getInstance()->isInOpenSim())
|
||||
{
|
||||
LL_DEBUGS("WindlightCaps") << "Adding legacy presets to QP" << LL_ENDL;
|
||||
// WL still supported
|
||||
if (!water_map.empty() && !LLEnvironment::getInstance()->mLegacyWater.empty())
|
||||
{
|
||||
mWaterPresetsCombo->addSeparator();
|
||||
}
|
||||
for(const auto& preset_name : LLEnvironment::getInstance()->mLegacyWater)
|
||||
{
|
||||
// we add by name and only build the envp on demand
|
||||
LL_DEBUGS("WindlightCaps") << "Adding legacy water " << preset_name << LL_ENDL;
|
||||
mWaterPresetsCombo->add(preset_name, LLSD(preset_name));
|
||||
}
|
||||
LL_DEBUGS("WindlightCaps") << "Done: Adding legacy water presets to QP" << LL_ENDL;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void FloaterQuickPrefs::loadPresets()
|
||||
|
|
@ -388,32 +452,108 @@ void FloaterQuickPrefs::setSelectedEnvironment()
|
|||
// day cycle. If no fixed sky or fixed water is set, they are either
|
||||
// defined in the day cycle or inherited from a higher environment level.
|
||||
LLSettingsDay::ptr_t day = LLEnvironment::instance().getEnvironmentDay(LLEnvironment::ENV_LOCAL);
|
||||
if (day && day->getAssetId().notNull())
|
||||
if (day)
|
||||
{
|
||||
//LL_INFOS() << "EEP: day name = " << day->getName() << " - asset id = " << day->getAssetId() << LL_ENDL;
|
||||
|
||||
mDayCyclePresetsCombo->selectByValue(LLSD(day->getAssetId()));
|
||||
|
||||
// Water is part of a day cycle
|
||||
mWLPresetsCombo->selectByValue(LLSD(PRESET_NAME_DAY_CYCLE));
|
||||
mWaterPresetsCombo->selectByValue(LLSD(PRESET_NAME_DAY_CYCLE));
|
||||
if( day->getAssetId().notNull())
|
||||
{ // EEP processing
|
||||
mDayCyclePresetsCombo->selectByValue(LLSD(day->getAssetId()));
|
||||
// Sky and Water are part of a day cycle in EEP
|
||||
mWLPresetsCombo->selectByValue(LLSD(PRESET_NAME_DAY_CYCLE));
|
||||
mWaterPresetsCombo->selectByValue(LLSD(PRESET_NAME_DAY_CYCLE));
|
||||
}
|
||||
#ifdef OPENSIM
|
||||
else if (LLGridManager::getInstance()->isInOpenSim())
|
||||
{
|
||||
auto preset_name = day->getName();
|
||||
LL_DEBUGS("WindlightCaps") << "Current Day cycle is " << preset_name << LL_ENDL;
|
||||
if (preset_name == "_default_")
|
||||
{
|
||||
preset_name = "Default";
|
||||
}
|
||||
mDayCyclePresetsCombo->selectByValue(preset_name);
|
||||
// Sky is part of day so treat that as day cycle
|
||||
mWLPresetsCombo->selectByValue(LLSD(PRESET_NAME_DAY_CYCLE));
|
||||
// Water is not part of legacy day so we need to hunt around
|
||||
LLSettingsWater::ptr_t water = LLEnvironment::instance().getEnvironmentFixedWater(LLEnvironment::ENV_LOCAL);
|
||||
if (water)
|
||||
{
|
||||
// This is going to be possible. OS will support both Legacy and EEP
|
||||
// so having a water EEP asset with a Legacy day cycle could happen.
|
||||
LLUUID asset_id = water->getAssetId();
|
||||
if (asset_id.notNull())
|
||||
{
|
||||
mWaterPresetsCombo->selectByValue(LLSD(asset_id));
|
||||
}
|
||||
else
|
||||
{
|
||||
//mWaterPresetsCombo->selectByValue(LLSD(water->getName()));
|
||||
std::string preset_name = water->getName();
|
||||
if (preset_name == "_default_")
|
||||
{
|
||||
preset_name = "Default";
|
||||
}
|
||||
mWaterPresetsCombo->selectByValue(preset_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif //OPENSIM
|
||||
}
|
||||
else
|
||||
{
|
||||
mDayCyclePresetsCombo->selectByValue(LLSD(PRESET_NAME_NONE));
|
||||
}
|
||||
|
||||
LLSettingsSky::ptr_t sky = LLEnvironment::instance().getEnvironmentFixedSky(LLEnvironment::ENV_LOCAL);
|
||||
if (sky && sky->getAssetId().notNull())
|
||||
if (sky)
|
||||
{
|
||||
//LL_INFOS() << "EEP: sky name = " << sky->getName() << " - asset id = " << sky->getAssetId() << LL_ENDL;
|
||||
|
||||
mWLPresetsCombo->selectByValue(LLSD(sky->getAssetId()));
|
||||
if(sky->getAssetId().notNull())
|
||||
{
|
||||
mWLPresetsCombo->selectByValue(LLSD(sky->getAssetId()));
|
||||
}
|
||||
#ifdef OPENSIM
|
||||
else if (LLGridManager::getInstance()->isInOpenSim())
|
||||
{
|
||||
auto preset_name = sky->getName();
|
||||
LL_DEBUGS("WindlightCaps") << "Current Sky is " << preset_name << LL_ENDL;
|
||||
if (preset_name == "_default_")
|
||||
{
|
||||
preset_name = "Default";
|
||||
}
|
||||
mWLPresetsCombo->selectByValue(preset_name);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// Water is not part of legacy day so we need to hunt around
|
||||
LLSettingsWater::ptr_t water = LLEnvironment::instance().getEnvironmentFixedWater(LLEnvironment::ENV_LOCAL);
|
||||
if (water && water->getAssetId().notNull())
|
||||
if (water)
|
||||
{
|
||||
//LL_INFOS() << "EEP: water name = " << water->getName() << " - asset id = " << water->getAssetId() << LL_ENDL;
|
||||
|
||||
mWaterPresetsCombo->selectByValue(LLSD(water->getAssetId()));
|
||||
LLUUID asset_id = water->getAssetId();
|
||||
if (asset_id.notNull())
|
||||
{
|
||||
mWaterPresetsCombo->selectByValue(LLSD(asset_id));
|
||||
}
|
||||
#ifdef OPENSIM
|
||||
else if (LLGridManager::getInstance()->isInOpenSim())
|
||||
{
|
||||
auto preset_name = water->getName();
|
||||
if (preset_name == "_default_")
|
||||
{
|
||||
preset_name = "Default";
|
||||
}
|
||||
mWaterPresetsCombo->selectByValue(preset_name);
|
||||
}
|
||||
}
|
||||
#endif //OPENSIM
|
||||
}
|
||||
else
|
||||
{
|
||||
// LLEnvironment::ENV_REGION:
|
||||
// LLEnvironment::ENV_PARCEL:
|
||||
mWLPresetsCombo->selectByValue(LLSD(PRESET_NAME_REGION_DEFAULT));
|
||||
mWaterPresetsCombo->selectByValue(LLSD(PRESET_NAME_REGION_DEFAULT));
|
||||
mDayCyclePresetsCombo->selectByValue(LLSD(PRESET_NAME_REGION_DEFAULT));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -631,11 +771,21 @@ void FloaterQuickPrefs::loadSavedSettingsFromFile(const std::string& settings_pa
|
|||
|
||||
bool FloaterQuickPrefs::isValidPreset(const LLSD& preset)
|
||||
{
|
||||
return (!preset.asString().empty() &&
|
||||
!preset.asUUID().isNull() &&
|
||||
preset.asString() != PRESET_NAME_REGION_DEFAULT &&
|
||||
preset.asString() != PRESET_NAME_DAY_CYCLE &&
|
||||
preset.asString() != PRESET_NAME_NONE);
|
||||
if (preset.isUUID())
|
||||
{
|
||||
if(!preset.asUUID().isNull()){ return true;}
|
||||
}
|
||||
else if (preset.isString())
|
||||
{
|
||||
if(!preset.asString().empty() &&
|
||||
preset.asString() != PRESET_NAME_REGION_DEFAULT &&
|
||||
preset.asString() != PRESET_NAME_DAY_CYCLE &&
|
||||
preset.asString() != PRESET_NAME_NONE)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void FloaterQuickPrefs::stepComboBox(LLComboBox* ctrl, bool forward)
|
||||
|
|
@ -663,21 +813,88 @@ void FloaterQuickPrefs::stepComboBox(LLComboBox* ctrl, bool forward)
|
|||
|
||||
void FloaterQuickPrefs::selectSkyPreset(const LLSD& preset)
|
||||
{
|
||||
LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, preset.asUUID());
|
||||
// Opensim continued W/L support
|
||||
#ifdef OPENSIM
|
||||
if(!preset.isUUID() && LLGridManager::getInstance()->isInOpenSim())
|
||||
{
|
||||
LLSettingsSky::ptr_t legacy_sky = nullptr;
|
||||
LLSD messages;
|
||||
|
||||
legacy_sky = LLEnvironment::createSkyFromLegacyPreset(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", "skies", preset.asString() + ".xml"), messages);
|
||||
|
||||
if (legacy_sky)
|
||||
{
|
||||
// Need to preserve current sky manually in this case in contrast to asset-based settings
|
||||
LLSettingsWater::ptr_t current_water = LLEnvironment::instance().getCurrentWater();
|
||||
LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, legacy_sky, current_water);
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Legacy windlight conversion failed for " << preset << " existing env unchanged." << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
}
|
||||
else // note the else here bridges the endif
|
||||
#endif
|
||||
{
|
||||
LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, preset.asUUID());
|
||||
}
|
||||
LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
|
||||
LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_FAST, true);
|
||||
}
|
||||
|
||||
void FloaterQuickPrefs::selectWaterPreset(const LLSD& preset)
|
||||
{
|
||||
LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, preset.asUUID());
|
||||
#ifdef OPENSIM
|
||||
if(!preset.isUUID() && LLGridManager::getInstance()->isInOpenSim())
|
||||
{
|
||||
LLSettingsWater::ptr_t legacy_water = nullptr;
|
||||
LLSD messages;
|
||||
legacy_water = LLEnvironment::createWaterFromLegacyPreset(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", "water", preset.asString() + ".xml"), messages);
|
||||
if (legacy_water)
|
||||
{
|
||||
// Need to preserve current sky manually in this case in contrast to asset-based settings
|
||||
LLSettingsSky::ptr_t current_sky = LLEnvironment::instance().getCurrentSky();
|
||||
LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, current_sky, legacy_water);
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Legacy windlight conversion failed for " << preset << " existing env unchanged." << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
}
|
||||
else // beware the trailing else here.
|
||||
#endif
|
||||
{
|
||||
LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, preset.asUUID());
|
||||
}
|
||||
LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
|
||||
LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_FAST, true);
|
||||
}
|
||||
|
||||
void FloaterQuickPrefs::selectDayCyclePreset(const LLSD& preset)
|
||||
{
|
||||
LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, preset.asUUID());
|
||||
#ifdef OPENSIM
|
||||
if(!preset.isUUID() && LLGridManager::getInstance()->isInOpenSim())
|
||||
{
|
||||
LLSettingsDay::ptr_t legacyday = nullptr;
|
||||
LLSD messages;
|
||||
legacyday = LLEnvironment::createDayCycleFromLegacyPreset(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", "days", preset.asString() + ".xml"), messages);
|
||||
if (legacyday)
|
||||
{
|
||||
LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, legacyday);
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Legacy windlight conversion failed for " << preset << " existing env unchanged." << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
}
|
||||
else // beware trailing else that bridges the endif
|
||||
#endif
|
||||
{
|
||||
LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, preset.asUUID());
|
||||
}
|
||||
LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
|
||||
LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_FAST, true);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue