Ansariel 2022-11-02 12:54:26 +01:00
commit 10588d606e
65 changed files with 984 additions and 260 deletions

View File

@ -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>

View File

@ -238,6 +238,7 @@ Ansariel Hiller
SL-15226
SL-15227
SL-15398
SL-18432
Aralara Rajal
Arare Chantilly
CHUIBUG-191

View File

@ -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

View File

@ -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);

View File

@ -1 +1 @@
6.6.6
6.6.8

View File

@ -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

View File

@ -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();

View File

@ -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)

View File

@ -66,6 +66,7 @@ public:
bool uploadMatrixPalette(const LLDrawInfo& params);
static BOOL sShowDebugAlpha;
static BOOL sShowDebugAlphaRigged;
private:
LLGLSLShader* target_shader;

View File

@ -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>

View File

@ -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

View File

@ -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;

View File

@ -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()

View File

@ -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?

View File

@ -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)

View File

@ -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));
}

View File

@ -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>
}

View File

@ -275,7 +275,7 @@ public:
return lhs->mAvatarp < rhs->mAvatarp;
}
return lhs->mRenderOrder < rhs->mRenderOrder;
return lhs->mRenderOrder > rhs->mRenderOrder;
}
};

View File

@ -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

View File

@ -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");

View File

@ -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

View File

@ -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;
}

View File

@ -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--"/>

View File

@ -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"/>

View File

@ -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"

View File

@ -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

View File

@ -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"

View File

@ -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" />

View File

@ -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">

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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="&gt; &gt;" label_selected="&lt; &lt;" 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 &apos;%FILE%&apos; pour faire référence au fichier cible ; &apos;VotreProgramme.exe NomDeFichier.xml&apos; 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>

View File

@ -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--"/>

View File

@ -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"/>

View File

@ -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"/>

View File

@ -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>

View File

@ -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"/>

View File

@ -6306,12 +6306,6 @@ Essayez avec le chemin d&apos;accès à l&apos;é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>

View File

@ -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>

View File

@ -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"/>

View File

@ -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--"/>

View File

@ -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>

View File

@ -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"/>

View File

@ -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>

View File

@ -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>

View File

@ -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"/>

View File

@ -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--"/>

View File

@ -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"/>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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;
}

View File

@ -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;