diff options
20 files changed, 288 insertions, 109 deletions
| diff --git a/indra/llinventory/llsettingsbase.cpp b/indra/llinventory/llsettingsbase.cpp index 938f614fc9..5283a8dc8a 100644 --- a/indra/llinventory/llsettingsbase.cpp +++ b/indra/llinventory/llsettingsbase.cpp @@ -54,6 +54,10 @@ const std::string LLSettingsBase::SETTING_NAME("name");  const std::string LLSettingsBase::SETTING_HASH("hash");  const std::string LLSettingsBase::SETTING_TYPE("type");  const std::string LLSettingsBase::SETTING_ASSETID("asset_id"); +const std::string LLSettingsBase::SETTING_FLAGS("flags"); + +const U32 LLSettingsBase::FLAG_NOCOPY(0x01 << 0); +const U32 LLSettingsBase::FLAG_NOMOD(0x01 << 1);  //=========================================================================  LLSettingsBase::LLSettingsBase(): @@ -239,13 +243,23 @@ LLSD LLSettingsBase::interpolateSDMap(const LLSD &settings, const LLSD &other, F  //      case LLSD::TypeBinary:  //      case LLSD::TypeDate:          default: -            /* TODO: If the UUID points to an image ID, blend the images. */              // atomic or unknown data types. Lerping between them does not make sense so switch at the break.              newSettings[key_name] = (mix > BREAK_POINT) ? other_value : value;              break;          }      } +    // Special handling cases +    // Flags +    if (settings.has(SETTING_FLAGS)) +    { +        U32 flags = (U32)settings[SETTING_FLAGS].asInteger(); +        if (other.has(SETTING_FLAGS)) +            flags |= (U32)other[SETTING_FLAGS].asInteger(); + +        newSettings[SETTING_FLAGS] = LLSD::Integer(flags); +    } +      // Now add anything that is in other but not in the settings      for (LLSD::map_const_iterator it = other.beginMap(); it != other.endMap(); ++it)      { @@ -262,6 +276,19 @@ LLSD LLSettingsBase::interpolateSDMap(const LLSD &settings, const LLSD &other, F      return newSettings;  } +LLSettingsBase::stringset_t LLSettingsBase::getSkipInterpolateKeys() const +{ +    static stringset_t skipSet; + +    if (skipSet.empty()) +    { +        skipSet.insert(SETTING_FLAGS); +        skipSet.insert(SETTING_HASH); +    } + +    return skipSet; +} +  LLSD LLSettingsBase::getSettings() const  {      return mSettings; @@ -311,6 +338,7 @@ LLSD LLSettingsBase::settingValidation(LLSD &settings, validation_list_t &valida      static Validator  validateHash(SETTING_HASH, false, LLSD::TypeInteger);      static Validator  validateType(SETTING_TYPE, false, LLSD::TypeString);      static Validator  validateAssetId(SETTING_ASSETID, false, LLSD::TypeUUID); +    static Validator  validateFlags(SETTING_FLAGS, false, LLSD::TypeInteger);      stringset_t       validated;      stringset_t       strip;      bool              isValid(true); @@ -353,6 +381,13 @@ LLSD LLSettingsBase::settingValidation(LLSD &settings, validation_list_t &valida      }      validated.insert(validateType.getName()); +    if (!validateFlags.verify(settings)) +    { +        errors.append(LLSD::String("Unable to validate 'flags'.")); +        isValid = false; +    } +    validated.insert(validateFlags.getName()); +      // Fields for specific settings.      for (validation_list_t::iterator itv = validations.begin(); itv != validations.end(); ++itv)      { @@ -415,7 +450,6 @@ bool LLSettingsBase::Validator::verify(LLSD &data)      {          if (!mDefault.isUndefined())          { -            LL_INFOS("SETTINGS") << "Inserting missing default for '" << mName << "'." << LL_ENDL;              data[mName] = mDefault;              return true;          } diff --git a/indra/llinventory/llsettingsbase.h b/indra/llinventory/llsettingsbase.h index 7884240ae3..a90cec6323 100644 --- a/indra/llinventory/llsettingsbase.h +++ b/indra/llinventory/llsettingsbase.h @@ -70,6 +70,10 @@ public:      static const std::string SETTING_HASH;      static const std::string SETTING_TYPE;      static const std::string SETTING_ASSETID; +    static const std::string SETTING_FLAGS; + +    static const U32 FLAG_NOCOPY; +    static const U32 FLAG_NOMOD;      typedef std::map<std::string, S32>  parammapping_t; @@ -113,6 +117,48 @@ public:          return LLUUID();      } +    inline U32 getFlags() const +    { +        if (mSettings.has(SETTING_FLAGS)) +            return static_cast<U32>(mSettings[SETTING_FLAGS].asInteger()); +        return 0; +    } + +    inline void setFlags(U32 value) +    { +        setLLSD(SETTING_FLAGS, LLSD::Integer(value)); +    } + +    inline bool getFlag(U32 flag) const +    { +        if (mSettings.has(SETTING_FLAGS)) +            return ((U32)mSettings[SETTING_FLAGS].asInteger() & flag) == flag; +        return false; +    } + +    inline void setFlag(U32 flag) +    { +        U32 flags((mSettings.has(SETTING_FLAGS)) ? (U32)mSettings[SETTING_FLAGS].asInteger() : 0); + +        flags |= flag; + +        if (flags) +            mSettings[SETTING_FLAGS] = LLSD::Integer(flags); +        else +            mSettings.erase(SETTING_FLAGS); +    } + +    inline void clearFlag(U32 flag) +    { +        U32 flags((mSettings.has(SETTING_FLAGS)) ? (U32)mSettings[SETTING_FLAGS].asInteger() : 0); + +        flags &= ~flag; + +        if (flags) +            mSettings[SETTING_FLAGS] = LLSD::Integer(flags); +        else +            mSettings.erase(SETTING_FLAGS); +    }      virtual void replaceSettings(LLSD settings)      { @@ -270,7 +316,7 @@ protected:      /// when lerping between settings, some may require special handling.        /// Get a list of these key to be skipped by the default settings lerp.      /// (handling should be performed in the override of lerpSettings. -    virtual stringset_t getSkipInterpolateKeys() const { return stringset_t(); }   +    virtual stringset_t getSkipInterpolateKeys() const;       // A list of settings that represent quaternions and should be slerped       // rather than lerped. diff --git a/indra/llinventory/llsettingssky.cpp b/indra/llinventory/llsettingssky.cpp index cd6dfad71d..3b2e7de27d 100644 --- a/indra/llinventory/llsettingssky.cpp +++ b/indra/llinventory/llsettingssky.cpp @@ -32,8 +32,6 @@  #include "llfasttimer.h"  #include "v3colorutil.h" -#pragma optimize("", off) -  //=========================================================================  static const F32 NIGHTTIME_ELEVATION     = -8.0f; // degrees  static const F32 NIGHTTIME_ELEVATION_SIN = (F32)sinf(NIGHTTIME_ELEVATION * DEG_TO_RAD); @@ -437,6 +435,7 @@ LLSettingsSky::stringset_t LLSettingsSky::getSkipInterpolateKeys() const      if (skipSet.empty())      { +        skipSet = LLSettingsBase::getSkipInterpolateKeys();          skipSet.insert(SETTING_RAYLEIGH_CONFIG);          skipSet.insert(SETTING_MIE_CONFIG);          skipSet.insert(SETTING_ABSORPTION_CONFIG); @@ -656,7 +655,7 @@ LLSD LLSettingsSky::defaults(const LLSettingsBase::TrackPosition& position)          dfltsetting[SETTING_MAX_Y]              = LLSD::Real(1605);          dfltsetting[SETTING_MOON_ROTATION]      = moonquat.getValue(); -        dfltsetting[SETTING_STAR_BRIGHTNESS]    = LLSD::Real(0.0000); +        dfltsetting[SETTING_STAR_BRIGHTNESS]    = LLSD::Real(256.0000);          dfltsetting[SETTING_SUNLIGHT_COLOR]     = LLColor4(0.7342, 0.7815, 0.8999, 0.0).getValue();          dfltsetting[SETTING_SUN_ROTATION]       = sunquat.getValue(); @@ -785,7 +784,7 @@ LLSD LLSettingsSky::translateLegacySettings(const LLSD& legacy)      }      if (legacy.has(SETTING_STAR_BRIGHTNESS))      { -        newsettings[SETTING_STAR_BRIGHTNESS] = LLSD::Real(legacy[SETTING_STAR_BRIGHTNESS].asReal()); +        newsettings[SETTING_STAR_BRIGHTNESS] = LLSD::Real(legacy[SETTING_STAR_BRIGHTNESS].asReal()) * 256.0f;      }      if (legacy.has(SETTING_SUNLIGHT_COLOR))      { diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp index 639033f143..c03d33080f 100644 --- a/indra/llrender/llglslshader.cpp +++ b/indra/llrender/llglslshader.cpp @@ -569,7 +569,7 @@ BOOL LLGLSLShader::mapAttributes(const std::vector<LLStaticHashedString> * attri                  mAttribute[i] = index;  #endif                  mAttributeMask |= 1 << i; -                LL_DEBUGS("ShaderLoading") << "Attribute " << name << " assigned to channel " << index << LL_ENDL; +                LL_DEBUGS("ShaderUniform") << "Attribute " << name << " assigned to channel " << index << LL_ENDL;              }          }          if (attributes != NULL) @@ -581,7 +581,7 @@ BOOL LLGLSLShader::mapAttributes(const std::vector<LLStaticHashedString> * attri                  if (index != -1)                  {                      mAttribute[LLShaderMgr::instance()->mReservedAttribs.size() + i] = index; -                    LL_DEBUGS("ShaderLoading") << "Attribute " << name << " assigned to channel " << index << LL_ENDL; +                    LL_DEBUGS("ShaderUniform") << "Attribute " << name << " assigned to channel " << index << LL_ENDL;                  }              }          } @@ -666,7 +666,7 @@ void LLGLSLShader::mapUniform(GLint index, const vector<LLStaticHashedString> *          mUniformNameMap[location] = name;          mUniformMap[hashedName] = location; -        LL_DEBUGS("ShaderLoading") << "Uniform " << name << " is at location " << location << LL_ENDL; +        LL_DEBUGS("ShaderUniform") << "Uniform " << name << " is at location " << location << LL_ENDL;          //find the index of this uniform          for (S32 i = 0; i < (S32) LLShaderMgr::instance()->mReservedUniforms.size(); i++) @@ -714,7 +714,7 @@ GLint LLGLSLShader::mapUniformTextureChannel(GLint location, GLenum type)          type == GL_SAMPLER_2D_MULTISAMPLE)      {   //this here is a texture          glUniform1iARB(location, mActiveTextureChannels); -        LL_DEBUGS("ShaderLoading") << "Assigned to texture channel " << mActiveTextureChannels << LL_ENDL; +        LL_DEBUGS("ShaderUniform") << "Assigned to texture channel " << mActiveTextureChannels << LL_ENDL;          return mActiveTextureChannels++;      }      return -1; @@ -858,7 +858,7 @@ BOOL LLGLSLShader::mapUniforms(const vector<LLStaticHashedString> * uniforms)  	unbind(); -	LL_DEBUGS("ShaderLoading") << "Total Uniform Size: " << mTotalUniformSize << LL_ENDL; +	LL_DEBUGS("ShaderUniform") << "Total Uniform Size: " << mTotalUniformSize << LL_ENDL;  	return res;  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl index d7f655709c..4ae3f7b76f 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl @@ -26,19 +26,26 @@  /*[EXTRA_CODE_HERE]*/  #ifdef DEFINE_GL_FRAGCOLOR -out vec4 frag_color; +out vec4 frag_data[3];  #else -#define frag_color gl_FragColor +#define frag_data gl_FragData  #endif  VARYING vec4 vertex_color;  VARYING vec2 vary_texcoord0; +VARYING vec2 screenpos;  uniform sampler2D diffuseMap;  uniform sampler2D altDiffuseMap;  uniform float blend_factor;  uniform float custom_alpha;  uniform vec4 sunlight_color; +uniform float time; + +float twinkle(){ +    float d = fract(screenpos.x + screenpos.y); +    return abs(d); +}  void main()   { @@ -46,6 +53,14 @@ void main()  	vec4 col_b = texture2D(diffuseMap, vary_texcoord0.xy);      vec4 col = mix(col_b, col_a, blend_factor);      col.rgb *= vertex_color.rgb; -    col.a *= custom_alpha; -	frag_color = col; +  +    float factor = smoothstep(0.0f, 0.9f, custom_alpha); + +    col.a = (col.a * factor) * 32.0f; +    col.a *= twinkle(); + +	frag_data[0] = col; +    frag_data[1] = vec4(0.0f); +    frag_data[2] = vec4(0.0, 1.0, 0.0, 1.0);  } + diff --git a/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl b/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl index 8bc5b06379..e14d02a4a9 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl @@ -25,6 +25,7 @@  uniform mat4 texture_matrix0;  uniform mat4 modelview_projection_matrix; +uniform float time;  ATTRIBUTE vec3 position;  ATTRIBUTE vec4 diffuse_color; @@ -32,11 +33,14 @@ ATTRIBUTE vec2 texcoord0;  VARYING vec4 vertex_color;  VARYING vec2 vary_texcoord0; +VARYING vec2 screenpos;  void main()  {  	//transform vertex  	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);  +    float t = mod(time, 1.25f); +    screenpos = position.xy * vec2(t, t);  	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;  	vertex_color = diffuse_color;  } diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp index 04f358ba79..8a2941e20a 100644 --- a/indra/newview/lldrawpoolwlsky.cpp +++ b/indra/newview/lldrawpoolwlsky.cpp @@ -44,8 +44,6 @@  #include "llenvironment.h"   #include "llatmosphere.h" -#pragma optimize("", off) -  static LLStaticHashedString sCamPosLocal("camPosLocal");  static LLStaticHashedString sCustomAlpha("custom_alpha"); @@ -54,6 +52,8 @@ static LLGLSLShader* sky_shader   = NULL;  static LLGLSLShader* sun_shader   = NULL;  static LLGLSLShader* moon_shader  = NULL; +static float sStarTime; +  LLDrawPoolWLSky::LLDrawPoolWLSky(void) :  	LLDrawPool(POOL_WL_SKY)  { diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp index ed25120241..3a1aec6319 100644 --- a/indra/newview/llenvironment.cpp +++ b/indra/newview/llenvironment.cpp @@ -444,11 +444,15 @@ F32 LLEnvironment::getWaterHeight() const  bool LLEnvironment::getIsSunUp() const  { +    if (!mCurrentEnvironment || !mCurrentEnvironment->getSky()) +        return false;      return mCurrentEnvironment->getSky()->getIsSunUp();  }  bool LLEnvironment::getIsMoonUp() const  { +    if (!mCurrentEnvironment || !mCurrentEnvironment->getSky()) +        return false;      return mCurrentEnvironment->getSky()->getIsMoonUp();  } @@ -1628,14 +1632,13 @@ void LLEnvironment::DayInstance::setSky(const LLSettingsSky::ptr_t &psky)      mSky->mReplaced |= different_sky;      mSky->update();      mBlenderSky.reset(); -/* +      if (gAtmosphere)      {          AtmosphericModelSettings settings;          LLEnvironment::getAtmosphericModelSettings(settings, psky);          gAtmosphere->configureAtmosphericModel(settings);      } -*/  }  void LLEnvironment::DayInstance::setWater(const LLSettingsWater::ptr_t &pwater) diff --git a/indra/newview/llfloatereditextdaycycle.cpp b/indra/newview/llfloatereditextdaycycle.cpp index 9c3a48c412..ed60dd4303 100644 --- a/indra/newview/llfloatereditextdaycycle.cpp +++ b/indra/newview/llfloatereditextdaycycle.cpp @@ -173,7 +173,7 @@ BOOL LLFloaterEditExtDayCycle::postBuild()      mImportButton = getChild<LLButton>(BTN_IMPORT, true);      mLoadFrame = getChild<LLButton>(BTN_LOADFRAME, true); -    mFlyoutControl = new LLFlyoutComboBtnCtrl(this, BTN_SAVE, BTN_FLYOUT, XML_FLYOUTMENU_FILE); +    mFlyoutControl = new LLFlyoutComboBtnCtrl(this, BTN_SAVE, BTN_FLYOUT, XML_FLYOUTMENU_FILE, false);      mFlyoutControl->setAction([this](LLUICtrl *ctrl, const LLSD &data) { onButtonApply(ctrl, data); });      getChild<LLButton>(BTN_CANCEL, true)->setCommitCallback([this](LLUICtrl *ctrl, const LLSD &data) { onClickCloseBtn(); }); @@ -343,8 +343,11 @@ void LLFloaterEditExtDayCycle::onClose(bool app_quitting)  void LLFloaterEditExtDayCycle::onFocusReceived()  { -    updateEditEnvironment(); -    LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_EDIT, LLEnvironment::TRANSITION_FAST); +    if (isInVisibleChain()) +    { +        updateEditEnvironment(); +        LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_EDIT, LLEnvironment::TRANSITION_FAST); +    }  }  void LLFloaterEditExtDayCycle::onFocusLost() diff --git a/indra/newview/llfloaterfixedenvironment.cpp b/indra/newview/llfloaterfixedenvironment.cpp index 7ff1663942..d38098c0a6 100644 --- a/indra/newview/llfloaterfixedenvironment.cpp +++ b/indra/newview/llfloaterfixedenvironment.cpp @@ -108,7 +108,7 @@ BOOL LLFloaterFixedEnvironment::postBuild()      getChild<LLButton>(BUTTON_NAME_CANCEL)->setClickedCallback([this](LLUICtrl *, const LLSD &) { onClickCloseBtn(); });      getChild<LLButton>(BUTTON_NAME_LOAD)->setClickedCallback([this](LLUICtrl *, const LLSD &) { onButtonLoad(); }); -    mFlyoutControl = new LLFlyoutComboBtnCtrl(this, BUTTON_NAME_COMMIT, BUTTON_NAME_FLYOUT, XML_FLYOUTMENU_FILE); +    mFlyoutControl = new LLFlyoutComboBtnCtrl(this, BUTTON_NAME_COMMIT, BUTTON_NAME_FLYOUT, XML_FLYOUTMENU_FILE, false);      mFlyoutControl->setAction([this](LLUICtrl *ctrl, const LLSD &data) { onButtonApply(ctrl, data); });      mFlyoutControl->setMenuItemVisible(ACTION_COMMIT, false); @@ -147,8 +147,11 @@ void LLFloaterFixedEnvironment::onClose(bool app_quitting)  void LLFloaterFixedEnvironment::onFocusReceived()  { -    updateEditEnvironment(); -    LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_EDIT, LLEnvironment::TRANSITION_FAST); +    if (isInVisibleChain()) +    { +        updateEditEnvironment(); +        LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_EDIT, LLEnvironment::TRANSITION_FAST); +    }  }  void LLFloaterFixedEnvironment::onFocusLost() diff --git a/indra/newview/llflyoutcombobtn.cpp b/indra/newview/llflyoutcombobtn.cpp index d1a8b46c92..b008ee13be 100644 --- a/indra/newview/llflyoutcombobtn.cpp +++ b/indra/newview/llflyoutcombobtn.cpp @@ -29,14 +29,21 @@  #include "llflyoutcombobtn.h"  #include "llviewermenu.h" -LLFlyoutComboBtnCtrl::LLFlyoutComboBtnCtrl(LLPanel* parent, const std::string &action_button, const std::string &flyout_button, const std::string &menu_file) : -	mParent(parent), +LLFlyoutComboBtnCtrl::LLFlyoutComboBtnCtrl(LLPanel* parent, +                                           const std::string &action_button, +                                           const std::string &flyout_button, +                                           const std::string &menu_file, +                                           bool apply_immediately) : +    mParent(parent),      mActionButton(action_button), -    mFlyoutButton(flyout_button) +    mFlyoutButton(flyout_button), +    mApplyImmediately(apply_immediately)  { -	// register action mapping before creating menu -	LLUICtrl::CommitCallbackRegistry::ScopedRegistrar save_registar; +    // register action mapping before creating menu +    LLUICtrl::CommitCallbackRegistry::ScopedRegistrar save_registar;      save_registar.add("FlyoutCombo.Button.Action", [this](LLUICtrl *ctrl, const LLSD &data) { onFlyoutItemSelected(ctrl, data); }); +    LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enabled_rgistar; +    enabled_rgistar.add("FlyoutCombo.Button.Check", [this](LLUICtrl *ctrl, const LLSD &data) { return onFlyoutItemCheck(ctrl, data); });      mParent->childSetAction(flyout_button, [this](LLUICtrl *ctrl, const LLSD &data) { onFlyoutButton(ctrl, data); });      mParent->childSetAction(action_button, [this](LLUICtrl *ctrl, const LLSD &data) { onFlyoutAction(ctrl, data); }); @@ -119,7 +126,24 @@ void LLFlyoutComboBtnCtrl::onFlyoutItemSelected(LLUICtrl *ctrl, const LLSD &data      LLMenuItemGL *pmenuitem = static_cast<LLMenuItemGL*>(ctrl);      setSelectedItem(pmenuitem); -    onFlyoutAction(pmenuitem, data); +    if (mApplyImmediately) +    { +        onFlyoutAction(pmenuitem, data); +    } +} + +bool LLFlyoutComboBtnCtrl::onFlyoutItemCheck(LLUICtrl *ctrl, const LLSD &data) +{ +    if (mApplyImmediately) +    { +        return false; +    } +    else +    { +        LLMenuItemGL *pmenuitem = static_cast<LLMenuItemGL*>(ctrl); + +        return pmenuitem->getName() == mSelectedName; +    }  }  void LLFlyoutComboBtnCtrl::onFlyoutAction(LLUICtrl *ctrl, const LLSD &data) diff --git a/indra/newview/llflyoutcombobtn.h b/indra/newview/llflyoutcombobtn.h index 741ad03a37..b0dd4abadf 100644 --- a/indra/newview/llflyoutcombobtn.h +++ b/indra/newview/llflyoutcombobtn.h @@ -37,7 +37,11 @@ class LLFlyoutComboBtnCtrl  {      LOG_CLASS(LLFlyoutComboBtnCtrl);  public: -    LLFlyoutComboBtnCtrl(LLPanel* parent, const std::string &action_button, const std::string &flyout_button, const std::string &menu_file); +    LLFlyoutComboBtnCtrl(LLPanel* parent, +                         const std::string &action_button, +                         const std::string &flyout_button, +                         const std::string &menu_file, +                         bool apply_immediately = true);  	void setMenuItemEnabled(const std::string &item, bool enabled);  	void setShownBtnEnabled(bool enabled); @@ -52,6 +56,7 @@ public:  protected:      void onFlyoutButton(LLUICtrl *, const LLSD &);      void onFlyoutItemSelected(LLUICtrl *, const LLSD &); +    bool onFlyoutItemCheck(LLUICtrl *, const LLSD &);      void onFlyoutAction(LLUICtrl *, const LLSD &);      void setSelectedItem(LLMenuItemGL *pitem); @@ -63,6 +68,7 @@ private:      std::string                 mFlyoutButton;      std::string                 mSelectedName; +    bool                        mApplyImmediately;      LLUICtrl::commit_signal_t   mActionSignal;  }; diff --git a/indra/newview/llsettingsvo.cpp b/indra/newview/llsettingsvo.cpp index 12f487398f..6426e95f6c 100644 --- a/indra/newview/llsettingsvo.cpp +++ b/indra/newview/llsettingsvo.cpp @@ -67,7 +67,7 @@  namespace   {      LLSD ensure_array_4(LLSD in, F32 fill); -    LLSD read_legacy_preset_data(const std::string& path); +    LLSD read_legacy_preset_data(const std::string &name, const std::string& path);      //-------------------------------------------------------------------------      class LLSettingsInventoryCB : public LLInventoryCallback @@ -440,30 +440,13 @@ LLSettingsSky::ptr_t LLSettingsVOSky::buildFromLegacyPreset(const std::string &n      return skyp;  } -namespace -{ -    // This is a disturbing hack -    std::string legacy_name_to_filename(const std::string &name) -    { -        std::string fixedname(LLURI::escape(name)); - -        boost::algorithm::replace_all(fixedname, "-", "%2D"); -        return fixedname; -    } -} -  LLSettingsSky::ptr_t LLSettingsVOSky::buildFromLegacyPresetFile(const std::string &name, const std::string &path)  { -    std::string full_path(path); -    std::string full_name(legacy_name_to_filename(name)); -    full_name += ".xml"; - -    gDirUtilp->append(full_path, full_name); -    LLSD legacy_data = read_legacy_preset_data(full_path); +    LLSD legacy_data = read_legacy_preset_data(name, path);      if (!legacy_data)      { -        LL_WARNS("SETTINGS") << "Could not load legacy Windlight \"" << name << "\" from " << full_path << LL_ENDL; +        LL_WARNS("SETTINGS") << "Could not load legacy Windlight \"" << name << "\" from " << path << LL_ENDL;          return ptr_t();      } @@ -707,16 +690,11 @@ LLSettingsWater::ptr_t LLSettingsVOWater::buildFromLegacyPreset(const std::strin  LLSettingsWater::ptr_t LLSettingsVOWater::buildFromLegacyPresetFile(const std::string &name, const std::string &path)  { -    std::string full_path(path); -    std::string full_name(legacy_name_to_filename(name)); -    full_name += ".xml"; - -    gDirUtilp->append(full_path, full_name); -    LLSD legacy_data = read_legacy_preset_data(full_path); +    LLSD legacy_data = read_legacy_preset_data(name, path);      if (!legacy_data)      { -        LL_WARNS("SETTINGS") << "Could not load legacy Windlight \"" << name << "\" from " << full_path << LL_ENDL; +        LL_WARNS("SETTINGS") << "Could not load legacy Windlight \"" << name << "\" from " << path << LL_ENDL;          return ptr_t();      } @@ -961,16 +939,11 @@ LLSettingsDay::ptr_t LLSettingsVODay::buildFromLegacyPreset(const std::string &n  LLSettingsDay::ptr_t LLSettingsVODay::buildFromLegacyPresetFile(const std::string &name, const std::string &path)  { -    std::string full_path(path); -    std::string full_name(legacy_name_to_filename(name)); -    full_name += ".xml"; - -    gDirUtilp->append(full_path, full_name); -    LLSD legacy_data = read_legacy_preset_data(full_path); +    LLSD legacy_data = read_legacy_preset_data(name, path);      if (!legacy_data)      { -        LL_WARNS("SETTINGS") << "Could not load legacy Windlight \"" << name << "\" from " << full_path << LL_ENDL; +        LL_WARNS("SETTINGS") << "Could not load legacy Windlight \"" << name << "\" from " << path << LL_ENDL;          return ptr_t();      } @@ -1261,15 +1234,55 @@ namespace          return out;      } +    // This is a disturbing hack +    std::string legacy_name_to_filename(const std::string &name, bool convertdash = false) +    { +        std::string fixedname(LLURI::escape(name)); + +        if (convertdash) +            boost::algorithm::replace_all(fixedname, "-", "%2D"); + +        return fixedname; +    } +      //--------------------------------------------------------------------- -    LLSD read_legacy_preset_data(const std::string& path) +    LLSD read_legacy_preset_data(const std::string &name, const std::string& path)      {          llifstream xml_file; -//      std::string name(gDirUtilp->getBaseFileName(LLURI::unescape(path), /*strip_exten = */ true)); -        xml_file.open(path.c_str()); +        std::string full_path(path); +        std::string full_name(name); +        full_name += ".xml"; +        gDirUtilp->append(full_path, full_name); + +        xml_file.open(full_path.c_str());          if (!xml_file) -            return LLSD(); +        { +            std::string bad_path(full_path); +            full_path = path; +            full_name = legacy_name_to_filename(name); +            full_name += ".xml"; +            gDirUtilp->append(full_path, full_name); + +            LL_INFOS("LEGACYSETTING") << "Could not open \"" << bad_path << "\" trying escaped \"" << full_path << "\"" << LL_ENDL; + +            xml_file.open(full_path.c_str()); +            if (!xml_file) +            { +                LL_WARNS("LEGACYSETTING") << "Unable to open legacy windlight \"" << name << "\" from " << path << LL_ENDL; + +                full_path = path; +                full_name = legacy_name_to_filename(name, true); +                full_name += ".xml"; +                gDirUtilp->append(full_path, full_name); +                xml_file.open(full_path.c_str()); +                if (!xml_file) +                { +                    LL_WARNS("LEGACYSETTING") << "Unable to open legacy windlight \"" << name << "\" from " << path << LL_ENDL; +                    return LLSD(); +                } +            } +        }          LLSD params_data;          LLPointer<LLSDParser> parser = new LLSDXMLParser(); diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index cd378c0a56..05c722a114 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -46,6 +46,8 @@  #include "llenvironment.h"  #include "llatmosphere.h" +#pragma optimize("", off) +  #ifdef LL_RELEASE_FOR_DOWNLOAD  #define UNIFORM_ERRS LL_WARNS_ONCE("Shader")  #else diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index 81632796e4..d3b1f1459f 100644 --- a/indra/newview/llvosky.cpp +++ b/indra/newview/llvosky.cpp @@ -59,6 +59,8 @@  #undef min  #undef max +#pragma optimize("", off) +  namespace  {      const S32 NUM_TILES_X = 8; @@ -376,6 +378,9 @@ LLVOSky::LLVOSky(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp)  	mbCanSelect = FALSE;  	mUpdateTimer.reset(); +    mForceUpdateThrottle.setTimerExpirySec(UPDATE_EXPRY); +    mForceUpdateThrottle.reset(); +  	for (S32 i = 0; i < 6; i++)  	{  		mSkyTex[i].init(); @@ -585,8 +590,7 @@ void LLVOSky::idleUpdate(LLAgent &agent, const F64 &time)  }  bool LLVOSky::updateSky() -{ -    LLTimer forceupdThrottle; +{          LLSettingsSky::ptr_t psky = LLEnvironment::instance().getCurrentSky();      LLColor4 total_ambient = psky->getTotalAmbient(); @@ -640,15 +644,29 @@ bool LLVOSky::updateSky()          bool light_direction_changed = (dot_lighting < LIGHT_DIRECTION_THRESHOLD);          bool color_changed = (delta_color.length() >= COLOR_CHANGE_THRESHOLD); -        mForceUpdate = mForceUpdate || light_direction_changed; -        mForceUpdate = mForceUpdate || color_changed; -        mForceUpdate = mForceUpdate || !mInitialized; +        if (light_direction_changed) +        { +            mForceUpdate = true; +        } + +        if (color_changed) +        { +            mForceUpdate = true; +        } + +        if (!mInitialized) +        { +            mForceUpdate = true; +        } +        //mForceUpdate = mForceUpdate || light_direction_changed; +        //mForceUpdate = mForceUpdate || color_changed; +        //mForceUpdate = mForceUpdate || !mInitialized; -        if (mForceUpdate && forceupdThrottle.hasExpired()) +        if (mForceUpdate && mForceUpdateThrottle.hasExpired())  		{              LL_RECORD_BLOCK_TIME(FTM_VOSKY_UPDATEFORCED); -            forceupdThrottle.setTimerExpirySec(UPDATE_EXPRY); +            mForceUpdateThrottle.setTimerExpirySec(UPDATE_EXPRY);  			LLSkyTex::stepCurrent();			 diff --git a/indra/newview/llvosky.h b/indra/newview/llvosky.h index 4943c48f7c..be69757fc7 100644 --- a/indra/newview/llvosky.h +++ b/indra/newview/llvosky.h @@ -338,7 +338,7 @@ protected:  	S32					 mDrawRefl;  	LLFrameTimer		mUpdateTimer; - +    LLTimer             mForceUpdateThrottle;  	bool                mHeavenlyBodyUpdated ;      LLAtmospherics      m_legacyAtmospherics; diff --git a/indra/newview/llvowlsky.cpp b/indra/newview/llvowlsky.cpp index db9452cce9..741d0e3992 100644 --- a/indra/newview/llvowlsky.cpp +++ b/indra/newview/llvowlsky.cpp @@ -637,7 +637,7 @@ BOOL LLVOWLSky::updateStarGeometry(LLDrawable *drawable)  		LLVector3 left = at%LLVector3(0,0,1);  		LLVector3 up = at%left; -		F32 sc = 0.5f+ll_frand()*1.25f; +		F32 sc = 0.8f + ll_frand()*2.5f;  		left *= sc;  		up *= sc; diff --git a/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml b/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml index 61299a43bd..c8843db28b 100644 --- a/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml +++ b/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml @@ -520,15 +520,6 @@ Select a key frame from the timeline above to edit settings.                                  left_delta="0"                                  top_pad="5"                                  name="moon_panel" /> -                      <panel -                                border="true" -                                class="panel_settings_density" -                                filename="panel_settings_sky_density.xml" -                                label="Density" -                                layout="topleft" -                                left_delta="0" -                                top_pad="5" -                                name="panel_settings_sky_density" />                      </tab_container>                  </layout_panel>                      </layout_stack> @@ -547,7 +538,7 @@ Select a key frame from the timeline above to edit settings.                      left="5"                      top_pad="0"                      name="save_btn" -                    width="150" /> +                    width="156" />              <button                      follows="top|left" diff --git a/indra/newview/skins/default/xui/en/menu_save_settings.xml b/indra/newview/skins/default/xui/en/menu_save_settings.xml index e3ed9a1741..84dacaa8b8 100644 --- a/indra/newview/skins/default/xui/en/menu_save_settings.xml +++ b/indra/newview/skins/default/xui/en/menu_save_settings.xml @@ -5,46 +5,64 @@          mouse_opaque="false"          name="save_settings_menu"          width="120"> -    <menu_item_call  +    <menu_item_check              name="save_settings"               label="Save"> -        <menu_item_call.on_click  +        <menu_item_check.on_check +                function="FlyoutCombo.Button.Check" +                userdata="save" /> +        <menu_item_check.on_click                  function="FlyoutCombo.Button.Action"                  userdata="save"/> -    </menu_item_call> -    <menu_item_call  +    </menu_item_check> +    <menu_item_check               name="save_as_new_settings"               label="Save As"> -        <menu_item_call.on_click  +        <menu_item_check.on_check +                function="FlyoutCombo.Button.Check" +                userdata="saveas" /> +        <menu_item_check.on_click                  function="FlyoutCombo.Button.Action"                  userdata="saveas" /> -    </menu_item_call> -    <menu_item_call +    </menu_item_check> +    <menu_item_check              name="commit_changes"              label="Commit"> -        <menu_item_call.on_click  +        <menu_item_check.on_check +                function="FlyoutCombo.Button.Check" +                userdata="commit" /> +        <menu_item_check.on_click                  function="FlyoutCombo.Button.Action"                  userdata="commit" /> -    </menu_item_call> -    <menu_item_call +    </menu_item_check> +    <menu_item_check              name="apply_local"              label="Apply Only To Myself"> -        <menu_item_call.on_click  +        <menu_item_check.on_check +                function="FlyoutCombo.Button.Check" +                userdata="local" /> +        <menu_item_check.on_click                   function="FlyoutCombo.Button.Action"                  userdata="local" /> -    </menu_item_call> -    <menu_item_call +    </menu_item_check> +    <menu_item_check              name="apply_parcel"              label="Apply To Parcel"> -        <menu_item_call.on_click  +        <menu_item_check.on_check +                function="FlyoutCombo.Button.Check" +                userdata="parcel" /> +        <menu_item_check.on_click                  function="FlyoutCombo.Button.Action"                  userdata="parcel" /> -    </menu_item_call> -    <menu_item_call +    </menu_item_check> +    <menu_item_check              name="apply_region"              label="Apply To Region"> -        <menu_item_call.on_click  +        <menu_item_check.on_check +                function="FlyoutCombo.Button.Check" +                userdata="region" /> +        <menu_item_check.on_click                  function="FlyoutCombo.Button.Action"                  userdata="region" /> -    </menu_item_call> +    </menu_item_check>  </toggleable_menu> diff --git a/indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml b/indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml index 4b72bbbe0e..0ec3528718 100644 --- a/indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml +++ b/indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml @@ -171,7 +171,7 @@                      layout="topleft"                      left_delta="5"                      min_val="0" -                    max_val="2" +                    max_val="512"                      name="star_brightness"                      top_delta="15"                      width="250" | 
