From 65df86e741a7394e3fd744997b8bb6e25b587d48 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Tue, 2 Jul 2019 13:12:46 -0400 Subject: [PATCH 001/115] Integrate voice license code into floatertos --- indra/newview/llfloatertos.cpp | 115 +++++++++++++++++++++------------ indra/newview/llfloatertos.h | 5 +- 2 files changed, 75 insertions(+), 45 deletions(-) diff --git a/indra/newview/llfloatertos.cpp b/indra/newview/llfloatertos.cpp index aeb1c0105..47b862eaf 100644 --- a/indra/newview/llfloatertos.cpp +++ b/indra/newview/llfloatertos.cpp @@ -63,30 +63,34 @@ LLFloaterTOS* LLFloaterTOS::sInstance = NULL; // static LLFloaterTOS* LLFloaterTOS::show(ETOSType type, const std::string & message) { - if( !LLFloaterTOS::sInstance ) + if (sInstance) { - LLFloaterTOS::sInstance = new LLFloaterTOS(type, message); + delete sInstance; } - - if (type == TOS_TOS) - { - LLUICtrlFactory::getInstance()->buildFloater(LLFloaterTOS::sInstance, "floater_tos.xml"); - } - else - { - LLUICtrlFactory::getInstance()->buildFloater(LLFloaterTOS::sInstance, "floater_critical.xml"); - } - - return LLFloaterTOS::sInstance; + return sInstance = new LLFloaterTOS(type, message); } -LLFloaterTOS::LLFloaterTOS(ETOSType type, const std::string & message) +LLFloaterTOS::LLFloaterTOS(ETOSType type, const std::string& message) : LLModalDialog( std::string(" "), 100, 100 ), mType(type), - mMessage(message), mLoadCompleteCount( 0 ) { + LLUICtrlFactory::getInstance()->buildFloater(this, + mType == TOS_CRITICAL_MESSAGE ? "floater_critical.xml" + : mType == TOS_TOS ? "floater_tos.xml" + : "floater_voice_license.xml"); + + if (mType == TOS_CRITICAL_MESSAGE) + { + // this displays the critical message + LLTextEditor *editor = getChild("tos_text"); + editor->setHandleEditKeysDirectly( TRUE ); + editor->setEnabled( FALSE ); + editor->setWordWrap(TRUE); + editor->setFocus(TRUE); + editor->setValue(LLSD(message)); + } } // helper class that trys to download a URL from a web site and calls a method @@ -146,16 +150,8 @@ BOOL LLFloaterTOS::postBuild() childSetAction("Cancel", onCancel, this); childSetCommitCallback("agree_chk", updateAgree, this); - if ( mType != TOS_TOS ) + if ( mType == TOS_CRITICAL_MESSAGE ) { - // this displays the critical message - LLTextEditor *editor = getChild("tos_text"); - editor->setHandleEditKeysDirectly( TRUE ); - editor->setEnabled( FALSE ); - editor->setWordWrap(TRUE); - editor->setFocus(TRUE); - editor->setValue(LLSD(mMessage)); - return TRUE; } @@ -164,15 +160,21 @@ BOOL LLFloaterTOS::postBuild() tos_agreement->setEnabled( false ); // hide the SL text widget if we're displaying TOS with using a browser widget. - LLTextEditor *editor = getChild("tos_text"); + LLTextEditor *editor = getChild(mType == TOS_VOICE ? "license_text" : "tos_text"); editor->setVisible( FALSE ); - LLMediaCtrl* web_browser = getChild("tos_html"); + LLMediaCtrl* web_browser = getChild(mType == TOS_VOICE ? "license_html" : "tos_html"); if ( web_browser ) { web_browser->addObserver(this); - gResponsePtr = LLIamHere::build( this ); - LLHTTPClient::get( getString( "real_url" ), gResponsePtr ); + std::string url = getString( "real_url" ); + + if (mType != TOS_VOICE || url.substr(0,4) == "http") { + gResponsePtr = LLIamHere::build( this ); + LLHTTPClient::get(url, gResponsePtr); + } else { + setSiteIsAlive(false); + } } return TRUE; @@ -181,9 +183,9 @@ BOOL LLFloaterTOS::postBuild() void LLFloaterTOS::setSiteIsAlive( bool alive ) { // only do this for TOS pages - if ( mType == TOS_TOS ) + if ( mType != TOS_CRITICAL_MESSAGE ) { - LLMediaCtrl* web_browser = getChild("tos_html"); + LLMediaCtrl* web_browser = getChild(mType == TOS_VOICE ? "license_html" : "tos_html"); // if the contents of the site was retrieved if ( alive ) { @@ -191,21 +193,21 @@ void LLFloaterTOS::setSiteIsAlive( bool alive ) { // navigate to the "real" page web_browser->navigateTo( getString( "real_url" ) ); - }; + } } else { + if (mType == TOS_VOICE) web_browser->navigateToLocalPage("license", getString("fallback_html")); // normally this is set when navigation to TOS page navigation completes (so you can't accept before TOS loads) // but if the page is unavailable, we need to do this now LLCheckBoxCtrl* tos_agreement = getChild("agree_chk"); tos_agreement->setEnabled( true ); - }; - }; + } + } } LLFloaterTOS::~LLFloaterTOS() { - // tell the responder we're not here anymore if ( gResponsePtr ) gResponsePtr->setParent( 0 ); @@ -232,8 +234,18 @@ void LLFloaterTOS::updateAgree(LLUICtrl*, void* userdata ) void LLFloaterTOS::onContinue( void* userdata ) { LLFloaterTOS* self = (LLFloaterTOS*) userdata; - LL_INFOS() << "User agrees with TOS." << LL_ENDL; - if (self->mType == TOS_TOS) + bool voice = self->mType == TOS_VOICE; + LL_INFOS() << (voice ? "User agreed to the Vivox personal license" : "User agrees with TOS.") << LL_ENDL; + if (voice) + { + // enabling voice by default here seems like the best behavior + gSavedSettings.setBOOL("EnableVoiceChat", TRUE); + gSavedSettings.setBOOL("VivoxLicenseAccepted", TRUE); + + // save these settings in case something bad happens later + gSavedSettings.saveToFile(gSavedSettings.getString("ClientSettingsFile"), TRUE); + } + else if (self->mType == TOS_TOS) { gAcceptTOS = TRUE; } @@ -242,16 +254,19 @@ void LLFloaterTOS::onContinue( void* userdata ) gAcceptCriticalMessage = TRUE; } + auto state = LLStartUp::getStartupState(); // Testing TOS dialog - #if ! LL_RELEASE_FOR_DOWNLOAD - if ( LLStartUp::getStartupState() == STATE_LOGIN_WAIT ) + #if ! LL_RELEASE_FOR_DOWNLOAD + if (!voice && state == STATE_LOGIN_WAIT) { LLStartUp::setStartupState( STATE_LOGIN_SHOW ); } else #endif - - LLStartUp::setStartupState( STATE_LOGIN_AUTH_INIT ); // Go back and finish authentication + if (!voice || state == STATE_LOGIN_VOICE_LICENSE) + { + LLStartUp::setStartupState( STATE_LOGIN_AUTH_INIT ); // Go back and finish authentication + } self->close(); // destroys this object } @@ -259,9 +274,23 @@ void LLFloaterTOS::onContinue( void* userdata ) void LLFloaterTOS::onCancel( void* userdata ) { LLFloaterTOS* self = (LLFloaterTOS*) userdata; - LL_INFOS() << "User disagrees with TOS." << LL_ENDL; - LLNotificationsUtil::add("MustAgreeToLogIn", LLSD(), LLSD(), login_alert_done); - LLStartUp::setStartupState( STATE_LOGIN_SHOW ); + if (self->mType == TOS_VOICE) + { + LL_INFOS() << "User disagreed with the vivox personal license" << LL_ENDL; + gSavedSettings.setBOOL("EnableVoiceChat", FALSE); + gSavedSettings.setBOOL("VivoxLicenseAccepted", FALSE); + + if (LLStartUp::getStartupState() == STATE_LOGIN_VOICE_LICENSE) + { + LLStartUp::setStartupState( STATE_LOGIN_AUTH_INIT ); // Go back and finish authentication + } + } + else + { + LL_INFOS() << "User disagrees with TOS." << LL_ENDL; + LLNotificationsUtil::add("MustAgreeToLogIn", LLSD(), LLSD(), login_alert_done); + LLStartUp::setStartupState( STATE_LOGIN_SHOW ); + } self->mLoadCompleteCount = 0; // reset counter for next time we come to TOS self->close(); // destroys this object } diff --git a/indra/newview/llfloatertos.h b/indra/newview/llfloatertos.h index 331458178..552fa5503 100644 --- a/indra/newview/llfloatertos.h +++ b/indra/newview/llfloatertos.h @@ -54,11 +54,12 @@ public: enum ETOSType { TOS_TOS = 0, - TOS_CRITICAL_MESSAGE = 1 + TOS_CRITICAL_MESSAGE = 1, + TOS_VOICE = 2 }; // Asset_id is overwritten with LLUUID::null when agree is clicked. - static LLFloaterTOS* show(ETOSType type, const std::string & message); + static LLFloaterTOS* show(ETOSType type, const std::string& message = LLStringUtil::null); BOOL postBuild(); From 658be9bd58a5f4771a72d78201b175b1d4f3c5d1 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Tue, 2 Jul 2019 14:00:12 -0400 Subject: [PATCH 002/115] Fully combine voice with tos stuffs Removes separate voice license code Cleans up tos code --- indra/llmessage/aihttptimeoutpolicy.cpp | 1 - indra/newview/CMakeLists.txt | 2 - indra/newview/floatervoicelicense.cpp | 244 ------------------------ indra/newview/floatervoicelicense.h | 72 ------- indra/newview/llfirstuse.cpp | 7 +- indra/newview/llfloatertos.cpp | 168 ++++++++-------- indra/newview/llfloatertos.h | 8 +- indra/newview/llprefsvoice.cpp | 7 +- 8 files changed, 88 insertions(+), 421 deletions(-) delete mode 100644 indra/newview/floatervoicelicense.cpp delete mode 100644 indra/newview/floatervoicelicense.h diff --git a/indra/llmessage/aihttptimeoutpolicy.cpp b/indra/llmessage/aihttptimeoutpolicy.cpp index bbe1d9e6a..705b4770d 100644 --- a/indra/llmessage/aihttptimeoutpolicy.cpp +++ b/indra/llmessage/aihttptimeoutpolicy.cpp @@ -927,7 +927,6 @@ P2(groupProposalBallotResponder, transfer_300s); P(homeLocationResponder); P2(HTTPGetResponder, reply_15s); P(iamHere); -P(iamHereVoice); P2(BGFolderHttpHandler, transfer_300s); P(BGItemHttpHandler); P(lcl_responder); diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 9ef039900..b4bc5dfcd 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -88,7 +88,6 @@ set(viewer_SOURCE_FILES daeexport.cpp floaterao.cpp floaterlocalassetbrowse.cpp - floatervoicelicense.cpp generichandlers.cpp groupchatlistener.cpp hbfloatergrouptitles.cpp @@ -625,7 +624,6 @@ set(viewer_HEADER_FILES daeexport.h floaterao.h floaterlocalassetbrowse.h - floatervoicelicense.h generichandlers.h groupchatlistener.h hbfloatergrouptitles.h diff --git a/indra/newview/floatervoicelicense.cpp b/indra/newview/floatervoicelicense.cpp deleted file mode 100644 index 4250e6211..000000000 --- a/indra/newview/floatervoicelicense.cpp +++ /dev/null @@ -1,244 +0,0 @@ -/** -* @file floatervoicelicense.cpp -* @brief prompts user to agree to the Vivox license in order to enable voice -* -* $LicenseInfo:firstyear=2009&license=viewergpl$ -* -* Copyright (c) 2010, McCabe Maxsted -* -* Imprudence Viewer Source Code -* The source code in this file ("Source Code") is provided to you -* under the terms of the GNU General Public License, version 2.0 -* ("GPL"). Terms of the GPL can be found in doc/GPL-license.txt in -* this distribution, or online at -* http://secondlifegrid.net/programs/open_source/licensing/gplv2 -* -* There are special exceptions to the terms and conditions of the GPL as -* it is applied to this Source Code. View the full text of the exception -* in the file doc/FLOSS-exception.txt in this software distribution, or -* online at http://secondlifegrid.net/programs/open_source/licensing/flossexception -* -* By copying, modifying or distributing this software, you acknowledge -* that you have read and understood your obligations described above, -* and agree to abide by those obligations. -* -* ALL SOURCE CODE IS PROVIDED "AS IS." THE AUTHOR MAKES NO -* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, -* COMPLETENESS OR PERFORMANCE. -* $/LicenseInfo$ -*/ - -#include "llviewerprecompiledheaders.h" - -#include "floatervoicelicense.h" - -// viewer includes -#include "llagent.h" -#include "llappviewer.h" -#include "llstartup.h" -#include "llviewercontrol.h" -#include "llviewerstats.h" -#include "llviewertexteditor.h" -#include "llviewerwindow.h" - -// linden library includes -#include "llbutton.h" -#include "llhttpclient.h" -#include "llhttpstatuscodes.h" // for HTTP_FOUND -#include "llradiogroup.h" -#include "lltextbox.h" -#include "llui.h" -#include "lluictrlfactory.h" -#include "llvfile.h" -#include "message.h" - -class AIHTTPTimeoutPolicy; -extern AIHTTPTimeoutPolicy iamHereVoice_timeout; - -FloaterVoiceLicense::FloaterVoiceLicense(const LLSD& key) -: LLModalDialog( std::string(" "), 100, 100 ), - mLoadCompleteCount( 0 ) -{ - LLUICtrlFactory::getInstance()->buildFloater(this, "floater_voice_license.xml"); -} - -// helper class that trys to download a URL from a web site and calls a method -// on parent class indicating if the web server is working or not -class LLIamHereVoice : public LLHTTPClient::ResponderWithResult -{ - private: - LLIamHereVoice( FloaterVoiceLicense* parent ) : - mParent( parent ) - {} - - FloaterVoiceLicense* mParent; - - public: - static boost::intrusive_ptr< LLIamHereVoice > build( FloaterVoiceLicense* parent ) - { - return boost::intrusive_ptr< LLIamHereVoice >( new LLIamHereVoice( parent ) ); - }; - - virtual void setParent( FloaterVoiceLicense* parentIn ) - { - mParent = parentIn; - }; - - /*virtual*/ void httpSuccess(void) - { - if ( mParent ) - mParent->setSiteIsAlive( true ); - }; - - /*virtual*/ void httpFailure(void) - { - if ( mParent ) - { - // *HACK: For purposes of this alive check, 302 Found - // (aka Moved Temporarily) is considered alive. The web site - // redirects this link to a "cache busting" temporary URL. JC - bool alive = (mStatus == HTTP_FOUND); - mParent->setSiteIsAlive( alive ); - } - }; - - /*virtual*/ AIHTTPTimeoutPolicy const& getHTTPTimeoutPolicy(void) const { return iamHereVoice_timeout; } - /*virtual*/ bool pass_redirect_status(void) const { return true; } - /*virtual*/ char const* getName(void) const { return "LLIamHereVoice"; } -}; - -// this is global and not a class member to keep crud out of the header file -namespace { - boost::intrusive_ptr< LLIamHereVoice > gResponsePtr = 0; -}; - -BOOL FloaterVoiceLicense::postBuild() -{ - childSetAction("Continue", onContinue, this); - childSetAction("Cancel", onCancel, this); - childSetCommitCallback("agree_chk", updateAgree, this); - - // disable Agree to License radio button until the page has fully loaded - LLCheckBoxCtrl* license_agreement = getChild("agree_chk"); - license_agreement->setEnabled( false ); - - // hide the SL text widget if we're displaying license with using a browser widget. - LLTextEditor *editor = getChild("license_text"); - editor->setVisible( FALSE ); - - LLMediaCtrl* web_browser = getChild("license_html"); - if ( web_browser ) - { - // start to observe it so we see navigate complete events - web_browser->addObserver( this ); - std::string url = getString( "real_url" ); - if(url.substr(0,4) == "http") { - gResponsePtr = LLIamHereVoice::build( this ); - LLHTTPClient::get( url, gResponsePtr ); - } else { - setSiteIsAlive(false); - } - } - - return TRUE; -} - -void FloaterVoiceLicense::setSiteIsAlive( bool alive ) -{ - LLMediaCtrl* web_browser = getChild("license_html"); - // if the contents of the site was retrieved - if ( alive ) - { - if ( web_browser ) - { - // navigate to the "real" page - std::string real_url = getString( "real_url" ); - web_browser->navigateTo(real_url); - } - } - else - { - web_browser->navigateToLocalPage("license", getString("fallback_html")); - // normally this is set when navigation to license page completes (so you can't accept before it loads) - // but if the page is unavailable, we need to do this now - LLCheckBoxCtrl* license_agreement = getChild("agree_chk"); - license_agreement->setEnabled( true ); - } -} - -FloaterVoiceLicense::~FloaterVoiceLicense() -{ - - // tell the responder we're not here anymore - if ( gResponsePtr ) - { - gResponsePtr->setParent( 0 ); - } -} - -// virtual -void FloaterVoiceLicense::draw() -{ - // draw children - LLModalDialog::draw(); -} - -// static -void FloaterVoiceLicense::updateAgree(LLUICtrl*, void* userdata ) -{ - FloaterVoiceLicense* self = (FloaterVoiceLicense*) userdata; - bool agree = self->childGetValue("agree_chk").asBoolean(); - self->childSetEnabled("Continue", agree); -} - -// static -void FloaterVoiceLicense::onContinue( void* userdata ) -{ - FloaterVoiceLicense* self = (FloaterVoiceLicense*) userdata; - LL_INFOS() << "User agreed to the Vivox personal license" << LL_ENDL; - - // enabling voice by default here seems like the best behavior - gSavedSettings.setBOOL("EnableVoiceChat", TRUE); - gSavedSettings.setBOOL("VivoxLicenseAccepted", TRUE); - - // save these settings in case something bad happens later - gSavedSettings.saveToFile(gSavedSettings.getString("ClientSettingsFile"), TRUE); - - if (LLStartUp::getStartupState() == STATE_LOGIN_VOICE_LICENSE) - { - LLStartUp::setStartupState( STATE_LOGIN_AUTH_INIT ); // Go back and finish authentication - } - self->close(); // destroys this object -} - -// static -void FloaterVoiceLicense::onCancel( void* userdata ) -{ - FloaterVoiceLicense* self = (FloaterVoiceLicense*) userdata; - LL_INFOS() << "User disagreed with the vivox personal license" << LL_ENDL; - gSavedSettings.setBOOL("EnableVoiceChat", FALSE); - gSavedSettings.setBOOL("VivoxLicenseAccepted", FALSE); - - if (LLStartUp::getStartupState() == STATE_LOGIN_VOICE_LICENSE) - { - LLStartUp::setStartupState( STATE_LOGIN_AUTH_INIT ); // Go back and finish authentication - } - self->mLoadCompleteCount = 0; // reset counter for next time we come here - self->close(); // destroys this object -} - -//virtual -void FloaterVoiceLicense::handleMediaEvent(LLPluginClassMedia* /*self*/, EMediaEvent event) -{ - if(event == MEDIA_EVENT_NAVIGATE_COMPLETE) - { - // skip past the loading screen navigate complete - if ( ++mLoadCompleteCount == 2 ) - { - LL_INFOS() << "NAVIGATE COMPLETE" << LL_ENDL; - // enable Agree to License radio button now that page has loaded - LLCheckBoxCtrl * license_agreement = getChild("agree_chk"); - license_agreement->setEnabled( true ); - } - } -} diff --git a/indra/newview/floatervoicelicense.h b/indra/newview/floatervoicelicense.h deleted file mode 100644 index 10aaa1979..000000000 --- a/indra/newview/floatervoicelicense.h +++ /dev/null @@ -1,72 +0,0 @@ -/** -* @file floatervoicelicense.h -* @brief prompts user to agree to the Vivox license in order to enable voice -* -* $LicenseInfo:firstyear=2009&license=viewergpl$ -* -* Copyright (c) 2010, McCabe Maxsted -* -* Imprudence Viewer Source Code -* The source code in this file ("Source Code") is provided to you -* under the terms of the GNU General Public License, version 2.0 -* ("GPL"). Terms of the GPL can be found in doc/GPL-license.txt in -* this distribution, or online at -* http://secondlifegrid.net/programs/open_source/licensing/gplv2 -* -* There are special exceptions to the terms and conditions of the GPL as -* it is applied to this Source Code. View the full text of the exception -* in the file doc/FLOSS-exception.txt in this software distribution, or -* online at http://secondlifegrid.net/programs/open_source/licensing/flossexception -* -* By copying, modifying or distributing this software, you acknowledge -* that you have read and understood your obligations described above, -* and agree to abide by those obligations. -* -* ALL SOURCE CODE IS PROVIDED "AS IS." THE AUTHOR MAKES NO -* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, -* COMPLETENESS OR PERFORMANCE. -* $/LicenseInfo$ -*/ - -#ifndef FLOATERVOICELICENSE_H -#define FLOATERVOICELICENSE_H - -#include "llfloater.h" - -#include "llmodaldialog.h" -#include "llassetstorage.h" -#include "llmediactrl.h" - -class LLButton; -class LLRadioGroup; -class LLVFS; -class LLTextEditor; -class LLUUID; - -class FloaterVoiceLicense : - public LLModalDialog, - public LLViewerMediaObserver, - public LLFloaterSingleton -{ -public: - FloaterVoiceLicense(const LLSD& key); - virtual ~FloaterVoiceLicense(); - - BOOL postBuild(); - - virtual void draw(); - - static void updateAgree( LLUICtrl *, void* userdata ); - static void onContinue( void* userdata ); - static void onCancel( void* userdata ); - - void setSiteIsAlive( bool alive ); - - // inherited from LLViewerMediaObserver - /*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event); - -private: - int mLoadCompleteCount; -}; - -#endif // FLOATERVOICELICENSE_H diff --git a/indra/newview/llfirstuse.cpp b/indra/newview/llfirstuse.cpp index b8e8b37dc..718d82b50 100644 --- a/indra/newview/llfirstuse.cpp +++ b/indra/newview/llfirstuse.cpp @@ -45,8 +45,8 @@ #include "llviewercontrol.h" #include "llui.h" #include "llappviewer.h" +#include "llfloatertos.h" #include "lltracker.h" -#include "floatervoicelicense.h" #include "llstartup.h" #include "hippogridmanager.h" @@ -303,8 +303,9 @@ void LLFirstUse::voiceLicenseAgreement() { gSavedSettings.setWarning("FirstVoiceLicense", FALSE); - FloaterVoiceLicense::getInstance()->open(); - FloaterVoiceLicense::getInstance()->center(); + auto inst = LLFloaterTOS::show(LLFloaterTOS::TOS_VOICE); + inst->open(); + inst->center(); } else // currently in STATE_LOGIN_VOICE_LICENSE when arriving here { diff --git a/indra/newview/llfloatertos.cpp b/indra/newview/llfloatertos.cpp index 47b862eaf..01bdb4e2c 100644 --- a/indra/newview/llfloatertos.cpp +++ b/indra/newview/llfloatertos.cpp @@ -1,34 +1,33 @@ /** - * @file llfloatertos.cpp - * @brief Terms of Service Agreement dialog - * - * $LicenseInfo:firstyear=2003&license=viewergpl$ - * - * Copyright (c) 2003-2009, Linden Research, Inc. - * - * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab. Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 - * - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception - * - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. - * - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. - * $/LicenseInfo$ - */ +* @file llfloatertos.cpp +* @brief Terms of Service Agreement dialog +* +* $LicenseInfo:firstyear=2003&license=viewergpl$ +* +* Copyright (c) 2003-2009, Linden Research, Inc.; 2010, McCabe Maxsted; 2019, Liru Faers +* +* Second Life Viewer Source Code +* The source code in this file ("Source Code") is provided by Linden Lab +* to you under the terms of the GNU General Public License, version 2.0 +* ("GPL"), unless you have obtained a separate licensing agreement +* ("Other License"), formally executed by you and Linden Lab. Terms of +* the GPL can be found in doc/GPL-license.txt in this distribution, or +* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 +* +* There are special exceptions to the terms and conditions of the GPL as +* it is applied to this Source Code. View the full text of the exception +* in the file doc/FLOSS-exception.txt in this software distribution, or +* online at http://secondlifegrid.net/programs/open_source/licensing/flossexception +* +* By copying, modifying or distributing this software, you acknowledge +* that you have read and understood your obligations described above, +* and agree to abide by those obligations. +* +* ALL SOURCE CODE IS PROVIDED "AS IS." THE AUTHOR MAKES NO +* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, +* COMPLETENESS OR PERFORMANCE. +* $/LicenseInfo$ +*/ #include "llviewerprecompiledheaders.h" @@ -58,23 +57,20 @@ class AIHTTPTimeoutPolicy; extern AIHTTPTimeoutPolicy iamHere_timeout; // static -LLFloaterTOS* LLFloaterTOS::sInstance = NULL; +LLFloaterTOS* LLFloaterTOS::sInstance = nullptr; // static LLFloaterTOS* LLFloaterTOS::show(ETOSType type, const std::string & message) { - if (sInstance) - { - delete sInstance; - } + if (sInstance) delete sInstance; return sInstance = new LLFloaterTOS(type, message); } LLFloaterTOS::LLFloaterTOS(ETOSType type, const std::string& message) -: LLModalDialog( std::string(" "), 100, 100 ), +: LLModalDialog(std::string(" "), 100, 100), mType(type), - mLoadCompleteCount( 0 ) + mLoadCompleteCount(0) { LLUICtrlFactory::getInstance()->buildFloater(this, mType == TOS_CRITICAL_MESSAGE ? "floater_critical.xml" @@ -85,11 +81,11 @@ LLFloaterTOS::LLFloaterTOS(ETOSType type, const std::string& message) { // this displays the critical message LLTextEditor *editor = getChild("tos_text"); - editor->setHandleEditKeysDirectly( TRUE ); - editor->setEnabled( FALSE ); + editor->setHandleEditKeysDirectly(TRUE); + editor->setEnabled(FALSE); editor->setWordWrap(TRUE); editor->setFocus(TRUE); - editor->setValue(LLSD(message)); + editor->setValue(message); } } @@ -98,50 +94,49 @@ LLFloaterTOS::LLFloaterTOS(ETOSType type, const std::string& message) class LLIamHere : public LLHTTPClient::ResponderWithResult { private: - LLIamHere( LLFloaterTOS* parent ) : - mParent( parent ) + LLIamHere(LLFloaterTOS* parent) : + mParent(parent->getDerivedHandle()) {} - LLFloaterTOS* mParent; + LLHandle mParent; public: - - static boost::intrusive_ptr< LLIamHere > build( LLFloaterTOS* parent ) + static boost::intrusive_ptr build(LLFloaterTOS* parent) { - return boost::intrusive_ptr< LLIamHere >( new LLIamHere( parent ) ); - }; + return boost::intrusive_ptr(new LLIamHere(parent)); + } - virtual void setParent( LLFloaterTOS* parentIn ) + virtual void setParent(LLFloaterTOS* parentIn) { - mParent = parentIn; - }; + mParent = parentIn->getDerivedHandle(); + } - /*virtual*/ void httpSuccess(void) + /*virtual*/ void httpSuccess() { - if ( mParent ) - mParent->setSiteIsAlive( true ); - }; + if (!mParent.isDead()) + mParent.get()->setSiteIsAlive( true ); + } - /*virtual*/ void httpFailure(void) + /*virtual*/ void httpFailure() { - if ( mParent ) + if (!mParent.isDead()) { // *HACK: For purposes of this alive check, 302 Found // (aka Moved Temporarily) is considered alive. The web site // redirects this link to a "cache busting" temporary URL. JC bool alive = (mStatus == HTTP_FOUND); - mParent->setSiteIsAlive( alive ); + mParent.get()->setSiteIsAlive(alive); } - }; + } - /*virtual*/ AIHTTPTimeoutPolicy const& getHTTPTimeoutPolicy(void) const { return iamHere_timeout; } - /*virtual*/ bool pass_redirect_status(void) const { return true; } - /*virtual*/ char const* getName(void) const { return "LLIamHere"; } + /*virtual*/ AIHTTPTimeoutPolicy const& getHTTPTimeoutPolicy() const { return iamHere_timeout; } + /*virtual*/ bool pass_redirect_status() const { return true; } + /*virtual*/ char const* getName() const { return "LLIamHere"; } }; // this is global and not a class member to keep crud out of the header file namespace { - boost::intrusive_ptr< LLIamHere > gResponsePtr = 0; + boost::intrusive_ptr gResponsePtr = 0; }; BOOL LLFloaterTOS::postBuild() @@ -150,28 +145,23 @@ BOOL LLFloaterTOS::postBuild() childSetAction("Cancel", onCancel, this); childSetCommitCallback("agree_chk", updateAgree, this); - if ( mType == TOS_CRITICAL_MESSAGE ) - { - return TRUE; - } + if (mType == TOS_CRITICAL_MESSAGE) return TRUE; // disable Agree to TOS radio button until the page has fully loaded LLCheckBoxCtrl* tos_agreement = getChild("agree_chk"); - tos_agreement->setEnabled( false ); + tos_agreement->setEnabled(false); + bool voice = mType == TOS_VOICE; // hide the SL text widget if we're displaying TOS with using a browser widget. - LLTextEditor *editor = getChild(mType == TOS_VOICE ? "license_text" : "tos_text"); - editor->setVisible( FALSE ); + getChild(voice ? "license_text" : "tos_text")->setVisible(FALSE); - LLMediaCtrl* web_browser = getChild(mType == TOS_VOICE ? "license_html" : "tos_html"); - if ( web_browser ) + if (LLMediaCtrl* web_browser = getChild(voice ? "license_html" : "tos_html")) { + // start to observe it so we see navigate complete events web_browser->addObserver(this); std::string url = getString( "real_url" ); - - if (mType != TOS_VOICE || url.substr(0,4) == "http") { - gResponsePtr = LLIamHere::build( this ); - LLHTTPClient::get(url, gResponsePtr); + if (!voice || url.substr(0,4) == "http") { + LLHTTPClient::get(url, gResponsePtr = LLIamHere::build(this)); } else { setSiteIsAlive(false); } @@ -180,28 +170,28 @@ BOOL LLFloaterTOS::postBuild() return TRUE; } -void LLFloaterTOS::setSiteIsAlive( bool alive ) +void LLFloaterTOS::setSiteIsAlive(bool alive) { // only do this for TOS pages - if ( mType != TOS_CRITICAL_MESSAGE ) + if (mType != TOS_CRITICAL_MESSAGE) { - LLMediaCtrl* web_browser = getChild(mType == TOS_VOICE ? "license_html" : "tos_html"); + bool voice = mType == TOS_VOICE; + LLMediaCtrl* web_browser = getChild(voice ? "license_html" : "tos_html"); // if the contents of the site was retrieved - if ( alive ) + if (alive) { - if ( web_browser ) + if (web_browser) { // navigate to the "real" page - web_browser->navigateTo( getString( "real_url" ) ); + web_browser->navigateTo(getString("real_url")); } } else { - if (mType == TOS_VOICE) web_browser->navigateToLocalPage("license", getString("fallback_html")); + if (voice) web_browser->navigateToLocalPage("license", getString("fallback_html")); // normally this is set when navigation to TOS page navigation completes (so you can't accept before TOS loads) // but if the page is unavailable, we need to do this now - LLCheckBoxCtrl* tos_agreement = getChild("agree_chk"); - tos_agreement->setEnabled( true ); + getChild("agree_chk")->setEnabled(true); } } } @@ -209,10 +199,8 @@ void LLFloaterTOS::setSiteIsAlive( bool alive ) LLFloaterTOS::~LLFloaterTOS() { // tell the responder we're not here anymore - if ( gResponsePtr ) - gResponsePtr->setParent( 0 ); - - LLFloaterTOS::sInstance = NULL; + if (gResponsePtr) gResponsePtr->setParent(0); + sInstance = nullptr; } // virtual @@ -231,7 +219,7 @@ void LLFloaterTOS::updateAgree(LLUICtrl*, void* userdata ) } // static -void LLFloaterTOS::onContinue( void* userdata ) +void LLFloaterTOS::onContinue(void* userdata) { LLFloaterTOS* self = (LLFloaterTOS*) userdata; bool voice = self->mType == TOS_VOICE; @@ -271,7 +259,7 @@ void LLFloaterTOS::onContinue( void* userdata ) } // static -void LLFloaterTOS::onCancel( void* userdata ) +void LLFloaterTOS::onCancel(void* userdata) { LLFloaterTOS* self = (LLFloaterTOS*) userdata; if (self->mType == TOS_VOICE) diff --git a/indra/newview/llfloatertos.h b/indra/newview/llfloatertos.h index 552fa5503..18a36def7 100644 --- a/indra/newview/llfloatertos.h +++ b/indra/newview/llfloatertos.h @@ -24,7 +24,7 @@ * that you have read and understood your obligations described above, * and agree to abide by those obligations. * - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * ALL SOURCE CODE IS PROVIDED "AS IS." THE AUTHOR MAKES NO * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, * COMPLETENESS OR PERFORMANCE. * $/LicenseInfo$ @@ -58,7 +58,6 @@ public: TOS_VOICE = 2 }; - // Asset_id is overwritten with LLUUID::null when agree is clicked. static LLFloaterTOS* show(ETOSType type, const std::string& message = LLStringUtil::null); BOOL postBuild(); @@ -75,12 +74,9 @@ public: /*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event); private: - // Asset_id is overwritten with LLUUID::null when agree is clicked. - LLFloaterTOS(ETOSType type, const std::string & message); + LLFloaterTOS(ETOSType type, const std::string& message); -private: ETOSType mType; - std::string mMessage; int mLoadCompleteCount; static LLFloaterTOS* sInstance; diff --git a/indra/newview/llprefsvoice.cpp b/indra/newview/llprefsvoice.cpp index 86e39d07d..ccd5743c7 100644 --- a/indra/newview/llprefsvoice.cpp +++ b/indra/newview/llprefsvoice.cpp @@ -35,8 +35,8 @@ #include "llprefsvoice.h" -#include "floatervoicelicense.h" #include "llcheckboxctrl.h" +#include "llfloatertos.h" #include "llfocusmgr.h" #include "llkeyboard.h" #include "llmodaldialog.h" @@ -158,8 +158,9 @@ void LLPrefsVoice::apply() if (enable_voice && !gSavedSettings.getBOOL("VivoxLicenseAccepted")) { // This window enables voice chat if license is accepted - FloaterVoiceLicense::getInstance()->open(); - FloaterVoiceLicense::getInstance()->center(); + auto inst = LLFloaterTOS::show(LLFloaterTOS::TOS_VOICE); + inst->open(); + inst->center(); } else { From b86e402fc0fd998a3c5ddeeb2d4177cc63f0224b Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Tue, 2 Jul 2019 14:06:19 -0400 Subject: [PATCH 003/115] Remove now unused rectangle setting for opening in folders new floaters --- indra/newview/app_settings/settings.xml | 16 ---------------- .../default/xui/en-us/floater_inv_panel.xml | 2 +- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 229855df7..aee4f4730 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -7608,22 +7608,6 @@ This should be as low as possible, but too low may break functionality 0 - FloaterInvPanelRect - - Comment - Rectangle for new inventory windows a folder is opened in - Persist - 1 - Type - Rect - Value - - 0 - 400 - 300 - 0 - - FloaterJoystickRect Comment diff --git a/indra/newview/skins/default/xui/en-us/floater_inv_panel.xml b/indra/newview/skins/default/xui/en-us/floater_inv_panel.xml index 00a7ccb44..689e4c4c0 100644 --- a/indra/newview/skins/default/xui/en-us/floater_inv_panel.xml +++ b/indra/newview/skins/default/xui/en-us/floater_inv_panel.xml @@ -1,5 +1,5 @@ - + From 71f2dee33294768ba23b594f25e3b08c30bf30f6 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Tue, 2 Jul 2019 22:39:26 -0400 Subject: [PATCH 004/115] Yet more TOS Floater tweaks --- indra/newview/llfloatertos.cpp | 96 +++++++++++++--------------------- indra/newview/llfloatertos.h | 2 - 2 files changed, 35 insertions(+), 63 deletions(-) diff --git a/indra/newview/llfloatertos.cpp b/indra/newview/llfloatertos.cpp index 01bdb4e2c..50b261e68 100644 --- a/indra/newview/llfloatertos.cpp +++ b/indra/newview/llfloatertos.cpp @@ -62,7 +62,7 @@ LLFloaterTOS* LLFloaterTOS::sInstance = nullptr; // static LLFloaterTOS* LLFloaterTOS::show(ETOSType type, const std::string & message) { - if (sInstance) delete sInstance; + if (sInstance) sInstance->close(); return sInstance = new LLFloaterTOS(type, message); } @@ -93,50 +93,35 @@ LLFloaterTOS::LLFloaterTOS(ETOSType type, const std::string& message) // on parent class indicating if the web server is working or not class LLIamHere : public LLHTTPClient::ResponderWithResult { - private: - LLIamHere(LLFloaterTOS* parent) : - mParent(parent->getDerivedHandle()) - {} + LLIamHere(LLFloaterTOS* parent) : mParent(parent->getDerivedHandle()) {} + LLHandle mParent; - LLHandle mParent; - - public: - static boost::intrusive_ptr build(LLFloaterTOS* parent) - { - return boost::intrusive_ptr(new LLIamHere(parent)); - } +public: + static boost::intrusive_ptr build(LLFloaterTOS* parent) + { + return boost::intrusive_ptr(new LLIamHere(parent)); + } - virtual void setParent(LLFloaterTOS* parentIn) - { - mParent = parentIn->getDerivedHandle(); - } - - /*virtual*/ void httpSuccess() - { - if (!mParent.isDead()) - mParent.get()->setSiteIsAlive( true ); - } + void httpSuccess() override + { + if (!mParent.isDead()) + mParent.get()->setSiteIsAlive(true); + } - /*virtual*/ void httpFailure() + void httpFailure() override + { + if (!mParent.isDead()) { - if (!mParent.isDead()) - { - // *HACK: For purposes of this alive check, 302 Found - // (aka Moved Temporarily) is considered alive. The web site - // redirects this link to a "cache busting" temporary URL. JC - bool alive = (mStatus == HTTP_FOUND); - mParent.get()->setSiteIsAlive(alive); - } + // *HACK: For purposes of this alive check, 302 Found + // (aka Moved Temporarily) is considered alive. The web site + // redirects this link to a "cache busting" temporary URL. JC + mParent.get()->setSiteIsAlive(mStatus == HTTP_FOUND); } + } - /*virtual*/ AIHTTPTimeoutPolicy const& getHTTPTimeoutPolicy() const { return iamHere_timeout; } - /*virtual*/ bool pass_redirect_status() const { return true; } - /*virtual*/ char const* getName() const { return "LLIamHere"; } -}; - -// this is global and not a class member to keep crud out of the header file -namespace { - boost::intrusive_ptr gResponsePtr = 0; + AIHTTPTimeoutPolicy const& getHTTPTimeoutPolicy() const override { return iamHere_timeout; } + bool pass_redirect_status() const override { return true; } + char const* getName() const override { return "LLIamHere"; } }; BOOL LLFloaterTOS::postBuild() @@ -161,7 +146,7 @@ BOOL LLFloaterTOS::postBuild() web_browser->addObserver(this); std::string url = getString( "real_url" ); if (!voice || url.substr(0,4) == "http") { - LLHTTPClient::get(url, gResponsePtr = LLIamHere::build(this)); + LLHTTPClient::get(url, LLIamHere::build(this)); } else { setSiteIsAlive(false); } @@ -198,18 +183,9 @@ void LLFloaterTOS::setSiteIsAlive(bool alive) LLFloaterTOS::~LLFloaterTOS() { - // tell the responder we're not here anymore - if (gResponsePtr) gResponsePtr->setParent(0); sInstance = nullptr; } -// virtual -void LLFloaterTOS::draw() -{ - // draw children - LLModalDialog::draw(); -} - // static void LLFloaterTOS::updateAgree(LLUICtrl*, void* userdata ) { @@ -244,16 +220,16 @@ void LLFloaterTOS::onContinue(void* userdata) auto state = LLStartUp::getStartupState(); // Testing TOS dialog - #if ! LL_RELEASE_FOR_DOWNLOAD +#if !LL_RELEASE_FOR_DOWNLOAD if (!voice && state == STATE_LOGIN_WAIT) { - LLStartUp::setStartupState( STATE_LOGIN_SHOW ); + LLStartUp::setStartupState(STATE_LOGIN_SHOW); } else - #endif +#endif if (!voice || state == STATE_LOGIN_VOICE_LICENSE) { - LLStartUp::setStartupState( STATE_LOGIN_AUTH_INIT ); // Go back and finish authentication + LLStartUp::setStartupState(STATE_LOGIN_AUTH_INIT); // Go back and finish authentication } self->close(); // destroys this object } @@ -264,37 +240,35 @@ void LLFloaterTOS::onCancel(void* userdata) LLFloaterTOS* self = (LLFloaterTOS*) userdata; if (self->mType == TOS_VOICE) { - LL_INFOS() << "User disagreed with the vivox personal license" << LL_ENDL; + LL_INFOS() << "User disagreed with the Vivox personal license" << LL_ENDL; gSavedSettings.setBOOL("EnableVoiceChat", FALSE); gSavedSettings.setBOOL("VivoxLicenseAccepted", FALSE); if (LLStartUp::getStartupState() == STATE_LOGIN_VOICE_LICENSE) { - LLStartUp::setStartupState( STATE_LOGIN_AUTH_INIT ); // Go back and finish authentication + LLStartUp::setStartupState(STATE_LOGIN_AUTH_INIT); // Go back and finish authentication } } else { LL_INFOS() << "User disagrees with TOS." << LL_ENDL; LLNotificationsUtil::add("MustAgreeToLogIn", LLSD(), LLSD(), login_alert_done); - LLStartUp::setStartupState( STATE_LOGIN_SHOW ); + LLStartUp::setStartupState(STATE_LOGIN_SHOW); } - self->mLoadCompleteCount = 0; // reset counter for next time we come to TOS self->close(); // destroys this object } //virtual void LLFloaterTOS::handleMediaEvent(LLPluginClassMedia* /*self*/, EMediaEvent event) { - if(event == MEDIA_EVENT_NAVIGATE_COMPLETE) + if (event == MEDIA_EVENT_NAVIGATE_COMPLETE) { // skip past the loading screen navigate complete - if ( ++mLoadCompleteCount == 2 ) + if (++mLoadCompleteCount == 2) { LL_INFOS() << "NAVIGATE COMPLETE" << LL_ENDL; // enable Agree to TOS radio button now that page has loaded - LLCheckBoxCtrl * tos_agreement = getChild("agree_chk"); - tos_agreement->setEnabled( true ); + getChild("agree_chk")->setEnabled(true); } } } diff --git a/indra/newview/llfloatertos.h b/indra/newview/llfloatertos.h index 18a36def7..6bfced870 100644 --- a/indra/newview/llfloatertos.h +++ b/indra/newview/llfloatertos.h @@ -61,8 +61,6 @@ public: static LLFloaterTOS* show(ETOSType type, const std::string& message = LLStringUtil::null); BOOL postBuild(); - - virtual void draw(); static void updateAgree( LLUICtrl *, void* userdata ); static void onContinue( void* userdata ); From b9e522fd8d37dfc9448913dd591173887cc4a0c9 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Tue, 2 Jul 2019 22:47:37 -0400 Subject: [PATCH 005/115] Hide Marketplace Listings folder from main inventory, it bugs filters --- indra/newview/llviewerfoldertype.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llviewerfoldertype.cpp b/indra/newview/llviewerfoldertype.cpp index 4ce8d9693..23d13d653 100644 --- a/indra/newview/llviewerfoldertype.cpp +++ b/indra/newview/llviewerfoldertype.cpp @@ -139,7 +139,7 @@ LLViewerFolderDictionary::LLViewerFolderDictionary() addEntry(LLFolderType::FT_BASIC_ROOT, new ViewerFolderEntry("Basic Root", "inv_folder_plain_open.tga", "inv_folder_plain_closed.tga", FALSE, false)); - addEntry(LLFolderType::FT_MARKETPLACE_LISTINGS, new ViewerFolderEntry("Marketplace Listings", "inv_folder_plain_open.tga", "inv_folder_plain_closed.tga", FALSE, boxes_invisible)); + addEntry(LLFolderType::FT_MARKETPLACE_LISTINGS, new ViewerFolderEntry("Marketplace Listings", "inv_folder_plain_open.tga", "inv_folder_plain_closed.tga", FALSE, true)); addEntry(LLFolderType::FT_MARKETPLACE_STOCK, new ViewerFolderEntry("New Stock", "Inv_StockFolderOpen", "Inv_StockFolderClosed", FALSE, false, "default")); addEntry(LLFolderType::FT_MARKETPLACE_VERSION, new ViewerFolderEntry("New Version", "Inv_VersionFolderOpen", "Inv_VersionFolderClosed", FALSE, false, "default")); addEntry(LLFolderType::FT_SUITCASE, new ViewerFolderEntry("My Suitcase", "inv_folder_plain_open.tga", "inv_folder_plain_closed.tga", FALSE, false)); From 4a6a81b5d42c127296bfd6bf288a81976a012a4f Mon Sep 17 00:00:00 2001 From: Naiyako Date: Wed, 3 Jul 2019 22:31:31 +0200 Subject: [PATCH 006/115] Make fmod2.0 compiling Signed-off-by: Lirusaito Added libraries to autobuild, mac build from Bitten --- autobuild.xml | 12 ++++++------ indra/cmake/Copy3rdPartyLibs.cmake | 9 ++------- indra/cmake/FMODSTUDIO.cmake | 9 ++------- indra/newview/viewer_manifest.py | 12 +++--------- 4 files changed, 13 insertions(+), 29 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 8df1b9a15..1a67384f4 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -818,11 +818,11 @@ archive hash - a3ccf7916d1e0b6f01370978b661c139 + d1ede6c7be5db022897b44830cb5b095 hash_algorithm md5 url - https://depot.alchemyviewer.org/pub/darwin/lib/fmodstudio-1.10.02-darwin-201712262058.tar.bz2 + https://bitbucket.org/SingularityViewer/libraries/downloads/fmodstudio-2.00.02.191841858-darwin64-191841858.tar.bz2 name darwin @@ -860,11 +860,11 @@ archive hash - b23a30967666da49346983658ed50e92 + 2e18d5c43fad15d869dd96860f1e1871 hash_algorithm md5 url - https://depot.alchemyviewer.org/pub/windows/lib/fmodstudio-1.10.00-windows-201709290225.tar.bz2 + https://bitbucket.org/SingularityViewer/libraries/downloads/fmodstudio-2.00.02-windows-191832253.tar.bz2 name windows @@ -874,11 +874,11 @@ archive hash - 779ae33c6b84656295bd6cf50a69c830 + 6146c96719680c2f1a8aaab1dabdef8e hash_algorithm md5 url - http://depot.alchemyviewer.org/pub/packages/windows64/msvc/fmodstudio-1.10.10.190360453-windows64-190360453.tar.bz2 + https://bitbucket.org/SingularityViewer/libraries/downloads/fmodstudio-2.00.02-windows64-191832321.tar.bz2 name windows64 diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index fada12e96..1f21329bc 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -83,13 +83,8 @@ if(WINDOWS) endif(NOT DISABLE_TCMALLOC) if (FMODSTUDIO) - if(ADDRESS_SIZE STREQUAL 64) - set(debug_files ${debug_files} fmodL64.dll) - set(release_files ${release_files} fmod64.dll) - else(ADDRESS_SIZE STREQUAL 64) - set(debug_files ${debug_files} fmodL.dll) - set(release_files ${release_files} fmod.dll) - endif(ADDRESS_SIZE STREQUAL 64) + set(debug_files ${debug_files} fmodL.dll) + set(release_files ${release_files} fmod.dll) endif (FMODSTUDIO) elseif(DARWIN) diff --git a/indra/cmake/FMODSTUDIO.cmake b/indra/cmake/FMODSTUDIO.cmake index 8d8e796c1..84de5689e 100644 --- a/indra/cmake/FMODSTUDIO.cmake +++ b/indra/cmake/FMODSTUDIO.cmake @@ -11,13 +11,8 @@ if (FMODSTUDIO) set(lib_suffix .so) endif(WINDOWS) if(WINDOWS) - if(WORD_SIZE EQUAL 64) - set(FMOD_LIBRARY_RELEASE ${LIBS_PREBUILT_DIR}/lib/release/fmod64${lib_suffix}) - set(FMOD_LIBRARY_DEBUG ${LIBS_PREBUILT_DIR}/lib/debug/fmodL64${lib_suffix}) - else(WORD_SIZE EQUAL 64) - set(FMOD_LIBRARY_RELEASE ${LIBS_PREBUILT_DIR}/lib/release/fmod${lib_suffix}) - set(FMOD_LIBRARY_DEBUG ${LIBS_PREBUILT_DIR}/lib/debug/fmodL${lib_suffix}) - endif(WORD_SIZE EQUAL 64) + set(FMOD_LIBRARY_RELEASE ${LIBS_PREBUILT_DIR}/lib/release/fmod${lib_suffix}) + set(FMOD_LIBRARY_DEBUG ${LIBS_PREBUILT_DIR}/lib/debug/fmodL${lib_suffix}) else(WINDOWS) set(FMOD_LIBRARY_RELEASE ${LIBS_PREBUILT_DIR}/lib/release/libfmod${lib_suffix}) set(FMOD_LIBRARY_DEBUG ${LIBS_PREBUILT_DIR}/lib/debug/libfmodL${lib_suffix}) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 6c8c8a888..368f05be9 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -479,16 +479,10 @@ class WindowsManifest(ViewerManifest): # Get fmodstudio dll, continue if missing try: - if(self.address_size == 64): - if self.args['configuration'].lower() == 'debug': - self.path("fmodL64.dll") - else: - self.path("fmod64.dll") + if self.args['configuration'].lower() == 'debug': + self.path("fmodL.dll") else: - if self.args['configuration'].lower() == 'debug': - self.path("fmodL.dll") - else: - self.path("fmod.dll") + self.path("fmod.dll") except: print "Skipping fmodstudio audio library(assuming other audio engine)" From b4a37bf20d05237971e95a733036ab119d161b1b Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Thu, 4 Jul 2019 10:43:28 -0400 Subject: [PATCH 007/115] I finally got around to uploading the 32-bit windows dullahan package --- autobuild.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 1a67384f4..5265147f5 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -664,9 +664,9 @@ archive hash - c3e093d40e93ff242e9b9c953ae7316c + e19b664ad8cf9e7f4a7bf649d28faa76 url - https://depot.alchemyviewer.org/pub/windows/lib-vc142/dullahan-1.1.930-3.3282.1733.g9091548-windows-201802202358.tar.bz2 + https://bitbucket.org/SingularityViewer/libraries/downloads/dullahan-1.1.1320_73.1.12+gee4b49f+chromium-73.0.3683.75-windows-191102212.tar.bz2 name windows From 476721b4b9fa7a329a5a3c047362d62691a8b3c7 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Thu, 4 Jul 2019 11:01:39 -0400 Subject: [PATCH 008/115] Comment out unused variable --- indra/newview/llviewerfoldertype.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llviewerfoldertype.cpp b/indra/newview/llviewerfoldertype.cpp index 23d13d653..11809193b 100644 --- a/indra/newview/llviewerfoldertype.cpp +++ b/indra/newview/llviewerfoldertype.cpp @@ -133,7 +133,7 @@ LLViewerFolderDictionary::LLViewerFolderDictionary() addEntry(LLFolderType::FT_MY_OUTFITS, new ViewerFolderEntry("My Outfits", "inv_folder_outfit.tga", "inv_folder_outfit.tga", TRUE, false)); addEntry(LLFolderType::FT_MESH, new ViewerFolderEntry("Meshes", "inv_folder_mesh.tga", "inv_folder_mesh.tga", FALSE, false)); - bool boxes_invisible = !gSavedSettings.getBOOL("InventoryOutboxMakeVisible"); + //bool boxes_invisible = !gSavedSettings.getBOOL("InventoryOutboxMakeVisible"); addEntry(LLFolderType::FT_INBOX, new ViewerFolderEntry("Received Items", "inv_folder_inbox.tga", "inv_folder_inbox.tga", FALSE, false)); addEntry(LLFolderType::FT_OUTBOX, new ViewerFolderEntry("Merchant Outbox", "inv_folder_outbox.tga", "inv_folder_outbox.tga", FALSE, true)); From b8cfb5c8be81f62ec5e0cbbd8068c094e2036b44 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Thu, 4 Jul 2019 11:02:40 -0400 Subject: [PATCH 009/115] Unbreak my Goat, Fix UDP again --- indra/llmessage/llmessagetemplate.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llmessage/llmessagetemplate.h b/indra/llmessage/llmessagetemplate.h index 29b2be3b7..052850a0e 100644 --- a/indra/llmessage/llmessagetemplate.h +++ b/indra/llmessage/llmessagetemplate.h @@ -133,7 +133,7 @@ public: void addDataFast(char *blockname, char *varname, const void *data, S32 size, EMsgVariableType type, S32 data_size = -1); public: - typedef std::unordered_map msg_blk_data_map_t; + typedef std::map msg_blk_data_map_t; msg_blk_data_map_t mMemberBlocks; char *mName; S32 mTotalSize; From 8094d13c2e23ae8f18826c59cc96f6fb89fb1dc0 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Tue, 9 Jul 2019 23:52:38 -0400 Subject: [PATCH 010/115] Use type names instead of new category names for built in folder floaters --- indra/newview/skins/default/xui/en-us/menu_viewer.xml | 8 ++++---- indra/newview/skins/default/xui/en-us/panel_toolbar.xml | 5 +++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/indra/newview/skins/default/xui/en-us/menu_viewer.xml b/indra/newview/skins/default/xui/en-us/menu_viewer.xml index 138d195f3..4f052505d 100644 --- a/indra/newview/skins/default/xui/en-us/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en-us/menu_viewer.xml @@ -618,12 +618,12 @@ - - + + - - + + diff --git a/indra/newview/skins/default/xui/en-us/panel_toolbar.xml b/indra/newview/skins/default/xui/en-us/panel_toolbar.xml index ae4d6a953..d025f6eb5 100644 --- a/indra/newview/skins/default/xui/en-us/panel_toolbar.xml +++ b/indra/newview/skins/default/xui/en-us/panel_toolbar.xml @@ -399,12 +399,13 @@ From ff2c0e52b4fe97ca83ce08f1a7537b3bf37c2c11 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Wed, 10 Jul 2019 00:01:21 -0400 Subject: [PATCH 011/115] Cleanup those menu entries, too, and make them checks as they should be --- indra/newview/skins/default/xui/en-us/menu_viewer.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/indra/newview/skins/default/xui/en-us/menu_viewer.xml b/indra/newview/skins/default/xui/en-us/menu_viewer.xml index 4f052505d..b246576cc 100644 --- a/indra/newview/skins/default/xui/en-us/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en-us/menu_viewer.xml @@ -617,14 +617,14 @@ - + - - + + - + From 1920f529bee2e03a738bef596e01062b40614202 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Wed, 10 Jul 2019 03:05:27 -0400 Subject: [PATCH 012/115] Feature Request: Add Received Items to menu(under World)/toolbar --- indra/newview/app_settings/settings_ascent.xml | 13 +++++++++++++ .../textures/icn_toolbar_received_items.tga | Bin 0 -> 49 bytes .../default/xui/en-us/floater_toolbar_prefs.xml | 5 +++-- .../skins/default/xui/en-us/menu_viewer.xml | 4 ++++ .../skins/default/xui/en-us/panel_toolbar.xml | 4 ++++ 5 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 indra/newview/skins/default/textures/icn_toolbar_received_items.tga diff --git a/indra/newview/app_settings/settings_ascent.xml b/indra/newview/app_settings/settings_ascent.xml index 5c2f1ea63..9e9e0304c 100644 --- a/indra/newview/app_settings/settings_ascent.xml +++ b/indra/newview/app_settings/settings_ascent.xml @@ -1779,6 +1779,19 @@ Changing this setting only affects new text. IsCOA 1 + ToolbarVisibleInventoryReceivedItems + + Comment + Whether or not the button for received items is on the toolbar + Persist + 1 + Type + Boolean + Value + 0 + IsCOA + 1 + ToolbarVisibleJoystick Comment diff --git a/indra/newview/skins/default/textures/icn_toolbar_received_items.tga b/indra/newview/skins/default/textures/icn_toolbar_received_items.tga new file mode 100644 index 0000000000000000000000000000000000000000..49e5d11a21f391e18b563286837733b8990f34b7 GIT binary patch literal 49 rcmZQz;9`IQMg~R(1rCP)|Np~87(#+VUBf(sJ^lT3BiuZFT=f_Lkxd94 literal 0 HcmV?d00001 diff --git a/indra/newview/skins/default/xui/en-us/floater_toolbar_prefs.xml b/indra/newview/skins/default/xui/en-us/floater_toolbar_prefs.xml index 6be506567..913368808 100644 --- a/indra/newview/skins/default/xui/en-us/floater_toolbar_prefs.xml +++ b/indra/newview/skins/default/xui/en-us/floater_toolbar_prefs.xml @@ -80,9 +80,10 @@ + - - + + diff --git a/indra/newview/skins/default/xui/en-us/menu_viewer.xml b/indra/newview/skins/default/xui/en-us/menu_viewer.xml index b246576cc..64196b92d 100644 --- a/indra/newview/skins/default/xui/en-us/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en-us/menu_viewer.xml @@ -625,6 +625,10 @@ + + + + diff --git a/indra/newview/skins/default/xui/en-us/panel_toolbar.xml b/indra/newview/skins/default/xui/en-us/panel_toolbar.xml index d025f6eb5..d52d80a7b 100644 --- a/indra/newview/skins/default/xui/en-us/panel_toolbar.xml +++ b/indra/newview/skins/default/xui/en-us/panel_toolbar.xml @@ -406,6 +406,10 @@ + + + From 94cf62f5106ef975ec085cd2000df1c12820dca4 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Wed, 10 Jul 2019 03:33:05 -0400 Subject: [PATCH 013/115] Fix issue of Enter not reliably opening items --- indra/newview/llfolderviewitem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp index dab9a1a95..3d1180406 100644 --- a/indra/newview/llfolderviewitem.cpp +++ b/indra/newview/llfolderviewitem.cpp @@ -585,7 +585,7 @@ void LLFolderViewItem::buildContextMenu(LLMenuGL& menu, U32 flags) void LLFolderViewItem::openItem( void ) { if (!mListener) return; - if (mAllowWear || mListener->isItemWearable()) + //if (mAllowWear || mListener->isItemWearable()) // Singu Note: This will do nothing if can't do anything, so just call it { mListener->openItem(); } From 564a9abf42d3ce0bff06670aff33ec3105e4f565 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Wed, 10 Jul 2019 18:03:38 -0400 Subject: [PATCH 014/115] Enable left mouse menu support, part 1 --- indra/newview/lltoolpie.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 31ff5334f..9fd131d59 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -413,7 +413,7 @@ BOOL LLToolPie::handleLeftClickPick() LLToolSelect::handleObjectSelection(mPick, FALSE, TRUE); // Spawn pie menu - LLTool::handleRightMouseDown(x, y, mask); + handleRightMouseDown(x, y, mask); return TRUE; } From 311020034e01dcf03834500c0989780565590e3e Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Wed, 10 Jul 2019 20:50:44 -0400 Subject: [PATCH 015/115] Only render friends when AlwaysRenderFriends is set to 2 --- indra/newview/app_settings/settings.xml | 4 ++-- indra/newview/llvoavatar.cpp | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index aee4f4730..19d054606 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -12685,11 +12685,11 @@ This should be as low as possible, but too low may break functionality AlwaysRenderFriends Comment - Always render friends regardless of max complexity + Always render friends regardless of max complexity, a value of 2 will only render friends Persist 1 Type - Boolean + S32 Value 0 diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 26f136549..49771ff67 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -8628,12 +8628,16 @@ BOOL LLVOAvatar::isFullyLoaded() const bool LLVOAvatar::isTooComplex() const { - static const LLCachedControl always_render_friends("AlwaysRenderFriends", true); + static const LLCachedControl always_render_friends("AlwaysRenderFriends", 0); bool too_complex; if (isSelf() || (always_render_friends && LLAvatarTracker::instance().isBuddy(getID()))) { too_complex = false; } + else if (always_render_friends == 2) + { + too_complex = true; + } else { // Determine if visually muted or not From 665df2fe4e596edc1cb3cc285acf33b7c985c727 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Wed, 10 Jul 2019 20:57:32 -0400 Subject: [PATCH 016/115] Feature request, allow keywords to trigger on system messages --- indra/newview/llfloaterchat.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp index 49930a925..c1bf51012 100644 --- a/indra/newview/llfloaterchat.cpp +++ b/indra/newview/llfloaterchat.cpp @@ -510,7 +510,7 @@ LLColor4 get_text_color(const LLChat& chat, bool from_im) } static const LLCachedControl sKeywordsChangeColor(gSavedPerAccountSettings, "KeywordsChangeColor", false); - if (sKeywordsChangeColor && gAgentID != chat.mFromID && chat.mSourceType != CHAT_SOURCE_SYSTEM && AscentKeyword::hasKeyword(boost::starts_with(chat.mText, chat.mFromName) ? chat.mText.substr(chat.mFromName.length()) : chat.mText, 1)) + if (sKeywordsChangeColor && gAgentID != chat.mFromID && AscentKeyword::hasKeyword((chat.mSourceType != CHAT_SOURCE_SYSTEM && boost::starts_with(chat.mText, chat.mFromName)) ? chat.mText.substr(chat.mFromName.length()) : chat.mText, 1)) { static const LLCachedControl sKeywordsColor(gSavedPerAccountSettings, "KeywordsColor", LLColor4(1.f, 1.f, 1.f, 1.f)); text_color = sKeywordsColor; From e2f7a0ef5cc2a91dffc3a9df9ba9e02e5343b5fa Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Wed, 10 Jul 2019 23:33:52 -0400 Subject: [PATCH 017/115] Let's nearly break logging to add a highly requested feature My keyboard has been broken for almost half a year and none of you will ever care but I care about you I care so much --- indra/newview/app_settings/settings.xml | 2 +- indra/newview/lllogchat.cpp | 49 +++++++++++++++---------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 19d054606..b91b24665 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -7133,7 +7133,7 @@ This should be as low as possible, but too low may break functionality Type Boolean Value - 0 + 1 FloaterAboutRect diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp index 029a2c4df..fdc576a79 100644 --- a/indra/newview/lllogchat.cpp +++ b/indra/newview/lllogchat.cpp @@ -76,30 +76,41 @@ std::string LLLogChat::cleanFileName(std::string filename) return filename; } +static void time_format(std::string& out, const char* fmt, const std::tm* time) +{ + typedef typename std::vector> vec_t; + static thread_local vec_t charvector(1024); // Evolves into charveleon + #define format_the_time() std::strftime(charvector.data(), charvector.capacity(), fmt, time) + const auto smallsize(charvector.capacity()); + const auto size = format_the_time(); + if (size < 0) + { + LL_ERRS() << "Formatting time failed, code " << size << ". String hint: " << out << '/' << fmt << LL_ENDL; + } + else if (static_cast(size) >= smallsize) // Resize if we need more space + { + charvector.resize(1+size); // Use the String Stone + format_the_time(); + } + out.assign(charvector.data()); +} + + std::string LLLogChat::timestamp(bool withdate) { - time_t utc_time; - utc_time = time_corrected(); - - // There's only one internal tm buffer. - struct tm* timep; - // Convert to Pacific, based on server's opinion of whether // it's daylight savings time there. - timep = utc_to_pacific_time(utc_time, gPacificDaylightTime); + auto time = utc_to_pacific_time(time_corrected(), gPacificDaylightTime); - static LLCachedControl withseconds("SecondsInLog"); - std::string text; - if (withdate) - if (withseconds) - text = llformat("[%d/%02d/%02d %02d:%02d:%02d] ", (timep->tm_year-100)+2000, timep->tm_mon+1, timep->tm_mday, timep->tm_hour, timep->tm_min, timep->tm_sec); - else - text = llformat("[%d/%02d/%02d %02d:%02d] ", (timep->tm_year-100)+2000, timep->tm_mon+1, timep->tm_mday, timep->tm_hour, timep->tm_min); - else - if (withseconds) - text = llformat("[%02d:%02d:%02d] ", timep->tm_hour, timep->tm_min, timep->tm_sec); - else - text = llformat("[%02d:%02d] ", timep->tm_hour, timep->tm_min); + static const LLCachedControl withseconds("SecondsInLog"); + static const LLCachedControl date("ShortDateFormat"); + static const LLCachedControl shorttime("ShortTimeFormat"); + static const LLCachedControl longtime("LongTimeFormat"); + std::string text = "["; + if (withdate) text += date() + ' '; + text += (withseconds ? longtime : shorttime)() + "] "; + + time_format(text, text.data(), time); return text; } From 2c992c3f16562b15e984e5290cd9b0ff8d0e473a Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Wed, 10 Jul 2019 23:40:21 -0400 Subject: [PATCH 018/115] This was broken, that's stupid --- indra/newview/ascentprefschat.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/ascentprefschat.cpp b/indra/newview/ascentprefschat.cpp index 150c9a3a4..f58b032e4 100644 --- a/indra/newview/ascentprefschat.cpp +++ b/indra/newview/ascentprefschat.cpp @@ -153,7 +153,7 @@ void LLPrefsAscentChat::onCommitTimeDate(LLUICtrl* ctrl) } else { - short_date = "%D"; + short_date = "%m/%d/%Y"; long_date = "%A, %B %d %Y"; timestamp = "%a %b %d %Y" + timestamp; } From 1c80ae45d89143feca53c34e3fe87b86c1310ebf Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Thu, 11 Jul 2019 00:38:53 -0400 Subject: [PATCH 019/115] Sync experience script stuff from future branch~ --- indra/newview/app_settings/keywords.ini | 79 ++++-- indra/newview/skins/apollo/keywords.ini | 39 +++ .../skins/default/xui/en-us/strings.xml | 268 +++++++++++++++++- indra/newview/skins/gemini/keywords.ini | 39 +++ 4 files changed, 396 insertions(+), 29 deletions(-) diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini index a4a448ca8..3efc914cd 100644 --- a/indra/newview/app_settings/keywords.ini +++ b/indra/newview/app_settings/keywords.ini @@ -54,6 +54,9 @@ http_response http_response(key request_id, integer status, list metad http_request http_request(key id, string method, string body):Triggered when task receives an http request against a public URL transaction_result transaction_result(key id, integer success, string data): Triggered when currency is given to task path_update path_update(integer type, list reserved):Triggered when the state of a pathfinder character changes. Note; "list reserved" is not currently used +experience_permissions experience_permissions(key agent): Triggered when agent has approved an experience permissions request. This may be through interaction with the experience permission dialog or the experience profile, or automatically if the agent has previously approved the experience. +experience_permissions_denied experience_permissions_denied(key agent, integer reason): Triggered when agent has denied experience permission. reason is the reason for denial; one of the Experience Tools XP_ERROR_* errors flags. + # integer constants [word .1, .1, .5] @@ -65,11 +68,11 @@ STATUS_ROTATE_X Passed in the llSetStatus library function. If FALSE, o STATUS_ROTATE_Y Passed in the llSetStatus library function. If FALSE, object doesn't rotate around local Y axis STATUS_ROTATE_Z Passed in the llSetStatus library function. If FALSE, object doesn't rotate around local Z axis STATUS_SANDBOX Passed in the llSetStatus library function. If TRUE, object can't cross region boundaries or move more than 10 meters from its start location -STATUS_BLOCK_GRAB Passed in the llSetStatus library function. If TRUE, object can't be grabbed and physically dragged -STATUS_BLOCK_GRAB_OBJECT This status flag keeps the object from being moved by grabs. This flag applies to the entire linkset +STATUS_BLOCK_GRAB Passed in the llSetStatus library function. If TRUE, root prim of linkset (or unlinked prim) can't be grabbed and physically dragged STATUS_DIE_AT_EDGE Passed in the llSetStatus library function. If TRUE, objects that reach the edge of the world just die:rather than teleporting back to the owner STATUS_RETURN_AT_EDGE Passed in the llSetStatus library function. If TRUE, script rezzed objects that reach the edge of the world:are returned rather than killed:STATUS_RETURN_AT_EDGE trumps STATUS_DIE_AT_EDGE if both are set STATUS_CAST_SHADOWS Passed in the llSetStatus library function. If TRUE, object casts shadows on other objects +STATUS_BLOCK_GRAB_OBJECT Passed in the llSetStatus library function. If TRUE, no prims in linkset can be grabbed or physically dragged AGENT Passed in llSensor library function to look for other Agents; DEPRECATED: Use AGENT_BY_LEGACY_NAME AGENT_BY_LEGACY_NAME Passed in llSensor library function to look for other Agents by legacy name @@ -150,15 +153,6 @@ PSYS_PART_EMISSIVE_MASK PSYS_PART_TARGET_LINEAR_MASK PSYS_PART_RIBBON_MASK -PSYS_PART_BF_ONE -PSYS_PART_BF_ZERO -PSYS_PART_BF_DEST_COLOR -PSYS_PART_BF_SOURCE_COLOR -PSYS_PART_BF_ONE_MINUS_DEST_COLOR -PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR -PSYS_PART_BF_SOURCE_ALPHA -PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA - PSYS_SRC_PATTERN PSYS_SRC_INNERANGLE Deprecated -- Use PSYS_SRC_ANGLE_BEGIN PSYS_SRC_OUTERANGLE Deprecated -- Use PSYS_SRC_ANGLE_END @@ -180,6 +174,14 @@ PSYS_SRC_PATTERN_EXPLODE PSYS_SRC_PATTERN_ANGLE PSYS_SRC_PATTERN_ANGLE_CONE PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY +PSYS_PART_BF_ONE +PSYS_PART_BF_ZERO +PSYS_PART_BF_DEST_COLOR +PSYS_PART_BF_SOURCE_COLOR +PSYS_PART_BF_ONE_MINUS_DEST_COLOR +PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR +PSYS_PART_BF_SOURCE_ALPHA +PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA OBJECT_UNKNOWN_DETAIL Returned by llGetObjectDetails when passed an invalid object parameter type OBJECT_HOVER_HEIGHT This is a flag used with llGetObjectDetails to get hover height of the avatar. If no data is available, 0.0 is returned. @@ -404,8 +406,6 @@ REMOTE_DATA_REQUEST Value of event_type in remote_event if X REMOTE_DATA_REPLY Value of event_type in remote_event if XML-RPC reply is received -PRIM_NAME Sets the prim's name -PRIM_DESC Sets the prim's description PRIM_TYPE Followed by PRIM_TYPE_BOX, PRIM_TYPE_CYLINDER, PRIM_TYPE_PRISM, PRIM_TYPE_SPHERE, PRIM_TYPE_TORUS, PRIM_TYPE_TUBE, or PRIM_TYPE_SCULPT and their arguments PRIM_MATERIAL Followed by PRIM_MATERIAL_STONE, PRIM_MATERIAL_METAL, PRIM_MATERIAL_GLASS, PRIM_MATERIAL_WOOD, PRIM_MATERIAL_FLESH, PRIM_MATERIAL_PLASTIC, or PRIM_MATERIAL_RUBBER PRIM_PHYSICS Sets physics to TRUE or FALSE @@ -417,19 +417,26 @@ PRIM_CAST_SHADOWS DEPRECATED. Takes 1 parameter, an intege PRIM_POSITION Sets primitive position to a vector position PRIM_SIZE Sets primitive size to a vector size PRIM_ROTATION Sets primitive rotation -PRIM_TEXT Used to get or set the object's floating text. PRIM_TEXTURE Followed by an integer face, key id, vector repeats, vector offsets,:and float rotation in radians PRIM_COLOR Followed by an integer face, vector color, and float alpha PRIM_BUMP_SHINY Followed by an integer face, one of PRIM_SHINY_NONE, PRIM_SHINY_LOW,:PRIM_SHINY_MEDIUM, or PRIM_SHINY_HIGH,:and one of PRIM_BUMP_NONE, PRIM_BUMP_BRIGHT, PRIM_BUMP_DARK, etc PRIM_FULLBRIGHT Followed by an integer face, and TRUE or FALSE PRIM_TEXGEN Followed by an integer face, and one of PRIM_TEXGEN_DEFAULT or PRIM_TEXGEN_PLANAR PRIM_GLOW Followed by an integer face, and a float from 0.0 to 1.0 specifying glow amount -PRIM_POS_LOCAL Sets the prim's local position +PRIM_TEXT Used to get or set the object's floating text. +PRIM_NAME Sets the prim's name +PRIM_DESC Sets the prim's description PRIM_ROT_LOCAL Sets the prim's local rotation +PRIM_PHYSICS_SHAPE_TYPE For primitive physics shape type. Followed with either PRIM_PHYSICS_SHAPE_PRIM, PRIM_PHYSICS_SHAPE_NONE or PRIM_PHYSICS_SHAPE_CONVEX. PRIM_OMEGA Makes the object spin at the specified axis and rate +PRIM_POS_LOCAL Sets the prim's local position PRIM_LINK_TARGET Used to get or set multiple links with a single PrimParameters call. PRIM_SLICE Get and set the 'slice' parameter of all shapes. Takes a vector parameter of the form +PRIM_PHYSICS_SHAPE_PRIM Use the normal prim shape for physics (this is the default for all non-mesh objects) +PRIM_PHYSICS_SHAPE_NONE Use the convex hull of the prim shape for physics (this is the default for mesh objects) +PRIM_PHYSICS_SHAPE_CONVEX Ignore this prim in the physics shape. This cannot be applied to the root prim. + PRIM_TYPE_BOX Followed by integer hole shape, vector cut, float hollow, vector twist,:vector top size, and vector top shear PRIM_TYPE_CYLINDER Followed by integer hole shape, vector cut, float hollow, vector twist,:vector top size, and vector top shear PRIM_TYPE_PRISM Followed by integer hole shape, vector cut, float hollow, vector twist,:vector top size, and vector top shear @@ -489,11 +496,6 @@ PRIM_SCULPT_TYPE_MASK Mask used to determine stitching type PRIM_SCULPT_FLAG_INVERT Flag to specify that the surface normals should be inverted PRIM_SCULPT_FLAG_MIRROR Flag to specify that the prim should be reflected along X axis -PRIM_PHYSICS_SHAPE_TYPE For primitive physics shape type. Followed with either PRIM_PHYSICS_SHAPE_PRIM, PRIM_PHYSICS_SHAPE_NONE or PRIM_PHYSICS_SHAPE_CONVEX. -PRIM_PHYSICS_SHAPE_PRIM Use the normal prim shape for physics (this is the default for all non-mesh objects) -PRIM_PHYSICS_SHAPE_NONE Use the convex hull of the prim shape for physics (this is the default for mesh objects) -PRIM_PHYSICS_SHAPE_CONVEX Ignore this prim in the physics shape. This cannot be applied to the root prim. - PRIM_SPECULAR Used to get or set the specular map texture settings of a prim's face. PRIM_NORMAL Used to get or set the normal map texture settings of a prim's face. @@ -519,7 +521,7 @@ PARCEL_MEDIA_COMMAND_STOP Stop media stream PARCEL_MEDIA_COMMAND_PAUSE Pause media stream PARCEL_MEDIA_COMMAND_PLAY Play media stream PARCEL_MEDIA_COMMAND_LOOP Loop media stream -PARCEL_MEDIA_COMMAND_LOOP_SET Used to get or set the parcel's media loop duration +PARCEL_MEDIA_COMMAND_LOOP_SET Used to get or set the parcel's media loop duration. PARCEL_MEDIA_COMMAND_TEXTURE Get or set the parcel's media texture PARCEL_MEDIA_COMMAND_URL Get or set the parcel's media url PARCEL_MEDIA_COMMAND_TYPE Get or set the parcel's media mimetype @@ -672,12 +674,12 @@ RCERR_CAST_TIME_EXCEEDED Returned by llCastRay() when the raycast f RCERR_SIM_PERF_LOW Returned by llCastRay() when the raycast failed because simulator performance is low. RCERR_UNKNOWN Returned by llCastRay() when the raycast failed for an unspecified reason. -ESTATE_ACCESS_ALLOWED_AGENT_ADD Used with llManageEstateAccess to add an agent to this estate's allowed residents list. -ESTATE_ACCESS_ALLOWED_AGENT_REMOVE Used with llManageEstateAccess to remove an agent from this estate's allowed residents list. -ESTATE_ACCESS_ALLOWED_GROUP_ADD Used with llManageEstateAccess to add a group to this estate's allowed groups list. -ESTATE_ACCESS_ALLOWED_GROUP_REMOVE Used with llManageEstateAccess to remove a group from this estate's allowed groups list. -ESTATE_ACCESS_BANNED_AGENT_ADD Used with llManageEstateAccess to add an agent to this estate's banned residents list. -ESTATE_ACCESS_BANNED_AGENT_REMOVE Used with llManageEstateAccess to remove an agent from this estate's banned residents list. +ESTATE_ACCESS_ALLOWED_AGENT_ADD Passed to llManageEstateAccess to add the agent to this estate's Allowed Residents list +ESTATE_ACCESS_ALLOWED_AGENT_REMOVE Passed to llManageEstateAccess to remove the agent from this estate's Allowed Residents list +ESTATE_ACCESS_ALLOWED_GROUP_ADD Passed to llManageEstateAccess to add the group to this estate's Allowed groups list +ESTATE_ACCESS_ALLOWED_GROUP_REMOVE Passed to llManageEstateAccess to remove the group from this estate's Allowed groups list +ESTATE_ACCESS_BANNED_AGENT_ADD Passed to llManageEstateAccess to add the agent to this estate's Banned residents list +ESTATE_ACCESS_BANNED_AGENT_REMOVE Passed to llManageEstateAccess to remove the agent from this estate's Banned residents list DENSITY For use with llSetPhysicsMaterial() as a bitwise value in its material_bits parameter, to set the density. FRICTION For use with llSetPhysicsMaterial() as a bitwise value in its material_bits parameter, to set the friction. @@ -690,6 +692,7 @@ KFM_COMMAND Option for llSetKeyframedMotion(), followe KFM_CMD_PLAY Option for llSetKeyframedMotion(), used after KFM_COMMAND to play the motion. KFM_CMD_STOP Option for llSetKeyframedMotion(), used after KFM_COMMAND to stop the motion. KFM_CMD_PAUSE Option for llSetKeyframedMotion(), used after KFM_COMMAND to pause the motion. +#KFM_CMD_SET_MODE TODO: add documentation KFM_MODE Option for llSetKeyframedMotion(), used to specify the playback mode, followed by one of KFM_FORWARD, KFM_LOOP, KFM_PING_PONG or KFM_REVERSE. KFM_FORWARD Option for llSetKeyframedMotion(), used after KFM_MODE to specify the forward playback mode. KFM_LOOP Option for llSetKeyframedMotion(), used after KFM_MODE to specify the loop playback mode. @@ -735,7 +738,7 @@ PU_FAILURE_NO_NAVMESH Triggered if no navmesh is available for the re PU_FAILURE_DYNAMIC_PATHFINDING_DISABLED Triggered when a character enters a region with dynamic pathfinding disabled. PU_FAILURE_PARCEL_UNREACHABLE Triggered when a character failed to enter a parcel because it is not allowed to enter, e.g. because the parcel is already full or because object entry was disabled after the navmesh was baked. -CHARACTER_TYPE Specifies which walkability coefficient will be used by this character. +CHARACTER_TYPE Specifies which walkability coefficient will be used by this character. Used in combination with one of the character type flags. CHARACTER_TYPE_A Used for character types that you prefer move in a way consistent with humanoids. CHARACTER_TYPE_B Used for character types that you prefer move in a way consistent with wild animals or off road vehicles. CHARACTER_TYPE_C Used for mechanical character types or road going vehicles. @@ -920,6 +923,26 @@ TEXTURE_TRANSPARENT UUID for the "White - Transparent" texture URL_REQUEST_GRANTED Used with http_request when a public URL is successfully granted URL_REQUEST_DENIED Used with http_request when a public URL is not available +XP_ERROR_NONE No error was detected +XP_ERROR_THROTTLED The call failed due to too many recent calls. +XP_ERROR_EXPERIENCES_DISABLED The region currently has experiences disabled. +XP_ERROR_INVALID_PARAMETERS One of the string arguments was too big to fit in the key-value store. +XP_ERROR_NOT_PERMITTED This experience is not allowed to run on the current region. +XP_ERROR_NO_EXPERIENCE This script is not associated with an experience. +XP_ERROR_NOT_FOUND The sim was unable to verify the validity of the experience. Retrying after a short wait is advised. +XP_ERROR_INVALID_EXPERIENCE The script is associated with an experience that no longer exists. +XP_ERROR_EXPERIENCE_DISABLED The experience owner has temporarily disabled the experience. +XP_ERROR_EXPERIENCE_SUSPENDED The experience has been suspended by Linden Customer Support. +XP_ERROR_QUOTA_EXCEEDED An attempted write data to the key-value store failed due to the data quota being met. +XP_ERROR_STORE_DISABLED The key-value store is currently disabled on this region. +XP_ERROR_STORAGE_EXCEPTION Unable to communicate with the key-value store. +XP_ERROR_KEY_NOT_FOUND The requested key does not exist. +XP_ERROR_RETRY_UPDATE A checked update failed due to an out of date request. +XP_ERROR_MATURITY_EXCEEDED The request failed due to agent content preferences. +XP_ERROR_UNKNOWN_ERROR Other unknown error. +XP_ERROR_INVALID_PARAMETERS One of the string arguments was too big to fit in the key-value store. + + # float constants [word .3, .1, .5] PI 3.1415926535897932384626433832795 diff --git a/indra/newview/skins/apollo/keywords.ini b/indra/newview/skins/apollo/keywords.ini index 26c994488..33130fc75 100644 --- a/indra/newview/skins/apollo/keywords.ini +++ b/indra/newview/skins/apollo/keywords.ini @@ -54,6 +54,9 @@ http_response http_response(key request_id, integer status, list metad http_request http_request(key id, string method, string body):Triggered when task receives an http request against a public URL transaction_result transaction_result(key id, integer success, string data): Triggered when currency is given to task path_update path_update(integer type, list reserved):Triggered when the state of a pathfinder character changes. Note; "list reserved" is not currently used +experience_permissions experience_permissions(key agent): Triggered when agent has approved an experience permissions request. This may be through interaction with the experience permission dialog or the experience profile, or automatically if the agent has previously approved the experience. +experience_permissions_denied experience_permissions_denied(key agent, integer reason): Triggered when agent has denied experience permission. reason is the reason for denial; one of the Experience Tools XP_ERROR_* errors flags. + # integer constants [word .679, .503, .996] @@ -102,6 +105,23 @@ PERMISSION_TELEPORT Passed to llRequestPermissions library function to reque SCRIPT_PERMISSION_SILENT_ESTATE_MANAGEMENT Passed to llRequestPermissions library function to request permission to silently modify estate access lists PERMISSION_OVERRIDE_ANIMATIONS Passed to llRequestPermissions library function to request permission to override animations on agent PERMISSION_RETURN_OBJECTS Passed to llRequestPermissions library function to request permission to return objects +XP_ERROR_NONE No error was detected. +XP_ERROR_THROTTLED The call failed due to too many recent calls. +XP_ERROR_EXPERIENCES_DISABLED The region currently has experiences disabled. +XP_ERROR_INVALID_PARAMETERS One of the string arguments was too big to fit in the key-value store. +XP_ERROR_NOT_PERMITTED This experience is not allowed to run on the current region. +XP_ERROR_NO_EXPERIENCE This script is not associated with an experience. +XP_ERROR_NOT_FOUND The sim was unable to verify the validity of the experience. Retrying after a short wait is advised. +XP_ERROR_INVALID_EXPERIENCE The script is associated with an experience that no longer exists. +XP_ERROR_EXPERIENCE_DISABLED The experience owner has temporarily disabled the experience. +XP_ERROR_EXPERIENCE_SUSPENDED The experience has been suspended by Linden Lab customer support. +XP_ERROR_UNKNOWN_ERROR An unknown error not covered by any of the other predetermined error states. +XP_ERROR_QUOTA_EXCEEDED An attempt to write data to the key-value store failed due to the data quota being met. +XP_ERROR_STORE_DISABLED The key-value store is currently disabled on this region. +XP_ERROR_STORAGE_EXCEPTION Unable to communicate with the key-value store. +XP_ERROR_KEY_NOT_FOUND The requested key does not exist. +XP_ERROR_RETRY_UPDATE A checked update failed due to an out of date request. +XP_ERROR_MATURITY_EXCEEDED The content rating of the experience exceeds that of the region. DEBUG_CHANNEL Chat channel reserved for debug and error messages from scripts PUBLIC_CHANNEL Chat channel that broadcasts to all nearby users @@ -919,6 +939,25 @@ TEXTURE_TRANSPARENT UUID for the "White - Transparent" texture URL_REQUEST_GRANTED Used with http_request when a public URL is successfully granted URL_REQUEST_DENIED Used with http_request when a public URL is not available +XP_ERROR_NONE No error was detected +XP_ERROR_THROTTLED The call failed due to too many recent calls. +XP_ERROR_EXPERIENCES_DISABLED The region currently has experiences disabled. +XP_ERROR_INVALID_PARAMETERS One of the string arguments was too big to fit in the key-value store. +XP_ERROR_NOT_PERMITTED This experience is not allowed to run on the current region. +XP_ERROR_NO_EXPERIENCE This script is not associated with an experience. +XP_ERROR_NOT_FOUND The sim was unable to verify the validity of the experience. Retrying after a short wait is advised. +XP_ERROR_INVALID_EXPERIENCE The script is associated with an experience that no longer exists. +XP_ERROR_EXPERIENCE_DISABLED The experience owner has temporarily disabled the experience. +XP_ERROR_EXPERIENCE_SUSPENDED The experience has been suspended by Linden Customer Support. +XP_ERROR_QUOTA_EXCEEDED An attempted write data to the key-value store failed due to the data quota being met. +XP_ERROR_STORE_DISABLED The key-value store is currently disabled on this region. +XP_ERROR_STORAGE_EXCEPTION Unable to communicate with the key-value store. +XP_ERROR_KEY_NOT_FOUND The requested key does not exist. +XP_ERROR_RETRY_UPDATE A checked update failed due to an out of date request. +XP_ERROR_MATURITY_EXCEEDED The request failed due to agent content preferences. +XP_ERROR_UNKNOWN_ERROR Other unknown error. + + # float constants [word .679, .503, .996] PI 3.1415926535897932384626433832795 diff --git a/indra/newview/skins/default/xui/en-us/strings.xml b/indra/newview/skins/default/xui/en-us/strings.xml index 8378aa8e8..bf5b14b74 100644 --- a/indra/newview/skins/default/xui/en-us/strings.xml +++ b/indra/newview/skins/default/xui/en-us/strings.xml @@ -72,6 +72,83 @@ Make sure you entered the correct Login URI. An example of a Login URI is: \"htt Login failed. Quit + +The viewer you are using can no longer access Second Life. Please visit the following page to download a new viewer: +http://secondlife.com/download + +For more information, see our FAQ below: +http://secondlife.com/viewer-access-faq + Optional viewer update available: [VERSION] + Required viewer update: [VERSION] + This agent is already logged in. + + Sorry! We couldn't log you in. +Please check to make sure you entered the right + * Username (like bobsmith12 or steller.sunshine) + * Password +Also, please make sure your Caps Lock key is off. + As a security precaution your password has been changed. +Please go to your account page at http://secondlife.com/password +and answer the security question to reset your password. +We are very sorry for the inconvenience. + We made some changes to our system and you will need to reset your password. +Please go to your account page at http://secondlife.com/password +and answer the security question to reset your password. +We are very sorry for the inconvenience. + Second Life is temporarily closed for maintenance. +Logins are currently restricted to employees only. +Check www.secondlife.com/status for updates. + Second Life logins are temporarily restricted in order to make sure that those in-world have the best possible experience. + +People with free accounts will not be able to access Second Life during this time, to make room for those who have paid for Second Life. + Second Life cannot be accessed from this computer. +If you feel this is an error, please contact +support@secondlife.com. + Your account is not accessible until +[TIME] Pacific Time. + We are unable to complete your request at this time. +Please contact Second Life support for assistance at http://secondlife.com/support. +If you are unable to change your password, please call (866) 476-9763. + Data inconsistency found during login. +Please contact support@secondlife.com. + Your account is undergoing minor maintenance. +Your account is not accessible until +[TIME] Pacific Time. +If you feel this is an error, please contact support@secondlife.com. + Request for logout responded with a fault from simulator. + The system is logging you out right now. +Your Account will not be available until +[TIME] Pacific Time. + Unable to create valid session. + Unable to connect to a simulator. + Your account can only access Second Life +between [START] and [END] Pacific Time. +Please come back during those hours. +If you feel this is an error, please contact support@secondlife.com. + Incorrect parameters. +If you feel this is an error, please contact support@secondlife.com. + First name parameter must be alphanumeric. +If you feel this is an error, please contact support@secondlife.com. + Last name parameter must be alphanumeric. +If you feel this is an error, please contact support@secondlife.com. + Region is going offline. +Please try logging in again in a minute. + Agent not in region. +Please try logging in again in a minute. + The region was logging in another session. +Please try logging in again in a minute. + The region was logging out the previous session. +Please try logging in again in a minute. + The region is still logging out the previous session. +Please try logging in again in a minute. + Region has logged out last session. +Please try logging in again in a minute. + Region has begun the logout process. +Please try logging in again in a minute. + The system has begun logging out your last session. +Please try logging in again in a minute. + + https://www.singularityviewer.org/ This region may be experiencing trouble. Please check your connection to the Internet. @@ -213,6 +290,15 @@ Make sure you entered the correct Login URI. An example of a Login URI is: \"htt Viewer and server do not agree on price Unknown status + + Service unreachable. + The server is experiencing unexpected difficulties. + Service not available or upload timeout was reached. + +Error in upload request. Please visit +http://secondlife.com/support for help fixing this problem. + + @@ -356,6 +442,7 @@ Make sure you entered the correct Login URI. An example of a Login URI is: \"htt Disconnected from in-world Voice Chat '[OBJECTNAME]', an object owned by '[OWNERNAME]', located in [REGIONNAME] at [REGIONPOS], has been granted permission to: [PERMISSIONS]. '[OBJECTNAME]', an object owned by '[OWNERNAME]', located in [REGIONNAME] at [REGIONPOS], has been denied permission to: [PERMISSIONS]. + If you allow access to your account, you will also be allowing the object to: Take currency from you Act on your control inputs Remap your control inputs @@ -371,6 +458,10 @@ Make sure you entered the correct Login URI. An example of a Login URI is: \"htt Teleport you Manage your estates silently Change your default animations + Force your avatar to sit + + Not Connected + (You) Join an experience Suppress alerts when managing estate access lists Replace your default animations @@ -1899,7 +1990,7 @@ Returns the number of sides of the specified linked prim. string llGetUsername(key id) -Returns the single-word username of an avatar, if the avatar is in the current region, otherwise the empty string. +Returns the single-word username of an avatar, iff the avatar is in the current region, otherwise the empty string. key llRequestUsername(key id) @@ -2153,6 +2244,73 @@ Returns the minimum multiplicative scale factor which can be used by llScaleByFa float llGetMaxScaleFactor() Returns the maximum multiplicative scale factor which can be used by llScaleByFactor(); i.e. such that every prim in the linkset is <=64m and the resulting linkset meets the linkability requirements + +integer llAgentInExperience(key agent) +Returns a boolean (an integer) that is TRUE if the agent is in the experience and the experience can run in the current region. + + +list llGetExperienceDetails(key experience_id) +Returns a list of details about the experience. This list has 5 components: [string experience_name, key owner_id, key group_id, key experience_id, integer state, string state_message] + +If experience_id is NULL_KEY, then information about the script's experience is returned. In this situation, if the script isn't associated with an experience, an empty list is returned. + + +llRequestExperiencePermissions(key agent, string name) +agent is the agent to request permissions from; name is deprecated. +This request is similar to llRequestPermissions with all the following permissions: PERMISSION_TAKE_CONTROLS, PERMISSION_TRIGGER_ANIMATION, PERMISSION_ATTACH, PERMISSION_TRACK_CAMERA, PERMISSION_CONTROL_CAMERA and PERMISSION_TELEPORT. However, unlike llRequestPermissions, the decision to allow or block the request is persistent and applies to all scripts using the experience grid-wide. + +Subsequent calls to llRequestExperiencePermissions from scripts in the experience will receive the same response automatically with no user interaction. + +Either experience_permissions or experience_permissions_denied will be generated in response to this call. If no response is given by the agent, the request will time out after at least 5 minutes. Multiple requests by the same script can be made during this time out though the script can only have permission for one agent at a time. + + +key llReadKeyValue(string k) +Start an asynchronous transaction to read the value associated with the specified key and the specified experience. +Returns a handle (a key) that can be used to identify the corresponding dataserver event to determine if this command succeeded or failed and the results. + + +key llCreateKeyValue(string k, string v) +Start an asynchronous transaction to create a key-value pair associated with the given experience key using the given key and value. +v is the value for the key-value pair. Maximum 2047 characters, or 4095 if using Mono. + +Returns a handle (a key) that can be used to identify the corresponding dataserver event to determine if this command succeeded or failed. + + +key llUpdateKeyValue(string k, string v, integer checked, string original_value) +Start an asynchronous transaction to update a key-value pair associated with the given experience key with the given key and value. +If checked is TRUE, the update will only happen if original_value is the value in the key-value store. + +Returns a handle (a key) that can be used to identify the corresponding dataserver event to determine if this command succeeded or failed and the results. + + +key llDeleteKeyValue(string k) +Start an asynchronous transaction to delete a key-value pair associated with the given experience key with the given key. +Returns a handle (a key) that can be used to identify the corresponding dataserver event to determine if this command succeeded or failed and the results. + + +key llDataSizeKeyValue() +Start an asynchronous transaction to request the used and total amount of data allocated for the experience. + +Returns a handle (a key) that can be used to identify the corresponding dataserver event to determine if this command succeeded or failed and the results. + + +key llKeysKeyValue(integer first, integer count) +Start an asynchronous transaction to request a number of keys. +first is a zero-based index. + +Returns a handle (a key) that can be used to identify the corresponding dataserver event to determine if this command succeeded or failed. +This function will attempt to retrieve the number of keys requested but may return less if there are not enough to fulfill the full amount requested or if the list is too large. The order keys are returned is not guaranteed but is stable between subsequent calls as long as no keys are added or removed. + + +key llKeyCountKeyValue() +Start an asynchronous transaction to request the number of keys in the system. + +Returns a handle (a key) that can be used to identify the corresponding dataserver event to determine if this command succeeded or failed and the results. + + +string llGetExperienceErrorMessage(integer error) +Returns a string describing the Experience LSL error constant passed or the string corresponding to error. Returns XP_ERROR_UNKNOWN_ERROR if the error is not a valid error code. + llGodLikeRezObject( key inventory, vector pos ) @@ -3093,6 +3251,63 @@ Where tag = tag string to match. Removes bot's matching the tag. Not Busy Busy + + Shape + Skin + Hair + Eyes + Shirt + Pants + Shoes + Socks + Jacket + Gloves + Undershirt + Underpants + Skirt + Alpha + Tattoo + Physics + invalid + none + Unknown + + + Shirt not worn + Pants not worn + Shoes not worn + Socks not worn + Jacket not worn + Gloves not worn + Undershirt not worn + Underpants not worn + Skirt not worn + Alpha not worn + Tattoo not worn + Physics not worn + invalid + + + Create new shape + Create new skin + Create new hair + Create new eyes + Create new shirt + Create new pants + Create new shoes + Create new socks + Create new jacket + Create new gloves + Create new undershirt + Create new underpants + Create new skirt + Create new alpha + Create new tattoo + Create new physics + invalid + + + New [WEARABLE_ITEM] Shape @@ -3386,6 +3601,7 @@ If you continue to receive this message, please contact Second Life support for Downloaded, now compiling + Script compilation service not available Script not found on server. Problem downloading Sim lacking UpdateScriptTask capabilities. Unable to request recompile @@ -3393,6 +3609,7 @@ If you continue to receive this message, please contact Second Life support for Insufficient permissions to download a script. Insufficient permissions for Unknown failure to download + Skipping script [SCRIPT] with Experience [EXPERIENCE]. Recompilation Progress recompile Reset Progress @@ -3401,12 +3618,16 @@ If you continue to receive this message, please contact Second Life support for set running Set Not Running Progress set not running + Delete Progress + deletion Compile successful! Compile successful, saving... Save complete. + File upload failed: Script (object out of range) + Script (deleted from inventory) Object [OBJECT] owned by [OWNER] @@ -3419,6 +3640,10 @@ If you continue to receive this message, please contact Second Life support for + Balance + Credits + Debits + Total No group data found for group + Line [LINE], Column [COLUMN] + New Script @@ -4402,12 +4630,15 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. [NAME] paid you [CURRENCY][AMOUNT] [REASON]. + [NAME] paid you [CURRENCY][AMOUNT]: [REASON] [NAME] paid you [CURRENCY][AMOUNT]. You paid [NAME] [CURRENCY][AMOUNT] [REASON]. + You paid [NAME] [CURRENCY][AMOUNT]: [REASON] You paid [CURRENCY][AMOUNT]. You paid [NAME] [CURRENCY][AMOUNT]. You paid [CURRENCY][AMOUNT] [REASON]. You failed to pay [NAME] [CURRENCY][AMOUNT] [REASON]. + You failed to pay [NAME] [CURRENCY][AMOUNT]: [REASON] You failed to pay [CURRENCY][AMOUNT]. You failed to pay [NAME] [CURRENCY][AMOUNT]. You failed to pay [CURRENCY][AMOUNT] [REASON]. @@ -4537,6 +4768,11 @@ Try enclosing path to the editor with double quotes. Error parsing the external editor command. External editor failed to run. + + Translation failed: [REASON] + Error parsing translation response. + + Left Right @@ -4558,6 +4794,36 @@ Try enclosing path to the editor with double quotes. Character (Multiple) + + Experience + (no experience) + (untitled experience) + Land-Scope + Grid-Scope + ALLOWED + BLOCKED + CONTRIBUTOR + ADMIN + RECENT + OWNED + ([EXPERIENCES], max [MAXEXPERIENCES]) + take over your controls + trigger animations on your avatar + attach to your avatar + track your camera + control your camera + teleport you + automatically accept experience permissions + perform an unknown operation: [Permission] + Take Controls + Trigger Animations + Attach + Track Camera + Control Camera + Teleport + Permission + Unknown: [Permission] + Teleport completed from diff --git a/indra/newview/skins/gemini/keywords.ini b/indra/newview/skins/gemini/keywords.ini index 26c994488..33130fc75 100644 --- a/indra/newview/skins/gemini/keywords.ini +++ b/indra/newview/skins/gemini/keywords.ini @@ -54,6 +54,9 @@ http_response http_response(key request_id, integer status, list metad http_request http_request(key id, string method, string body):Triggered when task receives an http request against a public URL transaction_result transaction_result(key id, integer success, string data): Triggered when currency is given to task path_update path_update(integer type, list reserved):Triggered when the state of a pathfinder character changes. Note; "list reserved" is not currently used +experience_permissions experience_permissions(key agent): Triggered when agent has approved an experience permissions request. This may be through interaction with the experience permission dialog or the experience profile, or automatically if the agent has previously approved the experience. +experience_permissions_denied experience_permissions_denied(key agent, integer reason): Triggered when agent has denied experience permission. reason is the reason for denial; one of the Experience Tools XP_ERROR_* errors flags. + # integer constants [word .679, .503, .996] @@ -102,6 +105,23 @@ PERMISSION_TELEPORT Passed to llRequestPermissions library function to reque SCRIPT_PERMISSION_SILENT_ESTATE_MANAGEMENT Passed to llRequestPermissions library function to request permission to silently modify estate access lists PERMISSION_OVERRIDE_ANIMATIONS Passed to llRequestPermissions library function to request permission to override animations on agent PERMISSION_RETURN_OBJECTS Passed to llRequestPermissions library function to request permission to return objects +XP_ERROR_NONE No error was detected. +XP_ERROR_THROTTLED The call failed due to too many recent calls. +XP_ERROR_EXPERIENCES_DISABLED The region currently has experiences disabled. +XP_ERROR_INVALID_PARAMETERS One of the string arguments was too big to fit in the key-value store. +XP_ERROR_NOT_PERMITTED This experience is not allowed to run on the current region. +XP_ERROR_NO_EXPERIENCE This script is not associated with an experience. +XP_ERROR_NOT_FOUND The sim was unable to verify the validity of the experience. Retrying after a short wait is advised. +XP_ERROR_INVALID_EXPERIENCE The script is associated with an experience that no longer exists. +XP_ERROR_EXPERIENCE_DISABLED The experience owner has temporarily disabled the experience. +XP_ERROR_EXPERIENCE_SUSPENDED The experience has been suspended by Linden Lab customer support. +XP_ERROR_UNKNOWN_ERROR An unknown error not covered by any of the other predetermined error states. +XP_ERROR_QUOTA_EXCEEDED An attempt to write data to the key-value store failed due to the data quota being met. +XP_ERROR_STORE_DISABLED The key-value store is currently disabled on this region. +XP_ERROR_STORAGE_EXCEPTION Unable to communicate with the key-value store. +XP_ERROR_KEY_NOT_FOUND The requested key does not exist. +XP_ERROR_RETRY_UPDATE A checked update failed due to an out of date request. +XP_ERROR_MATURITY_EXCEEDED The content rating of the experience exceeds that of the region. DEBUG_CHANNEL Chat channel reserved for debug and error messages from scripts PUBLIC_CHANNEL Chat channel that broadcasts to all nearby users @@ -919,6 +939,25 @@ TEXTURE_TRANSPARENT UUID for the "White - Transparent" texture URL_REQUEST_GRANTED Used with http_request when a public URL is successfully granted URL_REQUEST_DENIED Used with http_request when a public URL is not available +XP_ERROR_NONE No error was detected +XP_ERROR_THROTTLED The call failed due to too many recent calls. +XP_ERROR_EXPERIENCES_DISABLED The region currently has experiences disabled. +XP_ERROR_INVALID_PARAMETERS One of the string arguments was too big to fit in the key-value store. +XP_ERROR_NOT_PERMITTED This experience is not allowed to run on the current region. +XP_ERROR_NO_EXPERIENCE This script is not associated with an experience. +XP_ERROR_NOT_FOUND The sim was unable to verify the validity of the experience. Retrying after a short wait is advised. +XP_ERROR_INVALID_EXPERIENCE The script is associated with an experience that no longer exists. +XP_ERROR_EXPERIENCE_DISABLED The experience owner has temporarily disabled the experience. +XP_ERROR_EXPERIENCE_SUSPENDED The experience has been suspended by Linden Customer Support. +XP_ERROR_QUOTA_EXCEEDED An attempted write data to the key-value store failed due to the data quota being met. +XP_ERROR_STORE_DISABLED The key-value store is currently disabled on this region. +XP_ERROR_STORAGE_EXCEPTION Unable to communicate with the key-value store. +XP_ERROR_KEY_NOT_FOUND The requested key does not exist. +XP_ERROR_RETRY_UPDATE A checked update failed due to an out of date request. +XP_ERROR_MATURITY_EXCEEDED The request failed due to agent content preferences. +XP_ERROR_UNKNOWN_ERROR Other unknown error. + + # float constants [word .679, .503, .996] PI 3.1415926535897932384626433832795 From 186cf58197817d2559fb816a8ee47b9661fc927b Mon Sep 17 00:00:00 2001 From: Pytak Date: Fri, 12 Jul 2019 23:26:50 +0200 Subject: [PATCH 020/115] [PyFX] add new windlights and PPE presets from PyFX 0.7 --- .../windlight/postprocesseffects.xml | 2670 ++++++++++------- .../skies/%5BPyFX%5D%20Cloudy%20Dusk.xml | 106 + .../skies/%5BPyFX%5D%20Night%20Cloudy.xml | 106 + 3 files changed, 1826 insertions(+), 1056 deletions(-) create mode 100644 indra/newview/app_settings/windlight/skies/%5BPyFX%5D%20Cloudy%20Dusk.xml create mode 100644 indra/newview/app_settings/windlight/skies/%5BPyFX%5D%20Night%20Cloudy.xml diff --git a/indra/newview/app_settings/windlight/postprocesseffects.xml b/indra/newview/app_settings/windlight/postprocesseffects.xml index bf917ab33..afabea4aa 100644 --- a/indra/newview/app_settings/windlight/postprocesseffects.xml +++ b/indra/newview/app_settings/windlight/postprocesseffects.xml @@ -1,5 +1,5 @@ - + Asi Weird bloom_strength @@ -210,1059 +210,1617 @@ vignette_chromatic_aberration 0.01 - PyFX CatVision v1 - - bloom_strength - 1.5 - bloom_width - 2.25 - blur_strength - 30 - brightness - 4 - brightness_multiplier - 3 - contrast - 3 - contrast_base - - 1 - 0 - 0.25 - 1 - - enable_bloom - 0 - enable_color_filter - 1 - enable_gauss_blur - 1 - enable_motionblur - 1 - enable_night_vision - 0 - enable_posterize - 0 - enable_vignette - 1 - extract_high - 1 - extract_low - 0.949999999999999955591079 - gamma - 2 - gauss_blur_passes - 1 - noise_size - 25 - noise_strength - 0.4000000000000000222044605 - posterize_layers - 10 - saturation - 0.0499999523162841796875 - vignette_chromatic_aberration - 0.1000000014901161193847656 - vignette_darkness - 1 - vignette_desaturation - 1 - vignette_radius - 3.9999997615814208984375 - vignette_strength - 1 - - PyFX CatVision v1 Dark - - bloom_strength - 1.5 - bloom_width - 2.25 - blur_strength - 30 - brightness - 2 - brightness_multiplier - 3 - contrast - 3 - contrast_base - - 1 - 0 - 0.25 - 1 - - enable_bloom - 0 - enable_color_filter - 1 - enable_gauss_blur - 1 - enable_motionblur - 1 - enable_night_vision - 0 - enable_posterize - 0 - enable_vignette - 1 - extract_high - 1 - extract_low - 0.949999999999999955591079 - gamma - 2.5 - gauss_blur_passes - 1 - noise_size - 25 - noise_strength - 0.4000000000000000222044605 - posterize_layers - 10 - saturation - 0.0499999523162841796875 - vignette_chromatic_aberration - 0.1000000014901161193847656 - vignette_darkness - 1 - vignette_desaturation - 1 - vignette_radius - 3.9999997615814208984375 - vignette_strength - 1 - - PyFX GrimDark v1 - - bloom_strength - 1.5 - bloom_width - 2.25 - blur_strength - 15 - brightness - 4 - brightness_multiplier - 1 - contrast - 1.25 - contrast_base - - 0.699999988079071044921875 - 0.7999999523162841796875 - 1 - 1 - - enable_bloom - 0 - enable_color_filter - 1 - enable_gauss_blur - 0 - enable_motionblur - 1 - enable_night_vision - 0 - enable_posterize - 0 - enable_vignette - 1 - extract_high - 1 - extract_low - 0.949999999999999955591079 - gamma - 1.25 - gauss_blur_passes - 2 - noise_size - 52.5 - noise_strength - 0.4000000000000000222044605 - posterize_layers - 10 - saturation - 0.5 - vignette_chromatic_aberration - 0.009500000625848770141601563 - vignette_darkness - 1 - vignette_desaturation - 0 - vignette_radius - 2 - vignette_strength - 1 - - PyFX GrimDark v2 - - bloom_strength - 1.5 - bloom_width - 2.25 - blur_strength - 30 - brightness - 4 - brightness_multiplier - 3 - contrast - 1 - contrast_base - - 1 - 1 - 1 - 1 - - enable_bloom - 0 - enable_color_filter - 1 - enable_gauss_blur - 0 - enable_motionblur - 1 - enable_night_vision - 0 - enable_posterize - 0 - enable_vignette - 1 - extract_high - 1 - extract_low - 0.949999999999999955591079 - gamma - 1 - gauss_blur_passes - 2 - noise_size - 25 - noise_strength - 0.4000000000000000222044605 - posterize_layers - 10 - saturation - 0.599999904632568359375 - vignette_chromatic_aberration - 0.009500000625848770141601563 - vignette_darkness - 1 - vignette_desaturation - 0.4000000059604644775390625 - vignette_radius - 2.9999997615814208984375 - vignette_strength - 1 - - PyFX Memory v1 - - bloom_strength - 1.5 - bloom_width - 2.25 - blur_strength - 30 - brightness - 1.5 - brightness_multiplier - 3 - contrast - 1.25 - contrast_base - - 0 - 0.66999995708465576171875 - 1 - 1 - - enable_bloom - 0 - enable_color_filter - 1 - enable_gauss_blur - 0 - enable_motionblur - 1 - enable_night_vision - 0 - enable_posterize - 0 - enable_vignette - 1 - extract_high - 1 - extract_low - 0.949999999999999955591079 - gamma - 1.5 - gauss_blur_passes - 2 - noise_size - 25 - noise_strength - 0.4000000000000000222044605 - posterize_layers - 10 - saturation - 0.5 - vignette_chromatic_aberration - 0.005000000353902578353881836 - vignette_darkness - 1 - vignette_desaturation - 0.4000000059604644775390625 - vignette_radius - 5 - vignette_strength - 1 - - PyFX Memory v1 Cold - - bloom_strength - 1.5 - bloom_width - 2.25 - blur_strength - 30 - brightness - 1.5 - brightness_multiplier - 3 - contrast - 1.25 - contrast_base - - 1 - 0.329999983310699462890625 - 0 - 1 - - enable_bloom - 0 - enable_color_filter - 1 - enable_gauss_blur - 0 - enable_motionblur - 1 - enable_night_vision - 0 - enable_posterize - 0 - enable_vignette - 1 - extract_high - 1 - extract_low - 0.949999999999999955591079 - gamma - 1.5 - gauss_blur_passes - 2 - noise_size - 25 - noise_strength - 0.4000000000000000222044605 - posterize_layers - 10 - saturation - 0.5 - vignette_chromatic_aberration - 0.005000000353902578353881836 - vignette_darkness - 1 - vignette_desaturation - 0.4000000059604644775390625 - vignette_radius - 5 - vignette_strength - 1 - - PyFX Mono v1 - - bloom_strength - 1.5 - bloom_width - 2.25 - blur_strength - 30 - brightness - 1 - brightness_multiplier - 3 - contrast - 4 - contrast_base - - 1 - 1 - 1 - 0 - - enable_bloom - 0 - enable_color_filter - 1 - enable_gauss_blur - 0 - enable_motionblur - 1 - enable_night_vision - 0 - enable_posterize - 1 - enable_vignette - 1 - extract_high - 1 - extract_low - 0.949999999999999955591079 - gamma - 1 - gauss_blur_passes - 1 - noise_size - 25 - noise_strength - 0.4000000000000000222044605 - posterize_layers - 3 - saturation - 0 - vignette_chromatic_aberration - 0 - vignette_darkness - 1 - vignette_desaturation - 1 - vignette_radius - 1 - vignette_strength - 1 - - PyFX Neo v1 - - bloom_strength - 1.5 - bloom_width - 2.25 - blur_strength - 15 - brightness - 1.5 - brightness_multiplier - 1 - contrast - 1.25 - contrast_base - - 1 - 1 - 0.75 - 1 - - enable_bloom - 0 - enable_color_filter - 1 - enable_gauss_blur - 0 - enable_motionblur - 1 - enable_night_vision - 0 - enable_posterize - 0 - enable_vignette - 1 - extract_high - 1 - extract_low - 0.949999999999999955591079 - gamma - 1.25 - gauss_blur_passes - 2 - noise_size - 52.5 - noise_strength - 0.4000000000000000222044605 - posterize_layers - 10 - saturation - 0.849999904632568359375 - vignette_chromatic_aberration - 0.009500000625848770141601563 - vignette_darkness - 1 - vignette_desaturation - 0 - vignette_radius - 2 - vignette_strength - 1 - - PyFX Neo v1 Bright - - bloom_strength - 1.5 - bloom_width - 2.25 - blur_strength - 15 - brightness - 2.5 - brightness_multiplier - 1 - contrast - 1.25 - contrast_base - - 1 - 1 - 0.75 - 1 - - enable_bloom - 0 - enable_color_filter - 1 - enable_gauss_blur - 0 - enable_motionblur - 1 - enable_night_vision - 0 - enable_posterize - 0 - enable_vignette - 1 - extract_high - 1 - extract_low - 0.949999999999999955591079 - gamma - 1.25 - gauss_blur_passes - 2 - noise_size - 52.5 - noise_strength - 0.4000000000000000222044605 - posterize_layers - 10 - saturation - 0.849999904632568359375 - vignette_chromatic_aberration - 0.009500000625848770141601563 - vignette_darkness - 1 - vignette_desaturation - 0 - vignette_radius - 2 - vignette_strength - 1 - - PyFX Twilight v1 Cold - - bloom_strength - 1.5 - bloom_width - 2.25 - blur_strength - 30 - brightness - 1.25 - brightness_multiplier - 3 - contrast - 1.0299999713897705078125 - contrast_base - - 1 - 0.329999983310699462890625 - 0 - 1 - - enable_bloom - 0 - enable_color_filter - 1 - enable_gauss_blur - 0 - enable_motionblur - 1 - enable_night_vision - 0 - enable_posterize - 0 - enable_vignette - 1 - extract_high - 1 - extract_low - 0.949999999999999955591079 - gamma - 1.5 - gauss_blur_passes - 2 - noise_size - 25 - noise_strength - 0.4000000000000000222044605 - posterize_layers - 10 - saturation - 0.5 - vignette_chromatic_aberration - 0.005000000353902578353881836 - vignette_darkness - 1 - vignette_desaturation - 0.4000000059604644775390625 - vignette_radius - 5 - vignette_strength - 1 - - PyFX Twilight v1 Warm - - bloom_strength - 1.5 - bloom_width - 2.25 - blur_strength - 30 - brightness - 1.25 - brightness_multiplier - 3 - contrast - 1.0299999713897705078125 - contrast_base - - 0 - 0.66999995708465576171875 - 1 - 1 - - enable_bloom - 0 - enable_color_filter - 1 - enable_gauss_blur - 0 - enable_motionblur - 1 - enable_night_vision - 0 - enable_posterize - 0 - enable_vignette - 1 - extract_high - 1 - extract_low - 0.949999999999999955591079 - gamma - 1.5 - gauss_blur_passes - 2 - noise_size - 25 - noise_strength - 0.4000000000000000222044605 - posterize_layers - 10 - saturation - 0.5 - vignette_chromatic_aberration - 0.005000000353902578353881836 - vignette_darkness - 1 - vignette_desaturation - 0.4000000059604644775390625 - vignette_radius - 5 - vignette_strength - 1 - - PyFX Vivid v1 - - bloom_strength - 1.5 - bloom_width - 2.25 - blur_strength - 30 - brightness - 1.19999992847442626953125 - brightness_multiplier - 3 - contrast - 1.25 - contrast_base - - 0.7999999523162841796875 - 0.89999997615814208984375 - 1 - 1 - - enable_bloom - 0 - enable_color_filter - 1 - enable_gauss_blur - 0 - enable_motionblur - 1 - enable_night_vision - 0 - enable_posterize - 0 - enable_vignette - 1 - extract_high - 1 - extract_low - 0.949999999999999955591079 - gamma - 2 - gauss_blur_passes - 2 - noise_size - 25 - noise_strength - 0.4000000000000000222044605 - posterize_layers - 10 - saturation - 1.19999980926513671875 - vignette_chromatic_aberration - 0.004500000271946191787719727 - vignette_darkness - 1 - vignette_desaturation - 0 - vignette_radius - 2.9999997615814208984375 - vignette_strength - 1 - - PyFX Vivid v1 Cold - - bloom_strength - 1.5 - bloom_width - 2.25 - blur_strength - 30 - brightness - 1.19999992847442626953125 - brightness_multiplier - 3 - contrast - 1.25 - contrast_base - - 1 - 0.89999997615814208984375 - 0.7999999523162841796875 - 1 - - enable_bloom - 0 - enable_color_filter - 1 - enable_gauss_blur - 0 - enable_motionblur - 1 - enable_night_vision - 0 - enable_posterize - 0 - enable_vignette - 1 - extract_high - 1 - extract_low - 0.949999999999999955591079 - gamma - 2 - gauss_blur_passes - 2 - noise_size - 25 - noise_strength - 0.4000000000000000222044605 - posterize_layers - 10 - saturation - 1.19999980926513671875 - vignette_chromatic_aberration - 0.004500000271946191787719727 - vignette_darkness - 1 - vignette_desaturation - 0 - vignette_radius - 2.9999997615814208984375 - vignette_strength - 1 - - PyFX v1 - - bloom_strength - 1.5 - bloom_width - 2.25 - blur_strength - 30 - brightness - 1.19999992847442626953125 - brightness_multiplier - 3 - contrast - 1.25 - contrast_base - - 0.7999999523162841796875 - 0.89999997615814208984375 - 1 - 1 - - enable_bloom - 0 - enable_color_filter - 1 - enable_gauss_blur - 0 - enable_motionblur - 1 - enable_night_vision - 0 - enable_posterize - 0 - enable_vignette - 1 - extract_high - 1 - extract_low - 0.949999999999999955591079 - gamma - 2 - gauss_blur_passes - 2 - noise_size - 25 - noise_strength - 0.4000000000000000222044605 - posterize_layers - 10 - saturation - 0.7999999523162841796875 - vignette_chromatic_aberration - 0.004500000271946191787719727 - vignette_darkness - 1 - vignette_desaturation - 0 - vignette_radius - 1.5 - vignette_strength - 1 - - PyFX v2 - - bloom_strength - 1.5 - bloom_width - 2.25 - blur_strength - 30 - brightness - 1 - brightness_multiplier - 3 - contrast - 2 - contrast_base - - 0.949999988079071044921875 - 0.969999969005584716796875 - 1 - 1 - - enable_bloom - 1 - enable_color_filter - 1 - enable_gauss_blur - 0 - enable_motionblur - 1 - enable_night_vision - 0 - enable_posterize - 0 - enable_vignette - 1 - extract_high - 1 - extract_low - 0.949999999999999955591079 - gamma - 5 - gauss_blur_passes - 2 - noise_size - 25 - noise_strength - 0.4000000000000000222044605 - posterize_layers - 10 - saturation - 1 - vignette_chromatic_aberration - 0.004500000271946191787719727 - vignette_darkness - 1 - vignette_desaturation - 0 - vignette_radius - 1.5 - vignette_strength - 1 - - PyFX v3 - - bloom_strength - 1.5 - bloom_width - 2.25 - blur_strength - 30 - brightness - 1 - brightness_multiplier - 3 - contrast - 1.75 - contrast_base - - 0.949999988079071044921875 - 0.969999969005584716796875 - 1 - 1 - - enable_bloom - 1 - enable_color_filter - 1 - enable_gauss_blur - 0 - enable_motionblur - 1 - enable_night_vision - 0 - enable_posterize - 0 - enable_vignette - 1 - extract_high - 1 - extract_low - 0.949999999999999955591079 - gamma - 4 - gauss_blur_passes - 2 - noise_size - 25 - noise_strength - 0.4000000000000000222044605 - posterize_layers - 10 - saturation - 1.099999904632568359375 - vignette_chromatic_aberration - 0.004500000271946191787719727 - vignette_darkness - 0.66999995708465576171875 - vignette_desaturation - 0 - vignette_radius - 2.9999997615814208984375 - vignette_strength - 1 - - PyFX Default - - bloom_strength - 1.5 - bloom_width - 2.25 - blur_strength - 30 - brightness - 1 - brightness_multiplier - 3 - contrast - 1.75 - contrast_base - - 0.949999988079071044921875 - 0.969999969005584716796875 - 1 - 1 - - enable_bloom - 1 - enable_color_filter - 1 - enable_gauss_blur - 0 - enable_motionblur - 1 - enable_night_vision - 0 - enable_posterize - 0 - enable_vignette - 1 - extract_high - 1 - extract_low - 0.949999999999999955591079 - gamma - 4 - gauss_blur_passes - 2 - noise_size - 25 - noise_strength - 0.4000000000000000222044605 - posterize_layers - 10 - saturation - 1.099999904632568359375 - vignette_chromatic_aberration - 0.004500000271946191787719727 - vignette_darkness - 0.66999995708465576171875 - vignette_desaturation - 0 - vignette_radius - 2.9999997615814208984375 - vignette_strength - 1 - - + PyFX CatVision v1 + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 30 + brightness + 4 + brightness_multiplier + 3 + contrast + 3 + contrast_base + + 1 + 0 + 0.25 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 1 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 2 + gauss_blur_passes + 1 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 0.0499999523162841796875 + vignette_chromatic_aberration + 0.1000000014901161193847656 + vignette_darkness + 1 + vignette_desaturation + 1 + vignette_radius + 3.9999997615814208984375 + vignette_strength + 1 + + PyFX CatVision v1 Dark + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 30 + brightness + 2 + brightness_multiplier + 3 + contrast + 3 + contrast_base + + 1 + 0 + 0.25 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 1 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 2.5 + gauss_blur_passes + 1 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 0.0499999523162841796875 + vignette_chromatic_aberration + 0.1000000014901161193847656 + vignette_darkness + 1 + vignette_desaturation + 1 + vignette_radius + 3.9999997615814208984375 + vignette_strength + 1 + + PyFX GrimDark v1 + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 15 + brightness + 4 + brightness_multiplier + 1 + contrast + 1.25 + contrast_base + + 0.699999988079071044921875 + 0.7999999523162841796875 + 1 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 1.25 + gauss_blur_passes + 2 + noise_size + 52.5 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 0.5 + vignette_chromatic_aberration + 0.009500000625848770141601563 + vignette_darkness + 1 + vignette_desaturation + 0 + vignette_radius + 2 + vignette_strength + 1 + + PyFX GrimDark v2 + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 30 + brightness + 4 + brightness_multiplier + 3 + contrast + 1 + contrast_base + + 1 + 1 + 1 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 1 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 0.599999904632568359375 + vignette_chromatic_aberration + 0.009500000625848770141601563 + vignette_darkness + 1 + vignette_desaturation + 0.4000000059604644775390625 + vignette_radius + 2.9999997615814208984375 + vignette_strength + 1 + + PyFX Last Summer + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 20 + brightness + 1.19999992847442626953125 + brightness_multiplier + 3 + contrast + 1.19999992847442626953125 + contrast_base + + 0.5 + 1 + 1 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 2 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 1.6699998378753662109375 + vignette_chromatic_aberration + 0.001500000013038516044616699 + vignette_darkness + 0.25 + vignette_desaturation + 0 + vignette_radius + 7.999999523162841796875 + vignette_strength + 1 + + PyFX Last Winter + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 20 + brightness + 1.19999992847442626953125 + brightness_multiplier + 3 + contrast + 1.19999992847442626953125 + contrast_base + + 1 + 0.75 + 0.5 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 2 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 0.7999999523162841796875 + vignette_chromatic_aberration + 0.001500000013038516044616699 + vignette_darkness + 0.25 + vignette_desaturation + 0 + vignette_radius + 7.999999523162841796875 + vignette_strength + 1 + + PyFX Memory v1 + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 30 + brightness + 1.5 + brightness_multiplier + 3 + contrast + 1.25 + contrast_base + + 0 + 0.66999995708465576171875 + 1 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 1.5 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 0.5 + vignette_chromatic_aberration + 0.005000000353902578353881836 + vignette_darkness + 1 + vignette_desaturation + 0.4000000059604644775390625 + vignette_radius + 5 + vignette_strength + 1 + + PyFX Memory v1 Cold + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 30 + brightness + 1.5 + brightness_multiplier + 3 + contrast + 1.25 + contrast_base + + 1 + 0.329999983310699462890625 + 0 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 1.5 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 0.5 + vignette_chromatic_aberration + 0.005000000353902578353881836 + vignette_darkness + 1 + vignette_desaturation + 0.4000000059604644775390625 + vignette_radius + 5 + vignette_strength + 1 + + PyFX Memory v2 + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 20 + brightness + 1 + brightness_multiplier + 3 + contrast + 1.2400000095367431640625 + contrast_base + + 0 + 0.62000000476837158203125 + 1 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 2 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 1.3299999237060546875 + vignette_chromatic_aberration + 0.003000000026077032089233398 + vignette_darkness + 0.5 + vignette_desaturation + 0.5 + vignette_radius + 7.999999523162841796875 + vignette_strength + 1 + + PyFX Memory v2 Cold + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 20 + brightness + 1 + brightness_multiplier + 3 + contrast + 1.2400000095367431640625 + contrast_base + + 1 + 0.319999992847442626953125 + 0 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 2 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 1.3299999237060546875 + vignette_chromatic_aberration + 0.003000000026077032089233398 + vignette_darkness + 0.5 + vignette_desaturation + 0.5 + vignette_radius + 7.999999523162841796875 + vignette_strength + 1 + + PyFX Mono v1 + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 30 + brightness + 1 + brightness_multiplier + 3 + contrast + 4 + contrast_base + + 1 + 1 + 1 + 0 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 1 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 1 + gauss_blur_passes + 1 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 3 + saturation + 0 + vignette_chromatic_aberration + 0 + vignette_darkness + 1 + vignette_desaturation + 1 + vignette_radius + 1 + vignette_strength + 1 + + PyFX Neo v1 + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 15 + brightness + 1.5 + brightness_multiplier + 1 + contrast + 1.25 + contrast_base + + 1 + 1 + 0.75 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 1.25 + gauss_blur_passes + 2 + noise_size + 52.5 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 0.849999904632568359375 + vignette_chromatic_aberration + 0.009500000625848770141601563 + vignette_darkness + 1 + vignette_desaturation + 0 + vignette_radius + 2 + vignette_strength + 1 + + PyFX Neo v1 Bright + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 15 + brightness + 2.5 + brightness_multiplier + 1 + contrast + 1.25 + contrast_base + + 1 + 1 + 0.75 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 1.25 + gauss_blur_passes + 2 + noise_size + 52.5 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 0.849999904632568359375 + vignette_chromatic_aberration + 0.009500000625848770141601563 + vignette_darkness + 1 + vignette_desaturation + 0 + vignette_radius + 2 + vignette_strength + 1 + + PyFX Retrowave + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 20 + brightness + 1 + brightness_multiplier + 3 + contrast + 1.2400000095367431640625 + contrast_base + + 0.2999999821186065673828125 + 1 + 0 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 1.5 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 1.5 + vignette_chromatic_aberration + 0.003000000026077032089233398 + vignette_darkness + 0.5 + vignette_desaturation + 0 + vignette_radius + 7.999999523162841796875 + vignette_strength + 1 + + PyFX Twilight v1 Cold + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 30 + brightness + 1.25 + brightness_multiplier + 3 + contrast + 1.0299999713897705078125 + contrast_base + + 1 + 0.329999983310699462890625 + 0 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 1.5 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 0.5 + vignette_chromatic_aberration + 0.005000000353902578353881836 + vignette_darkness + 1 + vignette_desaturation + 0.4000000059604644775390625 + vignette_radius + 5 + vignette_strength + 1 + + PyFX Twilight v1 Warm + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 30 + brightness + 1.25 + brightness_multiplier + 3 + contrast + 1.0299999713897705078125 + contrast_base + + 0 + 0.66999995708465576171875 + 1 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 1.5 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 0.5 + vignette_chromatic_aberration + 0.005000000353902578353881836 + vignette_darkness + 1 + vignette_desaturation + 0.4000000059604644775390625 + vignette_radius + 5 + vignette_strength + 1 + + PyFX Underwater + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 30 + brightness + 1.14999997615814208984375 + brightness_multiplier + 3 + contrast + 0.89999997615814208984375 + contrast_base + + 0 + 0.5 + 1 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 1 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 0.75 + gauss_blur_passes + 1 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 0.75 + vignette_chromatic_aberration + 0.01000000070780515670776367 + vignette_darkness + 0.5 + vignette_desaturation + 0 + vignette_radius + 7.999999523162841796875 + vignette_strength + 1 + + PyFX Underwater Murky + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 30 + brightness + 0.829999983310699462890625 + brightness_multiplier + 3 + contrast + 0.89999997615814208984375 + contrast_base + + 0.64999997615814208984375 + 1 + 0 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 1 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 0.7999999523162841796875 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 0.3999998569488525390625 + vignette_chromatic_aberration + 0.01000000070780515670776367 + vignette_darkness + 0.5 + vignette_desaturation + 0 + vignette_radius + 7.999999523162841796875 + vignette_strength + 1 + + PyFX Vivid v1 + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 30 + brightness + 1.19999992847442626953125 + brightness_multiplier + 3 + contrast + 1.25 + contrast_base + + 0.7999999523162841796875 + 0.89999997615814208984375 + 1 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 2 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 1.19999980926513671875 + vignette_chromatic_aberration + 0.004500000271946191787719727 + vignette_darkness + 1 + vignette_desaturation + 0 + vignette_radius + 2.9999997615814208984375 + vignette_strength + 1 + + PyFX Vivid v1 Cold + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 30 + brightness + 1.19999992847442626953125 + brightness_multiplier + 3 + contrast + 1.25 + contrast_base + + 1 + 0.89999997615814208984375 + 0.7999999523162841796875 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 2 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 1.19999980926513671875 + vignette_chromatic_aberration + 0.004500000271946191787719727 + vignette_darkness + 1 + vignette_desaturation + 0 + vignette_radius + 2.9999997615814208984375 + vignette_strength + 1 + + PyFX Vivid v2 + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 20 + brightness + 1 + brightness_multiplier + 3 + contrast + 1.5 + contrast_base + + 1 + 1 + 1 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 3 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 1.5 + vignette_chromatic_aberration + 0.002000000094994902610778809 + vignette_darkness + 0.2999999821186065673828125 + vignette_desaturation + 0 + vignette_radius + 7.999999523162841796875 + vignette_strength + 1 + + PyFX Vivid v2 Bright + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 15 + brightness + 1.25 + brightness_multiplier + 3 + contrast + 1.5 + contrast_base + + 1 + 1 + 1 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 3 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 1.5 + vignette_chromatic_aberration + 0.01000000000000000020816682 + vignette_darkness + 1 + vignette_desaturation + 1 + vignette_radius + 1 + vignette_strength + 1 + + PyFX Vivid v2 Dark + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 15 + brightness + 1 + brightness_multiplier + 3 + contrast + 1.5 + contrast_base + + 1 + 1 + 1 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 3 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 1.5 + vignette_chromatic_aberration + 0.01000000000000000020816682 + vignette_darkness + 1 + vignette_desaturation + 1 + vignette_radius + 1 + vignette_strength + 1 + + PyFX v1 + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 30 + brightness + 1.19999992847442626953125 + brightness_multiplier + 3 + contrast + 1.25 + contrast_base + + 0.7999999523162841796875 + 0.89999997615814208984375 + 1 + 1 + + enable_bloom + 0 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 2 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 0.7999999523162841796875 + vignette_chromatic_aberration + 0.004500000271946191787719727 + vignette_darkness + 1 + vignette_desaturation + 0 + vignette_radius + 1.5 + vignette_strength + 1 + + PyFX v2 + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 30 + brightness + 1 + brightness_multiplier + 3 + contrast + 2 + contrast_base + + 0.949999988079071044921875 + 0.969999969005584716796875 + 1 + 1 + + enable_bloom + 1 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 5 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 1 + vignette_chromatic_aberration + 0.004500000271946191787719727 + vignette_darkness + 1 + vignette_desaturation + 0 + vignette_radius + 1.5 + vignette_strength + 1 + + PyFX v3 + + bloom_strength + 1.5 + bloom_width + 2.25 + blur_strength + 30 + brightness + 1 + brightness_multiplier + 3 + contrast + 1.75 + contrast_base + + 0.949999988079071044921875 + 0.969999969005584716796875 + 1 + 1 + + enable_bloom + 1 + enable_color_filter + 1 + enable_gauss_blur + 0 + enable_motionblur + 1 + enable_night_vision + 0 + enable_posterize + 0 + enable_vignette + 1 + extract_high + 1 + extract_low + 0.949999999999999955591079 + gamma + 4 + gauss_blur_passes + 2 + noise_size + 25 + noise_strength + 0.4000000000000000222044605 + posterize_layers + 10 + saturation + 1.099999904632568359375 + vignette_chromatic_aberration + 0.004500000271946191787719727 + vignette_darkness + 0.66999995708465576171875 + vignette_desaturation + 0 + vignette_radius + 2.9999997615814208984375 + vignette_strength + 1 + + diff --git a/indra/newview/app_settings/windlight/skies/%5BPyFX%5D%20Cloudy%20Dusk.xml b/indra/newview/app_settings/windlight/skies/%5BPyFX%5D%20Cloudy%20Dusk.xml new file mode 100644 index 000000000..8fe71abd1 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/%5BPyFX%5D%20Cloudy%20Dusk.xml @@ -0,0 +1,106 @@ + + + ambient + + 0 + 0.05999999865889549255371094 + 0.1499999910593032836914063 + 0.04999999701976776123046875 + + blue_density + + 1.99999988079071044921875 + 1.99999988079071044921875 + 1.99999988079071044921875 + 1 + + blue_horizon + + 0.680000007152557373046875 + 0.680000007152557373046875 + 0.680000007152557373046875 + 0.3400000035762786865234375 + + cloud_color + + 0.2999999821186065673828125 + 0.2999999821186065673828125 + 0.2999999821186065673828125 + 0.2999999821186065673828125 + + cloud_pos_density1 + + 1 + 1 + 0.0999999940395355224609375 + 1 + + cloud_pos_density2 + + 1.6884100437164306640625 + 1 + 0.0999999940395355224609375 + 1 + + cloud_scale + 0.2000000029802322387695313 + cloud_scroll_rate + + 10.1499996185302734375 + 10 + + cloud_shadow + 0.5 + density_multiplier + 5.999999848427250981330872e-05 + distance_multiplier + 3 + east_angle + 0 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.75 + 0 + 0 + 1 + + glow + + 10 + 0.001000000047497451305389404 + -0.449999988079071044921875 + 1 + + haze_density + 4 + haze_horizon + 0 + lightnorm + + 0 + 0 + -1 + 0 + + max_y + 500 + preset_num + 22 + star_brightness + 0 + sun_angle + 3.1415927410125732421875 + sunlight_color + + 0.2999999821186065673828125 + 0.38999998569488525390625 + 0.4500000178813934326171875 + 0.1499999910593032836914063 + + + diff --git a/indra/newview/app_settings/windlight/skies/%5BPyFX%5D%20Night%20Cloudy.xml b/indra/newview/app_settings/windlight/skies/%5BPyFX%5D%20Night%20Cloudy.xml new file mode 100644 index 000000000..92c786b82 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/%5BPyFX%5D%20Night%20Cloudy.xml @@ -0,0 +1,106 @@ + + + ambient + + 0.04499999806284904479980469 + 0.06749998778104782104492188 + 0.08999999612569808959960938 + 0.02999999932944774627685547 + + blue_density + + 2 + 2 + 2 + 1 + + blue_horizon + + 0.5 + 0.5 + 0.5 + 0.25 + + cloud_color + + 0.1400000005960464477539063 + 0.1400000005960464477539063 + 0.1400000005960464477539063 + 0.1400000005960464477539063 + + cloud_pos_density1 + + 1 + 1 + 0.25 + 1 + + cloud_pos_density2 + + 1.6884100437164306640625 + 1 + 0 + 1 + + cloud_scale + 0.2000000029802322387695313 + cloud_scroll_rate + + 10.3999996185302734375 + 10 + + cloud_shadow + 0.599999964237213134765625 + density_multiplier + 4.999999873689375817775726e-05 + distance_multiplier + 7 + east_angle + 0 + enable_cloud_scroll + + 1 + 1 + + gamma + + 0.75 + 0 + 0 + 1 + + glow + + 10 + 0.001000000047497451305389404 + -0.449999988079071044921875 + 1 + + haze_density + 4 + haze_horizon + 0 + lightnorm + + 0 + 0 + -1 + 0 + + max_y + 1 + preset_num + 22 + star_brightness + 0 + sun_angle + 3.1415927410125732421875 + sunlight_color + + 0 + 0 + 0 + 0 + + + From 9945fc1767382c2659942c4546e3aeb0cd427ea9 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Fri, 12 Jul 2019 17:48:59 -0400 Subject: [PATCH 021/115] Enable Abuse Report from P2P IM --- indra/newview/llimpanel.cpp | 2 ++ .../newview/skins/default/xui/en-us/floater_instant_message.xml | 1 + .../xui/en-us/floater_instant_message_concisebuttons.xml | 1 + 3 files changed, 4 insertions(+) diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp index 6334a7f62..b88fa6e40 100644 --- a/indra/newview/llimpanel.cpp +++ b/indra/newview/llimpanel.cpp @@ -45,6 +45,7 @@ #include "llfloateravatarpicker.h" #include "llfloaterchat.h" #include "llfloaterinventory.h" +#include "llfloaterreporter.h" #include "llfloaterwebcontent.h" // For web browser display of logs #include "llgroupactions.h" #include "llhttpclient.h" @@ -1138,6 +1139,7 @@ void LLFloaterIMPanel::onFlyoutCommit(LLComboBox* flyout, const LLSD& value) case -2: LLAvatarActions::showOnMap(mOtherParticipantUUID); break; case -3: gAgentCamera.lookAtObject(mOtherParticipantUUID); break; case -4: onAddButtonClicked(); break; + case -5: LLFloaterReporter::showFromAvatar(mOtherParticipantUUID, mLogLabel); break; default: // Options >= 6 use dynamic items { // First remove them all diff --git a/indra/newview/skins/default/xui/en-us/floater_instant_message.xml b/indra/newview/skins/default/xui/en-us/floater_instant_message.xml index 331ee9b8a..356a41861 100644 --- a/indra/newview/skins/default/xui/en-us/floater_instant_message.xml +++ b/indra/newview/skins/default/xui/en-us/floater_instant_message.xml @@ -16,6 +16,7 @@ + diff --git a/indra/newview/skins/default/xui/en-us/floater_instant_message_concisebuttons.xml b/indra/newview/skins/default/xui/en-us/floater_instant_message_concisebuttons.xml index 6bfe25215..a2590a7ed 100644 --- a/indra/newview/skins/default/xui/en-us/floater_instant_message_concisebuttons.xml +++ b/indra/newview/skins/default/xui/en-us/floater_instant_message_concisebuttons.xml @@ -20,6 +20,7 @@ + From 2f54cf26a9d4d626879bd87d5f9f6d0a5480aecf Mon Sep 17 00:00:00 2001 From: Router Gray Date: Sun, 14 Jul 2019 01:06:47 -0500 Subject: [PATCH 022/115] Make gcc happy, silence 'changed meaning' warning. --- indra/llcommon/llindexedvector.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llcommon/llindexedvector.h b/indra/llcommon/llindexedvector.h index aa950eeb5..7e59f820f 100644 --- a/indra/llcommon/llindexedvector.h +++ b/indra/llcommon/llindexedvector.h @@ -189,7 +189,7 @@ public: } } - typedef DeletePointer DeletePointer; + typedef ::DeletePointer DeletePointer; }; template From c2fbb6f10fdf4f3a2d6423ce4a22e13613d31387 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Sun, 14 Jul 2019 02:12:03 -0400 Subject: [PATCH 023/115] Fix single line group chat button positions --- .../floater_instant_message_group_concisebuttons.xml | 8 +++----- .../floater_instant_message_group_concisebuttons.xml | 7 ++++--- .../floater_instant_message_group_concisebuttons.xml | 11 ++++++----- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/indra/newview/skins/default/xui/de/floater_instant_message_group_concisebuttons.xml b/indra/newview/skins/default/xui/de/floater_instant_message_group_concisebuttons.xml index d173c660c..c7930eef3 100644 --- a/indra/newview/skins/default/xui/de/floater_instant_message_group_concisebuttons.xml +++ b/indra/newview/skins/default/xui/de/floater_instant_message_group_concisebuttons.xml @@ -10,18 +10,16 @@ Für Instant Message hier klicken. (Moderiert: Stimmen in der Standardeinstellung stummgeschaltet) Ihr Text-Chat wurde von einem Gruppenmoderator deaktiviert. - diff --git a/indra/newview/skins/default/xui/es/floater_instant_message_group_concisebuttons.xml b/indra/newview/skins/default/xui/es/floater_instant_message_group_concisebuttons.xml index 77cc11e63..6fe5e35d9 100644 --- a/indra/newview/skins/default/xui/es/floater_instant_message_group_concisebuttons.xml +++ b/indra/newview/skins/default/xui/es/floater_instant_message_group_concisebuttons.xml @@ -27,11 +27,12 @@ Tu chat de texto ha sido deshabilitado por un Moderado del Grupo. - - + - + + + diff --git a/indra/newview/skins/default/xui/en-us/notifications.xml b/indra/newview/skins/default/xui/en-us/notifications.xml index 984bfb44b..6024f8c95 100644 --- a/indra/newview/skins/default/xui/en-us/notifications.xml +++ b/indra/newview/skins/default/xui/en-us/notifications.xml @@ -3390,6 +3390,69 @@ You can only have [MAX_MANAGER] Estate Managers. type="alertmodal"> Can't add estate owner to estate 'Banned Resident' list. + + +Unable to add banned resident to estate manager list. + + + +Unable to add estate manager [AGENT] to banned list. + + + +<nolink>[GROUP]</nolink> is already in the Allowed Groups list. + + + +[AGENT] is already in your [LIST_TYPE] list. + + + +[AGENT] are already in your [LIST_TYPE] list. + + + +[AGENT] was added to [LIST_TYPE] list of [ESTATE]. + + + +[AGENT] were added to [LIST_TYPE] list of [ESTATE]. + + + +[AGENT] was removed from [LIST_TYPE] list of [ESTATE]. + + + +[AGENT] were removed from [LIST_TYPE] list of [ESTATE]. + + + + + + + + + + Estate Managers: + + @@ -417,6 +417,11 @@ + + + + width="181" /> + font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="185" + mouse_opaque="true" name="online_yes" v_pad="0" width="136"> Currently Online + font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="0" + mouse_opaque="true" name="label" v_pad="0" width="136"> Born: + width="137" /> + font="SansSerifSmall" h_pad="0" halign="left" height="16" left_delta="0" + mouse_opaque="true" name="label2" v_pad="0" width="136"> Account: - + + follows="left|top" font="SansSerifSmall" height="48" left_delta="0" + mouse_opaque="false" name="acct" width="136" /> + v_pad="0" width="135"> Partner: