Merge
commit
ca75963f3f
|
|
@ -401,7 +401,10 @@ LLSettingsSky::LLSettingsSky():
|
|||
void LLSettingsSky::replaceSettings(LLSD settings)
|
||||
{
|
||||
LLSettingsBase::replaceSettings(settings);
|
||||
|
||||
mNextSunTextureId.setNull();
|
||||
mNextMoonTextureId.setNull();
|
||||
mNextCloudTextureId.setNull();
|
||||
mNextBloomTextureId.setNull();
|
||||
}
|
||||
|
||||
void LLSettingsSky::blend(const LLSettingsBase::ptr_t &end, F64 blendf)
|
||||
|
|
@ -901,7 +904,7 @@ LLColor3 LLSettingsSky::getBlueDensity() const
|
|||
|
||||
LLColor3 LLSettingsSky::getBlueHorizon() const
|
||||
{
|
||||
if (mSettings.has(SETTING_LEGACY_HAZE) && mSettings[SETTING_LEGACY_HAZE].has(SETTING_BLUE_DENSITY))
|
||||
if (mSettings.has(SETTING_LEGACY_HAZE) && mSettings[SETTING_LEGACY_HAZE].has(SETTING_BLUE_HORIZON))
|
||||
{
|
||||
return LLColor3(mSettings[SETTING_LEGACY_HAZE][SETTING_BLUE_HORIZON]);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -185,10 +185,16 @@ void LLSettingsWater::blend(const LLSettingsBase::ptr_t &end, F64 blendf)
|
|||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS("SETTINGS") << "Cound not cast end settings to water. No blend performed." << LL_ENDL;
|
||||
LL_WARNS("SETTINGS") << "Could not cast end settings to water. No blend performed." << LL_ENDL;
|
||||
}
|
||||
setBlendFactor(blendf);
|
||||
mNextNormalMapID = other->getNormalMapID();
|
||||
}
|
||||
|
||||
void LLSettingsWater::replaceSettings(LLSD settings)
|
||||
{
|
||||
LLSettingsBase::replaceSettings(settings);
|
||||
mNextNormalMapID.setNull();
|
||||
mNextTransparentTextureID.setNull();
|
||||
}
|
||||
|
||||
LLSettingsWater::validation_list_t LLSettingsWater::getValidationList() const
|
||||
|
|
|
|||
|
|
@ -64,6 +64,8 @@ public:
|
|||
// Settings status
|
||||
virtual void blend(const LLSettingsBase::ptr_t &end, F64 blendf) SETTINGS_OVERRIDE;
|
||||
|
||||
virtual void replaceSettings(LLSD settings) SETTINGS_OVERRIDE;
|
||||
|
||||
static LLSD defaults(const LLSettingsBase::TrackPosition& position = 0.0f);
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@ LLVirtualTrackball::LLVirtualTrackball(const LLVirtualTrackball::Params& p)
|
|||
btn_rt.rect(LLRect(centerX - axis_offset_lt, border_rect.mTop, centerX + axis_offset_rb, border_rect.mTop - btn_size));
|
||||
btn_rt.click_callback.function(boost::bind(&LLVirtualTrackball::onRotateTopClick, this));
|
||||
btn_rt.mouse_held_callback.function(boost::bind(&LLVirtualTrackball::onRotateTopClick, this));
|
||||
btn_rt.mouseenter_callback.function(boost::bind(&LLVirtualTrackball::onRotateTopMouseEnter, this));
|
||||
mBtnRotateTop = LLUICtrlFactory::create<LLButton>(btn_rt);
|
||||
addChild(mBtnRotateTop);
|
||||
|
||||
|
|
@ -104,6 +105,7 @@ LLVirtualTrackball::LLVirtualTrackball(const LLVirtualTrackball::Params& p)
|
|||
btn_rr.rect(LLRect(border_rect.mRight - btn_size, centerY + axis_offset_lt, border_rect.mRight, centerY - axis_offset_rb));
|
||||
btn_rr.click_callback.function(boost::bind(&LLVirtualTrackball::onRotateRightClick, this));
|
||||
btn_rr.mouse_held_callback.function(boost::bind(&LLVirtualTrackball::onRotateRightClick, this));
|
||||
btn_rr.mouseenter_callback.function(boost::bind(&LLVirtualTrackball::onRotateRightMouseEnter, this));
|
||||
mBtnRotateRight = LLUICtrlFactory::create<LLButton>(btn_rr);
|
||||
addChild(mBtnRotateRight);
|
||||
|
||||
|
|
@ -120,6 +122,7 @@ LLVirtualTrackball::LLVirtualTrackball(const LLVirtualTrackball::Params& p)
|
|||
btn_rb.rect(LLRect(centerX - axis_offset_lt, border_rect.mBottom + btn_size, centerX + axis_offset_rb, border_rect.mBottom));
|
||||
btn_rb.click_callback.function(boost::bind(&LLVirtualTrackball::onRotateBottomClick, this));
|
||||
btn_rb.mouse_held_callback.function(boost::bind(&LLVirtualTrackball::onRotateBottomClick, this));
|
||||
btn_rb.mouseenter_callback.function(boost::bind(&LLVirtualTrackball::onRotateBottomMouseEnter, this));
|
||||
mBtnRotateBottom = LLUICtrlFactory::create<LLButton>(btn_rb);
|
||||
addChild(mBtnRotateBottom);
|
||||
|
||||
|
|
@ -136,6 +139,7 @@ LLVirtualTrackball::LLVirtualTrackball(const LLVirtualTrackball::Params& p)
|
|||
btn_rl.rect(LLRect(border_rect.mLeft, centerY + axis_offset_lt, border_rect.mLeft + btn_size, centerY - axis_offset_rb));
|
||||
btn_rl.click_callback.function(boost::bind(&LLVirtualTrackball::onRotateLeftClick, this));
|
||||
btn_rl.mouse_held_callback.function(boost::bind(&LLVirtualTrackball::onRotateLeftClick, this));
|
||||
btn_rl.mouseenter_callback.function(boost::bind(&LLVirtualTrackball::onRotateLeftMouseEnter, this));
|
||||
mBtnRotateLeft = LLUICtrlFactory::create<LLButton>(btn_rl);
|
||||
addChild(mBtnRotateLeft);
|
||||
|
||||
|
|
@ -228,6 +232,13 @@ void LLVirtualTrackball::draw()
|
|||
gl_circle_2d(draw_point.mV[VX], draw_point.mV[VY], mImgSunFront->getWidth() / 2, 12, false);
|
||||
}
|
||||
|
||||
// hide the direction labels when disabled
|
||||
BOOL enabled = isInEnabledChain();
|
||||
mLabelN->setVisible(enabled);
|
||||
mLabelE->setVisible(enabled);
|
||||
mLabelS->setVisible(enabled);
|
||||
mLabelW->setVisible(enabled);
|
||||
|
||||
LLView::draw();
|
||||
}
|
||||
|
||||
|
|
@ -283,6 +294,26 @@ void LLVirtualTrackball::onRotateRightClick()
|
|||
}
|
||||
}
|
||||
|
||||
void LLVirtualTrackball::onRotateTopMouseEnter()
|
||||
{
|
||||
mBtnRotateTop->setHighlight(true);
|
||||
}
|
||||
|
||||
void LLVirtualTrackball::onRotateBottomMouseEnter()
|
||||
{
|
||||
mBtnRotateBottom->setHighlight(true);
|
||||
}
|
||||
|
||||
void LLVirtualTrackball::onRotateLeftMouseEnter()
|
||||
{
|
||||
mBtnRotateLeft->setHighlight(true);
|
||||
}
|
||||
|
||||
void LLVirtualTrackball::onRotateRightMouseEnter()
|
||||
{
|
||||
mBtnRotateRight->setHighlight(true);
|
||||
}
|
||||
|
||||
void LLVirtualTrackball::setValue(const LLSD& value)
|
||||
{
|
||||
if (value.isArray() && value.size() == 4)
|
||||
|
|
|
|||
|
|
@ -130,6 +130,11 @@ private:
|
|||
void onRotateLeftClick();
|
||||
void onRotateRightClick();
|
||||
|
||||
void onRotateTopMouseEnter();
|
||||
void onRotateBottomMouseEnter();
|
||||
void onRotateLeftMouseEnter();
|
||||
void onRotateRightMouseEnter();
|
||||
|
||||
S32 mPrevX;
|
||||
S32 mPrevY;
|
||||
|
||||
|
|
|
|||
|
|
@ -163,7 +163,6 @@ set(viewer_SOURCE_FILES
|
|||
lldebugview.cpp
|
||||
lldeferredsounds.cpp
|
||||
lldelayedgestureerror.cpp
|
||||
lldensityctrl.cpp
|
||||
lldirpicker.cpp
|
||||
lldonotdisturbnotificationstorage.cpp
|
||||
lldndbutton.cpp
|
||||
|
|
@ -785,7 +784,6 @@ set(viewer_HEADER_FILES
|
|||
lldebugview.h
|
||||
lldeferredsounds.h
|
||||
lldelayedgestureerror.h
|
||||
lldensityctrl.h
|
||||
lldirpicker.h
|
||||
lldonotdisturbnotificationstorage.h
|
||||
lldndbutton.h
|
||||
|
|
|
|||
|
|
@ -38,10 +38,11 @@ void main()
|
|||
{
|
||||
//transform vertex
|
||||
vec4 vert = vec4(position.xyz, 1.0);
|
||||
vec4 pos = (modelview_matrix * vert);
|
||||
vec4 pos = modelview_projection_matrix*vert;
|
||||
|
||||
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
|
||||
gl_Position = pos;
|
||||
|
||||
calcAtmospherics(pos.xyz);
|
||||
|
||||
vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ void main()
|
|||
vec4 sunA = texture2D(diffuseMap, vary_texcoord0.xy);
|
||||
vec4 sunB = texture2D(altDiffuseMap, vary_texcoord0.xy);
|
||||
vec4 c = mix(sunB, sunA, blend_factor);
|
||||
c.rgb = pow(c.rgb, vec3(0.45f));
|
||||
c.rgb = pow(c.rgb, vec3(0.7f));
|
||||
c.rgb = fullbrightAtmosTransport(c.rgb);
|
||||
c.rgb = fullbrightScaleSoftClip(c.rgb);
|
||||
frag_color = c;
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@ void main()
|
|||
{
|
||||
//transform vertex
|
||||
vec4 vert = vec4(position.xyz, 1.0);
|
||||
vec4 pos = (modelview_matrix * vert);
|
||||
vec4 pos = modelview_projection_matrix*vert;
|
||||
|
||||
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
|
||||
gl_Position = pos;
|
||||
|
||||
calcAtmospherics(pos.xyz);
|
||||
|
||||
|
|
|
|||
|
|
@ -724,7 +724,11 @@ void LLDrawPoolWater::shade()
|
|||
sNeedsDistortionUpdate = TRUE;
|
||||
face->renderIndexed();
|
||||
}
|
||||
else if (gGLManager.mHasDepthClamp || deferred_render)
|
||||
// MAINT-9006 using squash clip even for deferred keeps
|
||||
// horizon consistent between ALM and non-ALM rendering
|
||||
// I can't think of a reason we'd want to avoid it. - g
|
||||
//else if (gGLManager.mHasDepthClamp || deferred_render)
|
||||
else if (gGLManager.mHasDepthClamp)
|
||||
{
|
||||
face->renderIndexed();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -572,7 +572,8 @@ void LLDrawPoolWLSky::render(S32 pass)
|
|||
{
|
||||
gGL.pushMatrix();
|
||||
|
||||
gGL.translatef(origin.mV[0], origin.mV[1], origin.mV[2]);
|
||||
// MAINT-9006 keep sun position consistent between ALM and non-ALM rendering
|
||||
//gGL.translatef(origin.mV[0], origin.mV[1], origin.mV[2]);
|
||||
|
||||
// *NOTE: have to bind a texture here since register combiners blending in
|
||||
// renderStars() requires something to be bound and we might as well only
|
||||
|
|
|
|||
|
|
@ -137,7 +137,8 @@ LLFloaterEditExtDayCycle::LLFloaterEditExtDayCycle(const LLSD &key) :
|
|||
mWaterBlender(),
|
||||
mScratchSky(),
|
||||
mScratchWater(),
|
||||
mIsPlaying(false)
|
||||
mIsPlaying(false),
|
||||
mIsDirty(false)
|
||||
{
|
||||
|
||||
mCommitCallbackRegistrar.add(EVNT_DAYTRACK, [this](LLUICtrl *ctrl, const LLSD &data) { onTrackSelectionCallback(data); });
|
||||
|
|
@ -175,7 +176,7 @@ BOOL LLFloaterEditExtDayCycle::postBuild()
|
|||
mFlyoutControl = new LLFlyoutComboBtnCtrl(this, BTN_SAVE, BTN_FLYOUT, XML_FLYOUTMENU_FILE);
|
||||
mFlyoutControl->setAction([this](LLUICtrl *ctrl, const LLSD &data) { onButtonApply(ctrl, data); });
|
||||
|
||||
getChild<LLButton>(BTN_CANCEL, true)->setCommitCallback([this](LLUICtrl *ctrl, const LLSD &data) { onBtnCancel(); });
|
||||
getChild<LLButton>(BTN_CANCEL, true)->setCommitCallback([this](LLUICtrl *ctrl, const LLSD &data) { onClickCloseBtn(); });
|
||||
mTimeSlider->setCommitCallback([this](LLUICtrl *ctrl, const LLSD &data) { onTimeSliderMoved(); });
|
||||
mAddFrameButton->setCommitCallback([this](LLUICtrl *ctrl, const LLSD &data) { onAddTrack(); });
|
||||
mDeleteFrameButton->setCommitCallback([this](LLUICtrl *ctrl, const LLSD &data) { onRemoveTrack(); });
|
||||
|
|
@ -189,6 +190,26 @@ BOOL LLFloaterEditExtDayCycle::postBuild()
|
|||
|
||||
mTimeSlider->addSlider(0);
|
||||
|
||||
LLTabContainer* tab_container = mSkyTabLayoutContainer->getChild<LLTabContainer>("sky_tabs");
|
||||
S32 tab_count = tab_container->getTabCount();
|
||||
|
||||
for (S32 idx = 0; idx < tab_count; ++idx)
|
||||
{
|
||||
LLSettingsEditPanel *panel = static_cast<LLSettingsEditPanel *>(tab_container->getPanelByIndex(idx));
|
||||
if (panel)
|
||||
panel->setOnDirtyFlagChanged([this](LLPanel *, bool val) { onPanelDirtyFlagChanged(val); });
|
||||
}
|
||||
|
||||
tab_container = mWaterTabLayoutContainer->getChild<LLTabContainer>("water_tabs");
|
||||
tab_count = tab_container->getTabCount();
|
||||
|
||||
for (S32 idx = 0; idx < tab_count; ++idx)
|
||||
{
|
||||
LLSettingsEditPanel *panel = static_cast<LLSettingsEditPanel *>(tab_container->getPanelByIndex(idx));
|
||||
if (panel)
|
||||
panel->setOnDirtyFlagChanged([this](LLPanel *, bool val) { onPanelDirtyFlagChanged(val); });
|
||||
}
|
||||
|
||||
//getChild<LLButton>("sky1_track", true)->setToggleState(true);
|
||||
|
||||
return TRUE;
|
||||
|
|
@ -312,12 +333,12 @@ void LLFloaterEditExtDayCycle::onClose(bool app_quitting)
|
|||
doCloseInventoryFloater(app_quitting);
|
||||
// there's no point to change environment if we're quitting
|
||||
// or if we already restored environment
|
||||
if (!app_quitting && LLEnvironment::instance().getSelectedEnvironment() == LLEnvironment::ENV_EDIT)
|
||||
stopPlay();
|
||||
if (!app_quitting)
|
||||
{
|
||||
LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
|
||||
LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::TRANSITION_FAST);
|
||||
LLEnvironment::instance().clearEnvironment(LLEnvironment::ENV_EDIT);
|
||||
}
|
||||
stopPlay();
|
||||
}
|
||||
|
||||
void LLFloaterEditExtDayCycle::onFocusReceived()
|
||||
|
|
@ -355,7 +376,7 @@ void LLFloaterEditExtDayCycle::refresh()
|
|||
mFlyoutControl->setMenuItemVisible(ACTION_APPLY_PARCEL, show_apply);
|
||||
mFlyoutControl->setMenuItemVisible(ACTION_APPLY_REGION, show_apply);
|
||||
|
||||
mFlyoutControl->setMenuItemEnabled(ACTION_COMMIT, show_commit);
|
||||
mFlyoutControl->setMenuItemEnabled(ACTION_COMMIT, show_commit && !mCommitSignal.empty());
|
||||
mFlyoutControl->setMenuItemEnabled(ACTION_SAVE, is_inventory_avail);
|
||||
mFlyoutControl->setMenuItemEnabled(ACTION_SAVEAS, is_inventory_avail);
|
||||
mFlyoutControl->setMenuItemEnabled(ACTION_APPLY_LOCAL, true);
|
||||
|
|
@ -445,14 +466,18 @@ void LLFloaterEditExtDayCycle::onButtonApply(LLUICtrl *ctrl, const LLSD &data)
|
|||
}
|
||||
}
|
||||
|
||||
void LLFloaterEditExtDayCycle::onBtnCancel()
|
||||
|
||||
void LLFloaterEditExtDayCycle::onClickCloseBtn(bool app_quitting /*= false*/)
|
||||
{
|
||||
closeFloater(); // will restore env
|
||||
if (!app_quitting)
|
||||
checkAndConfirmSettingsLoss([this](){ closeFloater(); });
|
||||
else
|
||||
closeFloater();
|
||||
}
|
||||
|
||||
void LLFloaterEditExtDayCycle::onButtonImport()
|
||||
{
|
||||
doImportFromDisk();
|
||||
checkAndConfirmSettingsLoss([this]() { doImportFromDisk(); });
|
||||
}
|
||||
|
||||
void LLFloaterEditExtDayCycle::onButtonLoadFrame()
|
||||
|
|
@ -616,11 +641,6 @@ void LLFloaterEditExtDayCycle::onFrameSliderCallback(const LLSD &data)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
mTimeSlider->setCurSliderValue(sliderpos);
|
||||
|
||||
updateTabs();
|
||||
LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_INSTANT);
|
||||
}
|
||||
|
||||
void LLFloaterEditExtDayCycle::onFrameSliderDoubleClick(S32 x, S32 y, MASK mask)
|
||||
|
|
@ -647,6 +667,11 @@ void LLFloaterEditExtDayCycle::onFrameSliderMouseDown(S32 x, S32 y, MASK mask)
|
|||
mFramesSlider->resetCurSlider();
|
||||
}
|
||||
}
|
||||
|
||||
mTimeSlider->setCurSliderValue(sliderpos);
|
||||
|
||||
updateTabs();
|
||||
LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_INSTANT);
|
||||
}
|
||||
|
||||
void LLFloaterEditExtDayCycle::onFrameSliderMouseUp(S32 x, S32 y, MASK mask)
|
||||
|
|
@ -657,6 +682,35 @@ void LLFloaterEditExtDayCycle::onFrameSliderMouseUp(S32 x, S32 y, MASK mask)
|
|||
selectFrame(sliderpos, LLSettingsDay::DEFAULT_FRAME_SLOP_FACTOR);
|
||||
}
|
||||
|
||||
|
||||
void LLFloaterEditExtDayCycle::onPanelDirtyFlagChanged(bool value)
|
||||
{
|
||||
if (value)
|
||||
setDirtyFlag();
|
||||
}
|
||||
|
||||
void LLFloaterEditExtDayCycle::checkAndConfirmSettingsLoss(on_confirm_fn cb)
|
||||
{
|
||||
if (isDirty())
|
||||
{
|
||||
LLSD args(LLSDMap("TYPE", mEditDay->getSettingsType())
|
||||
("NAME", mEditDay->getName()));
|
||||
|
||||
// create and show confirmation textbox
|
||||
LLNotificationsUtil::add("SettingsConfirmLoss", args, LLSD(),
|
||||
[this, cb](const LLSD¬if, const LLSD&resp)
|
||||
{
|
||||
S32 opt = LLNotificationsUtil::getSelectedOption(notif, resp);
|
||||
if (opt == 0)
|
||||
cb();
|
||||
});
|
||||
}
|
||||
else if (cb)
|
||||
{
|
||||
cb();
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterEditExtDayCycle::onTimeSliderMoved()
|
||||
{
|
||||
selectFrame(mTimeSlider->getCurSliderValue(), LLSettingsDay::DEFAULT_FRAME_SLOP_FACTOR);
|
||||
|
|
@ -1176,6 +1230,7 @@ void LLFloaterEditExtDayCycle::onInventoryCreated(LLUUID asset_id, LLUUID invent
|
|||
return;
|
||||
}
|
||||
|
||||
clearDirtyFlag();
|
||||
setFocus(TRUE); // Call back the focus...
|
||||
loadInventoryItem(inventory_id);
|
||||
}
|
||||
|
|
@ -1184,6 +1239,7 @@ void LLFloaterEditExtDayCycle::onInventoryUpdated(LLUUID asset_id, LLUUID invent
|
|||
{
|
||||
LL_WARNS("ENVDAYEDIT") << "Inventory item " << inventory_id << " has been updated with asset " << asset_id << " results are:" << results << LL_ENDL;
|
||||
|
||||
clearDirtyFlag();
|
||||
if (inventory_id != mInventoryId)
|
||||
{
|
||||
loadInventoryItem(inventory_id);
|
||||
|
|
@ -1209,6 +1265,7 @@ void LLFloaterEditExtDayCycle::doImportFromDisk()
|
|||
}
|
||||
|
||||
mCurrentTrack = 1;
|
||||
setDirtyFlag();
|
||||
setEditDayCycle(legacyday);
|
||||
}
|
||||
}
|
||||
|
|
@ -1285,6 +1342,33 @@ void LLFloaterEditExtDayCycle::onIdlePlay(void* user_data)
|
|||
|
||||
}
|
||||
|
||||
|
||||
void LLFloaterEditExtDayCycle::clearDirtyFlag()
|
||||
{
|
||||
mIsDirty = false;
|
||||
|
||||
LLTabContainer* tab_container = mSkyTabLayoutContainer->getChild<LLTabContainer>("sky_tabs");
|
||||
S32 tab_count = tab_container->getTabCount();
|
||||
|
||||
for (S32 idx = 0; idx < tab_count; ++idx)
|
||||
{
|
||||
LLSettingsEditPanel *panel = static_cast<LLSettingsEditPanel *>(tab_container->getPanelByIndex(idx));
|
||||
if (panel)
|
||||
panel->clearIsDirty();
|
||||
}
|
||||
|
||||
tab_container = mWaterTabLayoutContainer->getChild<LLTabContainer>("water_tabs");
|
||||
tab_count = tab_container->getTabCount();
|
||||
|
||||
for (S32 idx = 0; idx < tab_count; ++idx)
|
||||
{
|
||||
LLSettingsEditPanel *panel = static_cast<LLSettingsEditPanel *>(tab_container->getPanelByIndex(idx));
|
||||
if (panel)
|
||||
panel->clearIsDirty();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void LLFloaterEditExtDayCycle::doOpenInventoryFloater(LLSettingsType::type_e type, LLUUID currasset)
|
||||
{
|
||||
// LLUI::sWindow->setCursor(UI_CURSOR_WAIT);
|
||||
|
|
|
|||
|
|
@ -91,13 +91,15 @@ public:
|
|||
|
||||
BOOL handleKeyUp(KEY key, MASK mask, BOOL called_from_parent) override;
|
||||
|
||||
private:
|
||||
BOOL isDirty() const override { return getIsDirty(); }
|
||||
|
||||
private:
|
||||
typedef std::function<void()> on_confirm_fn;
|
||||
F32 getCurrentFrame() const;
|
||||
|
||||
// flyout response/click
|
||||
void onButtonApply(LLUICtrl *ctrl, const LLSD &data);
|
||||
void onBtnCancel();
|
||||
virtual void onClickCloseBtn(bool app_quitting = false) override;
|
||||
void onButtonImport();
|
||||
void onButtonLoadFrame();
|
||||
void onAddTrack();
|
||||
|
|
@ -113,6 +115,10 @@ private:
|
|||
void onFrameSliderMouseDown(S32 x, S32 y, MASK mask);
|
||||
void onFrameSliderMouseUp(S32 x, S32 y, MASK mask);
|
||||
|
||||
void onPanelDirtyFlagChanged(bool);
|
||||
|
||||
void checkAndConfirmSettingsLoss(on_confirm_fn cb);
|
||||
|
||||
void selectTrack(U32 track_index, bool force = false);
|
||||
void selectFrame(F32 frame, F32 slop_factor);
|
||||
void clearTabs();
|
||||
|
|
@ -158,6 +164,10 @@ private:
|
|||
void stopPlay();
|
||||
static void onIdlePlay(void *);
|
||||
|
||||
bool getIsDirty() const { return mIsDirty; }
|
||||
void setDirtyFlag() { mIsDirty = true; }
|
||||
virtual void clearDirtyFlag();
|
||||
|
||||
LLSettingsDay::ptr_t mEditDay; // edited copy
|
||||
LLSettingsDay::Seconds mDayLength;
|
||||
U32 mCurrentTrack;
|
||||
|
|
@ -190,6 +200,7 @@ private:
|
|||
LLFrameTimer mPlayTimer;
|
||||
F32 mPlayStartFrame; // an env frame
|
||||
bool mIsPlaying;
|
||||
bool mIsDirty;
|
||||
|
||||
edit_commit_signal_t mCommitSignal;
|
||||
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@ namespace
|
|||
|
||||
const std::string ACTION_SAVE("save_settings");
|
||||
const std::string ACTION_SAVEAS("save_as_new_settings");
|
||||
const std::string ACTION_COMMIT("commit_changes");
|
||||
const std::string ACTION_APPLY_LOCAL("apply_local");
|
||||
const std::string ACTION_APPLY_PARCEL("apply_parcel");
|
||||
const std::string ACTION_APPLY_REGION("apply_region");
|
||||
|
|
@ -85,7 +86,8 @@ LLFloaterFixedEnvironment::LLFloaterFixedEnvironment(const LLSD &key) :
|
|||
LLFloater(key),
|
||||
mFlyoutControl(nullptr),
|
||||
mInventoryId(),
|
||||
mInventoryItem(nullptr)
|
||||
mInventoryItem(nullptr),
|
||||
mIsDirty(false)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -103,11 +105,12 @@ BOOL LLFloaterFixedEnvironment::postBuild()
|
|||
mTxtName->setCommitCallback([this](LLUICtrl *, const LLSD &) { onNameChanged(mTxtName->getValue().asString()); });
|
||||
|
||||
getChild<LLButton>(BUTTON_NAME_IMPORT)->setClickedCallback([this](LLUICtrl *, const LLSD &) { onButtonImport(); });
|
||||
getChild<LLButton>(BUTTON_NAME_CANCEL)->setClickedCallback([this](LLUICtrl *, const LLSD &) { onButtonCancel(); });
|
||||
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->setAction([this](LLUICtrl *ctrl, const LLSD &data) { onButtonApply(ctrl, data); });
|
||||
mFlyoutControl->setMenuItemVisible(ACTION_COMMIT, false);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -191,6 +194,24 @@ void LLFloaterFixedEnvironment::syncronizeTabs()
|
|||
}
|
||||
}
|
||||
|
||||
LLFloaterSettingsPicker * LLFloaterFixedEnvironment::getSettingsPicker()
|
||||
{
|
||||
LLFloaterSettingsPicker *picker = static_cast<LLFloaterSettingsPicker *>(mInventoryFloater.get());
|
||||
|
||||
// Show the dialog
|
||||
if (!picker)
|
||||
{
|
||||
picker = new LLFloaterSettingsPicker(this,
|
||||
LLUUID::null, "SELECT SETTINGS");
|
||||
|
||||
mInventoryFloater = picker->getHandle();
|
||||
|
||||
picker->setCommitCallback([this](LLUICtrl *, const LLSD &data){ onPickerCommitSetting(data.asUUID()); });
|
||||
}
|
||||
|
||||
return picker;
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironment::loadInventoryItem(const LLUUID &inventoryId)
|
||||
{
|
||||
if (inventoryId.isNull())
|
||||
|
|
@ -231,6 +252,29 @@ void LLFloaterFixedEnvironment::loadInventoryItem(const LLUUID &inventoryId)
|
|||
[this](LLUUID asset_id, LLSettingsBase::ptr_t settins, S32 status, LLExtStat) { onAssetLoaded(asset_id, settins, status); });
|
||||
}
|
||||
|
||||
|
||||
void LLFloaterFixedEnvironment::checkAndConfirmSettingsLoss(LLFloaterFixedEnvironment::on_confirm_fn cb)
|
||||
{
|
||||
if (isDirty())
|
||||
{
|
||||
LLSD args(LLSDMap("TYPE", mSettings->getSettingsType())
|
||||
("NAME", mSettings->getName()));
|
||||
|
||||
// create and show confirmation textbox
|
||||
LLNotificationsUtil::add("SettingsConfirmLoss", args, LLSD(),
|
||||
[this, cb](const LLSD¬if, const LLSD&resp)
|
||||
{
|
||||
S32 opt = LLNotificationsUtil::getSelectedOption(notif, resp);
|
||||
if (opt == 0)
|
||||
cb();
|
||||
});
|
||||
}
|
||||
else if (cb)
|
||||
{
|
||||
cb();
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironment::onPickerCommitSetting(LLUUID asset_id)
|
||||
{
|
||||
LLSettingsVOBase::getSettingsAsset(asset_id,
|
||||
|
|
@ -257,11 +301,12 @@ void LLFloaterFixedEnvironment::onAssetLoaded(LLUUID asset_id, LLSettingsBase::p
|
|||
void LLFloaterFixedEnvironment::onNameChanged(const std::string &name)
|
||||
{
|
||||
mSettings->setName(name);
|
||||
setDirtyFlag();
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironment::onButtonImport()
|
||||
{
|
||||
doImportFromDisk();
|
||||
checkAndConfirmSettingsLoss([this](){ doImportFromDisk(); });
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironment::onButtonApply(LLUICtrl *ctrl, const LLSD &data)
|
||||
|
|
@ -288,31 +333,17 @@ void LLFloaterFixedEnvironment::onButtonApply(LLUICtrl *ctrl, const LLSD &data)
|
|||
}
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironment::onButtonCancel()
|
||||
void LLFloaterFixedEnvironment::onClickCloseBtn(bool app_quitting)
|
||||
{
|
||||
// *TODO*: If changed issue a warning?
|
||||
this->closeFloater();
|
||||
if (!app_quitting)
|
||||
checkAndConfirmSettingsLoss([this](){ closeFloater(); });
|
||||
else
|
||||
closeFloater();
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironment::onButtonLoad()
|
||||
{
|
||||
// LLUI::sWindow->setCursor(UI_CURSOR_WAIT);
|
||||
LLFloaterSettingsPicker *picker = static_cast<LLFloaterSettingsPicker *>(mInventoryFloater.get());
|
||||
|
||||
// Show the dialog
|
||||
if (!picker)
|
||||
{
|
||||
picker = new LLFloaterSettingsPicker(this,
|
||||
LLUUID::null, "SELECT SETTINGS");
|
||||
|
||||
mInventoryFloater = picker->getHandle();
|
||||
|
||||
picker->setCommitCallback([this](LLUICtrl *, const LLSD &data){ onPickerCommitSetting(data.asUUID()); });
|
||||
}
|
||||
|
||||
picker->setSettingsFilter(mSettings->getSettingsTypeValue());
|
||||
picker->openFloater();
|
||||
picker->setFocus(TRUE);
|
||||
checkAndConfirmSettingsLoss([this](){ doSelectFromInventory(); });
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironment::doApplyCreateNewInventory()
|
||||
|
|
@ -396,6 +427,7 @@ void LLFloaterFixedEnvironment::onInventoryCreated(LLUUID asset_id, LLUUID inven
|
|||
return;
|
||||
}
|
||||
|
||||
clearDirtyFlag();
|
||||
setFocus(TRUE); // Call back the focus...
|
||||
loadInventoryItem(inventory_id);
|
||||
}
|
||||
|
|
@ -404,12 +436,44 @@ void LLFloaterFixedEnvironment::onInventoryUpdated(LLUUID asset_id, LLUUID inven
|
|||
{
|
||||
LL_WARNS("ENVIRONMENT") << "Inventory item " << inventory_id << " has been updated with asset " << asset_id << " results are:" << results << LL_ENDL;
|
||||
|
||||
clearDirtyFlag();
|
||||
if (inventory_id != mInventoryId)
|
||||
{
|
||||
loadInventoryItem(inventory_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LLFloaterFixedEnvironment::clearDirtyFlag()
|
||||
{
|
||||
mIsDirty = false;
|
||||
|
||||
S32 count = mTab->getTabCount();
|
||||
|
||||
for (S32 idx = 0; idx < count; ++idx)
|
||||
{
|
||||
LLSettingsEditPanel *panel = static_cast<LLSettingsEditPanel *>(mTab->getPanelByIndex(idx));
|
||||
if (panel)
|
||||
panel->clearIsDirty();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironment::doSelectFromInventory()
|
||||
{
|
||||
LLFloaterSettingsPicker *picker = getSettingsPicker();
|
||||
|
||||
picker->setSettingsFilter(mSettings->getSettingsTypeValue());
|
||||
picker->openFloater();
|
||||
picker->setFocus(TRUE);
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironment::onPanelDirtyFlagChanged(bool value)
|
||||
{
|
||||
if (value)
|
||||
setDirtyFlag();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
bool LLFloaterFixedEnvironment::canUseInventory() const
|
||||
{
|
||||
|
|
@ -452,6 +516,7 @@ BOOL LLFloaterFixedEnvironmentWater::postBuild()
|
|||
panel = new LLPanelSettingsWaterMainTab;
|
||||
panel->buildFromFile("panel_settings_water.xml");
|
||||
panel->setWater(std::static_pointer_cast<LLSettingsWater>(mSettings));
|
||||
panel->setOnDirtyFlagChanged( [this] (LLPanel *, bool value) { onPanelDirtyFlagChanged(value); });
|
||||
mTab->addTabPanel(LLTabContainer::TabPanelParams().panel(panel).select_tab(true));
|
||||
|
||||
return TRUE;
|
||||
|
|
@ -477,11 +542,6 @@ void LLFloaterFixedEnvironmentWater::onOpen(const LLSD& key)
|
|||
LLFloaterFixedEnvironment::onOpen(key);
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironmentWater::onClose(bool app_quitting)
|
||||
{
|
||||
LLFloaterFixedEnvironment::onClose(app_quitting);
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironmentWater::doImportFromDisk()
|
||||
{ // Load a a legacy Windlight XML from disk.
|
||||
|
||||
|
|
@ -500,8 +560,9 @@ void LLFloaterFixedEnvironmentWater::doImportFromDisk()
|
|||
return;
|
||||
}
|
||||
|
||||
setDirtyFlag();
|
||||
LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_EDIT, legacywater);
|
||||
this->setEditSettings(legacywater);
|
||||
setEditSettings(legacywater);
|
||||
LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_FAST, true);
|
||||
}
|
||||
}
|
||||
|
|
@ -520,16 +581,19 @@ BOOL LLFloaterFixedEnvironmentSky::postBuild()
|
|||
panel = new LLPanelSettingsSkyAtmosTab;
|
||||
panel->buildFromFile("panel_settings_sky_atmos.xml");
|
||||
panel->setSky(std::static_pointer_cast<LLSettingsSky>(mSettings));
|
||||
panel->setOnDirtyFlagChanged([this](LLPanel *, bool value) { onPanelDirtyFlagChanged(value); });
|
||||
mTab->addTabPanel(LLTabContainer::TabPanelParams().panel(panel).select_tab(true));
|
||||
|
||||
panel = new LLPanelSettingsSkyCloudTab;
|
||||
panel->buildFromFile("panel_settings_sky_clouds.xml");
|
||||
panel->setSky(std::static_pointer_cast<LLSettingsSky>(mSettings));
|
||||
panel->setOnDirtyFlagChanged([this](LLPanel *, bool value) { onPanelDirtyFlagChanged(value); });
|
||||
mTab->addTabPanel(LLTabContainer::TabPanelParams().panel(panel).select_tab(false));
|
||||
|
||||
panel = new LLPanelSettingsSkySunMoonTab;
|
||||
panel->buildFromFile("panel_settings_sky_sunmoon.xml");
|
||||
panel->setSky(std::static_pointer_cast<LLSettingsSky>(mSettings));
|
||||
panel->setOnDirtyFlagChanged([this](LLPanel *, bool value) { onPanelDirtyFlagChanged(value); });
|
||||
mTab->addTabPanel(LLTabContainer::TabPanelParams().panel(panel).select_tab(false));
|
||||
|
||||
return TRUE;
|
||||
|
|
@ -553,12 +617,6 @@ void LLFloaterFixedEnvironmentSky::onOpen(const LLSD& key)
|
|||
}
|
||||
|
||||
LLFloaterFixedEnvironment::onOpen(key);
|
||||
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironmentSky::onClose(bool app_quitting)
|
||||
{
|
||||
LLFloaterFixedEnvironment::onClose(app_quitting);
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironmentSky::doImportFromDisk()
|
||||
|
|
@ -580,8 +638,9 @@ void LLFloaterFixedEnvironmentSky::doImportFromDisk()
|
|||
return;
|
||||
}
|
||||
|
||||
clearDirtyFlag();
|
||||
LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_EDIT, legacysky);
|
||||
this->setEditSettings(legacysky);
|
||||
setEditSettings(legacysky);
|
||||
LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_FAST, true);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,9 +32,12 @@
|
|||
#include "llflyoutcombobtn.h"
|
||||
#include "llinventory.h"
|
||||
|
||||
#include "boost/signals2.hpp"
|
||||
|
||||
class LLTabContainer;
|
||||
class LLButton;
|
||||
class LLLineEditor;
|
||||
class LLFloaterSettingsPicker;
|
||||
|
||||
/**
|
||||
* Floater container for creating and editing fixed environment settings.
|
||||
|
|
@ -56,16 +59,24 @@ public:
|
|||
virtual void onFocusReceived() override;
|
||||
virtual void onFocusLost() override;
|
||||
|
||||
void setEditSettings(const LLSettingsBase::ptr_t &settings) { mSettings = settings; syncronizeTabs(); refresh(); }
|
||||
void setEditSettings(const LLSettingsBase::ptr_t &settings) { mSettings = settings; clearDirtyFlag(); syncronizeTabs(); refresh(); }
|
||||
LLSettingsBase::ptr_t getEditSettings() const { return mSettings; }
|
||||
|
||||
virtual BOOL isDirty() const override { return getIsDirty(); }
|
||||
|
||||
protected:
|
||||
typedef std::function<void()> on_confirm_fn;
|
||||
|
||||
virtual void updateEditEnvironment() = 0;
|
||||
virtual void refresh() override;
|
||||
virtual void syncronizeTabs();
|
||||
|
||||
LLFloaterSettingsPicker *getSettingsPicker();
|
||||
|
||||
void loadInventoryItem(const LLUUID &inventoryId);
|
||||
|
||||
void checkAndConfirmSettingsLoss(on_confirm_fn cb);
|
||||
|
||||
LLTabContainer * mTab;
|
||||
LLLineEditor * mTxtName;
|
||||
|
||||
|
|
@ -90,16 +101,26 @@ protected:
|
|||
void onInventoryCreated(LLUUID asset_id, LLUUID inventory_id, LLSD results);
|
||||
void onInventoryUpdated(LLUUID asset_id, LLUUID inventory_id, LLSD results);
|
||||
|
||||
bool getIsDirty() const { return mIsDirty; }
|
||||
void setDirtyFlag() { mIsDirty = true; }
|
||||
virtual void clearDirtyFlag();
|
||||
|
||||
void doSelectFromInventory();
|
||||
void onPanelDirtyFlagChanged(bool);
|
||||
|
||||
virtual void onClickCloseBtn(bool app_quitting = false) override;
|
||||
|
||||
private:
|
||||
void onNameChanged(const std::string &name);
|
||||
|
||||
void onButtonImport();
|
||||
void onButtonApply(LLUICtrl *ctrl, const LLSD &data);
|
||||
void onButtonCancel();
|
||||
void onButtonLoad();
|
||||
|
||||
void onPickerCommitSetting(LLUUID asset_id);
|
||||
void onAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settins, S32 status);
|
||||
|
||||
bool mIsDirty;
|
||||
};
|
||||
|
||||
class LLFloaterFixedEnvironmentWater : public LLFloaterFixedEnvironment
|
||||
|
|
@ -112,7 +133,6 @@ public:
|
|||
BOOL postBuild() override;
|
||||
|
||||
virtual void onOpen(const LLSD& key) override;
|
||||
virtual void onClose(bool app_quitting) override;
|
||||
|
||||
protected:
|
||||
virtual void updateEditEnvironment() override;
|
||||
|
|
@ -132,7 +152,6 @@ public:
|
|||
BOOL postBuild() override;
|
||||
|
||||
virtual void onOpen(const LLSD& key) override;
|
||||
virtual void onClose(bool app_quitting) override;
|
||||
|
||||
protected:
|
||||
virtual void updateEditEnvironment() override;
|
||||
|
|
@ -147,13 +166,26 @@ class LLSettingsEditPanel : public LLPanel
|
|||
public:
|
||||
virtual void setSettings(const LLSettingsBase::ptr_t &) = 0;
|
||||
|
||||
// virtual void refresh() override;
|
||||
typedef boost::signals2::signal<void(LLPanel *, bool)> on_dirty_charged_sg;
|
||||
typedef boost::signals2::connection connection_t;
|
||||
|
||||
inline bool getIsDirty() const { return mIsDirty; }
|
||||
inline void setIsDirty() { mIsDirty = true; if (!mOnDirtyChanged.empty()) mOnDirtyChanged(this, mIsDirty); }
|
||||
inline void clearIsDirty() { mIsDirty = false; if (!mOnDirtyChanged.empty()) mOnDirtyChanged(this, mIsDirty); }
|
||||
|
||||
inline connection_t setOnDirtyFlagChanged(on_dirty_charged_sg::slot_type cb) { return mOnDirtyChanged.connect(cb); }
|
||||
|
||||
protected:
|
||||
LLSettingsEditPanel() :
|
||||
LLPanel()
|
||||
LLPanel(),
|
||||
mIsDirty(false),
|
||||
mOnDirtyChanged()
|
||||
{}
|
||||
|
||||
private:
|
||||
bool mIsDirty;
|
||||
|
||||
on_dirty_charged_sg mOnDirtyChanged;
|
||||
};
|
||||
|
||||
#endif // LL_FLOATERFIXEDENVIRONMENT_H
|
||||
|
|
|
|||
|
|
@ -5097,6 +5097,11 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
|
|||
tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory");
|
||||
accept = FALSE;
|
||||
}
|
||||
else if ((inv_item->getActualType() == LLAssetType::AT_SETTINGS) && !LLEnvironment::instance().isInventoryEnabled())
|
||||
{
|
||||
tooltip_msg = LLTrans::getString("NoEnvironmentSettings");
|
||||
accept = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Don't allow placing an original item from a notecard to Current Outfit or an outfit folder
|
||||
|
|
|
|||
|
|
@ -109,6 +109,7 @@ public:
|
|||
virtual void closeItem() {}
|
||||
virtual void showProperties();
|
||||
virtual BOOL isItemRenameable() const { return TRUE; }
|
||||
virtual BOOL isMultiPreviewAllowed() { return TRUE; }
|
||||
//virtual BOOL renameItem(const std::string& new_name) {}
|
||||
virtual BOOL isItemRemovable() const;
|
||||
virtual BOOL isItemMovable() const;
|
||||
|
|
@ -621,6 +622,7 @@ public:
|
|||
virtual LLUIImagePtr getIcon() const;
|
||||
virtual void performAction(LLInventoryModel* model, std::string action);
|
||||
virtual void openItem();
|
||||
virtual BOOL isMultiPreviewAllowed() { return FALSE; }
|
||||
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
|
||||
virtual BOOL renameItem(const std::string& new_name);
|
||||
virtual LLSettingsType::type_e getSettingsType() const { return mSettingsType; }
|
||||
|
|
|
|||
|
|
@ -2395,10 +2395,29 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root
|
|||
|
||||
if (("task_open" == action || "open" == action) && selected_items.size() > 1)
|
||||
{
|
||||
multi_previewp = new LLMultiPreview();
|
||||
gFloaterView->addChild(multi_previewp);
|
||||
bool open_multi_preview = true;
|
||||
|
||||
LLFloater::setFloaterHost(multi_previewp);
|
||||
for (std::set<LLFolderViewItem*>::iterator set_iter = selected_items.begin(); set_iter != selected_items.end(); ++set_iter)
|
||||
{
|
||||
LLFolderViewItem* folder_item = *set_iter;
|
||||
if (folder_item)
|
||||
{
|
||||
LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getViewModelItem();
|
||||
if (!bridge || !bridge->isMultiPreviewAllowed())
|
||||
{
|
||||
open_multi_preview = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (open_multi_preview)
|
||||
{
|
||||
multi_previewp = new LLMultiPreview();
|
||||
gFloaterView->addChild(multi_previewp);
|
||||
|
||||
LLFloater::setFloaterHost(multi_previewp);
|
||||
}
|
||||
|
||||
}
|
||||
else if (("task_properties" == action || "properties" == action) && selected_items.size() > 1)
|
||||
|
|
|
|||
|
|
@ -2604,6 +2604,7 @@ void LLInventoryModel::createCommonSystemCategories()
|
|||
gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE,true);
|
||||
gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD,true);
|
||||
gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS,true);
|
||||
gInventory.findCategoryUUIDForType(LLFolderType::FT_SETTINGS, true);
|
||||
}
|
||||
|
||||
struct LLUUIDAndName
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@
|
|||
#include "llvirtualtrackball.h"
|
||||
#include "llsettingssky.h"
|
||||
|
||||
static LLDefaultChildRegistry::Register<LLDensityCtrl> register_density_control("densityctrl");
|
||||
|
||||
namespace
|
||||
{
|
||||
|
|
@ -73,6 +72,23 @@ namespace
|
|||
const std::string FIELD_SKY_MOON_IMAGE("moon_image");
|
||||
const std::string FIELD_SKY_MOON_SCALE("moon_scale");
|
||||
|
||||
const std::string FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL("rayleigh_exponential");
|
||||
const std::string FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL_SCALE("rayleigh_exponential_scale");
|
||||
const std::string FIELD_SKY_DENSITY_RAYLEIGH_LINEAR("rayleigh_linear");
|
||||
const std::string FIELD_SKY_DENSITY_RAYLEIGH_CONSTANT("rayleigh_constant");
|
||||
|
||||
const std::string FIELD_SKY_DENSITY_MIE_EXPONENTIAL("mie_exponential");
|
||||
const std::string FIELD_SKY_DENSITY_MIE_EXPONENTIAL_SCALE("mie_exponential_scale");
|
||||
const std::string FIELD_SKY_DENSITY_MIE_LINEAR("mie_linear");
|
||||
const std::string FIELD_SKY_DENSITY_MIE_CONSTANT("mie_constant");
|
||||
const std::string FIELD_SKY_DENSITY_MIE_ANISO("mie_aniso_factor");
|
||||
|
||||
const std::string FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL("absorption_exponential");
|
||||
const std::string FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL_SCALE("absorption_exponential_scale");
|
||||
const std::string FIELD_SKY_DENSITY_ABSORPTION_LINEAR("absorption_linear");
|
||||
const std::string FIELD_SKY_DENSITY_ABSORPTION_CONSTANT("absorption_constant");
|
||||
const std::string FIELD_SKY_DENSITY_MAX_ALTITUDE("max_altitude");
|
||||
|
||||
const F32 SLIDER_SCALE_SUN_AMBIENT(3.0f);
|
||||
const F32 SLIDER_SCALE_BLUE_HORIZON_DENSITY(2.0f);
|
||||
const F32 SLIDER_SCALE_GLOW_R(20.0f);
|
||||
|
|
@ -160,46 +176,64 @@ void LLPanelSettingsSkyAtmosTab::refresh()
|
|||
void LLPanelSettingsSkyAtmosTab::onAmbientLightChanged()
|
||||
{
|
||||
mSkySettings->setAmbientColor(LLColor3(getChild<LLColorSwatchCtrl>(FIELD_SKY_AMBIENT_LIGHT)->get() * SLIDER_SCALE_SUN_AMBIENT));
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkyAtmosTab::onBlueHorizonChanged()
|
||||
{
|
||||
mSkySettings->setBlueHorizon(LLColor3(getChild<LLColorSwatchCtrl>(FIELD_SKY_BLUE_HORIZON)->get() * SLIDER_SCALE_BLUE_HORIZON_DENSITY));
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkyAtmosTab::onBlueDensityChanged()
|
||||
{
|
||||
mSkySettings->setBlueDensity(LLColor3(getChild<LLColorSwatchCtrl>(FIELD_SKY_BLUE_DENSITY)->get() * SLIDER_SCALE_BLUE_HORIZON_DENSITY));
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkyAtmosTab::onHazeHorizonChanged()
|
||||
{
|
||||
mSkySettings->setHazeHorizon(getChild<LLUICtrl>(FIELD_SKY_HAZE_HORIZON)->getValue().asReal());
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkyAtmosTab::onHazeDensityChanged()
|
||||
{
|
||||
mSkySettings->setHazeDensity(getChild<LLUICtrl>(FIELD_SKY_HAZE_DENSITY)->getValue().asReal());
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkyAtmosTab::onSceneGammaChanged()
|
||||
{
|
||||
mSkySettings->setGamma(getChild<LLUICtrl>(FIELD_SKY_SCENE_GAMMA)->getValue().asReal());
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkyAtmosTab::onDensityMultipChanged()
|
||||
{
|
||||
mSkySettings->setDensityMultiplier(getChild<LLUICtrl>(FIELD_SKY_DENSITY_MULTIP)->getValue().asReal());
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkyAtmosTab::onDistanceMultipChanged()
|
||||
{
|
||||
mSkySettings->setDistanceMultiplier(getChild<LLUICtrl>(FIELD_SKY_DISTANCE_MULTIP)->getValue().asReal());
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkyAtmosTab::onMaxAltChanged()
|
||||
{
|
||||
mSkySettings->setMaxY(getChild<LLUICtrl>(FIELD_SKY_MAX_ALT)->getValue().asReal());
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
|
|
@ -283,16 +317,21 @@ void LLPanelSettingsSkyCloudTab::refresh()
|
|||
void LLPanelSettingsSkyCloudTab::onCloudColorChanged()
|
||||
{
|
||||
mSkySettings->setCloudColor(LLColor3(getChild<LLColorSwatchCtrl>(FIELD_SKY_CLOUD_COLOR)->get()));
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkyCloudTab::onCloudCoverageChanged()
|
||||
{
|
||||
mSkySettings->setCloudShadow(getChild<LLUICtrl>(FIELD_SKY_CLOUD_COVERAGE)->getValue().asReal());
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkyCloudTab::onCloudScaleChanged()
|
||||
{
|
||||
mSkySettings->setCloudScale(getChild<LLUICtrl>(FIELD_SKY_CLOUD_SCALE)->getValue().asReal());
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkyCloudTab::onCloudScrollChanged()
|
||||
|
|
@ -300,11 +339,13 @@ void LLPanelSettingsSkyCloudTab::onCloudScrollChanged()
|
|||
LLVector2 scroll(getChild<LLUICtrl>(FIELD_SKY_CLOUD_SCROLL_XY)->getValue());
|
||||
scroll += CLOUD_SCROLL_ADJUST;
|
||||
mSkySettings->setCloudScrollRate(scroll);
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkyCloudTab::onCloudMapChanged()
|
||||
{
|
||||
mSkySettings->setCloudNoiseTextureId(getChild<LLTextureCtrl>(FIELD_SKY_CLOUD_MAP)->getValue().asUUID());
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkyCloudTab::onCloudDensityChanged()
|
||||
|
|
@ -314,6 +355,7 @@ void LLPanelSettingsSkyCloudTab::onCloudDensityChanged()
|
|||
getChild<LLUICtrl>(FIELD_SKY_CLOUD_DENSITY_D)->getValue().asReal());
|
||||
|
||||
mSkySettings->setCloudPosDensity1(density);
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkyCloudTab::onCloudDetailChanged()
|
||||
|
|
@ -323,6 +365,7 @@ void LLPanelSettingsSkyCloudTab::onCloudDetailChanged()
|
|||
getChild<LLUICtrl>(FIELD_SKY_CLOUD_DETAIL_D)->getValue().asReal());
|
||||
|
||||
mSkySettings->setCloudPosDensity2(detail);
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
|
|
@ -340,6 +383,7 @@ BOOL LLPanelSettingsSkySunMoonTab::postBuild()
|
|||
getChild<LLUICtrl>(FIELD_SKY_STAR_BRIGHTNESS)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onStarBrightnessChanged(); });
|
||||
getChild<LLUICtrl>(FIELD_SKY_SUN_ROTATION)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onSunRotationChanged(); });
|
||||
getChild<LLUICtrl>(FIELD_SKY_SUN_IMAGE)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onSunImageChanged(); });
|
||||
getChild<LLUICtrl>(FIELD_SKY_SUN_SCALE)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onSunScaleChanged(); });
|
||||
getChild<LLTextureCtrl>(FIELD_SKY_SUN_IMAGE)->setBlankImageAssetID(LLSettingsSky::GetBlankSunTextureId());
|
||||
getChild<LLTextureCtrl>(FIELD_SKY_SUN_IMAGE)->setDefaultImageAssetID(LLSettingsSky::GetBlankSunTextureId());
|
||||
getChild<LLTextureCtrl>(FIELD_SKY_SUN_IMAGE)->setAllowNoTexture(TRUE);
|
||||
|
|
@ -350,7 +394,7 @@ BOOL LLPanelSettingsSkySunMoonTab::postBuild()
|
|||
getChild<LLTextureCtrl>(FIELD_SKY_MOON_IMAGE)->setBlankImageAssetID(LLSettingsSky::GetBlankSunTextureId());
|
||||
getChild<LLTextureCtrl>(FIELD_SKY_MOON_IMAGE)->setAllowNoTexture(TRUE);
|
||||
getChild<LLTextureCtrl>(FIELD_SKY_MOON_IMAGE)->setAllowLocalTexture(FALSE);
|
||||
|
||||
getChild<LLUICtrl>(FIELD_SKY_MOON_SCALE)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onMoonScaleChanged(); });
|
||||
|
||||
refresh();
|
||||
|
||||
|
|
@ -387,8 +431,10 @@ void LLPanelSettingsSkySunMoonTab::refresh()
|
|||
getChild<LLUICtrl>(FIELD_SKY_STAR_BRIGHTNESS)->setValue(mSkySettings->getStarBrightness());
|
||||
getChild<LLVirtualTrackball>(FIELD_SKY_SUN_ROTATION)->setRotation(mSkySettings->getSunRotation());
|
||||
getChild<LLTextureCtrl>(FIELD_SKY_SUN_IMAGE)->setValue(mSkySettings->getSunTextureId());
|
||||
getChild<LLUICtrl>(FIELD_SKY_SUN_SCALE)->setValue(mSkySettings->getSunScale());
|
||||
getChild<LLVirtualTrackball>(FIELD_SKY_MOON_ROTATION)->setRotation(mSkySettings->getMoonRotation());
|
||||
getChild<LLTextureCtrl>(FIELD_SKY_MOON_IMAGE)->setValue(mSkySettings->getMoonTextureId());
|
||||
getChild<LLUICtrl>(FIELD_SKY_MOON_SCALE)->setValue(mSkySettings->getMoonScale());
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
|
@ -399,6 +445,8 @@ void LLPanelSettingsSkySunMoonTab::onSunMoonColorChanged()
|
|||
color *= SLIDER_SCALE_SUN_AMBIENT;
|
||||
|
||||
mSkySettings->setSunlightColor(color);
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkySunMoonTab::onGlowChanged()
|
||||
|
|
@ -410,48 +458,56 @@ void LLPanelSettingsSkySunMoonTab::onGlowChanged()
|
|||
|
||||
mSkySettings->setGlow(glow);
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkySunMoonTab::onStarBrightnessChanged()
|
||||
{
|
||||
mSkySettings->setStarBrightness(getChild<LLUICtrl>(FIELD_SKY_STAR_BRIGHTNESS)->getValue().asReal());
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkySunMoonTab::onSunRotationChanged()
|
||||
{
|
||||
mSkySettings->setSunRotation(getChild<LLVirtualTrackball>(FIELD_SKY_SUN_ROTATION)->getRotation());
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkySunMoonTab::onSunScaleChanged()
|
||||
{
|
||||
mSkySettings->setSunScale((getChild<LLUICtrl>(FIELD_SKY_SUN_SCALE)->getValue().asReal()));
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkySunMoonTab::onSunImageChanged()
|
||||
{
|
||||
mSkySettings->setSunTextureId(getChild<LLTextureCtrl>(FIELD_SKY_SUN_IMAGE)->getValue().asUUID());
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkySunMoonTab::onMoonRotationChanged()
|
||||
{
|
||||
mSkySettings->setMoonRotation(getChild<LLVirtualTrackball>(FIELD_SKY_MOON_ROTATION)->getRotation());
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkySunMoonTab::onMoonImageChanged()
|
||||
{
|
||||
mSkySettings->setMoonTextureId(getChild<LLTextureCtrl>(FIELD_SKY_MOON_IMAGE)->getValue().asUUID());
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsSkySunMoonTab::onMoonScaleChanged()
|
||||
{
|
||||
mSkySettings->setMoonScale((getChild<LLUICtrl>(FIELD_SKY_MOON_SCALE)->getValue().asReal()));
|
||||
mSkySettings->update();
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -461,8 +517,24 @@ LLPanelSettingsDensityTab::LLPanelSettingsDensityTab()
|
|||
|
||||
BOOL LLPanelSettingsDensityTab::postBuild()
|
||||
{
|
||||
mControlName = LLDensityCtrl::NameForDensityProfileType(mProfileType);
|
||||
getChild<LLDensityCtrl>(mControlName)->setProfileType(mProfileType);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onRayleighExponentialChanged(); });
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL_SCALE)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onRayleighExponentialScaleChanged(); });
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_LINEAR)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onRayleighLinearChanged(); });
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_CONSTANT)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onRayleighConstantChanged(); });
|
||||
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_EXPONENTIAL)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onMieExponentialChanged(); });
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_EXPONENTIAL_SCALE)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onMieExponentialScaleChanged(); });
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_LINEAR)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onMieLinearChanged(); });
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_CONSTANT)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onMieConstantChanged(); });
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_ANISO)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onMieAnisoFactorChanged(); });
|
||||
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onAbsorptionExponentialChanged(); });
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL_SCALE)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onAbsorptionExponentialScaleChanged(); });
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_LINEAR)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onAbsorptionLinearChanged(); });
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_CONSTANT)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onAbsorptionConstantChanged(); });
|
||||
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_MAX_ALTITUDE)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onMaxAltitudeChanged(); });
|
||||
|
||||
refresh();
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -470,7 +542,24 @@ BOOL LLPanelSettingsDensityTab::postBuild()
|
|||
void LLPanelSettingsDensityTab::setEnabled(BOOL enabled)
|
||||
{
|
||||
LLPanelSettingsSky::setEnabled(enabled);
|
||||
getChild<LLDensityCtrl>(mControlName)->setEnabled(enabled);
|
||||
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL)->setEnabled(enabled);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL_SCALE)->setEnabled(enabled);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_LINEAR)->setEnabled(enabled);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_CONSTANT)->setEnabled(enabled);
|
||||
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_EXPONENTIAL)->setEnabled(enabled);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_EXPONENTIAL_SCALE)->setEnabled(enabled);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_LINEAR)->setEnabled(enabled);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_CONSTANT)->setEnabled(enabled);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_ANISO)->setEnabled(enabled);
|
||||
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL)->setEnabled(enabled);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL_SCALE)->setEnabled(enabled);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_LINEAR)->setEnabled(enabled);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_CONSTANT)->setEnabled(enabled);
|
||||
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_MAX_ALTITUDE)->setEnabled(enabled);
|
||||
}
|
||||
|
||||
void LLPanelSettingsDensityTab::refresh()
|
||||
|
|
@ -484,61 +573,124 @@ void LLPanelSettingsDensityTab::refresh()
|
|||
|
||||
setEnabled(TRUE);
|
||||
setAllChildrenEnabled(TRUE);
|
||||
getChild<LLDensityCtrl>(mControlName)->setSky(mSkySettings);
|
||||
getChild<LLDensityCtrl>(mControlName)->refresh();
|
||||
|
||||
LLSD rayleigh_config = mSkySettings->getRayleighConfigs();
|
||||
LLSD mie_config = mSkySettings->getMieConfigs();
|
||||
LLSD absorption_config = mSkySettings->getAbsorptionConfigs();
|
||||
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL)->setValue(rayleigh_config[LLSettingsSky::SETTING_DENSITY_PROFILE_EXP_TERM]);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL_SCALE)->setValue(rayleigh_config[LLSettingsSky::SETTING_DENSITY_PROFILE_EXP_SCALE_FACTOR]);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_LINEAR)->setValue(rayleigh_config[LLSettingsSky::SETTING_DENSITY_PROFILE_LINEAR_TERM]);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_CONSTANT)->setValue(rayleigh_config[LLSettingsSky::SETTING_DENSITY_PROFILE_CONSTANT_TERM]);
|
||||
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_EXPONENTIAL)->setValue(mie_config[LLSettingsSky::SETTING_DENSITY_PROFILE_EXP_TERM]);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_EXPONENTIAL_SCALE)->setValue(mie_config[LLSettingsSky::SETTING_DENSITY_PROFILE_EXP_SCALE_FACTOR]);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_LINEAR)->setValue(mie_config[LLSettingsSky::SETTING_DENSITY_PROFILE_LINEAR_TERM]);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_CONSTANT)->setValue(mie_config[LLSettingsSky::SETTING_DENSITY_PROFILE_CONSTANT_TERM]);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_ANISO)->setValue(mie_config[LLSettingsSky::SETTING_MIE_ANISOTROPY_FACTOR]);
|
||||
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL)->setValue(absorption_config[LLSettingsSky::SETTING_DENSITY_PROFILE_EXP_TERM]);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL_SCALE)->setValue(absorption_config[LLSettingsSky::SETTING_DENSITY_PROFILE_EXP_SCALE_FACTOR]);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_LINEAR)->setValue(absorption_config[LLSettingsSky::SETTING_DENSITY_PROFILE_LINEAR_TERM]);
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_CONSTANT)->setValue(absorption_config[LLSettingsSky::SETTING_DENSITY_PROFILE_CONSTANT_TERM]);
|
||||
|
||||
getChild<LLUICtrl>(FIELD_SKY_DENSITY_MAX_ALTITUDE)->setValue(rayleigh_config[LLSettingsSky::SETTING_DENSITY_PROFILE_WIDTH]);
|
||||
}
|
||||
|
||||
void LLPanelSettingsDensityTab::updateProfile()
|
||||
{
|
||||
getChild<LLDensityCtrl>(mControlName)->setSky(mSkySettings);
|
||||
getChild<LLDensityCtrl>(mControlName)->updateProfile();
|
||||
F32 rayleigh_exponential_term = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL)->getValueF32();
|
||||
F32 rayleigh_exponential_scale = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL_SCALE)->getValueF32();
|
||||
F32 rayleigh_linear_term = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_RAYLEIGH_LINEAR)->getValueF32();
|
||||
F32 rayleigh_constant_term = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_RAYLEIGH_CONSTANT)->getValueF32();
|
||||
F32 mie_exponential_term = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_MIE_EXPONENTIAL)->getValueF32();
|
||||
F32 mie_exponential_scale = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_MIE_EXPONENTIAL_SCALE)->getValueF32();
|
||||
F32 mie_linear_term = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_MIE_LINEAR)->getValueF32();
|
||||
F32 mie_constant_term = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_MIE_CONSTANT)->getValueF32();
|
||||
F32 mie_aniso_factor = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_MIE_ANISO)->getValueF32();
|
||||
F32 absorption_exponential_term = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL)->getValueF32();
|
||||
F32 absorption_exponential_scale = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL_SCALE)->getValueF32();
|
||||
F32 absorption_linear_term = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_ABSORPTION_LINEAR)->getValueF32();
|
||||
F32 absorption_constant_term = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_ABSORPTION_CONSTANT)->getValueF32();
|
||||
F32 max_alt = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_MAX_ALTITUDE)->getValueF32();
|
||||
|
||||
LLSD rayleigh_config = LLSettingsSky::createSingleLayerDensityProfile(max_alt, rayleigh_exponential_term, rayleigh_exponential_scale, rayleigh_linear_term, rayleigh_constant_term);
|
||||
LLSD mie_config = LLSettingsSky::createSingleLayerDensityProfile(max_alt, mie_exponential_term, mie_exponential_scale, mie_linear_term, mie_constant_term, mie_aniso_factor);
|
||||
LLSD absorption_config = LLSettingsSky::createSingleLayerDensityProfile(max_alt, absorption_exponential_term, absorption_exponential_scale, absorption_linear_term, absorption_constant_term);
|
||||
|
||||
mSkySettings->setRayleighConfigs(rayleigh_config);
|
||||
mSkySettings->setMieConfigs(mie_config);
|
||||
mSkySettings->setAbsorptionConfigs(absorption_config);
|
||||
|
||||
mSkySettings->update();
|
||||
}
|
||||
|
||||
LLPanelSettingsDensity::LLPanelSettingsDensity()
|
||||
{
|
||||
}
|
||||
|
||||
BOOL LLPanelSettingsDensity::postBuild()
|
||||
void LLPanelSettingsDensityTab::onRayleighExponentialChanged()
|
||||
{
|
||||
//static_cast<LLPanelSettingsDensityTab*>(getChild<LLPanelSettingsDensityTab>(LLDensityCtrl::DENSITY_RAYLEIGH))->setProfileType(LLDensityCtrl::Rayleigh);
|
||||
//static_cast<LLPanelSettingsDensityTab*>(getChild<LLPanelSettingsDensityTab>(LLDensityCtrl::DENSITY_MIE))->setProfileType(LLDensityCtrl::Mie);
|
||||
//static_cast<LLPanelSettingsDensityTab*>(getChild<LLPanelSettingsDensityTab>(LLDensityCtrl::DENSITY_ABSORPTION))->setProfileType(LLDensityCtrl::Absorption);
|
||||
refresh();
|
||||
return TRUE;
|
||||
updateProfile();
|
||||
}
|
||||
|
||||
void LLPanelSettingsDensity::setEnabled(BOOL enabled)
|
||||
void LLPanelSettingsDensityTab::onRayleighExponentialScaleChanged()
|
||||
{
|
||||
LLPanelSettingsSky::setEnabled(enabled);
|
||||
|
||||
//getChild<LLPanelSettingsDensityTab>(LLDensityCtrl::DENSITY_RAYLEIGH)->setEnabled(enabled);
|
||||
//getChild<LLPanelSettingsDensityTab>(LLDensityCtrl::DENSITY_MIE)->setEnabled(enabled);
|
||||
//getChild<LLPanelSettingsDensityTab>(LLDensityCtrl::DENSITY_ABSORPTION)->setEnabled(enabled);
|
||||
updateProfile();
|
||||
}
|
||||
|
||||
void LLPanelSettingsDensity::refresh()
|
||||
void LLPanelSettingsDensityTab::onRayleighLinearChanged()
|
||||
{
|
||||
if (!mSkySettings)
|
||||
{
|
||||
setAllChildrenEnabled(FALSE);
|
||||
setEnabled(FALSE);
|
||||
return;
|
||||
}
|
||||
|
||||
setEnabled(TRUE);
|
||||
setAllChildrenEnabled(TRUE);
|
||||
|
||||
//getChild<LLDensityCtrl>(LLDensityCtrl::DENSITY_RAYLEIGH)->refresh();
|
||||
//getChild<LLDensityCtrl>(LLDensityCtrl::DENSITY_MIE)->refresh();
|
||||
//getChild<LLDensityCtrl>(LLDensityCtrl::DENSITY_ABSORPTION)->refresh();
|
||||
updateProfile();
|
||||
}
|
||||
|
||||
void LLPanelSettingsDensity::updateProfile()
|
||||
void LLPanelSettingsDensityTab::onRayleighConstantChanged()
|
||||
{
|
||||
//getChild<LLDensityCtrl>(LLDensityCtrl::DENSITY_RAYLEIGH)->updateProfile();
|
||||
//getChild<LLDensityCtrl>(LLDensityCtrl::DENSITY_MIE)->updateProfile();
|
||||
//getChild<LLDensityCtrl>(LLDensityCtrl::DENSITY_ABSORPTION)->updateProfile();
|
||||
mSkySettings->update();
|
||||
updateProfile();
|
||||
}
|
||||
|
||||
void LLPanelSettingsDensityTab::onMieExponentialChanged()
|
||||
{
|
||||
updateProfile();
|
||||
}
|
||||
|
||||
void LLPanelSettingsDensityTab::onMieExponentialScaleChanged()
|
||||
{
|
||||
updateProfile();
|
||||
}
|
||||
|
||||
void LLPanelSettingsDensityTab::onMieLinearChanged()
|
||||
{
|
||||
updateProfile();
|
||||
}
|
||||
|
||||
void LLPanelSettingsDensityTab::onMieConstantChanged()
|
||||
{
|
||||
updateProfile();
|
||||
}
|
||||
|
||||
void LLPanelSettingsDensityTab::onMieAnisoFactorChanged()
|
||||
{
|
||||
updateProfile();
|
||||
}
|
||||
|
||||
void LLPanelSettingsDensityTab::onAbsorptionExponentialChanged()
|
||||
{
|
||||
updateProfile();
|
||||
}
|
||||
|
||||
void LLPanelSettingsDensityTab::onAbsorptionExponentialScaleChanged()
|
||||
{
|
||||
updateProfile();
|
||||
}
|
||||
|
||||
void LLPanelSettingsDensityTab::onAbsorptionLinearChanged()
|
||||
{
|
||||
updateProfile();
|
||||
}
|
||||
|
||||
void LLPanelSettingsDensityTab::onAbsorptionConstantChanged()
|
||||
{
|
||||
updateProfile();
|
||||
}
|
||||
|
||||
void LLPanelSettingsDensityTab::onMaxAltitudeChanged()
|
||||
{
|
||||
updateProfile();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,13 +30,11 @@
|
|||
#include "llpanel.h"
|
||||
#include "llsettingssky.h"
|
||||
#include "llfloaterfixedenvironment.h"
|
||||
#include "lldensityctrl.h"
|
||||
|
||||
//=========================================================================
|
||||
class LLSlider;
|
||||
class LLColorSwatchCtrl;
|
||||
class LLTextureCtrl;
|
||||
class LLDensityCtrl; // custom control for specifying various sky density settings
|
||||
|
||||
//=========================================================================
|
||||
class LLPanelSettingsSky : public LLSettingsEditPanel
|
||||
|
|
@ -49,7 +47,7 @@ public:
|
|||
virtual void setSettings(const LLSettingsBase::ptr_t &settings) override { setSky(std::static_pointer_cast<LLSettingsSky>(settings)); }
|
||||
|
||||
LLSettingsSky::ptr_t getSky() const { return mSkySettings; }
|
||||
void setSky(const LLSettingsSky::ptr_t &sky) { mSkySettings = sky; refresh(); }
|
||||
void setSky(const LLSettingsSky::ptr_t &sky) { mSkySettings = sky; clearIsDirty(); refresh(); }
|
||||
|
||||
protected:
|
||||
LLSettingsSky::ptr_t mSkySettings;
|
||||
|
|
@ -144,25 +142,23 @@ public:
|
|||
protected:
|
||||
virtual void refresh() override;
|
||||
|
||||
// update the settings for our profile type
|
||||
void updateProfile();
|
||||
void onRayleighExponentialChanged();
|
||||
void onRayleighExponentialScaleChanged();
|
||||
void onRayleighLinearChanged();
|
||||
void onRayleighConstantChanged();
|
||||
|
||||
LLDensityCtrl::DensityProfileType mProfileType;
|
||||
std::string mControlName;
|
||||
};
|
||||
void onMieExponentialChanged();
|
||||
void onMieExponentialScaleChanged();
|
||||
void onMieLinearChanged();
|
||||
void onMieConstantChanged();
|
||||
void onMieAnisoFactorChanged();
|
||||
|
||||
class LLPanelSettingsDensity : public LLPanelSettingsSky
|
||||
{
|
||||
LOG_CLASS(LLPanelSettingsDensity);
|
||||
void onAbsorptionExponentialChanged();
|
||||
void onAbsorptionExponentialScaleChanged();
|
||||
void onAbsorptionLinearChanged();
|
||||
void onAbsorptionConstantChanged();
|
||||
|
||||
public:
|
||||
LLPanelSettingsDensity();
|
||||
|
||||
virtual BOOL postBuild() override;
|
||||
virtual void setEnabled(BOOL enabled) override;
|
||||
|
||||
protected:
|
||||
virtual void refresh() override;
|
||||
void onMaxAltitudeChanged();
|
||||
|
||||
// update the settings for our profile type
|
||||
void updateProfile();
|
||||
|
|
|
|||
|
|
@ -161,21 +161,25 @@ void LLPanelSettingsWaterMainTab::refresh()
|
|||
void LLPanelSettingsWaterMainTab::onFogColorChanged()
|
||||
{
|
||||
mWaterSettings->setWaterFogColor(LLColor3(mClrFogColor->get()));
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsWaterMainTab::onFogDensityChanged()
|
||||
{
|
||||
mWaterSettings->setWaterFogDensity(getChild<LLUICtrl>(FIELD_WATER_FOG_DENSITY)->getValue().asReal());
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsWaterMainTab::onFogUnderWaterChanged()
|
||||
{
|
||||
mWaterSettings->setFogMod(getChild<LLUICtrl>(FIELD_WATER_UNDERWATER_MOD)->getValue().asReal());
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsWaterMainTab::onNormalMapChanged()
|
||||
{
|
||||
mWaterSettings->setNormalMapID(mTxtNormalMap->getImageAssetID());
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -184,6 +188,7 @@ void LLPanelSettingsWaterMainTab::onLargeWaveChanged()
|
|||
LLVector2 vect(getChild<LLUICtrl>(FIELD_WATER_WAVE1_XY)->getValue());
|
||||
LL_WARNS("LAPRAS") << "Changing Large Wave from " << mWaterSettings->getWave1Dir() << " -> " << vect << LL_ENDL;
|
||||
mWaterSettings->setWave1Dir(vect);
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsWaterMainTab::onSmallWaveChanged()
|
||||
|
|
@ -191,6 +196,7 @@ void LLPanelSettingsWaterMainTab::onSmallWaveChanged()
|
|||
LLVector2 vect(getChild<LLUICtrl>(FIELD_WATER_WAVE2_XY)->getValue());
|
||||
LL_WARNS("LAPRAS") << "Changing Small Wave from " << mWaterSettings->getWave2Dir() << " -> " << vect << LL_ENDL;
|
||||
mWaterSettings->setWave2Dir(vect);
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -199,29 +205,35 @@ void LLPanelSettingsWaterMainTab::onNormalScaleChanged()
|
|||
LLVector3 vect(getChild<LLUICtrl>(FIELD_WATER_NORMAL_SCALE_X)->getValue().asReal(), getChild<LLUICtrl>(FIELD_WATER_NORMAL_SCALE_Y)->getValue().asReal(), getChild<LLUICtrl>(FIELD_WATER_NORMAL_SCALE_Z)->getValue().asReal());
|
||||
LL_WARNS("LAPRAS") << "Changing normal scale from " << mWaterSettings->getNormalScale() << " -> " << vect << LL_ENDL;
|
||||
mWaterSettings->setNormalScale(vect);
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsWaterMainTab::onFresnelScaleChanged()
|
||||
{
|
||||
mWaterSettings->setFresnelScale(getChild<LLUICtrl>(FIELD_WATER_FRESNEL_SCALE)->getValue().asReal());
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsWaterMainTab::onFresnelOffsetChanged()
|
||||
{
|
||||
mWaterSettings->setFresnelOffset(getChild<LLUICtrl>(FIELD_WATER_FRESNEL_OFFSET)->getValue().asReal());
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsWaterMainTab::onScaleAboveChanged()
|
||||
{
|
||||
mWaterSettings->setScaleAbove(getChild<LLUICtrl>(FIELD_WATER_SCALE_ABOVE)->getValue().asReal());
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsWaterMainTab::onScaleBelowChanged()
|
||||
{
|
||||
mWaterSettings->setScaleBelow(getChild<LLUICtrl>(FIELD_WATER_SCALE_BELOW)->getValue().asReal());
|
||||
setIsDirty();
|
||||
}
|
||||
|
||||
void LLPanelSettingsWaterMainTab::onBlurMultipChanged()
|
||||
{
|
||||
mWaterSettings->setBlurMultiplier(getChild<LLUICtrl>(FIELD_WATER_BLUR_MULTIP)->getValue().asReal());
|
||||
setIsDirty();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public:
|
|||
virtual void setSettings(const LLSettingsBase::ptr_t &settings) override { setWater(std::static_pointer_cast<LLSettingsWater>(settings)); }
|
||||
|
||||
LLSettingsWater::ptr_t getWater() const { return mWaterSettings; }
|
||||
void setWater(const LLSettingsWater::ptr_t &water) { mWaterSettings = water; refresh(); }
|
||||
void setWater(const LLSettingsWater::ptr_t &water) { mWaterSettings = water; clearIsDirty(); refresh(); }
|
||||
|
||||
protected:
|
||||
LLSettingsWater::ptr_t mWaterSettings;
|
||||
|
|
|
|||
|
|
@ -119,7 +119,19 @@ void LLPanelEnvironmentInfo::onVisibilityChange(BOOL new_visibility)
|
|||
if (new_visibility)
|
||||
gIdleCallbacks.addFunction(onIdlePlay, this);
|
||||
else
|
||||
{
|
||||
gIdleCallbacks.deleteFunction(onIdlePlay, this);
|
||||
LLFloaterEditExtDayCycle *dayeditor = getEditFloater();
|
||||
if (mCommitConnection.connected())
|
||||
mCommitConnection.disconnect();
|
||||
if (dayeditor)
|
||||
{
|
||||
if (dayeditor->isDirty())
|
||||
dayeditor->refresh();
|
||||
else
|
||||
dayeditor->closeFloater();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -213,13 +225,13 @@ LLFloaterSettingsPicker *LLPanelEnvironmentInfo::getSettingsPicker()
|
|||
return picker;
|
||||
}
|
||||
|
||||
LLFloaterEditExtDayCycle * LLPanelEnvironmentInfo::getEditFloater()
|
||||
LLFloaterEditExtDayCycle * LLPanelEnvironmentInfo::getEditFloater(bool create)
|
||||
{
|
||||
static const S32 FOURHOURS(4 * 60 * 60);
|
||||
LLFloaterEditExtDayCycle *editor = static_cast<LLFloaterEditExtDayCycle *>(mEditFloater.get());
|
||||
|
||||
// Show the dialog
|
||||
if (!editor)
|
||||
if (!editor && create)
|
||||
{
|
||||
LLSD params(LLSDMap(LLFloaterEditExtDayCycle::KEY_EDIT_CONTEXT, (mCurrentParcelId == INVALID_PARCEL_ID) ? LLFloaterEditExtDayCycle::CONTEXT_REGION : LLFloaterEditExtDayCycle::CONTEXT_PARCEL)
|
||||
(LLFloaterEditExtDayCycle::KEY_DAY_LENGTH, mCurrentEnvironment ? (S32)(mCurrentEnvironment->mDayLength.value()) : FOURHOURS));
|
||||
|
|
@ -228,9 +240,11 @@ LLFloaterEditExtDayCycle * LLPanelEnvironmentInfo::getEditFloater()
|
|||
|
||||
if (!editor)
|
||||
return nullptr;
|
||||
editor->setEditCommitSignal([this](LLSettingsDay::ptr_t pday) { onEditCommited(pday); });
|
||||
}
|
||||
|
||||
if (editor && !mCommitConnection.connected())
|
||||
mCommitConnection = editor->setEditCommitSignal([this](LLSettingsDay::ptr_t pday) { onEditCommited(pday); });
|
||||
|
||||
return editor;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -44,17 +44,16 @@ class LLPanelEnvironmentInfo : public LLPanel
|
|||
public:
|
||||
LLPanelEnvironmentInfo();
|
||||
|
||||
// LLPanel
|
||||
virtual BOOL postBuild() override;
|
||||
virtual void onOpen(const LLSD& key) override;
|
||||
|
||||
// LLView
|
||||
virtual BOOL isDirty() const override { return getIsDirty(); }
|
||||
virtual void onVisibilityChange(BOOL new_visibility) override;
|
||||
|
||||
virtual void refresh() override;
|
||||
|
||||
S32 getCurrentParcelId() const { return mCurrentParcelId; }
|
||||
void setCurrentParcelId(S32 parcel_id) { mCurrentParcelId = parcel_id; }
|
||||
S32 getCurrentParcelId() const { return mCurrentParcelId; }
|
||||
void setCurrentParcelId(S32 parcel_id) { mCurrentParcelId = parcel_id; }
|
||||
|
||||
virtual bool isRegion() const = 0;
|
||||
virtual LLParcel * getParcel() = 0;
|
||||
|
|
@ -95,9 +94,9 @@ protected:
|
|||
void setApplyProgress(bool started);
|
||||
void setDirtyFlag(U32 flag);
|
||||
void clearDirtyFlag(U32 flag);
|
||||
bool getIsDirty() const { return (mDirtyFlag != 0); }
|
||||
bool getIsDirtyFlag(U32 flag) const { return ((mDirtyFlag & flag) != 0); }
|
||||
U32 getDirtyFlag() const { return mDirtyFlag; }
|
||||
bool getIsDirty() const { return (mDirtyFlag != 0); }
|
||||
bool getIsDirtyFlag(U32 flag) const { return ((mDirtyFlag & flag) != 0); }
|
||||
U32 getDirtyFlag() const { return mDirtyFlag; }
|
||||
|
||||
void onSwitchDefaultSelection();
|
||||
void onSldDayLengthChanged(F32 value);
|
||||
|
|
@ -121,17 +120,21 @@ protected:
|
|||
std::string getInventoryNameForAssetId(LLUUID asset_id);
|
||||
|
||||
LLFloaterSettingsPicker * getSettingsPicker();
|
||||
LLFloaterEditExtDayCycle * getEditFloater();
|
||||
LLFloaterEditExtDayCycle * getEditFloater(bool create = true);
|
||||
|
||||
LLEnvironment::EnvironmentInfo::ptr_t mCurrentEnvironment;
|
||||
S32 mCurrentParcelId;
|
||||
|
||||
|
||||
|
||||
private:
|
||||
static void onIdlePlay(void *);
|
||||
|
||||
LLHandle<LLFloater> mSettingsFloater;
|
||||
LLHandle<LLFloater> mEditFloater;
|
||||
S32 mDirtyFlag;
|
||||
typedef boost::signals2::connection connection_t;
|
||||
|
||||
connection_t mCommitConnection;
|
||||
LLHandle<LLFloater> mSettingsFloater;
|
||||
LLHandle<LLFloater> mEditFloater;
|
||||
S32 mDirtyFlag;
|
||||
};
|
||||
#endif // LL_LLPANELEXPERIENCES_H
|
||||
|
|
|
|||
|
|
@ -227,6 +227,14 @@ void LLSettingsVOBase::onAgentAssetUploadComplete(LLUUID itemId, LLUUID newAsset
|
|||
psettings->setAssetId(newAssetId);
|
||||
if (callback)
|
||||
callback( newAssetId, itemId, LLUUID::null, response );
|
||||
|
||||
#if 0
|
||||
std::string exprtFile = gDirUtilp->getTempDir() + gDirUtilp->getDirDelimiter() + newAssetId.asString() + ".llsd";
|
||||
|
||||
LLSettingsVOBase::exportFile(psettings, exprtFile, LLSDSerialize::LLSD_NOTATION);
|
||||
|
||||
LL_WARNS("LAPRAS") << "SETTINGS File written as: '" << exprtFile << "'" << LL_ENDL;
|
||||
#endif
|
||||
}
|
||||
|
||||
void LLSettingsVOBase::onTaskAssetUploadComplete(LLUUID itemId, LLUUID taskId, LLUUID newAssetId, LLSD response, LLSettingsBase::ptr_t psettings, inventory_result_fn callback)
|
||||
|
|
@ -579,6 +587,9 @@ void LLSettingsVOSky::updateSettings()
|
|||
gSky.setMoonTextures(getMoonTextureId(), getNextMoonTextureId());
|
||||
gSky.setCloudNoiseTextures(getCloudNoiseTextureId(), getNextCloudNoiseTextureId());
|
||||
gSky.setBloomTextures(getBloomTextureId(), getNextBloomTextureId());
|
||||
|
||||
gSky.setSunScale(getSunScale());
|
||||
gSky.setMoonScale(getMoonScale());
|
||||
}
|
||||
|
||||
void LLSettingsVOSky::applySpecial(void *ptarget)
|
||||
|
|
|
|||
|
|
@ -129,6 +129,22 @@ void LLSky::resetVertexBuffers()
|
|||
}
|
||||
}
|
||||
|
||||
void LLSky::setSunScale(F32 sun_scale)
|
||||
{
|
||||
if(mVOSkyp.notNull())
|
||||
{
|
||||
mVOSkyp->setSunScale(sun_scale);
|
||||
}
|
||||
}
|
||||
|
||||
void LLSky::setMoonScale(F32 moon_scale)
|
||||
{
|
||||
if(mVOSkyp.notNull())
|
||||
{
|
||||
mVOSkyp->setMoonScale(moon_scale);
|
||||
}
|
||||
}
|
||||
|
||||
void LLSky::setSunTextures(const LLUUID& sun_texture, const LLUUID& sun_texture_next)
|
||||
{
|
||||
if(mVOSkyp.notNull()) {
|
||||
|
|
|
|||
|
|
@ -61,6 +61,9 @@ public:
|
|||
void setCloudNoiseTextures(const LLUUID& cloud_noise_texture, const LLUUID& cloud_noise_texture_next);
|
||||
void setBloomTextures(const LLUUID& bloom_texture, const LLUUID& bloom_texture_next);
|
||||
|
||||
void setSunScale(F32 sun_scale);
|
||||
void setMoonScale(F32 moon_scale);
|
||||
|
||||
LLColor4 getSkyFogColor() const;
|
||||
|
||||
void setCloudDensityAtAgent(F32 cloud_density);
|
||||
|
|
|
|||
|
|
@ -735,6 +735,10 @@ void LLViewerAssetUpload::AssetInventoryUploadCoproc(LLCoreHttpUtil::HttpCorouti
|
|||
LLUploadDialog::modalUploadFinished();
|
||||
return;
|
||||
}
|
||||
if (!result.has("success"))
|
||||
{
|
||||
result["success"] = LLSD::Boolean((ulstate == "complete") && status);
|
||||
}
|
||||
|
||||
S32 uploadPrice = result["upload_price"].asInteger();//uploadInfo->getEconomyUploadCost();
|
||||
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ void LLGridManager::initialize(const std::string& grid_file)
|
|||
addSystemGrid(LLTrans::getString("AditiGridLabel"),
|
||||
"util.aditi.lindenlab.com",
|
||||
"https://login.aditi.lindenlab.com/cgi-bin/login.cgi",
|
||||
"http://aditi-secondlife.webdev.lindenlab.com/helpers/",
|
||||
"https://secondlife.aditi.lindenlab.com/helpers/",
|
||||
DEFAULT_LOGIN_PAGE,
|
||||
SL_UPDATE_QUERY_URL,
|
||||
"https://my.aditi.lindenlab.com/",
|
||||
|
|
|
|||
|
|
@ -1123,7 +1123,9 @@ BOOL LLViewerTextEditor::openEmbeddedItem(LLPointer<LLInventoryItem> item, llwch
|
|||
case LLAssetType::AT_CALLINGCARD:
|
||||
openEmbeddedCallingcard( item, wc );
|
||||
return TRUE;
|
||||
|
||||
case LLAssetType::AT_SETTINGS:
|
||||
openEmbeddedSetting(item, wc);
|
||||
return TRUE;
|
||||
case LLAssetType::AT_NOTECARD:
|
||||
case LLAssetType::AT_LSL_TEXT:
|
||||
case LLAssetType::AT_CLOTHING:
|
||||
|
|
@ -1198,6 +1200,18 @@ void LLViewerTextEditor::openEmbeddedCallingcard( LLInventoryItem* item, llwchar
|
|||
}
|
||||
}
|
||||
|
||||
void LLViewerTextEditor::openEmbeddedSetting(LLInventoryItem* item, llwchar wc)
|
||||
{
|
||||
if (LLEnvironment::instance().isInventoryEnabled())
|
||||
{
|
||||
showCopyToInvDialog(item, wc);
|
||||
}
|
||||
else
|
||||
{
|
||||
LLNotificationsUtil::add("NoEnvironmentSettings");
|
||||
}
|
||||
}
|
||||
|
||||
void LLViewerTextEditor::showUnsavedAlertDialog( LLInventoryItem* item )
|
||||
{
|
||||
LLSD payload;
|
||||
|
|
|
|||
|
|
@ -107,6 +107,7 @@ private:
|
|||
void openEmbeddedSound( LLInventoryItem* item, llwchar wc );
|
||||
void openEmbeddedLandmark( LLPointer<LLInventoryItem> item_ptr, llwchar wc );
|
||||
void openEmbeddedCallingcard( LLInventoryItem* item, llwchar wc);
|
||||
void openEmbeddedSetting(LLInventoryItem* item, llwchar wc);
|
||||
void showCopyToInvDialog( LLInventoryItem* item, llwchar wc );
|
||||
void showUnsavedAlertDialog( LLInventoryItem* item );
|
||||
|
||||
|
|
|
|||
|
|
@ -775,6 +775,16 @@ LLDrawable *LLVOSky::createDrawable(LLPipeline *pipeline)
|
|||
return mDrawable;
|
||||
}
|
||||
|
||||
void LLVOSky::setSunScale(F32 sun_scale)
|
||||
{
|
||||
mSunScale = sun_scale;
|
||||
}
|
||||
|
||||
void LLVOSky::setMoonScale(F32 moon_scale)
|
||||
{
|
||||
mMoonScale = moon_scale;
|
||||
}
|
||||
|
||||
void LLVOSky::setSunTextures(const LLUUID& sun_texture, const LLUUID& sun_texture_next)
|
||||
{
|
||||
// We test the UUIDs here because we explicitly do not want the default image returned by getFetchedTexture in that case...
|
||||
|
|
@ -955,8 +965,8 @@ BOOL LLVOSky::updateGeometry(LLDrawable *drawable)
|
|||
right.normalize();
|
||||
up.normalize();
|
||||
|
||||
bool draw_sun = updateHeavenlyBodyGeometry(drawable, FACE_SUN, mSun, up, right);
|
||||
bool draw_moon = updateHeavenlyBodyGeometry(drawable, FACE_MOON, mMoon, up, right);
|
||||
bool draw_sun = updateHeavenlyBodyGeometry(drawable, mSunScale, FACE_SUN, mSun, up, right);
|
||||
bool draw_moon = updateHeavenlyBodyGeometry(drawable, mMoonScale, FACE_MOON, mMoon, up, right);
|
||||
|
||||
draw_sun &= LLEnvironment::getInstance()->getIsSunUp();
|
||||
draw_moon &= LLEnvironment::getInstance()->getIsMoonUp();
|
||||
|
|
@ -987,7 +997,7 @@ BOOL LLVOSky::updateGeometry(LLDrawable *drawable)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
bool LLVOSky::updateHeavenlyBodyGeometry(LLDrawable *drawable, const S32 f, LLHeavenBody& hb, const LLVector3 &up, const LLVector3 &right)
|
||||
bool LLVOSky::updateHeavenlyBodyGeometry(LLDrawable *drawable, F32 scale, const S32 f, LLHeavenBody& hb, const LLVector3 &up, const LLVector3 &right)
|
||||
{
|
||||
mHeavenlyBodyUpdated = TRUE ;
|
||||
|
||||
|
|
@ -1010,8 +1020,8 @@ bool LLVOSky::updateHeavenlyBodyGeometry(LLDrawable *drawable, const S32 f, LLHe
|
|||
F32 horiz_enlargement = 1 + enlargm_factor * 0.3f;
|
||||
F32 vert_enlargement = 1 + enlargm_factor * 0.2f;
|
||||
|
||||
const LLVector3 scaled_right = horiz_enlargement * HEAVENLY_BODY_DIST * HEAVENLY_BODY_FACTOR * hb.getDiskRadius() * hb_right;
|
||||
const LLVector3 scaled_up = vert_enlargement * HEAVENLY_BODY_DIST * HEAVENLY_BODY_FACTOR * hb.getDiskRadius() * hb_up;
|
||||
const LLVector3 scaled_right = horiz_enlargement * scale * HEAVENLY_BODY_DIST * HEAVENLY_BODY_FACTOR * hb.getDiskRadius() * hb_right;
|
||||
const LLVector3 scaled_up = vert_enlargement * scale * HEAVENLY_BODY_DIST * HEAVENLY_BODY_FACTOR * hb.getDiskRadius() * hb_up;
|
||||
|
||||
LLVector3 v_clipped[4];
|
||||
|
||||
|
|
|
|||
|
|
@ -236,7 +236,7 @@ public:
|
|||
void setSunDirectionCFR(const LLVector3 &sun_direction);
|
||||
void setMoonDirectionCFR(const LLVector3 &moon_direction);
|
||||
|
||||
bool updateHeavenlyBodyGeometry(LLDrawable *drawable, const S32 side, LLHeavenBody& hb, const LLVector3 &up, const LLVector3 &right);
|
||||
bool updateHeavenlyBodyGeometry(LLDrawable *drawable, F32 scale, const S32 side, LLHeavenBody& hb, const LLVector3 &up, const LLVector3 &right);
|
||||
void updateReflectionGeometry(LLDrawable *drawable, F32 H, const LLHeavenBody& HB);
|
||||
|
||||
F32 getWorldScale() const { return mWorldScale; }
|
||||
|
|
@ -278,6 +278,9 @@ public:
|
|||
void setCloudNoiseTextures(const LLUUID& cloud_noise_texture, const LLUUID& cloud_noise_texture_next);
|
||||
void setBloomTextures(const LLUUID& bloom_texture, const LLUUID& bloom_texture_next);
|
||||
|
||||
void setSunScale(F32 sun_scale);
|
||||
void setMoonScale(F32 sun_scale);
|
||||
|
||||
void forceSkyUpdate(void) { mForceUpdate = TRUE; }
|
||||
|
||||
public:
|
||||
|
|
@ -297,6 +300,9 @@ protected:
|
|||
LLPointer<LLViewerFetchedTexture> mCloudNoiseTexturep[2];
|
||||
LLPointer<LLViewerFetchedTexture> mBloomTexturep[2];
|
||||
|
||||
F32 mSunScale = 1.0f;
|
||||
F32 mMoonScale = 1.0f;
|
||||
|
||||
static S32 sResolution;
|
||||
static S32 sTileResX;
|
||||
static S32 sTileResY;
|
||||
|
|
|
|||
|
|
@ -695,6 +695,10 @@ with the same filename but different name
|
|||
<texture name="VirtualTrackball_Rotate_Left" file_name="widgets/track_control_rotate_left_side.png" />
|
||||
<texture name="VirtualTrackball_Rotate_Right" file_name="widgets/track_control_rotate_right_side.png" />
|
||||
<texture name="VirtualTrackball_Rotate_Top" file_name="widgets/track_control_rotate_top.png" />
|
||||
<texture name="VirtualTrackball_Rotate_Bottom_Active" file_name="widgets/track_control_rotate_bottom_active.png" />
|
||||
<texture name="VirtualTrackball_Rotate_Left_Active" file_name="widgets/track_control_rotate_left_side_active.png" />
|
||||
<texture name="VirtualTrackball_Rotate_Right_Active" file_name="widgets/track_control_rotate_right_side_active.png" />
|
||||
<texture name="VirtualTrackball_Rotate_Top_Active" file_name="widgets/track_control_rotate_top_active.png" />
|
||||
<texture name="VirtualTrackball_Sphere" file_name="widgets/track_control_sphere.png" />
|
||||
<texture name="VirtualTrackball_Sun_Back" file_name="widgets/track_control_sun_back.png" />
|
||||
<texture name="VirtualTrackball_Sun_Front" file_name="widgets/track_control_sun_front.png" />
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 362 B |
Binary file not shown.
|
After Width: | Height: | Size: 340 B |
Binary file not shown.
|
After Width: | Height: | Size: 358 B |
Binary file not shown.
|
After Width: | Height: | Size: 367 B |
|
|
@ -3,13 +3,14 @@
|
|||
layout="topleft"
|
||||
name="env_edit_extdaycycle"
|
||||
help_topic="day_presets"
|
||||
save_rect="true"
|
||||
save_rect="false"
|
||||
title="Edit Day Cycle"
|
||||
width="705"
|
||||
height="650"
|
||||
min_width="705"
|
||||
min_height="650"
|
||||
can_resize="true">
|
||||
single_instance="true"
|
||||
can_resize="false">
|
||||
|
||||
<!-- obsolete?, add as hint for 'save' button? -->
|
||||
<string name="title_new">Create a New Day Cycle</string>
|
||||
|
|
@ -400,8 +401,16 @@
|
|||
width="90"
|
||||
label="Add Frame"
|
||||
left_pad="175"
|
||||
top_delta="-12"
|
||||
top_delta="-20"
|
||||
name="add_frame" />
|
||||
<button
|
||||
follows="top|left"
|
||||
height="23"
|
||||
width="90"
|
||||
label="Load Frame"
|
||||
top_pad="0"
|
||||
left_delta="0"
|
||||
name="btn_load_frame" />
|
||||
<button
|
||||
follows="left|top"
|
||||
height="23"
|
||||
|
|
@ -421,36 +430,18 @@
|
|||
visible="true">
|
||||
<!--bg_alpha_color="blue"
|
||||
background_visible="true" -->
|
||||
<icon
|
||||
border="1"
|
||||
bevel_style="out"
|
||||
<text
|
||||
name="icn_lock_edit"
|
||||
layout="bottomleft"
|
||||
follows="bottom"
|
||||
image_name="Locked_Icon"
|
||||
bottom="4"
|
||||
left="5"
|
||||
height="15"
|
||||
width="15"
|
||||
tab_stop="false"
|
||||
visible="false"
|
||||
tool_tip="Select a key frame above to edit settings"/>
|
||||
<button
|
||||
name="btn_load_frame"
|
||||
follows="top"
|
||||
image_overlay="Command_Inventory_Icon"
|
||||
image_disabled="PushButton_Disabled"
|
||||
image_disabled_selected="PushButton_Disabled"
|
||||
image_selected="PushButton_Selected"
|
||||
image_unselected="PushButton_Off"
|
||||
hover_glow_amount="0.15"
|
||||
auto_resize="false"
|
||||
layout="topleft"
|
||||
height="30"
|
||||
width="30"
|
||||
left="25"
|
||||
top="1"
|
||||
tool_tip="Replace frame with settings from inventory"/>
|
||||
height="10"
|
||||
layout="bottomleft"
|
||||
left_delta="15"
|
||||
top_pad="15"
|
||||
font="SansSerif"
|
||||
text_color="Yellow"
|
||||
width="500">
|
||||
Select a key frame from the timeline above to edit settings.
|
||||
</text>
|
||||
</layout_panel>
|
||||
<layout_panel name="frame_settings_water"
|
||||
auto_resize="true"
|
||||
|
|
@ -537,7 +528,7 @@
|
|||
layout="topleft"
|
||||
left_delta="0"
|
||||
top_pad="5"
|
||||
name="advanced_atmo_panel" />
|
||||
name="sky_density_panel" />
|
||||
</tab_container>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
|
|
|
|||
|
|
@ -2,20 +2,19 @@
|
|||
<floater
|
||||
can_minimize="false"
|
||||
can_tear_off="false"
|
||||
can_resize="true"
|
||||
can_resize="false"
|
||||
can_drag_on_left="false"
|
||||
can_close="true"
|
||||
can_dock="true"
|
||||
can_dock="false"
|
||||
bevel_style="in"
|
||||
height="500"
|
||||
height="550"
|
||||
layout="topleft"
|
||||
name="Fixed Environment"
|
||||
save_rect="true"
|
||||
title="Fixed Environment"
|
||||
save_dock_state="true"
|
||||
save_visibility="true"
|
||||
save_visibility="false"
|
||||
single_instance="true"
|
||||
width="650">
|
||||
width="750">
|
||||
<layout_stack name="floater_stack"
|
||||
left="5"
|
||||
top="5"
|
||||
|
|
|
|||
|
|
@ -11183,5 +11183,19 @@ Settings are not supported on this region.
|
|||
Please move to a settings enabled region and retry your action.
|
||||
<tag>fail</tag>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="SettingsConfirmLoss"
|
||||
type="alertmodal">
|
||||
You are about to lose the changes you have made to this [TYPE] named "[NAME]".
|
||||
Are you sure you want to continue?
|
||||
<tag>confirm</tag>
|
||||
<usetemplate
|
||||
ignoretext="Are you sure you want to lose changes?"
|
||||
name="okcancelignore"
|
||||
notext="No"
|
||||
yestext="Yes"/>
|
||||
</notification>
|
||||
|
||||
</notifications>
|
||||
|
|
|
|||
|
|
@ -29,8 +29,8 @@
|
|||
valign="top"
|
||||
top_pad="20"
|
||||
text_color="white">
|
||||
Parcel environmental settings are
|
||||
disabled on legacy regions.
|
||||
No Parcel parcel is selected. Environmental
|
||||
settings are disabled.
|
||||
</text>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
|
|
|
|||
|
|
@ -1,32 +1,262 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<panel
|
||||
border="true"
|
||||
follows="all"
|
||||
label="Density"
|
||||
name="panel_settings_sky_density"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
top="0"
|
||||
width="320"
|
||||
height="240">
|
||||
<tab_container>
|
||||
<panel>
|
||||
name="panel_settings_sky_density_rayleigh"
|
||||
<densityctrl>
|
||||
name = "density_rayleigh"
|
||||
</densityctrl>
|
||||
</panel>
|
||||
<panel>
|
||||
name="panel_settings_sky_density_mie"
|
||||
<densityctrl>
|
||||
name = "density_mie"
|
||||
</densityctrl>
|
||||
</panel>
|
||||
<panel>
|
||||
name="panel_settings_sky_density_absorption"
|
||||
<densityctrl>
|
||||
name = "density_absorption"
|
||||
</densityctrl>
|
||||
</panel>
|
||||
</tab_container>
|
||||
</panel>
|
||||
border="true"
|
||||
follows="all"
|
||||
label="Density"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
help_topic="sky_density"
|
||||
name="panel_settings_sky_density"
|
||||
top="0">
|
||||
<layout_stack
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
top="5"
|
||||
right="-5"
|
||||
bottom="-5"
|
||||
orientation="vertical">
|
||||
<layout_panel
|
||||
border="true"
|
||||
bevel_style="in"
|
||||
auto_resize="true"
|
||||
user_resize="true"
|
||||
visible="true"
|
||||
height="28">
|
||||
<slider
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left_delta="5"
|
||||
min_val="0"
|
||||
max_val="1"
|
||||
name="rayleigh_exponential"
|
||||
label="Rayleigh Exponential Term:"
|
||||
top_delta="8"
|
||||
width="400"
|
||||
can_edit_text="true"/>
|
||||
<slider
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left_delta="5"
|
||||
min_val="0"
|
||||
max_val="1"
|
||||
name="rayleigh_exponential_scale"
|
||||
label="Rayleigh Exponential Scale:"
|
||||
top_delta="8"
|
||||
width="400"
|
||||
can_edit_text="true"/>
|
||||
<slider
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left_delta="5"
|
||||
min_val="0"
|
||||
max_val="1"
|
||||
name="rayleigh_linear"
|
||||
label="Rayleigh Linear Term:"
|
||||
top_delta="8"
|
||||
width="400"
|
||||
can_edit_text="true"/>
|
||||
<slider
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left_delta="5"
|
||||
min_val="0"
|
||||
max_val="1"
|
||||
name="rayleigh_constant"
|
||||
label="Rayleigh Constant Term:"
|
||||
top_delta="8"
|
||||
width="400"
|
||||
can_edit_text="true"/>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
border="true"
|
||||
bevel_style="in"
|
||||
auto_resize="true"
|
||||
user_resize="true"
|
||||
visible="true"
|
||||
height="28">
|
||||
<slider
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left_delta="5"
|
||||
min_val="0"
|
||||
max_val="3.0"
|
||||
name="mie_exponential"
|
||||
label="Mie Exponential Term:"
|
||||
top_delta="8"
|
||||
width="400"
|
||||
can_edit_text="true"/>
|
||||
<slider
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left_delta="5"
|
||||
min_val="0"
|
||||
max_val="1"
|
||||
name="mie_exponential_scale"
|
||||
label="Mie Exponential Scale:"
|
||||
top_delta="8"
|
||||
width="400"
|
||||
can_edit_text="true"/>
|
||||
<slider
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left_delta="5"
|
||||
min_val="0"
|
||||
max_val="3.0"
|
||||
name="mie_linear"
|
||||
label="Mie Linear Term:"
|
||||
top_delta="8"
|
||||
width="400"
|
||||
can_edit_text="true"/>
|
||||
<slider
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left_delta="5"
|
||||
min_val="0"
|
||||
max_val="10"
|
||||
name="mie_constant"
|
||||
label="Mie Constant Term:"
|
||||
top_delta="8"
|
||||
width="400"
|
||||
can_edit_text="true"/>
|
||||
<slider
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left_delta="5"
|
||||
min_val="0.2"
|
||||
max_val="1.8"
|
||||
name="mie_aniso_factor"
|
||||
label="Mie Aniso Factor:"
|
||||
top_delta="8"
|
||||
width="400"
|
||||
can_edit_text="true"/>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
border="true"
|
||||
bevel_style="in"
|
||||
auto_resize="true"
|
||||
user_resize="true"
|
||||
visible="true"
|
||||
height="28">
|
||||
<slider
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left_delta="5"
|
||||
min_val="0"
|
||||
max_val="1"
|
||||
name="absorption_exponential"
|
||||
label="Absorption Exponential Term:"
|
||||
top_delta="8"
|
||||
width="400"
|
||||
can_edit_text="true"/>
|
||||
<slider
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left_delta="5"
|
||||
min_val="0"
|
||||
max_val="1"
|
||||
name="absorption_exponential_scale"
|
||||
label="Absorption Exponential Scale:"
|
||||
top_delta="8"
|
||||
width="400"
|
||||
can_edit_text="true"/>
|
||||
<slider
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left_delta="5"
|
||||
min_val="0"
|
||||
max_val="1"
|
||||
name="absorption_linear"
|
||||
label="Absorption Linear Term:"
|
||||
top_delta="8"
|
||||
width="400"
|
||||
can_edit_text="true"/>
|
||||
<slider
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.01"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left_delta="5"
|
||||
min_val="0"
|
||||
max_val="1"
|
||||
name="absorption_constant"
|
||||
label="Absorption Constant Term:"
|
||||
top_delta="8"
|
||||
width="400"
|
||||
can_edit_text="true"/>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
border="true"
|
||||
bevel_style="in"
|
||||
auto_resize="true"
|
||||
user_resize="true"
|
||||
visible="true"
|
||||
height="16">
|
||||
<slider
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="1"
|
||||
initial_value="0"
|
||||
layout="topleft"
|
||||
left_delta="5"
|
||||
min_val="1000"
|
||||
max_val="40000"
|
||||
name="max_altitude"
|
||||
label="Max Altitude:"
|
||||
top_delta="8"
|
||||
width="400"
|
||||
can_edit_text="true"/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -260,7 +260,7 @@
|
|||
left_delta="5"
|
||||
min_val="0.25"
|
||||
max_val="20"
|
||||
name="sun_scale"
|
||||
name="moon_scale"
|
||||
top_delta="15"
|
||||
width="130"
|
||||
can_edit_text="true"/>
|
||||
|
|
|
|||
|
|
@ -2780,6 +2780,7 @@ If you continue to receive this message, please contact Second Life support for
|
|||
<!-- Environment settings -->
|
||||
<string name="LocalSettings">Local Settings</string>
|
||||
<string name="RegionSettings">Region Settings</string>
|
||||
<string name="NoEnvironmentSettings">This Region does not support environmental settings.</string>
|
||||
|
||||
<!-- panel classified -->
|
||||
<string name="ClassifiedClicksTxt">Clicks: [TELEPORT] teleport, [MAP] map, [PROFILE] profile</string>
|
||||
|
|
|
|||
|
|
@ -43,26 +43,26 @@
|
|||
<sun_moon_trackball.button_rotate_top
|
||||
name="btn_rotate_top"
|
||||
image_unselected="VirtualTrackball_Rotate_Top"
|
||||
image_selected="VirtualTrackball_Rotate_Top"
|
||||
image_disabled="VirtualTrackball_Rotate_Top" />
|
||||
image_selected="VirtualTrackball_Rotate_Top_Active"
|
||||
image_disabled="Blank" />
|
||||
|
||||
<sun_moon_trackball.button_rotate_bottom
|
||||
name="btn_rotate_bottom"
|
||||
image_unselected="VirtualTrackball_Rotate_Bottom"
|
||||
image_selected="VirtualTrackball_Rotate_Bottom"
|
||||
image_disabled="VirtualTrackball_Rotate_Bottom" />
|
||||
image_selected="VirtualTrackball_Rotate_Bottom_Active"
|
||||
image_disabled="Blank" />
|
||||
|
||||
<sun_moon_trackball.button_rotate_left
|
||||
name="btn_rotate_left"
|
||||
image_unselected="VirtualTrackball_Rotate_Left"
|
||||
image_selected="VirtualTrackball_Rotate_Left"
|
||||
image_disabled="VirtualTrackball_Rotate_Left" />
|
||||
image_selected="VirtualTrackball_Rotate_Left_Active"
|
||||
image_disabled="Blank" />
|
||||
|
||||
<sun_moon_trackball.button_rotate_right
|
||||
name="btn_rotate_right"
|
||||
image_unselected="VirtualTrackball_Rotate_Right"
|
||||
image_selected="VirtualTrackball_Rotate_Right"
|
||||
image_disabled="VirtualTrackball_Rotate_Right" />
|
||||
image_selected="VirtualTrackball_Rotate_Right_Active"
|
||||
image_disabled="Blank" />
|
||||
|
||||
</sun_moon_trackball>
|
||||
|
||||
|
|
|
|||
|
|
@ -258,7 +258,7 @@ namespace tut
|
|||
std::string("https://login.aditi.lindenlab.com/cgi-bin/login.cgi"));
|
||||
ensure_equals("Aditi helper uri",
|
||||
LLGridManager::getInstance()->getHelperURI("util.aditi.lindenlab.com"),
|
||||
std::string("http://aditi-secondlife.webdev.lindenlab.com/helpers/"));
|
||||
std::string("https://secondlife.aditi.lindenlab.com/helpers/"));
|
||||
ensure_equals("Aditi login page",
|
||||
LLGridManager::getInstance()->getLoginPage("util.aditi.lindenlab.com"),
|
||||
std::string("https://viewer-splash.secondlife.com/"));
|
||||
|
|
@ -330,7 +330,7 @@ namespace tut
|
|||
std::string("https://login.aditi.lindenlab.com/cgi-bin/login.cgi"));
|
||||
ensure_equals("Aditi helper uri",
|
||||
LLGridManager::getInstance()->getHelperURI("util.aditi.lindenlab.com"),
|
||||
std::string("http://aditi-secondlife.webdev.lindenlab.com/helpers/"));
|
||||
std::string("https://secondlife.aditi.lindenlab.com/helpers/"));
|
||||
ensure_equals("Aditi login page",
|
||||
LLGridManager::getInstance()->getLoginPage("util.aditi.lindenlab.com"),
|
||||
std::string("https://viewer-splash.secondlife.com/"));
|
||||
|
|
|
|||
Loading…
Reference in New Issue