merge fix for STORM-616
commit
0f72f152e8
1
.hgtags
1
.hgtags
|
|
@ -35,3 +35,4 @@ b0cd7e150009809a0b5b0a9d5785cd4bb230413a 2.2.0-beta3
|
|||
a3c12342b1af0951b8aa3b828aacef17fcea8178 2.3.0-beta1
|
||||
db0fe9bb65187f365e58a717dd23d0f4754a9c1d 2.3.0-beta2
|
||||
6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 2.3.0-beta3
|
||||
6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 2.3.0-release
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ viewer-release.viewer_channel = "Second Life Release"
|
|||
viewer-release.login_channel = "Second Life Release"
|
||||
viewer-release.build_debug_release_separately = true
|
||||
viewer-release.build_viewer_update_version_manager = true
|
||||
|
||||
viewer-release.release-viewer.jira = DRTVWR-13
|
||||
|
||||
# ========================================
|
||||
# aimee
|
||||
|
|
|
|||
|
|
@ -770,6 +770,7 @@ WolfPup Lowenhar
|
|||
STORM-143
|
||||
STORM-535
|
||||
STORM-544
|
||||
STORM-654
|
||||
VWR-20741
|
||||
VWR-20933
|
||||
Zai Lynch
|
||||
|
|
|
|||
|
|
@ -1365,6 +1365,17 @@
|
|||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>LetterKeysFocusChatBar</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When printable characters keys (possibly with Shift held) are pressed, the chatbar takes focus</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>S32</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>ChatBubbleOpacity</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
@ -8340,6 +8351,17 @@
|
|||
<key>Value</key>
|
||||
<real>1.0</real>
|
||||
</map>
|
||||
<key>RenderTransparentWater</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Render water as transparent. Setting to false renders water as opaque with a simple texture applied.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>RenderTreeLODFactor</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ RenderObjectBump 1 1
|
|||
RenderReflectionDetail 1 4
|
||||
RenderTerrainDetail 1 1
|
||||
RenderTerrainLODFactor 1 2.0
|
||||
RenderTransparentWater 1 1
|
||||
RenderTreeLODFactor 1 1.0
|
||||
RenderUseImpostors 1 1
|
||||
RenderVBOEnable 1 1
|
||||
|
|
@ -80,6 +81,7 @@ RenderObjectBump 1 0
|
|||
RenderReflectionDetail 1 0
|
||||
RenderTerrainDetail 1 0
|
||||
RenderTerrainLODFactor 1 1
|
||||
RenderTransparentWater 1 0
|
||||
RenderTreeLODFactor 1 0
|
||||
RenderUseImpostors 1 1
|
||||
RenderVolumeLODFactor 1 0.5
|
||||
|
|
@ -108,6 +110,7 @@ RenderObjectBump 1 1
|
|||
RenderReflectionDetail 1 0
|
||||
RenderTerrainDetail 1 1
|
||||
RenderTerrainLODFactor 1 1.0
|
||||
RenderTransparentWater 1 1
|
||||
RenderTreeLODFactor 1 0.5
|
||||
RenderUseImpostors 1 1
|
||||
RenderVolumeLODFactor 1 1.125
|
||||
|
|
@ -135,6 +138,7 @@ RenderObjectBump 1 1
|
|||
RenderReflectionDetail 1 2
|
||||
RenderTerrainDetail 1 1
|
||||
RenderTerrainLODFactor 1 2.0
|
||||
RenderTransparentWater 1 1
|
||||
RenderTreeLODFactor 1 0.5
|
||||
RenderUseImpostors 1 1
|
||||
RenderVolumeLODFactor 1 1.125
|
||||
|
|
@ -162,6 +166,7 @@ RenderObjectBump 1 1
|
|||
RenderReflectionDetail 1 4
|
||||
RenderTerrainDetail 1 1
|
||||
RenderTerrainLODFactor 1 2.0
|
||||
RenderTransparentWater 1 1
|
||||
RenderTreeLODFactor 1 1.0
|
||||
RenderUseImpostors 1 1
|
||||
RenderVolumeLODFactor 1 2.0
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ RenderObjectBump 1 1
|
|||
RenderReflectionDetail 1 4
|
||||
RenderTerrainDetail 1 1
|
||||
RenderTerrainLODFactor 1 2.0
|
||||
RenderTransparentWater 1 1
|
||||
RenderTreeLODFactor 1 1.0
|
||||
RenderUseImpostors 1 1
|
||||
RenderVBOEnable 1 1
|
||||
|
|
@ -79,6 +80,7 @@ RenderObjectBump 1 0
|
|||
RenderReflectionDetail 1 0
|
||||
RenderTerrainDetail 1 0
|
||||
RenderTerrainLODFactor 1 1
|
||||
RenderTransparentWater 1 0
|
||||
RenderTreeLODFactor 1 0
|
||||
RenderUseImpostors 1 1
|
||||
RenderVolumeLODFactor 1 0.5
|
||||
|
|
@ -107,6 +109,7 @@ RenderObjectBump 1 1
|
|||
RenderReflectionDetail 1 0
|
||||
RenderTerrainDetail 1 1
|
||||
RenderTerrainLODFactor 1 1.0
|
||||
RenderTransparentWater 1 1
|
||||
RenderTreeLODFactor 1 0.5
|
||||
RenderUseImpostors 1 1
|
||||
RenderVolumeLODFactor 1 1.125
|
||||
|
|
@ -134,6 +137,7 @@ RenderObjectBump 1 1
|
|||
RenderReflectionDetail 1 2
|
||||
RenderTerrainDetail 1 1
|
||||
RenderTerrainLODFactor 1 2.0
|
||||
RenderTransparentWater 1 1
|
||||
RenderTreeLODFactor 1 0.5
|
||||
RenderUseImpostors 1 1
|
||||
RenderVolumeLODFactor 1 1.125
|
||||
|
|
@ -161,6 +165,7 @@ RenderObjectBump 1 1
|
|||
RenderReflectionDetail 1 4
|
||||
RenderTerrainDetail 1 1
|
||||
RenderTerrainLODFactor 1 2.0
|
||||
RenderTransparentWater 1 1
|
||||
RenderTreeLODFactor 1 1.0
|
||||
RenderUseImpostors 1 1
|
||||
RenderVolumeLODFactor 1 2.0
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ RenderObjectBump 1 1
|
|||
RenderReflectionDetail 1 3
|
||||
RenderTerrainDetail 1 1
|
||||
RenderTerrainLODFactor 1 2.0
|
||||
RenderTransparentWater 1 1
|
||||
RenderTreeLODFactor 1 1.0
|
||||
RenderUseImpostors 1 1
|
||||
RenderVBOEnable 1 1
|
||||
|
|
@ -80,6 +81,7 @@ RenderObjectBump 1 0
|
|||
RenderReflectionDetail 1 0
|
||||
RenderTerrainDetail 1 0
|
||||
RenderTerrainLODFactor 1 1
|
||||
RenderTransparentWater 1 0
|
||||
RenderTreeLODFactor 1 0
|
||||
RenderUseImpostors 1 1
|
||||
RenderVolumeLODFactor 1 0.5
|
||||
|
|
@ -107,6 +109,7 @@ RenderObjectBump 1 1
|
|||
RenderReflectionDetail 1 0
|
||||
RenderTerrainDetail 1 1
|
||||
RenderTerrainLODFactor 1 1.0
|
||||
RenderTransparentWater 1 1
|
||||
RenderTreeLODFactor 1 0.5
|
||||
RenderUseImpostors 1 1
|
||||
RenderVolumeLODFactor 1 1.125
|
||||
|
|
@ -133,6 +136,7 @@ RenderObjectBump 1 1
|
|||
RenderReflectionDetail 1 2
|
||||
RenderTerrainDetail 1 1
|
||||
RenderTerrainLODFactor 1 2.0
|
||||
RenderTransparentWater 1 1
|
||||
RenderTreeLODFactor 1 0.5
|
||||
RenderUseImpostors 1 1
|
||||
RenderVolumeLODFactor 1 1.125
|
||||
|
|
@ -159,6 +163,7 @@ RenderObjectBump 1 1
|
|||
RenderReflectionDetail 1 3
|
||||
RenderTerrainDetail 1 1
|
||||
RenderTerrainLODFactor 1 2.0
|
||||
RenderTransparentWater 1 1
|
||||
RenderTreeLODFactor 1 1.0
|
||||
RenderUseImpostors 1 1
|
||||
RenderVolumeLODFactor 1 2.0
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ RenderObjectBump 1 1
|
|||
RenderReflectionDetail 1 4
|
||||
RenderTerrainDetail 1 1
|
||||
RenderTerrainLODFactor 1 2.0
|
||||
RenderTransparentWater 1 1
|
||||
RenderTreeLODFactor 1 1.0
|
||||
RenderUseImpostors 1 1
|
||||
RenderVBOEnable 1 1
|
||||
|
|
@ -80,6 +81,7 @@ RenderObjectBump 1 0
|
|||
RenderReflectionDetail 1 0
|
||||
RenderTerrainDetail 1 0
|
||||
RenderTerrainLODFactor 1 1
|
||||
RenderTransparentWater 1 0
|
||||
RenderTreeLODFactor 1 0
|
||||
RenderUseImpostors 1 1
|
||||
RenderVolumeLODFactor 1 0.5
|
||||
|
|
@ -108,6 +110,7 @@ RenderObjectBump 1 1
|
|||
RenderReflectionDetail 1 0
|
||||
RenderTerrainDetail 1 1
|
||||
RenderTerrainLODFactor 1 1.0
|
||||
RenderTransparentWater 1 1
|
||||
RenderTreeLODFactor 1 0.5
|
||||
RenderUseImpostors 1 1
|
||||
RenderVolumeLODFactor 1 1.125
|
||||
|
|
@ -135,6 +138,7 @@ RenderObjectBump 1 1
|
|||
RenderReflectionDetail 1 2
|
||||
RenderTerrainDetail 1 1
|
||||
RenderTerrainLODFactor 1 2.0
|
||||
RenderTransparentWater 1 1
|
||||
RenderTreeLODFactor 1 0.5
|
||||
RenderUseImpostors 1 1
|
||||
RenderVolumeLODFactor 1 1.125
|
||||
|
|
@ -162,6 +166,7 @@ RenderObjectBump 1 1
|
|||
RenderReflectionDetail 1 4
|
||||
RenderTerrainDetail 1 1
|
||||
RenderTerrainLODFactor 1 2.0
|
||||
RenderTransparentWater 1 1
|
||||
RenderTreeLODFactor 1 1.0
|
||||
RenderUseImpostors 1 1
|
||||
RenderVolumeLODFactor 1 2.0
|
||||
|
|
|
|||
|
|
@ -48,7 +48,8 @@
|
|||
#include "llviewershadermgr.h"
|
||||
#include "llwaterparammanager.h"
|
||||
|
||||
const LLUUID WATER_TEST("2bfd3884-7e27-69b9-ba3a-3e673f680004");
|
||||
const LLUUID TRANSPARENT_WATER_TEXTURE("2bfd3884-7e27-69b9-ba3a-3e673f680004");
|
||||
const LLUUID OPAQUE_WATER_TEXTURE("43c32285-d658-1793-c123-bf86315de055");
|
||||
|
||||
static float sTime;
|
||||
|
||||
|
|
@ -71,10 +72,14 @@ LLDrawPoolWater::LLDrawPoolWater() :
|
|||
gGL.getTexUnit(0)->bind(mHBTex[1]);
|
||||
mHBTex[1]->setAddressMode(LLTexUnit::TAM_CLAMP);
|
||||
|
||||
mWaterImagep = LLViewerTextureManager::getFetchedTexture(WATER_TEST);
|
||||
mWaterImagep->setNoDelete() ;
|
||||
|
||||
mWaterImagep = LLViewerTextureManager::getFetchedTexture(TRANSPARENT_WATER_TEXTURE);
|
||||
llassert(mWaterImagep);
|
||||
mWaterImagep->setNoDelete();
|
||||
mOpaqueWaterImagep = LLViewerTextureManager::getFetchedTexture(OPAQUE_WATER_TEXTURE);
|
||||
llassert(mOpaqueWaterImagep);
|
||||
mWaterNormp = LLViewerTextureManager::getFetchedTexture(DEFAULT_WATER_NORMAL);
|
||||
mWaterNormp->setNoDelete() ;
|
||||
mWaterNormp->setNoDelete();
|
||||
|
||||
restoreGL();
|
||||
}
|
||||
|
|
@ -161,6 +166,14 @@ void LLDrawPoolWater::render(S32 pass)
|
|||
|
||||
std::sort(mDrawFace.begin(), mDrawFace.end(), LLFace::CompareDistanceGreater());
|
||||
|
||||
// See if we are rendering water as opaque or not
|
||||
if (!gSavedSettings.getBOOL("RenderTransparentWater"))
|
||||
{
|
||||
// render water for low end hardware
|
||||
renderOpaqueLegacyWater();
|
||||
return;
|
||||
}
|
||||
|
||||
LLGLEnable blend(GL_BLEND);
|
||||
|
||||
if ((mVertexShaderLevel > 0) && !sSkipScreenCopy)
|
||||
|
|
@ -314,6 +327,87 @@ void LLDrawPoolWater::render(S32 pass)
|
|||
gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
|
||||
}
|
||||
|
||||
// for low end hardware
|
||||
void LLDrawPoolWater::renderOpaqueLegacyWater()
|
||||
{
|
||||
LLVOSky *voskyp = gSky.mVOSkyp;
|
||||
|
||||
stop_glerror();
|
||||
|
||||
// Depth sorting and write to depth buffer
|
||||
// since this is opaque, we should see nothing
|
||||
// behind the water. No blending because
|
||||
// of no transparency. And no face culling so
|
||||
// that the underside of the water is also opaque.
|
||||
LLGLDepthTest gls_depth(GL_TRUE, GL_TRUE);
|
||||
LLGLDisable no_cull(GL_CULL_FACE);
|
||||
LLGLDisable no_blend(GL_BLEND);
|
||||
|
||||
gPipeline.disableLights();
|
||||
|
||||
mOpaqueWaterImagep->addTextureStats(1024.f*1024.f);
|
||||
|
||||
// Activate the texture binding and bind one
|
||||
// texture since all images will have the same texture
|
||||
gGL.getTexUnit(0)->activate();
|
||||
gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE);
|
||||
gGL.getTexUnit(0)->bind(mOpaqueWaterImagep);
|
||||
|
||||
// Automatically generate texture coords for water texture
|
||||
glEnable(GL_TEXTURE_GEN_S); //texture unit 0
|
||||
glEnable(GL_TEXTURE_GEN_T); //texture unit 0
|
||||
glTexGenf(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
|
||||
glTexGenf(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
|
||||
|
||||
// Use the fact that we know all water faces are the same size
|
||||
// to save some computation
|
||||
|
||||
// Slowly move texture coordinates over time so the watter appears
|
||||
// to be moving.
|
||||
F32 movement_period_secs = 50.f;
|
||||
|
||||
F32 offset = fmod(gFrameTimeSeconds, movement_period_secs);
|
||||
|
||||
if (movement_period_secs != 0)
|
||||
{
|
||||
offset /= movement_period_secs;
|
||||
}
|
||||
else
|
||||
{
|
||||
offset = 0;
|
||||
}
|
||||
|
||||
F32 tp0[4] = { 16.f / 256.f, 0.0f, 0.0f, offset };
|
||||
F32 tp1[4] = { 0.0f, 16.f / 256.f, 0.0f, offset };
|
||||
|
||||
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0);
|
||||
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1);
|
||||
|
||||
glColor3f(1.f, 1.f, 1.f);
|
||||
|
||||
for (std::vector<LLFace*>::iterator iter = mDrawFace.begin();
|
||||
iter != mDrawFace.end(); iter++)
|
||||
{
|
||||
LLFace *face = *iter;
|
||||
if (voskyp->isReflFace(face))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
face->renderIndexed();
|
||||
}
|
||||
|
||||
stop_glerror();
|
||||
|
||||
// Reset the settings back to expected values
|
||||
glDisable(GL_TEXTURE_GEN_S); //texture unit 0
|
||||
glDisable(GL_TEXTURE_GEN_T); //texture unit 0
|
||||
|
||||
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
|
||||
gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
|
||||
}
|
||||
|
||||
|
||||
void LLDrawPoolWater::renderReflection(LLFace* face)
|
||||
{
|
||||
LLVOSky *voskyp = gSky.mVOSkyp;
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ class LLDrawPoolWater: public LLFacePool
|
|||
protected:
|
||||
LLPointer<LLViewerTexture> mHBTex[2];
|
||||
LLPointer<LLViewerTexture> mWaterImagep;
|
||||
LLPointer<LLViewerTexture> mOpaqueWaterImagep;
|
||||
LLPointer<LLViewerTexture> mWaterNormp;
|
||||
|
||||
public:
|
||||
|
|
@ -80,6 +81,9 @@ public:
|
|||
|
||||
void renderReflection(LLFace* face);
|
||||
void shade();
|
||||
|
||||
protected:
|
||||
void renderOpaqueLegacyWater();
|
||||
};
|
||||
|
||||
void cgErrorCallback();
|
||||
|
|
|
|||
|
|
@ -282,7 +282,8 @@ std::string LLFloaterPreference::sSkin = "";
|
|||
LLFloaterPreference::LLFloaterPreference(const LLSD& key)
|
||||
: LLFloater(key),
|
||||
mGotPersonalInfo(false),
|
||||
mOriginalIMViaEmail(false)
|
||||
mOriginalIMViaEmail(false),
|
||||
mDoubleClickActionDirty(false)
|
||||
{
|
||||
//Build Floater is now Called from LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreference>);
|
||||
|
||||
|
|
@ -320,6 +321,8 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
|
|||
mCommitCallbackRegistrar.add("Pref.getUIColor", boost::bind(&LLFloaterPreference::getUIColor, this ,_1, _2));
|
||||
mCommitCallbackRegistrar.add("Pref.MaturitySettings", boost::bind(&LLFloaterPreference::onChangeMaturity, this));
|
||||
mCommitCallbackRegistrar.add("Pref.BlockList", boost::bind(&LLFloaterPreference::onClickBlockList, this));
|
||||
mCommitCallbackRegistrar.add("Pref.CommitDoubleClickChekbox", boost::bind(&LLFloaterPreference::onDoubleClickCheckBox, this, _1));
|
||||
mCommitCallbackRegistrar.add("Pref.CommitRadioDoubleClick", boost::bind(&LLFloaterPreference::onDoubleClickRadio, this));
|
||||
|
||||
sSkin = gSavedSettings.getString("SkinCurrent");
|
||||
|
||||
|
|
@ -342,6 +345,8 @@ BOOL LLFloaterPreference::postBuild()
|
|||
if (!tabcontainer->selectTab(gSavedSettings.getS32("LastPrefTab")))
|
||||
tabcontainer->selectFirstTab();
|
||||
|
||||
updateDoubleClickControls();
|
||||
|
||||
getChild<LLUICtrl>("cache_location")->setEnabled(FALSE); // make it read-only but selectable (STORM-227)
|
||||
std::string cache_location = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "");
|
||||
setCacheLocation(cache_location);
|
||||
|
|
@ -475,6 +480,12 @@ void LLFloaterPreference::apply()
|
|||
gAgent.sendAgentUpdateUserInfo(new_im_via_email,mDirectoryVisibility);
|
||||
}
|
||||
}
|
||||
|
||||
if (mDoubleClickActionDirty)
|
||||
{
|
||||
updateDoubleClickSettings();
|
||||
mDoubleClickActionDirty = false;
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterPreference::cancel()
|
||||
|
|
@ -501,6 +512,12 @@ void LLFloaterPreference::cancel()
|
|||
|
||||
// reverts any changes to current skin
|
||||
gSavedSettings.setString("SkinCurrent", sSkin);
|
||||
|
||||
if (mDoubleClickActionDirty)
|
||||
{
|
||||
updateDoubleClickControls();
|
||||
mDoubleClickActionDirty = false;
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterPreference::onOpen(const LLSD& key)
|
||||
|
|
@ -1318,6 +1335,68 @@ void LLFloaterPreference::onClickBlockList()
|
|||
}
|
||||
}
|
||||
|
||||
void LLFloaterPreference::onDoubleClickCheckBox(LLUICtrl* ctrl)
|
||||
{
|
||||
if (!ctrl) return;
|
||||
mDoubleClickActionDirty = true;
|
||||
LLRadioGroup* radio_double_click_action = getChild<LLRadioGroup>("double_click_action");
|
||||
if (!radio_double_click_action) return;
|
||||
// select default value("teleport") in radio-group.
|
||||
radio_double_click_action->setSelectedIndex(0);
|
||||
// set radio-group enabled depending on state of checkbox
|
||||
radio_double_click_action->setEnabled(ctrl->getValue());
|
||||
}
|
||||
|
||||
void LLFloaterPreference::onDoubleClickRadio()
|
||||
{
|
||||
mDoubleClickActionDirty = true;
|
||||
}
|
||||
|
||||
void LLFloaterPreference::updateDoubleClickSettings()
|
||||
{
|
||||
LLCheckBoxCtrl* double_click_action_cb = getChild<LLCheckBoxCtrl>("double_click_chkbox");
|
||||
if (!double_click_action_cb) return;
|
||||
bool enable = double_click_action_cb->getValue().asBoolean();
|
||||
|
||||
LLRadioGroup* radio_double_click_action = getChild<LLRadioGroup>("double_click_action");
|
||||
if (!radio_double_click_action) return;
|
||||
|
||||
// enable double click radio-group depending on state of checkbox
|
||||
radio_double_click_action->setEnabled(enable);
|
||||
|
||||
if (!enable)
|
||||
{
|
||||
// set double click action settings values to false if checkbox was unchecked
|
||||
gSavedSettings.setBOOL("DoubleClickAutoPilot", false);
|
||||
gSavedSettings.setBOOL("DoubleClickTeleport", false);
|
||||
}
|
||||
else
|
||||
{
|
||||
std::string selected = radio_double_click_action->getValue().asString();
|
||||
bool teleport_selected = selected == "radio_teleport";
|
||||
// set double click action settings values depending on chosen radio-button
|
||||
gSavedSettings.setBOOL( "DoubleClickTeleport", teleport_selected );
|
||||
gSavedSettings.setBOOL( "DoubleClickAutoPilot", !teleport_selected );
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterPreference::updateDoubleClickControls()
|
||||
{
|
||||
// check is one of double-click actions settings enabled
|
||||
bool double_click_action_enabled = gSavedSettings.getBOOL("DoubleClickAutoPilot") || gSavedSettings.getBOOL("DoubleClickTeleport");
|
||||
LLCheckBoxCtrl* double_click_action_cb = getChild<LLCheckBoxCtrl>("double_click_chkbox");
|
||||
if (double_click_action_cb)
|
||||
{
|
||||
// check checkbox if one of double-click actions settings enabled, uncheck otherwise
|
||||
double_click_action_cb->setValue(double_click_action_enabled);
|
||||
}
|
||||
LLRadioGroup* double_click_action_radio = getChild<LLRadioGroup>("double_click_action");
|
||||
if (!double_click_action_radio) return;
|
||||
// set radio-group enabled if one of double-click actions settings enabled
|
||||
double_click_action_radio->setEnabled(double_click_action_enabled);
|
||||
// select button in radio-group depending on setting
|
||||
double_click_action_radio->setSelectedIndex(gSavedSettings.getBOOL("DoubleClickAutoPilot"));
|
||||
}
|
||||
|
||||
void LLFloaterPreference::applyUIColor(LLUICtrl* ctrl, const LLSD& param)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -95,6 +95,14 @@ protected:
|
|||
void setHardwareDefaults();
|
||||
// callback for when client turns on shaders
|
||||
void onVertexShaderEnable();
|
||||
// callback for changing double click action checkbox
|
||||
void onDoubleClickCheckBox(LLUICtrl* ctrl);
|
||||
// callback for selecting double click action radio-button
|
||||
void onDoubleClickRadio();
|
||||
// updates double-click action settings depending on controls from preferences
|
||||
void updateDoubleClickSettings();
|
||||
// updates double-click action controls depending on values from settings.xml
|
||||
void updateDoubleClickControls();
|
||||
|
||||
// This function squirrels away the current values of the controls so that
|
||||
// cancel() can restore them.
|
||||
|
|
@ -145,6 +153,9 @@ public:
|
|||
static void refreshSkin(void* data);
|
||||
private:
|
||||
static std::string sSkin;
|
||||
// set true if state of double-click action checkbox or radio-group was changed by user
|
||||
// (reset back to false on apply or cancel)
|
||||
bool mDoubleClickActionDirty;
|
||||
bool mGotPersonalInfo;
|
||||
bool mOriginalIMViaEmail;
|
||||
|
||||
|
|
|
|||
|
|
@ -87,7 +87,6 @@ LLHUDNameTag::LLHUDNameTag(const U8 type)
|
|||
mZCompare(TRUE),
|
||||
mVisibleOffScreen(FALSE),
|
||||
mOffscreen(FALSE),
|
||||
mColor(1.f, 1.f, 1.f, 1.f),
|
||||
// mScale(),
|
||||
mWidth(0.f),
|
||||
mHeight(0.f),
|
||||
|
|
@ -109,6 +108,8 @@ LLHUDNameTag::LLHUDNameTag(const U8 type)
|
|||
{
|
||||
LLPointer<LLHUDNameTag> ptr(this);
|
||||
sTextObjects.insert(ptr);
|
||||
|
||||
mColor = LLUIColorTable::instance().getColor("BackgroundChatColor");
|
||||
}
|
||||
|
||||
LLHUDNameTag::~LLHUDNameTag()
|
||||
|
|
@ -256,6 +257,7 @@ void LLHUDNameTag::renderText(BOOL for_select)
|
|||
|
||||
LLColor4 shadow_color(0.f, 0.f, 0.f, 1.f);
|
||||
F32 alpha_factor = 1.f;
|
||||
mColor = LLUIColorTable::instance().getColor("BackgroundChatColor");
|
||||
LLColor4 text_color = mColor;
|
||||
if (mDoFade)
|
||||
{
|
||||
|
|
@ -521,7 +523,6 @@ void LLHUDNameTag::renderText(BOOL for_select)
|
|||
x_offset += 1;
|
||||
}
|
||||
|
||||
text_color = segment_iter->mColor;
|
||||
text_color.mV[VALPHA] *= alpha_factor;
|
||||
|
||||
hud_render_text(segment_iter->getText(), render_position, *fontp, style, shadow, x_offset, y_offset, text_color, FALSE);
|
||||
|
|
|
|||
|
|
@ -537,7 +537,15 @@ bool LLIMModel::LLIMSession::isOtherParticipantAvaline()
|
|||
|
||||
void LLIMModel::LLIMSession::onAvatarNameCache(const LLUUID& avatar_id, const LLAvatarName& av_name)
|
||||
{
|
||||
mHistoryFileName = av_name.mUsername;
|
||||
if (av_name.mUsername.empty())
|
||||
{
|
||||
// display names is off, use mDisplayName which will be the legacy name
|
||||
mHistoryFileName = LLCacheName::buildUsername(av_name.mDisplayName);
|
||||
}
|
||||
else
|
||||
{
|
||||
mHistoryFileName = av_name.mUsername;
|
||||
}
|
||||
}
|
||||
|
||||
void LLIMModel::LLIMSession::buildHistoryFileName()
|
||||
|
|
|
|||
|
|
@ -329,15 +329,23 @@ void LLPanelMainInventory::setSortBy(const LLSD& userdata)
|
|||
if (sort_field == "name")
|
||||
{
|
||||
U32 order = getActivePanel()->getSortOrder();
|
||||
getActivePanel()->setSortOrder( order & ~LLInventoryFilter::SO_DATE );
|
||||
|
||||
order &= ~LLInventoryFilter::SO_DATE;
|
||||
|
||||
getActivePanel()->setSortOrder( order );
|
||||
|
||||
gSavedSettings.setU32("InventorySortOrder", order);
|
||||
|
||||
gSavedSettings.setBOOL("Inventory.SortByName", TRUE );
|
||||
gSavedSettings.setBOOL("Inventory.SortByDate", FALSE );
|
||||
}
|
||||
else if (sort_field == "date")
|
||||
{
|
||||
U32 order = getActivePanel()->getSortOrder();
|
||||
getActivePanel()->setSortOrder( order | LLInventoryFilter::SO_DATE );
|
||||
order |= LLInventoryFilter::SO_DATE;
|
||||
|
||||
getActivePanel()->setSortOrder( order );
|
||||
|
||||
gSavedSettings.setU32("InventorySortOrder", order);
|
||||
|
||||
gSavedSettings.setBOOL("Inventory.SortByName", FALSE );
|
||||
gSavedSettings.setBOOL("Inventory.SortByDate", TRUE );
|
||||
|
|
@ -375,6 +383,8 @@ void LLPanelMainInventory::setSortBy(const LLSD& userdata)
|
|||
gSavedSettings.setBOOL("Inventory.SystemFoldersToTop", TRUE );
|
||||
}
|
||||
getActivePanel()->setSortOrder( order );
|
||||
|
||||
gSavedSettings.setU32("InventorySortOrder", order);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -915,6 +925,7 @@ void LLPanelMainInventory::initListCommandsHandlers()
|
|||
));
|
||||
|
||||
mCommitCallbackRegistrar.add("Inventory.GearDefault.Custom.Action", boost::bind(&LLPanelMainInventory::onCustomAction, this, _2));
|
||||
mEnableCallbackRegistrar.add("Inventory.GearDefault.Check", boost::bind(&LLPanelMainInventory::isActionChecked, this, _2));
|
||||
mEnableCallbackRegistrar.add("Inventory.GearDefault.Enable", boost::bind(&LLPanelMainInventory::isActionEnabled, this, _2));
|
||||
mMenuGearDefault = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_inventory_gear_default.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
|
||||
mGearMenuButton->setMenu(mMenuGearDefault);
|
||||
|
|
@ -1000,6 +1011,11 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata)
|
|||
const LLSD arg = "date";
|
||||
setSortBy(arg);
|
||||
}
|
||||
if (command_name == "sort_system_folders_to_top")
|
||||
{
|
||||
const LLSD arg = "systemfolderstotop";
|
||||
setSortBy(arg);
|
||||
}
|
||||
if (command_name == "show_filters")
|
||||
{
|
||||
toggleFindOptions();
|
||||
|
|
@ -1173,6 +1189,31 @@ BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL LLPanelMainInventory::isActionChecked(const LLSD& userdata)
|
||||
{
|
||||
const std::string command_name = userdata.asString();
|
||||
|
||||
if (command_name == "sort_by_name")
|
||||
{
|
||||
U32 order = getActivePanel()->getSortOrder();
|
||||
return ~order & LLInventoryFilter::SO_DATE;
|
||||
}
|
||||
|
||||
if (command_name == "sort_by_recent")
|
||||
{
|
||||
U32 order = getActivePanel()->getSortOrder();
|
||||
return order & LLInventoryFilter::SO_DATE;
|
||||
}
|
||||
|
||||
if (command_name == "sort_system_folders_to_top")
|
||||
{
|
||||
U32 order = getActivePanel()->getSortOrder();
|
||||
return order & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool LLPanelMainInventory::handleDragAndDropToTrash(BOOL drop, EDragAndDropType cargo_type, EAcceptance* accept)
|
||||
{
|
||||
*accept = ACCEPT_NO;
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@ protected:
|
|||
void onTrashButtonClick();
|
||||
void onClipboardAction(const LLSD& userdata);
|
||||
BOOL isActionEnabled(const LLSD& command_name);
|
||||
BOOL isActionChecked(const LLSD& userdata);
|
||||
void onCustomAction(const LLSD& command_name);
|
||||
bool handleDragAndDropToTrash(BOOL drop, EDragAndDropType cargo_type, EAcceptance* accept);
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -117,10 +117,23 @@ static bool handleSetShaderChanged(const LLSD& newvalue)
|
|||
gBumpImageList.destroyGL();
|
||||
gBumpImageList.restoreGL();
|
||||
|
||||
// Changing shader also changes the terrain detail to high, reflect that change here
|
||||
if (newvalue.asBoolean())
|
||||
{
|
||||
// shaders enabled, set terrain detail to high
|
||||
gSavedSettings.setS32("RenderTerrainDetail", 1);
|
||||
}
|
||||
// else, leave terrain detail as is
|
||||
LLViewerShaderMgr::instance()->setShaders();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool handleRenderTransparentWaterChanged(const LLSD& newvalue)
|
||||
{
|
||||
LLWorld::getInstance()->updateWaterObjects();
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool handleReleaseGLBufferChanged(const LLSD& newvalue)
|
||||
{
|
||||
if (gPipeline.isInit())
|
||||
|
|
@ -637,6 +650,7 @@ void settings_setup_listeners()
|
|||
gSavedSettings.getControl("ShowMiniLocationPanel")->getSignal()->connect(boost::bind(&toggle_show_mini_location_panel, _2));
|
||||
gSavedSettings.getControl("ShowObjectRenderingCost")->getSignal()->connect(boost::bind(&toggle_show_object_render_cost, _2));
|
||||
gSavedSettings.getControl("ForceShowGrid")->getSignal()->connect(boost::bind(&handleForceShowGrid, _2));
|
||||
gSavedSettings.getControl("RenderTransparentWater")->getSignal()->connect(boost::bind(&handleRenderTransparentWaterChanged, _2));
|
||||
}
|
||||
|
||||
#if TEST_CACHED_CONTROL
|
||||
|
|
|
|||
|
|
@ -6500,16 +6500,6 @@ class LLToggleControl : public view_listener_t
|
|||
std::string control_name = userdata.asString();
|
||||
BOOL checked = gSavedSettings.getBOOL( control_name );
|
||||
gSavedSettings.setBOOL( control_name, !checked );
|
||||
|
||||
// Doubleclick actions - there can be only one
|
||||
if ((control_name == "DoubleClickAutoPilot") && !checked)
|
||||
{
|
||||
gSavedSettings.setBOOL( "DoubleClickTeleport", FALSE );
|
||||
}
|
||||
else if ((control_name == "DoubleClickTeleport") && !checked)
|
||||
{
|
||||
gSavedSettings.setBOOL( "DoubleClickAutoPilot", FALSE );
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -2266,6 +2266,20 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
// If "Pressing letter keys starts local chat" option is selected, we are not in mouselook,
|
||||
// no view has keyboard focus, this is a printable character key (and no modifier key is
|
||||
// pressed except shift), then give focus to nearby chat (STORM-560)
|
||||
if ( gSavedSettings.getS32("LetterKeysFocusChatBar") && !gAgentCamera.cameraMouselook() &&
|
||||
!keyboard_focus && key < 0x80 && (mask == MASK_NONE || mask == MASK_SHIFT) )
|
||||
{
|
||||
LLLineEditor* chat_editor = LLBottomTray::instanceExists() ? LLBottomTray::getInstance()->getNearbyChatBar()->getChatBox() : NULL;
|
||||
if (chat_editor)
|
||||
{
|
||||
// passing NULL here, character will be added later when it is handled by character handler.
|
||||
LLBottomTray::getInstance()->getNearbyChatBar()->startChat(NULL);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
// give menus a chance to handle unmodified accelerator keys
|
||||
if ((gMenuBarView && gMenuBarView->handleAcceleratorKey(key, mask))
|
||||
|
|
|
|||
|
|
@ -60,8 +60,10 @@ const U32 WIDTH = (N_RES * WAVE_STEP); //128.f //64 // width of wave tile, in
|
|||
const F32 WAVE_STEP_INV = (1. / WAVE_STEP);
|
||||
|
||||
|
||||
LLVOWater::LLVOWater(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp)
|
||||
: LLStaticViewerObject(id, pcode, regionp),
|
||||
LLVOWater::LLVOWater(const LLUUID &id,
|
||||
const LLPCode pcode,
|
||||
LLViewerRegion *regionp) :
|
||||
LLStaticViewerObject(id, pcode, regionp),
|
||||
mRenderType(LLPipeline::RENDER_TYPE_WATER)
|
||||
{
|
||||
// Terrain must draw during selection passes so it can block objects behind it.
|
||||
|
|
@ -153,11 +155,17 @@ BOOL LLVOWater::updateGeometry(LLDrawable *drawable)
|
|||
LLStrider<U16> indicesp;
|
||||
U16 index_offset;
|
||||
|
||||
S32 size = 16;
|
||||
|
||||
S32 num_quads = size*size;
|
||||
face->setSize(4*num_quads, 6*num_quads);
|
||||
// A quad is 4 vertices and 6 indices (making 2 triangles)
|
||||
static const unsigned int vertices_per_quad = 4;
|
||||
static const unsigned int indices_per_quad = 6;
|
||||
|
||||
const S32 size = gSavedSettings.getBOOL("RenderTransparentWater") ? 16 : 1;
|
||||
|
||||
const S32 num_quads = size * size;
|
||||
face->setSize(vertices_per_quad * num_quads,
|
||||
indices_per_quad * num_quads);
|
||||
|
||||
if (face->mVertexBuffer.isNull())
|
||||
{
|
||||
face->mVertexBuffer = new LLVertexBuffer(LLDrawPoolWater::VERTEX_DATA_MASK, GL_DYNAMIC_DRAW_ARB);
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@
|
|||
layout="topleft"
|
||||
left="10"
|
||||
height="70"
|
||||
top="54"
|
||||
top="59"
|
||||
name="focus_radio_group">
|
||||
<radio_item
|
||||
top_pad="6"
|
||||
|
|
@ -197,7 +197,7 @@
|
|||
<radio_group
|
||||
left="10"
|
||||
height="70"
|
||||
top="54"
|
||||
top="59"
|
||||
layout="topleft"
|
||||
name="move_radio_group">
|
||||
<radio_item
|
||||
|
|
@ -931,7 +931,7 @@
|
|||
height="23"
|
||||
image_overlay="Edit_Wrench"
|
||||
layout="topleft"
|
||||
left_pad="3"
|
||||
left_pad="13"
|
||||
name="button set group"
|
||||
tab_stop="false"
|
||||
tool_tip="Choose a group to share this object's permissions"
|
||||
|
|
@ -944,7 +944,7 @@
|
|||
name="checkbox share with group"
|
||||
tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions."
|
||||
top_pad="10"
|
||||
left="106"
|
||||
left="100"
|
||||
width="87" />
|
||||
<button
|
||||
follows="top|left"
|
||||
|
|
@ -953,7 +953,7 @@
|
|||
label_selected="Deed"
|
||||
layout="topleft"
|
||||
name="button deed"
|
||||
left_pad="3"
|
||||
left_pad="19"
|
||||
tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer."
|
||||
width="80" />
|
||||
<text
|
||||
|
|
@ -974,7 +974,7 @@
|
|||
layout="topleft"
|
||||
name="clickaction"
|
||||
width="148"
|
||||
left_pad="0">
|
||||
left_pad="10">
|
||||
<combo_box.item
|
||||
label="Touch (default)"
|
||||
name="Touch/grab(default)"
|
||||
|
|
@ -1009,7 +1009,7 @@
|
|||
width="100" />
|
||||
<!-- NEW SALE TYPE COMBO BOX -->
|
||||
<combo_box
|
||||
left_pad="0"
|
||||
left_pad="10"
|
||||
layout="topleft"
|
||||
follows="left|top"
|
||||
allow_text_entry="false"
|
||||
|
|
@ -1041,7 +1041,7 @@ even though the user gets a free copy.
|
|||
decimal_digits="0"
|
||||
increment="1"
|
||||
top_pad="8"
|
||||
left="108"
|
||||
left="118"
|
||||
control_name="Edit Cost"
|
||||
name="Edit Cost"
|
||||
label="Price: L$"
|
||||
|
|
|
|||
|
|
@ -16,22 +16,39 @@
|
|||
</menu_item_call>
|
||||
<menu_item_separator
|
||||
layout="topleft" />
|
||||
<menu_item_call
|
||||
<menu_item_check
|
||||
label="Sort by Name"
|
||||
layout="topleft"
|
||||
name="sort_by_name">
|
||||
<on_click
|
||||
function="Inventory.GearDefault.Custom.Action"
|
||||
parameter="sort_by_name" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
<on_check
|
||||
function="Inventory.GearDefault.Check"
|
||||
parameter="sort_by_name" />
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Sort by Most Recent"
|
||||
layout="topleft"
|
||||
name="sort_by_recent">
|
||||
<on_click
|
||||
function="Inventory.GearDefault.Custom.Action"
|
||||
parameter="sort_by_recent" />
|
||||
</menu_item_call>
|
||||
<on_check
|
||||
function="Inventory.GearDefault.Check"
|
||||
parameter="sort_by_recent" />
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Sort System Folders to Top"
|
||||
layout="topleft"
|
||||
name="sort_system_folders_to_top">
|
||||
<on_click
|
||||
function="Inventory.GearDefault.Custom.Action"
|
||||
parameter="sort_system_folders_to_top" />
|
||||
<on_check
|
||||
function="Inventory.GearDefault.Check"
|
||||
parameter="sort_system_folders_to_top" />
|
||||
</menu_item_check>
|
||||
<menu_item_separator
|
||||
layout="topleft" />
|
||||
<menu_item_call
|
||||
|
|
|
|||
|
|
@ -2674,26 +2674,6 @@
|
|||
<menu_item_call.on_click
|
||||
function="Advanced.PrintTextureMemoryStats" />
|
||||
</menu_item_call>
|
||||
<menu_item_check
|
||||
label="Double-ClickAuto-Pilot"
|
||||
name="Double-ClickAuto-Pilot">
|
||||
<menu_item_check.on_check
|
||||
function="CheckControl"
|
||||
parameter="DoubleClickAutoPilot" />
|
||||
<menu_item_check.on_click
|
||||
function="ToggleControl"
|
||||
parameter="DoubleClickAutoPilot" />
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Double-Click Teleport"
|
||||
name="DoubleClick Teleport">
|
||||
<menu_item_check.on_check
|
||||
function="CheckControl"
|
||||
parameter="DoubleClickTeleport" />
|
||||
<menu_item_check.on_click
|
||||
function="ToggleControl"
|
||||
parameter="DoubleClickTeleport" />
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Region Debug Console"
|
||||
name="Region Debug Console"
|
||||
|
|
|
|||
|
|
@ -331,6 +331,7 @@
|
|||
Pressing letter keys:
|
||||
</text>
|
||||
<radio_group
|
||||
control_name="LetterKeysFocusChatBar"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="35"
|
||||
|
|
@ -338,12 +339,12 @@
|
|||
name="inworld_typing_preference">
|
||||
<radio_item
|
||||
label="Starts local chat"
|
||||
name="radio_button1"
|
||||
name="radio_start_chat"
|
||||
top_delta="20"
|
||||
layout="topleft"
|
||||
height="16"
|
||||
left="0"
|
||||
value="0"
|
||||
value="1"
|
||||
width="150" />
|
||||
<radio_item
|
||||
label="Affects movement (i.e. WASD)"
|
||||
|
|
@ -351,8 +352,8 @@
|
|||
layout="topleft"
|
||||
top_delta="0"
|
||||
height="16"
|
||||
name="radio_button2"
|
||||
value="1"
|
||||
name="radio_move"
|
||||
value="0"
|
||||
width="75" />
|
||||
</radio_group>
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -177,7 +177,10 @@
|
|||
left_delta="0"
|
||||
name="double_click_chkbox"
|
||||
width="237"
|
||||
top_pad="0"/>
|
||||
top_pad="0">
|
||||
<check_box.commit_callback
|
||||
function="Pref.CommitDoubleClickChekbox"/>
|
||||
</check_box>
|
||||
<radio_group
|
||||
height="20"
|
||||
layout="topleft"
|
||||
|
|
@ -191,7 +194,6 @@
|
|||
left="0"
|
||||
name="radio_teleport"
|
||||
top_delta="20"
|
||||
value="0"
|
||||
width="100" />
|
||||
<radio_item
|
||||
height="16"
|
||||
|
|
@ -200,8 +202,9 @@
|
|||
layout="topleft"
|
||||
name="radio_autopilot"
|
||||
top_delta="0"
|
||||
value="1"
|
||||
width="75" />
|
||||
<radio_group.commit_callback
|
||||
function="Pref.CommitRadioDoubleClick"/>
|
||||
</radio_group>
|
||||
<button
|
||||
height="23"
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@
|
|||
name="UI Volume"
|
||||
show_text="false"
|
||||
slider_label.halign="right"
|
||||
top_pad="5"
|
||||
top_pad="4"
|
||||
volume="true"
|
||||
width="300">
|
||||
<slider.commit_callback
|
||||
|
|
@ -104,7 +104,7 @@
|
|||
name="Wind Volume"
|
||||
show_text="false"
|
||||
slider_label.halign="right"
|
||||
top_pad="5"
|
||||
top_pad="4"
|
||||
volume="true"
|
||||
width="300">
|
||||
<slider.commit_callback
|
||||
|
|
@ -138,7 +138,7 @@
|
|||
left="0"
|
||||
name="SFX Volume"
|
||||
show_text="false"
|
||||
top_pad="7"
|
||||
top_pad="4"
|
||||
volume="true"
|
||||
width="300">
|
||||
<slider.commit_callback
|
||||
|
|
@ -172,7 +172,7 @@
|
|||
name="Music Volume"
|
||||
slider_label.halign="right"
|
||||
show_text="false"
|
||||
top_pad="5"
|
||||
top_pad="4"
|
||||
volume="true"
|
||||
width="300">
|
||||
<slider.commit_callback
|
||||
|
|
@ -215,7 +215,7 @@
|
|||
name="Media Volume"
|
||||
show_text="false"
|
||||
slider_label.halign="right"
|
||||
top_pad="5"
|
||||
top_pad="4"
|
||||
volume="true"
|
||||
width="300">
|
||||
<slider.commit_callback
|
||||
|
|
@ -257,7 +257,7 @@
|
|||
label_width="120"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
top_pad="5"
|
||||
top_pad="4"
|
||||
name="Voice Volume"
|
||||
show_text="false"
|
||||
slider_label.halign="right"
|
||||
|
|
@ -301,9 +301,9 @@
|
|||
height="15"
|
||||
tool_tip="Check this to let media auto-play if it wants"
|
||||
label="Allow Media to auto-play"
|
||||
top_pad="5"
|
||||
top_pad="1"
|
||||
left="25"/>
|
||||
<check_box
|
||||
<check_box
|
||||
name="media_show_on_others_btn"
|
||||
control_name="MediaShowOnOthers"
|
||||
value="true"
|
||||
|
|
@ -313,16 +313,6 @@
|
|||
label="Play media attached to other avatars"
|
||||
left="25"
|
||||
width="230"/>
|
||||
<check_box
|
||||
control_name="LipSyncEnabled"
|
||||
follows="left|top"
|
||||
height="20"
|
||||
label="Move avatar lips when speaking"
|
||||
layout="topleft"
|
||||
left_pad="0"
|
||||
name="enable_lip_sync"
|
||||
width="237"
|
||||
top_delta="-4" />
|
||||
|
||||
<text
|
||||
type="string"
|
||||
|
|
@ -333,7 +323,7 @@
|
|||
left="25"
|
||||
name="voice_chat_settings"
|
||||
width="180"
|
||||
top_pad="10">
|
||||
top_pad="7">
|
||||
Voice Chat Settings
|
||||
</text>
|
||||
<text
|
||||
|
|
@ -341,10 +331,10 @@
|
|||
length="1"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
left="80"
|
||||
left="46"
|
||||
top_delta="16"
|
||||
name="Listen from"
|
||||
width="102">
|
||||
width="112">
|
||||
Listen from:
|
||||
</text>
|
||||
<icon
|
||||
|
|
@ -363,7 +353,7 @@
|
|||
height="18"
|
||||
image_name="Move_Walk_Off"
|
||||
layout="topleft"
|
||||
left_pad="130"
|
||||
left_pad="170"
|
||||
name="avatar_icon"
|
||||
mouse_opaque="false"
|
||||
visible="true"
|
||||
|
|
@ -375,7 +365,7 @@
|
|||
draw_border="false"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
left_delta="-128"
|
||||
left_delta="-168"
|
||||
width="221"
|
||||
height="20"
|
||||
name="ear_location">
|
||||
|
|
@ -391,11 +381,21 @@
|
|||
follows="left|top"
|
||||
label="Avatar position"
|
||||
layout="topleft"
|
||||
left_pad="-54"
|
||||
left_pad="-16"
|
||||
name="1"
|
||||
top_delta ="0"
|
||||
width="200" />
|
||||
</radio_group>
|
||||
<check_box
|
||||
control_name="LipSyncEnabled"
|
||||
follows="left|top"
|
||||
height="15"
|
||||
label="Move avatar lips when speaking"
|
||||
layout="topleft"
|
||||
left="44"
|
||||
name="enable_lip_sync"
|
||||
top_pad="5"
|
||||
width="237"/>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
enabled_control="EnableVoiceChat"
|
||||
|
|
@ -403,10 +403,11 @@
|
|||
height="15"
|
||||
label="Toggle speak on/off when I press:"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
left="44"
|
||||
name="push_to_talk_toggle_check"
|
||||
width="237"
|
||||
tool_tip="When in toggle mode, press and release the trigger key ONCE to switch your microphone on or off. When not in toggle mode, the microphone broadcasts your voice only while the trigger is being held down."/>
|
||||
tool_tip="When in toggle mode, press and release the trigger key ONCE to switch your microphone on or off. When not in toggle mode, the microphone broadcasts your voice only while the trigger is being held down."
|
||||
top_pad="3"/>
|
||||
<line_editor
|
||||
follows="top|left"
|
||||
control_name="PushToTalkButton"
|
||||
|
|
@ -454,7 +455,7 @@
|
|||
label="Input/Output devices"
|
||||
layout="topleft"
|
||||
left="20"
|
||||
top_pad="8"
|
||||
top_pad="6"
|
||||
name="device_settings_btn"
|
||||
width="190">
|
||||
</button>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<menu_item_call label="Voir le profil" name="view_profile"/>
|
||||
<menu_item_call label="Devenir amis" name="add_friend"/>
|
||||
<menu_item_call label="IM" name="im"/>
|
||||
<menu_item_call label="Appeler" name="call"/>
|
||||
<menu_item_call label="Appel" name="call"/>
|
||||
<menu_item_call label="Téléporter" name="teleport"/>
|
||||
<menu_item_call label="Inviter dans le groupe" name="invite_to_group"/>
|
||||
<menu_item_call label="Ignorer" name="block"/>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<panel label="Choses" name="main inventory panel">
|
||||
<panel.string name="ItemcountFetching">
|
||||
Récupération de [ITEM_COUNT] articles... [FILTER]
|
||||
Récupération : [ITEM_COUNT] articles... [FILTER]
|
||||
</panel.string>
|
||||
<panel.string name="ItemcountCompleted">
|
||||
[ITEM_COUNT] articles [FILTER]
|
||||
|
|
|
|||
|
|
@ -1089,7 +1089,7 @@
|
|||
<string name="Textures" value=" Textures,"/>
|
||||
<string name="Snapshots" value=" Photos,"/>
|
||||
<string name="No Filters" value="Non "/>
|
||||
<string name="Since Logoff" value=" - Depuis la déconnexion"/>
|
||||
<string name="Since Logoff" value=" depuis la déconnexion"/>
|
||||
<string name="InvFolder My Inventory">
|
||||
Mon inventaire
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -283,7 +283,7 @@
|
|||
<combo_box.item label="Plastica" name="Plastic"/>
|
||||
<combo_box.item label="Gomma" name="Rubber"/>
|
||||
</combo_box>
|
||||
<text name="text cut">
|
||||
<text name="text cut" left_delta="-10" width="170">
|
||||
Riduci una sezione (inizio/fine)
|
||||
</text>
|
||||
<spinner label="I" name="cut begin"/>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="toolbox floater" title="" short_title="BOUWEN" height="587">
|
||||
<floater name="toolbox floater" title="" short_title="BOUWEN" height="592">
|
||||
<button label="" label_selected="" name="button focus" tool_tip="Focus"/>
|
||||
<button label="" label_selected="" name="button move" tool_tip="Verplaats"/>
|
||||
<button label="" label_selected="" name="button edit" tool_tip="Bewerk"/>
|
||||
|
|
@ -81,13 +81,13 @@
|
|||
<text name="Strength:">
|
||||
Sterkte
|
||||
</text>
|
||||
<text name="obj_count" top_pad="15">
|
||||
<text name="obj_count" top_pad="20">
|
||||
Geselecteerde objecten: [COUNT]
|
||||
</text>
|
||||
<text name="prim_count">
|
||||
primitieven: [COUNT]
|
||||
</text>
|
||||
<tab_container name="Object Info Tabs" tab_max_width="62" tab_min_width="30" top="180">
|
||||
<tab_container name="Object Info Tabs" tab_max_width="62" tab_min_width="30" top="185">
|
||||
<panel label="Algemeen" name="General">
|
||||
<text name="Name:">
|
||||
Naam:
|
||||
|
|
@ -115,19 +115,19 @@
|
|||
<text name="Group Name Proxy">
|
||||
De Lindens
|
||||
</text>
|
||||
<button label="Instellen..." label_selected="Instellen..." name="button set group" left_pad="13"/>
|
||||
<button label="Instellen..." label_selected="Instellen..." name="button set group"/>
|
||||
<text name="Permissions:">
|
||||
Permissies:
|
||||
</text>
|
||||
|
||||
<check_box label="Deel met groep" name="checkbox share with group" tool_tip="Alle leden van de ingestelde groep toestaan om te delen en uw permissies voor dit object te gebruiken. U moet 'Overdragen' om rolbeperkingen in te schakelen." left="100"/>
|
||||
<check_box label="Deel met groep" name="checkbox share with group" tool_tip="Alle leden van de ingestelde groep toestaan om te delen en uw permissies voor dit object te gebruiken. U moet 'Overdragen' om rolbeperkingen in te schakelen."/>
|
||||
<string name="text deed continued">
|
||||
Overdragen...
|
||||
</string>
|
||||
<string name="text deed">
|
||||
Overdragen
|
||||
</string>
|
||||
<button label="Overdragen..." label_selected="Overdragen..." name="button deed" tool_tip="Groepgedeelde objecten kunnen door een groepofficier worden overgedragen" left_pad="19"/>
|
||||
<button label="Overdragen..." label_selected="Overdragen..." name="button deed" tool_tip="Groepgedeelde objecten kunnen door een groepofficier worden overgedragen"/>
|
||||
<check_box label="Iedereen mag verplaatsen" name="checkbox allow everyone move"/>
|
||||
<check_box label="Iedereen mag kopiëren" name="checkbox allow everyone copy"/>
|
||||
<check_box label="Toon in zoeken" name="search_check" tool_tip="Laat mensen dit object zien in zoekresultaten"/>
|
||||
|
|
|
|||
|
|
@ -307,7 +307,7 @@
|
|||
<combo_box.item label="Kwadrat" name="Square"/>
|
||||
<combo_box.item label="Trójkąt" name="Triangle"/>
|
||||
</combo_box>
|
||||
<text name="text twist">
|
||||
<text name="text twist" left_delta="-5" width="160">
|
||||
Skręcenie (początek/koniec)
|
||||
</text>
|
||||
<spinner label="P" name="Twist Begin"/>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="toolbox floater" short_title="BUILD TOOLS" title="" width="288">
|
||||
<floater name="toolbox floater" short_title="BUILD TOOLS" title="">
|
||||
<floater.string name="status_rotate">
|
||||
Arrastar as faixas coloridas para girar o objeto
|
||||
</floater.string>
|
||||
|
|
|
|||
Loading…
Reference in New Issue