Sync with Upstream Alchemy
Changes LLEnvManagerNew::setRegionChangeCallback to LLAgent::addRegionChangedCallback Cleans up some of the timeout policies that aren't necessary any longer. Modernizes parts of LLViewerKeyboard, updates llregistry.h Begins changeover from LLDynamicArray to std::vector Minor merge of newer, trivial SSA functions. Introduces LLAgent functions: addParcelChangedCallback and canJoinGroups Support for secondlife:///app/appearance SLapps. Cleans up older functions.
This commit is contained in:
@@ -105,9 +105,11 @@ void LLEnvPrefs::setUseDayCycle(const std::string& name)
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
LLEnvManagerNew::LLEnvManagerNew()
|
||||
LLEnvManagerNew::LLEnvManagerNew():
|
||||
mInterpNextChangeMessage(true),
|
||||
mCurRegionUUID(LLUUID::null),
|
||||
mLastReceivedID(LLUUID::null)
|
||||
{
|
||||
mInterpNextChangeMessage = true;
|
||||
|
||||
// Set default environment settings.
|
||||
mUserPrefs.mUseRegionSettings = true;
|
||||
@@ -115,6 +117,9 @@ LLEnvManagerNew::LLEnvManagerNew()
|
||||
mUserPrefs.mWaterPresetName = "Default";
|
||||
mUserPrefs.mSkyPresetName = "Default";
|
||||
mUserPrefs.mDayCycleName = "Default";
|
||||
|
||||
LL_DEBUGS("Windlight")<<LL_ENDL;
|
||||
gAgent.addRegionChangedCallback(boost::bind(&LLEnvManagerNew::onRegionChange, this));
|
||||
}
|
||||
|
||||
bool LLEnvManagerNew::getUseRegionSettings() const
|
||||
@@ -313,6 +318,11 @@ void LLEnvManagerNew::loadUserPrefs()
|
||||
|
||||
mUserPrefs.mUseRegionSettings = gSavedSettings.getBOOL("UseEnvironmentFromRegion");
|
||||
mUserPrefs.mUseDayCycle = gSavedSettings.getBOOL("UseDayCycle");
|
||||
|
||||
if (mUserPrefs.mUseRegionSettings)
|
||||
{
|
||||
requestRegionSettings();
|
||||
}
|
||||
}
|
||||
|
||||
void LLEnvManagerNew::saveUserPrefs()
|
||||
@@ -411,6 +421,7 @@ void LLEnvManagerNew::dumpPresets()
|
||||
|
||||
void LLEnvManagerNew::requestRegionSettings()
|
||||
{
|
||||
LL_DEBUGS("Windlight") << LL_ENDL;
|
||||
LLEnvironmentRequest::initiate();
|
||||
}
|
||||
|
||||
@@ -435,11 +446,6 @@ boost::signals2::connection LLEnvManagerNew::setRegionSettingsChangeCallback(con
|
||||
return mRegionSettingsChangeSignal.connect(cb);
|
||||
}
|
||||
|
||||
boost::signals2::connection LLEnvManagerNew::setRegionChangeCallback(const region_change_signal_t::slot_type& cb)
|
||||
{
|
||||
return mRegionChangeSignal.connect(cb);
|
||||
}
|
||||
|
||||
boost::signals2::connection LLEnvManagerNew::setRegionSettingsAppliedCallback(const region_settings_applied_signal_t::slot_type& cb)
|
||||
{
|
||||
return mRegionSettingsAppliedSignal.connect(cb);
|
||||
@@ -470,25 +476,13 @@ const std::string LLEnvManagerNew::getScopeString(LLEnvKey::EScope scope)
|
||||
}
|
||||
}
|
||||
|
||||
void LLEnvManagerNew::onRegionCrossing()
|
||||
{
|
||||
LL_DEBUGS("Windlight") << "Crossed region" << LL_ENDL;
|
||||
onRegionChange(true);
|
||||
}
|
||||
|
||||
void LLEnvManagerNew::onTeleport()
|
||||
{
|
||||
LL_DEBUGS("Windlight") << "Teleported" << LL_ENDL;
|
||||
onRegionChange(false);
|
||||
}
|
||||
|
||||
void LLEnvManagerNew::onRegionSettingsResponse(const LLSD& content)
|
||||
{
|
||||
// If the message was valid, grab the UUID from it and save it for next outbound update message.
|
||||
mLastReceivedID = content[0]["messageID"].asUUID();
|
||||
|
||||
// Refresh cached region settings.
|
||||
LL_DEBUGS("Windlight") << "Caching region environment settings: " << content << LL_ENDL;
|
||||
LL_DEBUGS("Windlight") << "Received region environment settings: " << content << LL_ENDL;
|
||||
F32 sun_hour = 0; // *TODO
|
||||
LLEnvironmentSettings new_settings(content[1], content[2], content[3], sun_hour);
|
||||
mCachedRegionPrefs = new_settings;
|
||||
@@ -613,6 +607,7 @@ void LLEnvManagerNew::updateWaterFromPrefs(bool interpolate)
|
||||
|
||||
void LLEnvManagerNew::updateManagersFromPrefs(bool interpolate)
|
||||
{
|
||||
LL_DEBUGS("Windlight")<<LL_ENDL;
|
||||
// [RLVa:KB] - Checked: 2011-09-04 (RLVa-1.4.1a) | Added: RLVa-1.4.1a
|
||||
if (gRlvHandler.hasBehaviour(RLV_BHVR_SETENV))
|
||||
{
|
||||
@@ -676,30 +671,37 @@ bool LLEnvManagerNew::useDefaultWater()
|
||||
}
|
||||
|
||||
|
||||
void LLEnvManagerNew::onRegionChange(bool interpolate)
|
||||
void LLEnvManagerNew::onRegionChange()
|
||||
{
|
||||
// Avoid duplicating region setting requests
|
||||
// by checking whether the region is actually changing.
|
||||
LLViewerRegion* regionp = gAgent.getRegion();
|
||||
LLUUID region_uuid = regionp ? regionp->getRegionID() : LLUUID::null;
|
||||
if (region_uuid == mCurRegionUUID)
|
||||
if (region_uuid != mCurRegionUUID)
|
||||
{
|
||||
return;
|
||||
// Clear locally modified region settings.
|
||||
mNewRegionPrefs.clear();
|
||||
|
||||
// *TODO: clear environment settings of the previous region?
|
||||
|
||||
// Request environment settings of the new region.
|
||||
mCurRegionUUID = region_uuid;
|
||||
// for region crossings, interpolate the change; for teleports, don't
|
||||
mInterpNextChangeMessage = (gAgent.getTeleportState() == LLAgent::TELEPORT_NONE);
|
||||
LL_DEBUGS("Windlight") << (mInterpNextChangeMessage ? "Crossed" : "Teleported")
|
||||
<< " to new region: " << region_uuid
|
||||
<< LL_ENDL;
|
||||
requestRegionSettings();
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_DEBUGS("Windlight") << "disregarding region change; interp: "
|
||||
<< (mInterpNextChangeMessage ? "true" : "false")
|
||||
<< " regionp: " << regionp
|
||||
<< " old: " << mCurRegionUUID
|
||||
<< " new: " << region_uuid
|
||||
<< LL_ENDL;
|
||||
}
|
||||
|
||||
// Clear locally modified region settings.
|
||||
mNewRegionPrefs.clear();
|
||||
|
||||
// *TODO: clear environment settings of the previous region?
|
||||
|
||||
// Request environment settings of the new region.
|
||||
LL_DEBUGS("Windlight") << "New viewer region: " << region_uuid << LL_ENDL;
|
||||
mCurRegionUUID = region_uuid;
|
||||
mInterpNextChangeMessage = interpolate;
|
||||
requestRegionSettings();
|
||||
|
||||
// Let interested parties know agent region has been changed.
|
||||
mRegionChangeSignal();
|
||||
}
|
||||
|
||||
// Aurora-sim windlight refresh
|
||||
@@ -729,7 +731,7 @@ class WindLightRefresh : public LLHTTPNode
|
||||
|
||||
llinfos << "Windlight Refresh, interpolate:" << env->mInterpNextChangeMessage << llendl;
|
||||
env->requestRegionSettings();
|
||||
env->mRegionChangeSignal();
|
||||
env->onRegionChange();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user