diff options
Diffstat (limited to 'indra/newview')
29 files changed, 156 insertions, 4741 deletions
| diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 369ce6f24e..bbe32866f6 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -158,7 +158,6 @@ set(viewer_SOURCE_FILES      llcurrencyuimanager.cpp      llcylinder.cpp      lldateutil.cpp -    lldaycyclemanager.cpp      lldebugmessagebox.cpp      lldebugview.cpp      lldeferredsounds.cpp @@ -183,7 +182,6 @@ set(viewer_SOURCE_FILES      llemote.cpp      llenvadapters.cpp      llenvironment.cpp -    llenvmanager.cpp      llestateinfomodel.cpp      lleventnotifier.cpp      lleventpoll.cpp @@ -692,19 +690,13 @@ set(viewer_SOURCE_FILES      llvowater.cpp      llvowlsky.cpp      llwatchdog.cpp -    llwaterparammanager.cpp -    llwaterparamset.cpp      llwearableitemslist.cpp      llwearablelist.cpp      llweb.cpp      llwebprofile.cpp      llwind.cpp      llwindowlistener.cpp -    llwlanimator.cpp -    llwldaycycle.cpp      llwlhandlers.cpp -    llwlparammanager.cpp -    llwlparamset.cpp      llworld.cpp      llworldmap.cpp      llworldmapmessage.cpp @@ -783,7 +775,6 @@ set(viewer_HEADER_FILES      llcurrencyuimanager.h      llcylinder.h      lldateutil.h -    lldaycyclemanager.h      lldebugmessagebox.h      lldebugview.h      lldeferredsounds.h @@ -808,7 +799,6 @@ set(viewer_HEADER_FILES      llemote.h      llenvadapters.h      llenvironment.h -    llenvmanager.h      llestateinfomodel.h      lleventnotifier.h      lleventpoll.h @@ -1311,19 +1301,13 @@ set(viewer_HEADER_FILES      llvowater.h      llvowlsky.h      llwatchdog.h -    llwaterparammanager.h -    llwaterparamset.h      llwearableitemslist.h      llwearablelist.h      llweb.h      llwebprofile.h      llwind.h      llwindowlistener.h -    llwlanimator.h -    llwldaycycle.h      llwlhandlers.h -    llwlparammanager.h -    llwlparamset.h      llworld.h      llworldmap.h      llworldmapmessage.h @@ -2369,7 +2353,6 @@ if (LL_TESTS)  include(LLAddBuildTest)  SET(viewer_TEST_SOURCE_FILES    llagentaccess.cpp -  llwlparammanager.cpp    )  set_source_files_properties(    ${viewer_TEST_SOURCE_FILES} diff --git a/indra/newview/lldaycyclemanager.h b/indra/newview/lldaycyclemanager.h index 04db9d5dac..810212c92a 100644 --- a/indra/newview/lldaycyclemanager.h +++ b/indra/newview/lldaycyclemanager.h @@ -30,7 +30,6 @@  #include <map>  #include <string> -#include "llwldaycycle.h"  #include "llwlparammanager.h"  /** @@ -46,14 +45,14 @@ class LLDayCycleManager : public LLSingleton<LLDayCycleManager>  public:  	typedef std::list<std::string> preset_name_list_t; -	typedef std::map<std::string, LLWLDayCycle> dc_map_t; +// 	typedef std::map<std::string, LLWLDayCycle> dc_map_t;  	typedef boost::signals2::signal<void()> modify_signal_t;  	void getPresetNames(preset_name_list_t& names) const;  	void getPresetNames(preset_name_list_t& user, preset_name_list_t& sys) const;  	void getUserPresetNames(preset_name_list_t& user) const; -	bool getPreset(const std::string name, LLWLDayCycle& day_cycle) const; +//	bool getPreset(const std::string name, LLWLDayCycle& day_cycle) const;  	bool getPreset(const std::string name, LLSD& day_cycle) const;  	bool presetExists(const std::string name) const;  	bool isSystemPreset(const std::string& name) const; diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp index 2ff4edabe3..f10c116555 100644 --- a/indra/newview/lldrawpoolwlsky.cpp +++ b/indra/newview/lldrawpoolwlsky.cpp @@ -81,9 +81,6 @@ LLDrawPoolWLSky::LLDrawPoolWLSky(void) :  			sCloudNoiseRawImage = NULL ;  		}  	} - -    /* *LAPRAS */ -//	LLWLParamManager::getInstance()->propagateParameters();  }  LLDrawPoolWLSky::~LLDrawPoolWLSky() diff --git a/indra/newview/llenvmanager.cpp b/indra/newview/llenvmanager.cpp deleted file mode 100644 index 5fc9231506..0000000000 --- a/indra/newview/llenvmanager.cpp +++ /dev/null @@ -1,720 +0,0 @@ -/** - * @file llenvmanager.cpp - * @brief Implementation of classes managing WindLight and water settings. - * - * $LicenseInfo:firstyear=2009&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2011, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llagent.h" -#include "lldaycyclemanager.h" -#include "llviewercontrol.h" // for gSavedSettings -#include "llviewerregion.h" -#include "llwaterparammanager.h" -#include "llwlhandlers.h" -#include "llwlparammanager.h" -#include "lltrans.h" -#include "llenvmanager.h" - -std::string LLWLParamKey::toString() const -{ -	switch (scope) -	{ -	case SCOPE_LOCAL: -		return name + std::string(" (") + LLTrans::getString("Local") + std::string(")"); -		break; -	case SCOPE_REGION: -		return name + std::string(" (") + LLTrans::getString("Region") + std::string(")"); -		break; -	default: -		return name + " (?)"; -	} -} - -std::string LLEnvPrefs::getWaterPresetName() const -{ -	if (mWaterPresetName.empty()) -	{ -		LL_WARNS() << "Water preset name is empty" << LL_ENDL; -	} - -	return mWaterPresetName; -} - -std::string LLEnvPrefs::getSkyPresetName() const -{ -	if (mSkyPresetName.empty()) -	{ -		LL_WARNS() << "Sky preset name is empty" << LL_ENDL; -	} - -	return mSkyPresetName; -} - -std::string LLEnvPrefs::getDayCycleName() const -{ -	if (mDayCycleName.empty()) -	{ -		LL_WARNS() << "Day cycle name is empty" << LL_ENDL; -	} - -	return mDayCycleName; -} - -void LLEnvPrefs::setUseRegionSettings(bool val) -{ -	mUseRegionSettings = val; -} - -void LLEnvPrefs::setUseWaterPreset(const std::string& name) -{ -	mUseRegionSettings = false; -	mWaterPresetName = name; -} - -void LLEnvPrefs::setUseSkyPreset(const std::string& name) -{ -	mUseRegionSettings = false; -	mUseDayCycle = false; -	mSkyPresetName = name; -} - -void LLEnvPrefs::setUseDayCycle(const std::string& name) -{ -	mUseRegionSettings = false; -	mUseDayCycle = true; -	mDayCycleName = name; -} - -//============================================================================= -LLEnvManagerNew::LLEnvManagerNew(): -	mInterpNextChangeMessage(true), -	mCurRegionUUID(LLUUID::null), -	mLastReceivedID(LLUUID::null) -{ - -	// Set default environment settings. -	mUserPrefs.mUseRegionSettings = true; -	mUserPrefs.mUseDayCycle = true; -	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 -{ -	return mUserPrefs.getUseRegionSettings(); -} - -bool LLEnvManagerNew::getUseDayCycle() const -{ -	return mUserPrefs.getUseDayCycle(); -} - -bool LLEnvManagerNew::getUseFixedSky() const -{ -	return mUserPrefs.getUseFixedSky(); -} - -std::string LLEnvManagerNew::getWaterPresetName() const -{ -	return mUserPrefs.getWaterPresetName(); -} - -std::string LLEnvManagerNew::getSkyPresetName() const -{ -	return mUserPrefs.getSkyPresetName(); -} - -std::string LLEnvManagerNew::getDayCycleName() const -{ -	return mUserPrefs.getDayCycleName(); -} - -const LLEnvironmentSettings& LLEnvManagerNew::getRegionSettings() const -{ -	return !mNewRegionPrefs.isEmpty() ? mNewRegionPrefs : mCachedRegionPrefs; -} - -void LLEnvManagerNew::setRegionSettings(const LLEnvironmentSettings& new_settings) -{ -	// Set region settings override that will be used locally -	// until user either uploads the changes or goes to another region. -	mNewRegionPrefs = new_settings; -} - -bool LLEnvManagerNew::usePrefs() -{ -	LL_DEBUGS("Windlight") << "Displaying preferred environment" << LL_ENDL; -	updateManagersFromPrefs(false); -	return true; -} - -bool LLEnvManagerNew::useDefaults() -{ -	bool rslt; - -	rslt  = useDefaultWater(); -	rslt &= useDefaultSky(); - -	return rslt; -} - -bool LLEnvManagerNew::useRegionSettings() -{ -	bool rslt; - -	rslt  = useRegionSky(); -	rslt &= useRegionWater(); - -	return rslt; -} - -bool LLEnvManagerNew::useWaterPreset(const std::string& name) -{ -	LL_DEBUGS("Windlight") << "Displaying water preset " << name << LL_ENDL; -	LLWaterParamManager& water_mgr = LLWaterParamManager::instance(); -	bool rslt = water_mgr.getParamSet(name, water_mgr.mCurParams); -	llassert(rslt == true); -	return rslt; -} - -bool LLEnvManagerNew::useWaterParams(const LLSD& params) -{ -	LL_DEBUGS("Windlight") << "Displaying water params" << LL_ENDL; -	LLWaterParamManager::instance().mCurParams.setAll(params); -	return true; -} - -bool LLEnvManagerNew::useSkyPreset(const std::string& name) -{ -	LLWLParamManager& sky_mgr = LLWLParamManager::instance(); -	LLWLParamSet param_set; - -	if (!sky_mgr.getParamSet(LLWLParamKey(name, LLEnvKey::SCOPE_LOCAL), param_set)) -	{ -		LL_WARNS() << "No sky preset named " << name << LL_ENDL; -		return false; -	} - -	LL_DEBUGS("Windlight") << "Displaying sky preset " << name << LL_ENDL; -	sky_mgr.applySkyParams(param_set.getAll()); -	return true; -} - -bool LLEnvManagerNew::useSkyParams(const LLSD& params) -{ -	LL_DEBUGS("Windlight") << "Displaying sky params" << LL_ENDL; -	LLWLParamManager::instance().applySkyParams(params); -	return true; -} - -bool LLEnvManagerNew::useDayCycle(const std::string& name, LLEnvKey::EScope scope) -{ -	LLSD params; - -	if (scope == LLEnvKey::SCOPE_REGION) -	{ -		LL_DEBUGS("Windlight") << "Displaying region day cycle " << name << LL_ENDL; -		params = getRegionSettings().getWLDayCycle(); -	} -	else -	{ -		LL_DEBUGS("Windlight") << "Displaying local day cycle " << name << LL_ENDL; - -		if (!LLDayCycleManager::instance().getPreset(name, params)) -		{ -			LL_WARNS() << "No day cycle named " << name << LL_ENDL; -			return false; -		} -	} - -	bool rslt = LLWLParamManager::instance().applyDayCycleParams(params, scope); -	llassert(rslt == true); -	return rslt; -} - -bool LLEnvManagerNew::useDayCycleParams(const LLSD& params, LLEnvKey::EScope scope, F32 time /* = 0.5*/) -{ -	LL_DEBUGS("Windlight") << "Displaying day cycle params" << LL_ENDL; -	return LLWLParamManager::instance().applyDayCycleParams(params, scope); -} - -void LLEnvManagerNew::setUseRegionSettings(bool val) -{ -	mUserPrefs.setUseRegionSettings(val); -	saveUserPrefs(); -	updateManagersFromPrefs(false); -} - -void LLEnvManagerNew::setUseWaterPreset(const std::string& name) -{ -	// *TODO: make sure the preset exists. -	if (name.empty()) -	{ -		LL_WARNS() << "Empty water preset name passed" << LL_ENDL; -		return; -	} - -	mUserPrefs.setUseWaterPreset(name); -	saveUserPrefs(); -	updateManagersFromPrefs(false); -} - -void LLEnvManagerNew::setUseSkyPreset(const std::string& name) -{ -	// *TODO: make sure the preset exists. -	if (name.empty()) -	{ -		LL_WARNS() << "Empty sky preset name passed" << LL_ENDL; -		return; -	} - -	mUserPrefs.setUseSkyPreset(name); -	saveUserPrefs(); -	updateManagersFromPrefs(false); -} - -void LLEnvManagerNew::setUseDayCycle(const std::string& name) -{ -	if (!LLDayCycleManager::instance().presetExists(name)) -	{ -		LL_WARNS() << "Invalid day cycle name passed" << LL_ENDL; -		return; -	} - -	mUserPrefs.setUseDayCycle(name); -	saveUserPrefs(); -	updateManagersFromPrefs(false); -} - -void LLEnvManagerNew::loadUserPrefs() -{ -	// operate on members directly to avoid side effects -	mUserPrefs.mWaterPresetName	= gSavedSettings.getString("WaterPresetName"); -	mUserPrefs.mSkyPresetName	= gSavedSettings.getString("SkyPresetName"); -	mUserPrefs.mDayCycleName	= gSavedSettings.getString("DayCycleName"); - -	bool use_region_settings = gSavedSettings.getBOOL("EnvironmentPersistAcrossLogin") ? gSavedSettings.getBOOL("UseEnvironmentFromRegion") : true; -	mUserPrefs.mUseRegionSettings	= use_region_settings; -	mUserPrefs.mUseDayCycle			= gSavedSettings.getBOOL("UseDayCycle"); - -	if (mUserPrefs.mUseRegionSettings) -	{ -		requestRegionSettings(); -	} -} - -void LLEnvManagerNew::saveUserPrefs() -{ -	gSavedSettings.setString("WaterPresetName",			getWaterPresetName()); -	gSavedSettings.setString("SkyPresetName",			getSkyPresetName()); -	gSavedSettings.setString("DayCycleName",			getDayCycleName()); - -	gSavedSettings.setBOOL("UseEnvironmentFromRegion",	getUseRegionSettings()); -	gSavedSettings.setBOOL("UseDayCycle",				getUseDayCycle()); - -	mUsePrefsChangeSignal(); -} - -void LLEnvManagerNew::setUserPrefs( -	const std::string& water_preset, -	const std::string& sky_preset, -	const std::string& day_cycle_preset, -	bool use_fixed_sky, -	bool use_region_settings) -{ -	// operate on members directly to avoid side effects -	mUserPrefs.mWaterPresetName	= water_preset; -	mUserPrefs.mSkyPresetName	= sky_preset; -	mUserPrefs.mDayCycleName	= day_cycle_preset; - -	mUserPrefs.mUseRegionSettings	= use_region_settings; -	mUserPrefs.mUseDayCycle			= !use_fixed_sky; - -	saveUserPrefs(); -	updateManagersFromPrefs(false); -} - -void LLEnvManagerNew::dumpUserPrefs() -{ -	LL_DEBUGS("Windlight") << "WaterPresetName: "	<< gSavedSettings.getString("WaterPresetName") << LL_ENDL; -	LL_DEBUGS("Windlight") << "SkyPresetName: "		<< gSavedSettings.getString("SkyPresetName") << LL_ENDL; -	LL_DEBUGS("Windlight") << "DayCycleName: "		<< gSavedSettings.getString("DayCycleName") << LL_ENDL; - -	LL_DEBUGS("Windlight") << "UseEnvironmentFromRegion: "	<< gSavedSettings.getBOOL("UseEnvironmentFromRegion") << LL_ENDL; -	LL_DEBUGS("Windlight") << "UseDayCycle: "				<< gSavedSettings.getBOOL("UseDayCycle") << LL_ENDL; -} - -void LLEnvManagerNew::dumpPresets() -{ -	const LLEnvironmentSettings& region_settings = getRegionSettings(); -	std::string region_name = gAgent.getRegion() ? gAgent.getRegion()->getName() : "Unknown region"; - -	// Dump water presets. -	LL_DEBUGS("Windlight") << "Waters:" << LL_ENDL; -	if (region_settings.getWaterParams().size() != 0) -	{ -		LL_DEBUGS("Windlight") << " - " << region_name << LL_ENDL; -	} -	LLWaterParamManager::preset_name_list_t water_presets; -	LLWaterParamManager::instance().getPresetNames(water_presets); -	for (LLWaterParamManager::preset_name_list_t::const_iterator it = water_presets.begin(); it != water_presets.end(); ++it) -	{ -		LL_DEBUGS("Windlight") << " - " << *it << LL_ENDL; -	} - -	// Dump sky presets. -	LL_DEBUGS("Windlight") << "Skies:" << LL_ENDL; -	LLWLParamManager::preset_key_list_t sky_preset_keys; -	LLWLParamManager::instance().getPresetKeys(sky_preset_keys); -	for (LLWLParamManager::preset_key_list_t::const_iterator it = sky_preset_keys.begin(); it != sky_preset_keys.end(); ++it) -	{ -		std::string preset_name = it->name; -		std::string item_title; - -		if (it->scope == LLEnvKey::SCOPE_LOCAL) // local preset -		{ -			item_title = preset_name; -		} -		else // region preset -		{ -			item_title = preset_name + " (" + region_name + ")"; -		} -		LL_DEBUGS("Windlight") << " - " << item_title << LL_ENDL; -	} - -	// Dump day cycles. -	LL_DEBUGS("Windlight") << "Days:" << LL_ENDL; -	const LLSD& cur_region_dc = region_settings.getWLDayCycle(); -	if (cur_region_dc.size() != 0) -	{ -		LL_DEBUGS("Windlight") << " - " << region_name << LL_ENDL; -	} -	LLDayCycleManager::preset_name_list_t days; -	LLDayCycleManager::instance().getPresetNames(days); -	for (LLDayCycleManager::preset_name_list_t::const_iterator it = days.begin(); it != days.end(); ++it) -	{ -		LL_DEBUGS("Windlight") << " - " << *it << LL_ENDL; -	} -} - -void LLEnvManagerNew::requestRegionSettings() -{ -	LL_DEBUGS("Windlight") << LL_ENDL; -	LLEnvironmentRequest::initiate(); -} - -bool LLEnvManagerNew::sendRegionSettings(const LLEnvironmentSettings& new_settings) -{ -	LLSD metadata; - -	metadata["regionID"] = gAgent.getRegion()->getRegionID(); -	// add last received update ID to outbound message so simulator can handle concurrent updates -	metadata["messageID"] = mLastReceivedID; - -	return LLEnvironmentApply::initiateRequest(new_settings.makePacket(metadata)); -} - -boost::signals2::connection LLEnvManagerNew::setPreferencesChangeCallback(const prefs_change_signal_t::slot_type& cb) -{ -	return mUsePrefsChangeSignal.connect(cb); -} - -boost::signals2::connection LLEnvManagerNew::setRegionSettingsChangeCallback(const region_settings_change_signal_t::slot_type& cb) -{ -	return mRegionSettingsChangeSignal.connect(cb); -} - -boost::signals2::connection LLEnvManagerNew::setRegionSettingsAppliedCallback(const region_settings_applied_signal_t::slot_type& cb) -{ -	return mRegionSettingsAppliedSignal.connect(cb); -} - -// static -bool LLEnvManagerNew::canEditRegionSettings() -{ -	LLViewerRegion* region = gAgent.getRegion(); -	BOOL owner_or_god = gAgent.isGodlike() || (region && region->getOwner() == gAgent.getID()); -	BOOL owner_or_god_or_manager = owner_or_god || (region && region->isEstateManager()); - -	LL_DEBUGS("Windlight") << "Can edit region settings: " << (bool) owner_or_god_or_manager << LL_ENDL; -	return owner_or_god_or_manager; -} - -// static -const std::string LLEnvManagerNew::getScopeString(LLEnvKey::EScope scope) -{ -	switch(scope) -	{ -		case LLEnvKey::SCOPE_LOCAL: -			return LLTrans::getString("LocalSettings"); -		case LLEnvKey::SCOPE_REGION: -			return LLTrans::getString("RegionSettings"); -		default: -			return " (?)"; -	} -} - -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_WARNS("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; - -	// Load region sky presets. -	LLWLParamManager::instance().refreshRegionPresets(getRegionSettings().getSkyMap()); - -	// If using server settings, update managers. -	if (getUseRegionSettings()) -	{ -		updateManagersFromPrefs(mInterpNextChangeMessage); -	} - -	// Let interested parties know about the region settings update. -	mRegionSettingsChangeSignal(); - -	// reset -	mInterpNextChangeMessage = false; -} - -void LLEnvManagerNew::onRegionSettingsApplyResponse(bool ok) -{ -	LL_DEBUGS("Windlight") << "Applying region settings " << (ok ? "succeeded" : "failed") << LL_ENDL; - -	// Clear locally modified region settings because they have just been uploaded. -	mNewRegionPrefs.clear(); - -	mRegionSettingsAppliedSignal(ok); -} - -//-- private methods ---------------------------------------------------------- - -// virtual -void LLEnvManagerNew::initSingleton() -{ -	LL_DEBUGS("Windlight") << "Initializing LLEnvManagerNew" << LL_ENDL; - -	loadUserPrefs(); - -	// preferences loaded, can set params -	std::string preferred_day = getDayCycleName(); -	if (!useDayCycle(preferred_day, LLEnvKey::SCOPE_LOCAL)) -	{ -		LL_WARNS() << "No day cycle named " << preferred_day << ", reverting LLWLParamManager to defaults" << LL_ENDL; -		LLWLParamManager::instance().setDefaultDay(); -	} - -	std::string sky = getSkyPresetName(); -	if (!useSkyPreset(sky)) -	{ -		LL_WARNS() << "No sky preset named " << sky << ", falling back to defaults" << LL_ENDL; -		LLWLParamManager::instance().setDefaultSky(); - -		// *TODO: Fix user preferences accordingly. -	} - -	LLWLParamManager::instance().resetAnimator(0.5 /*noon*/, getUseDayCycle()); -} - -void LLEnvManagerNew::updateSkyFromPrefs() -{ -	bool success = true; - -	// Sync sky with user prefs. -	if (getUseRegionSettings()) // apply region-wide settings -	{ -		success = useRegionSky(); -	} -	else // apply user-specified settings -	{ -		if (getUseDayCycle()) -		{ -			success = useDayCycle(getDayCycleName(), LLEnvKey::SCOPE_LOCAL); -		} -		else -		{ -			success = useSkyPreset(getSkyPresetName()); -		} -	} - -	// If something went wrong, fall back to defaults. -	if (!success) -	{ -		// *TODO: fix user prefs -		useDefaultSky(); -	} -} - -void LLEnvManagerNew::updateWaterFromPrefs(bool interpolate) -{ -	LLWaterParamManager& water_mgr = LLWaterParamManager::instance(); -	LLSD target_water_params; - -	// Determine new water settings based on user prefs. - -	{ -		// Fall back to default water. -		LLWaterParamSet default_water; -		water_mgr.getParamSet("Default", default_water); -		target_water_params = default_water.getAll(); -	} - -	if (getUseRegionSettings()) -	{ -		// *TODO: make sure whether region settings belong to the current region? -		const LLSD& region_water_params = getRegionSettings().getWaterParams(); -		if (region_water_params.size() != 0) // region has no water settings -		{ -			LL_DEBUGS("Windlight") << "Applying region water" << LL_ENDL; -			target_water_params = region_water_params; -		} -		else -		{ -			LL_DEBUGS("Windlight") << "Applying default water" << LL_ENDL; -		} -	} -	else -	{ -		std::string water = getWaterPresetName(); -		LL_DEBUGS("Windlight") << "Applying water preset [" << water << "]" << LL_ENDL; -		LLWaterParamSet params; -		if (!water_mgr.getParamSet(water, params)) -		{ -			LL_WARNS() << "No water preset named " << water << ", falling back to defaults" << LL_ENDL; -			water_mgr.getParamSet("Default", params); - -			// *TODO: Fix user preferences accordingly. -		} -		target_water_params = params.getAll(); -	} - -	// Sync water with user prefs. -	water_mgr.applyParams(target_water_params, interpolate); -} - -void LLEnvManagerNew::updateManagersFromPrefs(bool interpolate) -{ -	LL_DEBUGS("Windlight")<<LL_ENDL; -	// Apply water settings. -	updateWaterFromPrefs(interpolate); - -	// Apply sky settings. -	updateSkyFromPrefs(); -} - -bool LLEnvManagerNew::useRegionSky() -{ -	const LLEnvironmentSettings& region_settings = getRegionSettings(); - -	// If region is set to defaults, -	if (region_settings.getSkyMap().size() == 0) -	{ -		// well... apply the default sky settings. -		useDefaultSky(); -		return true; -	} - -	// Otherwise apply region day cycle/skies. -	LL_DEBUGS("Windlight") << "Applying region sky" << LL_ENDL; - -	// *TODO: Support fixed sky from region. Just do sky reset for now. -	if (region_settings.getSkyMap().size() == 1) -	{ -		// Region is set to fixed sky. Reset. -		useSkyParams(region_settings.getSkyMap().beginMap()->second); -	} -	return useDayCycleParams( -		region_settings.getWLDayCycle(), -		LLEnvKey::SCOPE_REGION, -		region_settings.getDayTime()); -} - -bool LLEnvManagerNew::useRegionWater() -{ -	const LLEnvironmentSettings& region_settings = getRegionSettings(); -	const LLSD& region_water = region_settings.getWaterParams(); - -	// If region is set to defaults, -	if (region_water.size() == 0) -	{ -		// well... apply the default water settings. -		return useDefaultWater(); -	} - -	// Otherwise apply region water. -	LL_DEBUGS("Windlight") << "Applying region sky" << LL_ENDL; -	return useWaterParams(region_water); -} - -bool LLEnvManagerNew::useDefaultSky() -{ -	return useDayCycle("Default", LLEnvKey::SCOPE_LOCAL); -} - -bool LLEnvManagerNew::useDefaultWater() -{ -	return useWaterPreset("Default"); -} - - -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) -	{ -	// 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; -	} -} diff --git a/indra/newview/llenvmanager.h b/indra/newview/llenvmanager.h deleted file mode 100644 index 31a093ad5d..0000000000 --- a/indra/newview/llenvmanager.h +++ /dev/null @@ -1,350 +0,0 @@ -/** - * @file llenvmanager.h - * @brief Declaration of classes managing WindLight and water settings. - * - * $LicenseInfo:firstyear=2009&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2011, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLENVMANAGER_H -#define LL_LLENVMANAGER_H - -#include "llmemory.h" -#include "llsd.h" - -class LLWLParamManager; -class LLWaterParamManager; -class LLWLAnimator; - -// generic key -struct LLEnvKey -{ -public: -	// Note: enum ordering is important; for example, a region-level floater (1) will see local and region (all values that are <=) -	typedef enum e_scope -	{ -		SCOPE_LOCAL,				// 0 -		SCOPE_REGION//,				// 1 -		// SCOPE_ESTATE,			// 2 -		// etc. -	} EScope; -}; - -struct LLWLParamKey : LLEnvKey -{ -public: -	// scope and source of a param set (WL sky preset) -	std::string name; -	EScope scope; - -	// for conversion from LLSD -	static const int NAME_IDX = 0; -	static const int SCOPE_IDX = 1; - -	inline LLWLParamKey(const std::string& n, EScope s) -		: name(n), scope(s) -	{ -	} - -	inline LLWLParamKey(LLSD llsd) -		: name(llsd[NAME_IDX].asString()), scope(EScope(llsd[SCOPE_IDX].asInteger())) -	{ -	} - -	inline LLWLParamKey() // NOT really valid, just so std::maps can return a default of some sort -		: name(""), scope(SCOPE_LOCAL) -	{ -	} - -	inline LLWLParamKey(std::string& stringVal) -	{ -		size_t len = stringVal.length(); -		if (len > 0) -		{ -			name = stringVal.substr(0, len - 1); -			scope = (EScope) atoi(stringVal.substr(len - 1, len).c_str()); -		} -	} - -	inline std::string toStringVal() const -	{ -		std::stringstream str; -		str << name << scope; -		return str.str(); -	} - -	inline LLSD toLLSD() const -	{ -		LLSD llsd = LLSD::emptyArray(); -		llsd.append(LLSD(name)); -		llsd.append(LLSD(scope)); -		return llsd; -	} - -	inline void fromLLSD(const LLSD& llsd) -	{ -		name = llsd[NAME_IDX].asString(); -		scope = EScope(llsd[SCOPE_IDX].asInteger()); -	} - -	inline bool operator <(const LLWLParamKey other) const -	{ -		if (name < other.name) -		{	 -			return true; -		} -		else if (name > other.name) -		{ -			return false; -		} -		else -		{ -			return scope < other.scope; -		} -	} - -	inline bool operator ==(const LLWLParamKey other) const -	{ -		return (name == other.name) && (scope == other.scope); -	} - -	std::string toString() const; -}; - -class LLEnvironmentSettings -{ -public: -	LLEnvironmentSettings() : -		mWLDayCycle(LLSD::emptyMap()), -		mSkyMap(LLSD::emptyMap()), -		mWaterParams(LLSD::emptyMap()), -		mDayTime(0.f) -	{} -	LLEnvironmentSettings(const LLSD& dayCycle, const LLSD& skyMap, const LLSD& waterParams, F64 dayTime) : -		mWLDayCycle(dayCycle), -		mSkyMap(skyMap), -		mWaterParams(waterParams), -		mDayTime(dayTime) -	{} -	~LLEnvironmentSettings() {} - -	void saveParams(const LLSD& dayCycle, const LLSD& skyMap, const LLSD& waterParams, F64 dayTime) -	{ -		mWLDayCycle = dayCycle; -		mSkyMap = skyMap; -		mWaterParams = waterParams; -		mDayTime = dayTime; -	} - -	const LLSD& getWLDayCycle() const -	{ -		return mWLDayCycle; -	} - -	const LLSD& getWaterParams() const -	{ -		return mWaterParams; -	} - -	const LLSD& getSkyMap() const -	{ -		return mSkyMap; -	} - -	F64 getDayTime() const -	{ -		return mDayTime; -	} - -	bool isEmpty() const -	{ -		return mWLDayCycle.size() == 0; -	} - -	void clear() -	{ -		*this = LLEnvironmentSettings(); -	} - -	LLSD makePacket(const LLSD& metadata) const -	{ -		LLSD full_packet = LLSD::emptyArray(); - -		// 0: metadata -		full_packet.append(metadata); - -		// 1: day cycle -		full_packet.append(mWLDayCycle); - -		// 2: map of sky setting names to sky settings (as LLSD) -		full_packet.append(mSkyMap); - -		// 3: water params -		full_packet.append(mWaterParams); - -		return full_packet; -	} - -private: -	LLSD mWLDayCycle, mWaterParams, mSkyMap; -	F64 mDayTime; -}; - -/** - * User environment preferences. - */ -class LLEnvPrefs -{ -public: -	LLEnvPrefs() : mUseRegionSettings(true), mUseDayCycle(true) {} - -	bool getUseRegionSettings() const { return mUseRegionSettings; } -	bool getUseDayCycle() const { return mUseDayCycle; } -	bool getUseFixedSky() const { return !getUseDayCycle(); } - -	std::string getWaterPresetName() const; -	std::string getSkyPresetName() const; -	std::string getDayCycleName() const; - -	void setUseRegionSettings(bool val); -	void setUseWaterPreset(const std::string& name); -	void setUseSkyPreset(const std::string& name); -	void setUseDayCycle(const std::string& name); - -	bool			mUseRegionSettings; -	bool			mUseDayCycle; -	std::string		mWaterPresetName; -	std::string		mSkyPresetName; -	std::string		mDayCycleName; -}; - -/** - * Setting: - * 1. Use region settings. - * 2. Use my setting: <water preset> + <fixed_sky>|<day_cycle> - */ -class LLEnvManagerNew : public LLSingleton<LLEnvManagerNew> -{ -	LLSINGLETON(LLEnvManagerNew); -	LOG_CLASS(LLEnvManagerNew); -public: -	typedef boost::signals2::signal<void()> prefs_change_signal_t; -	typedef boost::signals2::signal<void()> region_settings_change_signal_t; -	typedef boost::signals2::signal<void(bool)> region_settings_applied_signal_t; - -	// getters to access user env. preferences -	bool getUseRegionSettings() const; -	bool getUseDayCycle() const; -	bool getUseFixedSky() const; -	std::string getWaterPresetName() const; -	std::string getSkyPresetName() const; -	std::string getDayCycleName() const; - -	/// @return cached env. settings of the current region. -	const LLEnvironmentSettings& getRegionSettings() const; - -	/** -	 * Set new region settings without uploading them to the region. -	 * -	 * The override will be reset when the changes are applied to the region (=uploaded) -	 * or user teleports to another region. -	 */ -	void setRegionSettings(const LLEnvironmentSettings& new_settings); - -	// Change environment w/o changing user preferences. -	bool usePrefs(); -	bool useDefaults(); -	bool useRegionSettings(); -	bool useWaterPreset(const std::string& name); -	bool useWaterParams(const LLSD& params); -	bool useSkyPreset(const std::string& name); -	bool useSkyParams(const LLSD& params); -	bool useDayCycle(const std::string& name, LLEnvKey::EScope scope); -	bool useDayCycleParams(const LLSD& params, LLEnvKey::EScope scope, F32 time = 0.5); - -	// setters for user env. preferences -	void setUseRegionSettings(bool val); -	void setUseWaterPreset(const std::string& name); -	void setUseSkyPreset(const std::string& name); -	void setUseDayCycle(const std::string& name); -	void setUserPrefs( -		const std::string& water_preset, -		const std::string& sky_preset, -		const std::string& day_cycle_preset, -		bool use_fixed_sky, -		bool use_region_settings); - -	// debugging methods -	void dumpUserPrefs(); -	void dumpPresets(); - -	// Misc. -	void requestRegionSettings(); -	bool sendRegionSettings(const LLEnvironmentSettings& new_settings); -	boost::signals2::connection setPreferencesChangeCallback(const prefs_change_signal_t::slot_type& cb); -	boost::signals2::connection setRegionSettingsChangeCallback(const region_settings_change_signal_t::slot_type& cb); -	boost::signals2::connection setRegionSettingsAppliedCallback(const region_settings_applied_signal_t::slot_type& cb); - -	static bool canEditRegionSettings(); /// @return true if we have access to editing region environment -	static const std::string getScopeString(LLEnvKey::EScope scope); - -	// Public callbacks. -	void onRegionSettingsResponse(const LLSD& content); -	void onRegionSettingsApplyResponse(bool ok); - -private: -	/*virtual*/ void initSingleton(); - -	void loadUserPrefs(); -	void saveUserPrefs(); - -	void updateSkyFromPrefs(); -	void updateWaterFromPrefs(bool interpolate); -	void updateManagersFromPrefs(bool interpolate); - -	bool useRegionSky(); -	bool useRegionWater(); - -	bool useDefaultSky(); -	bool useDefaultWater(); - -	void onRegionChange(); - - -	/// Emitted when user environment preferences change. -	prefs_change_signal_t mUsePrefsChangeSignal; - -	/// Emitted when region environment settings update comes. -	region_settings_change_signal_t	mRegionSettingsChangeSignal; - -	/// Emitted when agent region changes. Move to LLAgent? -	region_settings_applied_signal_t mRegionSettingsAppliedSignal; - -	LLEnvPrefs				mUserPrefs;					/// User environment preferences. -	LLEnvironmentSettings	mCachedRegionPrefs;			/// Cached region environment settings. -	LLEnvironmentSettings	mNewRegionPrefs;			/// Not-yet-uploaded modified region env. settings. -	bool					mInterpNextChangeMessage;	/// Interpolate env. settings on next region change. -	LLUUID					mCurRegionUUID;				/// To avoid duplicated region env. settings requests. -	LLUUID					mLastReceivedID;			/// Id of last received region env. settings. -}; - -#endif // LL_LLENVMANAGER_H - diff --git a/indra/newview/llfloatereditdaycycle.cpp b/indra/newview/llfloatereditdaycycle.cpp index 31b0b0c090..efeec72f6e 100644 --- a/indra/newview/llfloatereditdaycycle.cpp +++ b/indra/newview/llfloatereditdaycycle.cpp @@ -41,12 +41,11 @@  // newview  #include "llagent.h" -#include "lldaycyclemanager.h"  #include "llregioninfomodel.h"  #include "llviewerregion.h" -#include "llwlparammanager.h"  #include "llenvironment.h" +#include "lltrans.h"  const F32 LLFloaterEditDayCycle::sHoursPerDay = 24.0f; @@ -128,6 +127,7 @@ void LLFloaterEditDayCycle::draw()  void LLFloaterEditDayCycle::initCallbacks(void)  { +#if 0  	mDayCycleNameEditor->setKeystrokeCallback(boost::bind(&LLFloaterEditDayCycle::onDayCycleNameEdited, this), NULL);  	mDayCyclesCombo->setCommitCallback(boost::bind(&LLFloaterEditDayCycle::onDayCycleSelected, this));  	mDayCyclesCombo->setTextEntryCallback(boost::bind(&LLFloaterEditDayCycle::onDayCycleNameEdited, this)); @@ -143,58 +143,60 @@ void LLFloaterEditDayCycle::initCallbacks(void)  	mSaveButton->setRightMouseDownCallback(boost::bind(&LLFloaterEditDayCycle::dumpTrack, this));  	getChild<LLButton>("cancel")->setCommitCallback(boost::bind(&LLFloaterEditDayCycle::onBtnCancel, this)); -#if 0  	// Connect to env manager events.  	LLEnvManagerNew& env_mgr = LLEnvManagerNew::instance();  	env_mgr.setRegionSettingsChangeCallback(boost::bind(&LLFloaterEditDayCycle::onRegionSettingsChange, this));  	gAgent.addRegionChangedCallback(boost::bind(&LLFloaterEditDayCycle::onRegionChange, this));  	env_mgr.setRegionSettingsAppliedCallback(boost::bind(&LLFloaterEditDayCycle::onRegionSettingsApplied, this, _1)); -#endif -  	// Connect to day cycle manager events.  	LLDayCycleManager::instance().setModifyCallback(boost::bind(&LLFloaterEditDayCycle::onDayCycleListChange, this));  	// Connect to sky preset list changes.  	LLWLParamManager::instance().setPresetListChangeCallback(boost::bind(&LLFloaterEditDayCycle::onSkyPresetListChange, this)); +  	// Connect to region info updates.  	LLRegionInfoModel::instance().setUpdateCallback(boost::bind(&LLFloaterEditDayCycle::onRegionInfoUpdate, this)); +#endif  }  void LLFloaterEditDayCycle::syncTimeSlider()  { +#if 0  	// set time  	mTimeSlider->setCurSliderValue((F32)LLWLParamManager::getInstance()->mAnimator.getDayTime() * sHoursPerDay); +#endif  }  void LLFloaterEditDayCycle::loadTrack()  { -	// clear the slider -	mKeysSlider->clear(); -	mSliderToKey.clear(); - -	// add sliders - -	LL_DEBUGS() << "Adding " << LLWLParamManager::getInstance()->mDay.mTimeMap.size() << " keys to slider" << LL_ENDL; - -	LLWLDayCycle& cur_dayp = LLWLParamManager::instance().mDay; -	for (std::map<F32, LLWLParamKey>::iterator it = cur_dayp.mTimeMap.begin(); it != cur_dayp.mTimeMap.end(); ++it) -	{ -		addSliderKey(it->first * sHoursPerDay, it->second); -	} - -	// set drop-down menu to match preset of currently-selected keyframe (one is automatically selected initially) -	const std::string& cur_sldr = mKeysSlider->getCurSlider(); -	if (strlen(cur_sldr.c_str()) > 0)	// only do this if there is a curSldr, otherwise we put an invalid entry into the map -	{ -		mSkyPresetsCombo->selectByValue(mSliderToKey[cur_sldr].keyframe.toStringVal()); -	} - -	syncTimeSlider(); +// 	// clear the slider +// 	mKeysSlider->clear(); +// 	mSliderToKey.clear(); +//  +// 	// add sliders +//  +// 	LL_DEBUGS() << "Adding " << LLWLParamManager::getInstance()->mDay.mTimeMap.size() << " keys to slider" << LL_ENDL; +//  +// 	LLWLDayCycle& cur_dayp = LLWLParamManager::instance().mDay; +// 	for (std::map<F32, LLWLParamKey>::iterator it = cur_dayp.mTimeMap.begin(); it != cur_dayp.mTimeMap.end(); ++it) +// 	{ +// 		addSliderKey(it->first * sHoursPerDay, it->second); +// 	} +//  +// 	// set drop-down menu to match preset of currently-selected keyframe (one is automatically selected initially) +// 	const std::string& cur_sldr = mKeysSlider->getCurSlider(); +// 	if (strlen(cur_sldr.c_str()) > 0)	// only do this if there is a curSldr, otherwise we put an invalid entry into the map +// 	{ +// 		mSkyPresetsCombo->selectByValue(mSliderToKey[cur_sldr].keyframe.toStringVal()); +// 	} +//  +// 	syncTimeSlider();  }  void LLFloaterEditDayCycle::applyTrack()  { +#if 0  	LL_DEBUGS() << "Applying track (" << mSliderToKey.size() << ")" << LL_ENDL;  	// if no keys, do nothing @@ -223,10 +225,12 @@ void LLFloaterEditDayCycle::applyTrack()  	LLWLParamManager::getInstance()->mAnimator.update(  		LLWLParamManager::getInstance()->mCurParams); +#endif  }  void LLFloaterEditDayCycle::refreshSkyPresetsList()  { +#if 0  	// Don't allow selecting region skies for a local day cycle,  	// because thus we may end up with invalid day cycle.  	bool include_region_skies = getSelectedDayCycle().scope == LLEnvKey::SCOPE_REGION; @@ -272,10 +276,12 @@ void LLFloaterEditDayCycle::refreshSkyPresetsList()  	// set defaults on combo boxes  	mSkyPresetsCombo->selectFirstItem(); +#endif  }  void LLFloaterEditDayCycle::refreshDayCyclesList()  { +#if 0  	llassert(isNewDay() == false);  	mDayCyclesCombo->removeall(); @@ -311,10 +317,12 @@ void LLFloaterEditDayCycle::refreshDayCyclesList()  	}  	mDayCyclesCombo->setLabel(getString("combo_label")); +#endif  }  void LLFloaterEditDayCycle::onTimeSliderMoved()  { +#if 0  	/// get the slider value  	F32 val = mTimeSlider->getCurSliderValue() / sHoursPerDay; @@ -325,10 +333,12 @@ void LLFloaterEditDayCycle::onTimeSliderMoved()  	// then call update once  	LLWLParamManager::getInstance()->mAnimator.update(  		LLWLParamManager::getInstance()->mCurParams); +#endif  }  void LLFloaterEditDayCycle::onKeyTimeMoved()  { +#if 0  	if (mKeysSlider->getValue().size() == 0)  	{  		return; @@ -354,10 +364,12 @@ void LLFloaterEditDayCycle::onKeyTimeMoved()  	mTimeCtrl->setTime24(time24);  	applyTrack(); +#endif  }  void LLFloaterEditDayCycle::onKeyTimeChanged()  { +#if 0  	// if no keys, skipped  	if (mSliderToKey.size() == 0)  	{ @@ -375,10 +387,12 @@ void LLFloaterEditDayCycle::onKeyTimeChanged()  	mSliderToKey[cur_sldr].time = time;  	applyTrack(); +#endif  }  void LLFloaterEditDayCycle::onKeyPresetChanged()  { +#if 0  	// do nothing if no sliders  	if (mKeysSlider->getValue().size() == 0)  	{ @@ -402,10 +416,12 @@ void LLFloaterEditDayCycle::onKeyPresetChanged()  	// Apply changes to current day cycle.  	applyTrack(); +#endif  }  void LLFloaterEditDayCycle::onAddKey()  { +#if 0  	llassert_always(mSliderToKey.size() == mKeysSlider->getValue().size());  	S32 max_sliders; @@ -444,8 +460,10 @@ void LLFloaterEditDayCycle::onAddKey()  	// apply the change to current day cycles  	applyTrack(); +#endif  } +#if 0  void LLFloaterEditDayCycle::addSliderKey(F32 time, LLWLParamKey keyframe)  {  	// make a slider @@ -465,7 +483,9 @@ void LLFloaterEditDayCycle::addSliderKey(F32 time, LLWLParamKey keyframe)  	llassert_always(mSliderToKey.size() == mKeysSlider->getValue().size());  } +#endif +#if 0  LLWLParamKey LLFloaterEditDayCycle::getSelectedDayCycle()  {  	LLWLParamKey dc_key; @@ -492,6 +512,7 @@ LLWLParamKey LLFloaterEditDayCycle::getSelectedDayCycle()  	return dc_key;  } +#endif  bool LLFloaterEditDayCycle::isNewDay() const  { @@ -500,6 +521,7 @@ bool LLFloaterEditDayCycle::isNewDay() const  void LLFloaterEditDayCycle::dumpTrack()  { +#if 0  	LL_DEBUGS("Windlight") << "Dumping day cycle" << LL_ENDL;  	LLWLDayCycle& cur_dayp = LLWLParamManager::instance().mDay; @@ -510,6 +532,7 @@ void LLFloaterEditDayCycle::dumpTrack()  		S32 m = (S32) ((time - h) * 60.0f);  		LL_DEBUGS("Windlight") << llformat("(%.3f) %02d:%02d", time, h, m) << " => " << it->second.name << LL_ENDL;  	} +#endif  }  void LLFloaterEditDayCycle::enableEditing(bool enable) @@ -523,6 +546,7 @@ void LLFloaterEditDayCycle::enableEditing(bool enable)  void LLFloaterEditDayCycle::reset()  { +#if 0  	// clear the slider  	mKeysSlider->clear();  	mSliderToKey.clear(); @@ -548,6 +572,7 @@ void LLFloaterEditDayCycle::reset()  		// Disable controls until a day cycle  to edit is selected.  		enableEditing(false);  	} +#endif  }  void LLFloaterEditDayCycle::saveRegionDayCycle() @@ -602,6 +627,7 @@ bool LLFloaterEditDayCycle::getApplyProgress() const  void LLFloaterEditDayCycle::onDeleteKey()  { +#if 0  	if (mSliderToKey.size() == 0)  	{  		return; @@ -631,6 +657,7 @@ void LLFloaterEditDayCycle::onDeleteKey()  	mTimeCtrl->setTime24(time24);  	applyTrack(); +#endif  }  void LLFloaterEditDayCycle::onRegionSettingsChange() @@ -656,6 +683,7 @@ void LLFloaterEditDayCycle::onRegionSettingsChange()  void LLFloaterEditDayCycle::onRegionChange()  { +#if 0  	LL_DEBUGS("Windlight") << "Region changed" << LL_ENDL;  	// If we're editing the region day cycle @@ -663,6 +691,7 @@ void LLFloaterEditDayCycle::onRegionChange()  	{  		reset(); // undoes all unsaved changes  	} +#endif  }  void LLFloaterEditDayCycle::onRegionSettingsApplied(bool success) @@ -695,9 +724,11 @@ void LLFloaterEditDayCycle::onRegionInfoUpdate()  void LLFloaterEditDayCycle::onDayCycleNameEdited()  { +#if 0  	// Disable saving a day cycle having empty name.  	LLWLParamKey key = getSelectedDayCycle();  	mSaveButton->setEnabled(!key.name.empty()); +#endif  }  void LLFloaterEditDayCycle::onDayCycleSelected() @@ -741,6 +772,7 @@ void LLFloaterEditDayCycle::onDayCycleSelected()  void LLFloaterEditDayCycle::onBtnSave()  { +#if 0  	LLDayCycleManager& day_mgr = LLDayCycleManager::instance();  	LLWLParamKey selected_day = getSelectedDayCycle(); @@ -776,6 +808,7 @@ void LLFloaterEditDayCycle::onBtnSave()  		// new preset, hence no confirmation needed  		onSaveConfirmed();  	} +#endif  }  void LLFloaterEditDayCycle::onBtnCancel() diff --git a/indra/newview/llfloatereditdaycycle.h b/indra/newview/llfloatereditdaycycle.h index e6e4fe39c1..50d60a2b56 100644 --- a/indra/newview/llfloatereditdaycycle.h +++ b/indra/newview/llfloatereditdaycycle.h @@ -29,8 +29,6 @@  #include "llfloater.h" -#include "llwlparammanager.h" // for LLWLParamKey -  class LLCheckBoxCtrl;  class LLComboBox;  class LLLineEditor; @@ -70,10 +68,10 @@ private:  	void refreshDayCyclesList();  	/// add a slider to the track -	void addSliderKey(F32 time, LLWLParamKey keyframe); +//	void addSliderKey(F32 time, LLWLParamKey keyframe);  	void initCallbacks(); -	LLWLParamKey getSelectedDayCycle(); +//	LLWLParamKey getSelectedDayCycle();  	bool isNewDay() const;  	void dumpTrack();  	void enableEditing(bool enable); @@ -109,15 +107,15 @@ private:  	static std::string getRegionName();  	/// convenience class for holding keyframes mapped to sliders -	struct SliderKey -	{ -	public: -		SliderKey(LLWLParamKey kf, F32 t) : keyframe(kf), time(t) {} -		SliderKey() : keyframe(), time(0.f) {} // Don't use this default constructor - -		LLWLParamKey keyframe; -		F32 time; -	}; +// 	struct SliderKey +// 	{ +// 	public: +// 		SliderKey(LLWLParamKey kf, F32 t) : keyframe(kf), time(t) {} +// 		SliderKey() : keyframe(), time(0.f) {} // Don't use this default constructor +//  +// 		LLWLParamKey keyframe; +// 		F32 time; +// 	};  	static const F32 sHoursPerDay; @@ -131,7 +129,7 @@ private:  	LLButton*			mSaveButton;  	// map of sliders to parameters -	std::map<std::string, SliderKey> mSliderToKey; +//	std::map<std::string, SliderKey> mSliderToKey;  };  #endif // LL_LLFLOATEREDITDAYCYCLE_H diff --git a/indra/newview/llfloatereditsky.cpp b/indra/newview/llfloatereditsky.cpp index a779241cf4..ab9cb81db5 100644 --- a/indra/newview/llfloatereditsky.cpp +++ b/indra/newview/llfloatereditsky.cpp @@ -324,8 +324,6 @@ void LLFloaterEditSky::setColorSwatch(const std::string& name, const WLColorCont  // color control callbacks  void LLFloaterEditSky::onColorControlMoved(LLUICtrl* ctrl, WLColorControl* color_ctrl)  { -	//LLWLParamManager::getInstance()->mAnimator.deactivate(); -  	LLColorSwatchCtrl* swatch = static_cast<LLColorSwatchCtrl*>(ctrl);  	LLColor4 color_vec(swatch->get().mV); @@ -701,20 +699,6 @@ void LLFloaterEditSky::onBtnCancel()  void LLFloaterEditSky::onSkyPresetListChange()  {      refreshSkyPresetsList(); -#if 0 -	LLWLParamKey key = getSelectedSkyPreset(); // preset being edited -	if (!LLWLParamManager::instance().hasParamSet(key)) -	{ -		// Preset we've been editing doesn't exist anymore. Close the floater. -		closeFloater(false); -	} -	else -	{ -		// A new preset has been added. -		// Refresh the presets list, though it may not make sense as the floater is about to be closed. -		refreshSkyPresetsList(); -	} -#endif  }  void LLFloaterEditSky::onRegionSettingsChange() diff --git a/indra/newview/llfloaterenvironmentsettings.cpp b/indra/newview/llfloaterenvironmentsettings.cpp index 6908363839..9a41d434ee 100644 --- a/indra/newview/llfloaterenvironmentsettings.cpp +++ b/indra/newview/llfloaterenvironmentsettings.cpp @@ -31,8 +31,6 @@  #include "llcombobox.h"  #include "llradiogroup.h" -#include "lldaycyclemanager.h" -  #include "llenvironment.h" @@ -259,7 +257,7 @@ void LLFloaterEnvironmentSettings::apply()  void LLFloaterEnvironmentSettings::cancel()  {  	// Revert environment to user preferences. -	LLEnvManagerNew::instance().usePrefs(); +//	LLEnvManagerNew::instance().usePrefs();  }  void LLFloaterEnvironmentSettings::populateWaterPresetsList() diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 4f0603fe59..e0a56b9412 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -52,7 +52,6 @@  #include "llbutton.h"   #include "llcheckboxctrl.h"  #include "llcombobox.h" -#include "lldaycyclemanager.h"  #include "llestateinfomodel.h"  #include "llfilepicker.h"  #include "llfloatergodtools.h"	// for send_sim_wide_deletes() @@ -86,7 +85,6 @@  #include "llviewertexteditor.h"  #include "llviewerwindow.h"  #include "llvlcomposition.h" -#include "llwaterparammanager.h"  #include "lltrans.h"  #include "llagentui.h"  #include "llmeshrepository.h" @@ -98,8 +96,6 @@  #include "llpanelexperiences.h"  #include "llcorehttputil.h" -#include "llenvmanager.h" -  const S32 TERRAIN_TEXTURE_COUNT = 4;  const S32 CORNER_COUNT = 4; @@ -338,13 +334,13 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)  	{  		return;  	} - +#if 0  	// We need to re-request environment setting here,  	// otherwise after we apply (send) updated region settings we won't get them back,  	// so our environment won't be updated.  	// This is also the way to know about externally changed region environment.  	LLEnvManagerNew::instance().requestRegionSettings(); -	 +#endif	  	LLTabContainer* tab = floater->getChild<LLTabContainer>("region_panels");  	LLViewerRegion* region = gAgent.getRegion(); @@ -3117,16 +3113,16 @@ BOOL LLPanelEnvironmentInfo::postBuild()  	mDayCyclePresetCombo->setCommitCallback(boost::bind(&LLPanelEnvironmentInfo::onSelectDayCycle, this));      childSetCommitCallback("apply_btn", boost::bind(&LLPanelEnvironmentInfo::onBtnApply, this), NULL); -	getChild<LLButton>("apply_btn")->setRightMouseDownCallback(boost::bind(&LLEnvManagerNew::dumpUserPrefs, LLEnvManagerNew::getInstance())); +//	getChild<LLButton>("apply_btn")->setRightMouseDownCallback(boost::bind(&LLEnvManagerNew::dumpUserPrefs, LLEnvManagerNew::getInstance()));  	childSetCommitCallback("cancel_btn", boost::bind(&LLPanelEnvironmentInfo::onBtnCancel, this), NULL); -	getChild<LLButton>("cancel_btn")->setRightMouseDownCallback(boost::bind(&LLEnvManagerNew::dumpPresets, LLEnvManagerNew::getInstance())); +//	getChild<LLButton>("cancel_btn")->setRightMouseDownCallback(boost::bind(&LLEnvManagerNew::dumpPresets, LLEnvManagerNew::getInstance())); -	LLEnvManagerNew::instance().setRegionSettingsChangeCallback(boost::bind(&LLPanelEnvironmentInfo::onRegionSettingschange, this)); -	LLEnvManagerNew::instance().setRegionSettingsAppliedCallback(boost::bind(&LLPanelEnvironmentInfo::onRegionSettingsApplied, this, _1)); +// 	LLEnvManagerNew::instance().setRegionSettingsChangeCallback(boost::bind(&LLPanelEnvironmentInfo::onRegionSettingschange, this)); +// 	LLEnvManagerNew::instance().setRegionSettingsAppliedCallback(boost::bind(&LLPanelEnvironmentInfo::onRegionSettingsApplied, this, _1)); -	LLDayCycleManager::instance().setModifyCallback(boost::bind(&LLPanelEnvironmentInfo::populateDayCyclesList, this)); -	LLWLParamManager::instance().setPresetListChangeCallback(boost::bind(&LLPanelEnvironmentInfo::populateSkyPresetsList, this)); -	LLWaterParamManager::instance().setPresetListChangeCallback(boost::bind(&LLPanelEnvironmentInfo::populateWaterPresetsList, this)); +// 	LLDayCycleManager::instance().setModifyCallback(boost::bind(&LLPanelEnvironmentInfo::populateDayCyclesList, this)); +// 	LLWLParamManager::instance().setPresetListChangeCallback(boost::bind(&LLPanelEnvironmentInfo::populateSkyPresetsList, this)); +// 	LLWaterParamManager::instance().setPresetListChangeCallback(boost::bind(&LLPanelEnvironmentInfo::populateWaterPresetsList, this));  	return TRUE;  } @@ -3145,7 +3141,7 @@ void LLPanelEnvironmentInfo::onVisibilityChange(BOOL new_visibility)  	// display user's preferred environment.  	if (!new_visibility)  	{ -		LLEnvManagerNew::instance().usePrefs(); +//		LLEnvManagerNew::instance().usePrefs();  	}  } @@ -3165,6 +3161,7 @@ bool LLPanelEnvironmentInfo::refreshFromRegion(LLViewerRegion* region)  void LLPanelEnvironmentInfo::refresh()  { +#if 0  	if(gDisconnected)  	{  		return; @@ -3185,6 +3182,7 @@ void LLPanelEnvironmentInfo::refresh()  	setControlsEnabled(mEnableEditing);  	setDirty(false); +#endif  }  void LLPanelEnvironmentInfo::setControlsEnabled(bool enabled) @@ -3494,7 +3492,7 @@ void LLPanelEnvironmentInfo::onSwitchRegionSettings()  	if (use_defaults)  	{ -		LLEnvManagerNew::instance().useDefaults(); +//		LLEnvManagerNew::instance().useDefaults();  	}  	else  	{ @@ -3530,7 +3528,7 @@ void LLPanelEnvironmentInfo::onSelectWaterPreset()  	if (getSelectedWaterParams(water_params))  	{ -		LLEnvManagerNew::instance().useWaterParams(water_params); +//		LLEnvManagerNew::instance().useWaterParams(water_params);  	}  	setDirty(true); @@ -3543,7 +3541,7 @@ void LLPanelEnvironmentInfo::onSelectSkyPreset()  	if (getSelectedSkyParams(params, dummy))  	{ -		LLEnvManagerNew::instance().useSkyParams(params); +//		LLEnvManagerNew::instance().useSkyParams(params);  	}  	setDirty(true); @@ -3557,7 +3555,7 @@ void LLPanelEnvironmentInfo::onSelectDayCycle()  	if (getSelectedDayCycleParams(day_cycle, sky_map, scope))  	{ -		LLEnvManagerNew::instance().useDayCycleParams(day_cycle, (LLEnvKey::EScope) scope); +//		LLEnvManagerNew::instance().useDayCycleParams(day_cycle, (LLEnvKey::EScope) scope);  	}  	setDirty(true); @@ -3583,6 +3581,7 @@ void LLPanelEnvironmentInfo::onBtnApply()  		{  			LL_DEBUGS("Windlight") << "Use fixed sky" << LL_ENDL; +#if 0  			// Get selected sky params.  			LLSD params;  			std::string preset_name; @@ -3603,6 +3602,7 @@ void LLPanelEnvironmentInfo::onBtnApply()  			param_set.setAll(params);  			refs[LLWLParamKey(preset_name, LLEnvKey::SCOPE_LOCAL)] = param_set; // scope doesn't matter here  			sky_map = LLWLParamManager::createSkyMap(refs); +#endif  		}  		else // use day cycle  		{ @@ -3703,7 +3703,7 @@ void LLPanelEnvironmentInfo::onRegionSettingsApplied(bool ok)  		// "Unable to update environment settings because the last update your viewer saw was not the same  		// as the last update sent from the simulator.  Try sending your update again, and if this  		// does not work, try leaving and returning to the region." -		LLEnvManagerNew::instance().requestRegionSettings(); +//		LLEnvManagerNew::instance().requestRegionSettings();  	}  } diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h index 105280bd99..bbdff84bf6 100644 --- a/indra/newview/llfloaterregioninfo.h +++ b/indra/newview/llfloaterregioninfo.h @@ -65,11 +65,6 @@ class LLPanelExperiences;  class LLPanelRegionExperiences;  class LLEventTimer; -class LLEnvironmentSettings; -class LLWLParamManager; -class LLWaterParamManager; -class LLWLParamSet; -class LLWaterParamSet;  class LLFloaterRegionInfo : public LLFloater  { diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 92b294678b..21c21ab908 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -180,7 +180,6 @@  #include "llnamebox.h"  #include "llnameeditor.h"  #include "llpostprocess.h" -#include "llwaterparammanager.h"  #include "llagentlanguage.h"  #include "llwearable.h"  #include "llinventorybridge.h" diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index f25471d4f0..0c073f6be9 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -74,7 +74,6 @@  #include "llviewerregion.h"  #include "lldrawpoolwater.h"  #include "lldrawpoolbump.h" -#include "llwaterparammanager.h"  #include "llpostprocess.h"  #include "llscenemonitor.h" diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 57eef7e776..647489666f 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -51,7 +51,6 @@  #include "llagentpilot.h"  #include "llcompilequeue.h"  #include "llconsole.h" -#include "lldaycyclemanager.h"  #include "lldebugview.h"  #include "llenvironment.h"  #include "llfacebookconnect.h" @@ -121,9 +120,6 @@  #include "llworldmap.h"  #include "pipeline.h"  #include "llviewerjoystick.h" -#include "llwaterparammanager.h" -#include "llwlanimator.h" -#include "llwlparammanager.h"  #include "llfloatercamera.h"  #include "lluilistener.h"  #include "llappearancemgr.h" @@ -135,6 +131,7 @@  #include "llstartup.h"  #include "boost/unordered_map.hpp"  #include "llcleanup.h" +#include "llviewershadermgr.h"  using namespace LLAvatarAppearanceDefines; @@ -8509,30 +8506,6 @@ class LLWorldEnableEnvPreset : public view_listener_t  {  	bool handleEvent(const LLSD& userdata)  	{ -		std::string item = userdata.asString(); - -		if (item == "delete_water") -		{ -			LLWaterParamManager::preset_name_list_t user_waters; -			LLWaterParamManager::instance().getUserPresetNames(user_waters); -			return !user_waters.empty(); -		} -		else if (item == "delete_sky") -		{ -			LLWLParamManager::preset_name_list_t user_skies; -			LLWLParamManager::instance().getUserPresetNames(user_skies); -			return !user_skies.empty(); -		} -		else if (item == "delete_day_cycle") -		{ -			LLDayCycleManager::preset_name_list_t user_days; -			LLDayCycleManager::instance().getUserPresetNames(user_days); -			return !user_days.empty(); -		} -		else -		{ -			LL_WARNS() << "Unknown item" << LL_ENDL; -		}  		return false;  	} diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index f0924486df..e40d3da338 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -38,7 +38,6 @@  #include "llviewercontrol.h"  #include "pipeline.h"  #include "llworld.h" -#include "llwaterparammanager.h"  #include "llsky.h"  #include "llvosky.h"  #include "llrender.h" diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index 20afc7a41d..22cd14a830 100644 --- a/indra/newview/llvosky.cpp +++ b/indra/newview/llvosky.cpp @@ -48,7 +48,6 @@  #include "llworld.h"  #include "pipeline.h"  #include "lldrawpoolwlsky.h" -#include "llwaterparammanager.h"  #include "v3colorutil.h"  #include "llsettingssky.h" diff --git a/indra/newview/llwaterparammanager.cpp b/indra/newview/llwaterparammanager.cpp deleted file mode 100644 index 9e275fd108..0000000000 --- a/indra/newview/llwaterparammanager.cpp +++ /dev/null @@ -1,448 +0,0 @@ -/** - * @file llwaterparammanager.cpp - * @brief Implementation for the LLWaterParamManager class. - * - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llwaterparammanager.h" - -#include "llrender.h" - -#include "pipeline.h" -#include "llsky.h" - -#include "lldiriterator.h" -#include "llfloaterreg.h" -#include "llsliderctrl.h" -#include "llspinctrl.h" -#include "llcheckboxctrl.h" -#include "lluictrlfactory.h" -#include "llviewercontrol.h" -#include "llviewercamera.h" -#include "llcombobox.h" -#include "lllineeditor.h" -#include "llsdserialize.h" - -#include "v4math.h" -#include "llviewercontrol.h" -#include "lldrawpoolwater.h" -#include "llagent.h" -#include "llagentcamera.h" -#include "llviewerregion.h" - -#include "llenvironment.h" -#include "llwaterparamset.h" - -#include "curl/curl.h" - -LLWaterParamManager::LLWaterParamManager() : -// 	mFogColor(22.f/255.f, 43.f/255.f, 54.f/255.f, 0.0f, 0.0f, "waterFogColor", "WaterFogColor"), -// 	mFogDensity(4, "waterFogDensity", 2), -// 	mUnderWaterFogMod(0.25, "underWaterFogMod"), -// 	mNormalScale(2.f, 2.f, 2.f, "normScale"), -// 	mFresnelScale(0.5f, "fresnelScale"), -// 	mFresnelOffset(0.4f, "fresnelOffset"), -// 	mScaleAbove(0.025f, "scaleAbove"), -// 	mScaleBelow(0.2f, "scaleBelow"), -// 	mBlurMultiplier(0.1f, "blurMultiplier"), -// 	mWave1Dir(.5f, .5f, "wave1Dir"), -// 	mWave2Dir(.5f, .5f, "wave2Dir"), -	mDensitySliderValue(1.0f), -	mWaterFogKS(1.0f) -{ -} - -LLWaterParamManager::~LLWaterParamManager() -{ -} - -void LLWaterParamManager::loadAllPresets() -{ -	// First, load system (coming out of the box) water presets. -	loadPresetsFromDir(getSysDir()); - -	// Then load user presets. Note that user day presets will modify any system ones already loaded. -	loadPresetsFromDir(getUserDir()); -} - -void LLWaterParamManager::loadPresetsFromDir(const std::string& dir) -{ -	LL_DEBUGS("AppInit", "Shaders") << "Loading water presets from " << dir << LL_ENDL; - -	LLDirIterator dir_iter(dir, "*.xml"); -	while (1) -	{ -		std::string file; -		if (!dir_iter.next(file)) -		{ -			break; // no more files -		} - -		std::string path = gDirUtilp->add(dir, file); -		if (!loadPreset(path)) -		{ -			LL_WARNS() << "Error loading water preset from " << path << LL_ENDL; -		} -	} -} - -bool LLWaterParamManager::loadPreset(const std::string& path) -{ -	llifstream xml_file; -	std::string name(gDirUtilp->getBaseFileName(LLURI::unescape(path), /*strip_exten = */ true)); - -	xml_file.open(path.c_str()); -	if (!xml_file) -	{ -		return false; -	} - -	LL_DEBUGS("AppInit", "Shaders") << "Loading water " << name << LL_ENDL; - -	LLSD params_data; -	LLPointer<LLSDParser> parser = new LLSDXMLParser(); -	parser->parse(xml_file, params_data, LLSDSerialize::SIZE_UNLIMITED); -	xml_file.close(); - -	if (hasParamSet(name)) -	{ -		setParamSet(name, params_data); -	} -	else -	{ -		addParamSet(name, params_data); -	} - -	return true; -} - -void LLWaterParamManager::savePreset(const std::string & name) -{ -	llassert(!name.empty()); - -	// make an empty llsd -	LLSD paramsData(LLSD::emptyMap()); -	std::string pathName(getUserDir() + LLURI::escape(name) + ".xml"); - -	// fill it with LLSD windlight params -	paramsData = mParamList[name].getAll(); - -	// write to file -	llofstream presetsXML(pathName.c_str()); -	LLPointer<LLSDFormatter> formatter = new LLSDXMLFormatter(); -	formatter->format(paramsData, presetsXML, LLSDFormatter::OPTIONS_PRETTY); -	presetsXML.close(); - -	propagateParameters(); -} - -void LLWaterParamManager::propagateParameters(void) -{ -	// bind the variables only if we're using shaders -	if(gPipeline.canUseVertexShaders()) -	{ -		LLViewerShaderMgr::shader_iter shaders_iter, end_shaders; -		end_shaders = LLViewerShaderMgr::instance()->endShaders(); -		for(shaders_iter = LLViewerShaderMgr::instance()->beginShaders(); shaders_iter != end_shaders; ++shaders_iter) -		{ -			if (shaders_iter->mProgramObject != 0 -				&& shaders_iter->mShaderGroup == LLGLSLShader::SG_WATER) -			{ -				shaders_iter->mUniformsDirty = TRUE; -			} -		} -	} - -#if 0 -    bool err; -    F32 fog_density_slider =  -		log(mCurParams.getFloat(mFogDensity.mName, err)) /  -		log(mFogDensity.mBase); - -	setDensitySliderValue(fog_density_slider); -#endif -} - -void LLWaterParamManager::updateShaderUniforms(LLGLSLShader * shader) -{ -#if 0 -	if (shader->mShaderGroup == LLGLSLShader::SG_WATER) -	{ -		shader->uniform4fv(LLViewerShaderMgr::LIGHTNORM, 1, LLEnvironment::instance().getRotatedLight().mV); -        shader->uniform3fv(LLShaderMgr::WL_CAMPOSLOCAL, 1, LLViewerCamera::getInstance()->getOrigin().mV); -		shader->uniform4fv(LLShaderMgr::WATER_FOGCOLOR, 1, LLDrawPoolWater::sWaterFogColor.mV); -		shader->uniform4fv(LLShaderMgr::WATER_WATERPLANE, 1, mWaterPlane.mV); -		shader->uniform1f(LLShaderMgr::WATER_FOGDENSITY, getFogDensity()); -		shader->uniform1f(LLShaderMgr::WATER_FOGKS, mWaterFogKS); -		shader->uniform1f(LLViewerShaderMgr::DISTANCE_MULTIPLIER, 0); -	} -#endif -} - -void LLWaterParamManager::applyParams(const LLSD& params, bool interpolate) -{ -	if (params.size() == 0) -	{ -		LL_WARNS() << "Undefined water params" << LL_ENDL; -		return; -	} - -	if (interpolate) -	{ -        // *LAPRAS - -		//LLWLParamManager::getInstance()->mAnimator.startInterpolation(params); -	} -	else -	{ -		mCurParams.setAll(params); -	} -} - -static LLTrace::BlockTimerStatHandle FTM_UPDATE_WATERPARAM("Update Water Params"); - -void LLWaterParamManager::update(LLViewerCamera * cam) -{ -	LL_RECORD_BLOCK_TIME(FTM_UPDATE_WATERPARAM); -	 -	// update the shaders and the menu -	propagateParameters(); -	 -	// only do this if we're dealing with shaders -	if(gPipeline.canUseVertexShaders())  -	{ -		//transform water plane to eye space -		glh::vec3f norm(0.f, 0.f, 1.f); -		glh::vec3f p(0.f, 0.f, gAgent.getRegion()->getWaterHeight()+0.1f); -		 -		F32 modelView[16]; -		for (U32 i = 0; i < 16; i++) -		{ -			modelView[i] = (F32) gGLModelView[i]; -		} - -		glh::matrix4f mat(modelView); -		glh::matrix4f invtrans = mat.inverse().transpose(); -		glh::vec3f enorm; -		glh::vec3f ep; -		invtrans.mult_matrix_vec(norm, enorm); -		enorm.normalize(); -		mat.mult_matrix_vec(p, ep); - -		mWaterPlane = LLVector4(enorm.v[0], enorm.v[1], enorm.v[2], -ep.dot(enorm)); - -		LLVector3 sunMoonDir; -		if (gSky.getSunDirection().mV[2] > LLSky::NIGHTTIME_ELEVATION_COS) 	  -		{ 	  -			sunMoonDir = gSky.getSunDirection(); 	  -		} 	  -		else  	  -		{ 	  -			sunMoonDir = gSky.getMoonDirection(); 	  -		} -		sunMoonDir.normVec(); -		mWaterFogKS = 1.f/llmax(sunMoonDir.mV[2], WATER_FOG_LIGHT_CLAMP); - -		LLViewerShaderMgr::shader_iter shaders_iter, end_shaders; -		end_shaders = LLViewerShaderMgr::instance()->endShaders(); -		for(shaders_iter = LLViewerShaderMgr::instance()->beginShaders(); shaders_iter != end_shaders; ++shaders_iter) -		{ -			if (shaders_iter->mProgramObject != 0 -				&& shaders_iter->mShaderGroup == LLGLSLShader::SG_WATER) -			{ -				shaders_iter->mUniformsDirty = TRUE; -			} -		} -	} -} - -bool LLWaterParamManager::addParamSet(const std::string& name, LLWaterParamSet& param) -{ -	// add a new one if not one there already -	preset_map_t::iterator mIt = mParamList.find(name); -	if(mIt == mParamList.end())  -	{	 -		mParamList[name] = param; -		mPresetListChangeSignal(); -		return true; -	} - -	return false; -} - -BOOL LLWaterParamManager::addParamSet(const std::string& name, LLSD const & param) -{ -	LLWaterParamSet param_set; -	param_set.setAll(param); -	return addParamSet(name, param_set); -} - -bool LLWaterParamManager::getParamSet(const std::string& name, LLWaterParamSet& param) -{ -	// find it and set it -	preset_map_t::iterator mIt = mParamList.find(name); -	if(mIt != mParamList.end())  -	{ -		param = mParamList[name]; -		param.mName = name; -		return true; -	} - -	return false; -} - -bool LLWaterParamManager::hasParamSet(const std::string& name) -{ -	LLWaterParamSet dummy; -	return getParamSet(name, dummy); -} - -bool LLWaterParamManager::setParamSet(const std::string& name, LLWaterParamSet& param) -{ -	mParamList[name] = param; - -	return true; -} - -bool LLWaterParamManager::setParamSet(const std::string& name, const LLSD & param) -{ -	// quick, non robust (we won't be working with files, but assets) check -	if(!param.isMap())  -	{ -		return false; -	} -	 -	mParamList[name].setAll(param); - -	return true; -} - -bool LLWaterParamManager::removeParamSet(const std::string& name, bool delete_from_disk) -{ -	// remove from param list -	preset_map_t::iterator it = mParamList.find(name); -	if (it == mParamList.end()) -	{ -		LL_WARNS("WindLight") << "No water preset named " << name << LL_ENDL; -		return false; -	} - -	mParamList.erase(it); - -	// remove from file system if requested -	if (delete_from_disk) -	{ -		if (gDirUtilp->deleteFilesInDir(getUserDir(), LLURI::escape(name) + ".xml") < 1) -		{ -			LL_WARNS("WindLight") << "Error removing water preset " << name << " from disk" << LL_ENDL; -		} -	} - -	// signal interested parties -	mPresetListChangeSignal(); -	return true; -} - -bool LLWaterParamManager::isSystemPreset(const std::string& preset_name) const -{ -	// *TODO: file system access is excessive here. -	return gDirUtilp->fileExists(getSysDir() + LLURI::escape(preset_name) + ".xml"); -} - -void LLWaterParamManager::getPresetNames(preset_name_list_t& presets) const -{ -	presets.clear(); - -	for (preset_map_t::const_iterator it = mParamList.begin(); it != mParamList.end(); ++it) -	{ -		presets.push_back(it->first); -	} -} - -void LLWaterParamManager::getPresetNames(preset_name_list_t& user_presets, preset_name_list_t& system_presets) const -{ -	user_presets.clear(); -	system_presets.clear(); - -	for (preset_map_t::const_iterator it = mParamList.begin(); it != mParamList.end(); ++it) -	{ -		if (isSystemPreset(it->first)) -		{ -			system_presets.push_back(it->first); -		} -		else -		{ -			user_presets.push_back(it->first); -		} -	} -} - -void LLWaterParamManager::getUserPresetNames(preset_name_list_t& user_presets) const -{ -	preset_name_list_t dummy; -	getPresetNames(user_presets, dummy); -} - -boost::signals2::connection LLWaterParamManager::setPresetListChangeCallback(const preset_list_signal_t::slot_type& cb) -{ -	return mPresetListChangeSignal.connect(cb); -} - -F32 LLWaterParamManager::getFogDensity(void) -{ -	bool err; - -	F32 fogDensity = mCurParams.getFloat("waterFogDensity", err); -	 -	// modify if we're underwater -	const F32 water_height = gAgent.getRegion() ? gAgent.getRegion()->getWaterHeight() : 0.f; -	F32 camera_height = gAgentCamera.getCameraPositionAgent().mV[2]; -	if(camera_height <= water_height) -	{ -		// raise it to the underwater fog density modifier -		fogDensity = pow(fogDensity, mCurParams.getFloat("underWaterFogMod", err)); -	} - -	return fogDensity; -} - -// virtual static -void LLWaterParamManager::initSingleton() -{ -	LL_DEBUGS("Windlight") << "Initializing water" << LL_ENDL; -	loadAllPresets(); -} - -// static -std::string LLWaterParamManager::getSysDir() -{ -	return gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/water", ""); -} - -// static -std::string LLWaterParamManager::getUserDir() -{ -	return gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS , "windlight/water", ""); -} diff --git a/indra/newview/llwaterparammanager.h b/indra/newview/llwaterparammanager.h deleted file mode 100644 index 392e287e3f..0000000000 --- a/indra/newview/llwaterparammanager.h +++ /dev/null @@ -1,413 +0,0 @@ -/** - * @file llwaterparammanager.h - * @brief Implementation for the LLWaterParamManager class. - * - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#ifndef LL_WATER_PARAMMANAGER_H -#define LL_WATER_PARAMMANAGER_H - -#include <list> -#include <map> -#include "llwaterparamset.h" -#include "llviewercamera.h" -#include "v4color.h" - -const F32 WATER_FOG_LIGHT_CLAMP = 0.3f; -#if 0 -// color control -struct WaterColorControl { -	 -	F32 mR, mG, mB, mA, mI;			/// the values -	std::string mName;				/// name to use to dereference params -	std::string mSliderName;		/// name of the slider in menu -	bool mHasSliderName;			/// only set slider name for true color types - -	inline WaterColorControl(F32 red, F32 green, F32 blue, F32 alpha, -							 F32 intensity, const std::string& n, const std::string& sliderName = LLStringUtil::null) -		: mR(red), mG(green), mB(blue), mA(alpha), mI(intensity), mName(n), mSliderName(sliderName) -	{ -		// if there's a slider name, say we have one -		mHasSliderName = false; -		if (mSliderName != "") { -			mHasSliderName = true; -		} -	} - -	inline WaterColorControl & operator = (LLColor4 const & val)  -	{ -		mR = val.mV[0]; -		mG = val.mV[1]; -		mB = val.mV[2]; -		mA = val.mV[3];		 -		return *this; -	} - -	inline operator LLColor4 (void) const -	{ -		return LLColor4(mR, mG, mB, mA); -	} - -	inline WaterColorControl & operator = (LLVector4 const & val)  -	{ -		mR = val.mV[0]; -		mG = val.mV[1]; -		mB = val.mV[2]; -		mA = val.mV[3];		 -		return *this; -	} - -	inline operator LLVector4 (void) const  -	{ -		return LLVector4(mR, mG, mB, mA); -	} - -	inline operator LLVector3 (void) const  -	{ -		return LLVector3(mR, mG, mB); -	} - -	inline void update(LLWaterParamSet & params) const  -	{ -		params.set(mName, mR, mG, mB, mA); -	} -}; - -struct WaterVector3Control  -{ -	F32 mX; -	F32 mY; -	F32 mZ; - -	std::string mName; - -	// basic constructor -	inline WaterVector3Control(F32 valX, F32 valY, F32 valZ, const std::string& n) -		: mX(valX), mY(valY), mZ(valZ), mName(n) -	{ -	} - -	inline WaterVector3Control & operator = (LLVector3 const & val)  -	{ -		mX = val.mV[0]; -		mY = val.mV[1]; -		mZ = val.mV[2]; - -		return *this; -	} - -	inline void update(LLWaterParamSet & params) const  -	{ -		params.set(mName, mX, mY, mZ); -	} - -}; - -struct WaterVector2Control  -{ -	F32 mX; -	F32 mY; - -	std::string mName; - -	// basic constructor -	inline WaterVector2Control(F32 valX, F32 valY, const std::string& n) -		: mX(valX), mY(valY), mName(n) -	{ -	} - -	inline WaterVector2Control & operator = (LLVector2 const & val)  -	{ -		mX = val.mV[0]; -		mY = val.mV[1]; - -		return *this; -	} - -	inline void update(LLWaterParamSet & params) const  -	{ -		params.set(mName, mX, mY); -	} -}; - -// float slider control -struct WaterFloatControl  -{ -	F32 mX; -	std::string mName; -	F32 mMult; - -	inline WaterFloatControl(F32 val, const std::string& n, F32 m=1.0f) -		: mX(val), mName(n), mMult(m) -	{ -	} - -	inline WaterFloatControl & operator = (LLVector4 const & val)  -	{ -		mX = val.mV[0]; - -		return *this; -	} - -	inline operator F32 (void) const  -	{ -		return mX; -	} - -	inline void update(LLWaterParamSet & params) const  -	{ -		params.set(mName, mX); -	} -}; - -// float slider control -struct WaterExpFloatControl  -{ -	F32 mExp; -	std::string mName; -	F32 mBase; - -	inline WaterExpFloatControl(F32 val, const std::string& n, F32 b) -		: mExp(val), mName(n), mBase(b) -	{ -	} - -	inline WaterExpFloatControl & operator = (F32 val)  -	{ -		mExp = log(val) / log(mBase); - -		return *this; -	} - -	inline operator F32 (void) const  -	{ -		return pow(mBase, mExp); -	} - -	inline void update(LLWaterParamSet & params) const  -	{ -		params.set(mName, pow(mBase, mExp)); -	} -}; -#endif - -/// WindLight parameter manager class - what controls all the wind light shaders -class LLWaterParamManager : public LLSingleton<LLWaterParamManager> -{ -	LLSINGLETON(LLWaterParamManager); -	~LLWaterParamManager(); -	LOG_CLASS(LLWaterParamManager); -public: -	typedef std::list<std::string> preset_name_list_t; -	typedef std::map<std::string, LLWaterParamSet> preset_map_t; -	typedef boost::signals2::signal<void()> preset_list_signal_t; - -	/// save the parameter presets to file -	void savePreset(const std::string & name); - -	/// send the parameters to the shaders -	void propagateParameters(void); - -	// display specified water -	void applyParams(const LLSD& params, bool interpolate); - -	/// update information for the shader -	void update(LLViewerCamera * cam); - -	/// Update shader uniforms that have changed. -	void updateShaderUniforms(LLGLSLShader * shader); - -	/// add a param to the list -	bool addParamSet(const std::string& name, LLWaterParamSet& param); - -	/// add a param to the list -	BOOL addParamSet(const std::string& name, LLSD const & param); - -	/// get a param from the list -	bool getParamSet(const std::string& name, LLWaterParamSet& param); - -	/// check whether the preset is in the list -	bool hasParamSet(const std::string& name); - -	/// set the param in the list with a new param -	bool setParamSet(const std::string& name, LLWaterParamSet& param); -	 -	/// set the param in the list with a new param -	bool setParamSet(const std::string& name, LLSD const & param);	 - -	/// gets rid of a parameter and any references to it -	/// returns true if successful -	bool removeParamSet(const std::string& name, bool delete_from_disk); - -	/// @return true if the preset comes out of the box -	bool isSystemPreset(const std::string& preset_name) const; - -	/// @return all named water presets. -	const preset_map_t& getPresets() const { return mParamList; } - -	/// @return user and system preset names as a single list -	void getPresetNames(preset_name_list_t& presets) const; - -	/// @return user and system preset names separately -	void getPresetNames(preset_name_list_t& user_presets, preset_name_list_t& system_presets) const; - -	/// @return list of user presets names -	void getUserPresetNames(preset_name_list_t& user_presets) const; - -	/// Emitted when a preset gets added or deleted. -	boost::signals2::connection setPresetListChangeCallback(const preset_list_signal_t::slot_type& cb); - -	/// set the normap map we want for water -	bool setNormalMapID(const LLUUID& img); - -	void setDensitySliderValue(F32 val); - -	/// getters for all the different things water param manager maintains -	LLUUID getNormalMapID(void); -	LLVector2 getWave1Dir(void); -	LLVector2 getWave2Dir(void); -	F32 getScaleAbove(void); -	F32 getScaleBelow(void); -	LLVector3 getNormalScale(void); -	F32 getFresnelScale(void); -	F32 getFresnelOffset(void); -	F32 getBlurMultiplier(void); -	F32 getFogDensity(void); -	LLColor4 getFogColor(void); - -public: - -	LLWaterParamSet mCurParams; -#if 0 -	/// Atmospherics -	WaterColorControl mFogColor; -	WaterExpFloatControl mFogDensity; -	WaterFloatControl mUnderWaterFogMod; - -	/// wavelet scales and directions -	WaterVector3Control mNormalScale; -	WaterVector2Control mWave1Dir; -	WaterVector2Control mWave2Dir; - -	// controls how water is reflected and refracted -	WaterFloatControl mFresnelScale; -	WaterFloatControl mFresnelOffset; -	WaterFloatControl mScaleAbove; -	WaterFloatControl mScaleBelow; -	WaterFloatControl mBlurMultiplier; -#endif	 -    F32 mDensitySliderValue; - -private: -	/*virtual*/ void initSingleton(); -	void loadAllPresets(); -	void loadPresetsFromDir(const std::string& dir); -	bool loadPreset(const std::string& path); - -	static std::string getSysDir(); -	static std::string getUserDir(); - -	LLVector4 mWaterPlane; -	F32 mWaterFogKS; - -	// list of all the parameters, listed by name -	preset_map_t mParamList; - -	preset_list_signal_t mPresetListChangeSignal; -}; - -inline void LLWaterParamManager::setDensitySliderValue(F32 val) -{ -	val /= 10.0f; -	val = 1.0f - val; -	val *= val * val; -//	val *= val; -	mDensitySliderValue = val; -} - -inline LLUUID LLWaterParamManager::getNormalMapID() -{	 -	return mCurParams.mParamValues["normalMap"].asUUID(); -} - -inline bool LLWaterParamManager::setNormalMapID(const LLUUID& id) -{ -	mCurParams.mParamValues["normalMap"] = id; -	return true; -} - -inline LLVector2 LLWaterParamManager::getWave1Dir(void) -{ -	bool err; -	return mCurParams.getVector2("wave1Dir", err); -} - -inline LLVector2 LLWaterParamManager::getWave2Dir(void) -{ -	bool err; -	return mCurParams.getVector2("wave2Dir", err); -} - -inline F32 LLWaterParamManager::getScaleAbove(void) -{ -	bool err; -	return mCurParams.getFloat("scaleAbove", err); -} - -inline F32 LLWaterParamManager::getScaleBelow(void) -{ -	bool err; -	return mCurParams.getFloat("scaleBelow", err); -} - -inline LLVector3 LLWaterParamManager::getNormalScale(void) -{ -	bool err; -	return mCurParams.getVector3("normScale", err); -} - -inline F32 LLWaterParamManager::getFresnelScale(void) -{ -	bool err; -	return mCurParams.getFloat("fresnelScale", err); -} - -inline F32 LLWaterParamManager::getFresnelOffset(void) -{ -	bool err; -	return mCurParams.getFloat("fresnelOffset", err); -} - -inline F32 LLWaterParamManager::getBlurMultiplier(void) -{ -	bool err; -	return mCurParams.getFloat("blurMultiplier", err); -} - -inline LLColor4 LLWaterParamManager::getFogColor(void) -{ -	bool err; -	return LLColor4(mCurParams.getVector4("waterFogColor", err)); -} - -#endif diff --git a/indra/newview/llwaterparamset.cpp b/indra/newview/llwaterparamset.cpp deleted file mode 100644 index 9cc91d2246..0000000000 --- a/indra/newview/llwaterparamset.cpp +++ /dev/null @@ -1,266 +0,0 @@ -/** - * @file llwaterparamset.cpp - * @brief Implementation for the LLWaterParamSet class. - * - * $LicenseInfo:firstyear=2005&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llwaterparamset.h" -#include "llsd.h" - -#include "llwaterparammanager.h" -#include "lluictrlfactory.h" -#include "llsliderctrl.h" -#include "llviewertexturelist.h" -#include "llviewercontrol.h" -#include "lluuid.h" - -#include <llgl.h> - -#include <sstream> - -LLWaterParamSet::LLWaterParamSet(void) : -	mName("Unnamed Preset") -{ -	LLSD vec4; -	LLSD vec3; -	LLSD real(0.0f); - -	vec4 = LLSD::emptyArray(); -	vec4.append(22.f/255.f); -	vec4.append(43.f/255.f); -	vec4.append(54.f/255.f); -	vec4.append(0.f/255.f); - -	vec3 = LLSD::emptyArray(); -	vec3.append(2); -	vec3.append(2); -	vec3.append(2); - -	LLSD wave1, wave2; -	wave1 = LLSD::emptyArray(); -	wave2 = LLSD::emptyArray(); -	wave1.append(0.5f); -	wave1.append(-.17f); -	wave2.append(0.58f); -	wave2.append(-.67f); - -	mParamValues.insert("waterFogColor", vec4); -	mParamValues.insert("waterFogDensity", 16.0f); -	mParamValues.insert("underWaterFogMod", 0.25f); -	mParamValues.insert("normScale", vec3); -	mParamValues.insert("fresnelScale", 0.5f); -	mParamValues.insert("fresnelOffset", 0.4f); -	mParamValues.insert("scaleAbove", 0.025f); -	mParamValues.insert("scaleBelow", 0.2f); -	mParamValues.insert("blurMultiplier", 0.01f); -	mParamValues.insert("wave1Dir", wave1); -	mParamValues.insert("wave2Dir", wave2); -	mParamValues.insert("normalMap", DEFAULT_WATER_NORMAL); - -} - -void LLWaterParamSet::set(const std::string& paramName, float x)  -{	 -	// handle case where no array -	if(mParamValues[paramName].isReal())  -	{ -		mParamValues[paramName] = x; -	}  -	 -	// handle array -	else if(mParamValues[paramName].isArray() && -			mParamValues[paramName][0].isReal()) -	{ -		mParamValues[paramName][0] = x; -	} -} - -void LLWaterParamSet::set(const std::string& paramName, float x, float y) { -	mParamValues[paramName][0] = x; -	mParamValues[paramName][1] = y; -} - -void LLWaterParamSet::set(const std::string& paramName, float x, float y, float z) -{ -	mParamValues[paramName][0] = x; -	mParamValues[paramName][1] = y; -	mParamValues[paramName][2] = z; -} - -void LLWaterParamSet::set(const std::string& paramName, float x, float y, float z, float w)  -{ -	mParamValues[paramName][0] = x; -	mParamValues[paramName][1] = y; -	mParamValues[paramName][2] = z; -	mParamValues[paramName][3] = w; -} - -void LLWaterParamSet::set(const std::string& paramName, const float * val)  -{ -	mParamValues[paramName][0] = val[0]; -	mParamValues[paramName][1] = val[1]; -	mParamValues[paramName][2] = val[2]; -	mParamValues[paramName][3] = val[3]; -} - -void LLWaterParamSet::set(const std::string& paramName, const LLVector4 & val)  -{ -	mParamValues[paramName][0] = val.mV[0]; -	mParamValues[paramName][1] = val.mV[1]; -	mParamValues[paramName][2] = val.mV[2]; -	mParamValues[paramName][3] = val.mV[3]; -} - -void LLWaterParamSet::set(const std::string& paramName, const LLColor4 & val)  -{ -	mParamValues[paramName][0] = val.mV[0]; -	mParamValues[paramName][1] = val.mV[1]; -	mParamValues[paramName][2] = val.mV[2]; -	mParamValues[paramName][3] = val.mV[3]; -} - -LLVector4 LLWaterParamSet::getVector4(const std::string& paramName, bool& error)  -{ -	 -	// test to see if right type -	LLSD cur_val = mParamValues.get(paramName); -	if (!cur_val.isArray() || cur_val.size() != 4)  -	{ -		error = true; -		return LLVector4(0,0,0,0); -	} -	 -	LLVector4 val; -	val.mV[0] = (F32) cur_val[0].asReal(); -	val.mV[1] = (F32) cur_val[1].asReal(); -	val.mV[2] = (F32) cur_val[2].asReal(); -	val.mV[3] = (F32) cur_val[3].asReal(); -	 -	error = false; -	return val; -} - -LLVector3 LLWaterParamSet::getVector3(const std::string& paramName, bool& error)  -{ -	 -	// test to see if right type -	LLSD cur_val = mParamValues.get(paramName); -	if (!cur_val.isArray()|| cur_val.size() != 3)  -	{ -		error = true; -		return LLVector3(0,0,0); -	} -	 -	LLVector3 val; -	val.mV[0] = (F32) cur_val[0].asReal(); -	val.mV[1] = (F32) cur_val[1].asReal(); -	val.mV[2] = (F32) cur_val[2].asReal(); -	 -	error = false; -	return val; -} - -LLVector2 LLWaterParamSet::getVector2(const std::string& paramName, bool& error)  -{ -	// test to see if right type -	LLSD cur_val = mParamValues.get(paramName); -	if (!cur_val.isArray() || cur_val.size() != 2)  -	{ -		error = true; -		return LLVector2(0,0); -	} -	 -	LLVector2 val; -	val.mV[0] = (F32) cur_val[0].asReal(); -	val.mV[1] = (F32) cur_val[1].asReal(); -	 -	error = false; -	return val; -} - -F32 LLWaterParamSet::getFloat(const std::string& paramName, bool& error)  -{ -	 -	// test to see if right type -	LLSD cur_val = mParamValues.get(paramName); -	if (cur_val.isArray() && cur_val.size() != 0) -	{ -		error = false; -		return (F32) cur_val[0].asReal();	 -	} -	 -	if(cur_val.isReal()) -	{ -		error = false; -		return (F32) cur_val.asReal(); -	} -	 -	error = true; -	return 0; -} - -// Added for interpolation effect in DEV-33645 -// Based on LLWLParamSet::mix, but written by Jacob without an intimate knowledge of how WindLight works. -// The function definition existed in the header but was never implemented.  If you think there is something -// wrong with this, you're probably right.  Ask Jacob, Q, or a member of the original WindLight team. -void LLWaterParamSet::mix(LLWaterParamSet& src, LLWaterParamSet& dest, F32 weight) -{ -	// Setup -	LLSD srcVal, destVal;													// LLSD holders for get/set calls, reusable - -	// Iterate through values -	for(LLSD::map_iterator iter = mParamValues.beginMap(); iter != mParamValues.endMap(); ++iter) -	{ -		// If param exists in both src and dest, set the holder variables, otherwise skip -		if(src.mParamValues.has(iter->first) && dest.mParamValues.has(iter->first)) -		{ -			srcVal = src.mParamValues[iter->first]; -			destVal = dest.mParamValues[iter->first]; -		} -		else -		{ -			continue; -		} -		 -		if(iter->second.isReal())									// If it's a real, interpolate directly -		{ -			iter->second = srcVal.asReal() + ((destVal.asReal() - srcVal.asReal()) * weight); -		}		 -		else if(iter->second.isArray() && iter->second[0].isReal()	// If it's an array of reals, loop through the reals and interpolate on those -				&& iter->second.size() == srcVal.size() && iter->second.size() == destVal.size()) -		{ -			// Actually do interpolation: old value + (difference in values * factor) -			for(int i=0; i < iter->second.size(); ++i)  -			{ -				// iter->second[i] = (1.f-weight)*(F32)srcVal[i].asReal() + weight*(F32)destVal[i].asReal();	// old way of doing it -- equivalent but one more operation -				iter->second[i] = srcVal[i].asReal() + ((destVal[i].asReal() - srcVal[i].asReal()) * weight); -			} -		} -		else														// Else, skip -		{ -			continue; -		} -	} -} diff --git a/indra/newview/llwaterparamset.h b/indra/newview/llwaterparamset.h deleted file mode 100644 index 368cb0ccba..0000000000 --- a/indra/newview/llwaterparamset.h +++ /dev/null @@ -1,165 +0,0 @@ -/** - * @file llwlparamset.h - * @brief Interface for the LLWaterParamSet class. - * - * $LicenseInfo:firstyear=2005&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#ifndef LL_WATER_PARAM_SET_H -#define LL_WATER_PARAM_SET_H - -#include <string> -#include <map> - -#include "v4math.h" -#include "v4color.h" -#include "llviewershadermgr.h" -#include "llstringtable.h" - -class LLWaterParamSet; - -/// A class representing a set of parameter values for the Water shaders. -class LLWaterParamSet  -{ -	friend class LLWaterParamManager; - -public: -	std::string mName;	 -	 -private: - -	LLSD mParamValues; -	std::vector<LLStaticHashedString> mParamHashedNames; - -	void updateHashedNames(); - -public: - -	LLWaterParamSet(); - -	/// Bind this set of parameter values to the uniforms of a particular shader. -	void update(LLGLSLShader * shader) const; - -	/// set the total llsd -	void setAll(const LLSD& val); -	 -	/// get the total llsd -	const LLSD& getAll();		 - -	/// Set a float parameter. -	/// \param paramName	The name of the parameter to set. -	/// \param x			The float value to set. -	void set(const std::string& paramName, float x); - -	/// Set a float2 parameter. -	/// \param paramName	The name of the parameter to set. -	/// \param x			The x component's value to set. -	/// \param y			The y component's value to set. -	void set(const std::string& paramName, float x, float y); - -	/// Set a float3 parameter. -	/// \param paramName	The name of the parameter to set. -	/// \param x			The x component's value to set. -	/// \param y			The y component's value to set. -	/// \param z			The z component's value to set. -	void set(const std::string& paramName, float x, float y, float z); - -	/// Set a float4 parameter. -	/// \param paramName	The name of the parameter to set. -	/// \param x			The x component's value to set. -	/// \param y			The y component's value to set. -	/// \param z			The z component's value to set. -	/// \param w			The w component's value to set. -	void set(const std::string& paramName, float x, float y, float z, float w); - -	/// Set a float4 parameter. -	/// \param paramName	The name of the parameter to set. -	/// \param val			An array of the 4 float values to set the parameter to. -	void set(const std::string& paramName, const float * val); - -	/// Set a float4 parameter. -	/// \param paramName	The name of the parameter to set. -	/// \param val			A struct of the 4 float values to set the parameter to. -	void set(const std::string& paramName, const LLVector4 & val); - -	/// Set a float4 parameter. -	/// \param paramName	The name of the parameter to set. -	/// \param val			A struct of the 4 float values to set the parameter to. -	void set(const std::string& paramName, const LLColor4 & val); - -	/// Get a float4 parameter. -	/// \param paramName	The name of the parameter to set. -	/// \param error		A flag to set if it's not the proper return type -	LLVector4 getVector4(const std::string& paramName, bool& error); - -	/// Get a float3 parameter. -	/// \param paramName	The name of the parameter to set. -	/// \param error		A flag to set if it's not the proper return type -	LLVector3 getVector3(const std::string& paramName, bool& error); -	 -	/// Get a float2 parameter. -	/// \param paramName	The name of the parameter to set. -	/// \param error		A flag to set if it's not the proper return type -	LLVector2 getVector2(const std::string& paramName, bool& error); -	 -	/// Get an integer parameter -	/// \param paramName	The name of the parameter to set. -	/// \param error		A flag to set if it's not the proper return type	 -	F32 getFloat(const std::string& paramName, bool& error); -		 -	/// interpolate two parameter sets -	/// \param src			The parameter set to start with -	/// \param dest			The parameter set to end with -	/// \param weight		The amount to interpolate -	void mix(LLWaterParamSet& src, LLWaterParamSet& dest,  -		F32 weight); - -}; - -inline void LLWaterParamSet::setAll(const LLSD& val) -{ -	if(val.isMap()) { -		LLSD::map_const_iterator mIt = val.beginMap(); -		for(; mIt != val.endMap(); mIt++) -		{ -			mParamValues[mIt->first] = mIt->second; -		} -	} -	updateHashedNames(); -} - -inline void LLWaterParamSet::updateHashedNames() -{ -	mParamHashedNames.clear(); -	// Iterate through values -	for(LLSD::map_iterator iter = mParamValues.beginMap(); iter != mParamValues.endMap(); ++iter) -	{ -		mParamHashedNames.push_back(LLStaticHashedString(iter->first)); -	} -} - -inline const LLSD& LLWaterParamSet::getAll() -{ -	return mParamValues; -} - -#endif // LL_WaterPARAM_SET_H diff --git a/indra/newview/llwlanimator.cpp b/indra/newview/llwlanimator.cpp deleted file mode 100644 index c8879e73eb..0000000000 --- a/indra/newview/llwlanimator.cpp +++ /dev/null @@ -1,324 +0,0 @@ -/** - * @file llwlanimator.cpp - * @brief Implementation for the LLWLAnimator class. - * - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llwlanimator.h" -#include "llsky.h" -#include "pipeline.h" -#include "llwlparammanager.h" -#include "llwaterparammanager.h" - -extern LLControlGroup gSavedSettings; - -F64 LLWLAnimator::INTERP_TOTAL_SECONDS = 3.f; - -LLWLAnimator::LLWLAnimator() : mStartTime(0.f), mDayRate(1.f), mDayTime(0.f), -							mIsRunning(FALSE), mIsInterpolating(FALSE), mTimeType(TIME_LINDEN), -							mInterpStartTime(), mInterpEndTime() -{ -	mInterpBeginWL = new LLWLParamSet(); -	mInterpBeginWater = new LLWaterParamSet(); -	mInterpEndWater = new LLWaterParamSet(); -} - -void LLWLAnimator::update(LLWLParamSet& curParams) -{ -	//llassert(mUseLindenTime != mUseLocalTime); - -	F64 curTime; -	curTime = getDayTime(); - -	// don't do anything if empty -	if(mTimeTrack.size() == 0) -	{ -		return; -	} - -	// start it off -	mFirstIt = mTimeTrack.begin(); -	mSecondIt = mTimeTrack.begin(); -	mSecondIt++; - -	// grab the two tween iterators -	while(mSecondIt != mTimeTrack.end() && curTime > mSecondIt->first) -	{ -		mFirstIt++; -		mSecondIt++; -	} - -	// scroll it around when you get to the end -	if(mSecondIt == mTimeTrack.end() || mFirstIt->first > curTime) -	{ -		mSecondIt = mTimeTrack.begin(); -		mFirstIt = mTimeTrack.end(); -		mFirstIt--; -	} - -	F32 weight = 0; - -	if(mFirstIt->first < mSecondIt->first) -	{ -	 -		// get the delta time and the proper weight -		weight = F32 (curTime - mFirstIt->first) /  -			(mSecondIt->first - mFirstIt->first); -	 -	// handle the ends -	} -	else if(mFirstIt->first > mSecondIt->first) -	{ -		 -		// right edge of time line -		if(curTime >= mFirstIt->first) -		{ -			weight = F32 (curTime - mFirstIt->first) / -			((1 + mSecondIt->first) - mFirstIt->first); -		// left edge of time line -		} -		else -		{ -			weight = F32 ((1 + curTime) - mFirstIt->first) / -			((1 + mSecondIt->first) - mFirstIt->first); -		} - -	// handle same as whatever the last one is -	} -	else -	{ -		weight = 1; -	} - -	if(mIsInterpolating) -	{ -		// *TODO_JACOB: this is kind of laggy.  Not sure why.  The part that lags is the curParams.mix call, and none of the other mixes.  It works, though. -		clock_t current = clock(); -		if(current >= mInterpEndTime) -		{ -			mIsInterpolating = false; -			return; -		} -		 -		// determine moving target for final interpolation value -		// *TODO: this will not work with lazy loading of sky presets. -		LLWLParamSet buf = LLWLParamSet(); -		buf.setAll(LLWLParamManager::getInstance()->mParamList[mFirstIt->second].getAll());	// just give it some values, otherwise it has no params to begin with (see comment in constructor) -		buf.mix(LLWLParamManager::getInstance()->mParamList[mFirstIt->second], LLWLParamManager::getInstance()->mParamList[mSecondIt->second], weight);	// mix to determine moving target for interpolation finish (as below) - -		// mix from previous value to moving target -		weight = (current - mInterpStartTime) / (INTERP_TOTAL_SECONDS * CLOCKS_PER_SEC); -		curParams.mix(*mInterpBeginWL, buf, weight); -		 -		// mix water -		LLWaterParamManager::getInstance()->mCurParams.mix(*mInterpBeginWater, *mInterpEndWater, weight); -	} -	else -	{ -	// do the interpolation and set the parameters -		// *TODO: this will not work with lazy loading of sky presets. -		curParams.mix(LLWLParamManager::getInstance()->mParamList[mFirstIt->second], LLWLParamManager::getInstance()->mParamList[mSecondIt->second], weight); -	} -} - -F64 LLWLAnimator::getDayTime() -{ -	if(!mIsRunning) -	{ -		return mDayTime; -	} -	else if(mTimeType == TIME_LINDEN) -	{ -		F32 phase = gSky.getSunPhase() / F_PI; - -		// we're not solving the non-linear equation that determines sun phase -		// we're just linearly interpolating between the major points - -		if (phase <= 5.0 / 4.0) -		{ -			// mDayTime from 0.33 to 0.75 (6:00 to 21:00) -			mDayTime = (1.0 / 3.0) * phase + (1.0 / 3.0); -		} -		else if (phase > 7.0 / 4.0) -		{ -			// maximum value for phase is 2 -			// mDayTime from 0.25 to 0.33 (3:00 to 6:00) -			mDayTime = (1.0 / 3.0) - (1.0 / 3.0) * (2 - phase); -		} -		else -		{ -			// phase == 3/2 is where day restarts (24:00) -			// mDayTime from 0.75 to 0.999 and 0 to 0.25 (21:00 to 03:00) -			mDayTime = phase - (1.0 / 2.0); - -			if(mDayTime > 1) -			{ -				mDayTime--; -			} -		} - -		return mDayTime; -	} -	else if(mTimeType == TIME_LOCAL) -	{ -		return getLocalTime(); -	} - -	// get the time; -	mDayTime = (LLTimer::getElapsedSeconds() - mStartTime) / mDayRate; - -	// clamp it -	if(mDayTime < 0) -	{ -		mDayTime = 0; -	}  -	while(mDayTime > 1) -	{ -		mDayTime--; -	} - -	return (F32)mDayTime; -} - -void LLWLAnimator::setDayTime(F64 dayTime) -{ -	//retroactively set start time; -	mStartTime = LLTimer::getElapsedSeconds() - dayTime * mDayRate; -	mDayTime = dayTime; - -	// clamp it -	if(mDayTime < 0) -	{ -		mDayTime = 0; -	} -	else if(mDayTime > 1) -	{ -		mDayTime = 1; -	} -} - - -void LLWLAnimator::setTrack(std::map<F32, LLWLParamKey>& curTrack, -							F32 dayRate, F64 dayTime, bool run) -{ -	mTimeTrack = curTrack; -	mDayRate = dayRate; -	setDayTime(dayTime); - -	mIsRunning = run; -} - -void LLWLAnimator::startInterpolation(const LLSD& targetWater) -{ -	mInterpBeginWL->setAll(LLWLParamManager::getInstance()->mCurParams.getAll()); -	mInterpBeginWater->setAll(LLWaterParamManager::getInstance()->mCurParams.getAll()); -	 -	mInterpStartTime = clock(); -	mInterpEndTime = mInterpStartTime + clock_t(INTERP_TOTAL_SECONDS) * CLOCKS_PER_SEC; - -	// Don't set any ending WL -- this is continuously calculated as the animator updates since it's a moving target -	mInterpEndWater->setAll(targetWater); - -	mIsInterpolating = true; -} - -std::string LLWLAnimator::timeToString(F32 curTime) -{ -	S32 hours; -	S32 min; -	bool isPM = false; - -	// get hours and minutes -	hours = (S32) (24.0 * curTime); -	curTime -= ((F32) hours / 24.0f); -	min = ll_round(24.0f * 60.0f * curTime); - -	// handle case where it's 60 -	if(min == 60)  -	{ -		hours++; -		min = 0; -	} - -	// set for PM -	if(hours >= 12 && hours < 24) -	{ -		isPM = true; -	} - -	// convert to non-military notation -	if(hours >= 24)  -	{ -		hours = 12; -	}  -	else if(hours > 12)  -	{ -		hours -= 12; -	}  -	else if(hours == 0)  -	{ -		hours = 12; -	} - -	// make the string -	std::stringstream newTime; -	newTime << hours << ":"; -	 -	// double 0 -	if(min < 10)  -	{ -		newTime << 0; -	} -	 -	// finish it -	newTime << min << " "; -	if(isPM)  -	{ -		newTime << "PM"; -	}  -	else  -	{ -		newTime << "AM"; -	} - -	return newTime.str(); -} - -F64 LLWLAnimator::getLocalTime() -{ -	char buffer[9]; -	time_t rawtime; -	struct tm* timeinfo; - -	time(&rawtime); -	timeinfo = localtime(&rawtime); -	strftime(buffer, 9, "%H:%M:%S", timeinfo); -	std::string timeStr(buffer); - -	F64 tod = ((F64)atoi(timeStr.substr(0,2).c_str())) / 24.f + -			  ((F64)atoi(timeStr.substr(3,2).c_str())) / 1440.f +  -			  ((F64)atoi(timeStr.substr(6,2).c_str())) / 86400.f; -	return tod; -} diff --git a/indra/newview/llwlanimator.h b/indra/newview/llwlanimator.h deleted file mode 100644 index cbb12eb9b7..0000000000 --- a/indra/newview/llwlanimator.h +++ /dev/null @@ -1,140 +0,0 @@ -/** - * @file llwlanimator.h - * @brief Interface for the LLWLAnimator class. - * - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#ifndef LL_WL_ANIMATOR_H -#define LL_WL_ANIMATOR_H - -#include "llwlparamset.h" -#include "llwaterparamset.h" -#include "llenvmanager.h" - -#include <string> -#include <map> - -class LLWLAnimator { -public: -	typedef enum e_time -	{ -		TIME_LINDEN, -		TIME_LOCAL, -		TIME_CUSTOM -	} ETime; - -	F64 mStartTime; -	F32 mDayRate; -	F64 mDayTime; -	 -	// track to play -	std::map<F32, LLWLParamKey> mTimeTrack; -	std::map<F32, LLWLParamKey>::iterator mFirstIt, mSecondIt; - -	// simple constructor -	LLWLAnimator(); - -	~LLWLAnimator() -	{ -		delete mInterpBeginWL; -		delete mInterpBeginWater; -		delete mInterpEndWater; -	} - -	// update the parameters -	void update(LLWLParamSet& curParams); - -	// get time in seconds -	//F64 getTime(void); - -	// returns a float 0 - 1 saying what time of day is it? -	F64 getDayTime(void); - -	// sets a float 0 - 1 saying what time of day it is -	void setDayTime(F64 dayTime); - -	// set an animation track -	void setTrack(std::map<F32, LLWLParamKey>& track, -		F32 dayRate, F64 dayTime = 0, bool run = true); - -	void deactivate() -	{ -		mIsRunning = false; -	} - -	void activate(ETime time) -	{ -		mIsRunning = true; -		mTimeType = time; -	} - -	void startInterpolation(const LLSD& targetWater); - -	bool getIsRunning() -	{ -		return mIsRunning; -	} - -	bool getUseCustomTime() -	{ -		return mTimeType == TIME_CUSTOM; -	} - -	bool getUseLocalTime() -	{ -		return mTimeType == TIME_LOCAL; -	} - -	bool getUseLindenTime() -	{ -		return mTimeType == TIME_LINDEN; -	} - -	void setTimeType(ETime time) -	{ -		mTimeType = time; -	} - -	ETime getTimeType() -	{ -		return mTimeType; -	} - -	/// convert the present time to a digital clock time -	static std::string timeToString(F32 curTime); - -	/// get local time between 0 and 1 -	static F64 getLocalTime(); - -private: -	ETime mTimeType; -	bool mIsRunning, mIsInterpolating; -	LLWLParamSet *mInterpBeginWL; -	LLWaterParamSet *mInterpBeginWater, *mInterpEndWater; -	clock_t mInterpStartTime, mInterpEndTime; - -	static F64 INTERP_TOTAL_SECONDS; -}; - -#endif // LL_WL_ANIMATOR_H - diff --git a/indra/newview/llwldaycycle.cpp b/indra/newview/llwldaycycle.cpp index 106f17f61b..0a331d1823 100644 --- a/indra/newview/llwldaycycle.cpp +++ b/indra/newview/llwldaycycle.cpp @@ -46,6 +46,7 @@ LLWLDayCycle::~LLWLDayCycle()  void LLWLDayCycle::loadDayCycle(const LLSD& day_data, LLWLParamKey::EScope scope)  { +#if 0  	LL_DEBUGS() << "Loading day cycle (day_data.size() = " << day_data.size() << ", scope = " << scope << ")" << LL_ENDL;  	mTimeMap.clear(); @@ -88,6 +89,7 @@ void LLWLDayCycle::loadDayCycle(const LLSD& day_data, LLWLParamKey::EScope scope  		// then add the keyframe  		addKeyframe((F32)day_data[i][0].asReal(), frame);  	} +#endif  }  void LLWLDayCycle::loadDayCycleFromFile(const std::string & fileName) @@ -158,35 +160,35 @@ LLSD LLWLDayCycle::asLLSD()  	return day_data;  } -bool LLWLDayCycle::getSkyRefs(std::map<LLWLParamKey, LLWLParamSet>& refs) const -{ -	bool result = true; -	LLWLParamManager& wl_mgr = LLWLParamManager::instance(); - -	refs.clear(); -	for (std::map<F32, LLWLParamKey>::const_iterator iter = mTimeMap.begin(); iter != mTimeMap.end(); ++iter) -	{ -		const LLWLParamKey& key = iter->second; -		if (!wl_mgr.getParamSet(key, refs[key])) -		{ -			LL_WARNS() << "Cannot find sky [" << key.name << "] referenced by a day cycle" << LL_ENDL; -			result = false; -		} -	} - -	return result; -} +// bool LLWLDayCycle::getSkyRefs(std::map<LLWLParamKey, LLWLParamSet>& refs) const +// { +// 	bool result = true; +// 	LLWLParamManager& wl_mgr = LLWLParamManager::instance(); +//  +// 	refs.clear(); +// 	for (std::map<F32, LLWLParamKey>::const_iterator iter = mTimeMap.begin(); iter != mTimeMap.end(); ++iter) +// 	{ +// 		const LLWLParamKey& key = iter->second; +// 		if (!wl_mgr.getParamSet(key, refs[key])) +// 		{ +// 			LL_WARNS() << "Cannot find sky [" << key.name << "] referenced by a day cycle" << LL_ENDL; +// 			result = false; +// 		} +// 	} +//  +// 	return result; +// }  bool LLWLDayCycle::getSkyMap(LLSD& sky_map) const  { -	std::map<LLWLParamKey, LLWLParamSet> refs; - -	if (!getSkyRefs(refs)) -	{ -		return false; -	} - -	sky_map = LLWLParamManager::createSkyMap(refs); +// 	std::map<LLWLParamKey, LLWLParamSet> refs; +//  +// 	if (!getSkyRefs(refs)) +// 	{ +// 		return false; +// 	} +//  +// 	sky_map = LLWLParamManager::createSkyMap(refs);  	return true;  } @@ -235,23 +237,23 @@ bool LLWLDayCycle::changeKeyframeTime(F32 oldTime, F32 newTime)  	return addKeyframe(newTime, frame);  } -bool LLWLDayCycle::changeKeyframeParam(F32 time, LLWLParamKey key) -{ -	LL_DEBUGS() << "Changing key frame param (" << time << ", " << key.toLLSD() << ")" << LL_ENDL; - -	// just remove and add back -	// make sure param exists -	LLWLParamSet tmp; -	bool stat = LLWLParamManager::getInstance()->getParamSet(key, tmp); -	if(stat == false)  -	{ -		LL_DEBUGS() << "Failed to change key frame param (" << time << ", " << key.toLLSD() << ")" << LL_ENDL; -		return stat; -	} - -	mTimeMap[time] = key; -	return true; -} +// bool LLWLDayCycle::changeKeyframeParam(F32 time, LLWLParamKey key) +// { +// 	LL_DEBUGS() << "Changing key frame param (" << time << ", " << key.toLLSD() << ")" << LL_ENDL; +//  +// 	// just remove and add back +// 	// make sure param exists +// 	LLWLParamSet tmp; +// 	bool stat = LLWLParamManager::getInstance()->getParamSet(key, tmp); +// 	if(stat == false)  +// 	{ +// 		LL_DEBUGS() << "Failed to change key frame param (" << time << ", " << key.toLLSD() << ")" << LL_ENDL; +// 		return stat; +// 	} +//  +// 	mTimeMap[time] = key; +// 	return true; +// }  bool LLWLDayCycle::removeKeyframe(F32 time) @@ -285,19 +287,19 @@ bool LLWLDayCycle::getKeytime(LLWLParamKey frame, F32& key_time) const  	return false;  } -bool LLWLDayCycle::getKeyedParam(F32 time, LLWLParamSet& param) -{ -	// just scroll on through till you find it -	std::map<F32, LLWLParamKey>::iterator mIt = mTimeMap.find(time); -	if(mIt != mTimeMap.end()) -	{ -		return LLWLParamManager::getInstance()->getParamSet(mIt->second, param); -	} - -	// return error if not found -	LL_DEBUGS() << "Key " << time << " not found" << LL_ENDL; -	return false; -} +// bool LLWLDayCycle::getKeyedParam(F32 time, LLWLParamSet& param) +// { +// 	// just scroll on through till you find it +// 	std::map<F32, LLWLParamKey>::iterator mIt = mTimeMap.find(time); +// 	if(mIt != mTimeMap.end()) +// 	{ +// 		return LLWLParamManager::getInstance()->getParamSet(mIt->second, param); +// 	} +//  +// 	// return error if not found +// 	LL_DEBUGS() << "Key " << time << " not found" << LL_ENDL; +// 	return false; +// }  bool LLWLDayCycle::getKeyedParamName(F32 time, std::string & name)  { diff --git a/indra/newview/llwldaycycle.h b/indra/newview/llwldaycycle.h index aef999f3ec..2f9a2e5c4a 100644 --- a/indra/newview/llwldaycycle.h +++ b/indra/newview/llwldaycycle.h @@ -32,8 +32,7 @@ class LLWLDayCycle;  #include <vector>  #include <map>  #include <string> -#include "llwlparamset.h" -#include "llwlanimator.h" +#include "llenvmanager.h"  struct LLWLParamKey;  class LLWLDayCycle @@ -77,7 +76,7 @@ public:  	LLSD asLLSD();  	// get skies referenced by this day cycle -	bool getSkyRefs(std::map<LLWLParamKey, LLWLParamSet>& refs) const; +//	bool getSkyRefs(std::map<LLWLParamKey, LLWLParamSet>& refs) const;  	// get referenced skies as LLSD  	bool getSkyMap(LLSD& sky_map) const; @@ -109,7 +108,7 @@ public:  	/// get the param set at a given time  	/// returns true if found one -	bool getKeyedParam(F32 time, LLWLParamSet& param); +//	bool getKeyedParam(F32 time, LLWLParamSet& param);  	/// get the name  	/// returns true if it found one diff --git a/indra/newview/llwlparammanager.cpp b/indra/newview/llwlparammanager.cpp deleted file mode 100644 index 966a7840cf..0000000000 --- a/indra/newview/llwlparammanager.cpp +++ /dev/null @@ -1,714 +0,0 @@ -/** - * @file llwlparammanager.cpp - * @brief Implementation for the LLWLParamManager class. - * - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llwlparammanager.h" - -#include "pipeline.h" -#include "llsky.h" - -#include "lldiriterator.h" -#include "llfloaterreg.h" -#include "llsliderctrl.h" -#include "llspinctrl.h" -#include "llcheckboxctrl.h" -#include "lluictrlfactory.h" -#include "llviewercamera.h" -#include "llcombobox.h" -#include "lllineeditor.h" -#include "llsdserialize.h" - -#include "v4math.h" -#include "llviewerdisplay.h" -#include "llviewercontrol.h" -#include "llviewerwindow.h" -#include "lldrawpoolwater.h" -#include "llagent.h" -#include "llviewerregion.h" - -#include "llwlparamset.h" -#include "llpostprocess.h" - -#include "llviewershadermgr.h" -#include "llglslshader.h" - -#include "curl/curl.h" -#include "llstreamtools.h" - -#include "llenvironment.h" - -LLWLParamManager::LLWLParamManager() : - -	//set the defaults for the controls - -	/// Sun Delta Terrain tweak variables. -	mSunDeltaYaw(180.0f), -	mSceneLightStrength(2.0f), -//	mWLGamma(1.0f, "gamma"), - -// 	mBlueHorizon(0.25f, 0.25f, 1.0f, 1.0f, "blue_horizon", "WLBlueHorizon"), -// 	mHazeDensity(1.0f, "haze_density"), -// 	mBlueDensity(0.25f, 0.25f, 0.25f, 1.0f, "blue_density", "WLBlueDensity"), -// 	mDensityMult(1.0f, "density_multiplier", 1000), -// 	mHazeHorizon(1.0f, "haze_horizon"), -// 	mMaxAlt(4000.0f, "max_y"), - -	// Lighting -// 	mLightnorm(0.f, 0.707f, -0.707f, 1.f, "lightnorm"), -// 	mSunlight(0.5f, 0.5f, 0.5f, 1.0f, "sunlight_color", "WLSunlight"), -// 	mAmbient(0.5f, 0.75f, 1.0f, 1.19f, "ambient", "WLAmbient"), -// 	mGlow(18.0f, 0.0f, -0.01f, 1.0f, "glow"), - -	// Clouds -// 	mCloudColor(0.5f, 0.5f, 0.5f, 1.0f, "cloud_color", "WLCloudColor"), -// 	mCloudMain(0.5f, 0.5f, 0.125f, 1.0f, "cloud_pos_density1"), -// 	mCloudCoverage(0.0f, "cloud_shadow"), -// 	mCloudDetail(0.0f, 0.0f, 0.0f, 1.0f, "cloud_pos_density2"), -// 	mDistanceMult(1.0f, "distance_multiplier"), -// 	mCloudScale(0.42f, "cloud_scale"), - -	// sky dome -	mDomeOffset(0.96f), -	mDomeRadius(15000.f) -{ -} - -LLWLParamManager::~LLWLParamManager() -{ -} - -void LLWLParamManager::clearParamSetsOfScope(LLWLParamKey::EScope scope) -{ -	if (LLWLParamKey::SCOPE_LOCAL == scope) -	{ -		LL_WARNS("Windlight") << "Tried to clear windlight sky presets from local system!  This shouldn't be called..." << LL_ENDL; -		return; -	} - -	std::set<LLWLParamKey> to_remove; -	for(std::map<LLWLParamKey, LLWLParamSet>::iterator iter = mParamList.begin(); iter != mParamList.end(); ++iter) -	{ -		if(iter->first.scope == scope) -		{ -			to_remove.insert(iter->first); -		} -	} - -	for(std::set<LLWLParamKey>::iterator iter = to_remove.begin(); iter != to_remove.end(); ++iter) -	{ -		mParamList.erase(*iter); -	} -} - -// returns all skies referenced by the day cycle, with their final names -// side effect: applies changes to all internal structures! -std::map<LLWLParamKey, LLWLParamSet> LLWLParamManager::finalizeFromDayCycle(LLWLParamKey::EScope scope) -{ -	LL_DEBUGS() << "mDay before finalizing:" << LL_ENDL; -	{ -		for (std::map<F32, LLWLParamKey>::iterator iter = mDay.mTimeMap.begin(); iter != mDay.mTimeMap.end(); ++iter) -		{ -			LLWLParamKey& key = iter->second; -			LL_DEBUGS() << iter->first << "->" << key.name << LL_ENDL; -		} -	} - -	std::map<LLWLParamKey, LLWLParamSet> final_references; - -	// Move all referenced to desired scope, renaming if necessary -	// First, save skies referenced -	std::map<LLWLParamKey, LLWLParamSet> current_references; // all skies referenced by the day cycle, with their current names -	// guard against skies with same name and different scopes -	std::set<std::string> inserted_names; -	std::map<std::string, unsigned int> conflicted_names; // integer later used as a count, for uniquely renaming conflicts - -	LLWLDayCycle& cycle = mDay; -	for(std::map<F32, LLWLParamKey>::iterator iter = cycle.mTimeMap.begin(); -		iter != cycle.mTimeMap.end(); -		++iter) -	{ -		LLWLParamKey& key = iter->second; -		std::string desired_name = key.name; -		replace_newlines_with_whitespace(desired_name); // already shouldn't have newlines, but just in case -		if(inserted_names.find(desired_name) == inserted_names.end()) -		{ -			inserted_names.insert(desired_name); -		} -		else -		{ -			// make exist in map -			conflicted_names[desired_name] = 0; -		} -		current_references[key] = mParamList[key]; -	} - -	// forget all old skies in target scope, and rebuild, renaming as needed -	clearParamSetsOfScope(scope); -	for(std::map<LLWLParamKey, LLWLParamSet>::iterator iter = current_references.begin(); iter != current_references.end(); ++iter) -	{ -		const LLWLParamKey& old_key = iter->first; - -		std::string desired_name(old_key.name); -		replace_newlines_with_whitespace(desired_name); - -		LLWLParamKey new_key(desired_name, scope); // name will be replaced later if necessary - -		// if this sky is one with a non-unique name, rename via appending a number -		// an existing preset of the target scope gets to keep its name -		if (scope != old_key.scope && conflicted_names.find(desired_name) != conflicted_names.end()) -		{ -			std::string& new_name = new_key.name; - -			do -			{ -				// if this executes more than once, this is an absurdly pathological case -				// (e.g. "x" repeated twice, but "x 1" already exists, so need to use "x 2") -				std::stringstream temp; -				temp << desired_name << " " << (++conflicted_names[desired_name]); -				new_name = temp.str(); -			} while (inserted_names.find(new_name) != inserted_names.end()); - -			// yay, found one that works -			inserted_names.insert(new_name); // track names we consume here; shouldn't be necessary due to ++int? but just in case - -			// *TODO factor out below into a rename()? - -			LL_INFOS("Windlight") << "Renamed " << old_key.name << " (scope" << old_key.scope << ") to " -				<< new_key.name << " (scope " << new_key.scope << ")" << LL_ENDL; - -			// update name in sky -			iter->second.mName = new_name; - -			// update keys in day cycle -			for(std::map<F32, LLWLParamKey>::iterator frame = cycle.mTimeMap.begin(); frame != cycle.mTimeMap.end(); ++frame) -			{ -				if (frame->second == old_key) -				{ -					frame->second = new_key; -				} -			} - -			// add to master sky map -			mParamList[new_key] = iter->second; -		} - -		final_references[new_key] = iter->second; -	} - -	LL_DEBUGS() << "mDay after finalizing:" << LL_ENDL; -	{ -		for (std::map<F32, LLWLParamKey>::iterator iter = mDay.mTimeMap.begin(); iter != mDay.mTimeMap.end(); ++iter) -		{ -			LLWLParamKey& key = iter->second; -			LL_DEBUGS() << iter->first << "->" << key.name << LL_ENDL; -		} -	} - -	return final_references; -} - -// static -LLSD LLWLParamManager::createSkyMap(std::map<LLWLParamKey, LLWLParamSet> refs) -{ -	LLSD skies = LLSD::emptyMap(); -	for(std::map<LLWLParamKey, LLWLParamSet>::iterator iter = refs.begin(); iter != refs.end(); ++iter) -	{ -		skies.insert(iter->first.name, iter->second.getAll()); -	} -	return skies; -} - -void LLWLParamManager::addAllSkies(const LLWLParamKey::EScope scope, const LLSD& sky_presets) -{ -	for(LLSD::map_const_iterator iter = sky_presets.beginMap(); iter != sky_presets.endMap(); ++iter) -	{ -		LLWLParamSet set; -		set.setAll(iter->second); -		mParamList[LLWLParamKey(iter->first, scope)] = set; -	} -} - -void LLWLParamManager::refreshRegionPresets(const LLSD& region_sky_presets) -{ -	// Remove all region sky presets because they may belong to a previously visited region. -	clearParamSetsOfScope(LLEnvKey::SCOPE_REGION); - -	// Add all sky presets belonging to the current region. -	addAllSkies(LLEnvKey::SCOPE_REGION, region_sky_presets); -} - -void LLWLParamManager::loadAllPresets() -{ -	// First, load system (coming out of the box) sky presets. -	loadPresetsFromDir(getSysDir()); - -	// Then load user presets. Note that user day presets will modify any system ones already loaded. -	loadPresetsFromDir(getUserDir()); -} - -void LLWLParamManager::loadPresetsFromDir(const std::string& dir) -{ -	LL_INFOS("AppInit", "Shaders") << "Loading sky presets from " << dir << LL_ENDL; - -	LLDirIterator dir_iter(dir, "*.xml"); -	while (1) -	{ -		std::string file; -		if (!dir_iter.next(file)) -		{ -			break; // no more files -		} - -		std::string path = gDirUtilp->add(dir, file); -		if (!loadPreset(path)) -		{ -			LL_WARNS() << "Error loading sky preset from " << path << LL_ENDL; -		} -	} -} - -bool LLWLParamManager::loadPreset(const std::string& path) -{ -	llifstream xml_file; -	std::string name(gDirUtilp->getBaseFileName(LLURI::unescape(path), /*strip_exten = */ true)); - -	xml_file.open(path.c_str()); -	if (!xml_file) -	{ -		return false; -	} - -	LL_DEBUGS("AppInit", "Shaders") << "Loading sky " << name << LL_ENDL; - -	LLSD params_data; -	LLPointer<LLSDParser> parser = new LLSDXMLParser(); -	parser->parse(xml_file, params_data, LLSDSerialize::SIZE_UNLIMITED); -	xml_file.close(); - -	LLWLParamKey key(name, LLEnvKey::SCOPE_LOCAL); -	if (hasParamSet(key)) -	{ -		setParamSet(key, params_data); -	} -	else -	{ -		addParamSet(key, params_data); -	} - -	return true; -} - -void LLWLParamManager::savePreset(LLWLParamKey key) -{ -	llassert(key.scope == LLEnvKey::SCOPE_LOCAL && !key.name.empty()); - -	// make an empty llsd -	LLSD paramsData(LLSD::emptyMap()); -	std::string pathName(getUserDir() + escapeString(key.name) + ".xml"); - -	// fill it with LLSD windlight params -	paramsData = mParamList[key].getAll(); - -	// write to file -	llofstream presetsXML(pathName.c_str()); -	LLPointer<LLSDFormatter> formatter = new LLSDXMLFormatter(); -	formatter->format(paramsData, presetsXML, LLSDFormatter::OPTIONS_PRETTY); -	presetsXML.close(); - -	propagateParameters(); -} - -void LLWLParamManager::updateShaderUniforms(LLGLSLShader * shader) -{ -	if (gPipeline.canUseWindLightShaders()) -	{ -        //LLEnvironment::instance().updateGLVariablesForSettings(shader, LLEnvironment::instance().getCurrentSky()); -		mCurParams.update(shader); -	} - -	if (shader->mShaderGroup == LLGLSLShader::SG_DEFAULT) -	{ -		shader->uniform4fv(LLShaderMgr::LIGHTNORM, 1, mRotatedLightDir.mV); -		shader->uniform3fv(LLShaderMgr::WL_CAMPOSLOCAL, 1, LLViewerCamera::getInstance()->getOrigin().mV); -	}  - -	else if (shader->mShaderGroup == LLGLSLShader::SG_SKY) -	{ -		shader->uniform4fv(LLViewerShaderMgr::LIGHTNORM, 1, mClampedLightDir.mV); -	} - -	shader->uniform1f(LLShaderMgr::SCENE_LIGHT_STRENGTH, mSceneLightStrength); -	 -} - -static LLTrace::BlockTimerStatHandle FTM_UPDATE_WLPARAM("Update Windlight Params"); - -void LLWLParamManager::propagateParameters(void) -{ -	LL_RECORD_BLOCK_TIME(FTM_UPDATE_WLPARAM); -	 -	LLVector4 sunDir; -	LLVector4 moonDir; - -	// set the sun direction from SunAngle and EastAngle -	F32 sinTheta = sin(mCurParams.getEastAngle()); -	F32 cosTheta = cos(mCurParams.getEastAngle()); - -	F32 sinPhi = sin(mCurParams.getSunAngle()); -	F32 cosPhi = cos(mCurParams.getSunAngle()); - -	sunDir.mV[0] = -sinTheta * cosPhi; -	sunDir.mV[1] = sinPhi; -	sunDir.mV[2] = cosTheta * cosPhi; -	sunDir.mV[3] = 0; - -	moonDir = -sunDir; - -	// is the normal from the sun or the moon -	if(sunDir.mV[1] >= 0) -	{ -		mLightDir = sunDir; -	} -	else if(sunDir.mV[1] < 0 && sunDir.mV[1] > LLSky::NIGHTTIME_ELEVATION_COS) -	{ -		// clamp v1 to 0 so sun never points up and causes weirdness on some machines -		LLVector3 vec(sunDir.mV[0], sunDir.mV[1], sunDir.mV[2]); -		vec.mV[1] = 0; -		vec.normVec(); -		mLightDir = LLVector4(vec, 0.f); -	} -	else -	{ -		mLightDir = moonDir; -	} - -	// calculate the clamp lightnorm for sky (to prevent ugly banding in sky -	// when haze goes below the horizon -	mClampedLightDir = sunDir; - -	if (mClampedLightDir.mV[1] < -0.1f) -	{ -		mClampedLightDir.mV[1] = -0.1f; -	} - -	mCurParams.set("lightnorm", mLightDir); - -	// bind the variables for all shaders only if we're using WindLight -	LLViewerShaderMgr::shader_iter shaders_iter, end_shaders; -	end_shaders = LLViewerShaderMgr::instance()->endShaders(); -	for(shaders_iter = LLViewerShaderMgr::instance()->beginShaders(); shaders_iter != end_shaders; ++shaders_iter)  -	{ -		if (shaders_iter->mProgramObject != 0 -			&& (gPipeline.canUseWindLightShaders() -				|| shaders_iter->mShaderGroup == LLGLSLShader::SG_WATER)) -		{ -			shaders_iter->mUniformsDirty = TRUE; -		} -	} - -	// get the cfr version of the sun's direction -	LLVector3 cfrSunDir(sunDir.mV[2], sunDir.mV[0], sunDir.mV[1]); - -	// set direction and don't allow overriding -	gSky.setSunDirection(cfrSunDir, LLVector3(0,0,0)); -	gSky.setOverrideSun(TRUE); -} - -void LLWLParamManager::update(LLViewerCamera * cam) -{ -	LL_RECORD_BLOCK_TIME(FTM_UPDATE_WLPARAM); -	 -	// update clouds, sun, and general -	mCurParams.updateCloudScrolling(); -	 -	// update only if running -	if(mAnimator.getIsRunning())  -	{ -		mAnimator.update(mCurParams); -	} - -	// update the shaders and the menu -	propagateParameters(); -	 -	F32 camYaw = cam->getYaw(); - -	stop_glerror(); - -	// *TODO: potential optimization - this block may only need to be -	// executed some of the time.  For example for water shaders only. -	{ -		F32 camYawDelta = mSunDeltaYaw * DEG_TO_RAD; -		 -		LLVector3 lightNorm3(mLightDir); -		lightNorm3 *= LLQuaternion(-(camYaw + camYawDelta), LLVector3(0.f, 1.f, 0.f)); -		mRotatedLightDir = LLVector4(lightNorm3, 0.f); - -		LLViewerShaderMgr::shader_iter shaders_iter, end_shaders; -		end_shaders = LLViewerShaderMgr::instance()->endShaders(); -		for(shaders_iter = LLViewerShaderMgr::instance()->beginShaders(); shaders_iter != end_shaders; ++shaders_iter) -		{ -			if (shaders_iter->mProgramObject != 0 -				&& (gPipeline.canUseWindLightShaders() -				|| shaders_iter->mShaderGroup == LLGLSLShader::SG_WATER)) -			{ -				shaders_iter->mUniformsDirty = TRUE; -			} -		} -	} -} - -bool LLWLParamManager::applyDayCycleParams(const LLSD& params, LLEnvKey::EScope scope, F32 time) -{ -	mDay.loadDayCycle(params, scope); -	resetAnimator(time, true); // set to specified time and start animator -	return true; -} - -void LLWLParamManager::setDefaultDay() -{ -	mDay.loadDayCycleFromFile("Default.xml"); -} - -bool LLWLParamManager::applySkyParams(const LLSD& params) -{ -	mAnimator.deactivate(); -	mCurParams.setAll(params); -	return true; -} - -void LLWLParamManager::setDefaultSky() -{ -	getParamSet(LLWLParamKey("Default", LLWLParamKey::SCOPE_LOCAL), mCurParams); -} - - -void LLWLParamManager::resetAnimator(F32 curTime, bool run) -{ -	mAnimator.setTrack(mDay.mTimeMap, mDay.mDayRate,  -		curTime, run); - -	return; -} - -bool LLWLParamManager::addParamSet(const LLWLParamKey& key, LLWLParamSet& param) -{ -	// add a new one if not one there already -	std::map<LLWLParamKey, LLWLParamSet>::iterator mIt = mParamList.find(key); -	if(mIt == mParamList.end())  -	{	 -		llassert(!key.name.empty()); -		// *TODO: validate params -		mParamList[key] = param; -		mPresetListChangeSignal(); -		return true; -	} - -	return false; -} - -BOOL LLWLParamManager::addParamSet(const LLWLParamKey& key, LLSD const & param) -{ -	LLWLParamSet param_set; -	param_set.setAll(param); -	return addParamSet(key, param_set); -} - -bool LLWLParamManager::getParamSet(const LLWLParamKey& key, LLWLParamSet& param) -{ -	// find it and set it -	std::map<LLWLParamKey, LLWLParamSet>::iterator mIt = mParamList.find(key); -	if(mIt != mParamList.end())  -	{ -		param = mParamList[key]; -		param.mName = key.name; -		return true; -	} - -	return false; -} - -bool LLWLParamManager::hasParamSet(const LLWLParamKey& key) -{ -	LLWLParamSet dummy; -	return getParamSet(key, dummy); -} - -bool LLWLParamManager::setParamSet(const LLWLParamKey& key, LLWLParamSet& param) -{ -	llassert(!key.name.empty()); -	// *TODO: validate params -	mParamList[key] = param; - -	return true; -} - -bool LLWLParamManager::setParamSet(const LLWLParamKey& key, const LLSD & param) -{ -	llassert(!key.name.empty()); -	// *TODO: validate params - -	// quick, non robust (we won't be working with files, but assets) check -	// this might not actually be true anymore.... -	if(!param.isMap())  -	{ -		return false; -	} -	 -	LLWLParamSet param_set; -	param_set.setAll(param); -	return setParamSet(key, param_set); -} - -void LLWLParamManager::removeParamSet(const LLWLParamKey& key, bool delete_from_disk) -{ -	// *NOTE: Removing a sky preset invalidates day cycles that refer to it. - -	if (key.scope == LLEnvKey::SCOPE_REGION) -	{ -		LL_WARNS() << "Removing region skies not supported" << LL_ENDL; -		llassert(key.scope == LLEnvKey::SCOPE_LOCAL); -		return; -	} - -	// remove from param list -	std::map<LLWLParamKey, LLWLParamSet>::iterator it = mParamList.find(key); -	if (it == mParamList.end()) -	{ -		LL_WARNS("WindLight") << "No sky preset named " << key.name << LL_ENDL; -		return; -	} - -	mParamList.erase(it); -	mDay.removeReferencesTo(key); - -	// remove from file system if requested -	if (delete_from_disk) -	{ -		std::string path_name(getUserDir()); -		std::string escaped_name = escapeString(key.name); - -		if(gDirUtilp->deleteFilesInDir(path_name, escaped_name + ".xml") < 1) -		{ -			LL_WARNS("WindLight") << "Error removing sky preset " << key.name << " from disk" << LL_ENDL; -		} -	} - -	// signal interested parties -	mPresetListChangeSignal(); -} - -bool LLWLParamManager::isSystemPreset(const std::string& preset_name) const -{ -	// *TODO: file system access is excessive here. -	return gDirUtilp->fileExists(getSysDir() + escapeString(preset_name) + ".xml"); -} - -void LLWLParamManager::getPresetNames(preset_name_list_t& region, preset_name_list_t& user, preset_name_list_t& sys) const -{ -	region.clear(); -	user.clear(); -	sys.clear(); - -	for (std::map<LLWLParamKey, LLWLParamSet>::const_iterator it = mParamList.begin(); it != mParamList.end(); it++) -	{ -		const LLWLParamKey& key = it->first; -		const std::string& name = key.name; - -		if (key.scope == LLEnvKey::SCOPE_REGION) -		{ -			region.push_back(name); -		} -		else -		{ -			if (isSystemPreset(name)) -			{ -				sys.push_back(name); -			} -			else -			{ -				user.push_back(name); -			} -		} -	} -} - -void LLWLParamManager::getUserPresetNames(preset_name_list_t& user) const -{ -	preset_name_list_t region, sys; // unused -	getPresetNames(region, user, sys); -} - -void LLWLParamManager::getPresetKeys(preset_key_list_t& keys) const -{ -	keys.clear(); - -	for (std::map<LLWLParamKey, LLWLParamSet>::const_iterator it = mParamList.begin(); it != mParamList.end(); it++) -	{ -		keys.push_back(it->first); -	} -} - -boost::signals2::connection LLWLParamManager::setPresetListChangeCallback(const preset_list_signal_t::slot_type& cb) -{ -	return mPresetListChangeSignal.connect(cb); -} - -// virtual static -void LLWLParamManager::initSingleton() -{ -	LL_DEBUGS("Windlight") << "Initializing sky" << LL_ENDL; - -	loadAllPresets(); - -	// but use linden time sets it to what the estate is -	mAnimator.setTimeType(LLWLAnimator::TIME_LINDEN); -} - -// static -std::string LLWLParamManager::getSysDir() -{ -	return gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/skies", ""); -} - -// static -std::string LLWLParamManager::getUserDir() -{ -	return gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS , "windlight/skies", ""); -} - -// static -std::string LLWLParamManager::escapeString(const std::string& str) -{ -	// Don't use LLURI::escape() because it doesn't encode '-' characters -	// which may break handling of some system presets like "A-12AM". -	char* curl_str = curl_escape(str.c_str(), str.size()); -	std::string escaped_str(curl_str); -	curl_free(curl_str); - -	return escaped_str; -} - diff --git a/indra/newview/llwlparammanager.h b/indra/newview/llwlparammanager.h deleted file mode 100644 index d475a26da6..0000000000 --- a/indra/newview/llwlparammanager.h +++ /dev/null @@ -1,329 +0,0 @@ -/** - * @file llwlparammanager.h - * @brief Implementation for the LLWLParamManager class. - * - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#ifndef LL_WLPARAMMANAGER_H -#define LL_WLPARAMMANAGER_H - -#include <list> -#include <map> -#include "llwlparamset.h" -#include "llwlanimator.h" -#include "llwldaycycle.h" -#include "llviewercamera.h" -#include "lltrans.h" -#include "llenvmanager.h" - -class LLGLSLShader; -  -#if 0 -// color control -struct WLColorControl { -	 -	F32 r, g, b, i;				/// the values -	std::string mName;			/// name to use to dereference params -	std::string mSliderName;	/// name of the slider in menu -	bool hasSliderName;			/// only set slider name for true color types -	bool isSunOrAmbientColor;			/// flag for if it's the sun or ambient color controller -	bool isBlueHorizonOrDensity;		/// flag for if it's the Blue Horizon or Density color controller - -	inline WLColorControl(F32 red, F32 green, F32 blue, F32 intensity, -						  const std::string& n, const std::string& sliderName = LLStringUtil::null) -		: r(red), g(green), b(blue), i(intensity), mName(n), mSliderName(sliderName) -	{ -		// if there's a slider name, say we have one -		hasSliderName = false; -		if (mSliderName != "") { -			hasSliderName = true; -		} - -		// if it's the sun controller -		isSunOrAmbientColor = false; -		if (mSliderName == "WLSunlight" || mSliderName == "WLAmbient") { -			isSunOrAmbientColor = true; -		} - -		isBlueHorizonOrDensity = false; -		if (mSliderName == "WLBlueHorizon" || mSliderName == "WLBlueDensity") { -			isBlueHorizonOrDensity = true; -		} -	} - -	inline WLColorControl & operator = (LLVector4 const & val) { -		r = val.mV[0]; -		g = val.mV[1]; -		b = val.mV[2]; -		i = val.mV[3]; -		return *this; -	} - -	inline operator LLVector4 (void) const { -		return LLVector4(r, g, b, i); -	} - -	inline operator LLVector3 (void) const { -		return LLVector3(r, g, b); -	} - -	inline void update(LLWLParamSet & params) const { -		params.set(mName, r, g, b, i); -	} -}; - -// float slider control -struct WLFloatControl { -	F32 x; -	std::string mName; -	F32 mult; - -	inline WLFloatControl(F32 val, const std::string& n, F32 m=1.0f) -		: x(val), mName(n), mult(m) -	{ -	} - -	inline WLFloatControl & operator = (F32 val) { -		x = val; -		return *this; -	} - -	inline operator F32 (void) const { -		return x; -	} - -	inline void update(LLWLParamSet & params) const { -		params.set(mName, x); -	} -}; - -#endif - -/// WindLight parameter manager class - what controls all the wind light shaders -class LLWLParamManager : public LLSingleton<LLWLParamManager> -{ -	LLSINGLETON(LLWLParamManager); -	~LLWLParamManager(); -	LOG_CLASS(LLWLParamManager); - -public: -	typedef std::list<std::string> preset_name_list_t; -	typedef std::list<LLWLParamKey> preset_key_list_t; -	typedef boost::signals2::signal<void()> preset_list_signal_t; - -	/// save the parameter presets to file -	void savePreset(const LLWLParamKey key); - -	/// Set shader uniforms dirty, so they'll update automatically. -	void propagateParameters(void); -	 -	/// Update shader uniforms that have changed. -	void updateShaderUniforms(LLGLSLShader * shader); - -	/// setup the animator to run -	void resetAnimator(F32 curTime, bool run); - -	/// update information camera dependent parameters -	void update(LLViewerCamera * cam); - -	/// apply specified day cycle, setting time to noon by default -	bool applyDayCycleParams(const LLSD& params, LLEnvKey::EScope scope, F32 time = 0.5); - -	/// Apply Default.xml map -	void setDefaultDay(); - -	/// apply specified fixed sky params -	bool applySkyParams(const LLSD& params); - -	void setDefaultSky(); - -	// get where the light is pointing -	inline LLVector4 getLightDir(void) const; - -	// get where the light is pointing -	inline LLVector4 getClampedLightDir(void) const; - -	// get where the light is pointing -	inline LLVector4 getRotatedLightDir(void) const; -	 -	/// get the dome's offset -	inline F32 getDomeOffset(void) const; - -	/// get the radius of the dome -	inline F32 getDomeRadius(void) const; -	 -	/// add a param set (preset) to the list -	bool addParamSet(const LLWLParamKey& key, LLWLParamSet& param); - -	/// add a param set (preset) to the list -	BOOL addParamSet(const LLWLParamKey& key, LLSD const & param); - -	/// get a param set (preset) from the list -	bool getParamSet(const LLWLParamKey& key, LLWLParamSet& param); - -	/// check whether the preset is in the list -	bool hasParamSet(const LLWLParamKey& key); - -	/// set the param in the list with a new param -	bool setParamSet(const LLWLParamKey& key, LLWLParamSet& param); -	 -	/// set the param in the list with a new param -	bool setParamSet(const LLWLParamKey& key, LLSD const & param); - -	/// gets rid of a parameter and any references to it -	/// ignores "delete_from_disk" if the scope is not local -	void removeParamSet(const LLWLParamKey& key, bool delete_from_disk); - -	/// clear parameter mapping of a given scope -	void clearParamSetsOfScope(LLEnvKey::EScope scope); - -	/// @return true if the preset comes out of the box -	bool isSystemPreset(const std::string& preset_name) const; - -	/// @return user and system preset names as a single list -	void getPresetNames(preset_name_list_t& region, preset_name_list_t& user, preset_name_list_t& sys) const; - -	/// @return user preset names -	void getUserPresetNames(preset_name_list_t& user) const; - -	/// @return keys of all known presets -	void getPresetKeys(preset_key_list_t& keys) const; - -	/// Emitted when a preset gets added or deleted. -	boost::signals2::connection setPresetListChangeCallback(const preset_list_signal_t::slot_type& cb); - -	/// add all skies in LLSD using the given scope -	void addAllSkies(LLEnvKey::EScope scope, const LLSD& preset_map); - -	/// refresh region-scope presets -	void refreshRegionPresets(const LLSD& region_sky_presets); - -	// returns all skies referenced by the current day cycle (in mDay), with their final names -	// side effect: applies changes to all internal structures!  (trashes all unreferenced skies in scope, keys in day cycle rescoped to scope, etc.) -	std::map<LLWLParamKey, LLWLParamSet> finalizeFromDayCycle(LLWLParamKey::EScope scope); - -	// returns all skies in map (intended to be called with output from a finalize) -	static LLSD createSkyMap(std::map<LLWLParamKey, LLWLParamSet> map); - -	/// escape string in a way different from LLURI::escape() -	static std::string escapeString(const std::string& str); - -	// helper variables -	LLWLAnimator mAnimator; - -	/// actual direction of the sun -	LLVector4 mLightDir; - -	/// light norm adjusted so haze works correctly -	LLVector4 mRotatedLightDir; - -	/// clamped light norm for shaders that -	/// are adversely affected when the sun goes below the -	/// horizon -	LLVector4 mClampedLightDir; - -	// list of params and how they're cycled for days -	LLWLDayCycle mDay; - -	LLWLParamSet mCurParams; - -	/// Sun Delta Terrain tweak variables. -	F32 mSunDeltaYaw; -#if 0 -	WLFloatControl mWLGamma; -#endif -	F32 mSceneLightStrength; -	 -#if 0 -	/// Atmospherics -	WLColorControl mBlueHorizon; -	WLFloatControl mHazeDensity; -	WLColorControl mBlueDensity; -	WLFloatControl mDensityMult; -	WLFloatControl mHazeHorizon; -	WLFloatControl mMaxAlt; - -	/// Lighting -	WLColorControl mLightnorm; -	WLColorControl mSunlight; -	WLColorControl mAmbient; -	WLColorControl mGlow; - -	/// Clouds -	WLColorControl mCloudColor; -	WLColorControl mCloudMain; -	WLFloatControl mCloudCoverage; -	WLColorControl mCloudDetail; -	WLFloatControl mDistanceMult; -	WLFloatControl mCloudScale; -#endif -	/// sky dome -	F32 mDomeOffset; -	F32 mDomeRadius; -	 - -private: - -	friend class LLWLAnimator; - -	void loadAllPresets(); -	void loadPresetsFromDir(const std::string& dir); -	bool loadPreset(const std::string& path); - -	static std::string getSysDir(); -	static std::string getUserDir(); - -	/*virtual*/ void initSingleton(); -	// list of all the parameters, listed by name -	std::map<LLWLParamKey, LLWLParamSet> mParamList; - -	preset_list_signal_t mPresetListChangeSignal; -}; - -inline F32 LLWLParamManager::getDomeOffset(void) const -{ -	return mDomeOffset; -} - -inline F32 LLWLParamManager::getDomeRadius(void) const -{ -	return mDomeRadius; -} - -inline LLVector4 LLWLParamManager::getLightDir(void) const -{ -	return mLightDir; -} - -inline LLVector4 LLWLParamManager::getClampedLightDir(void) const -{ -	return mClampedLightDir; -} - -inline LLVector4 LLWLParamManager::getRotatedLightDir(void) const -{ -	return mRotatedLightDir; -} - -#endif - diff --git a/indra/newview/llwlparamset.cpp b/indra/newview/llwlparamset.cpp deleted file mode 100644 index a2ff2c0c95..0000000000 --- a/indra/newview/llwlparamset.cpp +++ /dev/null @@ -1,426 +0,0 @@ -/** - * @file llwlparamset.cpp - * @brief Implementation for the LLWLParamSet class. - * - * $LicenseInfo:firstyear=2005&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llwlparamset.h" -#include "llwlanimator.h" - -#include "llwlparammanager.h" -#include "llglslshader.h" -#include "lluictrlfactory.h" -#include "llsliderctrl.h" -#include "pipeline.h" - -#include <llgl.h> - -#include <sstream> - -static LLStaticHashedString sStarBrightness("star_brightness"); -static LLStaticHashedString sPresetNum("preset_num"); -static LLStaticHashedString sSunAngle("sun_angle"); -static LLStaticHashedString sEastAngle("east_angle"); -static LLStaticHashedString sEnableCloudScroll("enable_cloud_scroll"); -static LLStaticHashedString sCloudScrollRate("cloud_scroll_rate"); -static LLStaticHashedString sLightNorm("lightnorm"); -static LLStaticHashedString sCloudDensity("cloud_pos_density1"); -static LLStaticHashedString sCloudScale("cloud_scale"); -static LLStaticHashedString sCloudShadow("cloud_shadow"); -static LLStaticHashedString sDensityMultiplier("density_multiplier"); -static LLStaticHashedString sDistanceMultiplier("distance_multiplier"); -static LLStaticHashedString sHazeDensity("haze_density"); -static LLStaticHashedString sHazeHorizon("haze_horizon"); -static LLStaticHashedString sMaxY("max_y"); - -LLWLParamSet::LLWLParamSet(void) : -	mName("Unnamed Preset"), -	mCloudScrollXOffset(0.f), mCloudScrollYOffset(0.f)	 -{} - -static LLTrace::BlockTimerStatHandle FTM_WL_PARAM_UPDATE("WL Param Update"); - -void LLWLParamSet::update(LLGLSLShader * shader) const  -{	 -	LL_RECORD_BLOCK_TIME(FTM_WL_PARAM_UPDATE); -    //_WARNS("RIDER") << "----------------------------------------------------------------" << LL_ENDL; - -	LLSD::map_const_iterator i = mParamValues.beginMap(); -	std::vector<LLStaticHashedString>::const_iterator n = mParamHashedNames.begin(); -	for(;(i != mParamValues.endMap()) && (n != mParamHashedNames.end());++i, n++) -	{ -		const LLStaticHashedString& param = *n; -		 -		// check that our pre-hashed names are still tracking the mParamValues map correctly -		// -		llassert(param.String() == i->first); - -		if (param == sStarBrightness || param == sPresetNum || param == sSunAngle || -			param == sEastAngle || param == sEnableCloudScroll || -			param == sCloudScrollRate || param == sLightNorm )  -		{ -			continue; -		} -		 -		if (param == sCloudDensity) -		{ -			LLVector4 val; -			val.mV[0] = F32(i->second[0].asReal()) + mCloudScrollXOffset; -			val.mV[1] = F32(i->second[1].asReal()) + mCloudScrollYOffset; -			val.mV[2] = (F32) i->second[2].asReal(); -			val.mV[3] = (F32) i->second[3].asReal(); - -			stop_glerror(); -            //_WARNS("RIDER") << "pushing '" << param.String() << "' as " << val << LL_ENDL; -            shader->uniform4fv(param, 1, val.mV); -			stop_glerror(); -		} -		else if (param == sCloudScale || param == sCloudShadow || -				 param == sDensityMultiplier || param == sDistanceMultiplier || -				 param == sHazeDensity || param == sHazeHorizon || -				 param == sMaxY ) -		{ -			F32 val = (F32) i->second[0].asReal(); - -			stop_glerror(); -            //_WARNS("RIDER") << "pushing '" << param.String() << "' as " << val << LL_ENDL; -            shader->uniform1f(param, val); -			stop_glerror(); -		} -		else // param is the uniform name -		{ -			// handle all the different cases -			if (i->second.isArray() && i->second.size() == 4) -			{ -				LLVector4 val; - -				val.mV[0] = (F32) i->second[0].asReal(); -				val.mV[1] = (F32) i->second[1].asReal(); -				val.mV[2] = (F32) i->second[2].asReal(); -				val.mV[3] = (F32) i->second[3].asReal();															 - -				stop_glerror(); -                //_WARNS("RIDER") << "pushing '" << param.String() << "' as " << val << LL_ENDL; -                shader->uniform4fv(param, 1, val.mV); -				stop_glerror(); -			}  -			else if (i->second.isReal()) -			{ -				F32 val = (F32) i->second.asReal(); - -				stop_glerror(); -                //_WARNS("RIDER") << "pushing '" << param.String() << "' as " << val << LL_ENDL; -                shader->uniform1f(param, val); -				stop_glerror(); -			}  -			else if (i->second.isInteger()) -			{ -				S32 val = (S32) i->second.asInteger(); - -				stop_glerror(); -                //_WARNS("RIDER") << "pushing '" << param.String() << "' as " << val << LL_ENDL; -                shader->uniform1i(param, val); -				stop_glerror(); -			}  -			else if (i->second.isBoolean()) -			{ -				S32 val = (i->second.asBoolean() ? 1 : 0); - -				stop_glerror(); -                //_WARNS("RIDER") << "pushing '" << param.String() << "' as " << val << LL_ENDL; -                shader->uniform1i(param, val); -				stop_glerror(); -			} -		} -	} -	 -	if (LLPipeline::sRenderDeferred && !LLPipeline::sReflectionRender && !LLPipeline::sUnderWaterRender) -	{ -		shader->uniform1f(LLShaderMgr::GLOBAL_GAMMA, 2.2); -	} else { -		shader->uniform1f(LLShaderMgr::GLOBAL_GAMMA, 1.0); -	} -} - -void LLWLParamSet::set(const std::string& paramName, float x)  -{	 -	// handle case where no array -	if(mParamValues[paramName].isReal())  -	{ -		mParamValues[paramName] = x; -	}  -	 -	// handle array -	else if(mParamValues[paramName].isArray() && -			mParamValues[paramName][0].isReal()) -	{ -		mParamValues[paramName][0] = x; -	} -} - -void LLWLParamSet::set(const std::string& paramName, float x, float y) -{ -	mParamValues[paramName][0] = x; -	mParamValues[paramName][1] = y; -} - -void LLWLParamSet::set(const std::string& paramName, float x, float y, float z)  -{ -	mParamValues[paramName][0] = x; -	mParamValues[paramName][1] = y; -	mParamValues[paramName][2] = z; -} - -void LLWLParamSet::set(const std::string& paramName, float x, float y, float z, float w)  -{ -	mParamValues[paramName][0] = x; -	mParamValues[paramName][1] = y; -	mParamValues[paramName][2] = z; -	mParamValues[paramName][3] = w; -} - -void LLWLParamSet::set(const std::string& paramName, const float * val)  -{ -	mParamValues[paramName][0] = val[0]; -	mParamValues[paramName][1] = val[1]; -	mParamValues[paramName][2] = val[2]; -	mParamValues[paramName][3] = val[3]; -} - -void LLWLParamSet::set(const std::string& paramName, const LLVector4 & val)  -{ -	mParamValues[paramName][0] = val.mV[0]; -	mParamValues[paramName][1] = val.mV[1]; -	mParamValues[paramName][2] = val.mV[2]; -	mParamValues[paramName][3] = val.mV[3]; -} - -void LLWLParamSet::set(const std::string& paramName, const LLColor4 & val)  -{ -	mParamValues[paramName][0] = val.mV[0]; -	mParamValues[paramName][1] = val.mV[1]; -	mParamValues[paramName][2] = val.mV[2]; -	mParamValues[paramName][3] = val.mV[3]; -} - -LLVector4 LLWLParamSet::getVector(const std::string& paramName, bool& error)  -{ -	// test to see if right type -	LLSD cur_val = mParamValues.get(paramName); -	if (!cur_val.isArray())  -	{ -		error = true; -		return LLVector4(0,0,0,0); -	} -	 -	LLVector4 val; -	val.mV[0] = (F32) cur_val[0].asReal(); -	val.mV[1] = (F32) cur_val[1].asReal(); -	val.mV[2] = (F32) cur_val[2].asReal(); -	val.mV[3] = (F32) cur_val[3].asReal(); -	 -	error = false; -	return val; -} - -F32 LLWLParamSet::getFloat(const std::string& paramName, bool& error)  -{ -	// test to see if right type -	LLSD cur_val = mParamValues.get(paramName); -	if (cur_val.isArray() && cur_val.size() != 0)  -	{ -		error = false; -		return (F32) cur_val[0].asReal();	 -	} -	 -	if(cur_val.isReal()) -	{ -		error = false; -		return (F32) cur_val.asReal(); -	} -	 -	error = true; -	return 0; -} - -void LLWLParamSet::setSunAngle(float val)  -{ -	// keep range 0 - 2pi -	if(val > F_TWO_PI || val < 0) -	{ -		F32 num = val / F_TWO_PI; -		num -= floor(num); -		val = F_TWO_PI * num; -	} - -	mParamValues["sun_angle"] = val; -} - - -void LLWLParamSet::setEastAngle(float val)  -{ -	// keep range 0 - 2pi -	if(val > F_TWO_PI || val < 0) -	{ -		F32 num = val / F_TWO_PI; -		num -= floor(num); -		val = F_TWO_PI * num; -	} - -	mParamValues["east_angle"] = val; -} - -void LLWLParamSet::mix(LLWLParamSet& src, LLWLParamSet& dest, F32 weight) -{ -	// set up the iterators - -	// keep cloud positions and coverage the same -	/// TODO masking will do this later -	F32 cloudPos1X = (F32) mParamValues["cloud_pos_density1"][0].asReal(); -	F32 cloudPos1Y = (F32) mParamValues["cloud_pos_density1"][1].asReal(); -	F32 cloudPos2X = (F32) mParamValues["cloud_pos_density2"][0].asReal(); -	F32 cloudPos2Y = (F32) mParamValues["cloud_pos_density2"][1].asReal(); -	F32 cloudCover = (F32) mParamValues["cloud_shadow"][0].asReal(); - -	LLSD srcVal; -	LLSD destVal; - -	// Iterate through values -	for(LLSD::map_iterator iter = mParamValues.beginMap(); iter != mParamValues.endMap(); ++iter) -	{ -		// If param exists in both src and dest, set the holder variables, otherwise skip -		if(src.mParamValues.has(iter->first) && dest.mParamValues.has(iter->first)) -		{ -			srcVal = src.mParamValues[iter->first]; -			destVal = dest.mParamValues[iter->first]; -		} -		else -		{ -			continue; -		} -		 -		if(iter->second.isReal())									// If it's a real, interpolate directly -		{ -			iter->second = srcVal.asReal() + ((destVal.asReal() - srcVal.asReal()) * weight); -		} -		else if(iter->second.isArray() && iter->second[0].isReal()	// If it's an array of reals, loop through the reals and interpolate on those -				&& iter->second.size() == srcVal.size() && iter->second.size() == destVal.size()) -		{ -			// Actually do interpolation: old value + (difference in values * factor) -			for(int i=0; i < iter->second.size(); ++i)  -			{ -				// iter->second[i] = (1.f-weight)*(F32)srcVal[i].asReal() + weight*(F32)destVal[i].asReal();	// old way of doing it -- equivalent but one more operation -				iter->second[i] = srcVal[i].asReal() + ((destVal[i].asReal() - srcVal[i].asReal()) * weight); -			} -		} -		else														// Else, skip -		{ -			continue; -		}		 -	} - -	// now mix the extra parameters -	setStarBrightness((1 - weight) * (F32) src.getStarBrightness() -		+ weight * (F32) dest.getStarBrightness()); - -	llassert(src.getSunAngle() >= - F_PI &&  -					src.getSunAngle() <= 3 * F_PI); -	llassert(dest.getSunAngle() >= - F_PI &&  -					dest.getSunAngle() <= 3 * F_PI); -	llassert(src.getEastAngle() >= 0 &&  -					src.getEastAngle() <= 4 * F_PI); -	llassert(dest.getEastAngle() >= 0 &&  -					dest.getEastAngle() <= 4 * F_PI); - -	// sun angle and east angle require some handling to make sure -	// they go in circles.  Yes quaternions would work better. -	F32 srcSunAngle = src.getSunAngle(); -	F32 destSunAngle = dest.getSunAngle(); -	F32 srcEastAngle = src.getEastAngle(); -	F32 destEastAngle = dest.getEastAngle(); -	 -	if(fabsf(srcSunAngle - destSunAngle) > F_PI)  -	{ -		if(srcSunAngle > destSunAngle)  -		{ -			destSunAngle += 2 * F_PI; -		}  -		else  -		{ -			srcSunAngle += 2 * F_PI; -		} -	} - -	if(fabsf(srcEastAngle - destEastAngle) > F_PI)  -	{ -		if(srcEastAngle > destEastAngle)  -		{ -			destEastAngle += 2 * F_PI; -		}  -		else  -		{ -			srcEastAngle += 2 * F_PI; -		} -	} - -	setSunAngle((1 - weight) * srcSunAngle + weight * destSunAngle); -	setEastAngle((1 - weight) * srcEastAngle + weight * destEastAngle); -	 -	// now setup the sun properly - -	// reset those cloud positions -	mParamValues["cloud_pos_density1"][0] = cloudPos1X; -	mParamValues["cloud_pos_density1"][1] = cloudPos1Y; -	mParamValues["cloud_pos_density2"][0] = cloudPos2X; -	mParamValues["cloud_pos_density2"][1] = cloudPos2Y; -	mParamValues["cloud_shadow"][0] = cloudCover; -} - -void LLWLParamSet::updateCloudScrolling(void)  -{ -	static LLTimer s_cloud_timer; - -	F64 delta_t = s_cloud_timer.getElapsedTimeAndResetF64(); - -	if(getEnableCloudScrollX()) -	{ -		mCloudScrollXOffset += F32(delta_t * (getCloudScrollX() - 10.f) / 100.f); -	} -	if(getEnableCloudScrollY()) -	{ -		mCloudScrollYOffset += F32(delta_t * (getCloudScrollY() - 10.f) / 100.f); -	} -} - -void LLWLParamSet::updateHashedNames() -{ -	mParamHashedNames.clear(); -	// Iterate through values -	for(LLSD::map_iterator iter = mParamValues.beginMap(); iter != mParamValues.endMap(); ++iter) -	{ -		mParamHashedNames.push_back(LLStaticHashedString(iter->first)); -	} -} - diff --git a/indra/newview/llwlparamset.h b/indra/newview/llwlparamset.h deleted file mode 100644 index 6e5f1d3a4b..0000000000 --- a/indra/newview/llwlparamset.h +++ /dev/null @@ -1,246 +0,0 @@ -/** - * @file llwlparamset.h - * @brief Interface for the LLWLParamSet class. - * - * $LicenseInfo:firstyear=2005&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#ifndef LL_WLPARAM_SET_H -#define LL_WLPARAM_SET_H - -#include <string> -#include <map> -#include <vector> - -#include "v4math.h" -#include "v4color.h" -#include "llstaticstringtable.h" - -class LLWLParamSet; -class LLGLSLShader; - -/// A class representing a set of parameter values for the WindLight shaders. -class LLWLParamSet { - -	friend class LLWLParamManager; - -public: -	std::string mName;	 -	 -private: - -	LLSD mParamValues; -	std::vector<LLStaticHashedString> mParamHashedNames; - -	float mCloudScrollXOffset, mCloudScrollYOffset; - -	void updateHashedNames(); - -public: - -	LLWLParamSet(); - -	/// Update this set of shader uniforms from the parameter values. -	void update(LLGLSLShader * shader) const; - -	/// set the total llsd -	void setAll(const LLSD& val); -	 -	/// get the total llsd -	const LLSD& getAll();		 -	 - -	/// Set a float parameter. -	/// \param paramName	The name of the parameter to set. -	/// \param x			The float value to set. -	void set(const std::string& paramName, float x); - -	/// Set a float2 parameter. -	/// \param paramName	The name of the parameter to set. -	/// \param x			The x component's value to set. -	/// \param y			The y component's value to set. -	void set(const std::string& paramName, float x, float y); - -	/// Set a float3 parameter. -	/// \param paramName	The name of the parameter to set. -	/// \param x			The x component's value to set. -	/// \param y			The y component's value to set. -	/// \param z			The z component's value to set. -	void set(const std::string& paramName, float x, float y, float z); - -	/// Set a float4 parameter. -	/// \param paramName	The name of the parameter to set. -	/// \param x			The x component's value to set. -	/// \param y			The y component's value to set. -	/// \param z			The z component's value to set. -	/// \param w			The w component's value to set. -	void set(const std::string& paramName, float x, float y, float z, float w); - -	/// Set a float4 parameter. -	/// \param paramName	The name of the parameter to set. -	/// \param val			An array of the 4 float values to set the parameter to. -	void set(const std::string& paramName, const float * val); - -	/// Set a float4 parameter. -	/// \param paramName	The name of the parameter to set. -	/// \param val			A struct of the 4 float values to set the parameter to. -	void set(const std::string& paramName, const LLVector4 & val); - -	/// Set a float4 parameter. -	/// \param paramName	The name of the parameter to set. -	/// \param val			A struct of the 4 float values to set the parameter to. -	void set(const std::string& paramName, const LLColor4 & val); - -	/// Get a float4 parameter. -	/// \param paramName	The name of the parameter to set. -	/// \param error		A flag to set if it's not the proper return type -	LLVector4 getVector(const std::string& paramName, bool& error); - -	/// Get a float parameter -	/// \param paramName	The name of the parameter to set. -	/// \param error		A flag to set if it's not the proper return type	 -	F32 getFloat(const std::string& paramName, bool& error); -	 -	 -	// specific getters and setters -	 -	 -	/// set the star's brightness -	/// \param val brightness value -	void setStarBrightness(F32 val); -	 -	/// get the star brightness value; -	F32 getStarBrightness();	 -	 -	void setSunAngle(F32 val); -	F32 getSunAngle();	 -	 -	void setEastAngle(F32 val); -	F32 getEastAngle();	 -	 -							 -	 -	/// set the cloud scroll x enable value -	/// \param val scroll x value	 -	void setEnableCloudScrollX(bool val); - -	/// get the scroll x enable value;	 -	bool getEnableCloudScrollX(); -	 -	/// set the star's brightness -	/// \param val scroll y bool value		 -	void setEnableCloudScrollY(bool val);	 - -	/// get the scroll enable y value; -	bool getEnableCloudScrollY(); -	 -	/// set the cloud scroll x enable value -	/// \param val scroll x value	 -	void setCloudScrollX(F32 val); - -	/// get the scroll x enable value;	 -	F32 getCloudScrollX(); -	 -	/// set the star's brightness -	/// \param val scroll y bool value		 -	void setCloudScrollY(F32 val);	 - -	/// get the scroll enable y value; -	F32 getCloudScrollY();	 - -	/// interpolate two parameter sets -	/// \param src			The parameter set to start with -	/// \param dest			The parameter set to end with -	/// \param weight		The amount to interpolate -	void mix(LLWLParamSet& src, LLWLParamSet& dest,  -		F32 weight); - -	void updateCloudScrolling(void); -}; - -inline void LLWLParamSet::setAll(const LLSD& val) -{ -	if(val.isMap()) { -		mParamValues = val; -	} - -	updateHashedNames(); -} - -inline const LLSD& LLWLParamSet::getAll() -{ -	return mParamValues; -} - -inline void LLWLParamSet::setStarBrightness(float val) { -	mParamValues["star_brightness"] = val; -} - -inline F32 LLWLParamSet::getStarBrightness() { -	return (F32) mParamValues["star_brightness"].asReal(); -} - -inline F32 LLWLParamSet::getSunAngle() { -	return (F32) mParamValues["sun_angle"].asReal(); -} - -inline F32 LLWLParamSet::getEastAngle() { -	return (F32) mParamValues["east_angle"].asReal(); -} - - -inline void LLWLParamSet::setEnableCloudScrollX(bool val) { -	mParamValues["enable_cloud_scroll"][0] = val; -} - -inline bool LLWLParamSet::getEnableCloudScrollX() { -	return mParamValues["enable_cloud_scroll"][0].asBoolean(); -} - -inline void LLWLParamSet::setEnableCloudScrollY(bool val) { -	mParamValues["enable_cloud_scroll"][1] = val; -} - -inline bool LLWLParamSet::getEnableCloudScrollY() { -	return mParamValues["enable_cloud_scroll"][1].asBoolean(); -} - - -inline void LLWLParamSet::setCloudScrollX(F32 val) { -	mParamValues["cloud_scroll_rate"][0] = val; -} - -inline F32 LLWLParamSet::getCloudScrollX() { -	return (F32) mParamValues["cloud_scroll_rate"][0].asReal(); -} - -inline void LLWLParamSet::setCloudScrollY(F32 val) { -	mParamValues["cloud_scroll_rate"][1] = val; -} - -inline F32 LLWLParamSet::getCloudScrollY() { -	return (F32) mParamValues["cloud_scroll_rate"][1].asReal(); -} - - -#endif // LL_WLPARAM_SET_H - diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 55c0a092bf..108a8e3e62 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -100,7 +100,6 @@  #include "llviewerstats.h"  #include "llviewerjoystick.h"  #include "llviewerdisplay.h" -#include "llwaterparammanager.h"  #include "llspatialpartition.h"  #include "llmutelist.h"  #include "lltoolpie.h" | 
