mirror of
https://github.com/FirestormViewer/phoenix-firestorm.git
synced 2026-08-14 08:53:53 +00:00
Merge branch 'develop' of https://github.com/secondlife/viewer
# 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:
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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 ;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -147,7 +147,7 @@ void LLFloaterIMSession::onClickCloseBtn(bool app_qutting)
|
||||
{
|
||||
if (app_qutting)
|
||||
{
|
||||
LLFloaterIMSessionTab::onClickCloseBtn();
|
||||
LLFloaterIMSessionTab::onClickCloseBtn(app_qutting);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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());
|
||||
// }
|
||||
//}
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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>);
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 "morph")
|
||||
</string>
|
||||
<string name="active_voice_effect">
|
||||
(Aktiv)
|
||||
</string>
|
||||
<string name="unsubscribed_voice_effect">
|
||||
(Ikke aktiveret)
|
||||
</string>
|
||||
<string name="new_voice_effect">
|
||||
(Ny!)
|
||||
</string>
|
||||
<text name="preview_text">
|
||||
For at se
|
||||
</text>
|
||||
<text name="status_text">
|
||||
Optag en prøve, klik derefter på en stemme for at høre hvordan det vil lyde.
|
||||
</text>
|
||||
<button label="Optag" name="record_btn" tool_tip="Optag en stemmeprøve."/>
|
||||
<button label="Stop" name="record_stop_btn"/>
|
||||
<text name="voice_morphing_link">
|
||||
[[URL] Abonnér nu]
|
||||
</text>
|
||||
<scroll_list name="voice_effect_list" tool_tip="Optag en prøve med din stemme og klik på en effekt for at teste.">
|
||||
<scroll_list.columns label="Stemme navn" name="name"/>
|
||||
<scroll_list.columns label="Udløber" name="expires"/>
|
||||
</scroll_list>
|
||||
</floater>
|
||||
@@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<panel name="panel_voice_effect">
|
||||
<string name="no_voice_effect">
|
||||
Voice Morphing Off
|
||||
</string>
|
||||
<string name="preview_voice_effects">
|
||||
Se stemme "morph" ▶
|
||||
</string>
|
||||
<string name="get_voice_effects">
|
||||
Hente stemme "morph" ▶
|
||||
</string>
|
||||
<combo_box name="voice_effect" tool_tip="Vælg en stemme "morph" for at ændre din stemme">
|
||||
<combo_box.item label="Stemme morph slukket" name="no_voice_effect"/>
|
||||
</combo_box>
|
||||
</panel>
|
||||
@@ -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 >" 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 >">
|
||||
<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'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
Reference in New Issue
Block a user