Merge branch 'master' of https://vcs.firestormviewer.org/phoenix-firestorm
commit
10588d606e
|
|
@ -1158,9 +1158,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>5818ed2d9b29bad00878f3e26b09b7f9</string>
|
||||
<string>6fdcfcc9aa1d01164c0f7ca5590859bb</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/fontconfig-2.11.0-linux64-180841833.tar.bz2</string>
|
||||
<string>http://3p.firestormviewer.org/fontconfig-2.12.6-linux64-223020909.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1200,9 +1200,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>0dab99c682433145aa8f5e26d8940afd</string>
|
||||
<string>41db760508e6b48ae3a291ad2d1aef3d</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/freetype-2.4.4.180841832-linux64-180841832.tar.bz2</string>
|
||||
<string>http://3p.firestormviewer.org/freetype-2.8.1.223020901-linux64-223020901.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
|
|||
|
|
@ -238,6 +238,7 @@ Ansariel Hiller
|
|||
SL-15226
|
||||
SL-15227
|
||||
SL-15398
|
||||
SL-18432
|
||||
Aralara Rajal
|
||||
Arare Chantilly
|
||||
CHUIBUG-191
|
||||
|
|
|
|||
|
|
@ -253,7 +253,7 @@ elseif(LINUX)
|
|||
#libopenjpeg.so
|
||||
libuuid.so.16
|
||||
libuuid.so.16.0.22
|
||||
libfontconfig.so.1.8.0
|
||||
libfontconfig.so.1.10.1
|
||||
libfontconfig.so.1
|
||||
libaprutil-1.so.0
|
||||
libapr-1.so.0
|
||||
|
|
|
|||
|
|
@ -66,6 +66,15 @@ public:
|
|||
LLSD asLLSD() const;
|
||||
void fromLLSD(const LLSD& material_data);
|
||||
|
||||
bool isEmpty() const
|
||||
{
|
||||
if( mNormalID.notNull() || mSpecularID.notNull() ) //|| mDiffuseAlphaMode != DIFFUSE_ALPHA_MODE_BLEND)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
const LLUUID& getNormalID() const;
|
||||
void setNormalID(const LLUUID& normal_id);
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
6.6.6
|
||||
6.6.8
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -55,6 +55,10 @@ exportMutliArchDRIPath() {
|
|||
## driver bug, try enabling this option and report whether it helps:
|
||||
#export LL_ATI_MOUSE_CURSOR_BUG=x
|
||||
|
||||
## Help fontconfig find its default configuration file, otherwise the viewer will stall
|
||||
## with Fontconfig error: Cannot load default config file
|
||||
export FONTCONFIG_PATH=/etc/fonts
|
||||
|
||||
if [ "`uname -m`" = "x86_64" ]; then
|
||||
echo '64-bit Linux detected.'
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -803,7 +803,7 @@ void LLAvatarTracker::processNotify(LLMessageSystem* msg, bool online)
|
|||
// we were tracking someone who went offline
|
||||
deleteTrackingData();
|
||||
}
|
||||
}
|
||||
// } <FS:Beq/> [FIRE-32324] least invasive change move this brace after the if. LL fix should follow sometime soon
|
||||
//[FIX FIRE-3522 : SJ] Notify Online/Offline to Nearby Chat even if chat_notify isnt true
|
||||
|
||||
// <FS:PP> Attempt to speed up things a little
|
||||
|
|
@ -815,6 +815,7 @@ void LLAvatarTracker::processNotify(LLMessageSystem* msg, bool online)
|
|||
// Look up the name of this agent for the notification
|
||||
LLAvatarNameCache::get(agent_id,boost::bind(&on_avatar_name_cache_notify,_1, _2, online, payload));
|
||||
}
|
||||
} // <FS:Beq/> [FIRE-32324] least invasive change move this brace after the if
|
||||
|
||||
mModifyMask |= LLFriendObserver::ONLINE;
|
||||
instance().notifyObservers();
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@
|
|||
#include "fsperfstats.h" // <FS:Beq> performance stats support
|
||||
|
||||
BOOL LLDrawPoolAlpha::sShowDebugAlpha = FALSE;
|
||||
BOOL LLDrawPoolAlpha::sShowDebugAlphaRigged = FALSE;
|
||||
|
||||
#define current_shader (LLGLSLShader::sCurBoundShaderPtr)
|
||||
|
||||
|
|
@ -300,15 +301,17 @@ void LLDrawPoolAlpha::renderDebugAlpha()
|
|||
|
||||
gGL.diffuseColor4f(0, 1, 0, 1);
|
||||
pushBatches(LLRenderPass::PASS_INVISIBLE, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE);
|
||||
|
||||
// <FS:Beq> FIRE-32132 et al. Allow rigged mesh transparency highlights to be toggled
|
||||
if (sShowDebugAlphaRigged)
|
||||
{
|
||||
// </FS:Beq>
|
||||
gHighlightProgram.mRiggedVariant->bind();
|
||||
gGL.diffuseColor4f(1, 0, 0, 1);
|
||||
|
||||
gGL.diffuseColor4f(0, 1, 0, 1);// <FS:Beq/> FIRE-32132 et al. (can plain PASS_ALPHA_MASK_RIGGED exist?) paint it green if so.
|
||||
pushRiggedBatches(LLRenderPass::PASS_ALPHA_MASK_RIGGED, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE);
|
||||
pushRiggedBatches(LLRenderPass::PASS_ALPHA_INVISIBLE_RIGGED, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE);
|
||||
|
||||
// Material alpha mask
|
||||
gGL.diffuseColor4f(0, 0, 1, 1);
|
||||
gGL.diffuseColor4f(0, 1, 1, 1);// <FS:Beq/> FIRE-32132 et al. Allow rigged mesh transparency highlights to be toggled
|
||||
pushRiggedBatches(LLRenderPass::PASS_MATERIAL_ALPHA_MASK_RIGGED, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE);
|
||||
pushRiggedBatches(LLRenderPass::PASS_NORMMAP_MASK_RIGGED, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE);
|
||||
pushRiggedBatches(LLRenderPass::PASS_SPECMAP_MASK_RIGGED, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE);
|
||||
|
|
@ -317,6 +320,9 @@ void LLDrawPoolAlpha::renderDebugAlpha()
|
|||
|
||||
gGL.diffuseColor4f(0, 1, 0, 1);
|
||||
pushRiggedBatches(LLRenderPass::PASS_INVISIBLE_RIGGED, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE);
|
||||
// <FS:Beq> FIRE-32132 et al. Allow rigged mesh transparency highlights to be toggled
|
||||
}
|
||||
// </FS:Beq>
|
||||
LLGLSLShader::sCurBoundShaderPtr->unbind();
|
||||
}
|
||||
}
|
||||
|
|
@ -344,16 +350,6 @@ void LLDrawPoolAlpha::renderAlphaHighlight(U32 mask)
|
|||
for (LLSpatialGroup::drawmap_elem_t::iterator k = draw_info.begin(); k != draw_info.end(); ++k)
|
||||
{
|
||||
LLDrawInfo& params = **k;
|
||||
// <FS:Beq> Capture render times
|
||||
if(params.mFace)
|
||||
{
|
||||
LLViewerObject* vobj = (LLViewerObject *)params.mFace->getViewerObject();
|
||||
if(vobj->isAttachment())
|
||||
{
|
||||
trackAttachments( vobj, params.mFace->isState(LLFace::RIGGED), &ratPtr );
|
||||
}
|
||||
}
|
||||
// </FS:Beq>
|
||||
|
||||
if (params.mParticle)
|
||||
{
|
||||
|
|
@ -361,7 +357,30 @@ void LLDrawPoolAlpha::renderAlphaHighlight(U32 mask)
|
|||
}
|
||||
|
||||
bool rigged = (params.mAvatar != nullptr);
|
||||
// <FS:Beq> Capture render times
|
||||
if(params.mFace)
|
||||
{
|
||||
LLViewerObject* vobj = (LLViewerObject *)params.mFace->getViewerObject();
|
||||
if(vobj->isAttachment())
|
||||
{
|
||||
trackAttachments( vobj, rigged, &ratPtr );
|
||||
}
|
||||
}
|
||||
// </FS:Beq>
|
||||
gHighlightProgram.bind(rigged);
|
||||
// <FS:Beq> FIRE-32132 et al. Allow rigged mesh transparency highlights to be toggled
|
||||
if (rigged && !sShowDebugAlphaRigged)
|
||||
{
|
||||
// if we don't want to show rigged alpha highlights then skip
|
||||
continue;
|
||||
}
|
||||
else if (rigged && sShowDebugAlphaRigged)
|
||||
{
|
||||
// if we do and this is rigged then use a different colour
|
||||
gGL.diffuseColor4f(1, 0.5, 0, 1);
|
||||
}
|
||||
else // NB dangling else to drop through to "normal behaviour"
|
||||
// </FS:Beq>
|
||||
gGL.diffuseColor4f(1, 0, 0, 1);
|
||||
|
||||
if (rigged)
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ public:
|
|||
bool uploadMatrixPalette(const LLDrawInfo& params);
|
||||
|
||||
static BOOL sShowDebugAlpha;
|
||||
static BOOL sShowDebugAlphaRigged;
|
||||
|
||||
private:
|
||||
LLGLSLShader* target_shader;
|
||||
|
|
|
|||
|
|
@ -67,6 +67,8 @@
|
|||
#include "llviewercontrol.h" // for gSavedSettings
|
||||
#include "llvoavatarself.h"
|
||||
|
||||
#include "aoengine.h" // <FS:Zi> FIRE-32315: Animation preview sometimes fails when FS AO is enabled
|
||||
|
||||
S32 LLFloaterBvhPreview::sOwnAvatarInstanceCount = 0; // <FS> Preview on own avatar
|
||||
|
||||
const S32 PREVIEW_BORDER_WIDTH = 2;
|
||||
|
|
@ -137,6 +139,13 @@ LLFloaterBvhPreview::LLFloaterBvhPreview(const std::string& filename) :
|
|||
if (mUseOwnAvatar)
|
||||
{
|
||||
sOwnAvatarInstanceCount++;
|
||||
|
||||
// // Switch FS AO off during preview
|
||||
mAOEnabled = gSavedPerAccountSettings.getBOOL("UseAO");
|
||||
if (mAOEnabled)
|
||||
{
|
||||
AOEngine::getInstance()->enable(false);
|
||||
}
|
||||
}
|
||||
// </FS>
|
||||
|
||||
|
|
@ -535,6 +544,12 @@ LLFloaterBvhPreview::~LLFloaterBvhPreview()
|
|||
gAgentAvatarp->startDefaultMotions();
|
||||
gAgentAvatarp->startMotion(ANIM_AGENT_STAND);
|
||||
}
|
||||
|
||||
// Switch FS AO back on if it was disabled during preview
|
||||
if (mAOEnabled)
|
||||
{
|
||||
AOEngine::getInstance()->enable(true);
|
||||
}
|
||||
}
|
||||
// </FS>
|
||||
|
||||
|
|
|
|||
|
|
@ -158,6 +158,9 @@ protected:
|
|||
|
||||
// <FS:Sei> FIRE-17277: Allow entering Loop In/Loop Out as frames
|
||||
S32 mNumFrames;
|
||||
|
||||
// <FS:Zi> FIRE-32315: Animation preview sometimes fails when FS AO is enabled
|
||||
bool mAOEnabled;
|
||||
};
|
||||
|
||||
#endif // LL_LLFLOATERBVHPREVIEW_H
|
||||
|
|
|
|||
|
|
@ -51,7 +51,9 @@
|
|||
|
||||
// The minor cardinal direction labels are hidden if their height is more
|
||||
// than this proportion of the map.
|
||||
const F32 MAP_MINOR_DIR_THRESHOLD = 0.035f;
|
||||
// <FS:Ansariel> FIRE-32341: Make minor directions visible at reasonable mini map size again
|
||||
//const F32 MAP_MINOR_DIR_THRESHOLD = 0.035f;
|
||||
const F32 MAP_MINOR_DIR_THRESHOLD = 0.07f;
|
||||
|
||||
const S32 MAP_PADDING_LEFT = 0;
|
||||
const S32 MAP_PADDING_TOP = 2;
|
||||
|
|
|
|||
|
|
@ -467,26 +467,8 @@ void LLLoginInstance::handleLoginFailure(const LLSD& event)
|
|||
|
||||
LLSD args(llsd::map( "MESSAGE", LLTrans::getString(response["message_id"]) ));
|
||||
LLSD payload;
|
||||
LLNotificationsUtil::add("PromptMFAToken", args, payload, [=](LLSD const & notif, LLSD const & response) {
|
||||
bool continue_clicked = response["continue"].asBoolean();
|
||||
std::string token = response["token"].asString();
|
||||
LL_DEBUGS("LLLogin") << "PromptMFAToken: response: " << response << " continue_clicked" << continue_clicked << LL_ENDL;
|
||||
|
||||
// strip out whitespace - SL-17034/BUG-231938
|
||||
token = boost::regex_replace(token, boost::regex("\\s"), "");
|
||||
|
||||
if (continue_clicked && !token.empty())
|
||||
{
|
||||
LL_INFOS("LLLogin") << "PromptMFAToken: token submitted" << LL_ENDL;
|
||||
|
||||
// Set the request data to true and retry login.
|
||||
mRequestData["params"]["token"] = token;
|
||||
reconnect();
|
||||
} else {
|
||||
LL_INFOS("LLLogin") << "PromptMFAToken: no token, attemptComplete" << LL_ENDL;
|
||||
attemptComplete();
|
||||
}
|
||||
});
|
||||
LLNotificationsUtil::add("PromptMFAToken", args, payload,
|
||||
boost::bind(&LLLoginInstance::handleMFAChallenge, this, _1, _2));
|
||||
}
|
||||
else if( reason_response == "key"
|
||||
|| reason_response == "presence"
|
||||
|
|
@ -563,23 +545,59 @@ void LLLoginInstance::handleIndeterminate(const LLSD& event)
|
|||
|
||||
bool LLLoginInstance::handleTOSResponse(bool accepted, const std::string& key)
|
||||
{
|
||||
if(accepted)
|
||||
{
|
||||
LL_INFOS("LLLogin") << "LLLoginInstance::handleTOSResponse: accepted" << LL_ENDL;
|
||||
if(accepted)
|
||||
{
|
||||
LL_INFOS("LLLogin") << "LLLoginInstance::handleTOSResponse: accepted " << LL_ENDL;
|
||||
|
||||
// Set the request data to true and retry login.
|
||||
mRequestData["params"][key] = true;
|
||||
reconnect();
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_INFOS("LLLogin") << "LLLoginInstance::handleTOSResponse: attemptComplete" << LL_ENDL;
|
||||
// Set the request data to true and retry login.
|
||||
mRequestData["params"][key] = true;
|
||||
|
||||
attemptComplete();
|
||||
}
|
||||
if (!mRequestData["params"]["token"].asString().empty())
|
||||
{
|
||||
// SL-18511 this TOS failure happened while we are in the middle of an MFA challenge/response.
|
||||
// the previously entered token is very likely expired, so prompt again
|
||||
LLSD args(llsd::map( "MESSAGE", LLTrans::getString("LoginFailedAuthenticationMFARequired") ));
|
||||
LLSD payload;
|
||||
LLNotificationsUtil::add("PromptMFAToken", args, payload,
|
||||
boost::bind(&LLLoginInstance::handleMFAChallenge, this, _1, _2));
|
||||
}
|
||||
else
|
||||
{
|
||||
reconnect();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_INFOS("LLLogin") << "LLLoginInstance::handleTOSResponse: attemptComplete" << LL_ENDL;
|
||||
|
||||
LLEventPumps::instance().obtain(TOS_REPLY_PUMP).stopListening(TOS_LISTENER_NAME);
|
||||
return true;
|
||||
attemptComplete();
|
||||
}
|
||||
|
||||
LLEventPumps::instance().obtain(TOS_REPLY_PUMP).stopListening(TOS_LISTENER_NAME);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool LLLoginInstance::handleMFAChallenge(LLSD const & notif, LLSD const & response)
|
||||
{
|
||||
bool continue_clicked = response["continue"].asBoolean();
|
||||
std::string token = response["token"].asString();
|
||||
LL_DEBUGS("LLLogin") << "PromptMFAToken: response: " << response << " continue_clicked" << continue_clicked << LL_ENDL;
|
||||
|
||||
// strip out whitespace - SL-17034/BUG-231938
|
||||
token = boost::regex_replace(token, boost::regex("\\s"), "");
|
||||
|
||||
if (continue_clicked && !token.empty())
|
||||
{
|
||||
LL_INFOS("LLLogin") << "PromptMFAToken: token submitted" << LL_ENDL;
|
||||
|
||||
// Set the request data to true and retry login.
|
||||
mRequestData["params"]["token"] = token;
|
||||
reconnect();
|
||||
} else {
|
||||
LL_INFOS("LLLogin") << "PromptMFAToken: no token, attemptComplete" << LL_ENDL;
|
||||
attemptComplete();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
std::string construct_start_string()
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@ private:
|
|||
void syncWithUpdater(ResponsePtr resp, const LLSD& notification, const LLSD& response);
|
||||
|
||||
bool handleTOSResponse(bool v, const std::string& key);
|
||||
bool handleMFAChallenge(LLSD const & notif, LLSD const & response);
|
||||
|
||||
void attemptComplete() { mAttemptComplete = true; } // In the future an event?
|
||||
|
||||
|
|
|
|||
|
|
@ -2509,14 +2509,17 @@ void LLModelPreview::genMeshOptimizerLODs(S32 which_lod, S32 meshopt_mode, U32 d
|
|||
{
|
||||
// <FS:Beq> Log things properly
|
||||
// LL_INFOS() << "Generating lod " << which_lod << " using meshoptimizer" << LL_ENDL;
|
||||
std::ostringstream out;
|
||||
out << "Generating lod " << which_lod << " using meshoptimizer";
|
||||
LL_INFOS("MeshUpload") << out.str() << LL_ENDL;
|
||||
LLFloaterModelPreview::addStringToLog(out, false);
|
||||
{
|
||||
std::ostringstream out;
|
||||
out << "Generating lod " << which_lod << " using meshoptimizer";
|
||||
LL_INFOS("MeshUpload") << out.str() << LL_ENDL;
|
||||
LLFloaterModelPreview::addStringToLog(out, false);
|
||||
}
|
||||
// </FS:Beq>
|
||||
// Allow LoD from -1 to LLModel::LOD_PHYSICS
|
||||
if (which_lod < -1 || which_lod > LLModel::NUM_LODS - 1)
|
||||
{
|
||||
// std::ostringstream out; // <FS:Beq/> already instantiated
|
||||
std::ostringstream out;
|
||||
out << "Invalid level of detail: " << which_lod;
|
||||
LL_WARNS() << out.str() << LL_ENDL;
|
||||
LLFloaterModelPreview::addStringToLog(out, true); // <FS:Beq/> if you don't flash the log tab on error when do you?
|
||||
|
|
@ -2726,7 +2729,11 @@ void LLModelPreview::genMeshOptimizerLODs(S32 which_lod, S32 meshopt_mode, U32 d
|
|||
// (indices_decimator / res_ratio) by itself is likely to overshoot to a differend
|
||||
// side due to overal lack of precision, and we don't need an ideal result, which
|
||||
// likely does not exist, just a better one, so a partial correction is enough.
|
||||
F32 sloppy_decimator = indices_decimator * (indices_decimator / sloppy_ratio + 1) / 2;
|
||||
F32 sloppy_decimator{indices_decimator};
|
||||
// if(sloppy_ratio > 0)
|
||||
// {
|
||||
sloppy_decimator = indices_decimator * (indices_decimator / sloppy_ratio + 1) / 2;
|
||||
// }
|
||||
sloppy_ratio = genMeshOptimizerPerModel(base, target_model, sloppy_decimator, lod_error_threshold, MESH_OPTIMIZER_NO_TOPOLOGY);
|
||||
}
|
||||
|
||||
|
|
@ -2751,11 +2758,12 @@ void LLModelPreview::genMeshOptimizerLODs(S32 which_lod, S32 meshopt_mode, U32 d
|
|||
// to work on a first try of sloppy due to having more viggle room.
|
||||
// If they didn't, something is likely wrong, no point locking the
|
||||
// thread in a long calculation that will fail.
|
||||
const U32 too_many_vertices = 27000;
|
||||
const U32 too_many_vertices = 65535;
|
||||
if (size_vertices > too_many_vertices)
|
||||
{
|
||||
// <FS:Beq> log this properly.
|
||||
// LL_WARNS() << "Sloppy optimization method failed for a complex model " << target_model->getName() << LL_ENDL;
|
||||
std::ostringstream out;
|
||||
out << "Sloppy optimization method failed for a complex model " << target_model->getName();
|
||||
LL_WARNS() << out.str() << LL_ENDL;
|
||||
LLFloaterModelPreview::addStringToLog(out, true);
|
||||
|
|
@ -2798,12 +2806,16 @@ void LLModelPreview::genMeshOptimizerLODs(S32 which_lod, S32 meshopt_mode, U32 d
|
|||
// << " lod " << which_lod
|
||||
// << " resulting ratio " << precise_ratio
|
||||
// << " simplified using per model method." << LL_ENDL;
|
||||
out << "Model " << target_model->getName()
|
||||
<< " lod " << which_lod
|
||||
<< " resulting ratio " << precise_ratio
|
||||
<< " simplified using per model method.";
|
||||
LL_INFOS() << out.str() << LL_ENDL;
|
||||
LLFloaterModelPreview::addStringToLog(out, false);
|
||||
{
|
||||
std::ostringstream out;
|
||||
out << "Model " << target_model->getName()
|
||||
<< " lod " << which_lod
|
||||
<< " resulting ratio " << precise_ratio
|
||||
<< " simplified using per model method.";
|
||||
LL_INFOS() << out.str() << LL_ENDL;
|
||||
LLFloaterModelPreview::addStringToLog(out, false);
|
||||
}
|
||||
// </FS:Beq>
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -2812,12 +2824,14 @@ void LLModelPreview::genMeshOptimizerLODs(S32 which_lod, S32 meshopt_mode, U32 d
|
|||
// << " lod " << which_lod
|
||||
// << " resulting ratio " << sloppy_ratio
|
||||
// << " sloppily simplified using per model method." << LL_ENDL;
|
||||
std::ostringstream out;
|
||||
out << "Model " << target_model->getName()
|
||||
<< " lod " << which_lod
|
||||
<< " resulting ratio " << sloppy_ratio
|
||||
<< " sloppily simplified using per model method.";
|
||||
LL_INFOS() << out.str() << LL_ENDL;
|
||||
LLFloaterModelPreview::addStringToLog(out, false);
|
||||
// </FS:Beq>
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -2827,12 +2841,14 @@ void LLModelPreview::genMeshOptimizerLODs(S32 which_lod, S32 meshopt_mode, U32 d
|
|||
// << " lod " << which_lod
|
||||
// << " resulting ratio " << precise_ratio
|
||||
// << " simplified using per model method." << LL_ENDL;
|
||||
std::ostringstream out;
|
||||
out << "Bad MeshOptimisation result for Model " << target_model->getName()
|
||||
<< " lod " << which_lod
|
||||
<< " resulting ratio " << precise_ratio
|
||||
<< " simplified using per model method.";
|
||||
LL_WARNS() << out.str() << LL_ENDL;
|
||||
LLFloaterModelPreview::addStringToLog(out, true);
|
||||
// </FS:Beq>
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3299,7 +3315,6 @@ void LLModelPreview::updateStatusMessages()
|
|||
out << "Loader returned errors, model can't be uploaded";
|
||||
LL_INFOS() << out.str() << LL_ENDL;
|
||||
LLFloaterModelPreview::addStringToLog(out, true);
|
||||
out.str("");
|
||||
// </FS:Beq>
|
||||
}
|
||||
|
||||
|
|
@ -3317,7 +3332,6 @@ void LLModelPreview::updateStatusMessages()
|
|||
out << "Invalid rig, there might be issues with uploading Joint positions";
|
||||
LL_INFOS() << out.str() << LL_ENDL;
|
||||
LLFloaterModelPreview::addStringToLog(out, true);
|
||||
out.str("");
|
||||
// </FS:Beq>
|
||||
}
|
||||
}
|
||||
|
|
@ -3882,7 +3896,6 @@ void LLModelPreview::createPreviewAvatar(void)
|
|||
out << "Failed to create preview avatar for upload model window";
|
||||
LL_INFOS() << out.str() << LL_ENDL;
|
||||
LLFloaterModelPreview::addStringToLog(out, true);
|
||||
out.str("");
|
||||
// </FS:Beq>
|
||||
}
|
||||
}
|
||||
|
|
@ -3985,6 +3998,7 @@ void LLModelPreview::lookupLODModelFiles(S32 lod)
|
|||
out << "Auto Loading LOD" << next_lod << " from " << lod_filename;
|
||||
LL_INFOS() << out.str() << LL_ENDL;
|
||||
LLFloaterModelPreview::addStringToLog(out, true);
|
||||
out.str("");
|
||||
// </FS:Beq>
|
||||
LLFloaterModelPreview* fmp = LLFloaterModelPreview::sInstance;
|
||||
if (fmp)
|
||||
|
|
|
|||
|
|
@ -1686,6 +1686,9 @@ void LLNetMap::createParcelImage()
|
|||
|
||||
BOOL LLNetMap::handleMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
// <FS:Ansariel> FIRE-32339: Mini map can't be dragged anymore
|
||||
if (!(mask & MASK_SHIFT)) return FALSE;
|
||||
|
||||
// Start panning
|
||||
gFocusMgr.setMouseCapture(this);
|
||||
|
||||
|
|
@ -1865,10 +1868,10 @@ BOOL LLNetMap::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
|||
mPopupMenu->buildDrawLabels();
|
||||
mPopupMenu->updateParent(LLMenuGL::sMenuContainer);
|
||||
// [SL:KB] - Patch: World-MiniMap | Checked: 2012-07-08 (Catznip-3.3)
|
||||
mPopupMenu->setItemVisible("Stop tracking", LLTracker::isTracking(0));
|
||||
mPopupMenu->setItemVisible("Stop Tracking", LLTracker::isTracking(0));
|
||||
mPopupMenu->setItemVisible("Stop Tracking Separator", LLTracker::isTracking(0));
|
||||
// [/SL:KB]
|
||||
// mPopupMenu->setItemEnabled("Stop tracking", LLTracker::isTracking(0));
|
||||
// mPopupMenu->setItemEnabled("Stop Tracking", LLTracker::isTracking(0));
|
||||
LLMenuGL::showPopup(this, mPopupMenu, x, y);
|
||||
}
|
||||
return TRUE;
|
||||
|
|
@ -2127,8 +2130,8 @@ void LLNetMap::handleStopTracking (const LLSD& userdata)
|
|||
if (mPopupMenu)
|
||||
{
|
||||
// <FS:Ansariel> Hide tracking option instead of disabling
|
||||
//mPopupMenu->setItemEnabled ("Stop tracking", false);
|
||||
mPopupMenu->setItemVisible ("Stop tracking", false);
|
||||
//mPopupMenu->setItemEnabled ("Stop Tracking", false);
|
||||
mPopupMenu->setItemVisible ("Stop Tracking", false);
|
||||
// </FS:Ansariel>
|
||||
LLTracker::stopTracking (LLTracker::isTracking(NULL));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1064,7 +1064,7 @@ void LLPanelProfileSecondLife::onOpen(const LLSD& key)
|
|||
#else
|
||||
if (own_profile)
|
||||
#endif
|
||||
// </FS:Beq>
|
||||
// </FS:Beq>
|
||||
{
|
||||
mImageActionMenuButton->setVisible(TRUE);
|
||||
mImageActionMenuButton->setMenu("menu_fs_profile_image_actions.xml", LLMenuButton::MP_BOTTOM_RIGHT);
|
||||
|
|
@ -1113,11 +1113,11 @@ void LLPanelProfileSecondLife::updateData()
|
|||
else
|
||||
{
|
||||
// <FS:Beq> restore UDP profiles for opensim that does not support the cap
|
||||
#ifdef OPENSIM
|
||||
#ifdef OPENSIM
|
||||
if (LLGridManager::instance().isInOpenSim() && !(getSelfProfile() /* TODO(Beq):No longer neeed? && !getEmbedded()*/))
|
||||
{
|
||||
LLAvatarPropertiesProcessor::getInstance()->sendAvatarGroupsRequest(avatar_id);
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
// </FS:Beq>
|
||||
|
|
@ -1138,7 +1138,7 @@ void LLPanelProfileSecondLife::refreshName()
|
|||
void LLPanelProfileSecondLife::apply(LLAvatarData* data)
|
||||
{
|
||||
#ifdef OPENSIM
|
||||
if (LLGridManager::instance().isInOpenSim() && getIsLoaded() && getSelfProfile())
|
||||
if (LLGridManager::instance().isInOpenSim() && getIsLoaded() && getSelfProfile())
|
||||
{
|
||||
data->image_id = mImageId;
|
||||
data->about_text = mDescriptionEdit->getValue().asString();
|
||||
|
|
@ -1262,9 +1262,10 @@ void LLPanelProfileSecondLife::processProfileProperties(const LLAvatarData* avat
|
|||
fillPartnerData(avatar_data);
|
||||
|
||||
fillAccountStatus(avatar_data);
|
||||
|
||||
// <FS:Beq> Restore UDP profiles
|
||||
#ifdef OPENSIM
|
||||
if (LLGridManager::instance().isInOpenSim())
|
||||
if (LLGridManager::instance().isInOpenSim())
|
||||
{
|
||||
LLFloater* floater_profile = LLFloaterReg::findInstance("profile", LLSD().with("id", avatar_id));
|
||||
if (!floater_profile)
|
||||
|
|
@ -1272,13 +1273,15 @@ void LLPanelProfileSecondLife::processProfileProperties(const LLAvatarData* avat
|
|||
// floater is dead, so panels are dead as well
|
||||
return;
|
||||
}
|
||||
LLPanel *panel = floater_profile->findChild<LLPanel>(PANEL_PROFILE_VIEW, TRUE);
|
||||
auto *panel_profile = dynamic_cast<LLPanelProfile*>(panel);
|
||||
if (!panel_profile)
|
||||
LLPanelProfile* panel_profile = floater_profile->findChild<LLPanelProfile>(PANEL_PROFILE_VIEW, TRUE);
|
||||
if (panel_profile)
|
||||
{
|
||||
panel_profile->setAvatarData(avatar_data);
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << PANEL_PROFILE_VIEW << " not found" << LL_ENDL;
|
||||
}
|
||||
panel_profile->setAvatarData(avatar_data);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
// </FS:Beq>
|
||||
|
|
@ -2242,8 +2245,7 @@ void LLPanelProfileSecondLife::onSaveDescriptionChanges()
|
|||
// floater is dead, so panels are dead as well
|
||||
return;
|
||||
}
|
||||
LLPanel *panel = floater_profile->findChild<LLPanel>(PANEL_PROFILE_VIEW, TRUE);
|
||||
auto *panel_profile = dynamic_cast<LLPanelProfile*>(panel);
|
||||
LLPanelProfile* panel_profile = floater_profile->findChild<LLPanelProfile>(PANEL_PROFILE_VIEW, TRUE);
|
||||
if (!panel_profile)
|
||||
{
|
||||
LL_WARNS() << PANEL_PROFILE_VIEW << " not found" << LL_ENDL;
|
||||
|
|
@ -2259,7 +2261,7 @@ void LLPanelProfileSecondLife::onSaveDescriptionChanges()
|
|||
|
||||
LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesUpdate(&avatar_data);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
// </FS:Beq>
|
||||
|
|
@ -2479,7 +2481,7 @@ void LLPanelProfileSecondLife::onCommitProfileImage(const LLUUID& id)
|
|||
else
|
||||
{
|
||||
// <FS:Beq> Make OpenSim profiles work again
|
||||
#ifdef OPENSIM
|
||||
#ifdef OPENSIM
|
||||
if(LLGridManager::getInstance()->isInOpenSim())
|
||||
{
|
||||
mImageId = id;
|
||||
|
|
@ -2569,6 +2571,7 @@ void LLPanelProfileWeb::apply(LLAvatarData* data)
|
|||
}
|
||||
#endif
|
||||
// </FS:Beq>
|
||||
|
||||
void LLPanelProfileWeb::onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)
|
||||
{
|
||||
mAvatarNameCacheConnection.disconnect();
|
||||
|
|
@ -2866,7 +2869,7 @@ void LLPanelProfileFirstLife::onCommitPhoto(const LLUUID& id)
|
|||
else
|
||||
{
|
||||
// <FS:Beq> Make OpenSim profiles work again
|
||||
#ifdef OPENSIM
|
||||
#ifdef OPENSIM
|
||||
if(LLGridManager::getInstance()->isInOpenSim())
|
||||
{
|
||||
mImageId = id;
|
||||
|
|
@ -2922,8 +2925,7 @@ void LLPanelProfileFirstLife::onSaveDescriptionChanges()
|
|||
// floater is dead, so panels are dead as well
|
||||
return;
|
||||
}
|
||||
LLPanel *panel = floater_profile->findChild<LLPanel>(PANEL_PROFILE_VIEW, TRUE);
|
||||
auto *panel_profile = dynamic_cast<LLPanelProfile*>(panel);
|
||||
LLPanelProfile* panel_profile = floater_profile->findChild<LLPanelProfile>(PANEL_PROFILE_VIEW, TRUE);
|
||||
if (!panel_profile)
|
||||
{
|
||||
LL_WARNS() << PANEL_PROFILE_VIEW << " not found" << LL_ENDL;
|
||||
|
|
@ -2938,7 +2940,7 @@ void LLPanelProfileFirstLife::onSaveDescriptionChanges()
|
|||
|
||||
LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesUpdate(&avatar_data);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
// </FS:Beq>
|
||||
|
|
@ -3012,7 +3014,7 @@ void LLPanelProfileFirstLife::resetData()
|
|||
auto show_image_buttons = getSelfProfile();
|
||||
#ifdef OPENSIM
|
||||
std::string cap_url = gAgent.getRegionCapability(PROFILE_IMAGE_UPLOAD_CAP);
|
||||
if( cap_url.empty() && LLGridManager::instance().isInOpenSim() )
|
||||
if (cap_url.empty() && LLGridManager::instance().isInOpenSim())
|
||||
{
|
||||
show_image_buttons = false;
|
||||
}
|
||||
|
|
@ -3066,10 +3068,10 @@ void LLPanelProfileNotes::updateData()
|
|||
boost::bind(request_avatar_properties_coro, cap_url, avatar_id));
|
||||
}
|
||||
// <FS:Beq> Restore UDO profiles
|
||||
#ifdef OPENSIM
|
||||
#ifdef OPENSIM
|
||||
else
|
||||
{
|
||||
LLAvatarPropertiesProcessor::getInstance()->sendAvatarNotesRequest(avatar_id);
|
||||
LLAvatarPropertiesProcessor::getInstance()->sendAvatarNotesRequest(avatar_id);
|
||||
}
|
||||
#endif
|
||||
// </FS:Beq>
|
||||
|
|
@ -3270,7 +3272,7 @@ void LLPanelProfile::updateData()
|
|||
// <FS:Beq> Restore UDP profiles
|
||||
else
|
||||
{
|
||||
LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesRequest(avatar_id);
|
||||
LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesRequest(avatar_id);
|
||||
}
|
||||
// </FS:Beq>
|
||||
}
|
||||
|
|
|
|||
|
|
@ -275,7 +275,7 @@ public:
|
|||
return lhs->mAvatarp < rhs->mAvatarp;
|
||||
}
|
||||
|
||||
return lhs->mRenderOrder < rhs->mRenderOrder;
|
||||
return lhs->mRenderOrder > rhs->mRenderOrder;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -524,7 +524,11 @@ LLSD LLNewFileResourceUploadInfo::exportTempFile()
|
|||
{
|
||||
errorMessage = "Failed reading animation file";
|
||||
}
|
||||
|
||||
delete motionp; // <FS:Ansariel> Memory leak fix
|
||||
}
|
||||
|
||||
delete[] buffer; // <FS:Ansariel> Memory leak fix
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -11004,6 +11004,26 @@ class LLViewCheckHighlightTransparent : public view_listener_t
|
|||
return new_value;
|
||||
}
|
||||
};
|
||||
// <FS:Beq> FIRE-32132 et al. Allow rigged mesh transparency highlights to be toggled
|
||||
class LLViewHighlightTransparentRigged : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
{
|
||||
LLDrawPoolAlpha::sShowDebugAlphaRigged = !LLDrawPoolAlpha::sShowDebugAlphaRigged;
|
||||
gPipeline.resetVertexBuffers();
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
class LLViewCheckHighlightTransparentRigged : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
{
|
||||
bool new_value = LLDrawPoolAlpha::sShowDebugAlphaRigged;
|
||||
return new_value;
|
||||
}
|
||||
};
|
||||
// </FS:Beq>
|
||||
|
||||
class LLViewBeaconWidth : public view_listener_t
|
||||
{
|
||||
|
|
@ -12026,6 +12046,7 @@ void initialize_menus()
|
|||
view_listener_t::addMenu(new LLViewLookAtLastChatter(), "View.LookAtLastChatter");
|
||||
view_listener_t::addMenu(new LLViewShowHoverTips(), "View.ShowHoverTips");
|
||||
view_listener_t::addMenu(new LLViewHighlightTransparent(), "View.HighlightTransparent");
|
||||
view_listener_t::addMenu(new LLViewHighlightTransparentRigged(), "View.HighlightTransparentRigged"); // <FS:Beq/> FIRE-32132 et al. Allow rigged mesh transparency highlights to be toggled
|
||||
view_listener_t::addMenu(new LLViewToggleRenderType(), "View.ToggleRenderType");
|
||||
view_listener_t::addMenu(new LLViewShowHUDAttachments(), "View.ShowHUDAttachments");
|
||||
view_listener_t::addMenu(new LLZoomer(1.2f), "View.ZoomOut");
|
||||
|
|
@ -12042,6 +12063,7 @@ void initialize_menus()
|
|||
view_listener_t::addMenu(new LLViewCheckJoystickFlycam(), "View.CheckJoystickFlycam");
|
||||
view_listener_t::addMenu(new LLViewCheckShowHoverTips(), "View.CheckShowHoverTips");
|
||||
view_listener_t::addMenu(new LLViewCheckHighlightTransparent(), "View.CheckHighlightTransparent");
|
||||
view_listener_t::addMenu(new LLViewCheckHighlightTransparentRigged(), "View.CheckHighlightTransparentRigged");// <FS:Beq/> FIRE-32132 et al. Allow rigged mesh transparency highlights to be toggled
|
||||
view_listener_t::addMenu(new LLViewCheckRenderType(), "View.CheckRenderType");
|
||||
view_listener_t::addMenu(new LLViewStatusAway(), "View.Status.CheckAway");
|
||||
view_listener_t::addMenu(new LLViewStatusDoNotDisturb(), "View.Status.CheckDoNotDisturb");
|
||||
|
|
|
|||
|
|
@ -835,6 +835,13 @@ public:
|
|||
ypos += y_inc;
|
||||
}
|
||||
|
||||
// <FS:Beq> FIRE-32311 - Only show particle text when showing render debug info (relocate pre-existing change by Liny)
|
||||
if (LLPipeline::toggleRenderTypeControlNegated(LLPipeline::RENDER_TYPE_PARTICLES))
|
||||
{
|
||||
addText(xpos, ypos, particle_hiding);
|
||||
ypos += y_inc;
|
||||
}
|
||||
// </FS:Beq>
|
||||
LLVertexBuffer::sBindCount = LLImageGL::sBindCount =
|
||||
LLVertexBuffer::sSetCount = LLImageGL::sUniqueCount =
|
||||
gPipeline.mNumVisibleNodes = LLPipeline::sVisibleLightCount = 0;
|
||||
|
|
@ -932,14 +939,6 @@ public:
|
|||
}
|
||||
// </FS:PP>
|
||||
|
||||
// <FS:LO> pull the text saying if particles are hidden out from beacons
|
||||
if (LLPipeline::toggleRenderTypeControlNegated(LLPipeline::RENDER_TYPE_PARTICLES))
|
||||
{
|
||||
addText(xpos, ypos, particle_hiding);
|
||||
ypos += y_inc;
|
||||
}
|
||||
// </FS:LO>
|
||||
|
||||
// only display these messages if we are actually rendering beacons at this moment
|
||||
// <FS:LO> Always show the beacon text regardless if the floater is visible
|
||||
// <FS:Ansa> ...and if we want to see it
|
||||
|
|
|
|||
|
|
@ -5339,21 +5339,22 @@ LLControlAVBridge::LLControlAVBridge(LLDrawable* drawablep, LLViewerRegion* regi
|
|||
|
||||
bool can_batch_texture(LLFace* facep)
|
||||
{
|
||||
// <FS:Beq> fix batching when materials disabled and alpha none/masked.
|
||||
if (facep->getTextureEntry()->getBumpmap())
|
||||
{ //bump maps aren't worked into texture batching yet
|
||||
return false;
|
||||
}
|
||||
|
||||
// <FS:Beq> fix batching when materials disabled and alpha none/masked.
|
||||
// if (facep->getTextureEntry()->getMaterialParams().notNull())
|
||||
// { //materials don't work with texture batching yet
|
||||
// return false;
|
||||
// }
|
||||
const auto te = facep->getTextureEntry();
|
||||
if (LLPipeline::sRenderDeferred && te )
|
||||
if ( LLPipeline::sRenderDeferred && te )
|
||||
{
|
||||
auto mat = te->getMaterialParams();
|
||||
if(mat.notNull() && (mat->getNormalID() != LLUUID::null || mat->getSpecularID() != LLUUID::null || (te->getAlpha() >0.f && te->getAlpha() < 1.f ) ) )
|
||||
// if(mat.notNull() && (mat->getNormalID() != LLUUID::null || mat->getSpecularID() != LLUUID::null || (te->getAlpha() >0.f && te->getAlpha() < 1.f ) ) )
|
||||
if( mat.notNull() && ( !mat->isEmpty() || ( (te->getAlpha() >0.f && te->getAlpha() < 1.f ) && mat->getDiffuseAlphaMode() != LLMaterial::DIFFUSE_ALPHA_MODE_BLEND) ) )
|
||||
{
|
||||
// we have a materials block but we cannot batch materials.
|
||||
// however, materials blocks can and do exist due to alpha masking and those are batchable,
|
||||
|
|
@ -5546,6 +5547,11 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,
|
|||
|
||||
U32 shader_mask = 0xFFFFFFFF; //no shader
|
||||
|
||||
if(mat && mat->isEmpty() && mat->getDiffuseAlphaMode() == LLMaterial::DIFFUSE_ALPHA_MODE_BLEND)
|
||||
{
|
||||
mat = nullptr;
|
||||
}
|
||||
|
||||
if (mat)
|
||||
{
|
||||
if (type == LLRenderPass::PASS_ALPHA)
|
||||
|
|
@ -5800,7 +5806,7 @@ static inline void add_face(T*** list, U32* count, T* face)
|
|||
{
|
||||
if (count[1] < MAX_FACE_COUNT)
|
||||
{
|
||||
//face->setDrawOrderIndex(count[1]);
|
||||
face->setDrawOrderIndex(count[1]);
|
||||
list[1][count[1]++] = face;
|
||||
}
|
||||
}
|
||||
|
|
@ -5808,36 +5814,12 @@ static inline void add_face(T*** list, U32* count, T* face)
|
|||
{
|
||||
if (count[0] < MAX_FACE_COUNT)
|
||||
{
|
||||
//face->setDrawOrderIndex(count[0]);
|
||||
face->setDrawOrderIndex(count[0]);
|
||||
list[0][count[0]++] = face;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// return index into linkset for given object (0 for root prim)
|
||||
U32 get_linkset_index(LLVOVolume* vobj)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
if (vobj->isRootEdit())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
LLViewerObject* root = vobj->getRootEdit();
|
||||
U32 idx = 1;
|
||||
for (const auto& child : root->getChildren())
|
||||
{
|
||||
if (child == vobj)
|
||||
{
|
||||
return idx;
|
||||
}
|
||||
++idx;
|
||||
}
|
||||
|
||||
llassert(false);
|
||||
return idx; //should never get here
|
||||
}
|
||||
|
||||
void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME;
|
||||
|
|
@ -6045,8 +6027,6 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
|
|||
{
|
||||
avatar->addAttachmentOverridesForObject(vobj, NULL, false);
|
||||
}
|
||||
|
||||
U32 linkset_index = get_linkset_index(vobj);
|
||||
|
||||
// Standard rigged mesh attachments:
|
||||
bool rigged = !vobj->isAnimatedObject() && skinInfo && vobj->isAttachment();
|
||||
|
|
@ -6067,9 +6047,6 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
|
|||
continue;
|
||||
}
|
||||
|
||||
// order by linkset index first and face index second
|
||||
facep->setDrawOrderIndex(linkset_index * 100 + i);
|
||||
|
||||
//ALWAYS null out vertex buffer on rebuild -- if the face lands in a render
|
||||
// batch, it will recover its vertex buffer reference from the spatial group
|
||||
facep->setVertexBuffer(NULL);
|
||||
|
|
@ -6094,6 +6071,11 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
|
|||
if (facep->isState(LLFace::RIGGED))
|
||||
{
|
||||
//face is not rigged but used to be, remove from rigged face pool
|
||||
LLDrawPoolAvatar* pool = (LLDrawPoolAvatar*)facep->getPool();
|
||||
if (pool)
|
||||
{
|
||||
pool->removeFace(facep);
|
||||
}
|
||||
facep->clearState(LLFace::RIGGED);
|
||||
facep->mAvatar = NULL;
|
||||
facep->mSkinInfo = NULL;
|
||||
|
|
@ -6568,14 +6550,6 @@ struct CompareBatchBreakerRigged
|
|||
}
|
||||
};
|
||||
|
||||
struct CompareDrawOrder
|
||||
{
|
||||
bool operator()(const LLFace* const& lhs, const LLFace* const& rhs)
|
||||
{
|
||||
return lhs->getDrawOrderIndex() < rhs->getDrawOrderIndex();
|
||||
}
|
||||
};
|
||||
|
||||
U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace** faces, U32 face_count, BOOL distance_sort, BOOL batch_textures, BOOL rigged)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME;
|
||||
|
|
@ -6619,11 +6593,6 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace
|
|||
//sort faces by things that break batches, including avatar and mesh id
|
||||
std::sort(faces, faces + face_count, CompareBatchBreakerRigged());
|
||||
}
|
||||
else
|
||||
{
|
||||
// preserve legacy draw order for rigged faces
|
||||
std::sort(faces, faces + face_count, CompareDrawOrder());
|
||||
}
|
||||
}
|
||||
else if (!distance_sort)
|
||||
{
|
||||
|
|
@ -6680,10 +6649,10 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace
|
|||
LLMaterialPtr mat = te->getMaterialParams();
|
||||
LLMaterialID matId = te->getMaterialID();
|
||||
|
||||
if (distance_sort)
|
||||
{
|
||||
tex = NULL;
|
||||
}
|
||||
// if (distance_sort)
|
||||
// {
|
||||
// tex = NULL;
|
||||
// }
|
||||
|
||||
if (last_tex == tex)
|
||||
{
|
||||
|
|
@ -6768,7 +6737,11 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace
|
|||
|
||||
tex = facep->getTexture();
|
||||
|
||||
if (texture_count < MAX_TEXTURE_COUNT)
|
||||
// <FS:Beq> Quick hack test of proper batching logic
|
||||
// if (texture_count < MAX_TEXTURE_COUNT)
|
||||
// only add to the batch if this is a new texture
|
||||
if (cur_tex == texture_count && texture_count < MAX_TEXTURE_COUNT)
|
||||
// </FS:Beq>
|
||||
{
|
||||
texture_list[texture_count++] = tex;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -98,6 +98,8 @@
|
|||
<menu_item_call label="In Standardordner verschieben" name="Move to Default Folder"/>
|
||||
<menu_item_call label="In Fundbüro verschieben" name="Move to Lost And Found"/>
|
||||
<menu_item_call label="Systemordner löschen" name="Delete System Folder"/>
|
||||
<menu_item_call label="Neuen Ordner aus Auswahl erstellen" name="New folder from selected"/>
|
||||
<menu_item_call label="Gruppierung durch den Ordner aufheben" name="Ungroup folder items"/>
|
||||
<menu_item_call label="Konferenz-Chat starten" name="Conference Chat Folder"/>
|
||||
<menu_item_call label="Wiedergeben/Abspielen" name="Sound Play"/>
|
||||
<menu_item_call label="SLurl kopieren" name="url_copy"/>
|
||||
|
|
@ -127,8 +129,6 @@
|
|||
<menu_item_call label="Ausziehen" name="Take Off"/>
|
||||
<menu_item_call label="Nur auf mich anwenden" name="Settings Apply Local"/>
|
||||
<menu_item_call label="Auf Parzelle anwenden" name="Settings Apply Parcel"/>
|
||||
<menu_item_call label="Neuen Ordner aus Auswahl erstellen" name="New folder from selected"/>
|
||||
<menu_item_call label="Gruppierung durch den Ordner aufheben" name="Ungroup folder items"/>
|
||||
<menu_item_call label="In Marktplatz-Auflistungen kopieren" name="Marketplace Copy"/>
|
||||
<menu_item_call label="In Marktplatz-Auflistungen verschieben" name="Marketplace Move"/>
|
||||
<menu_item_call label="--keine Optionen--" name="--no options--"/>
|
||||
|
|
|
|||
|
|
@ -321,6 +321,7 @@
|
|||
<menu_item_check label="Partikel ausblenden" name="Hide Particles"/>
|
||||
<menu_item_check label="Auswahl ausblenden" name="Hide Selected"/>
|
||||
<menu_item_check label="Durchsichtig hervorheben" name="Highlight Transparent"/>
|
||||
<menu_item_check label="- Durchsichtige geriggte Netze einschließen" name="Include Transparent Rigged"/>
|
||||
<menu_item_check label="Fadenkreuz für Mouselook anzeigen" name="ShowCrosshairs"/>
|
||||
<menu label="Schwebe-Tipps" name="Hover Tips">
|
||||
<menu_item_check label="Tipps anzeigen" name="Show Tips"/>
|
||||
|
|
|
|||
|
|
@ -42,16 +42,16 @@
|
|||
name="RegionNameMsg">
|
||||
Region: [REGION_NAME]
|
||||
</floater.string>
|
||||
<floater.string
|
||||
<floater.string
|
||||
name="ToolTipHintMsg">
|
||||
Double-click to open map
|
||||
</floater.string>
|
||||
<floater.string
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="AltToolTipHintMsg">
|
||||
Double-click to teleport
|
||||
</floater.string>
|
||||
<floater.string name="mini_map_caption">
|
||||
Mini-map
|
||||
</floater.string>
|
||||
<floater.string name="mini_map_caption">
|
||||
Mini-map
|
||||
</floater.string>
|
||||
<net_map
|
||||
bg_color="Transparent"
|
||||
|
|
|
|||
|
|
@ -851,10 +851,10 @@
|
|||
<combo_item name="physics_medium"> Medium </combo_item>
|
||||
<combo_item name="physics_low"> Low </combo_item>
|
||||
<combo_item name="physics_lowest"> Lowest </combo_item>
|
||||
<combo_item name="physics_bounding_box"> Bounding Box </combo_item>
|
||||
<combo_item name="physics_cube"> Cube </combo_item>
|
||||
<combo_item name="physics_hex"> Hexagon </combo_item>
|
||||
<combo_item name="physics_ud"> User Defined </combo_item>
|
||||
<combo_item name="physics_bounding_box"> Bounding Box </combo_item>
|
||||
<combo_item name="load_from_file"> From file </combo_item>
|
||||
</combo_box>
|
||||
<line_editor
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
save_visibility="true"
|
||||
single_instance="false"
|
||||
save_dock_state="false"
|
||||
help_topic="floater_local_mesh"
|
||||
title="Local Mesh">
|
||||
|
||||
<tab_container name="local_mesh_tabs"
|
||||
|
|
@ -27,7 +28,7 @@
|
|||
tabs_flashing_color="MenuItemFlashBgColor">
|
||||
<last_tab tab_top_image_flash="TabTop_Right_Flashing" />
|
||||
<panel name="local_mesh_assets_panel"
|
||||
help_topic="add_local_mesh"
|
||||
help_topic="local_mesh_assets"
|
||||
label="Local Mesh Assets"
|
||||
layout="topleft"
|
||||
title="Local Mesh Assets">
|
||||
|
|
@ -63,7 +64,7 @@
|
|||
<panel name="logs_panel"
|
||||
label="Log"
|
||||
layout="topleft"
|
||||
help_topic="text_log">
|
||||
help_topic="local_mesh_log">
|
||||
<view_border name="local_mesh_log_tab_border"
|
||||
bevel_style="none"
|
||||
follows="top|left"
|
||||
|
|
@ -94,7 +95,7 @@
|
|||
<panel name="local_mesh_settings_panel"
|
||||
layout="topleft"
|
||||
label="Settings"
|
||||
help_topic="local_mesh_settings_prefs">
|
||||
help_topic="local_mesh_settings">
|
||||
<view_border name="local_mesh_settings_tab_border"
|
||||
bevel_style="none"
|
||||
follows="top|left"
|
||||
|
|
|
|||
|
|
@ -762,6 +762,25 @@
|
|||
function="Inventory.DoToSelected"
|
||||
parameter="delete_system_folder" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator
|
||||
layout="topleft"
|
||||
name="Subfolder Separator" />
|
||||
<menu_item_call
|
||||
label="Create Folder From Selected"
|
||||
layout="topleft"
|
||||
name="New folder from selected">
|
||||
<menu_item_call.on_click
|
||||
function="Inventory.DoToSelected"
|
||||
parameter="new_folder_from_selected" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Ungroup Folder Items"
|
||||
layout="topleft"
|
||||
name="Ungroup folder items">
|
||||
<menu_item_call.on_click
|
||||
function="Inventory.DoToSelected"
|
||||
parameter="ungroup_folder_items" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator
|
||||
layout="topleft" />
|
||||
<menu_item_separator
|
||||
|
|
@ -989,25 +1008,6 @@
|
|||
function="Inventory.DoToSelected"
|
||||
parameter="apply_settings_parcel" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator
|
||||
layout="topleft"
|
||||
name="Subfolder Separator" />
|
||||
<menu_item_call
|
||||
label="Create folder from selected"
|
||||
layout="topleft"
|
||||
name="New folder from selected">
|
||||
<menu_item_call.on_click
|
||||
function="Inventory.DoToSelected"
|
||||
parameter="new_folder_from_selected" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Ungroup folder items"
|
||||
layout="topleft"
|
||||
name="Ungroup folder items">
|
||||
<menu_item_call.on_click
|
||||
function="Inventory.DoToSelected"
|
||||
parameter="ungroup_folder_items" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator
|
||||
layout="topleft"
|
||||
name="Marketplace Separator" />
|
||||
|
|
|
|||
|
|
@ -2971,6 +2971,16 @@
|
|||
<menu_item_check.on_click
|
||||
function="View.HighlightTransparent" />
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="- include Rigged Transparent"
|
||||
name="Include Transparent Rigged"
|
||||
shortcut="control|alt|shift|T"
|
||||
use_mac_ctrl="true">
|
||||
<menu_item_check.on_check
|
||||
function="View.CheckHighlightTransparentRigged" />
|
||||
<menu_item_check.on_click
|
||||
function="View.HighlightTransparentRigged" />
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Show Mouselook Crosshairs"
|
||||
name="ShowCrosshairs">
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@
|
|||
<columns name="date" label="Date"/>
|
||||
</fs_scroll_list>
|
||||
<button name="remove_btn" label="Supprimer la sélection des éléments blacklistés" height="23" width="320"/>
|
||||
<button name="remove_temp_btn" label="Supprimer temporairement"/>
|
||||
<button name="remove_temp_btn" label="Suppr. temporairement"/>
|
||||
<button name="play_btn" label="Jouer le son" tool_tip="Lecture du son sélectionné ; un seul élément sonore à la fois peut être sélectionné pour la lecture.." width="120" />
|
||||
<button name="stop_btn" label="Ne pas jouer" tool_tip="Arrête la lecture du son en cours." width="120" />
|
||||
<button name="close_btn" label="Fermer"/>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -1,30 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="Map">
|
||||
<floater.string name="ParcelSalePriceMsg">
|
||||
Prix : L$[PRICE] (L$[PRICE_PER_SQM]/m²)
|
||||
</floater.string>
|
||||
<floater.string name="ParcelSaleAreaMsg">
|
||||
Surface : [AREA]m²
|
||||
</floater.string>
|
||||
<floater.string name="ParcelOwnerMsg">
|
||||
Propriétaire : [PARCEL_OWNER]
|
||||
</floater.string>
|
||||
<floater.string name="RegionNameMsg">
|
||||
Région : [REGION_NAME]
|
||||
</floater.string>
|
||||
<floater.string name="ToolTipHintMsg">
|
||||
Double-cliquez pour ouvrir la carte
|
||||
</floater.string>
|
||||
<floater.string name="AltToolTipHintMsg">
|
||||
Double-clicquez pour vous téléporter
|
||||
</floater.string>
|
||||
<floater.string name="mini_map_caption">
|
||||
Mini-carte
|
||||
Mini-carte
|
||||
</floater.string>
|
||||
<text label="N" name="floater_map_north">
|
||||
N
|
||||
N
|
||||
</text>
|
||||
<text label="E" name="floater_map_east">
|
||||
E
|
||||
E
|
||||
</text>
|
||||
<text label="O" name="floater_map_west">
|
||||
O
|
||||
O
|
||||
</text>
|
||||
<text label="S" name="floater_map_south">
|
||||
S
|
||||
S
|
||||
</text>
|
||||
<text label="SE" name="floater_map_southeast">
|
||||
SE
|
||||
SE
|
||||
</text>
|
||||
<text label="NE" name="floater_map_northeast">
|
||||
NE
|
||||
NE
|
||||
</text>
|
||||
<text label="SO" name="floater_map_southwest">
|
||||
SO
|
||||
SO
|
||||
</text>
|
||||
<text label="NO" name="floater_map_northwest">
|
||||
NO
|
||||
NO
|
||||
</text>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -162,6 +162,9 @@
|
|||
<combo_item name="physics_lowest">
|
||||
Le plus faible
|
||||
</combo_item>
|
||||
<combo_item name="physics_bounding_box">
|
||||
Boîte englobante
|
||||
</combo_item>
|
||||
<combo_item name="physics_cube">
|
||||
Cube
|
||||
</combo_item>
|
||||
|
|
@ -317,8 +320,9 @@
|
|||
</text>
|
||||
<line_editor name="suf_physics" tool_tip="Le suffixe utilisé pour identifier le fichier physique sur le disque et les modèles dans un fichier."/>
|
||||
<text name="mesh_preview_ud_preset_label">
|
||||
Physique prédéfini par l'utilisateur :
|
||||
Physique prédéf. par l'utilisateur :
|
||||
</text>
|
||||
<button label="Parcourir..." label_selected="Parcourir..." name="set_user_def_phys"/>
|
||||
<line_editor name="ud_physics" tool_tip="Chemin d'accès complet à une définition de maillage Collada simple à utiliser pour le physique."/>
|
||||
<button label_selected="Parcourir" name="set_user_def_phys"/>
|
||||
<text name="mesh_preview_colors_label">
|
||||
|
|
@ -329,6 +333,7 @@
|
|||
</text>
|
||||
<color_swatch label="Arrière-plan" tool_tip="Couleur d'arrière-plan pour l'uploader" name="mesh_preview_canvas_color"/>
|
||||
<color_swatch label="Arêtes du modèle" tool_tip="Couleur des arêtes du modèle dans l'aperçu de l'uploader" name="mesh_preview_edge_color"/>
|
||||
<color_swatch label="Lumière ambiante" tool_tip="Niveau de lumière ambiante dans la fenêtre d'aperçu (affecte également l'aperçu des animations, etc.)" name="preview_ambient_color"/>
|
||||
<text name="physics_settings_label">
|
||||
Physiques :
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,65 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater name="gui_preview_tool" title="Outil de prévisualisation de XUI">
|
||||
<string name="ExternalEditorNotSet">
|
||||
Sélectionnez un éditeur en définissant la variable d'environnement LL_XUI_EDITOR
|
||||
ou le paramètre ExternalEditor
|
||||
ou en spécifiant son chemin dans le champ "Editor Path".
|
||||
</string>
|
||||
<panel name="main_panel">
|
||||
<text name="select_language_label">
|
||||
Langue principale :
|
||||
</text>
|
||||
<combo_box name="language_select_combo">
|
||||
<combo_box.item label="en" name="item1" value="en"/>
|
||||
</combo_box>
|
||||
<button label="Afficher" label_selected="Afficher" name="display_floater" tool_tip="Afficher le flotteur XUI défini par le fichier XML sélectionné"/>
|
||||
<button label="Masquer" label_selected="Masquer" name="close_displayed_floater" tool_tip="Ferme le flotteur actuellement affiché, s'il existe."/>
|
||||
<button label="Modifier..." label_selected="Modifier..." name="edit_floater" tool_tip="Modifie le flotteur XUI défini par le fichier XML sélectionné (ouvre un éditeur externe). Ouvre la version anglaise si aucune version localisée n'existe."/>
|
||||
<button label="Enregistrer" label_selected="Enregistrer" name="save_floater" tool_tip="Enregistrer le flotteur XUI défini par le fichier XML sélectionné"/>
|
||||
<button label="Tout enregistrer" label_selected="Tout enreg." name="save_all_floaters" tool_tip="Sauvegarder tous les flotteurs XUI définis par la langue sélectionnée"/>
|
||||
<button label="> >" label_selected="< <" name="toggle_overlap_panel" tool_tip="Basculez la mise en évidence et le panneau d'affichage des éléments qui se chevauchent ; cliquez avec le bouton droit de la souris sur un élément pour le sélectionner pour cette fonctionnalité. L'élément sélectionné est marqué par un rectangle rouge."/>
|
||||
<text name="select_language_label_2">
|
||||
Langue secondaire :
|
||||
</text>
|
||||
<combo_box name="language_select_combo_2">
|
||||
<combo_box.item label="en" name="item1" value="en" />
|
||||
</combo_box>
|
||||
<button label="Afficher" name="display_floater_2" tool_tip="Afficher le flotteur XUI défini par le fichier XML sélectionné"/>
|
||||
<button label="Masquer" name="close_displayed_floater_2" tool_tip="Ferme le flotteur actuellement affiché, s'il existe."/>
|
||||
<button label="Exporter le schéma" name="export_schema"/>
|
||||
<button label="Rafraîchir" name="refresh_btn"/>
|
||||
<check_box label="Aff. les rectangles" name="show_rectangles"/>
|
||||
<scroll_list label="Nom" name="name_list">
|
||||
<scroll_list.columns label="Titre" name="title_column"/>
|
||||
<scroll_list.columns label="Fichier" name="file_column"/>
|
||||
<scroll_list.columns label="Nœud de premier niveau" name="top_level_node_column"/>
|
||||
</scroll_list>
|
||||
<panel name="editor_panel">
|
||||
<text name="editor_path_label">
|
||||
Accès à l'éditeur :
|
||||
</text>
|
||||
<line_editor name="executable_path_field" tool_tip="Le chemin complet vers un éditeur (exécutable) pour éditer les fichiers XML des flotteurs (les guillemets ne sont pas nécessaires)."/>
|
||||
<button label="Parcourir..." label_selected="Parcourir..." name="browse_for_executable" tool_tip="Browse for an editor (executable) to edit floater XML files"/>
|
||||
<text name="executable_args_label">
|
||||
Args de l'éditeur :
|
||||
</text>
|
||||
<line_editor name="executable_args_field" tool_tip="Arguments de la ligne de commande de l'éditeur ; utilisez '%FILE%' pour faire référence au fichier cible ; 'VotreProgramme.exe NomDeFichier.xml' sera exécuté si ce champ est vide."/>
|
||||
</panel>
|
||||
<panel name="vlt_panel">
|
||||
<text name="diff_file_label">
|
||||
Fich. delta :
|
||||
</text>
|
||||
<line_editor name="vlt_diff_path_field" tool_tip="Le chemin d'accès complet à un fichier de différence de localisation XML D0 ou D1 généré par le Viewer Localization Toolkit."/>
|
||||
<button label="Parcourir..." label_selected="Parcourir..." name="browse_for_vlt_diffs" tool_tip="Recherche d'un fichier de différence D0 ou D1 généré par le VLT pour mettre en évidence les fichiers et les éléments modifiés."/>
|
||||
<button label="Mises en évidence des différences" label_selected="Ne pus mettre en évidence les différences" name="toggle_vlt_diff_highlight" tool_tip="Mise en évidence des fichiers et des éléments contenant des données de localisation modifiées."/>
|
||||
</panel>
|
||||
</panel>
|
||||
<scroll_container name="overlap_scroll">
|
||||
<panel name="overlap_dummy_panel">
|
||||
<overlap_panel label="Overlap Panel" name="overlap_panel" tool_tip="Ce panneau affiche l'élément actuellement sélectionné et tous les éléments qui le recouvrent, séparés par des lignes horizontales."/>
|
||||
<text name="overlap_panel_label">
|
||||
Éléments superposés :
|
||||
</text>
|
||||
</panel>
|
||||
</scroll_container>
|
||||
</floater>
|
||||
|
|
@ -96,6 +96,8 @@
|
|||
<menu_item_call label="Nettoyer les liens cassés" name="Cleanup broken Links"/>
|
||||
<menu_item_call label="Déplacer vers le dossier par défaut" name="Move to Default Folder"/>
|
||||
<menu_item_call label="Supprimer le dossier système" name="Delete System Folder"/>
|
||||
<menu_item_call label="Créer un dossier à partir de la sélection" name="New folder from selected"/>
|
||||
<menu_item_call label="Dégrouper les éléments du dossier" name="Ungroup folder items"/>
|
||||
<menu_item_call label="Démarrer le chat conférence" name="Conference Chat Folder"/>
|
||||
<menu_item_call label="Jouer" name="Sound Play"/>
|
||||
<menu_item_call label="Copier la SLurl" name="url_copy"/>
|
||||
|
|
@ -119,8 +121,6 @@
|
|||
<menu_item_call label="Enlever" name="Take Off"/>
|
||||
<menu_item_call label="Appliquer uniquement à moi-même" name="Settings Apply Local"/>
|
||||
<menu_item_call label="Appliquer à la parcelle" name="Settings Apply Parcel"/>
|
||||
<menu_item_call label="Créer un dossier à partir de la sélection" name="New folder from selected"/>
|
||||
<menu_item_call label="Dégrouper les éléments du dossier" name="Ungroup folder items"/>
|
||||
<menu_item_call label="Copier dans les annonces Place du marché" name="Marketplace Copy"/>
|
||||
<menu_item_call label="Déplacer dans les annonces Place du marché" name="Marketplace Move"/>
|
||||
<menu_item_call label="--aucune option--" name="--no options--"/>
|
||||
|
|
|
|||
|
|
@ -40,10 +40,10 @@
|
|||
<menu_item_call label="Suivre" name="Start Tracking"/>
|
||||
<menu_item_call label="Arrêter de suivre" name="Stop Tracking"/>
|
||||
<menu label="Zoom" name="Minimap Zoom">
|
||||
<menu_item_call label="Proche" name="Zoom Close"/>
|
||||
<menu_item_call label="Moyen" name="Zoom Medium"/>
|
||||
<menu_item_call label="Distant" name="Zoom Far"/>
|
||||
<menu_item_call label="Par défaut" name="Zoom Default"/>
|
||||
<menu_item_check label="Trés proche" name="Zoom very close"/>
|
||||
<menu_item_check label="Proche" name="Zoom close"/>
|
||||
<menu_item_check label="Moyen" name="Zoom medium"/>
|
||||
<menu_item_check label="Distant" name="Zoom far"/>
|
||||
</menu>
|
||||
<menu label="Afficher" name="Minimap Show">
|
||||
<menu_item_check label="Objets" name="Objects"/>
|
||||
|
|
|
|||
|
|
@ -290,6 +290,7 @@
|
|||
<menu_item_check label="Masquer les particules" name="Hide Particles"/>
|
||||
<menu_item_check label="Masquer la sélection" name="Hide Selected"/>
|
||||
<menu_item_check label="Mettre la transparence en surbrillance" name="Highlight Transparent"/>
|
||||
<menu_item_check label="- Inclure les transparents riggés" name="Include Transparent Rigged"/>
|
||||
<menu_item_check label="Afficher le réticule de la vue subjective" name="ShowCrosshairs"/>
|
||||
<menu label="Conseils" name="Hover Tips">
|
||||
<menu_item_check label="Afficher les conseils" name="Show Tips"/>
|
||||
|
|
@ -477,6 +478,9 @@
|
|||
<menu_item_check label="Interpolation ping des positions des objets" name="Ping Interpolate Object Positions"/>
|
||||
<menu_item_call label="Abandonner un paquet" name="Drop a Packet"/>
|
||||
</menu>
|
||||
<menu label="Cache" name="Cache">
|
||||
<menu_item_call label="Purger le cache du disque" name="Purge Disk Cache"/>
|
||||
</menu>
|
||||
<menu_item_call label="Dump caméra scriptée" name="Dump Scripted Camera"/>
|
||||
<menu label="Enregistreur" name="Recorder">
|
||||
<menu_item_call label="Commencer la lecture" name="Start Playback"/>
|
||||
|
|
|
|||
|
|
@ -16,5 +16,5 @@
|
|||
<slider name="volume_slider" tool_tip="Volume de la voix"/>
|
||||
<button name="info_btn" tool_tip="Plus d'informations"/>
|
||||
<button name="profile_btn" tool_tip="Voir le profil"/>
|
||||
<output_monitor name="speaking_indicator" tool_tip="Indique que l'avatar est à portée de voix ainsi que son volume sonore s'il parle"/>
|
||||
<output_monitor name="speaking_indicator" tool_tip="Volume de la voix"/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
<combo_box.item label="Toutes catégories" name="any"/>
|
||||
<combo_box.item label="Discussions" name="discussion"/>
|
||||
<combo_box.item label="Sports" name="sports"/>
|
||||
<combo_box.item label="DJ en direct" name="dj" />
|
||||
<combo_box.item label="Musique" name="music"/>
|
||||
<combo_box.item label="Commercial" name="commercial"/>
|
||||
<combo_box.item label="Clubbing/Divertissement" name="nightlife"/>
|
||||
|
|
|
|||
|
|
@ -6306,12 +6306,6 @@ Essayez avec le chemin d'accès à l'éditeur entre guillemets doubles
|
|||
<string name="UnknownPosition">
|
||||
(position inconnue)
|
||||
</string>
|
||||
<string name="NetMapDoubleClickShowWorldMapToolTipMsg">
|
||||
[AGENT][REGION](Double clic pour ouvrir la carte, Maj-glisser pour vous déplacer)
|
||||
</string>
|
||||
<string name="NetMapDoubleClickTeleportToolTipMsg">
|
||||
[REGION](Double clic pour vous téléporter, Maj-glisser pour vous déplacer)
|
||||
</string>
|
||||
<string name="Collision_Bump">
|
||||
[NAME] vous avez été heurté.
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="Map">
|
||||
<floater.string name="ParcelSalePriceMsg">
|
||||
Cena: [PRICE]L$ ([PRICE_PER_SQM]L$/m²)
|
||||
</floater.string>
|
||||
<floater.string name="ParcelSaleAreaMsg">
|
||||
Obszar: [AREA]m²
|
||||
</floater.string>
|
||||
<floater.string name="ParcelOwnerMsg">
|
||||
Właściciel: [PARCEL_OWNER]
|
||||
</floater.string>
|
||||
<floater.string name="ToolTipHintMsg">
|
||||
Podwójny klik by otworzyć mapę
|
||||
</floater.string>
|
||||
<floater.string name="AltToolTipHintMsg">
|
||||
Podwójny klik by teleportować
|
||||
</floater.string>
|
||||
<floater.string name="mini_map_caption">
|
||||
Minimapa
|
||||
</floater.string>
|
||||
|
|
|
|||
|
|
@ -131,6 +131,7 @@
|
|||
<combo_item name="physics_cube"> Sześcian </combo_item>
|
||||
<combo_item name="physics_hex"> Heksagon </combo_item>
|
||||
<combo_item name="physics_ud"> Użytkownika </combo_item>
|
||||
<combo_item name="physics_bounding_box"> Bryła brzegowa </combo_item>
|
||||
<combo_item name="load_from_file">Z pliku</combo_item>
|
||||
</combo_box>
|
||||
<button name="physics_browse" label="Przeglądaj"/>
|
||||
|
|
|
|||
|
|
@ -99,6 +99,8 @@
|
|||
<menu_item_call label="Przenieś do domyślnego folderu" name="Move to Default Folder"/>
|
||||
<menu_item_call label="Przenieś do Zagubionych i odnalezionych" name="Move to Lost And Found"/>
|
||||
<menu_item_call label="Usuń folder systemowy" name="Delete System Folder"/>
|
||||
<menu_item_call label="Utwórz folder z wybranych" name="New folder from selected" />
|
||||
<menu_item_call label="Rozgrupuj elementy folderu" name="Ungroup folder items" />
|
||||
<menu_item_call label="Rozpocznij konferencję czatową" name="Conference Chat Folder"/>
|
||||
<menu_item_call label="Odtwarzaj" name="Sound Play"/>
|
||||
<menu_item_call label="Kopiuj SLurl" name="url_copy"/>
|
||||
|
|
@ -125,8 +127,6 @@
|
|||
<menu_item_call label="Zdejmij" name="Take Off"/>
|
||||
<menu_item_call name="Settings Apply Local" label="Stosuj tylko dla mnie" />
|
||||
<menu_item_call name="Settings Apply Parcel" label="Stosuj dla działki" />
|
||||
<menu_item_call label="Utwórz folder z wybranych" name="New folder from selected" />
|
||||
<menu_item_call label="Rozgrupuj elementy folderu" name="Ungroup folder items" />
|
||||
<menu_item_call label="Kopiuj do rzeczy Marketplace" name="Marketplace Copy"/>
|
||||
<menu_item_call label="Przenieś do rzeczy Marketplace" name="Marketplace Move"/>
|
||||
<menu_item_call label="--brak opcji--" name="--no options--"/>
|
||||
|
|
|
|||
|
|
@ -40,10 +40,10 @@
|
|||
<menu_item_call label="Zacznij śledzić" name="Start Tracking"/>
|
||||
<menu_item_call label="Przestań śledzić" name="Stop Tracking"/>
|
||||
<menu label="Powiększenie" name="Minimap Zoom">
|
||||
<menu_item_call label="Duże" name="Zoom Close"/>
|
||||
<menu_item_call label="Średnie" name="Zoom Medium"/>
|
||||
<menu_item_call label="Małe" name="Zoom Far"/>
|
||||
<menu_item_call label="Domyślne" name="Zoom Default"/>
|
||||
<menu_item_check label="Bardzo duże" name="Zoom very close" />
|
||||
<menu_item_check label="Duże" name="Zoom close"/>
|
||||
<menu_item_check label="Średnie (domyślne)" name="Zoom medium"/>
|
||||
<menu_item_check label="Małe" name="Zoom far"/>
|
||||
</menu>
|
||||
<menu label="Pokaż" name="Minimap Show">
|
||||
<menu_item_check label="Obiekty" name="Objects"/>
|
||||
|
|
@ -55,14 +55,17 @@
|
|||
<menu_item_check label="Tekstury terenu" name="Terrain Textures"/>
|
||||
<menu_item_check label="Tekstury mapy świata" name="World Map Textures"/>
|
||||
</menu>
|
||||
<menu_item_check label="Obracaj mapę" name="Rotate Map"/>
|
||||
<menu_item_check label="Autocentrowanie" name="Auto Center"/>
|
||||
<menu_item_check label="Północ na górze" name="North at top" />
|
||||
<menu_item_check label="Kamera na górze" name="Camera at top" />
|
||||
<menu_item_check label="Autocentrowanie mapy" name="Auto-center map" />
|
||||
<menu_item_call label="Centruj mapę" name="Re-center map" />
|
||||
<menu label="Pierścienie zasięgu czatu" name="Chat Distance Rings Menu">
|
||||
<menu_item_check label="Pokaż pierścienie zasięgu" name="Chat Distance Rings" />
|
||||
<menu_item_check label="Pierścień zasięgu szeptu" name="Whisper Distance Ring" />
|
||||
<menu_item_check label="Pierścień zasięgu czatu" name="Chat Distance Ring" />
|
||||
<menu_item_check label="Pierścień zasięgu krzyku" name="Shout Distance Ring" />
|
||||
</menu>
|
||||
<menu_item_call label="Profil miejsca" name="Place Profile"/>
|
||||
<menu_item_call label="Mapa świata" name="World Map"/>
|
||||
<menu_item_call label="O działce" name="About Land" />
|
||||
<menu_item_call label="Profil miejsca" name="Place Profile" />
|
||||
<menu_item_call label="Mapa świata" name="World Map" />
|
||||
</menu>
|
||||
|
|
|
|||
|
|
@ -337,6 +337,7 @@
|
|||
<menu_item_check label="Ukryj cząsteczki" name="Hide Particles"/>
|
||||
<menu_item_check label="Ukryj zaznaczone" name="Hide Selected"/>
|
||||
<menu_item_check label="Pokaż przezroczyste obiekty" name="Highlight Transparent"/>
|
||||
<menu_item_check label="- pokaż riggowaną przezroczystość" name="Include Transparent Rigged" />
|
||||
<menu_item_check label="Pokaż celownik myszki" name="ShowCrosshairs"/>
|
||||
<menu label="Chmurki pomocy" name="Hover Tips">
|
||||
<menu_item_check label="Pokazuj chmurki pomocy" name="Show Tips"/>
|
||||
|
|
@ -522,6 +523,9 @@
|
|||
<menu_item_check label="Pinguj pozycje interpolowanych obiektów" name="Ping Interpolate Object Positions"/>
|
||||
<menu_item_call label="Zagub pakiet" name="Drop a Packet" shortcut=""/>
|
||||
</menu>
|
||||
<menu label="Pamięć podręczna" name="Cache">
|
||||
<menu_item_call label="Wyczyść pamięć podręczną dysku" name="Purge Disk Cache" />
|
||||
</menu>
|
||||
<menu_item_call label="Zrzut oskryptowanej kamery" name="Dump Scripted Camera"/>
|
||||
<menu label="Nagrywanie" name="Recorder">
|
||||
<menu_item_call label="Rozpocznij nagrywanie zdarzeń" name="Start event recording"/>
|
||||
|
|
|
|||
|
|
@ -20,5 +20,5 @@
|
|||
<slider name="volume_slider" tool_tip="Siła głosu"/>
|
||||
<button name="info_btn" tool_tip="Więcej informacji"/>
|
||||
<button name="profile_btn" tool_tip="Zobacz profil"/>
|
||||
<output_monitor name="speaking_indicator" tool_tip="Awatar jest w zasięgu czatu głosowego, siła głosu podczas mówienia"/>
|
||||
<output_monitor name="speaking_indicator" tool_tip="Siła głosu"/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -5747,12 +5747,6 @@ Spróbuj załączyć ścieżkę do edytora w cytowaniu.
|
|||
<string name="UnknownPosition">
|
||||
(nieznana pozycja)
|
||||
</string>
|
||||
<string name="NetMapDoubleClickShowWorldMapToolTipMsg">
|
||||
[AGENT][REGION](Kliknij dwa razy by otworzyć Mapę, przeciągaj z shiftem by zmienić skalę)
|
||||
</string>
|
||||
<string name="NetMapDoubleClickTeleportToolTipMsg">
|
||||
[REGION](Kliknij dwa razy by teleportować, przeciągaj z shiftem by przesunąć)
|
||||
</string>
|
||||
<string name="Collision_Bump">
|
||||
[NAME] zderzył/a się z Tobą.
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -131,6 +131,7 @@
|
|||
<combo_item name="physics_cube">Куб</combo_item>
|
||||
<combo_item name="physics_hex">Шестиугольник</combo_item>
|
||||
<combo_item name="physics_ud">Определенные</combo_item>
|
||||
<combo_item name="physics_bounding_box">Ограничительная рамка</combo_item>
|
||||
<combo_item name="load_from_file">Из файла</combo_item>
|
||||
</combo_box>
|
||||
<button label="Обзор..." name="physics_browse"/>
|
||||
|
|
|
|||
|
|
@ -99,6 +99,8 @@
|
|||
<menu_item_call label="Переместить в папку по умолчанию" name="Move to Default Folder"/>
|
||||
<menu_item_call label="Переместить в 'Потерянное и найденное'" name="Move to Lost And Found"/>
|
||||
<menu_item_call label="Удалить системную папку" name="Delete System Folder"/>
|
||||
<menu_item_call label="Создать папку из выбранных" name="New folder from selected"/>
|
||||
<menu_item_call label="Разгруппировать элементы папки" name="Ungroup folder items"/>
|
||||
<menu_item_call label="Начать конференц чат" name="Conference Chat Folder"/>
|
||||
<menu_item_call label="Проиграть" name="Sound Play"/>
|
||||
<menu_item_call label="Копировать SLurl" name="url_copy"/>
|
||||
|
|
@ -125,8 +127,6 @@
|
|||
<menu_item_call label="Снять" name="Take Off"/>
|
||||
<menu_item_call name="Settings Apply Local" label="Применить только к себе"/>
|
||||
<menu_item_call name="Settings Apply Parcel" label="Применить к Участку"/>
|
||||
<menu_item_call label="Создать папку из выбранных" name="New folder from selected"/>
|
||||
<menu_item_call label="Разгруппировать элементы папки" name="Ungroup folder items"/>
|
||||
<menu_item_call label="Копировать в списки товаров торгового центра" name="Marketplace Copy"/>
|
||||
<menu_item_call label="Переместить в списки товаров торгового центра" name="Marketplace Move"/>
|
||||
<menu_item_call label="--нет опций--" name="--no options--"/>
|
||||
|
|
|
|||
|
|
@ -377,6 +377,7 @@
|
|||
<menu_item_check label="Скрыть частицы" name="Hide Particles"/>
|
||||
<menu_item_check label="Скрыть выбранное" name="Hide Selected"/>
|
||||
<menu_item_check label="Подсветка прозрачного" name="Highlight Transparent"/>
|
||||
<menu_item_check label="- включая ригованное прозрачное" name="Include Transparent Rigged"/>
|
||||
<menu_item_check label="Показывать прицел при виде от первого лица" name="ShowCrosshairs"/>
|
||||
<menu label="Всплывающие подсказки" name="Hover Tips">
|
||||
<menu_item_check label="Показывать Подсказки" name="Show Tips"/>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="Display Name" title="Modifier le nom d'affichage'">
|
||||
<text name="info_text">
|
||||
Le nom que vous avez donné à votre avatar s'appelle le nom d'affichage. Vous pouvez le changer une fois par semaine.
|
||||
</text>
|
||||
<text name="lockout_text" value=" Vous ne pouvez pas changer votre nom d'affichage en : [TIME]." />
|
||||
<text name="set_name_label">
|
||||
Nouveau nom :
|
||||
</text>
|
||||
<text name="name_confirm_label">
|
||||
Confirmer :
|
||||
</text>
|
||||
<button label="Enregistrer" name="save_btn" tool_tip="Enregistrez votre nouveau nom d'affichage"/>
|
||||
<button label="Réinitialiser" name="reset_btn" tool_tip="Faites en sorte que le nom affiché soit le même que le nom du compte de l'utilisateur."/>
|
||||
<button label="Annuler" name="cancel_btn"/>
|
||||
</floater>
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="floater_voice_controls" title="Commutateurs vocaux">
|
||||
<string name="title_nearby">
|
||||
Conversations vocales à proximité
|
||||
</string>
|
||||
<string name="title_group">
|
||||
Conversation vocale de groupe [GROUP]
|
||||
</string>
|
||||
<string name="title_adhoc">
|
||||
Conférence
|
||||
</string>
|
||||
<string name="title_peer_2_peer">
|
||||
Conversation vocale avec [NAME]
|
||||
</string>
|
||||
<string name="no_one_near">
|
||||
Personne à proximité n'a de communications vocales actives
|
||||
</string>
|
||||
<layout_stack name="my_call_stack">
|
||||
<layout_panel name="leave_call_panel">
|
||||
<layout_stack name="voice_effect_and_leave_call_stack">
|
||||
<layout_panel name="leave_call_btn_panel">
|
||||
<button label="Finir conversation" name="leave_call_btn"/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
<slider name="volume_slider" tool_tip="Volume de la voix" />
|
||||
</floater>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<floater name="floater_people" title="Personnes">
|
||||
<panel_container name="main_panel">
|
||||
<panel name="panel_group_info_sidetray" label="Profil du groupe"/>
|
||||
<panel name="panel_block_list_sidetray" label="Résidents et objets bloqués"/>
|
||||
<panel name="panel_group_creation_sidetray" label="Créer un groupe"/>
|
||||
</panel_container>
|
||||
</floater>
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<panel name="block_list_panel">
|
||||
<block_list name="blocked" tool_tip="Liste des personnes bloquées" />
|
||||
<text name="block_limit">
|
||||
Bloqués : [COUNT] ([LIMIT] max.)
|
||||
</text>
|
||||
<layout_stack name="block_list_sidetray_main">
|
||||
<layout_panel name="back_button_container">
|
||||
<button tool_tip="Retour" name="back"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="block_list_blocklaypanels">
|
||||
<layout_stack name="block_list_blocklaystack">
|
||||
<layout_panel name="block_panels_btnsort">
|
||||
<menu_button label="Trier..." name="view_btn" tool_tip="Options de tri" />
|
||||
</layout_panel>
|
||||
<layout_panel name="block_panels_btnpersonobject">
|
||||
<menu_button label="Bloquer..." name="plus_btn" tool_tip="Sélectionnez l'objet ou le résident à bloquer" />
|
||||
</layout_panel>
|
||||
<layout_panel name="block_panels_btnunblock">
|
||||
<button label="Débloquer..." name="unblock_btn" tool_tip="Retirer un résident ou un objet de la liste de blocage" />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</panel>
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<panel name="block_list_panel">
|
||||
<fs_scroll_list name="block_list">
|
||||
<fs_scroll_list.columns name="item_name" label="Nom" />
|
||||
<fs_scroll_list.columns name="item_type" label="Type" />
|
||||
</fs_scroll_list>
|
||||
<text name="block_limit">
|
||||
Bloqués : [COUNT] ([LIMIT] max.)
|
||||
</text>
|
||||
<layout_stack name="block_list_sidetray_main">
|
||||
<layout_panel name="back_button_container">
|
||||
<button tool_tip="Retour" name="back" />
|
||||
</layout_panel>
|
||||
<layout_panel name="block_list_blocklaypanels">
|
||||
<layout_stack name="block_list_blocklaystack">
|
||||
<layout_panel name="block_panels_btnsort">
|
||||
<menu_button label="Trier..." name="view_btn" tool_tip="Options de tri" />
|
||||
</layout_panel>
|
||||
<layout_panel name="block_panels_btnpersonobject">
|
||||
<menu_button label="Bloquer..." name="plus_btn" tool_tip="Sélectionnez le résident ou l'objet à bloquer"/>
|
||||
</layout_panel>
|
||||
<layout_panel name="block_panels_btnunblock">
|
||||
<button label="Débloquer..." name="unblock_btn" tool_tip="Retirer un résident ou un objet de la liste des éléments bloquées" />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</panel>
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<panel name="panel_radar">
|
||||
<string name="TypingColumnIcon" value="radarbox_p"/>
|
||||
<string name="MiniMapToolTipMsg" value="[REGION] (Un double-clic permet d'ouvrir la carte, un glissement avec Maj permet de déplacer la carte.)"/>
|
||||
<string name="AltMiniMapToolTipMsg" value="[REGION] (Un double-clic permet de se téléporter, un glissement avec Maj permet de déplacer la carte.)"/>
|
||||
<string name="avatar_name_count" value="Nom [[TOTAL]/[IN_REGION]/[IN_CHAT_RANGE]]"/>
|
||||
<panel name="nearby_panel">
|
||||
<layout_stack name="radar_ls">
|
||||
<layout_panel name="radarlayout">
|
||||
<radar_list name="radar_list">
|
||||
<radar_list.columns label="Nom" name="name" tool_tip="[TOTAL] avatars, [IN_REGION] dans la même région, [IN_CHAT_RANGE] dans le rayon de discussion"/>
|
||||
<radar_list.columns name="voice_level" tool_tip="Conversations vocales"/>
|
||||
<radar_list.columns name="in_region" tool_tip="Il se trouve dans la même région (vert) ou dans la même parcelle (vert-jaune)."/>
|
||||
<radar_list.columns name="typing_status" tool_tip="Il est en train d'écrire"/>
|
||||
<radar_list.columns name="sitting_status" tool_tip="Il est assis"/>
|
||||
<radar_list.columns name="flags" tool_tip="Statut des informations de paiement"/>
|
||||
<radar_list.columns name="has_notes" tool_tip="L'avatar a des notes"/>
|
||||
<radar_list.columns label="Âge" name="age"/>
|
||||
<radar_list.columns label="Heure" name="seen"/>
|
||||
<radar_list.columns label="Distance" name="range"/>
|
||||
</radar_list>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</panel>
|
||||
</panel>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<panel name="panel_group_notify">
|
||||
<text name="group_notice" value="Notice de groupe" />
|
||||
<text name="title" value="Nom de l'expéditeur / Nom du groupe" />
|
||||
<text name="attachment_label" value="Jointe :" />
|
||||
<panel name="attachment_container">
|
||||
<text name="attachment" value="Pièce jointe" />
|
||||
</panel>
|
||||
<button label="Annonces" name="btn_notices" />
|
||||
<button label="Discussions" name="btn_groupchat" />
|
||||
</panel>
|
||||
|
|
@ -0,0 +1,109 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<panel label="Objets" name="main inventory panel">
|
||||
<panel.string name="ItemcountFetching">
|
||||
Récupération de [ITEM_COUNT] éléments... [FILTER]
|
||||
</panel.string>
|
||||
<panel.string name="ItemcountCompleted">
|
||||
[ITEM_COUNT] éléments [FILTER]
|
||||
</panel.string>
|
||||
<panel.string name="ItemcountUnknown">
|
||||
Récupéré [ITEM_COUNT] éléments [FILTER]
|
||||
</panel.string>
|
||||
<menu_bar name="inventory_menu_bar">
|
||||
<menu label="Inventaire" name="inventory_inventory_menu">
|
||||
<menu_item_call name="inventory_open" label="Ouvrir" />
|
||||
<menu_item_call name="inventory_share" label="Partager" />
|
||||
<menu_item_call name="replace_links" label="Remplacer les liens" />
|
||||
<menu_item_call name="inventory_new_window" label="Nouvelle fenêtre" />
|
||||
<menu_item_check name="Protected Folders" label="Dossiers protégés" />
|
||||
<menu_item_check name="add_inv_toggle" label="Ajouter des objets en double-cliquant" />
|
||||
<menu_item_check name="add_invclothing_toggle" label="Ajouter des vêtements en double-cliquant" />
|
||||
<menu_item_call name="inventory_show_filters" label="Afficher les filtres" />
|
||||
<menu_item_call name="inventory_reset_filters" label="Réinitialiser les filtres" />
|
||||
<menu_item_call name="inventory_close_all_folders" label="Fermer tous les dossiers" />
|
||||
<menu_item_call name="inventory_empty_trash" label="Vider la poubelle" />
|
||||
</menu>
|
||||
<menu label="Créer" name="inventory_create_menu">
|
||||
<menu_item_call name="inventory_new_folder" label="Nouveau dossier" />
|
||||
<menu_item_call name="inventory_new_script" label="Nouveau script" />
|
||||
<menu_item_call name="inventory_new_note" label="Nouvelle notę" />
|
||||
<menu_item_call name="inventory_new_gesture" label="Nouveau geste" />
|
||||
<menu name="inventory_new_clothes" label="Nouveaux vêtements">
|
||||
<menu_item_call name="inventory_new_shirt" label="Nouvelle chemise" />
|
||||
<menu_item_call name="inventory_new_pants" label="Nouveaux pantalons" />
|
||||
<menu_item_call name="inventory_new_shoes" label="Nouvelles chaussures" />
|
||||
<menu_item_call name="inventory_new_socks" label="Nouvelles chaussettes" />
|
||||
<menu_item_call name="inventory_new_jacket" label="Nouvelle veste" />
|
||||
<menu_item_call name="inventory_new_skirt" label="Nouvelle jupe" />
|
||||
<menu_item_call name="inventory_new_gloves" label="Nouveaux gants" />
|
||||
<menu_item_call name="inventory_new_undershirt" label="Nouveau tee-shirt" />
|
||||
<menu_item_call name="inventory_new_underpants" label="Nouveau caleçon" />
|
||||
<menu_item_call name="inventory_new_tattoo" label="Nouveau tatouage" />
|
||||
<menu_item_call name="inventory_new_alpha" label="Nouvelle couche alpha" />
|
||||
<menu_item_call name="inventory_new_universal" label="Nouvelle couche universelle" />
|
||||
<menu_item_call name="inventory_new_physics" label="Nouvelle physique" />
|
||||
</menu>
|
||||
<menu name="inventory_new_body_parts" label="Nouvelles parties du corps">
|
||||
<menu_item_call name="inventory_new_shape" label="Nouvelle silhouette" />
|
||||
<menu_item_call name="inventory_new_skin" label="Nouvelle peau" />
|
||||
<menu_item_call name="inventory_new_hair" label="Nouveaux cheveux" />
|
||||
<menu_item_call name="inventory_new_eyes" label="Nouveaux yeux" />
|
||||
</menu>
|
||||
<menu label="Nouvel environnement" name="New Settings">
|
||||
<menu_item_call label="Nouveau ciel" name="New Sky" />
|
||||
<menu_item_call label="Nouvelle eau" name="New Water" />
|
||||
<menu_item_call label="Nouveau cycle du jour" name="New Day Cycle" />
|
||||
</menu>
|
||||
</menu>
|
||||
<menu label="Tri" name="inventory_sort_menu">
|
||||
<menu_item_check name="inventory_sort_by_name" label="Par nom" />
|
||||
<menu_item_check name="inventory_sort_by_date" label="Par date" />
|
||||
<menu_item_check name="inventory_sort_folders_by_name" label="Les dossiers toujours par nom" />
|
||||
<menu_item_check name="inventory_sort_system_on_top" label="Les dossiers systèmes en haut" />
|
||||
</menu>
|
||||
<menu label="Recherche" name="inventory_search_menu">
|
||||
<menu_item_check name="inventory_search_by_name" label="Par nom" />
|
||||
<menu_item_check name="inventory_search_by_creator" label="Par créateur" />
|
||||
<menu_item_check name="inventory_search_by_description" label="Par description" />
|
||||
<menu_item_check name="inventory_search_by_uuid" label="Par UUID" />
|
||||
<menu_item_check name="inventory_search_by_all" label="Par tous" />
|
||||
<menu_item_check name="inventory_filter_show_links" label="Afficher les liens" />
|
||||
<menu_item_check name="inventory_filter_only_links" label="Afficher seulement les liens" />
|
||||
<menu_item_check name="inventory_filter_hide_links" label="Cacher les liens" />
|
||||
<menu_item_check name="inventory_filter_only_modify" label="Modifiables uniquement" />
|
||||
<menu_item_check name="inventory_filter_only_copy" label="Seulement copiables" />
|
||||
<menu_item_check name="inventory_filter_only_transfer" label="Seulement transférables" />
|
||||
<menu_item_check name="inventory_show_partial_results" label="Afficher les résultats partiels de la recherche" />
|
||||
</menu>
|
||||
</menu_bar>
|
||||
<filter_editor label="Inventaire de filtres" name="inventory search editor" tool_tip="Saisissez un ou plusieurs mots à rechercher, en les séparant par un signe '+' "/>
|
||||
<button name="collapse_btn" label="Fermer"/>
|
||||
<button name="expand_btn" label="Ouvrir" />
|
||||
<text name="filter_label" value="Filtre :"/>
|
||||
<combo_box name="filter_combo_box">
|
||||
<combo_box.item value="filter_type_all" label="Tous les types" />
|
||||
<combo_box.item value="filter_type_animations" label="Animations" />
|
||||
<combo_box.item value="filter_type_calling_cards" label="Cartes de visite" />
|
||||
<combo_box.item value="filter_type_clothing" label="Vêtements/parties du corps" />
|
||||
<combo_box.item value="filter_type_gestures" label="Gestes" />
|
||||
<combo_box.item value="filter_type_landmarks" label="Repères" />
|
||||
<combo_box.item value="filter_type_notecards" label="Notes" />
|
||||
<combo_box.item value="filter_type_objects" label="Objets" />
|
||||
<combo_box.item value="filter_type_scripts" label="Scripts" />
|
||||
<combo_box.item value="filter_type_sounds" label="Sons" />
|
||||
<combo_box.item value="filter_type_textures" label="Textures" />
|
||||
<combo_box.item value="filter_type_snapshots" label="Photos" />
|
||||
<combo_box.item value="filter_type_meshes" label="Meshes" />
|
||||
<combo_box.item value="filter_type_settings" label="Environnements" />
|
||||
<combo_box.item value="filter_type_custom" label="Filtres personnalisés..." />
|
||||
</combo_box>
|
||||
<menu_button tool_tip="Afficher les options d'affichage de la recherche" name="options_visibility_btn" />
|
||||
<tab_container name="inventory filter tabs">
|
||||
<inventory_panel label="Tous" name="All Items"/>
|
||||
<recent_inventory_panel label="Les plus récents" name="Recent Items"/>
|
||||
<worn_inventory_panel label="Portés" name="Worn Items"/>
|
||||
</tab_container>
|
||||
<text name="ItemcountText" tool_tip="[ITEMS] éléments, [CATEGORIES] dossiers">
|
||||
Éléments
|
||||
</text>
|
||||
</panel>
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<panel label="Personnes" name="people_panel">
|
||||
<string name="no_recent_people" value="Aucun appel récent. Vous voulez rencontrer des gens ? Essayez d'utiliser le [secondlife:///app/search/people Moteur de recherche] ou la [secondlife:///app/worldmap Carte du monde]." />
|
||||
<string name="no_filtered_recent_people" value="Vous n'avez pas trouvé ce que vous cherchiez ? Essayez d'utiliser le [secondlife:///app/search/people/[SEARCH_TERM] Moteur de recherche]." />
|
||||
<string name="no_one_near" value="Il n'y a personne autour. Vous voulez rencontrer des gens ? Essayez d'utiliser le [secondlife:///app/search/people Moteur de recherche] ou la [secondlife:///app/worldmap Carte du monde]." />
|
||||
<string name="no_one_filtered_near" value="Vous n'avez pas trouvé ce que vous cherchiez ? Essayez d'utiliser le [secondlife:///app/search/people/[SEARCH_TERM] Moteur de recherche]." />
|
||||
<string name="no_friends_online" value="Aucun ami en ligne" />
|
||||
<string name="no_friends" value="Pas d'amis" />
|
||||
<string name="no_friends_msg">
|
||||
Recherchez des amis avec le [secondlife:///app/search/people Moteur de recherche] ou cliquez avec le bouton droit de la souris sur le résident et proposez-lui de faire connaissance..
|
||||
Vous voulez rencontrer des gens ? Essayez d'utiliser la [secondlife:///app/worldmap Carte du monde].
|
||||
</string>
|
||||
<string name="no_filtered_friends_msg">
|
||||
Vous n'avez pas trouvé ce que vous cherchiez ? Essayez d'utiliser le [secondlife:///app/search/people/[SEARCH_TERM] Moteur de recherche].
|
||||
</string>
|
||||
<string name="people_filter_label" value="Filtrer les personnes" />
|
||||
<string name="groups_filter_label" value="Filtrer les groupes" />
|
||||
<string name="no_filtered_groups_msg" value="Vous n'avez pas trouvé ce que vous cherchiez ? Essayez d'utiliser le [secondlife:///app/search/groups/[SEARCH_TERM] Moteur de recherche]." />
|
||||
<string name="no_groups_msg" value="Vous voulez rejoindre un groupe ? Essayez d'utiliser le [secondlife:///app/search/groups Moteur de recherche]." />
|
||||
<string name="MiniMapToolTipMsg" value="[REGION] (Un double-clic permet d'ouvrir la carte, glisser avec Maj permet de déplacer la carte.)" />
|
||||
<string name="AltMiniMapToolTipMsg" value="[REGION] (Double-clic pour se téléporter, glisser avec Maj permet de déplacer la carte.)" />
|
||||
<string name="GroupCountWithInfo" value="Vous appartenez à [COUNT] et vous pouvez encore rejoindre [REMAINING]. [secondlife:/// En savoir plus?]" />
|
||||
<string name="avatar_name_count" value="Nom [[TOTAL] / [IN_REGION] / [IN_CHAT_RANGE]]" />
|
||||
<panel.string name="empty_list">
|
||||
Cet ensemble de contacts est vide.
|
||||
</panel.string>
|
||||
<panel.string name="no_sets">
|
||||
Pas d'ensembles.
|
||||
</panel.string>
|
||||
<panel.string name="all_sets">
|
||||
Tous les ensembles
|
||||
</panel.string>
|
||||
<panel.string name="pseudonyms">
|
||||
Alias
|
||||
</panel.string>
|
||||
<tab_container name="tabs">
|
||||
<panel label="Proche" name="nearby_panel">
|
||||
<tab_container name="tabcont_radarpeople_main">
|
||||
<panel name="panel_radar" label="Liste" />
|
||||
<panel name="radarmap_options_panel" label="Options">
|
||||
<scroll_container label="Options" name="radarmap_options_scroll_container">
|
||||
<container_view name="radarmap_options_container_view" label="Options">
|
||||
<panel name="radarmap_options_scrolled_panel">
|
||||
<check_box label="Afficher la mini-carte au-dessus du radar" name="ShowRadarMinimap"/>
|
||||
<check_box label="Afficher les avatars bloqués et en liste noire" name="FSRadarShowMutedAndDerendered"/>
|
||||
<check_box label="Signaler une entrée du champ de vision" name="RadarReportDrawRangeEnter"/>
|
||||
<check_box label="Signaler une sortie du champ de vision" name="RadarReportDrawRangeLeaving"/>
|
||||
<check_box label="Signaler les entrées dans le rayon de discussion" name="RadarReportChatRangeEnter"/>
|
||||
<check_box label="Signaler ceux qui sortent du rayon de discussion" name="RadarReportChatRangeLeave"/>
|
||||
<check_box label="Signaler ceux qui rentrent dans votre région" name="RadarReportSimRangeEnter"/>
|
||||
<check_box label="Signaler ceux qui quittent votre région" name="RadarReportSimRangeLeave"/>
|
||||
<check_box label="Signaler les alertes d'entrée aux scripts" name="RadarEnterChannelAlert"/>
|
||||
<check_box label="Signaler les alertes de sorties aux scripts" name="RadarLeaveChannelAlert"/>
|
||||
<check_box label="Améliorer le radar avec LSL Bridge" tool_tip="Si cette option est activée, les fonctions radar responsables de la détermination de la position des avatars à haute altitude sont assistées par le pont LSL-Bridge, en particulier lorsqu'ils se trouvent au-delà de la distance d'affichage'." name="FSRadarEnhanceByBridge"/>
|
||||
<check_box label="Colorez les noms en fonction de la distance" name="FSRadarColorNamesByDistance"/>
|
||||
<check_box label="Distance limite :" tool_tip="Limite les résultats à une distance spécifique" name="LimitRadarByRange" />
|
||||
<text name="radarmap_range_label" value="Format des noms sur le radar :"/>
|
||||
<combo_box name="RadarNameFormat">
|
||||
<combo_box.item name="RadarNameFormat_display" label="Nom d'affichage seulement" />
|
||||
<combo_box.item name="RadarNameFormat_user" label="Nom du compte seulement" />
|
||||
<combo_box.item name="RadarNameFormat_displayuser" label="Nom d'affichage (Nom du compte)" />
|
||||
<combo_box.item name="RadarNameFormat_userdisplay" label="Nom du compte (Nom d'affichage)" />
|
||||
</combo_box>
|
||||
<text name="columns_label" value="Colonnes visibles :" />
|
||||
<check_box label="Conversations vocales" name="column_voice" />
|
||||
<check_box label="Temps" name="column_seen" />
|
||||
<check_box label="Âge" name="column_age" />
|
||||
<check_box label="Dans la même région" name="column_region" />
|
||||
<check_box label="En train d'écrire" name="column_typing_status" />
|
||||
<check_box label="Assis" name="column_sitting_status" />
|
||||
<check_box label="Informations de paiement" name="column_flags" />
|
||||
<check_box label="Notes" name="notes_flags" />
|
||||
</panel>
|
||||
</container_view>
|
||||
</scroll_container>
|
||||
</panel>
|
||||
</tab_container>
|
||||
</panel>
|
||||
<panel label="Récents" name="recent_panel" />
|
||||
<panel label="Bloqués" name="blocked_panel" />
|
||||
</tab_container>
|
||||
</panel>
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<panel name="panel_pick_info">
|
||||
<panel.string name="location_notice">
|
||||
(sera mis à jour après l'enregistrement)
|
||||
</panel.string>
|
||||
<layout_stack name="main_pick_stack">
|
||||
<layout_panel name="main_pick_lp">
|
||||
<line_editor name="pick_location">
|
||||
Chargement...
|
||||
</line_editor>
|
||||
<layout_stack name="actions_stack">
|
||||
<layout_panel name="map_btn_lp">
|
||||
<button name="show_on_map_btn" label="Sur la carte" />
|
||||
</layout_panel>
|
||||
<layout_panel name="tp_btn_lp">
|
||||
<button name="teleport_btn" label="Téléportation" />
|
||||
</layout_panel>
|
||||
<layout_panel name="set_to_curr_location_btn_lp">
|
||||
<button name="set_to_curr_location_btn" label="Définir le lieu" tool_tip="Régler sur l'emplacement actuel" />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</layout_panel>
|
||||
<layout_panel name="save_changes_lp">
|
||||
<layout_stack name="save_changes_stack">
|
||||
<layout_panel name="create_btn_lp">
|
||||
<button name="create_changes_btn" label="Créer" />
|
||||
</layout_panel>
|
||||
<layout_panel name="save_btn_lp">
|
||||
<button name="save_changes_btn" label="Enregistrer" />
|
||||
</layout_panel>
|
||||
<layout_panel name="cancel_btn_lp">
|
||||
<button name="cancel_changes_btn" label="Annuler" />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</panel>
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<panel name="panel_profile" label="Profil">
|
||||
<string name="status_online">
|
||||
En ligne
|
||||
</string>
|
||||
<string name="status_offline">
|
||||
Hors ligne
|
||||
</string>
|
||||
<string name="status_unknown">
|
||||
Inconnu
|
||||
</string>
|
||||
<string name="no_partner_text" value="Aucun" />
|
||||
<string name="no_group_text" value="Aucun" />
|
||||
<string name="age_format">
|
||||
Anniversaire : [REG_DATE]
|
||||
([AGE])
|
||||
</string>
|
||||
<string name="FSDev" value=" Développeur" />
|
||||
<string name="FSSupp" value=" Support" />
|
||||
<string name="FSQualityAssurance" value=" Chasseur de bogues" />
|
||||
<string name="texture_picker_label" value="Photo du profil" />
|
||||
<text name="name_label" value="Nom :" />
|
||||
<button name="set_name" label="Nom :" tool_tip="Définir le nom d'affichage'" />
|
||||
<panel name="name_holder">
|
||||
<text_editor name="complete_name" value="(chargement en cours...)" />
|
||||
<menu_button name="copy_btn" tool_tip="Options de copie" />
|
||||
</panel>
|
||||
<text name="Key:" value="Clé :" />
|
||||
<layout_stack name="imagepositioner">
|
||||
<layout_panel name="image_action_panel">
|
||||
<menu_button name="image_action_btn" tool_tip="Effectue des actions liées à la photo du profil" />
|
||||
</layout_panel>
|
||||
<layout_panel name="label_stack">
|
||||
<icon tool_tip="Mes amis peuvent voir si je suis connecté" name="can_see_online" />
|
||||
<icon tool_tip="Mes amis ne peuvent pas voir si je suis connecté" name="cant_see_online" />
|
||||
<icon tool_tip="Mes amis peuvent me voir sur la carte" name="can_see_on_map" />
|
||||
<icon tool_tip="Mes amis ne peuvent pas me voir sur la carte" name="cant_see_on_map" />
|
||||
<icon tool_tip="Mes amis peuvent modifier mes objets" name="can_edit_objects" />
|
||||
<icon tool_tip="Mes amis ne peuvent pas modifier mes objets" name="cant_edit_objects" />
|
||||
<text_editor name="user_age" value="(chargement en cours...)" />
|
||||
<text name="label2" value="Compte :" />
|
||||
<text name="partner_label" value="Partenaire :"/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
<text name="Groups:" value="Groupes :" />
|
||||
<button name="group_invite" tool_tip="Inviter dans le groupe" />
|
||||
<text name="About:" value="Info :" />
|
||||
<text name="Give item:" value="Donner :" />
|
||||
<text name="Give inventory" tool_tip="Déposez ici des objets pour les donner à cette personne.">
|
||||
Déposez des objets ici.
|
||||
</text>
|
||||
<layout_stack name="buttonstack">
|
||||
<layout_panel name="left_buttonstack">
|
||||
<button name="show_on_map_btn" label="Trouver sur la carte" tool_tip="Trouver un résident sur la carte" label_selected="Trouver sur la carte" />
|
||||
<button name="pay" label="Payer" tool_tip="Payer ce résident" label_selected="Payer" />
|
||||
</layout_panel>
|
||||
<layout_panel name="middle_buttonstack">
|
||||
<button name="teleport" label="Prop. téléportation" tool_tip="Proposer une téléportation au résident" label_selected="Proposer une téléportation" />
|
||||
<button name="im" label="Discussion privée (IM)" tool_tip="Commencer une nouvelle discussion privée (IM)" label_selected="Discussion privée (IM)" />
|
||||
</layout_panel>
|
||||
<layout_panel name="right_buttonstack">
|
||||
<button name="add_friend" label="Ajouter un ami" tool_tip="Proposer son amitié au résident" label_selected="Ajouter un ami" />
|
||||
<button name="remove_friend" label="Interr. amitié" tool_tip="Mettre fin à l'amitié avec le résident" label_selected="Interr. amitié" />
|
||||
<button name="block" label="Bloquer" tool_tip="Bloquer ce résident" />
|
||||
<button name="unblock" label="Débloquer" tool_tip="Débloquer ce résident" />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
<check_box name="show_in_search" label="Afficher dans la recherche" tool_tip="Laissez les autres vous voir dans les résultats de recherche" />
|
||||
<button name="save_description_changes" label="Enregistrer" />
|
||||
<button name="discard_description_changes" label="Annuler" />
|
||||
</panel>
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<toolbar_view name="toolbar view">
|
||||
<layout_stack name="bottom_toolbar_stack">
|
||||
<layout_panel name="bottom_chat_bar_panel">
|
||||
<layout_stack name="chat_bar_utility_bar_stack">
|
||||
<layout_panel name="chat_panel">
|
||||
<layout_stack name="bottom_chat_stack">
|
||||
<layout_panel name="bottom_chat_bar_panel">
|
||||
<button name="local_chat_button" tool_tip="Afficher/masquer la fenêtre de discussion à proximité (CTRL+H)" label="Discussion à proximité" width="92" />
|
||||
<fs_nearby_chat_control name="default_chat_bar" label="Pour une discussion à proximité" />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</layout_panel>
|
||||
<layout_panel name="utility_bar_layout_panel">
|
||||
<panel name="utility_bar_panel">
|
||||
<button name="utility_parcel_audio_stream_button" tool_tip="Lecture/arrêt de la musique en continu sur le terrain" />
|
||||
<button name="utility_parcel_media_button" tool_tip="Lecture/Pause du média de la parcelle" />
|
||||
<slider name="System Volume" tool_tip="Régler le volume" />
|
||||
<button name="mute_audio" tool_tip="Couper le son" />
|
||||
<button name="show_volume_controls_button" tool_tip="Afficher le contrôle du volume" />
|
||||
</panel>
|
||||
</layout_panel>
|
||||
<layout_panel name="voice_chat_controls_layout_panel">
|
||||
<panel name="voice_chat_controls_panel">
|
||||
<button name="show_voice_controls_button" tool_tip="Afficher les appels vocaux à proximité" />
|
||||
<button name="utility_talk_button" tool_tip="Pressez pour parler. Cliquez sur le cadenas pour activer/désactiver la fonction 'presser pour parler'." label="Parler" />
|
||||
<button name="utility_push_to_talk_lock_button" tool_tip="Commute la fonction 'presser pour parler'." />
|
||||
<nearby_voice_monitor name="nearby_voice_output_monitor" tool_tip="Activité actuelle du canal vocal" />
|
||||
</panel>
|
||||
</layout_panel>
|
||||
<layout_panel name="quick_preferences_button_layout_panel">
|
||||
<panel name="quick_preferences_button_panel">
|
||||
<button name="enable_disable_ao_button" tool_tip="Activer/désactiver le gestionnaire d'animations dans le client" />
|
||||
<button name="show_ao_interface_button" tool_tip="Afficher/masquer l'interface du gestionnaire d'animations dans le client" />
|
||||
<button name="show_quick_prefs_button" tool_tip="Paramètres pratiques pour les options fréquemment modifiées" />
|
||||
</panel>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</layout_panel>
|
||||
<layout_panel name="bottom_toolbar_panel">
|
||||
<button name="open_chat_bar_button" tool_tip="Afficher la barre de discussion (Entrée)" />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</toolbar_view>
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<panel label="Objets" name="objects panel">
|
||||
<panel name="sidepanel_inventory_panel">
|
||||
<tab_container name="inventory_tab_container">
|
||||
<panel label="Inventaire" name="panel_main_inventory" />
|
||||
<panel name="marketplace_inbox">
|
||||
<string name="InboxLabelWithArg">
|
||||
Articles reçus ([NUM])
|
||||
</string>
|
||||
<string name="InboxLabelNoArg">
|
||||
Articles reçus
|
||||
</string>
|
||||
<text value="Articles reçus" name="inbox_label" />
|
||||
<text name="inbox_fresh_new_count">
|
||||
[NUM] nouveaux
|
||||
</text>
|
||||
<panel name="inbox_inventory_placeholder_panel" tool_tip="Glissez les objets dans votre inventaire pour les utiliser">
|
||||
<text name="inbox_inventory_placeholder">
|
||||
Les articles achetés sur la place du marché seront livrés ici.
|
||||
</text>
|
||||
</panel>
|
||||
</panel>
|
||||
</tab_container>
|
||||
</panel>
|
||||
</panel>
|
||||
|
|
@ -367,12 +367,10 @@ bool LLFloaterLocalMesh::processPrimCreated(LLViewerObject* object)
|
|||
|
||||
// Select the new object
|
||||
LLSelectMgr::getInstance()->selectObjectAndFamily(object, TRUE);
|
||||
update_selected_target( object->getID() );
|
||||
|
||||
|
||||
// LLUUID local_id{"aee92334-90e9-110b-7c03-0ff3bc19de63"};
|
||||
LLUUID local_id{};
|
||||
|
||||
auto* volp = object->getVolume();
|
||||
if(!volp)
|
||||
{
|
||||
|
|
@ -393,37 +391,42 @@ bool LLFloaterLocalMesh::processPrimCreated(LLViewerObject* object)
|
|||
{
|
||||
return false;
|
||||
}
|
||||
auto scroll_ctrl_selected_item = this->mScrollCtrl->getFirstSelected();
|
||||
if(!scroll_ctrl_selected_item){return true;}; // at this point we have a valid object even if we can't fill it.
|
||||
|
||||
auto scroll_ctrl_selected_column = scroll_ctrl_selected_item->getColumn(LOCAL_TRACKING_ID_COLUMN);
|
||||
if(!scroll_ctrl_selected_column){return true;}; // at this point we have a valid object even if we can't fill it.
|
||||
|
||||
auto objectlist_combo_box = this->getChild<LLComboBox>("object_apply_list");
|
||||
if(!objectlist_combo_box){return true;}; // at this point we have a valid object even if we can't fill it.
|
||||
|
||||
// TODO: replace this with check box. "apply selected"
|
||||
bool apply_local { scroll_ctrl_selected_item && scroll_ctrl_selected_column && objectlist_combo_box };
|
||||
|
||||
if ( apply_local )
|
||||
if(auto floater_ptr = LLLocalMeshSystem::getInstance()->getFloaterPointer())
|
||||
{
|
||||
local_id = scroll_ctrl_selected_column->getValue().asUUID();
|
||||
// fill it up with local goodness
|
||||
static const bool use_scale {true};
|
||||
floater_ptr->update_selected_target( object->getID() );
|
||||
auto scroll_ctrl_selected_item = floater_ptr->mScrollCtrl->getFirstSelected();
|
||||
if(!scroll_ctrl_selected_item){return true;}; // at this point we have a valid object even if we can't fill it.
|
||||
|
||||
// // make sure the selection is still valid, and if so - get id.
|
||||
auto scroll_ctrl_selected_column = scroll_ctrl_selected_item->getColumn(LOCAL_TRACKING_ID_COLUMN);
|
||||
if(!scroll_ctrl_selected_column){return true;}; // at this point we have a valid object even if we can't fill it.
|
||||
|
||||
// get selected local file id, object idx and use_scale boolean
|
||||
int object_idx = objectlist_combo_box->getFirstSelectedIndex();
|
||||
LLLocalMeshSystem::getInstance()->applyVObject(object->getID(), local_id, object_idx, use_scale);
|
||||
volp = object->getVolume();
|
||||
if(!volp)
|
||||
auto objectlist_combo_box = floater_ptr->getChild<LLComboBox>("object_apply_list");
|
||||
if(!objectlist_combo_box){return true;}; // at this point we have a valid object even if we can't fill it.
|
||||
|
||||
// TODO: replace this with check box. "apply selected"
|
||||
bool apply_local { scroll_ctrl_selected_item && scroll_ctrl_selected_column && objectlist_combo_box };
|
||||
|
||||
if ( apply_local )
|
||||
{
|
||||
return true;
|
||||
local_id = scroll_ctrl_selected_column->getValue().asUUID();
|
||||
// fill it up with local goodness
|
||||
static const bool use_scale {true};
|
||||
|
||||
// // make sure the selection is still valid, and if so - get id.
|
||||
|
||||
// get selected local file id, object idx and use_scale boolean
|
||||
int object_idx = objectlist_combo_box->getFirstSelectedIndex();
|
||||
LLLocalMeshSystem::getInstance()->applyVObject(object->getID(), local_id, object_idx, use_scale);
|
||||
volp = object->getVolume();
|
||||
if(!volp)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
volume_params = volp->getParams();
|
||||
object->updateVolume(volume_params);
|
||||
object->markForUpdate(true);
|
||||
}
|
||||
volume_params = volp->getParams();
|
||||
object->updateVolume(volume_params);
|
||||
object->markForUpdate(true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -244,6 +244,7 @@ class LLLocalMeshSystem : public LLSingleton<LLLocalMeshSystem>
|
|||
|
||||
// floater two-way communication
|
||||
void registerFloaterPointer(LLFloaterLocalMesh* floater_ptr);
|
||||
LLFloaterLocalMesh* getFloaterPointer(){return mFloaterPtr;};
|
||||
void triggerFloaterRefresh( bool keep_selection=true );
|
||||
std::vector<LLLocalMeshFile::LLLocalMeshFileInfo> getFileInfoVector() const;
|
||||
std::vector<std::string> getFileLog(LLUUID local_file_id) const;
|
||||
|
|
|
|||
Loading…
Reference in New Issue