summaryrefslogtreecommitdiff
path: root/indra/newview/llenvironment.h
diff options
context:
space:
mode:
authorRider Linden <rider@lindenlab.com>2017-11-03 11:28:08 -0700
committerRider Linden <rider@lindenlab.com>2017-11-03 11:28:08 -0700
commit61e6632a713041e8e4ccebf72874767238bf8a48 (patch)
treed1134597b1ac03812fccf0ef21171f9577bc522d /indra/newview/llenvironment.h
parent2161788711f6d89564afc933707b6a0b8c1b0562 (diff)
Initial day cycle impl.
Diffstat (limited to 'indra/newview/llenvironment.h')
-rw-r--r--indra/newview/llenvironment.h146
1 files changed, 99 insertions, 47 deletions
diff --git a/indra/newview/llenvironment.h b/indra/newview/llenvironment.h
index 493fff1769..a3fc9eef66 100644
--- a/indra/newview/llenvironment.h
+++ b/indra/newview/llenvironment.h
@@ -32,6 +32,7 @@
#include "llsettingssky.h"
#include "llsettingswater.h"
+#include "llsettingsdaycycle.h"
class LLViewerCamera;
class LLGLSLShader;
@@ -52,22 +53,22 @@ public:
public:
UserPrefs();
- bool getUseRegionSettings() const { return mUseRegionSettings; }
- bool getUseDayCycle() const { return mUseDayCycle; }
- bool getUseFixedSky() const { return !getUseDayCycle(); }
+ bool getUseRegionSettings() const { return mUseRegionSettings; }
+ bool getUseDayCycle() const { return mUseDayCycle; }
+ bool getUseFixedSky() const { return !getUseDayCycle(); }
- std::string getWaterPresetName() const { return mWaterPresetName; }
- std::string getSkyPresetName() const { return mSkyPresetName; }
- std::string getDayCycleName() const { return mDayCycleName; }
+ std::string getWaterPresetName() const { return mWaterPresetName; }
+ std::string getSkyPresetName() const { return mSkyPresetName; }
+ std::string getDayCycleName() const { return mDayCycleName; }
- void setUseRegionSettings(bool val);
- void setUseWaterPreset(const std::string& name);
- void setUseSkyPreset(const std::string& name);
- void setUseDayCycle(const std::string& name);
+ void setUseRegionSettings(bool val);
+ void setUseWaterPreset(const std::string& name);
+ void setUseSkyPreset(const std::string& name);
+ void setUseDayCycle(const std::string& name);
private:
- void load();
- void store();
+ void load();
+ void store();
bool mUseRegionSettings;
bool mUseDayCycle;
@@ -77,66 +78,104 @@ public:
std::string mDayCycleName;
};
+ typedef std::pair<std::string, LLUUID> name_id_t;
+ typedef std::vector<name_id_t> list_name_id_t;
+ typedef boost::signals2::signal<void()> change_signal_t;
+ typedef boost::signals2::connection connection_t;
+
virtual ~LLEnvironment();
- void loadPreferences();
- const UserPrefs & getPreferences() const { return mUserPrefs; }
+ void loadPreferences();
+ const UserPrefs & getPreferences() const { return mUserPrefs; }
+
+ LLSettingsSky::ptr_t getCurrentSky() const { return mSelectedSky; }
+ LLSettingsWater::ptr_t getCurrentWater() const { return mSelectedWater; }
- LLSettingsSky::ptr_t getCurrentSky() const { return mCurrentSky; }
- LLSettingsWater::ptr_t getCurrentWater() const { return mCurrentWater; }
+ void update(const LLViewerCamera * cam);
+ void updateGLVariablesForSettings(LLGLSLShader *shader, const LLSettingsBase::ptr_t &psetting);
+ void updateShaderUniforms(LLGLSLShader *shader);
+ void addSky(const LLSettingsSky::ptr_t &sky);
+ void addWater(const LLSettingsWater::ptr_t &sky);
+ void addDayCycle(const LLSettingsDayCycle::ptr_t &day);
- void update(const LLViewerCamera * cam);
+ void selectSky(const std::string &name);
+ void selectSky(const LLSettingsSky::ptr_t &sky = LLSettingsSky::ptr_t());
+ void applySky(const LLSettingsSky::ptr_t &sky = LLSettingsSky::ptr_t());
+ void selectWater(const std::string &name);
+ void selectWater(const LLSettingsWater::ptr_t &water = LLSettingsWater::ptr_t());
+ void applyWater(const LLSettingsWater::ptr_t water = LLSettingsWater::ptr_t());
+ void selectDayCycle(const std::string &name);
+ void selectDayCycle(const LLSettingsDayCycle::ptr_t &daycycle = LLSettingsDayCycle::ptr_t());
+ void applyDayCycle(const LLSettingsDayCycle::ptr_t &daycycle = LLSettingsDayCycle::ptr_t());
+ void clearAllSelected();
+ void applyAllSelected();
- void updateGLVariablesForSettings(LLGLSLShader *shader, const LLSettingsBase::ptr_t &psetting);
- void updateShaderUniforms(LLGLSLShader *shader);
+ list_name_id_t getSkyList() const;
+ list_name_id_t getWaterList() const;
+ list_name_id_t getDayCycleList() const;
- void addSky(const LLSettingsSky::ptr_t &sky);
- void selectSky(const std::string &name);
- LLSettingsSky::ptr_t findSkyByName(std::string name) const;
- LLSettingsWater::ptr_t findWaterByName(std::string name) const;
+ LLSettingsSky::ptr_t findSkyByName(std::string name) const;
+ LLSettingsWater::ptr_t findWaterByName(std::string name) const;
+ LLSettingsDayCycle::ptr_t findDayCycleByName(std::string name) const;
- void addWater(const LLSettingsWater::ptr_t &sky);
- void selectWater(const std::string &name);
+ inline LLVector2 getCloudScrollDelta() const { return mCloudScrollDelta; }
- inline LLVector2 getCloudScrollDelta() const { return mCloudScrollDelta; }
+ F32 getCamHeight() const;
+ F32 getWaterHeight() const;
+ bool getIsDayTime() const; // "Day Time" is defined as the sun above the horizon.
+ bool getIsNightTime() const { return !getIsDayTime(); } // "Not Day Time"
- F32 getCamHeight() const;
- F32 getWaterHeight() const;
- bool getIsDayTime() const; // "Day Time" is defined as the sun above the horizon.
- bool getIsNightTime() const { return !getIsDayTime(); } // "Not Day Time"
+ inline F32 getSceneLightStrength() const { return mSceneLightStrength; }
+ inline void setSceneLightStrength(F32 light_strength) { mSceneLightStrength = light_strength; }
- inline F32 getSceneLightStrength() const { return mSceneLightStrength; }
- inline void setSceneLightStrength(F32 light_strength) { mSceneLightStrength = light_strength; }
+ inline LLVector4 getLightDirection() const { return LLVector4(mSelectedSky->getLightDirection(), 0.0f); }
+ inline LLVector4 getClampedLightDirection() const { return LLVector4(mSelectedSky->getClampedLightDirection(), 0.0f); }
+ inline LLVector4 getRotatedLight() const { return mRotatedLight; }
- inline LLVector4 getLightDirection() const { return LLVector4(mCurrentSky->getLightDirection(), 0.0f); }
- inline LLVector4 getClampedLightDirection() const { return LLVector4(mCurrentSky->getClampedLightDirection(), 0.0f); }
- inline LLVector4 getRotatedLight() const { return mRotatedLight; }
+ //-------------------------------------------
+ connection_t setSkyListChange(const change_signal_t::slot_type& cb);
+ connection_t setWaterListChange(const change_signal_t::slot_type& cb);
+ connection_t setDayCycleListChange(const change_signal_t::slot_type& cb);
+protected:
+ virtual void initSingleton();
private:
- static const F32 SUN_DELTA_YAW;
- static const F32 NIGHTTIME_ELEVATION_COS;
+ static const F32 SUN_DELTA_YAW;
+ static const F32 NIGHTTIME_ELEVATION_COS;
typedef std::map<std::string, LLSettingsBase::ptr_t> NamedSettingMap_t;
typedef std::map<LLUUID, LLSettingsBase::ptr_t> AssetSettingMap_t;
- LLVector2 mCloudScrollDelta; // cumulative cloud delta
+ LLVector2 mCloudScrollDelta; // cumulative cloud delta
+
+ LLSettingsSky::ptr_t mSelectedSky;
+ LLSettingsWater::ptr_t mSelectedWater;
+ LLSettingsDayCycle::ptr_t mSelectedDayCycle;
+
+ LLSettingsSky::ptr_t mCurrentSky;
+ LLSettingsWater::ptr_t mCurrentWater;
+ LLSettingsDayCycle::ptr_t mCurrentDayCycle;
+
+ NamedSettingMap_t mSkysByName;
+ AssetSettingMap_t mSkysById;
- LLSettingsSky::ptr_t mCurrentSky;
- LLSettingsWater::ptr_t mCurrentWater;
+ NamedSettingMap_t mWaterByName;
+ AssetSettingMap_t mWaterById;
- NamedSettingMap_t mSkysByName;
- AssetSettingMap_t mSkysById;
+ NamedSettingMap_t mDayCycleByName;
+ AssetSettingMap_t mDayCycleById;
- NamedSettingMap_t mWaterByName;
- AssetSettingMap_t mWaterById;
+ F32 mSceneLightStrength;
+ LLVector4 mRotatedLight;
- F32 mSceneLightStrength;
- LLVector4 mRotatedLight;
+ UserPrefs mUserPrefs;
- UserPrefs mUserPrefs;
+ change_signal_t mSkyListChange;
+ change_signal_t mWaterListChange;
+ change_signal_t mDayCycleListChange;
//void addSky(const LLUUID &id, const LLSettingsSky::ptr_t &sky);
void removeSky(const std::string &name);
@@ -148,7 +187,20 @@ private:
//void removeWater(const LLUUID &id);
void clearAllWater();
+ //void addDayCycle(const LLUUID &id, const LLSettingsSky::ptr_t &sky);
+ void removeDayCycle(const std::string &name);
+ //void removeDayCycle(const LLUUID &id);
+ void clearAllDayCycles();
+
+
void updateCloudScroll();
+
+ //=========================================================================
+ void legacyLoadAllPresets();
+ LLSD legacyLoadPreset(const std::string& path);
+ static std::string getSysDir(const std::string &subdir);
+ static std::string getUserDir(const std::string &subdir);
+
};