SL-10982 [EEP] Personal Lighting - Add options to select water maps / cloud textures

meow-7.2.2
maxim_productengine 2019-04-22 16:02:53 +03:00
parent 11d1c28d82
commit ce9cf1027f
3 changed files with 79 additions and 13 deletions

View File

@ -32,8 +32,10 @@
#include "llslider.h"
#include "llsliderctrl.h"
#include "llcolorswatch.h"
#include "lltexturectrl.h"
#include "llvirtualtrackball.h"
#include "llenvironment.h"
#include "llviewercontrol.h"
//=========================================================================
namespace
@ -46,6 +48,8 @@ namespace
const std::string FIELD_SKY_HAZE_HORIZON("haze_horizon");
const std::string FIELD_SKY_HAZE_DENSITY("haze_density");
const std::string FIELD_SKY_CLOUD_COVERAGE("cloud_coverage");
const std::string FIELD_SKY_CLOUD_MAP("cloud_map");
const std::string FIELD_WATER_NORMAL_MAP("water_normal_map");
const std::string FIELD_SKY_CLOUD_SCALE("cloud_scale");
const std::string FIELD_SKY_SCENE_GAMMA("scene_gamma");
const std::string FIELD_SKY_SUN_ROTATION("sun_rotation");
@ -97,6 +101,14 @@ BOOL LLFloaterEnvironmentAdjust::postBuild()
getChild<LLUICtrl>(FIELD_SKY_MOON_ROTATION)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onMoonRotationChanged(); });
getChild<LLUICtrl>(BTN_RESET)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onButtonReset(); });
getChild<LLTextureCtrl>(FIELD_SKY_CLOUD_MAP)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onCloudMapChanged(); });
getChild<LLTextureCtrl>(FIELD_SKY_CLOUD_MAP)->setDefaultImageAssetID(LLSettingsSky::GetDefaultCloudNoiseTextureId());
getChild<LLTextureCtrl>(FIELD_SKY_CLOUD_MAP)->setAllowNoTexture(TRUE);
getChild<LLTextureCtrl>(FIELD_WATER_NORMAL_MAP)->setDefaultImageAssetID(LLSettingsWater::GetDefaultWaterNormalAssetId());
getChild<LLTextureCtrl>(FIELD_WATER_NORMAL_MAP)->setBlankImageAssetID(LLUUID(gSavedSettings.getString("DefaultBlankNormalTexture")));
getChild<LLTextureCtrl>(FIELD_WATER_NORMAL_MAP)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onWaterMapChanged(); });
refresh();
return TRUE;
}
@ -115,6 +127,7 @@ void LLFloaterEnvironmentAdjust::onClose(bool app_quitting)
{
mEventConnection.disconnect();
mLiveSky.reset();
mLiveWater.reset();
LLFloater::onClose(app_quitting);
}
@ -122,7 +135,7 @@ void LLFloaterEnvironmentAdjust::onClose(bool app_quitting)
//-------------------------------------------------------------------------
void LLFloaterEnvironmentAdjust::refresh()
{
if (!mLiveSky)
if (!mLiveSky || !mLiveWater)
{
setAllChildrenEnabled(FALSE);
return;
@ -142,6 +155,9 @@ void LLFloaterEnvironmentAdjust::refresh()
getChild<LLUICtrl>(FIELD_SKY_CLOUD_SCALE)->setValue(mLiveSky->getCloudScale());
getChild<LLColorSwatchCtrl>(FIELD_SKY_SUN_COLOR)->set(mLiveSky->getSunlightColor() / SLIDER_SCALE_SUN_AMBIENT);
getChild<LLTextureCtrl>(FIELD_SKY_CLOUD_MAP)->setValue(mLiveSky->getCloudNoiseTextureId());
getChild<LLTextureCtrl>(FIELD_WATER_NORMAL_MAP)->setValue(mLiveWater->getNormalMapID());
LLColor3 glow(mLiveSky->getGlow());
// takes 40 - 0.2 range -> 0 - 1.99 UI range
@ -165,22 +181,26 @@ void LLFloaterEnvironmentAdjust::captureCurrentEnvironment()
if (environment.getEnvironmentDay(LLEnvironment::ENV_LOCAL))
{ // We have a full day cycle in the local environment. Freeze the sky
mLiveSky = environment.getEnvironmentFixedSky(LLEnvironment::ENV_LOCAL)->buildClone();
mLiveWater = environment.getEnvironmentFixedWater(LLEnvironment::ENV_LOCAL)->buildClone();
updatelocal = true;
}
else
{ // otherwise we can just use the sky.
mLiveSky = environment.getEnvironmentFixedSky(LLEnvironment::ENV_LOCAL);
mLiveWater = environment.getEnvironmentFixedWater(LLEnvironment::ENV_LOCAL);
}
}
else
{
mLiveSky = environment.getEnvironmentFixedSky(LLEnvironment::ENV_PARCEL, true)->buildClone();
mLiveWater = environment.getEnvironmentFixedWater(LLEnvironment::ENV_PARCEL, true)->buildClone();
updatelocal = true;
}
if (updatelocal)
{
environment.setEnvironment(LLEnvironment::ENV_LOCAL, mLiveSky, FLOATER_ENVIRONMENT_UPDATE);
environment.setEnvironment(LLEnvironment::ENV_LOCAL, mLiveWater, FLOATER_ENVIRONMENT_UPDATE);
}
environment.setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
environment.updateEnvironment(LLEnvironment::TRANSITION_INSTANT);
@ -322,6 +342,22 @@ void LLFloaterEnvironmentAdjust::onMoonRotationChanged()
mLiveSky->update();
}
void LLFloaterEnvironmentAdjust::onCloudMapChanged()
{
if (!mLiveSky)
return;
mLiveSky->setCloudNoiseTextureId(getChild<LLTextureCtrl>(FIELD_SKY_CLOUD_MAP)->getValue().asUUID());
mLiveSky->update();
}
void LLFloaterEnvironmentAdjust::onWaterMapChanged()
{
if (!mLiveWater)
return;
mLiveWater->setNormalMapID(getChild<LLTextureCtrl>(FIELD_WATER_NORMAL_MAP)->getValue().asUUID());
mLiveWater->update();
}
void LLFloaterEnvironmentAdjust::onSunColorChanged()
{
if (!mLiveSky)

View File

@ -77,11 +77,15 @@ private:
void onMoonRotationChanged();
void onCloudMapChanged();
void onWaterMapChanged();
void onButtonReset();
void onEnvironmentUpdated(LLEnvironment::EnvSelection_t env, S32 version);
LLSettingsSky::ptr_t mLiveSky;
LLSettingsWater::ptr_t mLiveWater;
LLEnvironment::connection_t mEventConnection;
};

