diff options
| author | Jonathan "Geenz" Goodman <geenz@lindenlab.com> | 2026-02-24 17:37:15 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-24 17:37:15 -0600 |
| commit | b601bfdd6220da86b9c757180abc5ba618d9759c (patch) | |
| tree | 483e3be2650b03e85fb621697b5b313ee7324785 | |
| parent | 37dd2c70380165b51a685b7b24829f4d3e15ddd8 (diff) | |
| parent | 6cd2a02c7fbacfd4cf2cf9055e1c282bac3afeb6 (diff) | |
Merge pull request #5452 from secondlife/develop
Develop -> 2026.02
113 files changed, 767 insertions, 4439 deletions
diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp index 613c408157..6f2f7eae61 100644 --- a/indra/llaudio/llaudioengine.cpp +++ b/indra/llaudio/llaudioengine.cpp @@ -225,6 +225,7 @@ void LLAudioEngine::updateChannels() void LLAudioEngine::idle() { + LL_PROFILE_ZONE_SCOPED_CATEGORY_MEDIA; // "Update" all of our audio sources, clean up dead ones. // Primarily does position updating, cleanup of unused audio sources. // Also does regeneration of the current priority of each audio source. diff --git a/indra/llcommon/indra_constants.h b/indra/llcommon/indra_constants.h index a0394da281..404e0c71ce 100644 --- a/indra/llcommon/indra_constants.h +++ b/indra/llcommon/indra_constants.h @@ -163,6 +163,28 @@ constexpr U8 SIM_ACCESS_ADULT = 42; // Seriously Adult Only constexpr U8 SIM_ACCESS_DOWN = 254; constexpr U8 SIM_ACCESS_MAX = SIM_ACCESS_ADULT; +// map item types +constexpr U32 MAP_ITEM_TELEHUB = 0x01; +constexpr U32 MAP_ITEM_PG_EVENT = 0x02; +constexpr U32 MAP_ITEM_MATURE_EVENT = 0x03; +// constexpr U32 MAP_ITEM_POPULAR = 0x04; // No longer supported, 2009-03-02 KLW +// constexpr U32 MAP_ITEM_AGENT_COUNT = 0x05; +constexpr U32 MAP_ITEM_AGENT_LOCATIONS = 0x06; +constexpr U32 MAP_ITEM_LAND_FOR_SALE = 0x07; +constexpr U32 MAP_ITEM_CLASSIFIED = 0x08; +constexpr U32 MAP_ITEM_ADULT_EVENT = 0x09; +constexpr U32 MAP_ITEM_LAND_FOR_SALE_ADULT = 0x0a; + +// Region map layer numbers +constexpr S32 MAP_SIM_OBJECTS = 0; +constexpr S32 MAP_SIM_TERRAIN = 1; +constexpr S32 MAP_SIM_LAND_FOR_SALE = 2; // Transparent alpha overlay of land for sale +constexpr S32 MAP_SIM_IMAGE_TYPES = 3; // Number of map layers +constexpr S32 MAP_SIM_INFO_MASK = 0x00FFFFFF; // Agent access may be stuffed into upper byte +constexpr S32 MAP_SIM_LAYER_MASK = 0x0000FFFF; // Layer info is in lower 16 bits +constexpr S32 MAP_SIM_RETURN_NULL_SIMS = 0x00010000; +constexpr S32 MAP_SIM_PRELUDE = 0x00020000; + // attachment constants constexpr U8 ATTACHMENT_ADD = 0x80; diff --git a/indra/llfilesystem/llfilesystem.cpp b/indra/llfilesystem/llfilesystem.cpp index 541266af4f..728ff396ef 100644 --- a/indra/llfilesystem/llfilesystem.cpp +++ b/indra/llfilesystem/llfilesystem.cpp @@ -77,11 +77,10 @@ bool LLFileSystem::getExists(const LLUUID& file_id, const LLAssetType::EType fil LL_PROFILE_ZONE_SCOPED; const std::string filename = LLDiskCache::metaDataToFilepath(file_id, file_type); - llifstream file(filename, std::ios::binary); - if (file.is_open()) + boost::system::error_code ec; + if (boost::filesystem::exists(filename, ec) && boost::filesystem::is_regular_file(filename, ec)) { - file.seekg(0, std::ios::end); - return file.tellg() > 0; + return boost::filesystem::file_size(filename, ec) > 0; } return false; } @@ -120,15 +119,12 @@ S32 LLFileSystem::getFileSize(const LLUUID& file_id, const LLAssetType::EType fi { const std::string filename = LLDiskCache::metaDataToFilepath(file_id, file_type); - S32 file_size = 0; - llifstream file(filename, std::ios::binary); - if (file.is_open()) + boost::system::error_code ec; + if (boost::filesystem::exists(filename, ec) && boost::filesystem::is_regular_file(filename, ec)) { - file.seekg(0, std::ios::end); - file_size = (S32)file.tellg(); + return static_cast<S32>(boost::filesystem::file_size(filename, ec)); } - - return file_size; + return 0; } bool LLFileSystem::read(U8* buffer, S32 bytes) diff --git a/indra/llmessage/llcorehttputil.cpp b/indra/llmessage/llcorehttputil.cpp index b24e5e4fcc..647064f607 100644 --- a/indra/llmessage/llcorehttputil.cpp +++ b/indra/llmessage/llcorehttputil.cpp @@ -37,6 +37,7 @@ #include "llsdserialize.h" #include "boost/json.hpp" // Boost.Json #include "llfilesystem.h" +#include "workqueue.h" #include "message.h" // for getting the port @@ -295,41 +296,73 @@ void HttpCoroHandler::onCompleted(LLCore::HttpHandle handle, LLCore::HttpRespons } else { - try + constexpr size_t MAX_BODY_SIZE_THRESHOLD = 65536; + bool posted = false; + // Some messsages (ex: AISAPI) can return large bodies. + // If the body is larger than our threshold, post the + // parsing to the general queue to avoid stalling the + // main thread. + if (response->getBodySize() > MAX_BODY_SIZE_THRESHOLD) { - result = this->handleSuccess(response, status); - } - catch (std::bad_alloc&) - { - LLError::LLUserWarningMsg::showOutOfMemory(); - LL_ERRS("CoreHTTP") << "Failed to allocate memory for response handling." << LL_ENDL; - } - } + response->addRef(); - buildStatusEntry(response, status, result); + LL::WorkQueue::ptr_t main_queue = LL::WorkQueue::getInstance("mainloop"); + LL::WorkQueue::ptr_t general_queue = LL::WorkQueue::getInstance("General"); + posted = main_queue->postTo( + general_queue, + [handler = shared_from_this(), response, status]() // Work done on general queue + { + std::pair<LLSD, LLCore::HttpStatus> result; + result.second = status; + try + { + result.first = handler->handleSuccess(response, result.second); + } + catch (std::bad_alloc&) + { + LLError::LLUserWarningMsg::showOutOfMemory(); + LL_ERRS("CoreHTTP") << "Failed to allocate memory for response handling (threaded)." << LL_ENDL; + } + // LLSD is not thread safe! Be carefull with moving the result around. + return result; + }, + [handler = shared_from_this(), response](std::pair<LLSD, LLCore::HttpStatus> result) mutable // Callback to main thread + { + handler->replyPost(response, result.second, result.first); + response->release(); + }); - if (!status) - { - LLSD &httpStatus = result[HttpCoroutineAdapter::HTTP_RESULTS]; + if (posted) + { + // Thread will do the cleanup and notify the pump. Done. + return; + } + else + { + // For whatever reason, failed to post, clean up and + // do the work on the main thread. + response->release(); + } + } - LLCore::BufferArray *body = response->getBody(); - LLCore::BufferArrayStream bas(body); - LLSD::String bodyData; - bodyData.reserve(response->getBodySize()); - bas >> std::noskipws; - bodyData.assign(std::istream_iterator<U8>(bas), std::istream_iterator<U8>()); - httpStatus["error_body"] = LLSD(bodyData); - if (getBoolSetting(HTTP_LOGBODY_KEY)) + if (!posted) { - // commenting out, but keeping since this can be useful for debugging - LL_WARNS("CoreHTTP") << "Returned body=" << std::endl << httpStatus["error_body"].asString() << LL_ENDL; + try + { + result = this->handleSuccess(response, status); + } + catch (std::bad_alloc&) + { + LLError::LLUserWarningMsg::showOutOfMemory(); + LL_ERRS("CoreHTTP") << "Failed to allocate memory for response handling." << LL_ENDL; + } } } - mReplyPump.post(result); + replyPost(response, status, result); } -void HttpCoroHandler::buildStatusEntry(LLCore::HttpResponse *response, LLCore::HttpStatus status, LLSD &result) +void HttpCoroHandler::buildStatusEntry(LLCore::HttpResponse *response, LLCore::HttpStatus status, LLSD &result) const { LLSD httpresults = LLSD::emptyMap(); @@ -357,6 +390,31 @@ void HttpCoroHandler::buildStatusEntry(LLCore::HttpResponse *response, LLCore::H result[HttpCoroutineAdapter::HTTP_RESULTS] = httpresults; } +void HttpCoroHandler::replyPost(LLCore::HttpResponse* response, LLCore::HttpStatus &status, LLSD& result) +{ + buildStatusEntry(response, status, result); + + if (!status) + { + LLSD& httpStatus = result[HttpCoroutineAdapter::HTTP_RESULTS]; + + LLCore::BufferArray* body = response->getBody(); + LLCore::BufferArrayStream bas(body); + LLSD::String bodyData; + bodyData.reserve(response->getBodySize()); + bas >> std::noskipws; + bodyData.assign(std::istream_iterator<U8>(bas), std::istream_iterator<U8>()); + httpStatus["error_body"] = LLSD(bodyData); + if (getBoolSetting(HTTP_LOGBODY_KEY)) + { + // commenting out, but keeping since this can be useful for debugging + LL_WARNS("CoreHTTP") << "Returned body=" << std::endl << httpStatus["error_body"].asString() << LL_ENDL; + } + } + + mReplyPump.post(result); +} + void HttpCoroHandler::writeStatusCodes(LLCore::HttpStatus status, const std::string &url, LLSD &result) { result[HttpCoroutineAdapter::HTTP_RESULTS_SUCCESS] = static_cast<LLSD::Boolean>(status); @@ -389,8 +447,8 @@ public: HttpCoroLLSDHandler(LLEventStream &reply); protected: - virtual LLSD handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status); - virtual LLSD parseBody(LLCore::HttpResponse *response, bool &success); + virtual LLSD handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) const; + virtual LLSD parseBody(LLCore::HttpResponse *response, bool &success) const; }; //------------------------------------------------------------------------- @@ -400,7 +458,7 @@ HttpCoroLLSDHandler::HttpCoroLLSDHandler(LLEventStream &reply): } -LLSD HttpCoroLLSDHandler::handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) +LLSD HttpCoroLLSDHandler::handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) const { LLSD result; @@ -465,7 +523,7 @@ LLSD HttpCoroLLSDHandler::handleSuccess(LLCore::HttpResponse * response, LLCore: return result; } -LLSD HttpCoroLLSDHandler::parseBody(LLCore::HttpResponse *response, bool &success) +LLSD HttpCoroLLSDHandler::parseBody(LLCore::HttpResponse *response, bool &success) const { success = true; if (response->getBodySize() == 0) @@ -496,8 +554,8 @@ class HttpCoroRawHandler : public HttpCoroHandler public: HttpCoroRawHandler(LLEventStream &reply); - virtual LLSD handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status); - virtual LLSD parseBody(LLCore::HttpResponse *response, bool &success); + virtual LLSD handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) const; + virtual LLSD parseBody(LLCore::HttpResponse *response, bool &success) const; }; //------------------------------------------------------------------------- @@ -506,7 +564,7 @@ HttpCoroRawHandler::HttpCoroRawHandler(LLEventStream &reply): { } -LLSD HttpCoroRawHandler::handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) +LLSD HttpCoroRawHandler::handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) const { LLSD result = LLSD::emptyMap(); @@ -552,7 +610,7 @@ LLSD HttpCoroRawHandler::handleSuccess(LLCore::HttpResponse * response, LLCore:: return result; } -LLSD HttpCoroRawHandler::parseBody(LLCore::HttpResponse *response, bool &success) +LLSD HttpCoroRawHandler::parseBody(LLCore::HttpResponse *response, bool &success) const { success = true; return LLSD(); @@ -571,8 +629,8 @@ class HttpCoroJSONHandler : public HttpCoroHandler public: HttpCoroJSONHandler(LLEventStream &reply); - virtual LLSD handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status); - virtual LLSD parseBody(LLCore::HttpResponse *response, bool &success); + virtual LLSD handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) const; + virtual LLSD parseBody(LLCore::HttpResponse *response, bool &success) const; }; //------------------------------------------------------------------------- @@ -581,7 +639,7 @@ HttpCoroJSONHandler::HttpCoroJSONHandler(LLEventStream &reply) : { } -LLSD HttpCoroJSONHandler::handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) +LLSD HttpCoroJSONHandler::handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) const { LLSD result = LLSD::emptyMap(); @@ -607,7 +665,7 @@ LLSD HttpCoroJSONHandler::handleSuccess(LLCore::HttpResponse * response, LLCore: return result; } -LLSD HttpCoroJSONHandler::parseBody(LLCore::HttpResponse *response, bool &success) +LLSD HttpCoroJSONHandler::parseBody(LLCore::HttpResponse *response, bool &success) const { success = true; BufferArray * body(response->getBody()); diff --git a/indra/llmessage/llcorehttputil.h b/indra/llmessage/llcorehttputil.h index 3dbfd6f00d..3072f78911 100644 --- a/indra/llmessage/llcorehttputil.h +++ b/indra/llmessage/llcorehttputil.h @@ -259,7 +259,7 @@ inline LLCore::HttpHandle requestPatchWithLLSD(LLCore::HttpRequest::ptr_t & requ /// +- ["url"] - The URL used to make the call. /// +- ["headers"] - A map of name name value pairs with the HTTP headers. /// -class HttpCoroHandler : public LLCore::HttpHandler +class HttpCoroHandler : public LLCore::HttpHandler, public std::enable_shared_from_this<HttpCoroHandler> { public: @@ -279,11 +279,12 @@ public: protected: /// this method may modify the status value - virtual LLSD handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) = 0; - virtual LLSD parseBody(LLCore::HttpResponse *response, bool &success) = 0; + virtual LLSD handleSuccess(LLCore::HttpResponse * response, LLCore::HttpStatus &status) const = 0; + virtual LLSD parseBody(LLCore::HttpResponse *response, bool &success) const = 0; private: - void buildStatusEntry(LLCore::HttpResponse *response, LLCore::HttpStatus status, LLSD &result); + void buildStatusEntry(LLCore::HttpResponse *response, LLCore::HttpStatus status, LLSD &result) const; + void replyPost(LLCore::HttpResponse* response, LLCore::HttpStatus& status, LLSD& result); LLEventStream &mReplyPump; }; diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index 97ea6f67bd..4a3d32c7ff 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -2189,7 +2189,7 @@ void LLImageGL::calcAlphaChannelOffsetAndStride() void LLImageGL::analyzeAlpha(const void* data_in, U32 w, U32 h) { - if(sSkipAnalyzeAlpha || !mNeedsAlphaAndPickMask) + if(!data_in || sSkipAnalyzeAlpha || !mNeedsAlphaAndPickMask) { return ; } diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 5e0985c79c..48e42d9fc0 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -2202,3 +2202,16 @@ void LLTabContainer::setTabVisibility( LLPanel const *aPanel, bool aVisible ) updateMaxScrollPos(); } + +bool LLTabContainer::getTabVisibility(const LLPanel* panel) const +{ + for (tuple_list_t::const_iterator itr = mTabList.begin(); itr != mTabList.end(); ++itr) + { + LLTabTuple const* pTT = *itr; + if (pTT->mTabPanel == panel) + { + return pTT->mVisible; + } + } + return false; +} diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h index 4ac7e73d25..cbf56dc653 100644 --- a/indra/llui/lltabcontainer.h +++ b/indra/llui/lltabcontainer.h @@ -225,6 +225,7 @@ public: S32 getMaxTabWidth() const { return mMaxTabWidth; } void setTabVisibility( LLPanel const *aPanel, bool ); + bool getTabVisibility(const LLPanel* panel) const; void startDragAndDropDelayTimer() { mDragAndDropDelayTimer.start(); } diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 5a3664405e..5818a900f5 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -197,7 +197,6 @@ set(viewer_SOURCE_FILES llfloateravatartextures.cpp llfloaterbanduration.cpp llfloaterbeacons.cpp - llfloaterbigpreview.cpp llfloaterbuildoptions.cpp llfloaterbulkpermission.cpp llfloaterbulkupload.cpp @@ -280,7 +279,6 @@ set(viewer_SOURCE_FILES llfloaterpay.cpp llfloaterperformance.cpp llfloaterperms.cpp - llfloaterpostprocess.cpp llfloaterprofile.cpp llfloaterpreference.cpp llfloaterpreferencesgraphicsadvanced.cpp @@ -305,7 +303,6 @@ set(viewer_SOURCE_FILES llfloatersidepanelcontainer.cpp llfloaterslapptest.cpp llfloatersnapshot.cpp - llfloatersounddevices.cpp llfloaterspellchecksettings.cpp llfloatertelehub.cpp llfloatertestinspectors.cpp @@ -317,7 +314,6 @@ set(viewer_SOURCE_FILES llfloatertranslationsettings.cpp llfloateruipreview.cpp llfloaterurlentry.cpp - llfloatervoiceeffect.cpp llfloatervoicevolume.cpp llfloaterwebcontent.cpp llfloaterwhitelistentry.cpp @@ -514,7 +510,6 @@ set(viewer_SOURCE_FILES llpanelsnapshotprofile.cpp llpanelteleporthistory.cpp llpaneltiptoast.cpp - llpanelvoiceeffect.cpp llpaneltopinfobar.cpp llpanelpulldown.cpp llpanelvoicedevicesettings.cpp @@ -882,7 +877,6 @@ set(viewer_HEADER_FILES llfloateravatartextures.h llfloaterbanduration.h llfloaterbeacons.h - llfloaterbigpreview.h llfloaterbuildoptions.h llfloaterbulkpermission.h llfloaterbulkupload.h @@ -969,7 +963,6 @@ set(viewer_HEADER_FILES llfloaterpay.h llfloaterperformance.h llfloaterperms.h - llfloaterpostprocess.h llfloaterprofile.h llfloaterpreference.h llfloaterpreferencesgraphicsadvanced.h @@ -994,7 +987,6 @@ set(viewer_HEADER_FILES llfloatersidepanelcontainer.h llfloaterslapptest.h llfloatersnapshot.h - llfloatersounddevices.h llfloaterspellchecksettings.h llfloatertelehub.h llfloatertestinspectors.h @@ -1006,7 +998,6 @@ set(viewer_HEADER_FILES llfloatertranslationsettings.h llfloateruipreview.h llfloaterurlentry.h - llfloatervoiceeffect.h llfloatervoicevolume.h llfloaterwebcontent.h llfloaterwhitelistentry.h @@ -1189,7 +1180,6 @@ set(viewer_HEADER_FILES llpaneltiptoast.h llpanelpulldown.h llpanelvoicedevicesettings.h - llpanelvoiceeffect.h llpaneltopinfobar.h llpanelvolume.h llpanelvolumepulldown.h diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 56178323e2..8caa4786c9 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -489,6 +489,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>RecentJumpThresholdSecs</key> + <map> + <key>Comment</key> + <string>Seconds after a jump input during which finish-anim is suppressed to avoid interrupting rapid successive jumps.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>1.0</real> + </map> <key>AvatarAxisDeadZone0</key> <map> <key>Comment</key> @@ -10668,6 +10679,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>GroupTitlesTagMode</key> + <map> + <key>Comment</key> + <string>Select Group Titles tag mode: 0 - no group tags, 1 - only my group tag, 2 - all group tags</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>2</integer> + </map> <key>ShowAxes</key> <map> <key>Comment</key> @@ -16442,6 +16464,39 @@ <key>Value</key> <integer>0</integer> </map> + <key>InventoryShowRecentTab</key> + <map> + <key>Comment</key> + <string>Show/hide Recent tab in the Inventory floater</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>InventoryShowWornTab</key> + <map> + <key>Comment</key> + <string>Show/hide Worn tab in the Inventory floater</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>InventoryShowFavoritesTab</key> + <map> + <key>Comment</key> + <string>Show/hide Favorites tab in the Inventory floater</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> <key>StatsReportMaxDuration</key> <map> <key>Comment</key> diff --git a/indra/newview/gltf/llgltfloader.cpp b/indra/newview/gltf/llgltfloader.cpp index 5b8e41f0b4..5a94a2c6c6 100644 --- a/indra/newview/gltf/llgltfloader.cpp +++ b/indra/newview/gltf/llgltfloader.cpp @@ -440,7 +440,25 @@ void LLGLTFLoader::processNodeHierarchy(S32 node_idx, std::map<std::string, S32> (LLModel::NO_ERRORS == pModel->getStatus()) && validate_model(pModel)) { - mTransform.setIdentity(); + // Build the scene transform. + // Non-skinned meshes: scene transform carries coord rotation + hierarchy, + // preserving the object's rotation/position/scale for upload. + // Skinned meshes: transform is already baked into vertices, so scene is identity. + if (node.mSkin >= 0) + { + mTransform.setIdentity(); + } + else + { + glm::mat4 hierarchy_transform; + computeCombinedNodeTransform(mGLTFAsset, node_idx, hierarchy_transform); + glm::mat4 combined = coord_system_rotation * hierarchy_transform; + if (mApplyXYRotation) + { + combined = coord_system_rotationxy * combined; + } + mTransform = LLMatrix4(glm::value_ptr(combined)); + } transformation = mTransform; // adjust the transformation to compensate for mesh normalization @@ -684,7 +702,12 @@ std::string LLGLTFLoader::processTexture(std::string& full_path_out, S32 texture // Process embedded textures if (image.mBufferView >= 0) { - return extractTextureToTempFile(texture_index, texture_type); + std::string temp_path = extractTextureToTempFile(texture_index, texture_type); + if (!temp_path.empty()) + { + full_path_out = temp_path; + } + return temp_path; } return ""; @@ -734,23 +757,47 @@ bool LLGLTFLoader::populateModelFromMesh(LLModel* pModel, const std::string& bas S32 skinIdx = nodeno.mSkin; - // Compute final combined transform matrix (hierarchy + coordinate rotation) + // Compute the vertex transform for this mesh. + // Non-skinned meshes: vertices are left untransformed; the node's hierarchy transform + // (rotation, translation, scale) is stored in the scene transform instead, matching + // the DAE loader. This ensures the uploaded object's bounding box and transform + // properties are correct. See: https://github.com/secondlife/viewer/issues/5431 + // Skinned meshes: coord rotation + hierarchy are baked into vertex positions because + // inverse bind matrices and skin weights are already computed in that space. + // TODO: consider aligning skinned meshes with the DAE loader (scene transform instead + // of vertex baking), which would require adjusting inverse bind matrices, bind shape + // matrix, and weight keying to match. S32 node_index = static_cast<S32>(&nodeno - &mGLTFAsset.mNodes[0]); glm::mat4 hierarchy_transform; computeCombinedNodeTransform(mGLTFAsset, node_index, hierarchy_transform); - // Combine transforms: coordinate rotation applied to hierarchy transform - glm::mat4 final_transform = coord_system_rotation * hierarchy_transform; - if (mApplyXYRotation) + glm::mat4 vertex_transform; + if (skinIdx >= 0) { - final_transform = coord_system_rotationxy * final_transform; + // Skinned mesh: bake coord rotation + hierarchy into vertices. + // Inverse bind matrices and skin weights depend on this transform being applied. + vertex_transform = coord_system_rotation * hierarchy_transform; + if (mApplyXYRotation) + { + vertex_transform = coord_system_rotationxy * vertex_transform; + } + } + else + { + // Non-skinned mesh: don't apply any transform to vertices. + // The hierarchy transform will be stored in the scene transform matrix. + vertex_transform = glm::mat4(1.0f); // identity } // Check if we have a negative scale (flipped coordinate system) - bool hasNegativeScale = glm::determinant(final_transform) < 0.0f; + // coord_system_rotation and coord_system_rotationxy are pure rotations (det=1), + // so negative scale depends only on the hierarchy transform. + bool hasNegativeScale = glm::determinant(hierarchy_transform) < 0.0f; + + bool hasVertexTransform = (vertex_transform != glm::mat4(1.0f)); // Pre-compute normal transform matrix (transpose of inverse of upper-left 3x3) - const glm::mat3 normal_transform = glm::transpose(glm::inverse(glm::mat3(final_transform))); + const glm::mat3 normal_transform = glm::transpose(glm::inverse(glm::mat3(vertex_transform))); // Mark unsuported joints with '-1' so that they won't get added into weights // GLTF maps all joints onto all meshes. Gather use count per mesh to cut unused ones. @@ -803,27 +850,45 @@ bool LLGLTFLoader::populateModelFromMesh(LLModel* pModel, const std::string& bas return false; // Skip this primitive } - // Apply the global scale and center offset to all vertices + // Apply vertex transform (if any) to all vertices. + // Skinned meshes: this bakes coord rotation + hierarchy into vertices. + // Non-skinned meshes: vertex_transform is identity (no baking). for (U32 i = 0; i < prim.getVertexCount(); i++) { - // Use pre-computed final_transform - glm::vec4 pos(prim.mPositions[i][0], prim.mPositions[i][1], prim.mPositions[i][2], 1.0f); - glm::vec4 transformed_pos = final_transform * pos; - GLTFVertex vert; - vert.position = glm::vec3(transformed_pos); - if (!prim.mNormals.empty()) + if (hasVertexTransform) { - // Use pre-computed normal_transform - glm::vec3 normal_vec(prim.mNormals[i][0], prim.mNormals[i][1], prim.mNormals[i][2]); - vert.normal = glm::normalize(normal_transform * normal_vec); + glm::vec4 pos(prim.mPositions[i][0], prim.mPositions[i][1], prim.mPositions[i][2], 1.0f); + glm::vec4 transformed_pos = vertex_transform * pos; + vert.position = glm::vec3(transformed_pos); + + if (!prim.mNormals.empty()) + { + glm::vec3 normal_vec(prim.mNormals[i][0], prim.mNormals[i][1], prim.mNormals[i][2]); + vert.normal = glm::normalize(normal_transform * normal_vec); + } + else + { + vert.normal = glm::normalize(normal_transform * glm::vec3(0.0f, 0.0f, 1.0f)); + LL_DEBUGS("GLTF_IMPORT") << "No normals found for primitive, using default normal." << LL_ENDL; + } } else { - // Use default normal (pointing up in model space) - vert.normal = glm::normalize(normal_transform * glm::vec3(0.0f, 0.0f, 1.0f)); - LL_DEBUGS("GLTF_IMPORT") << "No normals found for primitive, using default normal." << LL_ENDL; + // No transform: store raw GLTF positions and normals. + // The scene transform will carry coord rotation + hierarchy. + vert.position = glm::vec3(prim.mPositions[i][0], prim.mPositions[i][1], prim.mPositions[i][2]); + + if (!prim.mNormals.empty()) + { + vert.normal = glm::vec3(prim.mNormals[i][0], prim.mNormals[i][1], prim.mNormals[i][2]); + } + else + { + vert.normal = glm::vec3(0.0f, 0.0f, 1.0f); + LL_DEBUGS("GLTF_IMPORT") << "No normals found for primitive, using default normal." << LL_ENDL; + } } // Flip texture V coordinate diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 60af0cad05..3ab87cac13 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -426,6 +426,7 @@ LLAgent::LLAgent() : mIsDoNotDisturb(false), mControlFlags(0x00000000), + mLastJumpInputTime(0.0), mAutoPilot(false), mAutoPilotFlyOnStop(false), @@ -780,6 +781,10 @@ void LLAgent::moveUp(S32 direction) if (direction > 0) { + if (!getFlying()) + { + mLastJumpInputTime = LLTimer::getTotalSeconds(); + } setControlFlags(AGENT_CONTROL_UP_POS | AGENT_CONTROL_FAST_UP); } else if (direction < 0) @@ -2663,7 +2668,21 @@ void LLAgent::onAnimStop(const LLUUID& id) } else if (id == ANIM_AGENT_PRE_JUMP || id == ANIM_AGENT_LAND || id == ANIM_AGENT_MEDIUM_LAND) { - setControlFlags(AGENT_CONTROL_FINISH_ANIM); + // FIRE-34049/FIRE-34273/https://github.com/secondlife/viewer/issues/4218 + // Avoid forcing AGENT_CONTROL_FINISH_ANIM, which can short-circuit the next pre-jump + // during rapid successive jumps. + // TODO: a more robust fix would require knowing which specific animation finished, + // information that is not currently provided by the simulator. + const bool up_pos = (mControlFlags & AGENT_CONTROL_UP_POS) != 0; + const F64 now = LLTimer::getTotalSeconds(); + const F64 elapsed = now - mLastJumpInputTime; + static LLCachedControl<F32> recent_jump_threshold_secs(gSavedSettings, "RecentJumpThresholdSecs"); + const bool recent_jump = (mLastJumpInputTime > 0.0) && (elapsed < recent_jump_threshold_secs); + + if (!up_pos && !recent_jump) + { + setControlFlags(AGENT_CONTROL_FINISH_ANIM); + } } } diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index 3352890d99..e6d9623957 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -487,6 +487,7 @@ private: S32 mControlsTakenCount[TOTAL_CONTROLS]; S32 mControlsTakenPassedOnCount[TOTAL_CONTROLS]; U32 mControlFlags; // Replacement for the mFooKey's + F64 mLastJumpInputTime; // Time of last jump input (key-down) in seconds from LLTimer::getTotalSeconds() //-------------------------------------------------------------------- // Animations diff --git a/indra/newview/llaisapi.cpp b/indra/newview/llaisapi.cpp index 9c76f56ef3..f67f2688a1 100644 --- a/indra/newview/llaisapi.cpp +++ b/indra/newview/llaisapi.cpp @@ -1019,6 +1019,9 @@ void AISAPI::InvokeAISCommandCoro(LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t ht } //------------------------------------------------------------------------- +U32 AISUpdate::sBatchFrameCount = 0; +LLTimer AISUpdate::sBatchTimer; + AISUpdate::AISUpdate(const LLSD& update, AISAPI::COMMAND_TYPE type, const LLSD& request_body) : mType(type) { @@ -1036,8 +1039,16 @@ AISUpdate::AISUpdate(const LLSD& update, AISAPI::COMMAND_TYPE type, const LLSD& mFetchDepth = request_body["depth"].asInteger(); } - mTimer.setTimerExpirySec(AIS_EXPIRY_SECONDS); - mTimer.start(); + mTaskTimer.setTimerExpirySec(AIS_TASK_EXPIRY_SECONDS); + mTaskTimer.start(); + + U32 current_frame = LLFrameTimer::getFrameCount(); + if (sBatchFrameCount != current_frame) + { + sBatchTimer.setTimerExpirySec(AIS_BATCH_EXPIRY_SECONDS); + sBatchTimer.start(); + sBatchFrameCount = current_frame; + } parseUpdate(update); } @@ -1058,7 +1069,7 @@ void AISUpdate::clearParseResults() void AISUpdate::checkTimeout() { - if (mTimer.hasExpired()) + if (mTaskTimer.hasExpired() || sBatchTimer.hasExpired()) { // If we are taking too long, don't starve other tasks, // yield to mainloop. @@ -1067,7 +1078,16 @@ void AISUpdate::checkTimeout() // a chance, so wait for a frame tick instead. llcoro::suspendUntilNextFrame(); LLCoros::checkStop(); - mTimer.setTimerExpirySec(AIS_EXPIRY_SECONDS); + mTaskTimer.setTimerExpirySec(AIS_TASK_EXPIRY_SECONDS); + + U32 current_frame = LLFrameTimer::getFrameCount(); + if (sBatchFrameCount != current_frame) + { + // To give other tasks a chance batch timer + // has a longer delay. + sBatchTimer.setTimerExpirySec(AIS_BATCH_EXPIRY_SECONDS); + sBatchFrameCount = current_frame; + } } } diff --git a/indra/newview/llaisapi.h b/indra/newview/llaisapi.h index cfc286da2e..1dab0dd1f9 100644 --- a/indra/newview/llaisapi.h +++ b/indra/newview/llaisapi.h @@ -130,9 +130,13 @@ private: void clearParseResults(); void checkTimeout(); - // Fetch can return large packets of data, throttle it to not cause lags - // Todo: make throttle work over all fetch requests isntead of per-request - const F32 AIS_EXPIRY_SECONDS = 0.008f; + // Fetches can return large packets of data, + // throttle them individually to not get stuck + // on a single large task. And throttle sum total + // to not cause lags when multiple large fetches + // returned results. + const F32 AIS_TASK_EXPIRY_SECONDS = 0.008f; + const F32 AIS_BATCH_EXPIRY_SECONDS = 0.010f; typedef std::map<LLUUID,size_t> uuid_int_map_t; uuid_int_map_t mCatDescendentDeltas; @@ -154,7 +158,9 @@ private: uuid_list_t mCategoryIds; bool mFetch; S32 mFetchDepth; - LLTimer mTimer; + LLTimer mTaskTimer; + static LLTimer sBatchTimer; + static U32 sBatchFrameCount; AISAPI::COMMAND_TYPE mType; }; diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 2b318dcf5f..018d4c4bba 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -1486,11 +1486,11 @@ bool LLFace::getGeometryVolume(const LLVolume& volume, // They are used only to display a face selection marker // (white square with a rounded cross at the center) const auto& tt = gltf_mat->mTextureTransform[gltf_info_index]; - r = -tt.mRotation * 2; - ms = tt.mScale[VX]; - mt = tt.mScale[VY]; - os += tt.mOffset[VX] + (ms - 1) / 2; - ot -= tt.mOffset[VY] + (mt - 1) / 2; + LLGLTFMaterial::convertPBRTransformToTexture( + tt.mScale, + tt.mOffset, + tt.mRotation, + ms, mt, os, ot, r); } else { diff --git a/indra/newview/llfloaterbigpreview.cpp b/indra/newview/llfloaterbigpreview.cpp deleted file mode 100644 index ba682494bb..0000000000 --- a/indra/newview/llfloaterbigpreview.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/** -* @file llfloaterbigpreview.cpp -* @brief Display of extended (big) preview for snapshots and SL Share -* @author merov@lindenlab.com -* -* $LicenseInfo:firstyear=2013&license=viewerlgpl$ -* Second Life Viewer Source Code -* Copyright (C) 2013, Linden Research, Inc. -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; -* version 2.1 of the License only. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* -* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA -* $/LicenseInfo$ -*/ - -#include "llviewerprecompiledheaders.h" - -#include "llfloaterbigpreview.h" -#include "llsnapshotlivepreview.h" - -/////////////////////// -//LLFloaterBigPreview// -/////////////////////// - -LLFloaterBigPreview::LLFloaterBigPreview(const LLSD& key) : LLFloater(key), - mPreviewPlaceholder(NULL), - mFloaterOwner(NULL) -{ -} - -LLFloaterBigPreview::~LLFloaterBigPreview() -{ - if (mPreviewHandle.get()) - { - mPreviewHandle.get()->die(); - } -} - -void LLFloaterBigPreview::onCancel() -{ - closeFloater(); -} - -void LLFloaterBigPreview::closeOnFloaterOwnerClosing(LLFloater* floaterp) -{ - if (isFloaterOwner(floaterp)) - { - closeFloater(); - } -} - -bool LLFloaterBigPreview::postBuild() -{ - mPreviewPlaceholder = getChild<LLUICtrl>("big_preview_placeholder"); - return LLFloater::postBuild(); -} - -void LLFloaterBigPreview::draw() -{ - LLFloater::draw(); - - LLSnapshotLivePreview * previewp = static_cast<LLSnapshotLivePreview *>(mPreviewHandle.get()); - - // Display the preview if one is available - if (previewp && previewp->getBigThumbnailImage()) - { - // Get the preview rect - const LLRect& preview_rect = mPreviewPlaceholder->getRect(); - - // Get the preview texture size - S32 thumbnail_w = previewp->getBigThumbnailWidth(); - S32 thumbnail_h = previewp->getBigThumbnailHeight(); - - // Compute the scaling ratio and the size of the final texture in the rect: we want to prevent anisotropic scaling (distorted in x and y) - F32 ratio = llmax((F32)(thumbnail_w)/(F32)(preview_rect.getWidth()), (F32)(thumbnail_h)/(F32)(preview_rect.getHeight())); - thumbnail_w = (S32)((F32)(thumbnail_w)/ratio); - thumbnail_h = (S32)((F32)(thumbnail_h)/ratio); - - // Compute the preview offset within the preview rect: we want to center that preview in the available rect - const S32 local_offset_x = (preview_rect.getWidth() - thumbnail_w) / 2 ; - const S32 local_offset_y = (preview_rect.getHeight() - thumbnail_h) / 2 ; - - // Compute preview offset within the floater rect - S32 offset_x = preview_rect.mLeft + local_offset_x; - S32 offset_y = preview_rect.mBottom + local_offset_y; - - gGL.matrixMode(LLRender::MM_MODELVIEW); - // Apply floater transparency to the texture unless the floater is focused. - F32 alpha = getTransparencyType() == TT_ACTIVE ? 1.0f : getCurrentTransparency(); - LLColor4 color = LLColor4::white; - - // Draw the preview texture - gl_draw_scaled_image(offset_x, offset_y, - thumbnail_w, thumbnail_h, - previewp->getBigThumbnailImage(), color % alpha); - } -} - diff --git a/indra/newview/llfloaterbigpreview.h b/indra/newview/llfloaterbigpreview.h deleted file mode 100644 index 1d5804acf5..0000000000 --- a/indra/newview/llfloaterbigpreview.h +++ /dev/null @@ -1,54 +0,0 @@ -/** -* @file llfloaterbigpreview.h -* @brief Display of extended (big) preview for snapshots -* @author merov@lindenlab.com -* -* $LicenseInfo:firstyear=2013&license=viewerlgpl$ -* Second Life Viewer Source Code -* Copyright (C) 2013, Linden Research, Inc. -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; -* version 2.1 of the License only. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* -* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA -* $/LicenseInfo$ -*/ -#ifndef LL_LLFLOATERBIGPREVIEW_H -#define LL_LLFLOATERBIGPREVIEW_H - -#include "llfloater.h" - -class LLFloaterBigPreview : public LLFloater -{ -public: - LLFloaterBigPreview(const LLSD& key); - ~LLFloaterBigPreview(); - - bool postBuild(); - void draw(); - void onCancel(); - - void setPreview(LLView* previewp) { mPreviewHandle = previewp->getHandle(); } - void setFloaterOwner(LLFloater* floaterp) { mFloaterOwner = floaterp; } - bool isFloaterOwner(LLFloater* floaterp) const { return (mFloaterOwner == floaterp); } - void closeOnFloaterOwnerClosing(LLFloater* floaterp); - -private: - LLHandle<LLView> mPreviewHandle; - LLUICtrl* mPreviewPlaceholder; - LLFloater* mFloaterOwner; -}; - -#endif // LL_LLFLOATERBIGPREVIEW_H - diff --git a/indra/newview/llfloaterimsession.cpp b/indra/newview/llfloaterimsession.cpp index 84a9fad708..6d642638b3 100644 --- a/indra/newview/llfloaterimsession.cpp +++ b/indra/newview/llfloaterimsession.cpp @@ -142,7 +142,7 @@ void LLFloaterIMSession::onClickCloseBtn(bool app_qutting) { if (app_qutting) { - LLFloaterIMSessionTab::onClickCloseBtn(); + LLFloaterIMSessionTab::onClickCloseBtn(app_qutting); return; } diff --git a/indra/newview/llfloaterimsessiontab.cpp b/indra/newview/llfloaterimsessiontab.cpp index 65c13797ac..453161b792 100644 --- a/indra/newview/llfloaterimsessiontab.cpp +++ b/indra/newview/llfloaterimsessiontab.cpp @@ -48,6 +48,7 @@ #include "llfloaterimnearbychat.h" #include "llgroupiconctrl.h" #include "lllayoutstack.h" +#include "llnotificationsutil.h" #include "llpanelemojicomplete.h" #include "lltoolbarview.h" @@ -1417,3 +1418,20 @@ bool LLFloaterIMSessionTab::handleKeyHere(KEY key, MASK mask ) } return handled; } + +void LLFloaterIMSessionTab::onClickCloseBtn(bool app_quitting) +{ + bool is_ad_hoc = (mSession ? mSession->isAdHocSessionType() : false); + if (is_ad_hoc && !app_quitting) + { + LLNotificationsUtil::add("ConfirmLeaveAdhoc", LLSD(), LLSD(), [this](const LLSD& notification, const LLSD& response) + { + if (0 == LLNotificationsUtil::getSelectedOption(notification, response)) + closeFloater(); + }); + } + else + { + closeFloater(); + } +} diff --git a/indra/newview/llfloaterimsessiontab.h b/indra/newview/llfloaterimsessiontab.h index 6d04d622e1..b27ac1b8f9 100644 --- a/indra/newview/llfloaterimsessiontab.h +++ b/indra/newview/llfloaterimsessiontab.h @@ -85,6 +85,8 @@ public: void closeFloater(bool app_quitting = false) override; void deleteAllChildren() override; + virtual void onClickCloseBtn(bool app_quitting = false) override; + // Handle the left hand participant list widgets void addConversationViewParticipant(LLConversationItem* item, bool update_view = true); void removeConversationViewParticipant(const LLUUID& participant_id); diff --git a/indra/newview/llfloaterpostprocess.cpp b/indra/newview/llfloaterpostprocess.cpp deleted file mode 100644 index 616c13cdc7..0000000000 --- a/indra/newview/llfloaterpostprocess.cpp +++ /dev/null @@ -1,229 +0,0 @@ -/** - * @file llfloaterpostprocess.cpp - * @brief LLFloaterPostProcess class definition - * - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llfloaterpostprocess.h" - -#include "llsliderctrl.h" -#include "llcheckboxctrl.h" -#include "llnotificationsutil.h" -#include "lluictrlfactory.h" -#include "llviewerdisplay.h" -#include "llpostprocess.h" -#include "llcombobox.h" -#include "lllineeditor.h" -#include "llviewerwindow.h" - - -LLFloaterPostProcess::LLFloaterPostProcess(const LLSD& key) - : LLFloater(key) -{ -} - -LLFloaterPostProcess::~LLFloaterPostProcess() -{ - - -} -bool LLFloaterPostProcess::postBuild() -{ - /// Color Filter Callbacks - childSetCommitCallback("ColorFilterToggle", &LLFloaterPostProcess::onBoolToggle, (char*)"enable_color_filter"); - //childSetCommitCallback("ColorFilterGamma", &LLFloaterPostProcess::onFloatControlMoved, &(gPostProcess->tweaks.gamma())); - childSetCommitCallback("ColorFilterBrightness", &LLFloaterPostProcess::onFloatControlMoved, (char*)"brightness"); - childSetCommitCallback("ColorFilterSaturation", &LLFloaterPostProcess::onFloatControlMoved, (char*)"saturation"); - childSetCommitCallback("ColorFilterContrast", &LLFloaterPostProcess::onFloatControlMoved, (char*)"contrast"); - - childSetCommitCallback("ColorFilterBaseR", &LLFloaterPostProcess::onColorControlRMoved, (char*)"contrast_base"); - childSetCommitCallback("ColorFilterBaseG", &LLFloaterPostProcess::onColorControlGMoved, (char*)"contrast_base"); - childSetCommitCallback("ColorFilterBaseB", &LLFloaterPostProcess::onColorControlBMoved, (char*)"contrast_base"); - childSetCommitCallback("ColorFilterBaseI", &LLFloaterPostProcess::onColorControlIMoved, (char*)"contrast_base"); - - /// Night Vision Callbacks - childSetCommitCallback("NightVisionToggle", &LLFloaterPostProcess::onBoolToggle, (char*)"enable_night_vision"); - childSetCommitCallback("NightVisionBrightMult", &LLFloaterPostProcess::onFloatControlMoved, (char*)"brightness_multiplier"); - childSetCommitCallback("NightVisionNoiseSize", &LLFloaterPostProcess::onFloatControlMoved, (char*)"noise_size"); - childSetCommitCallback("NightVisionNoiseStrength", &LLFloaterPostProcess::onFloatControlMoved, (char*)"noise_strength"); - - /// Bloom Callbacks - childSetCommitCallback("BloomToggle", &LLFloaterPostProcess::onBoolToggle, (char*)"enable_bloom"); - childSetCommitCallback("BloomExtract", &LLFloaterPostProcess::onFloatControlMoved, (char*)"extract_low"); - childSetCommitCallback("BloomSize", &LLFloaterPostProcess::onFloatControlMoved, (char*)"bloom_width"); - childSetCommitCallback("BloomStrength", &LLFloaterPostProcess::onFloatControlMoved, (char*)"bloom_strength"); - - // Effect loading and saving. - LLComboBox* comboBox = getChild<LLComboBox>("PPEffectsCombo"); - getChild<LLComboBox>("PPLoadEffect")->setCommitCallback(boost::bind(&LLFloaterPostProcess::onLoadEffect, this, comboBox)); - comboBox->setCommitCallback(boost::bind(&LLFloaterPostProcess::onChangeEffectName, this, _1)); - - LLLineEditor* editBox = getChild<LLLineEditor>("PPEffectNameEditor"); - getChild<LLComboBox>("PPSaveEffect")->setCommitCallback(boost::bind(&LLFloaterPostProcess::onSaveEffect, this, editBox)); - - syncMenu(); - return true; -} - -// Bool Toggle -void LLFloaterPostProcess::onBoolToggle(LLUICtrl* ctrl, void* userData) -{ - char const * boolVariableName = (char const *)userData; - - // check the bool - LLCheckBoxCtrl* cbCtrl = static_cast<LLCheckBoxCtrl*>(ctrl); - gPostProcess->tweaks[boolVariableName] = cbCtrl->getValue(); -} - -// Float Moved -void LLFloaterPostProcess::onFloatControlMoved(LLUICtrl* ctrl, void* userData) -{ - char const * floatVariableName = (char const *)userData; - LLSliderCtrl* sldrCtrl = static_cast<LLSliderCtrl*>(ctrl); - gPostProcess->tweaks[floatVariableName] = sldrCtrl->getValue(); -} - -// Color Moved -void LLFloaterPostProcess::onColorControlRMoved(LLUICtrl* ctrl, void* userData) -{ - char const * floatVariableName = (char const *)userData; - LLSliderCtrl* sldrCtrl = static_cast<LLSliderCtrl*>(ctrl); - gPostProcess->tweaks[floatVariableName][0] = sldrCtrl->getValue(); -} - -// Color Moved -void LLFloaterPostProcess::onColorControlGMoved(LLUICtrl* ctrl, void* userData) -{ - char const * floatVariableName = (char const *)userData; - LLSliderCtrl* sldrCtrl = static_cast<LLSliderCtrl*>(ctrl); - gPostProcess->tweaks[floatVariableName][1] = sldrCtrl->getValue(); -} - -// Color Moved -void LLFloaterPostProcess::onColorControlBMoved(LLUICtrl* ctrl, void* userData) -{ - char const * floatVariableName = (char const *)userData; - LLSliderCtrl* sldrCtrl = static_cast<LLSliderCtrl*>(ctrl); - gPostProcess->tweaks[floatVariableName][2] = sldrCtrl->getValue(); -} - -// Color Moved -void LLFloaterPostProcess::onColorControlIMoved(LLUICtrl* ctrl, void* userData) -{ - char const * floatVariableName = (char const *)userData; - LLSliderCtrl* sldrCtrl = static_cast<LLSliderCtrl*>(ctrl); - gPostProcess->tweaks[floatVariableName][3] = sldrCtrl->getValue(); -} - -void LLFloaterPostProcess::onLoadEffect(LLComboBox* comboBox) -{ - LLSD::String effectName(comboBox->getSelectedValue().asString()); - - gPostProcess->setSelectedEffect(effectName); - - syncMenu(); -} - -void LLFloaterPostProcess::onSaveEffect(LLLineEditor* editBox) -{ - std::string effectName(editBox->getValue().asString()); - - if (gPostProcess->mAllEffects.has(effectName)) - { - LLSD payload; - payload["effect_name"] = effectName; - LLNotificationsUtil::add("PPSaveEffectAlert", LLSD(), payload, boost::bind(&LLFloaterPostProcess::saveAlertCallback, this, _1, _2)); - } - else - { - gPostProcess->saveEffect(effectName); - syncMenu(); - } -} - -void LLFloaterPostProcess::onChangeEffectName(LLUICtrl* ctrl) -{ - // get the combo box and name - LLLineEditor* editBox = getChild<LLLineEditor>("PPEffectNameEditor"); - - // set the parameter's new name - editBox->setValue(ctrl->getValue()); -} - -bool LLFloaterPostProcess::saveAlertCallback(const LLSD& notification, const LLSD& response) -{ - S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - - // if they choose save, do it. Otherwise, don't do anything - if (option == 0) - { - gPostProcess->saveEffect(notification["payload"]["effect_name"].asString()); - - syncMenu(); - } - return false; -} - -void LLFloaterPostProcess::syncMenu() -{ - // add the combo boxe contents - LLComboBox* comboBox = getChild<LLComboBox>("PPEffectsCombo"); - - comboBox->removeall(); - - LLSD::map_const_iterator currEffect; - for(currEffect = gPostProcess->mAllEffects.beginMap(); - currEffect != gPostProcess->mAllEffects.endMap(); - ++currEffect) - { - comboBox->add(currEffect->first); - } - - // set the current effect as selected. - comboBox->selectByValue(gPostProcess->getSelectedEffect()); - - /// Sync Color Filter Menu - getChild<LLUICtrl>("ColorFilterToggle")->setValue(gPostProcess->tweaks.useColorFilter()); - //getChild<LLUICtrl>("ColorFilterGamma")->setValue(gPostProcess->tweaks.gamma()); - getChild<LLUICtrl>("ColorFilterBrightness")->setValue(gPostProcess->tweaks.brightness()); - getChild<LLUICtrl>("ColorFilterSaturation")->setValue(gPostProcess->tweaks.saturation()); - getChild<LLUICtrl>("ColorFilterContrast")->setValue(gPostProcess->tweaks.contrast()); - getChild<LLUICtrl>("ColorFilterBaseR")->setValue(gPostProcess->tweaks.contrastBaseR()); - getChild<LLUICtrl>("ColorFilterBaseG")->setValue(gPostProcess->tweaks.contrastBaseG()); - getChild<LLUICtrl>("ColorFilterBaseB")->setValue(gPostProcess->tweaks.contrastBaseB()); - getChild<LLUICtrl>("ColorFilterBaseI")->setValue(gPostProcess->tweaks.contrastBaseIntensity()); - - /// Sync Night Vision Menu - getChild<LLUICtrl>("NightVisionToggle")->setValue(gPostProcess->tweaks.useNightVisionShader()); - getChild<LLUICtrl>("NightVisionBrightMult")->setValue(gPostProcess->tweaks.brightMult()); - getChild<LLUICtrl>("NightVisionNoiseSize")->setValue(gPostProcess->tweaks.noiseSize()); - getChild<LLUICtrl>("NightVisionNoiseStrength")->setValue(gPostProcess->tweaks.noiseStrength()); - - /// Sync Bloom Menu - getChild<LLUICtrl>("BloomToggle")->setValue(LLSD(gPostProcess->tweaks.useBloomShader())); - getChild<LLUICtrl>("BloomExtract")->setValue(gPostProcess->tweaks.extractLow()); - getChild<LLUICtrl>("BloomSize")->setValue(gPostProcess->tweaks.bloomWidth()); - getChild<LLUICtrl>("BloomStrength")->setValue(gPostProcess->tweaks.bloomStrength()); -} diff --git a/indra/newview/llfloaterpostprocess.h b/indra/newview/llfloaterpostprocess.h deleted file mode 100644 index 50b48d8410..0000000000 --- a/indra/newview/llfloaterpostprocess.h +++ /dev/null @@ -1,72 +0,0 @@ -/** - * @file llfloaterpostprocess.h - * @brief LLFloaterPostProcess class definition - * - * $LicenseInfo:firstyear=2007&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLFLOATERPOSTPROCESS_H -#define LL_LLFLOATERPOSTPROCESS_H - -#include "llfloater.h" - -class LLButton; -class LLComboBox; -class LLLineEditor; -class LLSliderCtrl; -class LLTabContainer; -class LLPanelPermissions; -class LLPanelObject; -class LLPanelVolume; -class LLPanelContents; -class LLPanelFace; - -/** - * Menu for adjusting the post process settings of the world - */ -class LLFloaterPostProcess : public LLFloater -{ -public: - - LLFloaterPostProcess(const LLSD& key); - virtual ~LLFloaterPostProcess(); - bool postBuild(); - - /// post process callbacks - static void onBoolToggle(LLUICtrl* ctrl, void* userData); - static void onFloatControlMoved(LLUICtrl* ctrl, void* userData); - static void onColorControlRMoved(LLUICtrl* ctrl, void* userData); - static void onColorControlGMoved(LLUICtrl* ctrl, void* userData); - static void onColorControlBMoved(LLUICtrl* ctrl, void* userData); - static void onColorControlIMoved(LLUICtrl* ctrl, void* userData); - void onLoadEffect(LLComboBox* comboBox); - void onSaveEffect(LLLineEditor* editBox); - void onChangeEffectName(LLUICtrl* ctrl); - - /// prompts a user when overwriting an effect - bool saveAlertCallback(const LLSD& notification, const LLSD& response); - - /// sync up sliders - void syncMenu(); -}; - -#endif diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp index 9b7a4e5134..3c84f5b459 100644 --- a/indra/newview/llfloatersearch.cpp +++ b/indra/newview/llfloatersearch.cpp @@ -123,19 +123,32 @@ void LLFloaterSearch::initiateSearch(const LLSD& tokens) subs["COLLECTION"] = ""; if (subs["TYPE"] == "standard") { + std::string collection_args; if (mCollectionType.find(collection) != mCollectionType.end()) { - subs["COLLECTION"] = "&collection_chosen=" + std::string(collection); + collection_args = "&collection_chosen=" + std::string(collection); } - else + else if (tokens.has("collections") && tokens["collections"].isArray()) + { + const LLSD &sd = tokens["collections"]; + for (LLSD::array_const_iterator it = sd.beginArray(); + it != sd.endArray(); + ++it) + { + if (mCollectionType.find(it->asString()) != mCollectionType.end()) + { + collection_args += "&collection_chosen=" + std::string(*it); + } + } + } + if (collection_args.empty()) { - std::string collection_args(""); for (std::set<std::string>::iterator it = mCollectionType.begin(); it != mCollectionType.end(); ++it) { collection_args += "&collection_chosen=" + std::string(*it); } - subs["COLLECTION"] = collection_args; } + subs["COLLECTION"] = collection_args; } // Default to PG diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index faf7ed0d8c..83d7a92846 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -1043,7 +1043,7 @@ bool LLFloaterSnapshot::postBuild() getChild<LLComboBox>("profile_size_combo")->selectNthItem(0); getChild<LLComboBox>("postcard_size_combo")->selectNthItem(0); getChild<LLComboBox>("texture_size_combo")->selectNthItem(0); - getChild<LLComboBox>("local_size_combo")->selectNthItem(8); + getChild<LLComboBox>("local_size_combo")->selectNthItem(0); getChild<LLComboBox>("local_format_combo")->selectNthItem(0); impl->mPreviewHandle = previewp->getHandle(); diff --git a/indra/newview/llfloatersounddevices.cpp b/indra/newview/llfloatersounddevices.cpp deleted file mode 100644 index f11c5c0ad8..0000000000 --- a/indra/newview/llfloatersounddevices.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/** - * @file llfloatersounddevices.cpp - * @author Leyla Farazha - * @brief Sound Preferences used for minimal skin - * -* $LicenseInfo:firstyear=2011&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ -#include "llviewerprecompiledheaders.h" - -#include "llfloatersounddevices.h" - -#include "lldraghandle.h" - -#include "llpanelvoicedevicesettings.h" - -// Library includes -#include "indra_constants.h" - -// protected -LLFloaterSoundDevices::LLFloaterSoundDevices(const LLSD& key) -: LLTransientDockableFloater(NULL, false, key) -{ - LLTransientFloaterMgr::getInstance()->addControlView(this); - - // force docked state since this floater doesn't save it between recreations - setDocked(true); -} - -LLFloaterSoundDevices::~LLFloaterSoundDevices() -{ - LLTransientFloaterMgr::getInstance()->removeControlView(this); -} - -// virtual -bool LLFloaterSoundDevices::postBuild() -{ - LLTransientDockableFloater::postBuild(); - - updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730) - - LLPanelVoiceDeviceSettings* panel = findChild<LLPanelVoiceDeviceSettings>("device_settings_panel"); - if (panel) - { - panel->setUseTuningMode(false); - getChild<LLUICtrl>("voice_input_device")->setCommitCallback(boost::bind(&LLPanelVoiceDeviceSettings::apply, panel)); - getChild<LLUICtrl>("voice_output_device")->setCommitCallback(boost::bind(&LLPanelVoiceDeviceSettings::apply, panel)); - getChild<LLUICtrl>("mic_volume_slider")->setCommitCallback(boost::bind(&LLPanelVoiceDeviceSettings::apply, panel)); - } - return true; -} - -//virtual -void LLFloaterSoundDevices::setDocked(bool docked, bool pop_on_undock/* = true*/) -{ - LLTransientDockableFloater::setDocked(docked, pop_on_undock); -} - -// virtual -void LLFloaterSoundDevices::setFocus(bool b) -{ - LLTransientDockableFloater::setFocus(b); - - // Force using active floater transparency - // We have to override setFocus() for because selecting an item of the - // combobox causes the floater to lose focus and thus become transparent. - updateTransparency(TT_ACTIVE); -} diff --git a/indra/newview/llfloatersounddevices.h b/indra/newview/llfloatersounddevices.h deleted file mode 100644 index 9b21b62747..0000000000 --- a/indra/newview/llfloatersounddevices.h +++ /dev/null @@ -1,49 +0,0 @@ -/** - * @file llfloatersounddevices.h - * @author Leyla Farazha - * @brief Sound Preferences used for minimal skin - * -* $LicenseInfo:firstyear=2011&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLFLOATERSOUNDDEVICES_H -#define LL_LLFLOATERSOUNDDEVICES_H - -#include "lltransientdockablefloater.h" - -class LLFloaterSoundDevices : public LLTransientDockableFloater -{ -public: - - LOG_CLASS(LLFloaterSoundDevices); - - LLFloaterSoundDevices(const LLSD& key); - ~LLFloaterSoundDevices(); - - bool postBuild() override; - void setDocked(bool docked, bool pop_on_undock = true) override; - void setFocus(bool b) override; -}; - - -#endif //LL_LLFLOATERSOUNDDEVICES_H - diff --git a/indra/newview/llfloatervoiceeffect.cpp b/indra/newview/llfloatervoiceeffect.cpp deleted file mode 100644 index 9f7c9aba87..0000000000 --- a/indra/newview/llfloatervoiceeffect.cpp +++ /dev/null @@ -1,289 +0,0 @@ -/** - * @file llfloatervoiceeffect.cpp - * @author Aimee - * @brief Selection and preview of voice effect. - * - * $LicenseInfo:firstyear=2010&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llfloatervoiceeffect.h" - -#include "llscrolllistctrl.h" -#include "lltrans.h" -#include "llweb.h" - -LLFloaterVoiceEffect::LLFloaterVoiceEffect(const LLSD& key) - : LLFloater(key) -{ - mCommitCallbackRegistrar.add("VoiceEffect.Record", boost::bind(&LLFloaterVoiceEffect::onClickRecord, this)); - mCommitCallbackRegistrar.add("VoiceEffect.Play", boost::bind(&LLFloaterVoiceEffect::onClickPlay, this)); - mCommitCallbackRegistrar.add("VoiceEffect.Stop", boost::bind(&LLFloaterVoiceEffect::onClickStop, this)); -// mCommitCallbackRegistrar.add("VoiceEffect.Activate", boost::bind(&LLFloaterVoiceEffect::onClickActivate, this)); -} - -// virtual -LLFloaterVoiceEffect::~LLFloaterVoiceEffect() -{ - if(LLVoiceClient::instanceExists()) - { - LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface(); - if (effect_interface) - { - effect_interface->removeObserver(this); - } - } -} - -// virtual -bool LLFloaterVoiceEffect::postBuild() -{ - setDefaultBtn("record_btn"); - getChild<LLButton>("record_btn")->setFocus(true); - getChild<LLUICtrl>("voice_morphing_link")->setTextArg("[URL]", LLTrans::getString("voice_morphing_url")); - - mVoiceEffectList = getChild<LLScrollListCtrl>("voice_effect_list"); - if (mVoiceEffectList) - { - mVoiceEffectList->setCommitCallback(boost::bind(&LLFloaterVoiceEffect::onClickPlay, this)); -// mVoiceEffectList->setDoubleClickCallback(boost::bind(&LLFloaterVoiceEffect::onClickActivate, this)); - } - - LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface(); - if (effect_interface) - { - effect_interface->addObserver(this); - - // Disconnect from the current voice channel ready to record a voice sample for previewing - effect_interface->enablePreviewBuffer(true); - } - - refreshEffectList(); - updateControls(); - - return true; -} - -// virtual -void LLFloaterVoiceEffect::onClose(bool app_quitting) -{ - LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface(); - if (effect_interface) - { - effect_interface->enablePreviewBuffer(false); - } -} - -void LLFloaterVoiceEffect::refreshEffectList() -{ - if (!mVoiceEffectList) - { - return; - } - - LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface(); - if (!effect_interface) - { - mVoiceEffectList->setEnabled(false); - return; - } - - LL_DEBUGS("Voice")<< "Rebuilding Voice Morph list."<< LL_ENDL; - - // Preserve selected items and scroll position - S32 scroll_pos = mVoiceEffectList->getScrollPos(); - uuid_vec_t selected_items; - std::vector<LLScrollListItem*> items = mVoiceEffectList->getAllSelected(); - for(std::vector<LLScrollListItem*>::const_iterator it = items.begin(); it != items.end(); it++) - { - selected_items.push_back((*it)->getUUID()); - } - - mVoiceEffectList->deleteAllItems(); - - { - // Add the "No Voice Morph" entry - LLSD element; - - element["id"] = LLUUID::null; - element["columns"][NAME_COLUMN]["column"] = "name"; - element["columns"][NAME_COLUMN]["value"] = getString("no_voice_effect"); - element["columns"][NAME_COLUMN]["font"]["style"] = "BOLD"; - - LLScrollListItem* sl_item = mVoiceEffectList->addElement(element, ADD_BOTTOM); - // *HACK: Copied from llfloatergesture.cpp : ["font"]["style"] does not affect font style :( - if(sl_item) - { - ((LLScrollListText*)sl_item->getColumn(0))->setFontStyle(LLFontGL::BOLD); - } - } - - // Add each Voice Morph template, if there are any (template list includes all usable effects) - const voice_effect_list_t& template_list = effect_interface->getVoiceEffectTemplateList(); - if (!template_list.empty()) - { - for (voice_effect_list_t::const_iterator it = template_list.begin(); it != template_list.end(); ++it) - { - const LLUUID& effect_id = it->second; - - std::string localized_effect = "effect_" + it->first; - std::string effect_name = hasString(localized_effect) ? getString(localized_effect) : it->first; // XML contains localized effects names - - LLSD effect_properties = effect_interface->getVoiceEffectProperties(effect_id); - - // Tag the active effect. - if (effect_id == LLVoiceClient::instance().getVoiceEffectDefault()) - { - effect_name += " " + getString("active_voice_effect"); - } - - // Tag available effects that are new this session - if (effect_properties["is_new"].asBoolean()) - { - effect_name += " " + getString("new_voice_effect"); - } - - LLDate expiry_date = effect_properties["expiry_date"].asDate(); - bool is_template_only = effect_properties["template_only"].asBoolean(); - - std::string font_style = "NORMAL"; - if (!is_template_only) - { - font_style = "BOLD"; - } - - LLSD element; - element["id"] = effect_id; - - element["columns"][NAME_COLUMN]["column"] = "name"; - element["columns"][NAME_COLUMN]["value"] = effect_name; - element["columns"][NAME_COLUMN]["font"]["style"] = font_style; - - element["columns"][1]["column"] = "expires"; - if (!is_template_only) - { - element["columns"][DATE_COLUMN]["value"] = expiry_date; - element["columns"][DATE_COLUMN]["type"] = "date"; - } - else { - element["columns"][DATE_COLUMN]["value"] = getString("unsubscribed_voice_effect"); - } -// element["columns"][DATE_COLUMN]["font"]["style"] = "NORMAL"; - - LLScrollListItem* sl_item = mVoiceEffectList->addElement(element, ADD_BOTTOM); - // *HACK: Copied from llfloatergesture.cpp : ["font"]["style"] does not affect font style :( - if(sl_item) - { - LLFontGL::StyleFlags style = is_template_only ? LLFontGL::NORMAL : LLFontGL::BOLD; - LLScrollListText* slt = dynamic_cast<LLScrollListText*>(sl_item->getColumn(0)); - llassert(slt); - if (slt) - { - slt->setFontStyle(style); - } - } - } - } - - // Re-select items that were selected before, and restore the scroll position - for(uuid_vec_t::iterator it = selected_items.begin(); it != selected_items.end(); it++) - { - mVoiceEffectList->selectByID(*it); - } - mVoiceEffectList->setScrollPos(scroll_pos); - mVoiceEffectList->setEnabled(true); -} - -void LLFloaterVoiceEffect::updateControls() -{ - bool recording = false; - - LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface(); - if (effect_interface) - { - recording = effect_interface->isPreviewRecording(); - } - - getChild<LLButton>("record_btn")->setVisible(!recording); - getChild<LLButton>("record_stop_btn")->setVisible(recording); -} - -// virtual -void LLFloaterVoiceEffect::onVoiceEffectChanged(bool effect_list_updated) -{ - if (effect_list_updated) - { - refreshEffectList(); - } - updateControls(); -} - -void LLFloaterVoiceEffect::onClickRecord() -{ - LL_DEBUGS("Voice") << "Record clicked" << LL_ENDL; - LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface(); - if (effect_interface) - { - effect_interface->recordPreviewBuffer(); - } - updateControls(); -} - -void LLFloaterVoiceEffect::onClickPlay() -{ - LL_DEBUGS("Voice") << "Play clicked" << LL_ENDL; - if (!mVoiceEffectList) - { - return; - } - - const LLUUID& effect_id = mVoiceEffectList->getCurrentID(); - - LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface(); - if (effect_interface) - { - effect_interface->playPreviewBuffer(effect_id); - } - updateControls(); -} - -void LLFloaterVoiceEffect::onClickStop() -{ - LL_DEBUGS("Voice") << "Stop clicked" << LL_ENDL; - LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface(); - if (effect_interface) - { - effect_interface->stopPreviewBuffer(); - } - updateControls(); -} - -//void LLFloaterVoiceEffect::onClickActivate() -//{ -// LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface(); -// if (effect_interface && mVoiceEffectList) -// { -// effect_interface->setVoiceEffect(mVoiceEffectList->getCurrentID()); -// } -//} - diff --git a/indra/newview/llfloatervoiceeffect.h b/indra/newview/llfloatervoiceeffect.h deleted file mode 100644 index 323beb64ae..0000000000 --- a/indra/newview/llfloatervoiceeffect.h +++ /dev/null @@ -1,72 +0,0 @@ -/** - * @file llfloatervoiceeffect.h - * @author Aimee - * @brief Selection and preview of voice effects. - * - * $LicenseInfo:firstyear=2010&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLFLOATERVOICEEFFECT_H -#define LL_LLFLOATERVOICEEFFECT_H - -#include "llfloater.h" -#include "llvoiceclient.h" - -class LLButton; -class LLScrollListCtrl; - -class LLFloaterVoiceEffect - : public LLFloater - , public LLVoiceEffectObserver -{ -public: - LOG_CLASS(LLFloaterVoiceEffect); - - LLFloaterVoiceEffect(const LLSD& key); - virtual ~LLFloaterVoiceEffect(); - - bool postBuild() override; - void onClose(bool app_quitting) override; - -private: - enum ColumnIndex - { - NAME_COLUMN = 0, - DATE_COLUMN = 1, - }; - - void refreshEffectList(); - void updateControls(); - - /// Called by voice effect provider when voice effect list is changed. - virtual void onVoiceEffectChanged(bool effect_list_updated) override; - - void onClickRecord(); - void onClickPlay(); - void onClickStop(); -// void onClickActivate(); - - LLUUID mSelectedID; - LLScrollListCtrl* mVoiceEffectList; -}; - -#endif diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 458ea24d33..7522ea4907 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -2555,7 +2555,7 @@ bool get_is_favorite(const LLUUID& obj_id) return obj && obj->getIsFavorite(); } - return object->getIsFavorite(); + return object && object->getIsFavorite(); } void set_favorite(const LLUUID& obj_id, bool favorite) diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index ed342935ad..20bda5039d 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -3331,6 +3331,8 @@ void LLMeshRepoThread::notifyLoadedMeshes() loaded_queue.swap(mLoadedQ); mLoadedMutex->unlock(); + LL_PROFILE_ZONE_NAMED("notify loaded meshes"); + update_metrics = true; // Process the elements free of the lock @@ -3362,6 +3364,8 @@ void LLMeshRepoThread::notifyLoadedMeshes() unavil_queue.swap(mUnavailableQ); mLoadedMutex->unlock(); + LL_PROFILE_ZONE_NAMED("notify unavail meshes"); + update_metrics = true; // Process the elements free of the lock @@ -3380,6 +3384,7 @@ void LLMeshRepoThread::notifyLoadedMeshes() { if (mLoadedMutex->trylock()) { + LL_PROFILE_ZONE_NAMED("notify misc meshes"); std::deque<LLPointer<LLMeshSkinInfo>> skin_info_q; std::deque<UUIDBasedRequest> skin_info_unavail_q; std::list<LLModel::Decomposition*> decomp_q; diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp index dfead5ee8a..9a0612e9f9 100644 --- a/indra/newview/llnavigationbar.cpp +++ b/indra/newview/llnavigationbar.cpp @@ -712,7 +712,14 @@ void LLNavigationBar::resizeLayoutPanel() } void LLNavigationBar::invokeSearch(std::string search_text) { - LLFloaterReg::showInstance("search", LLSD().with("category", "standard").with("query", LLSD(search_text))); + LLSD key; + key["category"] = "standard"; + key["query"] = search_text; + LLSD collections = LLSD::emptyArray(); + collections.append("destinations"); + collections.append("places"); + key["collections"] = collections; + LLFloaterReg::showInstance("search", key); } void LLNavigationBar::clearHistoryCache() diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp index af472c4259..63ec43458b 100644 --- a/indra/newview/llnetmap.cpp +++ b/indra/newview/llnetmap.cpp @@ -47,6 +47,7 @@ #include "llagent.h" #include "llagentcamera.h" #include "llappviewer.h" // for gDisconnected +#include "llavataractions.h" #include "llcallingcard.h" // LLAvatarTracker #include "llfloaterland.h" #include "llfloaterworldmap.h" @@ -397,20 +398,41 @@ void LLNetMap::draw() LLWorld::getInstance()->getAvatars(&avatar_ids, &positions, gAgentCamera.getCameraPositionGlobal()); - // Draw avatars + std::vector<std::pair<U32, bool>> indexed_avatars; + indexed_avatars.reserve(avatar_ids.size()); for (U32 i = 0; i < avatar_ids.size(); i++) { - LLUUID uuid = avatar_ids[i]; + indexed_avatars.emplace_back(i, LLAvatarActions::isFriend(avatar_ids[i])); + } + + // Sort avatars so non-friends are drawn first and friend dots will appear on top + std::sort(indexed_avatars.begin(), indexed_avatars.end(), + [](const auto& a, const auto& b) { return a.second < b.second; }); + + uuid_vec_t sorted_avatar_ids; + std::vector<LLVector3d> sorted_positions; + sorted_avatar_ids.reserve(avatar_ids.size()); + sorted_positions.reserve(positions.size()); + + // Reorder avatar_ids and positions based on sorted indices + for (const auto& indexed_avatar : indexed_avatars) + { + sorted_avatar_ids.push_back(avatar_ids[indexed_avatar.first]); + sorted_positions.push_back(positions[indexed_avatar.first]); + } + + // Draw avatars + for (U32 i = 0; i < sorted_avatar_ids.size(); i++) + { + LLUUID uuid = sorted_avatar_ids[i]; // Skip self, we'll draw it later if (uuid == gAgent.getID()) continue; - pos_map = globalPosToView(positions[i]); - - bool show_as_friend = (LLAvatarTracker::instance().getBuddyInfo(uuid) != NULL); + pos_map = globalPosToView(sorted_positions[i]); - LLColor4 color = show_as_friend ? map_avatar_friend_color : map_avatar_color; + LLColor4 color = LLAvatarActions::isFriend(uuid) ? map_avatar_friend_color : map_avatar_color; - unknown_relative_z = positions[i].mdV[VZ] >= COARSEUPDATE_MAX_Z && + unknown_relative_z = sorted_positions[i].mdV[VZ] >= COARSEUPDATE_MAX_Z && camera_position.mV[VZ] >= COARSEUPDATE_MAX_Z; LLWorldMapView::drawAvatar( diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index ad7aa57842..04eebcefc1 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -216,14 +216,14 @@ bool LLPanelMainInventory::postBuild() mWornItemsPanel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, mWornItemsPanel, _1, _2)); } - LLInventoryPanel* favorites_panel = getChild<LLInventoryPanel>(FAVORITES); - if (favorites_panel) + mFavoritesPanel = getChild<LLInventoryPanel>(FAVORITES); + if (mFavoritesPanel) { - favorites_panel->setSortOrder(gSavedSettings.getU32(LLInventoryPanel::DEFAULT_SORT_ORDER)); - LLInventoryFilter& favorites_filter = favorites_panel->getFilter(); + mFavoritesPanel->setSortOrder(gSavedSettings.getU32(LLInventoryPanel::DEFAULT_SORT_ORDER)); + LLInventoryFilter& favorites_filter = mFavoritesPanel->getFilter(); favorites_filter.setEmptyLookupMessage("InventoryNoMatchingFavorites"); favorites_filter.markDefault(); - favorites_panel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, favorites_panel, _1, _2)); + mFavoritesPanel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, mFavoritesPanel, _1, _2)); } mSearchTypeCombo = getChild<LLComboBox>("search_type"); @@ -319,6 +319,10 @@ bool LLPanelMainInventory::postBuild() menu->getChild<LLMenuItemGL>("Upload Animation")->setLabelArg("[COST]", animation_upload_cost_str); } + mFilterTabs->setTabVisibility(mRecentPanel, gSavedSettings.getBOOL("InventoryShowRecentTab")); + mFilterTabs->setTabVisibility(mWornItemsPanel, gSavedSettings.getBOOL("InventoryShowWornTab")); + mFilterTabs->setTabVisibility(mFavoritesPanel, gSavedSettings.getBOOL("InventoryShowFavoritesTab")); + // Trigger callback for focus received so we can deselect items in inbox/outbox LLFocusableElement::setFocusReceivedCallback(boost::bind(&LLPanelMainInventory::onFocusReceived, this)); @@ -1613,8 +1617,10 @@ void LLPanelMainInventory::initSingleFolderRoot(const LLUUID& start_folder_id) void LLPanelMainInventory::initInventoryViews() { mAllItemsPanel->initializeViewBuilding(); - mRecentPanel->initializeViewBuilding(); - mWornItemsPanel->initializeViewBuilding(); + if (gSavedSettings.getBOOL("InventoryShowRecentTab")) + mRecentPanel->initializeViewBuilding(); + if (gSavedSettings.getBOOL("InventoryShowWornTab")) + mWornItemsPanel->initializeViewBuilding(); } void LLPanelMainInventory::toggleViewMode() @@ -2056,6 +2062,27 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata) { setViewMode(MODE_COMBINATION); } + + if (command_name == "toggle_recent_tab") + { + bool visibility = !gSavedSettings.getBOOL("InventoryShowRecentTab"); + gSavedSettings.setBOOL("InventoryShowRecentTab", visibility); + mFilterTabs->setTabVisibility(mRecentPanel, visibility); + mRecentPanel->initializeViewBuilding(); + } + if (command_name == "toggle_worn_tab") + { + bool visibility = !gSavedSettings.getBOOL("InventoryShowWornTab"); + gSavedSettings.setBOOL("InventoryShowWornTab", visibility); + mFilterTabs->setTabVisibility(mWornItemsPanel, visibility); + mWornItemsPanel->initializeViewBuilding(); + } + if (command_name == "toggle_favorites_tab") + { + bool visibility = !gSavedSettings.getBOOL("InventoryShowFavoritesTab"); + gSavedSettings.setBOOL("InventoryShowFavoritesTab", visibility); + mFilterTabs->setTabVisibility(mFavoritesPanel, visibility); + } } void LLPanelMainInventory::onVisibilityChange( bool new_visibility ) @@ -2283,6 +2310,19 @@ bool LLPanelMainInventory::isActionChecked(const LLSD& userdata) return isCombinationViewMode(); } + if (command_name == "recent_tab") + { + return mFilterTabs->getTabVisibility(mRecentPanel); + } + if (command_name == "worn_tab") + { + return mFilterTabs->getTabVisibility(mWornItemsPanel); + } + if (command_name == "favorites_tab") + { + return mFilterTabs->getTabVisibility(mFavoritesPanel); + } + return false; } diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h index a78c0c0fad..03650e7fc1 100644 --- a/indra/newview/llpanelmaininventory.h +++ b/indra/newview/llpanelmaininventory.h @@ -199,6 +199,7 @@ private: LLInventoryPanel* mAllItemsPanel = nullptr; LLInventoryPanel* mRecentPanel = nullptr; LLInventoryPanel* mWornItemsPanel = nullptr; + LLInventoryPanel* mFavoritesPanel = nullptr; bool mResortActivePanel; LLSaveFolderState* mSavedFolderState; std::string mFilterText; diff --git a/indra/newview/llpanelvoiceeffect.cpp b/indra/newview/llpanelvoiceeffect.cpp deleted file mode 100644 index a0129b2cb1..0000000000 --- a/indra/newview/llpanelvoiceeffect.cpp +++ /dev/null @@ -1,165 +0,0 @@ -/** - * @file llpanelvoiceeffect.cpp - * @author Aimee - * @brief Panel to select Voice Morphs. - * - * $LicenseInfo:firstyear=2010&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llpanelvoiceeffect.h" - -#include "llcombobox.h" -#include "llfloaterreg.h" -#include "llpanel.h" -#include "lltrans.h" -#include "lltransientfloatermgr.h" -#include "llvoiceclient.h" -#include "llweb.h" - -static LLPanelInjector<LLPanelVoiceEffect> t_panel_voice_effect("panel_voice_effect"); - -LLPanelVoiceEffect::LLPanelVoiceEffect() - : mVoiceEffectCombo(NULL) -{ - mCommitCallbackRegistrar.add("Voice.CommitVoiceEffect", boost::bind(&LLPanelVoiceEffect::onCommitVoiceEffect, this)); -} - -LLPanelVoiceEffect::~LLPanelVoiceEffect() -{ - LLView* combo_list_view = mVoiceEffectCombo->getChildView("ComboBox"); - LLTransientFloaterMgr::getInstance()->removeControlView(combo_list_view); - - if(LLVoiceClient::instanceExists()) - { - LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface(); - if (effect_interface) - { - effect_interface->removeObserver(this); - } - } -} - -// virtual -bool LLPanelVoiceEffect::postBuild() -{ - mVoiceEffectCombo = getChild<LLComboBox>("voice_effect"); - - // Need to tell LLTransientFloaterMgr about the combo list, otherwise it can't - // be clicked while in a docked floater as it extends outside the floater area. - LLView* combo_list_view = mVoiceEffectCombo->getChildView("ComboBox"); - LLTransientFloaterMgr::getInstance()->addControlView(combo_list_view); - - LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface(); - if (effect_interface) - { - effect_interface->addObserver(this); - } - - update(true); - - return true; -} - -////////////////////////////////////////////////////////////////////////// -/// PRIVATE SECTION -////////////////////////////////////////////////////////////////////////// - -void LLPanelVoiceEffect::onCommitVoiceEffect() -{ - LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface(); - if (!effect_interface) - { - mVoiceEffectCombo->setEnabled(false); - return; - } - - LLSD value = mVoiceEffectCombo->getValue(); - if (value.asInteger() == PREVIEW_VOICE_EFFECTS) - { - // Open the Voice Morph preview floater - LLFloaterReg::showInstance("voice_effect"); - } - else if (value.asInteger() == GET_VOICE_EFFECTS) - { - // Open the voice morphing info web page - LLWeb::loadURL(LLTrans::getString("voice_morphing_url")); - } - else - { - effect_interface->setVoiceEffect(value.asUUID()); - } - - mVoiceEffectCombo->setValue(effect_interface->getVoiceEffect()); -} - -// virtual -void LLPanelVoiceEffect::onVoiceEffectChanged(bool effect_list_updated) -{ - update(effect_list_updated); -} - -void LLPanelVoiceEffect::update(bool list_updated) -{ - if (mVoiceEffectCombo) - { - LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface(); - if (!effect_interface) return; - if (list_updated) - { - // Add the default "No Voice Morph" entry. - mVoiceEffectCombo->removeall(); - mVoiceEffectCombo->add(getString("no_voice_effect"), LLUUID::null); - mVoiceEffectCombo->addSeparator(); - - // Add entries for each Voice Morph. - const voice_effect_list_t& effect_list = effect_interface->getVoiceEffectList(); - if (!effect_list.empty()) - { - for (voice_effect_list_t::const_iterator it = effect_list.begin(); it != effect_list.end(); ++it) - { - mVoiceEffectCombo->add(it->first, it->second, ADD_BOTTOM); - } - - mVoiceEffectCombo->addSeparator(); - } - - // Add the fixed entries to go to the preview floater or marketing page. - mVoiceEffectCombo->add(getString("preview_voice_effects"), PREVIEW_VOICE_EFFECTS); - mVoiceEffectCombo->add(getString("get_voice_effects"), GET_VOICE_EFFECTS); - } - - if (effect_interface && LLVoiceClient::instance().isVoiceWorking()) - { - // Select the current Voice Morph. - mVoiceEffectCombo->setValue(effect_interface->getVoiceEffect()); - mVoiceEffectCombo->setEnabled(true); - } - else - { - // If voice isn't working or Voice Effects are not supported disable the control. - mVoiceEffectCombo->setValue(LLUUID::null); - mVoiceEffectCombo->setEnabled(false); - } - } -} diff --git a/indra/newview/llpanelvoiceeffect.h b/indra/newview/llpanelvoiceeffect.h deleted file mode 100644 index f920e41081..0000000000 --- a/indra/newview/llpanelvoiceeffect.h +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @file llpanelvoiceeffect.h - * @author Aimee - * @brief Panel to select Voice Effects. - * - * $LicenseInfo:firstyear=2010&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_PANELVOICEEFFECT_H -#define LL_PANELVOICEEFFECT_H - -#include "llpanel.h" -#include "llvoiceclient.h" - -class LLComboBox; - -class LLPanelVoiceEffect - : public LLPanel - , public LLVoiceEffectObserver -{ -public: - LOG_CLASS(LLPanelVoiceEffect); - - LLPanelVoiceEffect(); - virtual ~LLPanelVoiceEffect(); - - bool postBuild() override; - -private: - void onCommitVoiceEffect(); - void update(bool list_updated); - - /// Called by voice effect provider when voice effect list is changed. - void onVoiceEffectChanged(bool effect_list_updated) override; - - // Fixed entries in the Voice Morph list - typedef enum e_voice_effect_combo_items - { - NO_VOICE_EFFECT = 0, - PREVIEW_VOICE_EFFECTS = 1, - GET_VOICE_EFFECTS = 2 - } EVoiceEffectComboItems; - - LLComboBox* mVoiceEffectCombo; -}; - - -#endif //LL_PANELVOICEEFFECT_H diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp index 9a991727b2..eefd19e153 100644 --- a/indra/newview/llpreviewnotecard.cpp +++ b/indra/newview/llpreviewnotecard.cpp @@ -79,6 +79,7 @@ LLPreviewNotecard::LLPreviewNotecard(const LLSD& key) //const LLUUID& item_id, LLPreviewNotecard::~LLPreviewNotecard() { delete mLiveFile; + mEditor = nullptr; } bool LLPreviewNotecard::postBuild() @@ -166,7 +167,7 @@ bool LLPreviewNotecard::handleKeyHere(KEY key, MASK mask) // virtual bool LLPreviewNotecard::canClose() { - if(mForceClose || mEditor->isPristine()) + if(mForceClose || !mEditor || mEditor->isPristine()) { return true; } diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index 2f8158f6f2..8c8734b52f 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -875,7 +875,7 @@ std::string LLTextureCache::getTextureFileName(const LLUUID& id) //debug bool LLTextureCache::isInCache(const LLUUID& id) { - LLMutexLock lock(&mHeaderMutex); + LLMutexLock lock(&mHeaderIDMapMutex); id_map_t::const_iterator iter = mHeaderIDMap.find(id); return (iter != mHeaderIDMap.end()) ; @@ -1117,10 +1117,13 @@ S32 LLTextureCache::openAndReadEntry(const LLUUID& id, Entry& entry, bool create { S32 idx = -1; - id_map_t::iterator iter1 = mHeaderIDMap.find(id); - if (iter1 != mHeaderIDMap.end()) { - idx = iter1->second; + LLMutexLock lock(&mHeaderIDMapMutex); + id_map_t::iterator iter1 = mHeaderIDMap.find(id); + if (iter1 != mHeaderIDMap.end()) + { + idx = iter1->second; + } } if (idx < 0) @@ -1148,10 +1151,19 @@ S32 LLTextureCache::openAndReadEntry(const LLUUID& id, Entry& entry, bool create // Erase entry from LRU regardless mLRU.erase(curiter2); // Look up entry and use it if it is valid - id_map_t::iterator iter3 = mHeaderIDMap.find(oldid); - if (iter3 != mHeaderIDMap.end() && iter3->second >= 0) + + S32 found_idx = -1; + { + LLMutexLock lock(&mHeaderIDMapMutex); + id_map_t::iterator iter3 = mHeaderIDMap.find(oldid); + if (iter3 != mHeaderIDMap.end() && iter3->second >= 0) + { + found_idx = iter3->second; + } + } + if (found_idx >= 0) { - idx = iter3->second; + idx = found_idx; removeCachedTexture(oldid) ;//remove the existing cached texture to release the entry index. break; } @@ -1287,7 +1299,10 @@ bool LLTextureCache::updateEntry(S32& idx, Entry& entry, S32 new_image_size, S32 bool update_header = false ; if(entry.mImageSize < 0) //is a brand-new entry { - mHeaderIDMap[entry.mID] = idx; + { + LLMutexLock lock(&mHeaderIDMapMutex); + mHeaderIDMap[entry.mID] = idx; + } mTexturesSizeMap[entry.mID] = new_body_size ; mTexturesSizeTotal += new_body_size ; @@ -1325,8 +1340,8 @@ bool LLTextureCache::updateEntry(S32& idx, Entry& entry, S32 new_image_size, S32 U32 LLTextureCache::openAndReadEntries(std::vector<Entry>& entries) { + LLMutexLock lock(&mHeaderIDMapMutex); U32 num_entries = mHeaderEntriesInfo.mEntries; - mHeaderIDMap.clear(); mTexturesSizeMap.clear(); mFreeList.clear(); @@ -1620,7 +1635,10 @@ void LLTextureCache::purgeAllTextures(bool purge_directories) LLFile::rmdir(mTexturesDirName); } } - mHeaderIDMap.clear(); + { + LLMutexLock lock(&mHeaderIDMapMutex); + mHeaderIDMap.clear(); + } mTexturesSizeMap.clear(); mTexturesSizeTotal = 0; mFreeList.clear(); @@ -1667,6 +1685,7 @@ void LLTextureCache::purgeTexturesLazy(F32 time_limit_sec) { if (iter1->second > 0) { + LLMutexLock lock(&mHeaderIDMapMutex); id_map_t::iterator iter2 = mHeaderIDMap.find(iter1->first); if (iter2 != mHeaderIDMap.end()) { @@ -1708,8 +1727,13 @@ void LLTextureCache::purgeTexturesLazy(F32 time_limit_sec) Entry entry = mPurgeEntryList.back().second; mPurgeEntryList.pop_back(); // make sure record is still valid - id_map_t::iterator iter_header = mHeaderIDMap.find(entry.mID); - if (iter_header != mHeaderIDMap.end() && iter_header->second == idx) + bool remove_entry = false; + { + LLMutexLock lock(&mHeaderIDMapMutex); + id_map_t::iterator iter_header = mHeaderIDMap.find(entry.mID); + remove_entry = (iter_header != mHeaderIDMap.end() && iter_header->second == idx); + } + if (remove_entry) { std::string tex_filename = getTextureFileName(entry.mID); removeEntry(idx, entry, tex_filename); @@ -1752,6 +1776,7 @@ void LLTextureCache::purgeTextures(bool validate) { if (iter1->second > 0) { + LLMutexLock lock(&mHeaderIDMapMutex); id_map_t::iterator iter2 = mHeaderIDMap.find(iter1->first); if (iter2 != mHeaderIDMap.end()) { @@ -2006,7 +2031,7 @@ LLPointer<LLImageRaw> LLTextureCache::readFromFastCache(const LLUUID& id, S32& d { U32 offset; { - LLMutexLock lock(&mHeaderMutex); + LLMutexLock lock(&mHeaderIDMapMutex); id_map_t::const_iterator iter = mHeaderIDMap.find(id); if(iter == mHeaderIDMap.end()) { @@ -2020,9 +2045,10 @@ LLPointer<LLImageRaw> LLTextureCache::readFromFastCache(const LLUUID& id, S32& d U8* data; S32 head[4]; { + LL_PROFILE_ZONE_NAMED("Read fast cache"); LLMutexLock lock(&mFastCacheMutex); - openFastCache(); + openFastCache(); // only reopens if needed, lasts 10 seconds mFastCachep->seek(APR_SET, offset); @@ -2053,7 +2079,9 @@ LLPointer<LLImageRaw> LLTextureCache::readFromFastCache(const LLUUID& id, S32& d closeFastCache(); } - LLPointer<LLImageRaw> raw = new LLImageRaw(data, head[0], head[1], head[2], true); + + // directly construct image from new buffer. + LLPointer<LLImageRaw> raw = new LLImageRaw(data, head[0], head[1], head[2], true /*take ownership*/); return raw; } @@ -2231,7 +2259,10 @@ void LLTextureCache::removeCachedTexture(const LLUUID& id) mTexturesSizeTotal -= mTexturesSizeMap[id] ; mTexturesSizeMap.erase(id); } - mHeaderIDMap.erase(id); + { + LLMutexLock lock(&mHeaderIDMapMutex); + mHeaderIDMap.erase(id); + } // We are inside header's mutex so mHeaderAPRFilePoolp is safe to use, // but getLocalAPRFilePool() is not safe, it might be in use by worker LLAPRFile::remove(getTextureFileName(id), mHeaderAPRFilePoolp); @@ -2262,7 +2293,10 @@ void LLTextureCache::removeEntry(S32 idx, Entry& entry, std::string& filename) entry.mImageSize = -1; entry.mBodySize = 0; - mHeaderIDMap.erase(entry.mID); + { + LLMutexLock lock(&mHeaderIDMapMutex); + mHeaderIDMap.erase(entry.mID); + } mTexturesSizeMap.erase(entry.mID); mFreeList.insert(idx); } diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h index faf722dc8f..a09bcc1572 100644 --- a/indra/newview/lltexturecache.h +++ b/indra/newview/lltexturecache.h @@ -148,7 +148,7 @@ public: U32 getMaxEntries() { return sCacheMaxEntries; }; bool isInCache(const LLUUID& id) ; bool isInLocal(const LLUUID& id) ; //not thread safe at the moment - + LLMutex* getFastCacheMutex() { return &mFastCacheMutex; } protected: // Accessed by LLTextureCacheWorker std::string getLocalFileName(const LLUUID& id); @@ -194,6 +194,7 @@ private: // Internal LLMutex mWorkersMutex; LLMutex mHeaderMutex; + LLMutex mHeaderIDMapMutex; // To avoid deadlocks, never lock mFastCacheMutex after mHeaderIDMapMutex. LLMutex mListMutex; LLMutex mFastCacheMutex; LLAPRFile* mHeaderAPRFile; diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 35ac7919ac..9dfa9a0efd 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -576,9 +576,9 @@ void display(bool rebuild, F32 zoom_factor, int subfield, bool for_snapshot) LLImageGL::updateStats(gFrameTimeSeconds); static LLCachedControl<S32> avatar_name_tag_mode(gSavedSettings, "AvatarNameTagMode", 1); - static LLCachedControl<bool> name_tag_show_group_titles(gSavedSettings, "NameTagShowGroupTitles", true); + static LLCachedControl<S32> name_tag_show_group_titles(gSavedSettings, "GroupTitlesTagMode", 2 /*all group tags*/); LLVOAvatar::sRenderName = avatar_name_tag_mode; - LLVOAvatar::sRenderGroupTitles = name_tag_show_group_titles && avatar_name_tag_mode > 0; + LLVOAvatar::sRenderGroupTitles = avatar_name_tag_mode > 0 ? name_tag_show_group_titles : 0; gPipeline.mBackfaceCull = true; gFrameCount++; diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index ab5235c3ad..82fc4c6d87 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -44,7 +44,6 @@ #include "llfloateravatarrendersettings.h" #include "llfloateravatartextures.h" #include "llfloaterbanduration.h" -#include "llfloaterbigpreview.h" #include "llfloaterbeacons.h" #include "llfloaterbuildoptions.h" #include "llfloaterbulkpermission.h" @@ -120,7 +119,6 @@ #include "llfloaterpay.h" #include "llfloaterperformance.h" #include "llfloaterperms.h" -#include "llfloaterpostprocess.h" #include "llfloaterpreference.h" #include "llfloaterpreferencesgraphicsadvanced.h" #include "llfloaterpreferenceviewadvanced.h" @@ -143,7 +141,6 @@ #include "llfloatersidepanelcontainer.h" #include "llfloaterslapptest.h" #include "llfloatersnapshot.h" -#include "llfloatersounddevices.h" #include "llfloaterspellchecksettings.h" #include "llfloatertelehub.h" #include "llfloatertestinspectors.h" @@ -154,7 +151,6 @@ #include "llfloatertoybox.h" #include "llfloatertranslationsettings.h" #include "llfloateruipreview.h" -#include "llfloatervoiceeffect.h" #include "llfloaterwebcontent.h" #include "llfloatervoicevolume.h" #include "llfloaterwhitelistentry.h" @@ -370,7 +366,6 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("emoji_picker", "floater_emoji_picker.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEmojiPicker>); LLFloaterReg::add("emoji_complete", "floater_emoji_complete.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEmojiComplete>); - LLFloaterReg::add("env_post_process", "floater_post_process.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPostProcess>); LLFloaterReg::add("env_fixed_environmentent_water", "floater_fixedenvironment.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterFixedEnvironmentWater>); LLFloaterReg::add("env_fixed_environmentent_sky", "floater_fixedenvironment.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterFixedEnvironmentSky>); @@ -499,7 +494,6 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("sell_land", "floater_sell_land.xml", &LLFloaterSellLand::buildFloater); LLFloaterReg::add("settings_color", "floater_settings_color.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSettingsColor>); LLFloaterReg::add("settings_debug", "floater_settings_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSettingsDebug>); - LLFloaterReg::add("sound_devices", "floater_sound_devices.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundDevices>); LLFloaterReg::add("stats", "floater_stats.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloater>); LLFloaterReg::add("start_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterRunQueue>); LLFloaterReg::add("scene_load_stats", "floater_scene_load_stats.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSceneLoadStats>); @@ -512,8 +506,6 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("guidebook", "floater_how_to.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterHowTo>); LLFloaterReg::add("slapp_test", "floater_test_slapp.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSLappTest>); - LLFloaterReg::add("big_preview", "floater_big_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBigPreview>); - LLFloaterUIPreviewUtil::registerFloater(); LLFloaterReg::add("upload_anim_bvh", "floater_animation_bvh_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBvhPreview>, "upload"); LLFloaterReg::add("upload_anim_anim", "floater_animation_anim_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAnimPreview>, "upload"); @@ -522,8 +514,6 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("upload_script", "floater_script_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterScriptPreview>, "upload"); LLFloaterReg::add("upload_sound", "floater_sound_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundPreview>, "upload"); - LLFloaterReg::add("voice_effect", "floater_voice_effect.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterVoiceEffect>); - LLFloaterReg::add("web_content", "floater_web_content.xml", (LLFloaterBuildFunc)&LLFloaterWebContent::create); LLFloaterReg::add("whitelist_entry", "floater_whitelist_entry.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWhiteListEntry>); LLFloaterReg::add("window_size", "floater_window_size.xml", &LLFloaterReg::build<LLFloaterWindowSize>); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 0032cba82c..dbcf4fbbf4 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -3017,6 +3017,40 @@ void handle_object_show_original() show_item_original(object->getAttachmentItemID()); } +void handle_object_set_favorite(const LLSD& userdata) +{ + LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject(); + if (!object) + { + return; + } + LLViewerObject *parent = (LLViewerObject*)object->getParent(); + while (parent) + { + if(parent->isAvatar()) + { + break; + } + object = parent; + parent = (LLViewerObject*)parent->getParent(); + } + if (!object || object->isAvatar()) + { + return; + } + + LLUUID item_id = gInventory.getLinkedItemID(object->getAttachmentItemID()); + + std::string action = userdata.asString(); + if (action == "Add") + { + set_favorite(item_id, true); + } + if (action == "Remove") + { + set_favorite(item_id, false); + } +} static void init_default_item_label(LLUICtrl* ctrl) { @@ -3073,6 +3107,41 @@ bool enable_object_touch(LLUICtrl* ctrl) return new_value; }; +bool enable_object_favorite(const LLSD& userdata) +{ + LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject(); + if (!object) + { + return false; + } + LLViewerObject* parent = (LLViewerObject*)object->getParent(); + while (parent) + { + if (parent->isAvatar()) + { + break; + } + object = parent; + parent = (LLViewerObject*)parent->getParent(); + } + if (!object || object->isAvatar()) + { + return false; + } + + std::string action = userdata.asString(); + LLUUID item_id = gInventory.getLinkedItemID(object->getAttachmentItemID()); + if (action == "Add") + { + return !get_is_favorite(item_id); + } + if (action == "Remove") + { + return get_is_favorite(item_id); + } + return false; +} + //void label_touch(std::string& label, void*) //{ // LLSelectNode* node = LLSelectMgr::getInstance()->getSelection()->getFirstRootNode(); @@ -9557,17 +9626,6 @@ class LLWorldEnableEnvPreset : public view_listener_t } }; - -/// Post-Process callbacks -class LLWorldPostProcess : public view_listener_t -{ - bool handleEvent(const LLSD& userdata) - { - LLFloaterReg::showInstance("env_post_process"); - return true; - } -}; - class LLWorldCheckBanLines : public view_listener_t { bool handleEvent(const LLSD& userdata) @@ -9861,7 +9919,6 @@ void initialize_menus() view_listener_t::addMenu(new LLWorldEnableEnvSettings(), "World.EnableEnvSettings"); view_listener_t::addMenu(new LLWorldEnvPreset(), "World.EnvPreset"); view_listener_t::addMenu(new LLWorldEnableEnvPreset(), "World.EnableEnvPreset"); - view_listener_t::addMenu(new LLWorldPostProcess(), "World.PostProcess"); view_listener_t::addMenu(new LLWorldCheckBanLines() , "World.CheckBanLines"); view_listener_t::addMenu(new LLWorldShowBanLines() , "World.ShowBanLines"); @@ -10173,6 +10230,7 @@ void initialize_menus() view_listener_t::addMenu(new LLObjectBuild(), "Object.Build"); commit.add("Object.Touch", boost::bind(&handle_object_touch)); commit.add("Object.ShowOriginal", boost::bind(&handle_object_show_original)); + commit.add("Object.SetFavorite", boost::bind(&handle_object_set_favorite, _2)); commit.add("Object.SitOrStand", boost::bind(&handle_object_sit_or_stand)); commit.add("Object.Delete", boost::bind(&handle_object_delete)); view_listener_t::addMenu(new LLObjectAttachToAvatar(true), "Object.AttachToAvatar"); @@ -10201,6 +10259,7 @@ void initialize_menus() enable.add("Object.EnableEditGLTFMaterial", boost::bind(&enable_object_edit_gltf_material)); enable.add("Object.EnableOpen", boost::bind(&enable_object_open)); enable.add("Object.EnableTouch", boost::bind(&enable_object_touch, _1)); + enable.add("Object.EnableFavorites", boost::bind(&enable_object_favorite, _2)); enable.add("Object.EnableDelete", boost::bind(&enable_object_delete)); enable.add("Object.EnableWear", boost::bind(&object_is_wearable)); diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 23915d01fa..0f23596c9a 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -1898,13 +1898,11 @@ bool LLViewerFetchedTexture::processFetchResults(S32& desired_discard, S32 curre mRawDiscardLevel = INVALID_DISCARD_LEVEL; mIsFetching = false; mLastPacketTimer.reset(); - } - else - { - mIsRawImageValid = true; - addToCreateTexture(); + return false; } + mIsRawImageValid = true; + if (mBoostLevel == LLGLTexture::BOOST_ICON) { S32 expected_width = mKnownDrawWidth > 0 ? mKnownDrawWidth : DEFAULT_ICON_DIMENSIONS; @@ -1916,7 +1914,11 @@ bool LLViewerFetchedTexture::processFetchResults(S32& desired_discard, S32 curre // // BOOST_ICON gets scaling because profile icons can have a bunch of different formats, not just j2c // Might need another pass to use discard for j2c and scaling for everything else. - mRawImage = mRawImage->scaled(expected_width, expected_height); + LLPointer<LLImageRaw> scaled = mRawImage->scaled(expected_width, expected_height); + if (scaled.notNull()) + { + mRawImage = scaled; + } } } @@ -1931,10 +1933,16 @@ bool LLViewerFetchedTexture::processFetchResults(S32& desired_discard, S32 curre // // Todo: probably needs to be remade to use discard, all thumbnails are supposed to be j2c, // so no need to scale, should be posible to use discard to scale image down. - mRawImage = mRawImage->scaled(expected_width, expected_height); + LLPointer<LLImageRaw> scaled = mRawImage->scaled(expected_width, expected_height); + if (scaled.notNull()) + { + mRawImage = scaled; + } } } + addToCreateTexture(); + return true; } else diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 11ca3098fd..96962bbeae 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -1191,15 +1191,19 @@ F32 LLViewerTextureList::updateImagesLoadingFastCache(F32 max_time) LLTimer timer; image_list_t::iterator enditer = mFastCacheList.begin(); - for (image_list_t::iterator iter = mFastCacheList.begin(); - iter != mFastCacheList.end();) { - image_list_t::iterator curiter = iter++; - enditer = iter; - LLViewerFetchedTexture *imagep = *curiter; - imagep->loadFromFastCache(); - if (timer.getElapsedTimeF32() > max_time) - break; + // prelock fast cache mutex to avoid waiting multiple times. + LLMutexLock cache_lock(LLAppViewer::getTextureCache()->getFastCacheMutex()); + for (image_list_t::iterator iter = mFastCacheList.begin(); + iter != mFastCacheList.end();) + { + image_list_t::iterator curiter = iter++; + enditer = iter; + LLViewerFetchedTexture* imagep = *curiter; + imagep->loadFromFastCache(); + if (timer.getElapsedTimeF32() > max_time) + break; + } } mFastCacheList.erase(mFastCacheList.begin(), enditer); return timer.getElapsedTimeF32(); diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp index 583fb25330..50af9756a3 100644 --- a/indra/newview/llviewerwearable.cpp +++ b/indra/newview/llviewerwearable.cpp @@ -96,6 +96,7 @@ LLViewerWearable::~LLViewerWearable() // virtual LLWearable::EImportResult LLViewerWearable::importStream( std::istream& input_stream, LLAvatarAppearance* avatarp ) { + LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR; // suppress texlayerset updates while wearables are being imported. Layersets will be updated // when the wearables are "worn", not loaded. Note state will be restored when this object is destroyed. LLOverrideBakedTextureUpdate stop_bakes(false); diff --git a/indra/newview/llvlmanager.cpp b/indra/newview/llvlmanager.cpp index c2bcd32921..f4c2c27cee 100644 --- a/indra/newview/llvlmanager.cpp +++ b/indra/newview/llvlmanager.cpp @@ -68,7 +68,11 @@ void LLVLManager::addLayerData(LLVLData *vl_datap, const S32Bytes mesg_size) } else { - LL_ERRS() << "Unknown layer type!" << (S32)vl_datap->mType << LL_ENDL; + // Corrupted message? New feature? + LL_WARNS() << "Unknown layer type!" << (S32)vl_datap->mType + << " for region " << vl_datap->mRegionp->getName() << LL_ENDL; + delete vl_datap; // addLayerData took ownership + return; } mPacketData.push_back(vl_datap); diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index aa7ab6e9e7..efb09479e2 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -217,6 +217,13 @@ enum ERenderName RENDER_NAME_FADE }; +enum ERenderGroupTitle +{ + RENDER_GROUP_TITLE_NEVER, + RENDER_GROUP_TITLE_SELF, + RENDER_GROUP_TITLE_ALWAYS +}; + #define JELLYDOLLS_SHOULD_IMPOSTOR //----------------------------------------------------------------------------- @@ -607,7 +614,7 @@ const LLUUID LLVOAvatar::sStepSounds[LL_MCODE_END] = }; S32 LLVOAvatar::sRenderName = RENDER_NAME_ALWAYS; -bool LLVOAvatar::sRenderGroupTitles = true; +S32 LLVOAvatar::sRenderGroupTitles = RENDER_GROUP_TITLE_ALWAYS; S32 LLVOAvatar::sNumVisibleChatBubbles = 0; bool LLVOAvatar::sDebugInvisible = false; bool LLVOAvatar::sShowAttachmentPoints = false; @@ -3552,9 +3559,10 @@ void LLVOAvatar::idleUpdateNameTagText(bool new_name) addNameTagLine(line, name_tag_color, LLFontGL::NORMAL, LLFontGL::getFontSansSerifSmall()); } + bool render_title = (sRenderGroupTitles == RENDER_GROUP_TITLE_ALWAYS) || + (isSelf() && (sRenderGroupTitles == RENDER_GROUP_TITLE_SELF)); - if (sRenderGroupTitles - && title && title->getString() && title->getString()[0] != '\0') + if (render_title && title && title->getString() && title->getString()[0] != '\0') { std::string title_str = title->getString(); LLStringFn::replace_ascii_controlchars(title_str,LL_UNKNOWN_CHAR); diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 1e563c4869..fc3a97a25d 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -354,7 +354,7 @@ public: //-------------------------------------------------------------------- public: static S32 sRenderName; - static bool sRenderGroupTitles; + static S32 sRenderGroupTitles; static const U32 NON_IMPOSTORS_MAX_SLIDER; /* Must equal the maximum allowed the RenderAvatarMaxNonImpostors * slider in panel_preferences_graphics1.xml */ static U32 sMaxNonImpostors; // affected by control "RenderAvatarMaxNonImpostors" @@ -1120,7 +1120,7 @@ private: bool mNameFriend; bool mNameCloud; F32 mNameAlpha; - bool mRenderGroupTitles; + S32 mRenderGroupTitles; //-------------------------------------------------------------------- // Display the name (then optionally fade it out) diff --git a/indra/newview/llworldmap.h b/indra/newview/llworldmap.h index 68e7f3ee29..91bc699708 100644 --- a/indra/newview/llworldmap.h +++ b/indra/newview/llworldmap.h @@ -37,18 +37,6 @@ #include "llviewertexture.h" #include "llgltexture.h" -// map item types -const U32 MAP_ITEM_TELEHUB = 0x01; -const U32 MAP_ITEM_PG_EVENT = 0x02; -const U32 MAP_ITEM_MATURE_EVENT = 0x03; -//const U32 MAP_ITEM_POPULAR = 0x04; // No longer supported, 2009-03-02 KLW -//const U32 MAP_ITEM_AGENT_COUNT = 0x05; -const U32 MAP_ITEM_AGENT_LOCATIONS = 0x06; -const U32 MAP_ITEM_LAND_FOR_SALE = 0x07; -const U32 MAP_ITEM_CLASSIFIED = 0x08; -const U32 MAP_ITEM_ADULT_EVENT = 0x09; -const U32 MAP_ITEM_LAND_FOR_SALE_ADULT = 0x0a; - // Description of objects like hubs, events, land for sale, people and more (TBD). // Note: we don't store a "type" in there so we need to store instances of this class in // well known objects (i.e. list of objects which type is "well known"). diff --git a/indra/newview/skins/default/xui/da/floater_sound_devices.xml b/indra/newview/skins/default/xui/da/floater_sound_devices.xml deleted file mode 100644 index cb4cbba570..0000000000 --- a/indra/newview/skins/default/xui/da/floater_sound_devices.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_sound_devices" title="Lyd enheder"> - <text name="voice_label"> - Stemme chat - </text> - <check_box label="Aktiveret" name="enable_voice"/> -</floater> diff --git a/indra/newview/skins/default/xui/da/floater_voice_effect.xml b/indra/newview/skins/default/xui/da/floater_voice_effect.xml deleted file mode 100644 index 86ad251103..0000000000 --- a/indra/newview/skins/default/xui/da/floater_voice_effect.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater label="Steder" name="voice_effects" title="STEMME MORPH"> - <string name="no_voice_effect"> - (Ingen stemme "morph") - </string> - <string name="active_voice_effect"> - (Aktiv) - </string> - <string name="unsubscribed_voice_effect"> - (Ikke aktiveret) - </string> - <string name="new_voice_effect"> - (Ny!) - </string> - <text name="preview_text"> - For at se - </text> - <text name="status_text"> - Optag en prøve, klik derefter på en stemme for at høre hvordan det vil lyde. - </text> - <button label="Optag" name="record_btn" tool_tip="Optag en stemmeprøve."/> - <button label="Stop" name="record_stop_btn"/> - <text name="voice_morphing_link"> - [[URL] Abonnér nu] - </text> - <scroll_list name="voice_effect_list" tool_tip="Optag en prøve med din stemme og klik på en effekt for at teste."> - <scroll_list.columns label="Stemme navn" name="name"/> - <scroll_list.columns label="Udløber" name="expires"/> - </scroll_list> -</floater> diff --git a/indra/newview/skins/default/xui/da/panel_voice_effect.xml b/indra/newview/skins/default/xui/da/panel_voice_effect.xml deleted file mode 100644 index 50f561ec7f..0000000000 --- a/indra/newview/skins/default/xui/da/panel_voice_effect.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_voice_effect"> - <string name="no_voice_effect"> - Voice Morphing Off - </string> - <string name="preview_voice_effects"> - Se stemme "morph" ▶ - </string> - <string name="get_voice_effects"> - Hente stemme "morph" ▶ - </string> - <combo_box name="voice_effect" tool_tip="Vælg en stemme "morph" for at ændre din stemme"> - <combo_box.item label="Stemme morph slukket" name="no_voice_effect"/> - </combo_box> -</panel> diff --git a/indra/newview/skins/default/xui/de/floater_big_preview.xml b/indra/newview/skins/default/xui/de/floater_big_preview.xml deleted file mode 100644 index c5ce56d1d9..0000000000 --- a/indra/newview/skins/default/xui/de/floater_big_preview.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_big_preview" title="VORSCHAU"/> diff --git a/indra/newview/skins/default/xui/de/floater_post_process.xml b/indra/newview/skins/default/xui/de/floater_post_process.xml deleted file mode 100644 index a6ed8cc3df..0000000000 --- a/indra/newview/skins/default/xui/de/floater_post_process.xml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Post-Process Floater" title="POST-PROCESSING-EINSTELLUNGEN"> - <tab_container name="Post-Process Tabs"> - <panel label="Farbfilter" name="wmiColorFilterPanel"> - <check_box label="Ein" name="wmiColorFilterToggle" /> - <text name="wmiColorFilterBrightnessText"> - Helligkeit - </text> - <text name="wmiColorFilterSaturationText"> - Sättigung - </text> - <text name="wmiColorFilterContrastText"> - Kontrast - </text> - <text name="wmiColorFilterBaseText"> - Kontrast-Grundfarbe - </text> - <slider label="R" name="wmiColorFilterBaseR" /> - <slider label="G" name="wmiColorFilterBaseG" /> - <slider label="B" name="wmiColorFilterBaseB" /> - <slider label="I" name="wmiColorFilterBaseI" /> - </panel> - <panel label="Nachtsicht" name="wmiNightVisionPanel"> - <check_box label="Ein" name="wmiNightVisionToggle" /> - <text name="wmiNightVisionBrightMultText"> - Lichtverstärkungsmultiplikator - </text> - <text name="wmiNightVisionNoiseSizeText"> - Rauschen-Größe - </text> - <text name="wmiNightVisionNoiseStrengthText"> - Rauschen-Stärke - </text> - </panel> - <panel label="Bloom" name="wmiBloomPanel"> - <check_box label="Ein" name="wmiBloomToggle" /> - <text name="wmiBloomExtractText"> - Luminanz-Extraktion - </text> - <text name="wmiBloomSizeText"> - Bloom-Größe - </text> - <text name="wmiBloomStrengthText"> - Bloom-Stärke - </text> - </panel> - <panel label="Extras" name="Extras"> - <button label="Effekt laden" label_selected="Effekt laden" name="PPLoadEffect" /> - <button label="Effekt speichern" label_selected="Effekt speichern" name="PPSaveEffect" /> - <line_editor label="Effektname" name="PPEffectNameEditor" /> - </panel> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/de/floater_sound_devices.xml b/indra/newview/skins/default/xui/de/floater_sound_devices.xml deleted file mode 100644 index 22ccb2c1a2..0000000000 --- a/indra/newview/skins/default/xui/de/floater_sound_devices.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_sound_devices" title="SOUNDGERÄTE"> - <text name="voice_label"> - Voice-Chat - </text> - <check_box label="Aktiviert" name="enable_voice"/> -</floater> diff --git a/indra/newview/skins/default/xui/de/floater_voice_effect.xml b/indra/newview/skins/default/xui/de/floater_voice_effect.xml deleted file mode 100644 index 8d37950480..0000000000 --- a/indra/newview/skins/default/xui/de/floater_voice_effect.xml +++ /dev/null @@ -1,159 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater label="Orte" name="voice_effects" title="VOICE-MORPHING-VORSCHAU"> - <string name="no_voice_effect"> - (Kein Voice-Morphing) - </string> - <string name="active_voice_effect"> - (Aktiv) - </string> - <string name="unsubscribed_voice_effect"> - (nicht abonniert) - </string> - <string name="new_voice_effect"> - (Neu!) - </string> - <string name="effect_Arena"> - Arena - </string> - <string name="effect_Beast"> - Bestie - </string> - <string name="effect_Buff"> - Muskulös - </string> - <string name="effect_Buzz"> - Buzz - </string> - <string name="effect_Camille"> - Camille - </string> - <string name="effect_Creepy"> - Unheimlich - </string> - <string name="effect_CreepyBot"> - UnheimlicherBot - </string> - <string name="effect_Cyber"> - Cyber - </string> - <string name="effect_DeepBot"> - TieferBot - </string> - <string name="effect_Demon"> - Dämon - </string> - <string name="effect_Female Elf"> - Weibliche Elfe - </string> - <string name="effect_Flirty"> - Kokett - </string> - <string name="effect_Foxy"> - Attraktiv - </string> - <string name="effect_Halloween 2010 Bonus"> - Bonus_Halloween_2010 - </string> - <string name="effect_Helium"> - Helium - </string> - <string name="effect_Husky"> - Rauchig - </string> - <string name="effect_Husky Whisper"> - Rauchiges Flüstern - </string> - <string name="effect_Intercom"> - Intercom - </string> - <string name="effect_Julia"> - Julia - </string> - <string name="effect_Lo Lilt"> - Leises Trällern - </string> - <string name="effect_Macho"> - Macho - </string> - <string name="effect_Micro"> - Micro - </string> - <string name="effect_Mini"> - Mini - </string> - <string name="effect_Model"> - Modell - </string> - <string name="effect_Nano"> - Nano - </string> - <string name="effect_Nightmare"> - Alptraum - </string> - <string name="effect_PopBot"> - PopBot - </string> - <string name="effect_Rachel"> - Rachel - </string> - <string name="effect_Radio"> - Radio - </string> - <string name="effect_Robot"> - Roboter - </string> - <string name="effect_Roxanne"> - Roxanne - </string> - <string name="effect_Rumble"> - Rumpeln - </string> - <string name="effect_Sabrina"> - Sabrina - </string> - <string name="effect_Samantha"> - Samantha - </string> - <string name="effect_Sexy"> - Sexy - </string> - <string name="effect_Shorty"> - Shorty - </string> - <string name="effect_Smaller"> - Kleiner - </string> - <string name="effect_Sneaky"> - Hinterhältig - </string> - <string name="effect_Stallion"> - Hengst - </string> - <string name="effect_Sultry"> - Feurig - </string> - <string name="effect_Thunder"> - Donner - </string> - <string name="effect_Vixen"> - Erotisch - </string> - <string name="effect_WhinyBot"> - JammernderBot - </string> - <text name="preview_text"> - Zur Vorschau - </text> - <text name="status_text"> - Stimme aufnehmen und auf einen Effekt klicken, um diesen auf Ihre Stimme anzuwenden. - </text> - <button label="Aufnehmen" name="record_btn" tool_tip="Nehmen Sie Ihre Stimme auf."/> - <button label="Stopp" name="record_stop_btn"/> - <text name="voice_morphing_link"> - [[URL] Jetzt abonnieren] - </text> - <scroll_list name="voice_effect_list" tool_tip="Nehmen Sie Ihre Stimme auf und klicken Sie dann auf einen Effekt, um diesen auszuprobieren."> - <scroll_list.columns label="Bezeichnung" name="name"/> - <scroll_list.columns label="Gültig bis" name="expires"/> - </scroll_list> -</floater> diff --git a/indra/newview/skins/default/xui/de/panel_voice_effect.xml b/indra/newview/skins/default/xui/de/panel_voice_effect.xml deleted file mode 100644 index 533deb8597..0000000000 --- a/indra/newview/skins/default/xui/de/panel_voice_effect.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_voice_effect"> - <string name="no_voice_effect"> - Voice-Morphing Aus - </string> - <string name="preview_voice_effects"> - Voice-Morphing ausprobieren ▶ - </string> - <string name="get_voice_effects"> - Voice-Morphing abonnieren ▶ - </string> - <combo_box name="voice_effect" tool_tip="Wählen Sie einen Voice-Morph-Effekt aus, um Ihre Stimme zu verändern."> - <combo_box.item label="Voice-Morphing Aus" name="no_voice_effect"/> - </combo_box> -</panel> diff --git a/indra/newview/skins/default/xui/en/floater_big_preview.xml b/indra/newview/skins/default/xui/en/floater_big_preview.xml deleted file mode 100644 index 362853d06f..0000000000 --- a/indra/newview/skins/default/xui/en/floater_big_preview.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater - positioning="cascading" - can_close="true" - can_resize="true" - can_minimize="false" - help_topic="floater_big_preview" - layout="topleft" - name="floater_big_preview" - save_rect="true" - single_instance="true" - reuse_instance="true" - title="PREVIEW" - height="465" - width="770"> - <panel - height="450" - width="750" - visible="true" - name="big_preview_placeholder" - top="5" - follows="all" - left="10"> - </panel> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_post_process.xml b/indra/newview/skins/default/xui/en/floater_post_process.xml deleted file mode 100644 index 37339f79c8..0000000000 --- a/indra/newview/skins/default/xui/en/floater_post_process.xml +++ /dev/null @@ -1,426 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater - legacy_header_height="18" - height="400" - layout="topleft" - name="Post-Process Floater" - help_topic="post_process_floater" - title="POST-PROCESS SETTINGS" - width="400"> - <tab_container - follows="left|top" - height="400" - layout="topleft" - left="0" - name="Post-Process Tabs" - tab_position="top" - top="0" - width="400"> - <panel - border="true" - follows="left|top|right|bottom" - height="400" - label="Color Filter" - layout="topleft" - left="1" - mouse_opaque="false" - help_topic="post_process_color_filter_tab" - name="wmiColorFilterPanel" - top="0" - width="398"> - <check_box - control_name="wmiColorFilterToggle" - height="16" - label="Enable" - layout="topleft" - left="14" - name="wmiColorFilterToggle" - top="4" - width="200" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left_delta="-4" - name="wmiColorFilterBrightnessText" - top_pad="4" - width="355"> - Brightness - </text> - <slider - control_name="wmiColorFilterBrightness" - decimal_digits="2" - follows="left" - height="10" - increment="0.01" - initial_value="1.0" - layout="topleft" - left_delta="4" - max_val="4" - name="wmiColorFilterBrightness" - top_pad="20" - width="200" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left_delta="-4" - name="wmiColorFilterSaturationText" - top_pad="4" - width="355"> - Saturation - </text> - <slider - control_name="wmiColorFilterSaturation" - decimal_digits="2" - follows="left" - height="10" - increment="0.01" - initial_value="1.0" - layout="topleft" - left_delta="4" - max_val="2" - min_val="-1" - name="wmiColorFilterSaturation" - top_pad="20" - width="200" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left_delta="-4" - name="wmiColorFilterContrastText" - top_pad="4" - width="355"> - Contrast - </text> - <slider - control_name="wmiColorFilterContrast" - decimal_digits="2" - follows="left" - height="10" - increment="0.01" - initial_value="1.0" - layout="topleft" - left_delta="4" - max_val="4" - name="wmiColorFilterContrast" - top_pad="20" - width="200" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left_delta="-4" - name="wmiColorFilterBaseText" - top_pad="4" - width="355"> - Contrast Base Color - </text> - <slider - control_name="wmiColorFilterBaseR" - follows="left" - height="10" - increment="0.01" - initial_value="1.0" - label="R" - layout="topleft" - left_delta="4" - name="wmiColorFilterBaseR" - top_pad="20" - width="200" /> - <slider - control_name="wmiColorFilterBaseG" - follows="left" - height="10" - increment="0.01" - initial_value="1.0" - label="G" - layout="topleft" - left_delta="0" - name="wmiColorFilterBaseG" - top_pad="10" - width="200" /> - <slider - control_name="wmiColorFilterBaseB" - follows="left" - height="10" - increment="0.01" - initial_value="1.0" - label="B" - layout="topleft" - left_delta="0" - name="wmiColorFilterBaseB" - top_pad="10" - width="200" /> - <slider - control_name="wmiColorFilterBaseI" - follows="left" - height="10" - increment="0.01" - initial_value="0.5" - label="I" - layout="topleft" - left_delta="0" - name="wmiColorFilterBaseI" - top_pad="10" - width="200" /> - </panel> - <panel - border="true" - follows="left|top|right|bottom" - height="400" - label="Night Vision" - layout="topleft" - left_delta="0" - mouse_opaque="false" - help_topic="post_process_night_vision_tab" - name="wmiNightVisionPanel" - top_delta="-236" - width="398"> - <check_box - control_name="wmiNightVisionToggle" - height="16" - label="Enable" - layout="topleft" - left="14" - name="wmiNightVisionToggle" - top="4" - width="200" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left_delta="-4" - name="wmiNightVisionBrightMultText" - top_pad="5" - width="355"> - Light Amplification Multiple - </text> - <slider - control_name="wmiNightVisionBrightMult" - follows="left" - height="10" - increment="0.01" - initial_value="3.0" - layout="topleft" - left_delta="4" - max_val="10" - min_val="1" - name="wmiNightVisionBrightMult" - top_pad="20" - width="200" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left_delta="-4" - name="wmiNightVisionNoiseSizeText" - top_pad="4" - width="355"> - Noise Size - </text> - <slider - control_name="wmiNightVisionNoiseSize" - follows="left" - height="10" - initial_value="1" - layout="topleft" - left_delta="4" - max_val="100" - min_val="1" - name="wmiNightVisionNoiseSize" - top_pad="20" - width="200" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left_delta="-4" - name="wmiNightVisionNoiseStrengthText" - top_pad="4" - width="355"> - Noise Strength - </text> - <slider - control_name="wmiNightVisionNoiseStrength" - follows="left" - height="10" - increment="0.01" - initial_value="0.3" - layout="topleft" - left_delta="4" - name="wmiNightVisionNoiseStrength" - top_pad="20" - width="200" /> - </panel> - <panel - border="true" - follows="left|top|right|bottom" - height="400" - label="Bloom" - layout="topleft" - left_delta="0" - help_topic="post_process_bloom_tab" - name="wmiBloomPanel" - top_delta="-236" - width="398"> - <check_box - control_name="wmiBloomToggle" - height="16" - label="Enable" - layout="topleft" - left="14" - name="wmiBloomToggle" - top="4" - width="200" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left_delta="-4" - name="wmiBloomExtractText" - top_pad="5" - width="355"> - Luminosity Extraction - </text> - <slider - control_name="wmiBloomExtract" - follows="left" - height="10" - increment="0.01" - initial_value="0.9" - layout="topleft" - left_delta="4" - name="wmiBloomExtract" - top_pad="20" - width="200" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left_delta="-4" - name="wmiBloomSizeText" - top_pad="4" - width="355"> - Bloom Size - </text> - <slider - control_name="wmiBloomSize" - follows="left" - height="10" - increment="0.01" - initial_value="3.0" - layout="topleft" - left_delta="4" - max_val="20" - name="wmiBloomSize" - top_pad="20" - width="200" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left_delta="-4" - name="wmiBloomStrengthText" - top_pad="4" - width="355"> - Bloom Strength - </text> - <slider - control_name="wmiBloomStrength" - follows="left" - height="10" - increment="0.01" - initial_value="1.2" - layout="topleft" - left_delta="4" - max_val="10" - name="wmiBloomStrength" - top_pad="20" - width="200" /> - </panel> - <panel - border="true" - follows="left|top|right|bottom" - height="400" - label="Extras" - layout="topleft" - left_delta="0" - mouse_opaque="false" - help_topic="post_process_extras_tab" - name="Extras" - top_delta="-236" - width="398"> - <button - height="20" - label="LoadEffect" - label_selected="LoadEffect" - layout="topleft" - left="15" - name="PPLoadEffect" - top="13" - width="100" /> - <button - height="20" - label="SaveEffect" - label_selected="SaveEffect" - layout="topleft" - left_delta="0" - name="PPSaveEffect" - top_pad="7" - width="100" /> - <combo_box - height="18" - layout="topleft" - left_delta="120" - name="PPEffectsCombo" - top="15" - width="150" /> - <line_editor - border_style="line" - border_thickness="1" - follows="left|right|bottom" - font="SansSerif" - height="20" - label="Effect Name" - layout="topleft" - left_delta="0" - max_length_bytes="40" - name="PPEffectNameEditor" - tab_group="1" - top_pad="22" - width="150" /> - </panel> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_sound_devices.xml b/indra/newview/skins/default/xui/en/floater_sound_devices.xml deleted file mode 100644 index dec0e9b6c6..0000000000 --- a/indra/newview/skins/default/xui/en/floater_sound_devices.xml +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater - border_visible="false" - border="false" - legacy_header_height="18" - can_minimize="true" - can_resize="false" - can_close="false" - chrome="true" - save_dock_state="true" - save_visibility="true" - save_rect="true" - single_instance="true" - bevel_style="in" - height="164" - layout="topleft" - name="floater_sound_devices" - title="SOUND DEVICES" - width="490"> - <panel - layout="topleft" - follows="all" - filename="panel_sound_devices.xml" - name="device_settings_panel" - width="400" - left="10" - top="26" - class="panel_voice_device_settings"/> - <text - name="voice_label" - top="136" - left="12" - height="14" - width="80" - layout="topleft" - >Voice Chat</text> - <check_box - layout="topleft" - control_name="EnableVoiceChat" - follows="bottom|left" - top="138" - left="80" - name="enable_voice" - width="100" - height="14" - label="Enabled" - /> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_voice_effect.xml b/indra/newview/skins/default/xui/en/floater_voice_effect.xml deleted file mode 100644 index d037bdb813..0000000000 --- a/indra/newview/skins/default/xui/en/floater_voice_effect.xml +++ /dev/null @@ -1,162 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater - legacy_header_height="27" - can_resize="true" - height="500" - name="voice_effects" - help_topic="voice_effects" - title="VOICE MORPHING PREVIEW" - background_visible="true" - label="Places" - layout="topleft" - min_height="360" - min_width="200" - save_rect="true" - width="300"> - <string name="no_voice_effect"> - (No Voice Morph) - </string> - <string name="active_voice_effect"> - (Active) - </string> - <string name="unsubscribed_voice_effect"> - (Unsubscribed) - </string> - <string name="new_voice_effect"> - (New!) - </string> - - <!-- effect names begin --> - <string name="effect_Arena">Arena</string> - <string name="effect_Beast">Beast</string> - <string name="effect_Buff">Buff</string> - <string name="effect_Buzz">Buzz</string> - <string name="effect_Camille">Camille</string> - <string name="effect_Creepy">Creepy</string> - <string name="effect_CreepyBot">CreepyBot</string> - <string name="effect_Cyber">Cyber</string> - <string name="effect_DeepBot">DeepBot</string> - <string name="effect_Demon">Demon</string> - <string name="effect_Female Elf">Female Elf</string> - <string name="effect_Flirty">Flirty</string> - <string name="effect_Foxy">Foxy</string> - <string name="effect_Halloween 2010 Bonus">Halloween_2010_Bonus</string> - <string name="effect_Helium">Helium</string> - <string name="effect_Husky">Husky</string> - <string name="effect_Husky Whisper">Husky Whisper</string> - <string name="effect_Intercom">Intercom</string> - <string name="effect_Julia">Julia</string> - <string name="effect_Lo Lilt">Lo Lilt</string> - <string name="effect_Macho">Macho</string> - <string name="effect_Micro">Micro</string> - <string name="effect_Mini">Mini</string> - <string name="effect_Model">Model</string> - <string name="effect_Nano">Nano</string> - <string name="effect_Nightmare">Nightmare</string> - <string name="effect_PopBot">PopBot</string> - <string name="effect_Rachel">Rachel</string> - <string name="effect_Radio">Radio</string> - <string name="effect_Robot">Robot</string> - <string name="effect_Roxanne">Roxanne</string> - <string name="effect_Rumble">Rumble</string> - <string name="effect_Sabrina">Sabrina</string> - <string name="effect_Samantha">Samantha</string> - <string name="effect_Sexy">Sexy</string> - <string name="effect_Shorty">Shorty</string> - <string name="effect_Smaller">Smaller</string> - <string name="effect_Sneaky">Sneaky</string> - <string name="effect_Stallion">Stallion</string> - <string name="effect_Sultry">Sultry</string> - <string name="effect_Thunder">Thunder</string> - <string name="effect_Vixen">Vixen</string> - <string name="effect_WhinyBot">WhinyBot</string> - <!-- effect names end --> - - <text - height="16" - word_wrap="true" - use_ellipses="true" - type="string" - follows="left|top|right" - layout="topleft" - font="SansSerifBold" - color="White" - left="10" - name="preview_text" - right="-10" - top="27">To Preview - </text> - <text - height="23" - word_wrap="true" - use_ellipses="true" - type="string" - follows="left|top|right" - layout="topleft" - left="10" - name="status_text" - right="-5" - top_pad="0"> -Record a sample, then click on a voice to hear how it will sound. - </text> - <button - follows="left|top" - height="23" - label="Record" - layout="topleft" - left="10" - name="record_btn" - tool_tip="Record a sample of your voice." - top_pad="5" - width="100"> - <button.commit_callback - function="VoiceEffect.Record" /> - </button> - <button - follows="left|top" - height="23" - label="Stop" - layout="topleft" - left_delta="0" - name="record_stop_btn" - top_delta="0" - width="100"> - <button.commit_callback - function="VoiceEffect.Stop" /> - </button> - <text - height="23" - halign="right" - use_ellipses="true" - type="string" - follows="left|top|right" - layout="topleft" - left_pad="10" - top_delta="10" - name="voice_morphing_link" - right="-10"> - [[URL] Subscribe Now] - </text> - <scroll_list - bottom="-10" - draw_heading="true" - follows="all" - layout="topleft" - left="10" - multi_select="false" - name="voice_effect_list" - right="-10" - tool_tip="Record a sample of your voice, then click an effect to preview." - top="95"> - <scroll_list.columns - label="Voice Name" - name="name" - relative_width="0.60" /> - <scroll_list.columns - dynamic_width="true" - label="Expires" - name="expires" - relative_width="0.30" /> - </scroll_list> - -</floater> diff --git a/indra/newview/skins/default/xui/en/menu_attachment_self.xml b/indra/newview/skins/default/xui/en/menu_attachment_self.xml index d978619355..c9adf46ad7 100644 --- a/indra/newview/skins/default/xui/en/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/en/menu_attachment_self.xml @@ -48,6 +48,28 @@ <menu_item_call.on_click function="Object.ShowOriginal" /> </menu_item_call> + <menu_item_call + label="Add to favorites" + layout="topleft" + name="Add to favorites"> + <menu_item_call.on_click + function="Object.SetFavorite" + parameter="Add" /> + <menu_item_call.on_visible + function="Object.EnableFavorites" + parameter="Add"/> + </menu_item_call> + <menu_item_call + label="Remove from favorites" + layout="topleft" + name="Remove from favorites"> + <menu_item_call.on_click + function="Object.SetFavorite" + parameter="Remove" /> + <menu_item_call.on_visible + function="Object.EnableFavorites" + parameter="Remove" /> + </menu_item_call> <menu_item_separator layout="topleft" /> diff --git a/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml b/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml index 97f53d3a17..f85f897700 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory_view_default.xml @@ -53,11 +53,7 @@ function="Inventory.GearDefault.Visible" parameter="multi_folder_view" /> </menu_item_check> - <menu_item_separator> - <menu_item_separator.on_visible - function="Inventory.GearDefault.Visible" - parameter="single_folder_view" /> - </menu_item_separator> + <menu_item_separator/> <menu_item_check label="List view" layout="topleft" @@ -100,4 +96,46 @@ function="Inventory.GearDefault.Visible" parameter="single_folder_view" /> </menu_item_check> + <menu_item_check + label="Recent tab" + layout="topleft" + name="recent_tab"> + <on_click + function="Inventory.GearDefault.Custom.Action" + parameter="toggle_recent_tab" /> + <on_check + function="Inventory.GearDefault.Check" + parameter="recent_tab" /> + <on_visible + function="Inventory.GearDefault.Visible" + parameter="multi_folder_view" /> + </menu_item_check> + <menu_item_check + label="Worn tab" + layout="topleft" + name="worn_tab"> + <on_click + function="Inventory.GearDefault.Custom.Action" + parameter="toggle_worn_tab" /> + <on_check + function="Inventory.GearDefault.Check" + parameter="worn_tab" /> + <on_visible + function="Inventory.GearDefault.Visible" + parameter="multi_folder_view" /> + </menu_item_check> + <menu_item_check + label="Favorites tab" + layout="topleft" + name="favorites_tab"> + <on_click + function="Inventory.GearDefault.Custom.Action" + parameter="toggle_favorites_tab" /> + <on_check + function="Inventory.GearDefault.Check" + parameter="favorites_tab" /> + <on_visible + function="Inventory.GearDefault.Visible" + parameter="multi_folder_view" /> + </menu_item_check> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index ba43e80eda..ffe4bcebd5 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -960,7 +960,8 @@ </menu_item_check> <menu_item_check label="Midday (Legacy)" - name="legacy noon"> + name="legacy noon" + shortcut="control|shift|T"> <menu_item_check.on_click function="World.EnvSettings" parameter="legacy noon" /> @@ -992,7 +993,8 @@ </menu_item_check> <menu_item_check label="Use Shared Environment" - name="Use Shared Environment"> + name="Use Shared Environment" + shortcut="control|shift|X"> <menu_item_check.on_click function="World.EnvSettings" parameter="region" /> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index b9ab457f3b..bc69242651 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -9711,6 +9711,22 @@ Are you sure you want to leave this call? <notification icon="alertmodal.tga" + name="ConfirmLeaveAdhoc" + type="alertmodal"> +Are you sure you want to leave this conference chat? + <tag>confirm</tag> + <tag>voice</tag> + <usetemplate + ignoretext="Confirm before I leave conference chat" + name="okcancelignore" + notext="No" + yestext="Yes"> + <unique/> + </usetemplate> + </notification> + + <notification + icon="alertmodal.tga" name="ConfirmMuteAll" type="alert"> You have selected to mute all participants in a group call. diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml index aa641a35f7..08b3ef69b6 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml @@ -295,16 +295,16 @@ tool_tip="Show username, like bobsmith123" top_delta="0" /> <check_box - control_name="NameTagShowGroupTitles" - enabled_control="AvatarNameTagMode" + control_name="UseDisplayNames" + follows="top|left" height="16" - label="Group titles" + label="Display names" layout="topleft" left="35" - width="100" - name="show_all_title_checkbox1" - tool_tip="Show group titles, like Officer or Member" - top_pad="3" /> + name="display_names_check" + width="100" + tool_tip="Check to use display names in chat, IM, name tags, etc." + top_pad="3"/> <check_box control_name="NameTagShowFriends" enabled_control="AvatarNameTagMode" @@ -313,19 +313,29 @@ layout="topleft" left_pad="50" name="show_friends" - tool_tip="Highlight the name tags of your friends"/> - <check_box - control_name="UseDisplayNames" - follows="top|left" - height="16" - label="View Display Names" - layout="topleft" - left="35" - name="display_names_check" - width="237" - tool_tip="Check to use display names in chat, IM, name tags, etc." - top_pad="3"/> - + tool_tip="Highlight the name tags of your friends"/> + <combo_box + height="23" + layout="topleft" + control_name="GroupTitlesTagMode" + enabled_control="AvatarNameTagMode" + left="39" + top_pad="3" + name="group_title" + width="130"> + <combo_box.item + label="No group tags" + name="no_tags" + value="0" /> + <combo_box.item + label="Only my group tag" + name="my_tag" + value="1" /> + <combo_box.item + label="All group tags" + name="all_tags" + value="2" /> + </combo_box> <text type="string" length="1" @@ -334,7 +344,7 @@ layout="topleft" left="30" name="inworld_typing_rg_label" - top_pad="1" + top_pad="4" width="400"> Pressing letter keys: </text> diff --git a/indra/newview/skins/default/xui/en/panel_voice_effect.xml b/indra/newview/skins/default/xui/en/panel_voice_effect.xml deleted file mode 100644 index 42cd510efd..0000000000 --- a/indra/newview/skins/default/xui/en/panel_voice_effect.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel - follows="all" - height="26" - layout="topleft" - name="panel_voice_effect" - width="200"> - <string name="no_voice_effect"> - Voice Morphing Off - </string> - <string name="preview_voice_effects"> - Preview Voice Morphing ▶ - </string> - <string name="get_voice_effects"> - Get Voice Morphing ▶ - </string> - <combo_box - enabled="false" - follows="left|top|right" - height="23" - name="voice_effect" - tool_tip="Select a Voice Morph to change your voice" - top_pad="0" - width="200"> - <combo_box.item - label="Voice Morphing Off" - name="no_voice_effect" - top_pad="0" - value="0" /> - <combo_box.commit_callback - function="Voice.CommitVoiceEffect" /> - </combo_box> -</panel> diff --git a/indra/newview/skins/default/xui/es/floater_big_preview.xml b/indra/newview/skins/default/xui/es/floater_big_preview.xml deleted file mode 100644 index b112243d7a..0000000000 --- a/indra/newview/skins/default/xui/es/floater_big_preview.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_big_preview" title="VISTA PREVIA"/> diff --git a/indra/newview/skins/default/xui/es/floater_post_process.xml b/indra/newview/skins/default/xui/es/floater_post_process.xml deleted file mode 100644 index 5c62ccde36..0000000000 --- a/indra/newview/skins/default/xui/es/floater_post_process.xml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Post-Process Floater" title="CONFIGURACIÓN DEL PROCESAMIENTO"> - <tab_container name="Post-Process Tabs"> - <panel label="Color del filtro" name="wmiColorFilterPanel"> - <check_box label="Activar" name="wmiColorFilterToggle"/> - <text name="wmiColorFilterBrightnessText"> - Brillo - </text> - <text name="wmiColorFilterSaturationText"> - Saturación - </text> - <text name="wmiColorFilterContrastText"> - Contraste - </text> - <text name="wmiColorFilterBaseText"> - Color base del contraste - </text> - <slider label="R" name="wmiColorFilterBaseR"/> - <slider label="V" name="wmiColorFilterBaseG"/> - <slider label="A" name="wmiColorFilterBaseB"/> - <slider label="I" name="wmiColorFilterBaseI"/> - </panel> - <panel label="Visión nocturna" name="wmiNightVisionPanel"> - <check_box label="Activar" name="wmiNightVisionToggle"/> - <text name="wmiNightVisionBrightMultText"> - Amplificación de luz - </text> - <text name="wmiNightVisionNoiseSizeText"> - Cantidad de ruido - </text> - <text name="wmiNightVisionNoiseStrengthText"> - Intensidad del ruido - </text> - </panel> - <panel label="Bloom" name="wmiBloomPanel"> - <check_box label="Activar" name="wmiBloomToggle"/> - <text name="wmiBloomExtractText"> - Extracción de la luminosidad - </text> - <text name="wmiBloomSizeText"> - Bloom: cantidad - </text> - <text name="wmiBloomStrengthText"> - Bloom: intensidad - </text> - </panel> - <panel label="Extras" name="Extras"> - <button label="Cargar efecto" label_selected="Cargar efecto" name="PPLoadEffect"/> - <button label="Guardar efecto" label_selected="Guardar efecto" name="PPSaveEffect"/> - <line_editor label="Nombre del efecto" name="PPEffectNameEditor"/> - </panel> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/es/floater_sound_devices.xml b/indra/newview/skins/default/xui/es/floater_sound_devices.xml deleted file mode 100644 index 0291f9e796..0000000000 --- a/indra/newview/skins/default/xui/es/floater_sound_devices.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_sound_devices" title="DISPOSITIVOS DE SONIDO"> - <text name="voice_label"> - Chat de voz - </text> - <check_box label="Activados" name="enable_voice"/> -</floater> diff --git a/indra/newview/skins/default/xui/es/floater_voice_effect.xml b/indra/newview/skins/default/xui/es/floater_voice_effect.xml deleted file mode 100644 index 02ebe80ff7..0000000000 --- a/indra/newview/skins/default/xui/es/floater_voice_effect.xml +++ /dev/null @@ -1,138 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater label="Lugares" name="voice_effects" title="PROBAR TRANSFORMACIÓN DE VOZ"> - <string name="no_voice_effect"> - (Sin transformación de voz) - </string> - <string name="active_voice_effect"> - (Activo) - </string> - <string name="unsubscribed_voice_effect"> - (Suscripción cancelada) - </string> - <string name="new_voice_effect"> - (¡Nuevo!) - </string> - <string name="effect_Arena"> - Campo - </string> - <string name="effect_Beast"> - Bestia - </string> - <string name="effect_Buff"> - Musculoso - </string> - <string name="effect_Buzz"> - Murmullo - </string> - <string name="effect_Camille"> - Camila - </string> - <string name="effect_Creepy"> - Aterrador - </string> - <string name="effect_CreepyBot"> - Robot aterrador - </string> - <string name="effect_Cyber"> - Cyber - </string> - <string name="effect_DeepBot"> - Robot profundo - </string> - <string name="effect_Demon"> - Diablo - </string> - <string name="effect_Flirty"> - Coqueta - </string> - <string name="effect_Foxy"> - Astuto - </string> - <string name="effect_Halloween_2010_Bonus"> - Halloween_2010_Bonus - </string> - <string name="effect_Helium"> - Helio - </string> - <string name="effect_Husky"> - Corpulento - </string> - <string name="effect_Intercom"> - Intercom - </string> - <string name="effect_Macho"> - Macho - </string> - <string name="effect_Micro"> - Micro - </string> - <string name="effect_Mini"> - Mini - </string> - <string name="effect_Nano"> - Nano - </string> - <string name="effect_Nightmare"> - Pesadilla - </string> - <string name="effect_PopBot"> - Robot pop - </string> - <string name="effect_Rachel"> - Raquel - </string> - <string name="effect_Radio"> - Radio - </string> - <string name="effect_Robot"> - Robot - </string> - <string name="effect_Roxanne"> - Roxana - </string> - <string name="effect_Sabrina"> - Sabrina - </string> - <string name="effect_Samantha"> - Samanta - </string> - <string name="effect_Sexy"> - Sexy - </string> - <string name="effect_Shorty"> - Bajito - </string> - <string name="effect_Sneaky"> - Furtivo - </string> - <string name="effect_Stallion"> - Mujeriego - </string> - <string name="effect_Sultry"> - Sensual - </string> - <string name="effect_Thunder"> - Trueno - </string> - <string name="effect_Vixen"> - Tigresa - </string> - <string name="effect_WhinyBot"> - Robot llorica - </string> - <text name="preview_text"> - Para probarla - </text> - <text name="status_text"> - Graba una muestra y pulsa en una voz para escuchar cómo suena. - </text> - <button label="Grabar" name="record_btn" tool_tip="Graba una muestra de tu voz."/> - <button label="Parar" name="record_stop_btn"/> - <text name="voice_morphing_link"> - [[URL] Suscríbete ahora] - </text> - <scroll_list name="voice_effect_list" tool_tip="Graba una muestra de tu voz y pulsa en un efecto para ver cómo suena."> - <scroll_list.columns label="Nombre de la voz" name="name"/> - <scroll_list.columns label="Caduca" name="expires"/> - </scroll_list> -</floater> diff --git a/indra/newview/skins/default/xui/es/panel_voice_effect.xml b/indra/newview/skins/default/xui/es/panel_voice_effect.xml deleted file mode 100644 index 94a0428941..0000000000 --- a/indra/newview/skins/default/xui/es/panel_voice_effect.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_voice_effect"> - <string name="no_voice_effect"> - Transformación de voz desactivada - </string> - <string name="preview_voice_effects"> - Probar transformación de voz ▶ - </string> - <string name="get_voice_effects"> - Obtener transformación de voz ▶ - </string> - <combo_box name="voice_effect" tool_tip="Selecciona una transformación de voz para cambiar tu voz"> - <combo_box.item label="Transformación de voz desactivada" name="no_voice_effect"/> - </combo_box> -</panel> diff --git a/indra/newview/skins/default/xui/fr/floater_big_preview.xml b/indra/newview/skins/default/xui/fr/floater_big_preview.xml deleted file mode 100644 index 0c09a4c188..0000000000 --- a/indra/newview/skins/default/xui/fr/floater_big_preview.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_big_preview" title="APERÇU"/> diff --git a/indra/newview/skins/default/xui/fr/floater_post_process.xml b/indra/newview/skins/default/xui/fr/floater_post_process.xml deleted file mode 100644 index a22c7512e5..0000000000 --- a/indra/newview/skins/default/xui/fr/floater_post_process.xml +++ /dev/null @@ -1,54 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Post-Process Floater" title="PARAMÈTRES POST-TRAITEMENT"> - <tab_container name="Post-Process Tabs"> - <panel label="Filtre couleur" name="wmiColorFilterPanel"> - <check_box label="Activer" name="wmiColorFilterToggle" /> - <text name="wmiColorFilterBrightnessText"> - Luminosité - </text> - <text name="wmiColorFilterSaturationText"> - Saturation - </text> - <text name="wmiColorFilterContrastText"> - Contraste - </text> - <text name="wmiColorFilterBaseText"> - Couleur de base du contraste - </text> - <slider label="R" name="wmiColorFilterBaseR" /> - <slider label="V" name="wmiColorFilterBaseG" /> - <slider label="B" name="wmiColorFilterBaseB" /> - <slider label="I" name="wmiColorFilterBaseI" /> - </panel> - <panel label="Vision de nuit" name="wmiNightVisionPanel"> - <check_box label="Activer" name="wmiNightVisionToggle" /> - <text name="wmiNightVisionBrightMultText"> - Multiple d'amplificateur de lumière - </text> - <text name="wmiNightVisionNoiseSizeText"> - Taille du bruit - </text> - <text name="wmiNightVisionNoiseStrengthText"> - Force du bruit - </text> - </panel> - <panel label="Éclat" name="wmiBloomPanel"> - <check_box label="Activer" name="wmiBloomToggle" /> - <text name="wmiBloomExtractText"> - Extraction de la luminosité - </text> - <text name="wmiBloomSizeText"> - Taille de l'éclat - </text> - <text name="wmiBloomStrengthText"> - Force de l'éclat - </text> - </panel> - <panel label="Extras" name="Extras"> - <button label="Charger effet" label_selected="Charger effet" name="PPLoadEffect" /> - <button label="Enregistrer effet" label_selected="Enregistrer effet" - name="PPSaveEffect" /> - <line_editor label="Nom de l'effet" name="PPEffectNameEditor" /> - </panel> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_sound_devices.xml b/indra/newview/skins/default/xui/fr/floater_sound_devices.xml deleted file mode 100644 index 080ade9dd4..0000000000 --- a/indra/newview/skins/default/xui/fr/floater_sound_devices.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_sound_devices" title="PERIPHERIQUES AUDIO"> - <text name="voice_label"> - Chat vocal - </text> - <check_box label="Activé" name="enable_voice"/> -</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_voice_effect.xml b/indra/newview/skins/default/xui/fr/floater_voice_effect.xml deleted file mode 100644 index f9a76d127e..0000000000 --- a/indra/newview/skins/default/xui/fr/floater_voice_effect.xml +++ /dev/null @@ -1,159 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater label="Endroits" name="voice_effects" title="APERÇU DES EFFETS DE VOIX"> - <string name="no_voice_effect"> - (Aucun effet de voix) - </string> - <string name="active_voice_effect"> - (Actif) - </string> - <string name="unsubscribed_voice_effect"> - (Pas d'abonnement) - </string> - <string name="new_voice_effect"> - (Nouveau !) - </string> - <string name="effect_Arena"> - Stade - </string> - <string name="effect_Beast"> - Brute - </string> - <string name="effect_Buff"> - Nasal - </string> - <string name="effect_Buzz"> - Friture - </string> - <string name="effect_Camille"> - Camille - </string> - <string name="effect_Creepy"> - Effrayant - </string> - <string name="effect_CreepyBot"> - BotEffrayant - </string> - <string name="effect_Cyber"> - Cyber - </string> - <string name="effect_DeepBot"> - BotGrave - </string> - <string name="effect_Demon"> - Démon - </string> - <string name="effect_Female Elf"> - Femme elfe - </string> - <string name="effect_Flirty"> - Flirt - </string> - <string name="effect_Foxy"> - Séduction - </string> - <string name="effect_Halloween 2010 Bonus"> - Halloween_2010_Bonus - </string> - <string name="effect_Helium"> - Hélium - </string> - <string name="effect_Husky"> - Rauque - </string> - <string name="effect_Husky Whisper"> - Murmure rauque - </string> - <string name="effect_Intercom"> - Interphone - </string> - <string name="effect_Julia"> - Julia - </string> - <string name="effect_Lo Lilt"> - Mélodieux - </string> - <string name="effect_Macho"> - Macho - </string> - <string name="effect_Micro"> - Micro - </string> - <string name="effect_Mini"> - Mini - </string> - <string name="effect_Model"> - Modèle - </string> - <string name="effect_Nano"> - Nano - </string> - <string name="effect_Nightmare"> - Cauchemar - </string> - <string name="effect_PopBot"> - BotPop - </string> - <string name="effect_Rachel"> - Rachel - </string> - <string name="effect_Radio"> - Radio - </string> - <string name="effect_Robot"> - Robot - </string> - <string name="effect_Roxanne"> - Roxanne - </string> - <string name="effect_Rumble"> - Grondement - </string> - <string name="effect_Sabrina"> - Sabrina - </string> - <string name="effect_Samantha"> - Samantha - </string> - <string name="effect_Sexy"> - Sexy - </string> - <string name="effect_Shorty"> - Petite voix - </string> - <string name="effect_Smaller"> - Plus faible - </string> - <string name="effect_Sneaky"> - Sournois - </string> - <string name="effect_Stallion"> - Étalon - </string> - <string name="effect_Sultry"> - Sensuel - </string> - <string name="effect_Thunder"> - Tonnerre - </string> - <string name="effect_Vixen"> - Mégère - </string> - <string name="effect_WhinyBot"> - BotPleurnichard - </string> - <text name="preview_text"> - Aperçu - </text> - <text name="status_text"> - Enregistrez un extrait et cliquez sur un effet pour obtenir un aperçu. - </text> - <button label="Enregistrer" name="record_btn" tool_tip="Enregistrez un extrait de votre voix."/> - <button label="Arrêter" name="record_stop_btn"/> - <text name="voice_morphing_link"> - [[URL] S'abonner] - </text> - <scroll_list name="voice_effect_list" tool_tip="Enregistrez un extrait de votre voix, puis cliquez sur un effet pour obtenir un aperçu."> - <scroll_list.columns label="Nom de l'effet" name="name"/> - <scroll_list.columns label="Date d'expiration" name="expires"/> - </scroll_list> -</floater> diff --git a/indra/newview/skins/default/xui/fr/panel_voice_effect.xml b/indra/newview/skins/default/xui/fr/panel_voice_effect.xml deleted file mode 100644 index a134854706..0000000000 --- a/indra/newview/skins/default/xui/fr/panel_voice_effect.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_voice_effect"> - <string name="no_voice_effect"> - Effet de voix désactivé - </string> - <string name="preview_voice_effects"> - Aperçu des effets de voix ▶ - </string> - <string name="get_voice_effects"> - Obtenir un effet de voix ▶ - </string> - <combo_box name="voice_effect" tool_tip="Sélectionner un effet pour modifier le son de votre voix"> - <combo_box.item label="Effet de voix désactivé" name="no_voice_effect"/> - </combo_box> -</panel> diff --git a/indra/newview/skins/default/xui/it/floater_big_preview.xml b/indra/newview/skins/default/xui/it/floater_big_preview.xml deleted file mode 100644 index 7bc50a6d39..0000000000 --- a/indra/newview/skins/default/xui/it/floater_big_preview.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_big_preview" title="ANTEPRIMA"/> diff --git a/indra/newview/skins/default/xui/it/floater_post_process.xml b/indra/newview/skins/default/xui/it/floater_post_process.xml deleted file mode 100644 index 3aa8b29101..0000000000 --- a/indra/newview/skins/default/xui/it/floater_post_process.xml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Post-Process Floater" title="IMPOSTAZIONI DI POST-PRODUZIONE"> - <tab_container name="Post-Process Tabs"> - <panel label="Filtro Colore" name="wmiColorFilterPanel"> - <check_box label="Abilita" name="wmiColorFilterToggle"/> - <text name="wmiColorFilterBrightnessText"> - Luminosità - </text> - <text name="wmiColorFilterSaturationText"> - Saturazione - </text> - <text name="wmiColorFilterContrastText"> - Contrasto - </text> - <text name="wmiColorFilterBaseText"> - Colore Base Contrasto - </text> - <slider label="R" name="wmiColorFilterBaseR"/> - <slider label="G" name="wmiColorFilterBaseG"/> - <slider label="B" name="wmiColorFilterBaseB"/> - <slider label="I" name="wmiColorFilterBaseI"/> - </panel> - <panel label="Visione Notturna" name="wmiNightVisionPanel"> - <check_box label="Abilita" name="wmiNightVisionToggle"/> - <text name="wmiNightVisionBrightMultText"> - Amplificazione Multipla Luce - </text> - <text name="wmiNightVisionNoiseSizeText"> - Ampiezza disturbo - </text> - <text name="wmiNightVisionNoiseStrengthText"> - Forza disturbo - </text> - </panel> - <panel label="Raggiatura" name="wmiBloomPanel"> - <check_box label="Abilita" name="wmiBloomToggle"/> - <text name="wmiBloomExtractText"> - Estrazione luminosità - </text> - <text name="wmiBloomSizeText"> - Dimensione raggiatura - </text> - <text name="wmiBloomStrengthText"> - Forza raggiatura - </text> - </panel> - <panel label="Extra" name="Extras"> - <button label="Carica effetto" label_selected="Carica effetto" name="PPLoadEffect"/> - <button label="Salva effetto" label_selected="Salva effetto" name="PPSaveEffect"/> - <line_editor label="Nome Effetto" name="PPEffectNameEditor"/> - </panel> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/it/floater_sound_devices.xml b/indra/newview/skins/default/xui/it/floater_sound_devices.xml deleted file mode 100644 index 9799b48d89..0000000000 --- a/indra/newview/skins/default/xui/it/floater_sound_devices.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_sound_devices" title="DISPOSITIVI AUDIO"> - <text name="voice_label"> - Chat vocale - </text> - <check_box label="Abilitato" name="enable_voice"/> -</floater> diff --git a/indra/newview/skins/default/xui/it/floater_voice_effect.xml b/indra/newview/skins/default/xui/it/floater_voice_effect.xml deleted file mode 100644 index f102622f5d..0000000000 --- a/indra/newview/skins/default/xui/it/floater_voice_effect.xml +++ /dev/null @@ -1,159 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater label="Luoghi" name="voice_effects" title="ANTEPRIMA MANIPOLAZIONE VOCE"> - <string name="no_voice_effect"> - (Nessuna manipolazione voce) - </string> - <string name="active_voice_effect"> - (Attivato) - </string> - <string name="unsubscribed_voice_effect"> - (Iscrizione annullata) - </string> - <string name="new_voice_effect"> - (Nuovo!) - </string> - <string name="effect_Arena"> - Arena - </string> - <string name="effect_Beast"> - Bestia - </string> - <string name="effect_Buff"> - Appassionato - </string> - <string name="effect_Buzz"> - Euforia - </string> - <string name="effect_Camille"> - Camilla - </string> - <string name="effect_Creepy"> - Terrificante - </string> - <string name="effect_CreepyBot"> - TerrificanteBot - </string> - <string name="effect_Cyber"> - Cyber - </string> - <string name="effect_DeepBot"> - ProfondoBot - </string> - <string name="effect_Demon"> - Demonio - </string> - <string name="effect_Female Elf"> - Elfo donna - </string> - <string name="effect_Flirty"> - Civettuolo - </string> - <string name="effect_Foxy"> - Scaltro - </string> - <string name="effect_Halloween 2010 Bonus"> - Halloween_2010_Bonus - </string> - <string name="effect_Helium"> - Elio - </string> - <string name="effect_Husky"> - Fusto - </string> - <string name="effect_Husky Whisper"> - Sospiro rauco - </string> - <string name="effect_Intercom"> - Interfono - </string> - <string name="effect_Julia"> - Julia - </string> - <string name="effect_Lo Lilt"> - Inflessione bassa - </string> - <string name="effect_Macho"> - Macho - </string> - <string name="effect_Micro"> - Micro - </string> - <string name="effect_Mini"> - Mini - </string> - <string name="effect_Model"> - Modella - </string> - <string name="effect_Nano"> - Nano - </string> - <string name="effect_Nightmare"> - Incubo - </string> - <string name="effect_PopBot"> - PopBot - </string> - <string name="effect_Rachel"> - Rachele - </string> - <string name="effect_Radio"> - Radio - </string> - <string name="effect_Robot"> - Robot - </string> - <string name="effect_Roxanne"> - Rosanna - </string> - <string name="effect_Rumble"> - Rombo - </string> - <string name="effect_Sabrina"> - Sabrina - </string> - <string name="effect_Samantha"> - Samanta - </string> - <string name="effect_Sexy"> - Sexy - </string> - <string name="effect_Shorty"> - Bassotto - </string> - <string name="effect_Smaller"> - Più piccolo - </string> - <string name="effect_Sneaky"> - Vile - </string> - <string name="effect_Stallion"> - Stallone - </string> - <string name="effect_Sultry"> - Focoso - </string> - <string name="effect_Thunder"> - Tuono - </string> - <string name="effect_Vixen"> - Maliziosa - </string> - <string name="effect_WhinyBot"> - PiangiBot - </string> - <text name="preview_text"> - Per l'anteprima - </text> - <text name="status_text"> - Registra un campione di voce, quindi fai clic su un effetto per ascoltare il risultato. - </text> - <button label="Registra" name="record_btn" tool_tip="Registra un campione della tua voce."/> - <button label="Ferma" name="record_stop_btn"/> - <text name="voice_morphing_link"> - [[URL] Subscribe Now] - </text> - <scroll_list name="voice_effect_list" tool_tip="Registra un campione della tua voce, quindi fai clic su uno degli effetti per un'anteprima del risultato."> - <scroll_list.columns label="Nome effetto" name="name"/> - <scroll_list.columns label="Scade il" name="expires"/> - </scroll_list> -</floater> diff --git a/indra/newview/skins/default/xui/it/panel_voice_effect.xml b/indra/newview/skins/default/xui/it/panel_voice_effect.xml deleted file mode 100644 index b43f766e5e..0000000000 --- a/indra/newview/skins/default/xui/it/panel_voice_effect.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_voice_effect"> - <string name="no_voice_effect"> - Disattiva manipolazione voce - </string> - <string name="preview_voice_effects"> - Anteprima manipolazione voce ▶ - </string> - <string name="get_voice_effects"> - Ottieni manipolazione voce ▶ - </string> - <combo_box name="voice_effect" tool_tip="Scegli un effetto di manipolazione per modificare il suono della tua voce"> - <combo_box.item label="Disattiva manipolazione voce" name="no_voice_effect"/> - </combo_box> -</panel> diff --git a/indra/newview/skins/default/xui/ja/floater_big_preview.xml b/indra/newview/skins/default/xui/ja/floater_big_preview.xml deleted file mode 100644 index e88d6fc488..0000000000 --- a/indra/newview/skins/default/xui/ja/floater_big_preview.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_big_preview" title="プレビュー"/>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/ja/floater_post_process.xml b/indra/newview/skins/default/xui/ja/floater_post_process.xml deleted file mode 100644 index 91ecbb73a2..0000000000 --- a/indra/newview/skins/default/xui/ja/floater_post_process.xml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Post-Process Floater" title="ポストプロセス設定"> - <tab_container name="Post-Process Tabs"> - <panel label="カラー・フィルタ" name="wmiColorFilterPanel"> - <check_box label="有効" name="wmiColorFilterToggle"/> - <text name="wmiColorFilterBrightnessText"> - 明度 - </text> - <text name="wmiColorFilterSaturationText"> - 彩度 - </text> - <text name="wmiColorFilterContrastText"> - 輝度 - </text> - <text name="wmiColorFilterBaseText"> - 輝度の基準色 - </text> - <slider label="赤" name="wmiColorFilterBaseR"/> - <slider label="緑" name="wmiColorFilterBaseG"/> - <slider label="青" name="wmiColorFilterBaseB"/> - <slider label="I" name="wmiColorFilterBaseI"/> - </panel> - <panel label="暗視" name="wmiNightVisionPanel"> - <check_box label="有効" name="wmiNightVisionToggle"/> - <text name="wmiNightVisionBrightMultText"> - 光の増幅(マルチ) - </text> - <text name="wmiNightVisionNoiseSizeText"> - ノイズ・サイズ - </text> - <text name="wmiNightVisionNoiseStrengthText"> - ノイズ強度 - </text> - </panel> - <panel label="ブルーム" name="wmiBloomPanel"> - <check_box label="有効" name="wmiBloomToggle"/> - <text name="wmiBloomExtractText"> - 明度の抽出 - </text> - <text name="wmiBloomSizeText"> - ブルーム・サイズ - </text> - <text name="wmiBloomStrengthText"> - ブルーム強度 - </text> - </panel> - <panel label="その他" name="Extras"> - <button label="効果読み込み" label_selected="効果読み込み" name="PPLoadEffect"/> - <button label="効果保存" label_selected="効果保存" name="PPSaveEffect"/> - <line_editor label="効果名" name="PPEffectNameEditor"/> - </panel> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_sound_devices.xml b/indra/newview/skins/default/xui/ja/floater_sound_devices.xml deleted file mode 100644 index 28d2388bed..0000000000 --- a/indra/newview/skins/default/xui/ja/floater_sound_devices.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_sound_devices" title="サウンドデバイス"> - <text name="voice_label"> - ボイスチャット - </text> - <check_box label="有効" name="enable_voice"/> -</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_voice_effect.xml b/indra/newview/skins/default/xui/ja/floater_voice_effect.xml deleted file mode 100644 index b38ea9331a..0000000000 --- a/indra/newview/skins/default/xui/ja/floater_voice_effect.xml +++ /dev/null @@ -1,159 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater label="場所" name="voice_effects" title="ボイスモーフィングのプレビュー"> - <string name="no_voice_effect"> - (ボイスモーフィングなし) - </string> - <string name="active_voice_effect"> - (アクティブ) - </string> - <string name="unsubscribed_voice_effect"> - (取消し済み) - </string> - <string name="new_voice_effect"> - (新登場!) - </string> - <string name="effect_Arena"> - アリーナ - </string> - <string name="effect_Beast"> - 野獣 - </string> - <string name="effect_Buff"> - がっしり - </string> - <string name="effect_Buzz"> - ブザー - </string> - <string name="effect_Camille"> - カミール - </string> - <string name="effect_Creepy"> - 気味の悪い - </string> - <string name="effect_CreepyBot"> - 気味わるボット - </string> - <string name="effect_Cyber"> - サイバー - </string> - <string name="effect_DeepBot"> - ディープボット - </string> - <string name="effect_Demon"> - デーモン - </string> - <string name="effect_Female Elf"> - 女性のエルフ - </string> - <string name="effect_Flirty"> - 気のありそうな - </string> - <string name="effect_Foxy"> - 魅惑的 - </string> - <string name="effect_Halloween 2010 Bonus"> - ハロウィン_2010_ボーナス - </string> - <string name="effect_Helium"> - ヘリウム - </string> - <string name="effect_Husky"> - ハスキー - </string> - <string name="effect_Husky Whisper"> - スモーキーウィスパー - </string> - <string name="effect_Intercom"> - インターホン - </string> - <string name="effect_Julia"> - ジュリア - </string> - <string name="effect_Lo Lilt"> - 軽快 - </string> - <string name="effect_Macho"> - マッチョ - </string> - <string name="effect_Micro"> - ミクロ - </string> - <string name="effect_Mini"> - ミニ - </string> - <string name="effect_Model"> - モデル - </string> - <string name="effect_Nano"> - ナノ - </string> - <string name="effect_Nightmare"> - 悪夢 - </string> - <string name="effect_PopBot"> - ポップボット - </string> - <string name="effect_Rachel"> - レイチェル - </string> - <string name="effect_Radio"> - ラジオ - </string> - <string name="effect_Robot"> - ロボット - </string> - <string name="effect_Roxanne"> - ロクサン - </string> - <string name="effect_Rumble"> - ランブル - </string> - <string name="effect_Sabrina"> - サブリナ - </string> - <string name="effect_Samantha"> - サマンサ - </string> - <string name="effect_Sexy"> - セクシー - </string> - <string name="effect_Shorty"> - チビ - </string> - <string name="effect_Smaller"> - 小さめ - </string> - <string name="effect_Sneaky"> - コソコソ - </string> - <string name="effect_Stallion"> - 雄馬 - </string> - <string name="effect_Sultry"> - 艶かしい - </string> - <string name="effect_Thunder"> - サンダー - </string> - <string name="effect_Vixen"> - 性悪な - </string> - <string name="effect_WhinyBot"> - 不機嫌ボット - </string> - <text name="preview_text"> - プレビュー - </text> - <text name="status_text"> - 声をテスト録音してからボイスエフェクトを1つクリックして聞いてみます。 - </text> - <button label="録音" name="record_btn" tool_tip="あなたの声を録音します。"/> - <button label="停止" name="record_stop_btn"/> - <text name="voice_morphing_link"> - [[URL] 今すぐ申し込む] - </text> - <scroll_list name="voice_effect_list" tool_tip="声を録音してボイスモーフィングを1つクリックすると、そのエフェクトをプレビューできます。"> - <scroll_list.columns label="ボイス名" name="name"/> - <scroll_list.columns label="有効期限" name="expires"/> - </scroll_list> -</floater> diff --git a/indra/newview/skins/default/xui/ja/panel_voice_effect.xml b/indra/newview/skins/default/xui/ja/panel_voice_effect.xml deleted file mode 100644 index 57a1bb7838..0000000000 --- a/indra/newview/skins/default/xui/ja/panel_voice_effect.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_voice_effect"> - <string name="no_voice_effect"> - ボイスモーフィングなし - </string> - <string name="preview_voice_effects"> - ボイスモーフィングをプレビュー - </string> - <string name="get_voice_effects"> - ボイスモーフィングを取得 - </string> - <combo_box name="voice_effect" tool_tip="ボイスモーフィングを選択してボイスを変更"> - <combo_box.item label="ボイスモーフィングなし" name="no_voice_effect"/> - </combo_box> -</panel> diff --git a/indra/newview/skins/default/xui/pl/floater_big_preview.xml b/indra/newview/skins/default/xui/pl/floater_big_preview.xml deleted file mode 100644 index e730cff618..0000000000 --- a/indra/newview/skins/default/xui/pl/floater_big_preview.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> -<floater name="floater_big_preview" title="PODGLĄD" /> diff --git a/indra/newview/skins/default/xui/pl/floater_post_process.xml b/indra/newview/skins/default/xui/pl/floater_post_process.xml deleted file mode 100644 index 47c40d2315..0000000000 --- a/indra/newview/skins/default/xui/pl/floater_post_process.xml +++ /dev/null @@ -1,49 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Post-Process Floater" title="USTAWIENIA PRZETWARZANIA KOŃCOWEGO"> - <tab_container name="Post-Process Tabs"> - <panel label="Filtr koloru" name="wmiColorFilterPanel"> - <check_box label="Włącz" name="wmiColorFilterToggle" /> - <text name="wmiColorFilterBrightnessText"> - Jasność - </text> - <text name="wmiColorFilterSaturationText"> - Nasycenie - </text> - <text name="wmiColorFilterContrastText"> - Kontrast - </text> - <text name="wmiColorFilterBaseText"> - Kontrast koloru podstawowego - </text> - </panel> - <panel label="Noktowizja" name="wmiNightVisionPanel"> - <check_box label="Włącz" name="wmiNightVisionToggle" /> - <text name="wmiNightVisionBrightMultText"> - Wielokrotne wzmocnienie światła - </text> - <text name="wmiNightVisionNoiseSizeText"> - Rozmiar szumu - </text> - <text name="wmiNightVisionNoiseStrengthText"> - Moc szumu - </text> - </panel> - <panel label="Poświata" name="wmiBloomPanel"> - <check_box label="Włącz" name="wmiBloomToggle" /> - <text name="wmiBloomExtractText"> - Ekstracja luminacji - </text> - <text name="wmiBloomSizeText"> - Rozmiar poświaty - </text> - <text name="wmiBloomStrengthText"> - Moc poświaty - </text> - </panel> - <panel label="Dodatki" name="Extras"> - <button label="Wczytaj efekt" label_selected="Wczytaj efekt" name="PPLoadEffect" /> - <button label="Zapisz efekt" label_selected="Zapisz efekt" name="PPSaveEffect" /> - <line_editor label="Nazwa efektu" name="PPEffectNameEditor" /> - </panel> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_sound_devices.xml b/indra/newview/skins/default/xui/pl/floater_sound_devices.xml deleted file mode 100644 index 93a27f68a7..0000000000 --- a/indra/newview/skins/default/xui/pl/floater_sound_devices.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_sound_devices" title="URZĄDZENIA DŹWIĘKOWE"> - <text name="voice_label"> - Czat głos. - </text> - <check_box name="enable_voice" label="Włączone" /> -</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_voice_effect.xml b/indra/newview/skins/default/xui/pl/floater_voice_effect.xml deleted file mode 100644 index b02266caa9..0000000000 --- a/indra/newview/skins/default/xui/pl/floater_voice_effect.xml +++ /dev/null @@ -1,98 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="voice_effects" title="PODGLĄD PRZEKSZTAŁCANIA GŁOSU" label="Miejsca"> - <string name="no_voice_effect"> - (Bez Przekształcania) - </string> - <string name="active_voice_effect"> - (Aktywny) - </string> - <string name="unsubscribed_voice_effect"> - (Bez subskrybcji) - </string> - <string name="new_voice_effect"> - (Nowy!) - </string> - <string name="effect_Beast"> - Bestia - </string> - <string name="effect_Buzz"> - Brzęczenie - </string> - <string name="effect_Creepy"> - Przerażający - </string> - <string name="effect_Cyber"> - Cybernetyczny - </string> - <string name="effect_Female Elf"> - Kobiecy Elf - </string> - <string name="effect_Flirty"> - Flirt - </string> - <string name="effect_Foxy"> - Ponętny - </string> - <string name="effect_Helium"> - Hel - </string> - <string name="effect_Husky Whisper"> - Szept Husky - </string> - <string name="effect_Macho"> - Maczo - </string> - <string name="effect_Micro"> - Mikrus - </string> - <string name="effect_Mini"> - Miniaturowy - </string> - <string name="effect_Nano"> - Malutki - </string> - <string name="effect_Nightmare"> - Koszmar - </string> - <string name="effect_Rumble"> - Burczenie - </string> - <string name="effect_Sexy"> - Seksowny - </string> - <string name="effect_Shorty"> - Krótki - </string> - <string name="effect_Smaller"> - Mniejszy - </string> - <string name="effect_Sneaky"> - Podstępny - </string> - <string name="effect_Stallion"> - Ogier - </string> - <string name="effect_Sultry"> - Gorąco - </string> - <string name="effect_Thunder"> - Grzmot - </string> - <string name="effect_Vixen"> - Lisica - </string> - <text name="preview_text"> - Podgląd - </text> - <text name="status_text"> - Nagraj próbkę, a następnie kliknij na głos aby usłyszeć jego brzmienie. - </text> - <button label="Nagraj" name="record_btn" tool_tip="Nagraj próbkę swojego głosu." /> - <text name="voice_morphing_link"> - [[URL] Subskrybuj teraz] - </text> - <scroll_list name="voice_effect_list" tool_tip="Nagraj próbkę swojego głosu, a następnie kliknij na efekt aby odsłuchać podgląd."> - <scroll_list.columns label="Nazwa głosu" name="name" /> - <scroll_list.columns label="Wygasa" name="expires" /> - </scroll_list> -</floater> diff --git a/indra/newview/skins/default/xui/pl/panel_voice_effect.xml b/indra/newview/skins/default/xui/pl/panel_voice_effect.xml deleted file mode 100644 index 94878943a1..0000000000 --- a/indra/newview/skins/default/xui/pl/panel_voice_effect.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel name="panel_voice_effect"> - <string name="no_voice_effect"> - Wyłącz Przekształcanie - </string> - <string name="preview_voice_effects"> - Przeglądaj Przekształcania ▶ - </string> - <string name="get_voice_effects"> - Uzyskaj Przekształcanie ▶ - </string> - <combo_box name="voice_effect" tool_tip="Wybierz odpowienie Przekształcanie Głosu, aby zmienić brzmienie swojego głosu"> - <combo_box.item label="Wyłącz Przekształcanie" name="no_voice_effect" /> - </combo_box> -</panel> diff --git a/indra/newview/skins/default/xui/pt/floater_big_preview.xml b/indra/newview/skins/default/xui/pt/floater_big_preview.xml deleted file mode 100644 index 76ca176689..0000000000 --- a/indra/newview/skins/default/xui/pt/floater_big_preview.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_big_preview" title="VISUALIZAR"/> diff --git a/indra/newview/skins/default/xui/pt/floater_post_process.xml b/indra/newview/skins/default/xui/pt/floater_post_process.xml deleted file mode 100644 index d4f2e96539..0000000000 --- a/indra/newview/skins/default/xui/pt/floater_post_process.xml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Post-Process Floater" title="AJUSTES DE PÓS-PROCESSAMENTO"> - <tab_container name="Post-Process Tabs"> - <panel label="Filtro de Cor" name="wmiColorFilterPanel"> - <check_box label="Habilitar" name="wmiColorFilterToggle"/> - <text name="wmiColorFilterBrightnessText"> - Brilho - </text> - <text name="wmiColorFilterSaturationText"> - Saturação - </text> - <text name="wmiColorFilterContrastText"> - Contraste - </text> - <text name="wmiColorFilterBaseText"> - Cor Base do Contraste - </text> - <slider label="R" name="wmiColorFilterBaseR"/> - <slider label="G" name="wmiColorFilterBaseG"/> - <slider label="B" name="wmiColorFilterBaseB"/> - <slider label="I" name="wmiColorFilterBaseI"/> - </panel> - <panel label="visão Noturna" name="wmiNightVisionPanel"> - <check_box label="Habilitar" name="wmiNightVisionToggle"/> - <text name="wmiNightVisionBrightMultText"> - Múltiplo de Amplificação de Luz - </text> - <text name="wmiNightVisionNoiseSizeText"> - Tamanho de Ruído - </text> - <text name="wmiNightVisionNoiseStrengthText"> - Intensidade de Ruído - </text> - </panel> - <panel label="Florescência" name="wmiBloomPanel"> - <check_box label="Habilitar" name="wmiBloomToggle"/> - <text name="wmiBloomExtractText"> - Extração de Luminosidade - </text> - <text name="wmiBloomSizeText"> - Tamanho da florescência - </text> - <text name="wmiBloomStrengthText"> - Inensidade da florescência - </text> - </panel> - <panel label="Extras" name="Extras"> - <button label="CarregaEfeito" label_selected="CarregaEfeito" name="PPLoadEffect"/> - <button label="SalvaEfeito" label_selected="SalvaEfeito" name="PPSaveEffect"/> - <line_editor label="Nome do Efeito" name="PPEffectNameEditor"/> - </panel> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_sound_devices.xml b/indra/newview/skins/default/xui/pt/floater_sound_devices.xml deleted file mode 100644 index 948d727540..0000000000 --- a/indra/newview/skins/default/xui/pt/floater_sound_devices.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_sound_devices" title="DISPOSITIVOS DE SOM"> - <text name="voice_label"> - Bate-papo de voz - </text> - <check_box label="Ativado" name="enable_voice"/> -</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_voice_effect.xml b/indra/newview/skins/default/xui/pt/floater_voice_effect.xml deleted file mode 100644 index 71d3c33ae5..0000000000 --- a/indra/newview/skins/default/xui/pt/floater_voice_effect.xml +++ /dev/null @@ -1,159 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater label="Lugares" name="voice_effects" title="AMOSTRA DE DISTORÇÃO DE VOZ"> - <string name="no_voice_effect"> - (Não distorcer voz) - </string> - <string name="active_voice_effect"> - (Ativo) - </string> - <string name="unsubscribed_voice_effect"> - (Cancelou) - </string> - <string name="new_voice_effect"> - (Novo!) - </string> - <string name="effect_Arena"> - Arena - </string> - <string name="effect_Beast"> - Fera - </string> - <string name="effect_Buff"> - Entusiasmado - </string> - <string name="effect_Buzz"> - Zumbido - </string> - <string name="effect_Camille"> - Camille - </string> - <string name="effect_Creepy"> - Assustador - </string> - <string name="effect_CreepyBot"> - RobôAssustador - </string> - <string name="effect_Cyber"> - Cyber - </string> - <string name="effect_DeepBot"> - RobôVozGrossa - </string> - <string name="effect_Demon"> - Demônio - </string> - <string name="effect_Female Elf"> - Elfa - </string> - <string name="effect_Flirty"> - Paquerador - </string> - <string name="effect_Foxy"> - Sensual - </string> - <string name="effect_Halloween 2010 Bonus"> - Bônus_Halloween_2010 - </string> - <string name="effect_Helium"> - Hélio - </string> - <string name="effect_Husky"> - Rouco - </string> - <string name="effect_Husky Whisper"> - Sussurro rouco - </string> - <string name="effect_Intercom"> - Interfone - </string> - <string name="effect_Julia"> - Julia - </string> - <string name="effect_Lo Lilt"> - Cantarolado baixo - </string> - <string name="effect_Macho"> - Macho - </string> - <string name="effect_Micro"> - Micro - </string> - <string name="effect_Mini"> - Mini - </string> - <string name="effect_Model"> - Modelo - </string> - <string name="effect_Nano"> - Nano - </string> - <string name="effect_Nightmare"> - Pesadelo - </string> - <string name="effect_PopBot"> - RobôPop - </string> - <string name="effect_Rachel"> - Rachel - </string> - <string name="effect_Radio"> - Rádio - </string> - <string name="effect_Robot"> - Robô - </string> - <string name="effect_Roxanne"> - Roxanne - </string> - <string name="effect_Rumble"> - Ronco - </string> - <string name="effect_Sabrina"> - Sabrina - </string> - <string name="effect_Samantha"> - Samantha - </string> - <string name="effect_Sexy"> - Sexy - </string> - <string name="effect_Shorty"> - Baixinho - </string> - <string name="effect_Smaller"> - Menor - </string> - <string name="effect_Sneaky"> - Sorrateiro - </string> - <string name="effect_Stallion"> - Garanhão - </string> - <string name="effect_Sultry"> - Ardente - </string> - <string name="effect_Thunder"> - Trovão - </string> - <string name="effect_Vixen"> - Maliciosa - </string> - <string name="effect_WhinyBot"> - RobôReclamão - </string> - <text name="preview_text"> - Visualizar - </text> - <text name="status_text"> - Grave uma amostra da sua voz, depois clique em um efeito para ouvir o resultado. - </text> - <button label="Gravar" name="record_btn" tool_tip="Grave uma amostra da sua voz."/> - <button label="Parar" name="record_stop_btn"/> - <text name="voice_morphing_link"> - [[URL] Assine agora] - </text> - <scroll_list name="voice_effect_list" tool_tip="Grave sua voz por alguns instantes, depois clique num efeito para ouvir a distorção."> - <scroll_list.columns label="Nome da voz" name="name"/> - <scroll_list.columns label="Vence em" name="expires"/> - </scroll_list> -</floater> diff --git a/indra/newview/skins/default/xui/pt/panel_voice_effect.xml b/indra/newview/skins/default/xui/pt/panel_voice_effect.xml deleted file mode 100644 index 1d7878408a..0000000000 --- a/indra/newview/skins/default/xui/pt/panel_voice_effect.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_voice_effect"> - <string name="no_voice_effect"> - Distorção de voz desligada - </string> - <string name="preview_voice_effects"> - Checar distorção de voz ▶ - </string> - <string name="get_voice_effects"> - Distorcer voz ▶ - </string> - <combo_box name="voice_effect" tool_tip="Selecione um efeito de distorção para mudar sua voz."> - <combo_box.item label="Distorção de voz desligada" name="no_voice_effect"/> - </combo_box> -</panel> diff --git a/indra/newview/skins/default/xui/ru/floater_big_preview.xml b/indra/newview/skins/default/xui/ru/floater_big_preview.xml deleted file mode 100644 index cdacebadef..0000000000 --- a/indra/newview/skins/default/xui/ru/floater_big_preview.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_big_preview" title="ПРОСМОТР"/> diff --git a/indra/newview/skins/default/xui/ru/floater_post_process.xml b/indra/newview/skins/default/xui/ru/floater_post_process.xml deleted file mode 100644 index ae97670548..0000000000 --- a/indra/newview/skins/default/xui/ru/floater_post_process.xml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Post-Process Floater" title="НАСТРОЙКИ ПОСЛЕДУЮЩЕЙ ОБРАБОТКИ"> - <tab_container name="Post-Process Tabs"> - <panel label="Цветовой фильтр" name="wmiColorFilterPanel"> - <check_box label="Вкл." name="wmiColorFilterToggle"/> - <text name="wmiColorFilterBrightnessText"> - Яркость - </text> - <text name="wmiColorFilterSaturationText"> - Насыщенность - </text> - <text name="wmiColorFilterContrastText"> - Контрастность - </text> - <text name="wmiColorFilterBaseText"> - Основной цвет контрастности - </text> - <slider label="К" name="wmiColorFilterBaseR"/> - <slider label="З" name="wmiColorFilterBaseG"/> - <slider label="С" name="wmiColorFilterBaseB"/> - <slider label="И" name="wmiColorFilterBaseI"/> - </panel> - <panel label="Ночное видение" name="wmiNightVisionPanel"> - <check_box label="Вкл." name="wmiNightVisionToggle"/> - <text name="wmiNightVisionBrightMultText"> - Коэффициент усиления света - </text> - <text name="wmiNightVisionNoiseSizeText"> - Размер искажений - </text> - <text name="wmiNightVisionNoiseStrengthText"> - Мощность искажений - </text> - </panel> - <panel label="Ореол" name="wmiBloomPanel"> - <check_box label="Вкл." name="wmiBloomToggle"/> - <text name="wmiBloomExtractText"> - Яркость света - </text> - <text name="wmiBloomSizeText"> - Размер ореола - </text> - <text name="wmiBloomStrengthText"> - Мощность ореола - </text> - </panel> - <panel label="Дополнительно" name="Extras"> - <button label="Загрузить эффект" label_selected="Загрузить эффект" name="PPLoadEffect"/> - <button label="Сохранить эффект" label_selected="Сохранить эффект" name="PPSaveEffect"/> - <line_editor label="Название эффекта" name="PPEffectNameEditor"/> - </panel> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/ru/floater_sound_devices.xml b/indra/newview/skins/default/xui/ru/floater_sound_devices.xml deleted file mode 100644 index fc8de858cd..0000000000 --- a/indra/newview/skins/default/xui/ru/floater_sound_devices.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_sound_devices" title="ЗВУКОВЫЕ УСТРОЙСТВА"> - <text name="voice_label"> - Голосовой чат - </text> - <check_box label="Включен" name="enable_voice"/> -</floater> diff --git a/indra/newview/skins/default/xui/ru/floater_voice_effect.xml b/indra/newview/skins/default/xui/ru/floater_voice_effect.xml deleted file mode 100644 index d3cef042a3..0000000000 --- a/indra/newview/skins/default/xui/ru/floater_voice_effect.xml +++ /dev/null @@ -1,159 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater label="Места" name="voice_effects" title="ПРОСМОТР ИЗМЕНЕНИЯ ГОЛОСА"> - <string name="no_voice_effect"> - (Нет изменения голоса) - </string> - <string name="active_voice_effect"> - (Активно) - </string> - <string name="unsubscribed_voice_effect"> - (Нет подписки) - </string> - <string name="new_voice_effect"> - (Новый!) - </string> - <string name="effect_Arena"> - Arena - </string> - <string name="effect_Beast"> - Beast - </string> - <string name="effect_Buff"> - Buff - </string> - <string name="effect_Buzz"> - Buzz - </string> - <string name="effect_Camille"> - Camille - </string> - <string name="effect_Creepy"> - Creepy - </string> - <string name="effect_CreepyBot"> - CreepyBot - </string> - <string name="effect_Cyber"> - Cyber - </string> - <string name="effect_DeepBot"> - DeepBot - </string> - <string name="effect_Demon"> - Demon - </string> - <string name="effect_Female Elf"> - Фея - </string> - <string name="effect_Flirty"> - Flirty - </string> - <string name="effect_Foxy"> - Foxy - </string> - <string name="effect_Halloween 2010 Bonus"> - Бонус_за_Хэллоуин_2010 - </string> - <string name="effect_Helium"> - Helium - </string> - <string name="effect_Husky"> - Husky - </string> - <string name="effect_Husky Whisper"> - Хриплый шепот - </string> - <string name="effect_Intercom"> - Внутренняя связь - </string> - <string name="effect_Julia"> - Julia - </string> - <string name="effect_Lo Lilt"> - Напев - </string> - <string name="effect_Macho"> - Macho - </string> - <string name="effect_Micro"> - Micro - </string> - <string name="effect_Mini"> - Mini - </string> - <string name="effect_Model"> - Модель - </string> - <string name="effect_Nano"> - Nano - </string> - <string name="effect_Nightmare"> - Nightmare - </string> - <string name="effect_PopBot"> - PopBot - </string> - <string name="effect_Rachel"> - Rachel - </string> - <string name="effect_Radio"> - Radio - </string> - <string name="effect_Robot"> - Robot - </string> - <string name="effect_Roxanne"> - Roxanne - </string> - <string name="effect_Rumble"> - Урчание - </string> - <string name="effect_Sabrina"> - Sabrina - </string> - <string name="effect_Samantha"> - Samantha - </string> - <string name="effect_Sexy"> - Sexy - </string> - <string name="effect_Shorty"> - Shorty - </string> - <string name="effect_Smaller"> - Меньше - </string> - <string name="effect_Sneaky"> - Sneaky - </string> - <string name="effect_Stallion"> - Stallion - </string> - <string name="effect_Sultry"> - Sultry - </string> - <string name="effect_Thunder"> - Thunder - </string> - <string name="effect_Vixen"> - Vixen - </string> - <string name="effect_WhinyBot"> - WhinyBot - </string> - <text name="preview_text"> - Прослушивание - </text> - <text name="status_text"> - Запишите образец, затем щелкните, чтобы услышать, как будет звучать голос. - </text> - <button label="Запись" name="record_btn" tool_tip="Записать образец вашего голоса."/> - <button label="Стоп" name="record_stop_btn"/> - <text name="voice_morphing_link"> - [[URL] Подписаться] - </text> - <scroll_list name="voice_effect_list" tool_tip="Запишите образец вашего голоса, затем щелкните, чтобы прослушать эффект."> - <scroll_list.columns label="Название голоса" name="name"/> - <scroll_list.columns label="Истекает" name="expires"/> - </scroll_list> -</floater> diff --git a/indra/newview/skins/default/xui/ru/panel_voice_effect.xml b/indra/newview/skins/default/xui/ru/panel_voice_effect.xml deleted file mode 100644 index de0b38198f..0000000000 --- a/indra/newview/skins/default/xui/ru/panel_voice_effect.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_voice_effect"> - <string name="no_voice_effect"> - Изменение голоса отключено - </string> - <string name="preview_voice_effects"> - Прослушать изменение голоса ▶ - </string> - <string name="get_voice_effects"> - Приобрести изменение голоса ▶ - </string> - <combo_box name="voice_effect" tool_tip="Выбор типа изменения для своего голоса"> - <combo_box.item label="Изменение голоса отключено" name="no_voice_effect"/> - </combo_box> -</panel> diff --git a/indra/newview/skins/default/xui/tr/floater_big_preview.xml b/indra/newview/skins/default/xui/tr/floater_big_preview.xml deleted file mode 100644 index c99a71d3c2..0000000000 --- a/indra/newview/skins/default/xui/tr/floater_big_preview.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_big_preview" title="ÖNİZLEME"/> diff --git a/indra/newview/skins/default/xui/tr/floater_post_process.xml b/indra/newview/skins/default/xui/tr/floater_post_process.xml deleted file mode 100644 index 5e419f8ffa..0000000000 --- a/indra/newview/skins/default/xui/tr/floater_post_process.xml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Post-Process Floater" title="İŞLEM SONRASI AYARLARI"> - <tab_container name="Post-Process Tabs"> - <panel label="Renk Filtresi" name="wmiColorFilterPanel"> - <check_box label="Etkinleştir" name="wmiColorFilterToggle"/> - <text name="wmiColorFilterBrightnessText"> - Parlaklık - </text> - <text name="wmiColorFilterSaturationText"> - Doygunluk - </text> - <text name="wmiColorFilterContrastText"> - Kontrast - </text> - <text name="wmiColorFilterBaseText"> - Kontrast Baz Rengi - </text> - <slider label="R" name="wmiColorFilterBaseR"/> - <slider label="G" name="wmiColorFilterBaseG"/> - <slider label="B" name="wmiColorFilterBaseB"/> - <slider label="I" name="wmiColorFilterBaseI"/> - </panel> - <panel label="Gece Görüşü" name="wmiNightVisionPanel"> - <check_box label="Etkinleştir" name="wmiNightVisionToggle"/> - <text name="wmiNightVisionBrightMultText"> - Işık Yükseltme Çarpanı - </text> - <text name="wmiNightVisionNoiseSizeText"> - Gürültü Büyüklüğü - </text> - <text name="wmiNightVisionNoiseStrengthText"> - Gürültü Gücü - </text> - </panel> - <panel label="Işıma" name="wmiBloomPanel"> - <check_box label="Etkinleştir" name="wmiBloomToggle"/> - <text name="wmiBloomExtractText"> - Parlaklık Çıkarma - </text> - <text name="wmiBloomSizeText"> - Işıma Büyüklüğü - </text> - <text name="wmiBloomStrengthText"> - Işıma Gücü - </text> - </panel> - <panel label="Ekstralar" name="Extras"> - <button label="EfektYükle" label_selected="EfektYükle" name="PPLoadEffect"/> - <button label="EfektKaydet" label_selected="EfektKaydet" name="PPSaveEffect"/> - <line_editor label="Efekt Adı" name="PPEffectNameEditor"/> - </panel> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/tr/floater_sound_devices.xml b/indra/newview/skins/default/xui/tr/floater_sound_devices.xml deleted file mode 100644 index 470a222d7e..0000000000 --- a/indra/newview/skins/default/xui/tr/floater_sound_devices.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_sound_devices" title="SES CİHAZLARI"> - <text name="voice_label"> - Sesli Sohbet - </text> - <check_box label="Etkin" name="enable_voice"/> -</floater> diff --git a/indra/newview/skins/default/xui/tr/floater_voice_effect.xml b/indra/newview/skins/default/xui/tr/floater_voice_effect.xml deleted file mode 100644 index 7a157244cd..0000000000 --- a/indra/newview/skins/default/xui/tr/floater_voice_effect.xml +++ /dev/null @@ -1,159 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater label="Yerler" name="voice_effects" title="SES ŞEKİLLENDİRME ÖNİZLEMESİ"> - <string name="no_voice_effect"> - (Ses Şekillendirme Yok) - </string> - <string name="active_voice_effect"> - (Etkin) - </string> - <string name="unsubscribed_voice_effect"> - (Abonelik İptal) - </string> - <string name="new_voice_effect"> - (Yeni!) - </string> - <string name="effect_Arena"> - Arena - </string> - <string name="effect_Beast"> - Yaratık - </string> - <string name="effect_Buff"> - Yapılı - </string> - <string name="effect_Buzz"> - Vızıltı - </string> - <string name="effect_Camille"> - Camille - </string> - <string name="effect_Creepy"> - Korkutucu - </string> - <string name="effect_CreepyBot"> - KorkutucuBot - </string> - <string name="effect_Cyber"> - Siber - </string> - <string name="effect_DeepBot"> - DerinBot - </string> - <string name="effect_Demon"> - İblis - </string> - <string name="effect_Female Elf"> - Dişi Cin - </string> - <string name="effect_Flirty"> - Cilveli - </string> - <string name="effect_Foxy"> - Alımlı - </string> - <string name="effect_Halloween 2010 Bonus"> - Halloween_2010_Bonus - </string> - <string name="effect_Helium"> - Helyum - </string> - <string name="effect_Husky"> - Güçlü - </string> - <string name="effect_Husky Whisper"> - Boğuk Fısıltı - </string> - <string name="effect_Intercom"> - İnterkom - </string> - <string name="effect_Julia"> - Julia - </string> - <string name="effect_Lo Lilt"> - Yavaş Mırıltı - </string> - <string name="effect_Macho"> - Maço - </string> - <string name="effect_Micro"> - Mikro - </string> - <string name="effect_Mini"> - Mini - </string> - <string name="effect_Model"> - Model - </string> - <string name="effect_Nano"> - Nano - </string> - <string name="effect_Nightmare"> - Kabus - </string> - <string name="effect_PopBot"> - PopBot - </string> - <string name="effect_Rachel"> - Rachel - </string> - <string name="effect_Radio"> - Radyo - </string> - <string name="effect_Robot"> - Robot - </string> - <string name="effect_Roxanne"> - Roxanne - </string> - <string name="effect_Rumble"> - Gurultu - </string> - <string name="effect_Sabrina"> - Sabrina - </string> - <string name="effect_Samantha"> - Samantha - </string> - <string name="effect_Sexy"> - Seksi - </string> - <string name="effect_Shorty"> - Bücür - </string> - <string name="effect_Smaller"> - Daha Küçük - </string> - <string name="effect_Sneaky"> - Sinsi - </string> - <string name="effect_Stallion"> - Maskülen - </string> - <string name="effect_Sultry"> - İhtiraslı - </string> - <string name="effect_Thunder"> - Gök gürültüsü - </string> - <string name="effect_Vixen"> - Çekici - </string> - <string name="effect_WhinyBot"> - AğlakBot - </string> - <text name="preview_text"> - Önizleme için - </text> - <text name="status_text"> - Bir örnek kaydettikten sonra sese tıklayarak nasıl olduğunu duyun. - </text> - <button label="Kaydet" name="record_btn" tool_tip="Sesinizin örneğini kaydedin."/> - <button label="Durdur" name="record_stop_btn"/> - <text name="voice_morphing_link"> - [[URL] Hemen Abone Ol] - </text> - <scroll_list name="voice_effect_list" tool_tip="Sesinizin örneğini kaydettikten sonra önizleme için bir efekte tıklayın."> - <scroll_list.columns label="Ses Adı" name="name"/> - <scroll_list.columns label="Bitiş Tarihi" name="expires"/> - </scroll_list> -</floater> diff --git a/indra/newview/skins/default/xui/tr/panel_voice_effect.xml b/indra/newview/skins/default/xui/tr/panel_voice_effect.xml deleted file mode 100644 index b46833d7e6..0000000000 --- a/indra/newview/skins/default/xui/tr/panel_voice_effect.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_voice_effect"> - <string name="no_voice_effect"> - Ses Şekillendirme Kapalı - </string> - <string name="preview_voice_effects"> - Ses Şekillendirme Önizleme ▶ - </string> - <string name="get_voice_effects"> - Ses Şekillendirmeyi Etkinleştir ▶ - </string> - <combo_box name="voice_effect" tool_tip="Sesinizi değiştirmek için bir Ses Şekli seçin"> - <combo_box.item label="Ses Şekillendirme Kapalı" name="no_voice_effect"/> - </combo_box> -</panel> diff --git a/indra/newview/skins/default/xui/zh/floater_big_preview.xml b/indra/newview/skins/default/xui/zh/floater_big_preview.xml deleted file mode 100644 index ae68cd7ddf..0000000000 --- a/indra/newview/skins/default/xui/zh/floater_big_preview.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_big_preview" title="預覽"/> diff --git a/indra/newview/skins/default/xui/zh/floater_post_process.xml b/indra/newview/skins/default/xui/zh/floater_post_process.xml deleted file mode 100644 index 2908f7c1d0..0000000000 --- a/indra/newview/skins/default/xui/zh/floater_post_process.xml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Post-Process Floater" title="後處理設定:"> - <tab_container name="Post-Process Tabs"> - <panel label="顏色過濾" name="wmiColorFilterPanel"> - <check_box label="啟用" name="wmiColorFilterToggle"/> - <text name="wmiColorFilterBrightnessText"> - 亮度 - </text> - <text name="wmiColorFilterSaturationText"> - 飽和度 - </text> - <text name="wmiColorFilterContrastText"> - 對比 - </text> - <text name="wmiColorFilterBaseText"> - 對比基本色 - </text> - <slider label="R" name="wmiColorFilterBaseR"/> - <slider label="G" name="wmiColorFilterBaseG"/> - <slider label="B" name="wmiColorFilterBaseB"/> - <slider label="I" name="wmiColorFilterBaseI"/> - </panel> - <panel label="夜視" name="wmiNightVisionPanel"> - <check_box label="啟用" name="wmiNightVisionToggle"/> - <text name="wmiNightVisionBrightMultText"> - 光放大倍數 - </text> - <text name="wmiNightVisionNoiseSizeText"> - 噪音規模 - </text> - <text name="wmiNightVisionNoiseStrengthText"> - 噪音強度 - </text> - </panel> - <panel label="開花" name="wmiBloomPanel"> - <check_box label="啟用" name="wmiBloomToggle"/> - <text name="wmiBloomExtractText"> - 光度萃取 - </text> - <text name="wmiBloomSizeText"> - 開花大小 - </text> - <text name="wmiBloomStrengthText"> - 開花強度 - </text> - </panel> - <panel label="其他" name="Extras"> - <button label="LoadEffect" label_selected="LoadEffect" name="PPLoadEffect"/> - <button label="SaveEffect" label_selected="SaveEffect" name="PPSaveEffect"/> - <line_editor label="效果名稱" name="PPEffectNameEditor"/> - </panel> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/zh/floater_sound_devices.xml b/indra/newview/skins/default/xui/zh/floater_sound_devices.xml deleted file mode 100644 index 0374c74f8f..0000000000 --- a/indra/newview/skins/default/xui/zh/floater_sound_devices.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_sound_devices" title="聲音裝置"> - <text name="voice_label"> - 語音聊天 - </text> - <check_box label="已啟用" name="enable_voice"/> -</floater> diff --git a/indra/newview/skins/default/xui/zh/floater_voice_effect.xml b/indra/newview/skins/default/xui/zh/floater_voice_effect.xml deleted file mode 100644 index aab5fa6028..0000000000 --- a/indra/newview/skins/default/xui/zh/floater_voice_effect.xml +++ /dev/null @@ -1,159 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater label="地點" name="voice_effects" title="語音變聲試聽"> - <string name="no_voice_effect"> - (無變聲效果) - </string> - <string name="active_voice_effect"> - (使用中) - </string> - <string name="unsubscribed_voice_effect"> - (已停止訂用) - </string> - <string name="new_voice_effect"> - (新的!) - </string> - <string name="effect_Arena"> - 競技場 - </string> - <string name="effect_Beast"> - 野獸 - </string> - <string name="effect_Buff"> - Buff - </string> - <string name="effect_Buzz"> - Buzz - </string> - <string name="effect_Camille"> - 卡蜜兒 - </string> - <string name="effect_Creepy"> - 怪異 - </string> - <string name="effect_CreepyBot"> - 怪異機器人 - </string> - <string name="effect_Cyber"> - 科幻 - </string> - <string name="effect_DeepBot"> - 深沉機器人 - </string> - <string name="effect_Demon"> - 魔鬼 - </string> - <string name="effect_Female Elf"> - 女性 - 小精靈 - </string> - <string name="effect_Flirty"> - 調情 - </string> - <string name="effect_Foxy"> - 香豔 - </string> - <string name="effect_Halloween 2010 Bonus"> - 2010萬聖節加贈 - </string> - <string name="effect_Helium"> - 氦氣 - </string> - <string name="effect_Husky"> - 沙啞 - </string> - <string name="effect_Husky Whisper"> - 沙啞耳語 - </string> - <string name="effect_Intercom"> - 對講機 - </string> - <string name="effect_Julia"> - 茱莉亞 - </string> - <string name="effect_Lo Lilt"> - 輕微抑揚頓挫 - </string> - <string name="effect_Macho"> - 陽剛 - </string> - <string name="effect_Micro"> - Micro - </string> - <string name="effect_Mini"> - 迷你 - </string> - <string name="effect_Model"> - 模型 - </string> - <string name="effect_Nano"> - Nano - </string> - <string name="effect_Nightmare"> - 惡夢 - </string> - <string name="effect_PopBot"> - PopBot - </string> - <string name="effect_Rachel"> - 瑞秋 - </string> - <string name="effect_Radio"> - 收音機 - </string> - <string name="effect_Robot"> - 機器人 - </string> - <string name="effect_Roxanne"> - 蘿姍 - </string> - <string name="effect_Rumble"> - 低沉隆隆聲 - </string> - <string name="effect_Sabrina"> - 薩賓娜 - </string> - <string name="effect_Samantha"> - 姍曼莎 - </string> - <string name="effect_Sexy"> - 性感 - </string> - <string name="effect_Shorty"> - 矮個兒 - </string> - <string name="effect_Smaller"> - 較小 - </string> - <string name="effect_Sneaky"> - 鬼祟 - </string> - <string name="effect_Stallion"> - 種馬 - </string> - <string name="effect_Sultry"> - 勾魂 - </string> - <string name="effect_Thunder"> - 雷聲 - </string> - <string name="effect_Vixen"> - 潑婦 - </string> - <string name="effect_WhinyBot"> - 哭鬧機器人 - </string> - <text name="preview_text"> - 預覽 - </text> - <text name="status_text"> - 錄下一段樣本,再點按聲音檢查結果。 - </text> - <button label="錄音" name="record_btn" tool_tip="錄下一段你的聲音。"/> - <button label="停止" name="record_stop_btn"/> - <text name="voice_morphing_link"> - [[URL] 現在訂用] - </text> - <scroll_list name="voice_effect_list" tool_tip="錄下一段你的聲音,再點選一個效果試聽。"> - <scroll_list.columns label="語音名稱" name="name"/> - <scroll_list.columns label="過期" name="expires"/> - </scroll_list> -</floater> diff --git a/indra/newview/skins/default/xui/zh/panel_voice_effect.xml b/indra/newview/skins/default/xui/zh/panel_voice_effect.xml deleted file mode 100644 index 6c8a452014..0000000000 --- a/indra/newview/skins/default/xui/zh/panel_voice_effect.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_voice_effect"> - <string name="no_voice_effect"> - 關閉變聲效果 - </string> - <string name="preview_voice_effects"> - 預覽變聲效果 ▶ - </string> - <string name="get_voice_effects"> - 取得變聲效果 ▶ - </string> - <combo_box name="voice_effect" tool_tip="選取一個變聲效果來改變你的聲音"> - <combo_box.item label="關閉變聲效果" name="no_voice_effect"/> - </combo_box> -</panel> |
