# Conflicts:
#	indra/llfilesystem/llfilesystem.cpp
#	indra/newview/CMakeLists.txt
#	indra/newview/llfloaterimsessiontab.cpp
#	indra/newview/llfloaterpostprocess.h
#	indra/newview/llfloatersnapshot.cpp
#	indra/newview/llnetmap.cpp
#	indra/newview/llviewerfloaterreg.cpp
#	indra/newview/llviewermenu.cpp
#	indra/newview/llviewertexturelist.cpp
#	indra/newview/skins/default/xui/de/floater_big_preview.xml
#	indra/newview/skins/default/xui/de/floater_post_process.xml
#	indra/newview/skins/default/xui/de/floater_sound_devices.xml
#	indra/newview/skins/default/xui/de/floater_voice_effect.xml
#	indra/newview/skins/default/xui/en/floater_big_preview.xml
#	indra/newview/skins/default/xui/en/floater_post_process.xml
#	indra/newview/skins/default/xui/en/floater_sound_devices.xml
#	indra/newview/skins/default/xui/en/floater_voice_effect.xml
#	indra/newview/skins/default/xui/en/menu_attachment_self.xml
#	indra/newview/skins/default/xui/es/floater_sound_devices.xml
#	indra/newview/skins/default/xui/es/floater_voice_effect.xml
#	indra/newview/skins/default/xui/es/panel_voice_effect.xml
#	indra/newview/skins/default/xui/fr/floater_big_preview.xml
#	indra/newview/skins/default/xui/fr/floater_post_process.xml
#	indra/newview/skins/default/xui/fr/floater_sound_devices.xml
#	indra/newview/skins/default/xui/fr/floater_voice_effect.xml
#	indra/newview/skins/default/xui/fr/panel_voice_effect.xml
#	indra/newview/skins/default/xui/it/floater_big_preview.xml
#	indra/newview/skins/default/xui/it/floater_post_process.xml
#	indra/newview/skins/default/xui/it/floater_sound_devices.xml
#	indra/newview/skins/default/xui/it/floater_voice_effect.xml
#	indra/newview/skins/default/xui/ja/floater_post_process.xml
#	indra/newview/skins/default/xui/ja/floater_voice_effect.xml
#	indra/newview/skins/default/xui/ja/panel_voice_effect.xml
#	indra/newview/skins/default/xui/pl/floater_big_preview.xml
#	indra/newview/skins/default/xui/pl/floater_post_process.xml
#	indra/newview/skins/default/xui/pl/floater_sound_devices.xml
#	indra/newview/skins/default/xui/pl/floater_voice_effect.xml
#	indra/newview/skins/default/xui/pl/panel_voice_effect.xml
#	indra/newview/skins/default/xui/ru/floater_big_preview.xml
#	indra/newview/skins/default/xui/ru/floater_post_process.xml
#	indra/newview/skins/default/xui/ru/floater_sound_devices.xml
#	indra/newview/skins/default/xui/ru/floater_voice_effect.xml
#	indra/newview/skins/default/xui/ru/panel_voice_effect.xml
#	indra/newview/skins/default/xui/zh/floater_big_preview.xml
#	indra/newview/skins/default/xui/zh/floater_post_process.xml
#	indra/newview/skins/default/xui/zh/floater_sound_devices.xml
#	indra/newview/skins/default/xui/zh/floater_voice_effect.xml
#	indra/newview/skins/default/xui/zh/panel_voice_effect.xml
This commit is contained in:
Ansariel
2026-02-17 11:12:19 +01:00
107 changed files with 568 additions and 3939 deletions
+1
View File
@@ -238,6 +238,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.
+7 -25
View File
@@ -77,20 +77,11 @@ 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);
// <FS:Ansariel> IO-streams replacement
//llifstream file(filename, std::ios::binary);
//if (file.is_open())
//{
// file.seekg(0, std::ios::end);
// return file.tellg() > 0;
//}
llstat file_stat;
if (LLFile::stat(filename, &file_stat) == 0)
boost::system::error_code ec;
if (boost::filesystem::exists(filename, ec) && boost::filesystem::is_regular_file(filename, ec))
{
return S_ISREG(file_stat.st_mode) && file_stat.st_size > 0;
return boost::filesystem::file_size(filename, ec) > 0;
}
// </FS:Ansariel>
return false;
}
@@ -131,21 +122,12 @@ S32 LLFileSystem::getFileSize(const LLUUID& file_id, const LLAssetType::EType fi
LL_PROFILE_ZONE_COLOR(tracy::Color::Gold); // <FS:Beq> measure cache performance
const std::string filename = LLDiskCache::metaDataToFilepath(file_id, file_type);
S32 file_size = 0;
// <FS:Ansariel> IO-streams replacement
//llifstream file(filename, std::ios::binary);
//if (file.is_open())
//{
// file.seekg(0, std::ios::end);
// file_size = (S32)file.tellg();
//}
if (llstat file_stat; LLFile::stat(filename, &file_stat) == 0)
boost::system::error_code ec;
if (boost::filesystem::exists(filename, ec) && boost::filesystem::is_regular_file(filename, ec))
{
file_size = static_cast<S32>(file_stat.st_size);
return static_cast<S32>(boost::filesystem::file_size(filename, ec));
}
// </FS:Ansariel>
return file_size;
return 0;
}
bool LLFileSystem::read(U8* buffer, S32 bytes)
+97 -39
View File
@@ -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);
response->addRef();
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 (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();
}
}
catch (std::bad_alloc&)
if (!posted)
{
LLError::LLUserWarningMsg::showOutOfMemory();
LL_ERRS("CoreHTTP") << "Failed to allocate memory for response handling." << 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;
}
}
}
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);
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());
+5 -4
View File
@@ -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;
};
+1 -1
View File
@@ -2194,7 +2194,7 @@ void LLImageGL::calcAlphaChannelOffsetAndStride()
void LLImageGL::analyzeAlpha(const void* data_in, U32 w, U32 h)
{
if(sSkipAnalyzeAlpha || !mNeedsAlphaAndPickMask)
if(!data_in || sSkipAnalyzeAlpha || !mNeedsAlphaAndPickMask)
{
return ;
}
+3 -11
View File
@@ -117,6 +117,7 @@ set(viewer_SOURCE_FILES
fsfavoritegroups.cpp
fsfloaterassetblacklist.cpp
fsfloateravatarrendersettings.cpp
fsfloaterbigpreview.cpp
fsfloaterblocklist.cpp
fsfloatercontacts.cpp
fsfloatercontactsetconfiguration.cpp
@@ -167,7 +168,7 @@ set(viewer_SOURCE_FILES
fsparticipantlist.cpp
fspose.cpp
fsposeranimator.cpp
fsposestate.cpp
fsposestate.cpp
fsposingmotion.cpp
fsprimfeedauth.cpp
fsradar.cpp
@@ -319,7 +320,6 @@ set(viewer_SOURCE_FILES
llfloateravatartextures.cpp
llfloaterbanduration.cpp
llfloaterbeacons.cpp
llfloaterbigpreview.cpp
llfloaterbuildoptions.cpp
llfloaterbulkpermission.cpp
llfloaterbulkupload.cpp
@@ -403,7 +403,6 @@ set(viewer_SOURCE_FILES
# llfloaterperformance.cpp
fsfloaterperformance.cpp # <FS:Beq> restore fs perf floater
llfloaterperms.cpp
llfloaterpostprocess.cpp
llfloaterprofile.cpp
llfloaterpreference.cpp
# llfloaterpreferencesgraphicsadvanced.cpp
@@ -431,7 +430,6 @@ set(viewer_SOURCE_FILES
llfloatersidepanelcontainer.cpp
llfloaterslapptest.cpp
llfloatersnapshot.cpp
llfloatersounddevices.cpp
llfloaterspellchecksettings.cpp
llfloatertelehub.cpp
llfloatertestinspectors.cpp
@@ -443,7 +441,6 @@ set(viewer_SOURCE_FILES
llfloatertranslationsettings.cpp
llfloateruipreview.cpp
llfloaterurlentry.cpp
llfloatervoiceeffect.cpp
llfloatervoicevolume.cpp
llfloaterwebcontent.cpp
llfloaterwhitelistentry.cpp
@@ -639,7 +636,6 @@ set(viewer_SOURCE_FILES
llpanelsnapshotprofile.cpp
llpanelteleporthistory.cpp
llpaneltiptoast.cpp
llpanelvoiceeffect.cpp
#llpaneltopinfobar.cpp # <FS:Zi> unused
llpanelpulldown.cpp
llpanelvoicedevicesettings.cpp
@@ -972,6 +968,7 @@ set(viewer_HEADER_FILES
fsfavoritegroups.h
fsfloaterassetblacklist.h
fsfloateravatarrendersettings.h
fsfloaterbigpreview.h
fsfloaterblocklist.h
fsfloatercontacts.h
fsfloatercontactsetconfiguration.h
@@ -1178,7 +1175,6 @@ set(viewer_HEADER_FILES
llfloateravatartextures.h
llfloaterbanduration.h
llfloaterbeacons.h
llfloaterbigpreview.h
llfloaterbuildoptions.h
llfloaterbulkpermission.h
llfloaterbulkupload.h
@@ -1266,7 +1262,6 @@ set(viewer_HEADER_FILES
# llfloaterperformance.h <FS:Beq/> replaced with fs version due to large changes and likelihood that LL version will not release.
fsfloaterperformance.h
llfloaterperms.h
llfloaterpostprocess.h
llfloaterprofile.h
llfloaterpreference.h
# llfloaterpreferencesgraphicsadvanced.h
@@ -1294,7 +1289,6 @@ set(viewer_HEADER_FILES
llfloatersidepanelcontainer.h
llfloaterslapptest.h
llfloatersnapshot.h
llfloatersounddevices.h
llfloaterspellchecksettings.h
llfloatertelehub.h
llfloatertestinspectors.h
@@ -1306,7 +1300,6 @@ set(viewer_HEADER_FILES
llfloatertranslationsettings.h
llfloateruipreview.h
llfloaterurlentry.h
llfloatervoiceeffect.h
llfloatervoicevolume.h
llfloaterwebcontent.h
llfloaterwhitelistentry.h
@@ -1488,7 +1481,6 @@ set(viewer_HEADER_FILES
llpaneltiptoast.h
llpanelpulldown.h
llpanelvoicedevicesettings.h
llpanelvoiceeffect.h
#llpaneltopinfobar.h # <FS:Zi> unused
llpanelvolume.h
llpanelvolumepulldown.h
+11
View File
@@ -2065,6 +2065,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>
@@ -1,6 +1,6 @@
/**
* @file llfloaterbigpreview.cpp
* @brief Display of extended (big) preview for snapshots and SL Share
* @file fsfloaterbigpreview.cpp
* @brief Display of extended (big) preview for snapshots and SL Share; originally llfloaterbigpreview.cpp
* @author merov@lindenlab.com
*
* $LicenseInfo:firstyear=2013&license=viewerlgpl$
@@ -27,20 +27,20 @@
#include "llviewerprecompiledheaders.h"
#include "llfloaterbigpreview.h"
#include "fsfloaterbigpreview.h"
#include "llsnapshotlivepreview.h"
///////////////////////
//LLFloaterBigPreview//
//FSFloaterBigPreview//
///////////////////////
LLFloaterBigPreview::LLFloaterBigPreview(const LLSD& key) : LLFloater(key),
mPreviewPlaceholder(NULL),
mFloaterOwner(NULL)
FSFloaterBigPreview::FSFloaterBigPreview(const LLSD& key) : LLFloater(key),
mPreviewPlaceholder(nullptr),
mFloaterOwner(nullptr)
{
}
LLFloaterBigPreview::~LLFloaterBigPreview()
FSFloaterBigPreview::~FSFloaterBigPreview()
{
if (mPreviewHandle.get())
{
@@ -48,12 +48,12 @@ LLFloaterBigPreview::~LLFloaterBigPreview()
}
}
void LLFloaterBigPreview::onCancel()
void FSFloaterBigPreview::onCancel()
{
closeFloater();
}
void LLFloaterBigPreview::closeOnFloaterOwnerClosing(LLFloater* floaterp)
void FSFloaterBigPreview::closeOnFloaterOwnerClosing(LLFloater* floaterp)
{
if (isFloaterOwner(floaterp))
{
@@ -61,17 +61,17 @@ void LLFloaterBigPreview::closeOnFloaterOwnerClosing(LLFloater* floaterp)
}
}
bool LLFloaterBigPreview::postBuild()
bool FSFloaterBigPreview::postBuild()
{
mPreviewPlaceholder = getChild<LLUICtrl>("big_preview_placeholder");
return LLFloater::postBuild();
}
void LLFloaterBigPreview::draw()
void FSFloaterBigPreview::draw()
{
LLFloater::draw();
LLSnapshotLivePreview * previewp = static_cast<LLSnapshotLivePreview *>(mPreviewHandle.get());
LLSnapshotLivePreview* previewp = static_cast<LLSnapshotLivePreview*>(mPreviewHandle.get());
// Display the preview if one is available
if (previewp && previewp->getBigThumbnailImage())
@@ -1,6 +1,6 @@
/**
* @file llfloaterbigpreview.h
* @brief Display of extended (big) preview for snapshots
* @brief Display of extended (big) preview for snapshots; originally llfloaterbigpreview.h
* @author merov@lindenlab.com
*
* $LicenseInfo:firstyear=2013&license=viewerlgpl$
@@ -24,19 +24,19 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
#ifndef LL_LLFLOATERBIGPREVIEW_H
#define LL_LLFLOATERBIGPREVIEW_H
#ifndef FS_FLOATERBIGPREVIEW_H
#define FS_FLOATERBIGPREVIEW_H
#include "llfloater.h"
class LLFloaterBigPreview : public LLFloater
class FSFloaterBigPreview : public LLFloater
{
public:
LLFloaterBigPreview(const LLSD& key);
~LLFloaterBigPreview();
FSFloaterBigPreview(const LLSD& key);
~FSFloaterBigPreview();
bool postBuild();
void draw();
bool postBuild() override;
void draw() override;
void onCancel();
void setPreview(LLView* previewp) { mPreviewHandle = previewp->getHandle(); }
@@ -50,5 +50,5 @@ private:
LLFloater* mFloaterOwner;
};
#endif // LL_LLFLOATERBIGPREVIEW_H
#endif // FS_FLOATERBIGPREVIEW_H
+17 -26
View File
@@ -28,34 +28,25 @@
#include "llviewerprecompiledheaders.h"
#include "fsfloaterbigpreview.h"
#include "fsfloaterprimfeed.h"
#include "fsprimfeedauth.h"
#include "fsprimfeedconnect.h"
#include "llagent.h"
#include "llagentui.h"
#include "llcheckboxctrl.h"
#include "llcombobox.h"
#include "llfloaterreg.h"
#include "lliconctrl.h"
#include "llimagefiltersmanager.h"
#include "llresmgr.h" // LLLocale
#include "llsdserialize.h"
#include "llloadingindicator.h"
#include "llslurl.h"
#include "lltrans.h"
#include "llfloatersnapshot.h"
#include "llsnapshotlivepreview.h"
#include "llfloaterbigpreview.h"
#include "llviewerregion.h"
#include "llviewercontrol.h"
#include "llviewermedia.h"
#include "lltabcontainer.h"
#include "llviewerparcelmgr.h"
#include <boost/regex.hpp>
#include "llspinctrl.h"
#include "llviewernetwork.h"
#include "llfloaterreg.h"
#include "llimagefiltersmanager.h"
#include "llnotificationsutil.h"
#include "fsprimfeedauth.h"
#include "llsdserialize.h"
#include "llslurl.h"
#include "llsnapshotlivepreview.h"
#include "llspinctrl.h"
#include "lltrans.h"
#include "lltabcontainer.h"
#include "llviewercontrol.h"
#include "llweb.h"
static LLPanelInjector<FSPrimfeedPhotoPanel> t_panel_photo("fsprimfeedphotopanel");
static LLPanelInjector<FSPrimfeedAccountPanel> t_panel_account("fsprimfeedaccountpanel");
@@ -123,7 +114,7 @@ bool FSPrimfeedPhotoPanel::postBuild()
mCustomSnapshotWidth = getChild<LLSpinCtrl>("custom_snapshot_width");
mCustomSnapshotHeight = getChild<LLSpinCtrl>("custom_snapshot_height");
mKeepAspectRatioCbx = getChild<LLCheckBoxCtrl>("keep_aspect_ratio");
mBigPreviewFloater = LLFloaterReg::getTypedInstance<LLFloaterBigPreview>("big_preview");
mBigPreviewFloater = LLFloaterReg::getTypedInstance<FSFloaterBigPreview>("fs_big_preview");
// Update custom resolution controls with lambdas
mCustomSnapshotWidth->setCommitCallback([this](LLUICtrl*, const LLSD&) { updateResolution(true); });
@@ -290,12 +281,12 @@ void FSPrimfeedPhotoPanel::onClickBigPreview()
// Toggle the preview
if (isPreviewVisible())
{
LLFloaterReg::hideInstance("big_preview");
LLFloaterReg::hideInstance("fs_big_preview");
}
else
{
attachPreview();
LLFloaterReg::showInstance("big_preview");
LLFloaterReg::showInstance("fs_big_preview");
}
}
@@ -826,7 +817,7 @@ FSFloaterPrimfeed::FSFloaterPrimfeed(const LLSD& key) :
void FSFloaterPrimfeed::onClose(bool app_quitting)
{
if (auto big_preview_floater = LLFloaterReg::getTypedInstance<LLFloaterBigPreview>("big_preview"))
if (auto big_preview_floater = LLFloaterReg::getTypedInstance<FSFloaterBigPreview>("fs_big_preview"))
{
big_preview_floater->closeOnFloaterOwnerClosing(this);
}
@@ -835,7 +826,7 @@ void FSFloaterPrimfeed::onClose(bool app_quitting)
void FSFloaterPrimfeed::onCancel()
{
if (auto big_preview_floater = LLFloaterReg::getTypedInstance<LLFloaterBigPreview>("big_preview"))
if (auto big_preview_floater = LLFloaterReg::getTypedInstance<FSFloaterBigPreview>("fs_big_preview"))
{
big_preview_floater->closeOnFloaterOwnerClosing(this);
}
+2 -2
View File
@@ -38,7 +38,7 @@ class LLCheckBoxCtrl;
class LLComboBox;
class LLSnapshotLivePreview;
class LLSpinCtrl;
class LLFloaterBigPreview;
class FSFloaterBigPreview;
/*
* (TODO) Beq: Refactor this with Flickr
@@ -104,7 +104,7 @@ private:
LLSpinCtrl* mCustomSnapshotHeight{ nullptr };
LLCheckBoxCtrl* mKeepAspectRatioCbx{ nullptr };
LLFloaterBigPreview* mBigPreviewFloater{ nullptr };
FSFloaterBigPreview* mBigPreviewFloater{ nullptr };
};
class FSPrimfeedAccountPanel : public LLPanel
+20 -1
View File
@@ -476,6 +476,7 @@ LLAgent::LLAgent() :
// </FS>
mControlFlags(0x00000000),
mLastJumpInputTime(0.0),
mAutoPilot(false),
mAutoPilotFlyOnStop(false),
@@ -892,6 +893,10 @@ void LLAgent::moveUp(S32 direction)
if (direction > 0)
{
if (!getFlying())
{
mLastJumpInputTime = LLTimer::getTotalSeconds();
}
setControlFlags(AGENT_CONTROL_UP_POS | AGENT_CONTROL_FAST_UP);
// <FS:Ansariel> Chalice Yao's crouch toggle
gAgentCamera.resetView(true, false, true);
@@ -3255,7 +3260,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);
}
}
}
+1
View File
@@ -575,6 +575,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()
// <FS> Ignore prejump and always fly
bool mIgnorePrejump;
+24 -4
View File
@@ -1044,6 +1044,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)
{
@@ -1061,8 +1064,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);
}
@@ -1083,7 +1094,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.
@@ -1092,7 +1103,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;
}
}
}
+10 -4
View File
@@ -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;
};
+5 -5
View File
@@ -1550,11 +1550,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
{
+15 -22
View File
@@ -30,36 +30,29 @@
#include "llfloatersnapshot.h" // <FS:Beq/> Fix share to flickr preview again
#include "llfloaterflickr.h"
#include "exoflickr.h"
#include "exoflickrauth.h"
#include "fsfloaterbigpreview.h"
#include "llagent.h"
#include "llagentui.h"
#include "llcheckboxctrl.h"
#include "llcombobox.h"
#include "llflickrconnect.h"
#include "llfloaterreg.h"
#include "lliconctrl.h"
#include "llimagefiltersmanager.h"
#include "llresmgr.h" // LLLocale
#include "llnotificationsutil.h"
#include "llsdserialize.h"
#include "llloadingindicator.h"
#include "llslurl.h"
#include "lltrans.h"
#include "llsnapshotlivepreview.h"
#include "llfloaterbigpreview.h"
#include "llviewerregion.h"
#include "llviewercontrol.h"
#include "llviewermedia.h"
#include "llspinctrl.h"
#include "lltabcontainer.h"
#include "lltrans.h"
#include "llviewercontrol.h"
#include "llviewernetwork.h"
#include "llviewerparcelmgr.h"
#include "llviewerregion.h"
#include <boost/regex.hpp>
#include "llspinctrl.h"
#include "llviewernetwork.h"
#include "llnotificationsutil.h"
#include "exoflickr.h"
#include "exoflickrauth.h"
#include "llnotificationsutil.h"
#include "llviewernetwork.h"
#include <boost/regex.hpp>
static LLPanelInjector<LLFlickrPhotoPanel> t_panel_photo("llflickrphotopanel");
static LLPanelInjector<LLFlickrAccountPanel> t_panel_account("llflickraccountpanel");
@@ -129,7 +122,7 @@ bool LLFlickrPhotoPanel::postBuild()
mRatingComboBox = getChild<LLUICtrl>("rating_combobox");
mPostButton = getChild<LLUICtrl>("post_photo_btn");
mCancelButton = getChild<LLUICtrl>("cancel_photo_btn");
mBigPreviewFloater = dynamic_cast<LLFloaterBigPreview*>(LLFloaterReg::getInstance("big_preview"));
mBigPreviewFloater = dynamic_cast<FSFloaterBigPreview*>(LLFloaterReg::getInstance("fs_big_preview"));
// <FS:Ansariel> FIRE-15112: Allow custom resolution for SLShare
getChild<LLSpinCtrl>("custom_snapshot_width")->setCommitCallback(boost::bind(&LLFlickrPhotoPanel::updateResolution, this, true));
@@ -308,12 +301,12 @@ void LLFlickrPhotoPanel::onClickBigPreview()
// Toggle the preview
if (isPreviewVisible())
{
LLFloaterReg::hideInstance("big_preview");
LLFloaterReg::hideInstance("fs_big_preview");
}
else
{
attachPreview();
LLFloaterReg::showInstance("big_preview");
LLFloaterReg::showInstance("fs_big_preview");
}
}
@@ -861,7 +854,7 @@ LLFloaterFlickr::LLFloaterFlickr(const LLSD& key) : LLFloater(key),
void LLFloaterFlickr::onClose(bool app_quitting)
{
LLFloaterBigPreview* big_preview_floater = dynamic_cast<LLFloaterBigPreview*>(LLFloaterReg::getInstance("big_preview"));
FSFloaterBigPreview* big_preview_floater = dynamic_cast<FSFloaterBigPreview*>(LLFloaterReg::getInstance("fs_big_preview"));
if (big_preview_floater)
{
big_preview_floater->closeOnFloaterOwnerClosing(this);
@@ -871,7 +864,7 @@ void LLFloaterFlickr::onClose(bool app_quitting)
void LLFloaterFlickr::onCancel()
{
LLFloaterBigPreview* big_preview_floater = dynamic_cast<LLFloaterBigPreview*>(LLFloaterReg::getInstance("big_preview"));
FSFloaterBigPreview* big_preview_floater = dynamic_cast<FSFloaterBigPreview*>(LLFloaterReg::getInstance("fs_big_preview"));
if (big_preview_floater)
{
big_preview_floater->closeOnFloaterOwnerClosing(this);
@@ -985,4 +978,4 @@ LLSnapshotLivePreview* LLFloaterFlickr::getPreviewView()
}
return nullptr;
}
//</FS:Beq>
//</FS:Beq>
+2 -3
View File
@@ -29,12 +29,11 @@
#include "llfloater.h"
#include "lltextbox.h"
#include "llviewertexture.h"
class LLIconCtrl;
class LLCheckBoxCtrl;
class LLSnapshotLivePreview;
class LLFloaterBigPreview;
class FSFloaterBigPreview;
class LLFlickrPhotoPanel : public LLPanel
{
@@ -90,7 +89,7 @@ private:
LLUICtrl * mCancelButton;
LLButton * mBtnPreview;
LLFloaterBigPreview * mBigPreviewFloater;
FSFloaterBigPreview * mBigPreviewFloater;
};
class LLFlickrAccountPanel : public LLPanel
+1 -1
View File
@@ -147,7 +147,7 @@ void LLFloaterIMSession::onClickCloseBtn(bool app_qutting)
{
if (app_qutting)
{
LLFloaterIMSessionTab::onClickCloseBtn();
LLFloaterIMSessionTab::onClickCloseBtn(app_qutting);
return;
}
+18
View File
@@ -50,6 +50,7 @@
#include "llfloaterimnearbychat.h"
#include "llgroupiconctrl.h"
#include "lllayoutstack.h"
#include "llnotificationsutil.h"
#include "llpanelemojicomplete.h"
#include "lltoolbarview.h"
@@ -1420,4 +1421,21 @@ 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();
}
}
#endif
+2
View File
@@ -87,6 +87,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);
-229
View File
@@ -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());
}
-72
View File
@@ -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
+17 -4
View File
@@ -141,19 +141,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
+1 -1
View File
@@ -1188,7 +1188,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);
// </FS:Ansariel>
mOriginalHeight = getRect().getHeight();
-86
View File
@@ -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);
}
-49
View File
@@ -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
-289
View File
@@ -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());
// }
//}
-72
View File
@@ -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
+1 -1
View File
@@ -2728,7 +2728,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)
+5
View File
@@ -3438,6 +3438,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
@@ -3469,6 +3471,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
@@ -3487,6 +3491,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;
+8 -1
View File
@@ -869,7 +869,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()
+29 -5
View File
@@ -47,8 +47,8 @@
#include "llagent.h"
#include "llagentcamera.h"
#include "llappviewer.h" // for gDisconnected
// [SL:KB] - Patch: World-MiniMap | Checked: 2012-07-08 (Catznip-3.3)
#include "llavataractions.h"
// [SL:KB] - Patch: World-MiniMap | Checked: 2012-07-08 (Catznip-3.3)
#include "llfloatersidepanelcontainer.h"
// [/SL:KB]
#include "llcallingcard.h" // LLAvatarTracker
@@ -696,22 +696,46 @@ 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++)
{
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++)
{
// <FS:Ansariel> Performance improvement
//LLUUID uuid = avatar_ids[i];
const LLUUID& uuid = avatar_ids.at(i);
// Skip self, we'll draw it later
if (uuid == gAgent.getID()) continue;
pos_map = globalPosToView(positions[i]);
pos_map = globalPosToView(sorted_positions[i]);
// <FS:Ansariel> Check for unknown Z-offset => AVATAR_UNKNOWN_Z_OFFSET
//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;
unknown_relative_z = false;
if (positions[i].mdV[VZ] == AVATAR_UNKNOWN_Z_OFFSET)
if (sorted_positions[i].mdV[VZ] == AVATAR_UNKNOWN_Z_OFFSET)
{
if (camera_position.mV[VZ] >= COARSEUPDATE_MAX_Z)
{
-165
View File
@@ -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);
}
}
}
-67
View File
@@ -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
+51 -17
View File
@@ -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()) ;
@@ -1122,10 +1122,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)
@@ -1153,10 +1156,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;
{
idx = iter3->second;
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 = found_idx;
removeCachedTexture(oldid) ;//remove the existing cached texture to release the entry index.
break;
}
@@ -1292,7 +1304,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 ;
@@ -1330,8 +1345,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();
@@ -1652,7 +1667,10 @@ void LLTextureCache::purgeAllTextures(bool purge_directories)
// </FS:Ansariel>
}
}
mHeaderIDMap.clear();
{
LLMutexLock lock(&mHeaderIDMapMutex);
mHeaderIDMap.clear();
}
mTexturesSizeMap.clear();
mTexturesSizeTotal = 0;
mFreeList.clear();
@@ -1699,6 +1717,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())
{
@@ -1740,8 +1759,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);
@@ -1784,6 +1808,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())
{
@@ -2048,7 +2073,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())
{
@@ -2062,9 +2087,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);
@@ -2095,7 +2121,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*/);
// <FS:minerjr>
// This fixes the invalid discard values from being created which cause the decoder code to fail when trying to handle 6 and 7's which are above the MAX_DISCARD_LEVEL of 5
@@ -2297,7 +2325,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);
@@ -2328,7 +2359,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);
}
+2 -1
View File
@@ -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;
+2 -10
View File
@@ -44,7 +44,6 @@
//#include "llfloateravatarrendersettings.h" // <FS:Ansariel> [FS Persisted Avatar Render Settings]
#include "llfloateravatartextures.h"
#include "llfloaterbanduration.h"
#include "llfloaterbigpreview.h"
#include "llfloaterbeacons.h"
#include "llfloaterbuildoptions.h"
#include "llfloaterbulkpermission.h"
@@ -121,7 +120,6 @@
// #include "llfloaterperformance.h" <FS:Beq/> restore fsperf floater
#include "fsfloaterperformance.h"
#include "llfloaterperms.h"
#include "llfloaterpostprocess.h"
#include "llfloaterpreference.h"
#include "llfloaterpreferencesgraphicsadvanced.h"
#include "llfloaterpreferenceviewadvanced.h"
@@ -145,7 +143,6 @@
#include "llfloatersidepanelcontainer.h"
#include "llfloaterslapptest.h"
#include "llfloatersnapshot.h"
#include "llfloatersounddevices.h"
#include "llfloaterspellchecksettings.h"
#include "llfloatertelehub.h"
#include "llfloatertestinspectors.h"
@@ -156,7 +153,6 @@
#include "llfloatertoybox.h"
#include "llfloatertranslationsettings.h"
#include "llfloateruipreview.h"
#include "llfloatervoiceeffect.h"
#include "llfloaterwebcontent.h"
#include "llfloatervoicevolume.h"
#include "llfloaterwhitelistentry.h"
@@ -201,6 +197,7 @@
#include "fsfloateraddtocontactset.h"
#include "fsfloaterassetblacklist.h"
#include "fsfloateravatarrendersettings.h"
#include "fsfloaterbigpreview.h"
#include "fsfloatercontacts.h"
#include "fsfloatercontactsetconfiguration.h"
#include "fsfloaterdiscord.h"
@@ -445,7 +442,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>);
// <FS:William_W:EnvFileReplace> [PhotoTools] Use FS specific XML for Fixed Environment Floater
//LLFloaterReg::add("env_fixed_environmentent_water", "floater_fixedenvironment.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterFixedEnvironmentSky>); // Commenting out original LL line
@@ -599,7 +595,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>);
// <FS:LO> Add ability for the statistics window to not be able to receive focus
//LLFloaterReg::add("stats", "floater_stats.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloater>);
LLFloaterReg::add("stats", "floater_stats.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterStatistics>);
@@ -617,8 +612,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");
@@ -627,8 +620,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>);
@@ -645,6 +636,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("primfeed", "floater_primfeed.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterPrimfeed>);
LLFloaterReg::add("fs_asset_blacklist", "floater_fs_asset_blacklist.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterAssetBlacklist>);
LLFloaterReg::add("fs_avatar_render_settings", "floater_fs_avatar_render_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterAvatarRenderSettings>);
LLFloaterReg::add("fS_big_preview", "floater_fs_big_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterBigPreview>);
LLFloaterReg::add("fs_blocklist", "floater_fs_blocklist.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterBlocklist>);
LLFloaterReg::add("fs_add_contact", "floater_fs_contact_add.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterAddToContactSet>);
LLFloaterReg::add("fs_contact_set_config", "floater_fs_contact_set_configuration.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterContactSetConfiguration>);
+72 -11
View File
@@ -3711,6 +3711,41 @@ bool enable_object_show_original()
}
// </FS:Ansariel>
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)
{
const std::string& item_name = ctrl->getName();
@@ -3774,6 +3809,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();
@@ -12243,16 +12313,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)
@@ -12847,7 +12907,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");
@@ -13208,6 +13267,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");
@@ -13242,6 +13302,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));
+15 -7
View File
@@ -1970,12 +1970,10 @@ bool LLViewerFetchedTexture::processFetchResults(S32& desired_discard, S32 curre
mRawDiscardLevel = INVALID_DISCARD_LEVEL;
mIsFetching = false;
mLastPacketTimer.reset();
return false;
}
else
{
mIsRawImageValid = true;
addToCreateTexture();
}
mIsRawImageValid = true;
if (mBoostLevel == LLGLTexture::BOOST_ICON)
{
@@ -1988,7 +1986,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;
}
}
}
@@ -2003,10 +2005,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
+15 -11
View File
@@ -1220,18 +1220,22 @@ 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();
// <FS:Ansariel> Fast cache stats
sNumFastCacheReads++;
// </FS:Ansariel>
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();
// <FS:Ansariel> Fast cache stats
sNumFastCacheReads++;
// </FS:Ansariel>
if (timer.getElapsedTimeF32() > max_time)
break;
}
}
mFastCacheList.erase(mFastCacheList.begin(), enditer);
return timer.getElapsedTimeF32();
+1
View File
@@ -103,6 +103,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);
+5 -1
View File
@@ -92,7 +92,11 @@ void LLVLManager::addLayerData(LLVLData *vl_datap, const S32Bytes mesg_size)
// </FS:CR> Aurora Sim
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);
@@ -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>
@@ -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 &quot;morph&quot;)
</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>
@@ -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 &quot;morph&quot;
</string>
<string name="get_voice_effects">
Hente stemme &quot;morph&quot;
</string>
<combo_box name="voice_effect" tool_tip="Vælg en stemme &quot;morph&quot; for at ændre din stemme">
<combo_box.item label="Stemme morph slukket" name="no_voice_effect"/>
</combo_box>
</panel>
@@ -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>
@@ -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>
@@ -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>
@@ -2,6 +2,8 @@
<context_menu name="Attachment Pie">
<menu_item_call label="Berühren" name="Attachment Object Touch"/>
<menu_item_call label="In Inventar anzeigen" name="Show original"/>
<menu_item_call label="Zu Favoriten hinzufügen" name="Add to favorites"/>
<menu_item_call label="Aus Favoriten entfernen" name="Remove from favorites"/>
<menu_item_call label="Bearbeiten" name="Edit..."/>
<menu_item_call label="PBR-Material bearbeiten" name="EditGLTFMaterial"/>
<menu_item_call label="Abnehmen" name="Detach"/>
@@ -14,8 +14,12 @@
<pie_slice label="Backup" name="Backup"/>
<pie_slice label="Collada" name="Collada"/>
</pie_menu>
<pie_menu label="Inventar &gt;" name="Inventory">
<pie_slice label="Favorit hinz." name="Add to favorites"/>
<pie_slice label="Favorit entf." name="Remove from favorites"/>
<pie_slice label="Original anz." name="Show original"/>
</pie_menu>
<pie_slice label="Untersuchen" name="Avatar Inspect"/>
<pie_slice label="In Inv. zeigen" name="Show original"/>
<pie_slice label="Texturen" name="Debug..."/>
</pie_menu>
<pie_slice label="Hinsetzen" name="Sit Down Here"/>
@@ -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>
@@ -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="40"
name="PPEffectNameEditor"
tab_group="1"
top_pad="22"
width="150" />
</panel>
</tab_container>
</floater>
@@ -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>
@@ -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"
text_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>
@@ -22,6 +22,28 @@
<menu_item_call.on_enable
function="Object.EnableShowOriginal" />
</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_call
enabled="false"
label="Edit"
@@ -95,14 +95,41 @@
function="Object.EnableExport" />
</pie_slice>
</pie_menu>
<pie_slice
label="Show in Inv."
name="Show original">
<pie_slice.on_click
function="Object.ShowOriginal" />
<pie_slice.on_enable
function="Object.EnableShowOriginal" />
</pie_slice>
<pie_menu
name="Inventory"
label="Inventory &gt;">
<pie_separator />
<pie_separator />
<pie_separator />
<pie_slice
label="Add Favorite"
name="Add to favorites">
<pie_slice.on_click
function="Object.SetFavorite"
parameter="Add" />
<pie_slice.on_enable
function="Object.EnableFavorites"
parameter="Add"/>
</pie_slice>
<pie_slice
label="Remove Favorite"
name="Remove from favorites">
<pie_slice.on_click
function="Object.SetFavorite"
parameter="Remove" />
<pie_slice.on_enable
function="Object.EnableFavorites"
parameter="Remove" />
</pie_slice>
<pie_slice
label="Show Original"
name="Show original">
<pie_slice.on_click
function="Object.ShowOriginal" />
<pie_slice.on_enable
function="Object.EnableShowOriginal" />
</pie_slice>
</pie_menu>
<pie_slice
label="Inspect"
name="Avatar Inspect">
@@ -10374,6 +10374,22 @@ Are you sure you want to leave this call?
</usetemplate>
</notification>
<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"
@@ -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>
@@ -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>
@@ -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="Activado" name="enable_voice"/>
</floater>
@@ -1,138 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater label="Lugares" name="voice_effects" title="Probar filtro de voz">
<string name="no_voice_effect">
(Sin filtro 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>
@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="panel_voice_effect">
<string name="no_voice_effect">
Filtro de voz desactivado
</string>
<string name="preview_voice_effects">
Probar filtro de voz ▶
</string>
<string name="get_voice_effects">
Obtener filtro de voz ▶
</string>
<combo_box name="voice_effect" tool_tip="Selecciona un filtro para modificar tu voz">
<combo_box.item label="Filtro de voz desactivado" name="no_voice_effect"/>
</combo_box>
</panel>
@@ -1,33 +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 de couleurs" 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 nocturne" name="wmiNightVisionPanel">
<check_box label="Activer" name="wmiNightVisionToggle"/>
<text name="wmiNightVisionBrightMultText">Multiplicateur d'amplification lumineuse</text>
<text name="wmiNightVisionNoiseSizeText">Taille du bruit</text>
<text name="wmiNightVisionNoiseStrengthText">Force du bruit</text>
</panel>
<panel label="Flou" name="wmiBloomPanel">
<check_box label="Activer" name="wmiBloomToggle"/>
<text name="wmiBloomExtractText">Extraction de luminosité</text>
<text name="wmiBloomSizeText">Taille du flou</text>
<text name="wmiBloomStrengthText">Force du flou</text>
</panel>
<panel label="Extras" name="Extras">
<button label="Charger un effet" label_selected="Charger un effet" name="PPLoadEffect"/>
<button label="Enregistrer l'effet" label_selected="Enregistrer l'effet" name="PPSaveEffect"/>
<line_editor label="Nom de l'effet" name="PPEffectNameEditor"/>
</panel>
</tab_container>
</floater>
@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_sound_devices" title="Périphériques audio">
<text name="voice_label">Chat Vocal</text>
<check_box name="enable_voice" label="Activé"/>
</floater>
@@ -1,59 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="voice_effects" title="Aperçu des effets de transformation de voix" label="Endroits">
<string name="no_voice_effect">(Pas de transformation de voix)</string>
<string name="active_voice_effect">(Actif)</string>
<string name="unsubscribed_voice_effect">(Désinscrit)</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">Bot Effrayant</string>
<string name="effect_Cyber">Cyber</string>
<string name="effect_DeepBot">Bot Grave</string>
<string name="effect_Demon">Démon</string>
<string name="effect_Female Elf">Elfette</string>
<string name="effect_Flirty">Séduction</string>
<string name="effect_Foxy">Renard</string>
<string name="effect_Halloween 2010 Bonus">Bonus Halloween 2010</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">Bot Pop</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">Pleurnichard</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>
@@ -1,7 +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>
@@ -1,49 +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>
</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>
@@ -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="Abilitata" name="enable_voice"/>
</floater>
@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="voice_effects" title="Anteprima effetti voce" label="Luoghi">
<string name="no_voice_effect">
(Nessun effetto voce)
</string>
<string name="active_voice_effect">
(Attivo)
</string>
<string name="unsubscribed_voice_effect">
(non abbonato)
</string>
<string name="new_voice_effect">
(Nuovo!)
</string>
<text name="preview_text">
Anteprima
</text>
<text name="status_text">
Registra un campione, poi clicca un effetto per sentire come suona.
</text>
<button label="Registra" name="record_btn" tool_tip="Registra un campione di voce."/>
<button label="Ferma" name="record_stop_btn"/>
<text name="voice_morphing_link">
[[URL] abbonati ora]
</text>
<scroll_list name="voice_effect_list" tool_tip="Registra un campione di voce, poi scegli un effetto per sentire l&apos;anteprima.">
<scroll_list.columns label="Nome effetto" name="name"/>
<scroll_list.columns label="Scadenza" name="expires"/>
</scroll_list>
</floater>
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -1,52 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater label="Miejsca" name="voice_effects" title="Podgląd przekształcania głosu">
<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>
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -1,54 +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" width="120"/>
<button label="Сохранить эффект" label_selected="Сохранить эффект" name="PPSaveEffect" width="120"/>
<combo_box left_delta="130" name="PPEffectsCombo"/>
<line_editor label="Название эффекта" name="PPEffectNameEditor"/>
</panel>
</tab_container>
</floater>
@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater_sound_devices" title="Звуковые устройства">
<text name="voice_label" width="90">Голосовой чат</text>
<check_box label="Включено" name="enable_voice" left="100"/>
</floater>
@@ -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">
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>
@@ -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>
@@ -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>
@@ -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>

Some files were not shown because too many files have changed in this diff Show More