View File

@ -5,14 +5,14 @@
save_rect="false"
title="Personal Lighting"
width="845"
height="230"
height="240"
min_width="500"
min_height="225"
min_height="235"
single_instance="true"
can_resize="false">
<layout_stack name="outer_stack"
width="845"
height="220"
height="230"
follows="all"
animate="false"
top="0"
@ -47,7 +47,7 @@
width="80">Ambient:</text>
<color_swatch can_apply_immediately="true"
follows="left|top"
height="37"
height="40"
label_height="0"
layout="topleft"
left_delta="0"
@ -62,7 +62,7 @@
width="80">Blue Horizon:</text>
<color_swatch can_apply_immediately="true"
follows="left|top"
height="37"
height="40"
label_height="0"
layout="topleft"
left_delta="0"
@ -77,7 +77,7 @@
width="80">Blue Density:</text>
<color_swatch can_apply_immediately="true"
follows="left|top"
height="37"
height="40"
label_height="0"
layout="topleft"
left_delta="0"
@ -97,12 +97,12 @@
<text follows="right|top"
height="10"
layout="topleft"
right="-10"
right="-12"
top="5"
width="60">Sun Color:</text>
<color_swatch can_apply_immediately="true"
follows="left|top"
height="37"
height="10"
label_height="0"
layout="topleft"
left_delta="0"
@ -113,17 +113,43 @@
height="10"
layout="topleft"
left_delta="0"
top_pad="10"
top_pad="5"
width="80">Cloud Color:</text>
<color_swatch can_apply_immediately="true"
follows="left|top"
height="37"
height="10"
label_height="0"
layout="topleft"
left_delta="0"
name="cloud_color"
top_pad="5"
width="60"/>
<text follows="left|top"
height="10"
layout="topleft"
left_delta="0"
top_pad="10"
name="cloud_map_label"
width="80">Cloud Image:</text>
<texture_picker height="63"
layout="topleft"
left_delta="0"
name="cloud_map"
top_pad="5"
width="60"/>
<text follows="left|top"
height="10"
layout="topleft"
left_delta="0"
top_pad="-13"
name="cloud_map_label"
width="80">Water Image:</text>
<texture_picker height="63"
layout="topleft"
left_delta="0"
name="water_normal_map"
top_pad="5"
width="60"/>
</layout_panel>
<layout_panel border="false"
bevel_style="in"
@ -257,7 +283,7 @@
layout="topleft"
name="sunbeacon"
left_delta="55"
bottom="-10"
bottom="-20"
follows="bottom|right"/>
<text follows="left|top"
height="10"
@ -366,7 +392,7 @@
layout="topleft"
name="moonbeacon"
right="-50"
bottom="-10"
bottom="-20"
follows="bottom|right"/>
</layout_panel>
</layout_stack>