summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/newview/CMakeLists.txt2
-rw-r--r--indra/newview/llenvadapters.h12
-rw-r--r--indra/newview/llfloatereditsky.cpp65
-rw-r--r--indra/newview/llfloatereditsky.h3
-rw-r--r--indra/newview/llfloatereditwater.cpp2
-rw-r--r--indra/newview/lljoystickbutton.cpp57
-rw-r--r--indra/newview/lljoystickbutton.h13
-rw-r--r--indra/newview/llsettingsdaycycle.cpp113
-rw-r--r--indra/newview/llsettingsdaycycle.h66
-rw-r--r--indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml31
-rw-r--r--indra/newview/skins/default/xui/en/widgets/joystick_quat.xml7
-rw-r--r--indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml4
12 files changed, 342 insertions, 33 deletions
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index b46e0971e2..8cb029a2be 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -536,6 +536,7 @@ set(viewer_SOURCE_FILES
llsechandler_basic.cpp
llselectmgr.cpp
llsettingsbase.cpp
+ llsettingsdaycycle.cpp
llsettingssky.cpp
llsettingswater.cpp
llshareavatarhandler.cpp
@@ -1153,6 +1154,7 @@ set(viewer_HEADER_FILES
llsechandler_basic.h
llselectmgr.h
llsettingsbase.h
+ llsettingsdaycycle.h
llsettingssky.h
llsettingswater.h
llsidepanelappearance.h
diff --git a/indra/newview/llenvadapters.h b/indra/newview/llenvadapters.h
index 3241e43191..8b93bbbe9f 100644
--- a/indra/newview/llenvadapters.h
+++ b/indra/newview/llenvadapters.h
@@ -51,18 +51,22 @@ public:
mIsBlueHorizonOrDensity = (mSliderName == "WLBlueHorizon" || mSliderName == "WLBlueDensity");
}
- inline WLColorControl & operator = (const LLColor4 & val)
+ inline void setColor4(const LLColor4 & val)
+ {
+ mColor = val;
+ }
+
+ inline void setColor3(const LLColor3 & val)
{
mColor = val;
- return *this;
}
- inline operator LLColor4 (void) const
+ inline LLColor4 getColor4() const
{
return mColor;
}
- inline operator LLColor3 (void) const
+ inline LLColor3 getColor3(void) const
{
return vec4to3(mColor);
}
diff --git a/indra/newview/llfloatereditsky.cpp b/indra/newview/llfloatereditsky.cpp
index 40f86e3778..bd83bdd9c5 100644
--- a/indra/newview/llfloatereditsky.cpp
+++ b/indra/newview/llfloatereditsky.cpp
@@ -40,6 +40,7 @@
#include "llsliderctrl.h"
#include "lltabcontainer.h"
#include "lltimectrl.h"
+#include "lljoystickbutton.h"
// newview
#include "llagent.h"
@@ -88,8 +89,8 @@ BOOL LLFloaterEditSky::postBuild()
initCallbacks();
- // Create the sun position scrubber on the slider.
- getChild<LLMultiSliderCtrl>("WLSunPos")->addSlider(12.f);
+// // Create the sun position scrubber on the slider.
+// getChild<LLMultiSliderCtrl>("WLSunPos")->addSlider(12.f);
return TRUE;
}
@@ -175,9 +176,11 @@ void LLFloaterEditSky::initCallbacks(void)
getChild<LLUICtrl>("WLAmbient")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlMoved, this, _1, &mSkyAdapter->mAmbient));
// time of day
- getChild<LLUICtrl>("WLSunPos")->setCommitCallback(boost::bind(&LLFloaterEditSky::onSunMoved, this, _1, &mSkyAdapter->mLightnorm)); // multi-slider
- getChild<LLTimeCtrl>("WLDayTime")->setCommitCallback(boost::bind(&LLFloaterEditSky::onTimeChanged, this)); // time ctrl
- getChild<LLUICtrl>("WLEastAngle")->setCommitCallback(boost::bind(&LLFloaterEditSky::onSunMoved, this, _1, &mSkyAdapter->mLightnorm));
+// getChild<LLUICtrl>("WLSunPos")->setCommitCallback(boost::bind(&LLFloaterEditSky::onSunMoved, this, _1, &mSkyAdapter->mLightnorm)); // multi-slider
+// getChild<LLTimeCtrl>("WLDayTime")->setCommitCallback(boost::bind(&LLFloaterEditSky::onTimeChanged, this)); // time ctrl
+// getChild<LLUICtrl>("WLEastAngle")->setCommitCallback(boost::bind(&LLFloaterEditSky::onSunMoved, this, _1, &mSkyAdapter->mLightnorm));
+ getChild<LLJoystickQuaternion>("WLSunRotation")->setCommitCallback(boost::bind(&LLFloaterEditSky::onSunRotationChanged, this));
+ getChild<LLJoystickQuaternion>("WLMoonRotation")->setCommitCallback(boost::bind(&LLFloaterEditSky::onMoonRotationChanged, this));
// Clouds
@@ -215,7 +218,7 @@ void LLFloaterEditSky::syncControls()
// blue horizon
- mSkyAdapter->mBlueHorizon = psky->getBlueHorizon();
+ mSkyAdapter->mBlueHorizon.setColor3( psky->getBlueHorizon() );
setColorSwatch("WLBlueHorizon", mSkyAdapter->mBlueHorizon, WL_BLUE_HORIZON_DENSITY_SCALE);
// haze density, horizon, mult, and altitude
@@ -229,45 +232,47 @@ void LLFloaterEditSky::syncControls()
childSetValue("WLMaxAltitude", (F32) mSkyAdapter->mMaxAlt);
// blue density
- mSkyAdapter->mBlueDensity = psky->getBlueDensity();
+ mSkyAdapter->mBlueDensity.setColor3( psky->getBlueDensity() );
setColorSwatch("WLBlueDensity", mSkyAdapter->mBlueDensity, WL_BLUE_HORIZON_DENSITY_SCALE);
// Lighting
// sunlight
- mSkyAdapter->mSunlight = psky->getSunlightColor();
+ mSkyAdapter->mSunlight.setColor3( psky->getSunlightColor() );
setColorSwatch("WLSunlight", mSkyAdapter->mSunlight, WL_SUN_AMBIENT_SLIDER_SCALE);
// glow
- mSkyAdapter->mGlow = psky->getGlow();
+ mSkyAdapter->mGlow.setColor3( psky->getGlow() );
childSetValue("WLGlowR", 2 - mSkyAdapter->mGlow.getRed() / 20.0f);
childSetValue("WLGlowB", -mSkyAdapter->mGlow.getBlue() / 5.0f);
// ambient
- mSkyAdapter->mAmbient = psky->getAmbientColor();
+ mSkyAdapter->mAmbient.setColor3( psky->getAmbientColor() );
setColorSwatch("WLAmbient", mSkyAdapter->mAmbient, WL_SUN_AMBIENT_SLIDER_SCALE);
- LLSettingsSky::azimalt_t azal = psky->getSunRotationAzAl();
-
- F32 time24 = sun_pos_to_time24(azal.second / F_TWO_PI);
- getChild<LLMultiSliderCtrl>("WLSunPos")->setCurSliderValue(time24, TRUE);
- getChild<LLTimeCtrl>("WLDayTime")->setTime24(time24);
- childSetValue("WLEastAngle", azal.first / F_TWO_PI);
+// LLSettingsSky::azimalt_t azal = psky->getSunRotationAzAl();
+//
+// F32 time24 = sun_pos_to_time24(azal.second / F_TWO_PI);
+// getChild<LLMultiSliderCtrl>("WLSunPos")->setCurSliderValue(time24, TRUE);
+// getChild<LLTimeCtrl>("WLDayTime")->setTime24(time24);
+// childSetValue("WLEastAngle", azal.first / F_TWO_PI);
+ getChild<LLJoystickQuaternion>("WLSunRotation")->setRotation(psky->getSunRotation());
+ getChild<LLJoystickQuaternion>("WLMoonRotation")->setRotation(psky->getMoonRotation());
// Clouds
// Cloud Color
- mSkyAdapter->mCloudColor = psky->getCloudColor();
+ mSkyAdapter->mCloudColor.setColor3( psky->getCloudColor() );
setColorSwatch("WLCloudColor", mSkyAdapter->mCloudColor, WL_CLOUD_SLIDER_SCALE);
// Cloud
- mSkyAdapter->mCloudMain = psky->getCloudPosDensity1();
+ mSkyAdapter->mCloudMain.setColor3( psky->getCloudPosDensity1() );
childSetValue("WLCloudX", mSkyAdapter->mCloudMain.getRed());
childSetValue("WLCloudY", mSkyAdapter->mCloudMain.getGreen());
childSetValue("WLCloudDensity", mSkyAdapter->mCloudMain.getBlue());
// Cloud Detail
- mSkyAdapter->mCloudDetail = psky->getCloudPosDensity2();
+ mSkyAdapter->mCloudDetail.setColor3( psky->getCloudPosDensity2() );
childSetValue("WLCloudDetailX", mSkyAdapter->mCloudDetail.getRed());
childSetValue("WLCloudDetailY", mSkyAdapter->mCloudDetail.getGreen());
childSetValue("WLCloudDetailDensity", mSkyAdapter->mCloudDetail.getBlue());
@@ -307,7 +312,7 @@ void LLFloaterEditSky::syncControls()
void LLFloaterEditSky::setColorSwatch(const std::string& name, const WLColorControl& from_ctrl, F32 k)
{
// Set the value, dividing it by <k> first.
- LLColor4 color = from_ctrl;
+ LLColor4 color = from_ctrl.getColor4();
getChild<LLColorSwatchCtrl>(name)->set(color / k);
}
@@ -336,7 +341,7 @@ void LLFloaterEditSky::onColorControlMoved(LLUICtrl* ctrl, WLColorControl* color
color_vec.mV[3] = color_max(color_vec);
// Apply the new RGBI value.
- *color_ctrl = color_vec;
+ color_ctrl->setColor4(color_vec);
color_ctrl->update(mEditSettings);
}
@@ -410,7 +415,7 @@ void LLFloaterEditSky::adjustIntensity(WLColorControl *ctrl, F32 val, F32 scale)
{
if (ctrl->getHasSliderName())
{
- LLColor4 color = static_cast<LLColor4>(*ctrl);
+ LLColor4 color = ctrl->getColor4();
F32 i = color_max(color) / scale;
ctrl->setIntensity(i);
std::string name = ctrl->getSliderName();
@@ -488,6 +493,22 @@ void LLFloaterEditSky::onTimeChanged()
onSunMoved(getChild<LLUICtrl>("WLSunPos"), &(mSkyAdapter->mLightnorm));
}
+void LLFloaterEditSky::onSunRotationChanged()
+{
+ LLJoystickQuaternion* sun_spinner = getChild<LLJoystickQuaternion>("WLSunRotation");
+ LLQuaternion sunrot(sun_spinner->getRotation());
+
+ mEditSettings->setSunRotation(sunrot);
+}
+
+void LLFloaterEditSky::onMoonRotationChanged()
+{
+ LLJoystickQuaternion* moon_spinner = getChild<LLJoystickQuaternion>("WLMoonRotation");
+ LLQuaternion moonrot(moon_spinner->getRotation());
+
+ mEditSettings->setMoonRotation(moonrot);
+}
+
void LLFloaterEditSky::onStarAlphaMoved(LLUICtrl* ctrl)
{
LLSliderCtrl* sldr_ctrl = static_cast<LLSliderCtrl*>(ctrl);
diff --git a/indra/newview/llfloatereditsky.h b/indra/newview/llfloatereditsky.h
index 6aec87014d..51be50a481 100644
--- a/indra/newview/llfloatereditsky.h
+++ b/indra/newview/llfloatereditsky.h
@@ -81,6 +81,9 @@ private:
void onSunMoved(LLUICtrl* ctrl, void* userdata);
void onTimeChanged();
+ void onSunRotationChanged();
+ void onMoonRotationChanged();
+
// for handling when the star slider is moved to adjust the alpha
void onStarAlphaMoved(LLUICtrl* ctrl);
diff --git a/indra/newview/llfloatereditwater.cpp b/indra/newview/llfloatereditwater.cpp
index 41180b5da8..b025680da1 100644
--- a/indra/newview/llfloatereditwater.cpp
+++ b/indra/newview/llfloatereditwater.cpp
@@ -286,7 +286,7 @@ void LLFloaterEditWater::onExpFloatControlMoved(LLUICtrl* ctrl, WLXFloatControl*
void LLFloaterEditWater::onColorControlMoved(LLUICtrl* ctrl, WLColorControl* color_ctrl)
{
LLColorSwatchCtrl* swatch = static_cast<LLColorSwatchCtrl*>(ctrl);
- *color_ctrl = swatch->get();
+ color_ctrl->setColor4( swatch->get() );
color_ctrl->update(mEditSettings);
}
diff --git a/indra/newview/lljoystickbutton.cpp b/indra/newview/lljoystickbutton.cpp
index 5b35d5c3a5..7fcd6f4361 100644
--- a/indra/newview/lljoystickbutton.cpp
+++ b/indra/newview/lljoystickbutton.cpp
@@ -660,8 +660,20 @@ LLJoystickQuaternion::LLJoystickQuaternion(const LLJoystickQuaternion::Params &p
mInLeft(false),
mInTop(false),
mInRight(false),
- mInBottom(false)
-{
+ mInBottom(false),
+ mVectorZero(0.0f, 0.0f, 1.0f),
+ mRotation(),
+ mUpDnAxis(1.0f, 0.0f, 0.0f),
+ mLfRtAxis(0.0f, 0.0f, 1.0f),
+ mXAxisIndex(2), // left & right across the control
+ mYAxisIndex(0), // up & down across the control
+ mZAxisIndex(1) // tested for above and below
+{
+ for (int i = 0; i < 3; ++i)
+ {
+ mLfRtAxis.mV[i] = (mXAxisIndex == i) ? 1.0 : 0.0;
+ mUpDnAxis.mV[i] = (mYAxisIndex == i) ? 1.0 : 0.0;
+ }
}
void LLJoystickQuaternion::setToggleState(BOOL left, BOOL top, BOOL right, BOOL bottom)
@@ -722,6 +734,7 @@ BOOL LLJoystickQuaternion::handleMouseUp(S32 x, S32 y, MASK mask)
void LLJoystickQuaternion::onHeldDown()
{
+ LLVector3 axis;
updateSlop();
S32 dx = mLastMouse.mX - mFirstMouse.mX + mInitialOffset.mX;
@@ -730,18 +743,34 @@ void LLJoystickQuaternion::onHeldDown()
// left-right rotation
if (dx > mHorizSlopNear)
{
+ axis += mUpDnAxis;
}
else if (dx < -mHorizSlopNear)
{
+ axis -= mUpDnAxis;
}
// over/under rotation
if (dy > mVertSlopNear)
{
+ axis += mLfRtAxis;
}
else if (dy < -mVertSlopNear)
{
+ axis -= mLfRtAxis;
}
+
+ if (axis.isNull())
+ return;
+
+ axis.normalize();
+
+ LLQuaternion delta;
+ delta.setAngleAxis(0.0523599f, axis); // about 3deg
+
+ mRotation *= delta;
+ setValue(mRotation.getValue());
+ onCommit();
}
void LLJoystickQuaternion::draw()
@@ -770,6 +799,16 @@ void LLJoystickQuaternion::draw()
{
drawRotatedImage(getImageSelected(), 3);
}
+
+ LLVector3 draw_point = mVectorZero * mRotation;
+ S32 halfwidth = getRect().getWidth() / 2;
+ S32 halfheight = getRect().getHeight() / 2;
+ draw_point.mV[mXAxisIndex] = (draw_point.mV[mXAxisIndex] + 1.0) * halfwidth;
+ draw_point.mV[mYAxisIndex] = (draw_point.mV[mYAxisIndex] + 1.0) * halfheight;
+
+ gl_circle_2d(draw_point.mV[mXAxisIndex], draw_point.mV[mYAxisIndex], 4, 8,
+ draw_point.mV[mZAxisIndex] >= 0.f);
+
}
F32 LLJoystickQuaternion::getOrbitRate()
@@ -826,5 +865,19 @@ void LLJoystickQuaternion::drawRotatedImage(LLPointer<LLUIImage> image, S32 rota
gGL.end();
}
+void LLJoystickQuaternion::setRotation(const LLQuaternion &value)
+{
+ if (value != mRotation)
+ {
+ mRotation = value;
+ mRotation.normalize();
+ LLJoystick::setValue(mRotation.getValue());
+ }
+}
+
+LLQuaternion LLJoystickQuaternion::getRotation() const
+{
+ return mRotation;
+}
diff --git a/indra/newview/lljoystickbutton.h b/indra/newview/lljoystickbutton.h
index ae8de1bf32..ee66088b56 100644
--- a/indra/newview/lljoystickbutton.h
+++ b/indra/newview/lljoystickbutton.h
@@ -30,6 +30,7 @@
#include "llbutton.h"
#include "llcoord.h"
#include "llviewertexture.h"
+#include "llquaternion.h"
typedef enum e_joystick_quadrant
{
@@ -198,6 +199,9 @@ public:
virtual void onHeldDown();
virtual void draw();
+ void setRotation(const LLQuaternion &value);
+ LLQuaternion getRotation() const;
+
protected:
F32 getOrbitRate();
virtual void updateSlop();
@@ -207,6 +211,15 @@ protected:
BOOL mInTop;
BOOL mInRight;
BOOL mInBottom;
+
+ S32 mXAxisIndex;
+ S32 mYAxisIndex;
+ S32 mZAxisIndex;
+
+ LLVector3 mVectorZero;
+ LLQuaternion mRotation;
+ LLVector3 mUpDnAxis;
+ LLVector3 mLfRtAxis;
};
#endif // LL_LLJOYSTICKBUTTON_H
diff --git a/indra/newview/llsettingsdaycycle.cpp b/indra/newview/llsettingsdaycycle.cpp
new file mode 100644
index 0000000000..859fc5822f
--- /dev/null
+++ b/indra/newview/llsettingsdaycycle.cpp
@@ -0,0 +1,113 @@
+/**
+* @file llsettingsdaycycle.cpp
+* @author optional
+* @brief A base class for asset based settings groups.
+*
+* $LicenseInfo:2011&license=viewerlgpl$
+* Second Life Viewer Source Code
+* Copyright (C) 2017, Linden Research, Inc.
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation;
+* version 2.1 of the License only.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this library; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*
+* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+* $/LicenseInfo$
+*/
+
+#include "llviewerprecompiledheaders.h"
+#include "llviewercontrol.h"
+#include "llsettingsdaycycle.h"
+#include <algorithm>
+#include <boost/make_shared.hpp>
+#include "lltrace.h"
+#include "llfasttimer.h"
+#include "v3colorutil.h"
+
+#include "llglslshader.h"
+#include "llviewershadermgr.h"
+
+#include "llenvironment.h"
+
+#include "llagent.h"
+#include "pipeline.h"
+
+//=========================================================================
+namespace
+{
+ LLTrace::BlockTimerStatHandle FTM_BLEND_WATERVALUES("Blending Water Environment");
+ LLTrace::BlockTimerStatHandle FTM_UPDATE_WATERVALUES("Update Water Environment");
+}
+
+//=========================================================================
+
+
+//=========================================================================
+LLSettingsDayCycle::LLSettingsDayCycle(const LLSD &data) :
+ LLSettingsBase(data)
+{
+}
+
+LLSettingsDayCycle::LLSettingsDayCycle() :
+ LLSettingsBase()
+{
+}
+
+//=========================================================================
+LLSD LLSettingsDayCycle::defaults()
+{
+ LLSD dfltsetting;
+
+
+ return dfltsetting;
+}
+
+
+LLSettingsDayCycle::ptr_t LLSettingsDayCycle::buildFromLegacyPreset(const std::string &name, const LLSD &oldsettings)
+{
+ LLSD newsettings(defaults());
+
+ //newsettings[SETTING_NAME] = name;
+
+
+
+ LLSettingsDayCycle::ptr_t dayp = boost::make_shared<LLSettingsDayCycle>(newsettings);
+
+ return dayp;
+}
+
+LLSettingsDayCycle::ptr_t LLSettingsDayCycle::buildDefaultDayCycle()
+{
+ LLSD settings = LLSettingsDayCycle::defaults();
+
+ LLSettingsDayCycle::ptr_t dayp = boost::make_shared<LLSettingsDayCycle>(settings);
+
+ return dayp;
+}
+
+LLSettingsDayCycle::ptr_t LLSettingsDayCycle::buildClone()
+{
+ LLSD settings = cloneSettings();
+
+ LLSettingsDayCycle::ptr_t dayp = boost::make_shared<LLSettingsDayCycle>(settings);
+
+ return dayp;
+}
+
+//=========================================================================
+void LLSettingsDayCycle::updateSettings()
+{
+
+}
+
+//=========================================================================
diff --git a/indra/newview/llsettingsdaycycle.h b/indra/newview/llsettingsdaycycle.h
new file mode 100644
index 0000000000..c562844bca
--- /dev/null
+++ b/indra/newview/llsettingsdaycycle.h
@@ -0,0 +1,66 @@
+/**
+* @file llsettingsdaycycle.h
+* @author optional
+* @brief A base class for asset based settings groups.
+*
+* $LicenseInfo:2011&license=viewerlgpl$
+* Second Life Viewer Source Code
+* Copyright (C) 2017, Linden Research, Inc.
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation;
+* version 2.1 of the License only.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this library; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*
+* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+* $/LicenseInfo$
+*/
+
+#ifndef LL_SETTINGS_DAYCYCLE_H
+#define LL_SETTINGS_DAYCYCLE_H
+
+#include "llsettingsbase.h"
+
+class LLSettingsDayCycle : public LLSettingsBase
+{
+public:
+
+ typedef boost::shared_ptr<LLSettingsDayCycle> ptr_t;
+
+ //---------------------------------------------------------------------
+ LLSettingsDayCycle(const LLSD &data);
+ virtual ~LLSettingsDayCycle() { };
+
+ static ptr_t buildFromLegacyPreset(const std::string &name, const LLSD &oldsettings);
+ static ptr_t buildDefaultDayCycle();
+ ptr_t buildClone();
+
+ //---------------------------------------------------------------------
+ virtual std::string getSettingType() const { return std::string("daycycle"); }
+
+ // Settings status
+ ptr_t blend(const ptr_t &other, F32 mix) const;
+
+ static LLSD defaults();
+
+ //---------------------------------------------------------------------
+
+protected:
+ LLSettingsDayCycle();
+
+ virtual void updateSettings();
+
+
+private:
+};
+
+#endif
diff --git a/indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml
index 56233d91ee..c03a206e88 100644
--- a/indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml
+++ b/indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml
@@ -454,7 +454,34 @@
width="200">
Sun/Moon Position
</text>
- <multi_slider
+
+ <joystick_quat
+ follows="left|top"
+ height="78"
+ layout="topleft"
+ left_delta="0"
+ name="WLSunRotation"
+ quadrant="left"
+ sound_flags="3"
+ visible="true"
+ tool_tip="Move sun in sky"
+ top="44"
+ width="78" /> />
+
+ <joystick_quat
+ follows="left|top"
+ height="78"
+ layout="topleft"
+ left_delta="96"
+ name="WLMoonRotation"
+ quadrant="left"
+ sound_flags="3"
+ visible="true"
+ tool_tip="Move moon in sky"
+ top="44"
+ width="78" /> />
+
+ <!-- multi_slider
can_edit_text="true"
control_name="WLSunPos"
decimal_digits="0"
@@ -644,7 +671,7 @@
left_delta="10"
name="WLEastAngle"
top_pad="6"
- width="200" />
+ width="200" / -->
</panel>
<panel
diff --git a/indra/newview/skins/default/xui/en/widgets/joystick_quat.xml b/indra/newview/skins/default/xui/en/widgets/joystick_quat.xml
new file mode 100644
index 0000000000..a190da3909
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/joystick_quat.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<joystick_rotate
+ image_selected="Cam_Rotate_In"
+ image_unselected="Cam_Rotate_Out"
+ scale_image="false"
+ mouse_opaque="false"
+ held_down_delay.seconds="0"/>
diff --git a/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml b/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml
index a190da3909..cbf721b346 100644
--- a/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml
+++ b/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<joystick_rotate
+<joystick_quat
image_selected="Cam_Rotate_In"
image_unselected="Cam_Rotate_Out"
- scale_image="false"
+ scale_image="true"
mouse_opaque="false"
held_down_delay.seconds="0"/>