Merge branch 'master' into ManagedMarketplace

# Conflicts:
#	indra/newview/llinventorybridge.cpp
#	indra/newview/lltooldraganddrop.h
This commit is contained in:
Lirusaito
2019-02-28 23:32:37 -05:00
217 changed files with 7047 additions and 1560 deletions

View File

@@ -84,6 +84,7 @@ if (WINDOWS)
/DNOMINMAX
/DUNICODE
/D_UNICODE
/DBOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE
/GS
/TP
/W3
@@ -107,7 +108,7 @@ if (WINDOWS)
endif (USE_LTO)
if (WORD_SIZE EQUAL 32)
add_compile_options(/arch:SSE2)
add_compile_options(/arch:SSE3)
endif (WORD_SIZE EQUAL 32)
if (NOT DISABLE_FATAL_WARNINGS)
@@ -212,23 +213,23 @@ if (LINUX)
if (NOT STANDALONE)
set(MARCH_FLAG " -march=pentium4")
endif (NOT STANDALONE)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${MARCH_FLAG} -fno-inline -msse2")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${MARCH_FLAG} -fno-inline -msse2")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}${MARCH_FLAG} -mfpmath=sse,387 -msse2 ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}${MARCH_FLAG} -mfpmath=sse,387 -msse2 ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -mfpmath=sse,387 -msse2 ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -mfpmath=sse,387 -msse2 ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${MARCH_FLAG} -fno-inline -msse3")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${MARCH_FLAG} -fno-inline -msse3")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}${MARCH_FLAG} -mfpmath=sse,387 -msse3 ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}${MARCH_FLAG} -mfpmath=sse,387 -msse3 ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -mfpmath=sse,387 -msse3 ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -mfpmath=sse,387 -msse3 ${GCC_EXTRA_OPTIMIZATIONS}")
endif (${ARCH} STREQUAL "x86_64")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${MARCH_FLAG} -fno-inline -msse2")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${MARCH_FLAG} -fno-inline -msse2")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}${MARCH_FLAG} -msse2")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}${MARCH_FLAG} -msse2")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -msse2")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -msse2")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${MARCH_FLAG} -fno-inline -msse3")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${MARCH_FLAG} -fno-inline -msse3")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}${MARCH_FLAG} -msse3")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}${MARCH_FLAG} -msse3")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -msse3")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -msse3")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
if (NOT STANDALONE)
set(MARCH_FLAG " -axsse4.1 -msse2")
set(MARCH_FLAG " -axsse4.1 -msse3")
endif (NOT STANDALONE)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${MARCH_FLAG} -fno-inline-functions")

View File

@@ -25,7 +25,6 @@ include_directories(
set(llcommon_SOURCE_FILES
aialert.cpp
aifile.cpp
aiframetimer.cpp
aisyncclient.cpp
aithreadid.cpp
@@ -116,7 +115,6 @@ set(llcommon_HEADER_FILES
CMakeLists.txt
aialert.h
aifile.h
aiframetimer.h
airecursive.h
aisyncclient.h

View File

@@ -1,119 +0,0 @@
/**
* @file aifile.cpp
* @brief POSIX file operations that throw on error.
*
* Copyright (c) 2013, Aleric Inglewood.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* 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.
*
* CHANGELOG
* and additional copyright holders.
*
* 03/11/2013
* Initial version, written by Aleric Inglewood @ SL
*/
#include "linden_common.h"
#include "aifile.h"
#include "aialert.h"
#if LL_WINDOWS
#include <windows.h>
#include <stdlib.h> // Windows errno
#else
#include <errno.h>
#endif
AIFile::AIFile(std::string const& filename, char const* accessmode)
{
mFp = AIFile::fopen(filename, accessmode);
}
AIFile::~AIFile()
{
AIFile::close(mFp);
}
// Like THROW_MALERTE but appends "LLFile::strerr(errn) << " (" << errn << ')'" as argument to replace [ERROR].
#define THROW_ERROR(...) \
do { \
int errn = errno; \
std::ostringstream error; \
error << LLFile::strerr(errn) << " (" << errn << ')'; \
THROW_MALERT_CLASS(AIAlert::ErrorCode, errn, __VA_ARGS__ ("[ERROR]", error.str())); \
} while(0)
//static
void AIFile::mkdir(std::string const& dirname, int perms)
{
int rc = LLFile::mkdir_nowarn(dirname, perms);
if (rc < 0 && errno != EEXIST)
{
THROW_ERROR("AIFile_mkdir_Failed_to_create_DIRNAME", AIArgs("[DIRNAME]", dirname));
}
}
//static
void AIFile::rmdir(std::string const& dirname)
{
int rc = LLFile::rmdir_nowarn(dirname);
if (rc < 0 && errno != ENOENT)
{
THROW_ERROR("AIFile_rmdir_Failed_to_remove_DIRNAME", AIArgs("[DIRNAME]", dirname));
}
}
//static
LLFILE* AIFile::fopen(std::string const& filename, const char* mode)
{
LLFILE* fp = LLFile::fopen(filename, mode);
if (!fp)
{
THROW_ERROR("AIFile_fopen_Failed_to_open_FILENAME", AIArgs("[FILENAME]", filename));
}
return fp;
}
//static
void AIFile::close(LLFILE* file)
{
if (LLFile::close(file) < 0)
{
THROW_ERROR("AIFile_close_Failed_to_close_file", AIArgs);
}
}
//static
void AIFile::remove(std::string const& filename)
{
int rc = LLFile::remove_nowarn(filename);
if (rc < 0 && errno != ENOENT)
{
THROW_ERROR("AIFile_remove_Failed_to_remove_FILENAME", AIArgs("[FILENAME]", filename));
}
}
//static
void AIFile::rename(std::string const& filename, std::string const& newname)
{
if (LLFile::rename_nowarn(filename, newname) < 0)
{
THROW_ERROR("AIFile_rename_Failed_to_rename_FILE_to_NEWFILE", AIArgs("[FILE]", filename)("[NEWFILE]", newname));
}
}

View File

@@ -1,59 +0,0 @@
/**
* @file aifile.h
* @brief Declaration of AIFile.
*
* Copyright (c) 2013, Aleric Inglewood.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* 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.
*
* CHANGELOG
* and additional copyright holders.
*
* 02/11/2013
* Initial version, written by Aleric Inglewood @ SL
*/
#ifndef AIFILE_H
#define AIFILE_H
#include "llfile.h"
// As LLFile, but throws AIAlert instead of printing a warning.
class LL_COMMON_API AIFile
{
private:
LLFILE* mFp;
public:
// Scoped file (exception safe). Throws AIAlertCode with errno on failure.
AIFile(std::string const& filename, char const* accessmode);
~AIFile();
operator LLFILE* () const { return mFp; }
// All these functions take UTF8 path/filenames.
static LLFILE* fopen(std::string const& filename, char const* accessmode);
static void close(LLFILE* file);
static void mkdir(std::string const& dirname, int perms = 0700); // Does NOT throw when dirname already exists.
static void rmdir(std::string const& dirname); // Does NOT throw when dirname does not exist.
static void remove(std::string const& filename); // Does NOT throw when filename does not exist.
static void rename(std::string const& filename, std::string const& newname);
};
#endif // AIFILE_H

View File

@@ -140,19 +140,6 @@ const U32 DEFAULT_CGI_SERVICES_PORT = 12045;
// on a single host for map tile generation. JC
const U32 DEFAULT_MAPSERVER_PORT = 12124;
const char LAND_LAYER_CODE = 'L';
const char WATER_LAYER_CODE = 'W';
const char WIND_LAYER_CODE = '7';
const char CLOUD_LAYER_CODE = '8';
// <FS:CR> Aurora Sim
// Extended land layer for Aurora Sim
const char AURORA_LAND_LAYER_CODE = 'M';
const char AURORA_WATER_LAYER_CODE = 'X';
const char AURORA_WIND_LAYER_CODE = '9';
const char AURORA_CLOUD_LAYER_CODE = ':';
// </FS:CR> Aurora Sim
enum ETerrainBrushType
{
// the valid brush numbers cannot be reordered, because they

View File

@@ -101,6 +101,9 @@ LLAssetDictionary::LLAssetDictionary()
addEntry(LLAssetType::AT_OUTFIT, new AssetEntry("OUTFIT", "outfit", "outfit", false, false, false));
addEntry(LLAssetType::AT_MY_OUTFITS, new AssetEntry("MY_OUTFITS", "my_otfts", "my outfits", false, false, false));
addEntry(LLAssetType::AT_MESH, new AssetEntry("MESH", "mesh", "mesh", false, true, true));
addEntry(LLAssetType::AT_SETTINGS, new AssetEntry("SETTINGS", "settings", "settings blob", true, true, true));
addEntry(LLAssetType::AT_UNKNOWN, new AssetEntry("UNKNOWN", "invalid", NULL, false, false, false));
addEntry(LLAssetType::AT_NONE, new AssetEntry("NONE", "-1", NULL, false, false, false));
};

View File

@@ -135,7 +135,16 @@ public:
AT_MESH = 49,
// Mesh data in our proprietary SLM format
AT_COUNT = 50,
AT_RESERVED_1 = 50,
AT_RESERVED_2 = 51,
AT_RESERVED_3 = 52,
AT_RESERVED_4 = 53,
AT_RESERVED_5 = 54,
AT_RESERVED_6 = 55,
AT_SETTINGS = 56, // Collection of settings
AT_COUNT = 57,
// +*********************************************************+
// | TO ADD AN ELEMENT TO THIS ENUM: |
@@ -146,7 +155,7 @@ public:
// | 4. ADD TO LLViewerAssetType.cpp |
// | 5. ADD TO DEFAULT_ASSET_FOR_INV in LLInventoryType.cpp |
// +*********************************************************+
AT_UNKNOWN = 255,
AT_NONE = -1
};

View File

@@ -253,23 +253,13 @@ namespace
{
#ifdef __GNUC__
// GCC: type_info::name() returns a mangled class name,st demangle
static size_t abi_name_len = 100;
static char* abi_name_buf = (char*)malloc(abi_name_len);
// warning: above is voodoo inferred from the GCC manual,
// do NOT change
int status;
// We don't use status, and shouldn't have to pass apointer to it
// but gcc 3.3 libstc++'s implementation of demangling is broken
// and fails without.
char* name = abi::__cxa_demangle(type.name(),
abi_name_buf, &abi_name_len, &status);
// this call can realloc the abi_name_buf pointer (!)
return name ? name : type.name();
// passing nullptr, 0 forces allocation of a unique buffer we can free
// fixing MAINT-8724 on OSX 10.14
int status = -1;
char* name = abi::__cxa_demangle(type.name(), nullptr, 0, &status);
std::string result(name ? name : type.name());
free(name);
return result;
#elif LL_WINDOWS
// DevStudio: type_info::name() includes the text "class " at the start

View File

@@ -36,18 +36,36 @@
#include "llformat.h"
#include <cstdarg>
#include <boost/align/aligned_allocator.hpp>
// common used function with va_list argument
// wrapper for vsnprintf to be called from llformatXXX functions.
static void va_format(std::string& out, const char *fmt, va_list va)
static void va_format(std::string& out, const char *fmt, va_list& va)
{
char tstr[1024]; /* Flawfinder: ignore */
#if LL_WINDOWS
_vsnprintf(tstr, 1024, fmt, va);
typedef typename std::vector<char, boost::alignment::aligned_allocator<char, 1>> vec_t;
static thread_local vec_t charvector(1024); // Evolves into charveleon
#define vsnprintf(va) std::vsnprintf(charvector.data(), charvector.capacity(), fmt, va)
#ifdef LL_WINDOWS // We don't have to copy on windows
#define va2 va
#else
vsnprintf(tstr, 1024, fmt, va); /* Flawfinder: ignore */
va_list va2;
va_copy(va2, va);
#endif
out.assign(tstr);
const auto smallsize(charvector.capacity());
const auto size = vsnprintf(va);
if (size < 0)
{
LL_ERRS() << "Encoding failed, code " << size << ". String hint: " << out << '/' << fmt << LL_ENDL;
}
else if (static_cast<vec_t::size_type>(size) >= smallsize) // Resize if we need more space
{
charvector.resize(1+size); // Use the String Stone
vsnprintf(va2);
}
#ifndef LL_WINDOWS
va_end(va2);
#endif
out.assign(charvector.data());
}
std::string llformat(const char *fmt, ...)

View File

@@ -85,6 +85,7 @@ LLInventoryDictionary::LLInventoryDictionary()
addEntry(LLInventoryType::IT_ANIMATION, new InventoryEntry("animation", "animation", 1, LLAssetType::AT_ANIMATION));
addEntry(LLInventoryType::IT_GESTURE, new InventoryEntry("gesture", "gesture", 1, LLAssetType::AT_GESTURE));
addEntry(LLInventoryType::IT_MESH, new InventoryEntry("mesh", "mesh", 1, LLAssetType::AT_MESH));
addEntry(LLInventoryType::IT_SETTINGS, new InventoryEntry("settings", "settings", 1, LLAssetType::AT_SETTINGS));
}
@@ -145,6 +146,15 @@ DEFAULT_ASSET_FOR_INV_TYPE[LLAssetType::AT_COUNT] =
LLInventoryType::IT_NONE, // 47 AT_NONE
LLInventoryType::IT_NONE, // 48 AT_NONE
LLInventoryType::IT_MESH, // 49 AT_MESH
LLInventoryType::IT_NONE, // 50 AT_RESERVED_1
LLInventoryType::IT_NONE, // 52 AT_RESERVED_2
LLInventoryType::IT_NONE, // 53 AT_RESERVED_3
LLInventoryType::IT_NONE, // 54 AT_RESERVED_4
LLInventoryType::IT_NONE, // 55 AT_RESERVED_5
LLInventoryType::IT_NONE, // 56 AT_RESERVED_6
LLInventoryType::IT_SETTINGS, // 57 AT_SETTINGS
};
// static

View File

@@ -62,8 +62,10 @@ public:
IT_ANIMATION = 19,
IT_GESTURE = 20,
IT_MESH = 22,
IT_COUNT = 23,
IT_SETTINGS = 25,
IT_COUNT = 26,
IT_UNKNOWN = 255,
IT_NONE = -1
};
@@ -108,8 +110,14 @@ public:
ICONNAME_LINKFOLDER,
ICONNAME_MESH,
ICONNAME_SETTINGS,
ICONNAME_SETTINGS_SKY,
ICONNAME_SETTINGS_WATER,
ICONNAME_SETTINGS_DAY,
ICONNAME_CLOTHING_UNKNOWN,
ICONNAME_INVALID,
ICONNAME_UNKNOWN,
ICONNAME_COUNT,
ICONNAME_NONE = -1
};

View File

@@ -572,7 +572,7 @@ void LLImageGL::setSize(S32 width, S32 height, S32 ncomponents, S32 discard_leve
// Check if dimensions are a power of two!
if (!checkSize(width,height))
{
LL_WARNS() << llformat("Texture has non power of two dimension: %dx%d",width,height) << " Unless on Aurora-Sim, beware." << LL_ENDL;
LL_WARNS() << llformat("Texture has non power of two dimension: %dx%d",width,height) << " Unless on WhiteCore, beware." << LL_ENDL;
}
if (mTexName)

View File

@@ -286,7 +286,7 @@ public:
LLVector2 screen_rect = LLPostProcess::getInstance()->getDimensions();
mPassLoc = getShader().getUniformLocation(sHorizontalPass);
LLVector4 vec[] = { LLVector4(1.3846153846, 3.2307692308, 0, 0) / screen_rect.mV[VX], LLVector4( 0,0, 1.3846153846, 3.2307692308 ) / screen_rect.mV[VY] };
LLVector4 vec[] = { LLVector4(1.3846153846f, 3.2307692308f, 0.f, 0.f) / screen_rect.mV[VX], LLVector4( 0.f,0.f, 1.3846153846f, 3.2307692308f ) / screen_rect.mV[VY] };
getShader().uniform4fv(sKern, LL_ARRAY_SIZE(vec), (GLfloat*)vec);
return QUAD_NORMAL;
}
@@ -367,10 +367,10 @@ LLPostProcess::LLPostProcess(void) :
}
// Singu TODO: Make this configurable via settings
if (!mAllEffectInfo.has("default"))
mAllEffectInfo["default"] = LLSD::emptyMap();
if (!mAllEffectInfo.has("Default"))
mAllEffectInfo["Default"] = LLSD::emptyMap();
LLSD& defaults = mAllEffectInfo["default"];
LLSD& defaults = mAllEffectInfo["Default"];
for(std::list<LLPointer<LLPostProcessShader> >::iterator it=mShaders.begin();it!=mShaders.end();++it)
{
@@ -385,7 +385,7 @@ LLPostProcess::LLPostProcess(void) :
{
(*it)->loadSettings(defaults);
}
setSelectedEffect("default");
setSelectedEffect("Default");
}
LLPostProcess::~LLPostProcess(void)
@@ -675,10 +675,11 @@ void LLPostProcess::setSelectedEffect(std::string const & effectName)
{
mSelectedEffectName = effectName;
mSelectedEffectInfo = mAllEffectInfo[effectName];
for(std::list<LLPointer<LLPostProcessShader> >::iterator it=mShaders.begin();it!=mShaders.end();++it)
for(auto shader : mShaders)
{
(*it)->loadSettings(mSelectedEffectInfo);
shader->loadSettings(mSelectedEffectInfo);
}
mSelectedEffectChanged(mSelectedEffectName);
}
void LLPostProcess::setSelectedEffectValue(std::string const & setting, LLSD value)
@@ -714,6 +715,7 @@ void LLPostProcess::resetSelectedEffect()
void LLPostProcess::saveEffectAs(std::string const & effectName)
{
mAllEffectInfo[effectName] = mSelectedEffectInfo;
mSelectedEffectChanged(mSelectedEffectName); // Might've changed, either way update the lists
std::string pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", XML_FILENAME));
//LL_INFOS() << "Saving PostProcess Effects settings to " << pathName << LL_ENDL;

View File

@@ -34,6 +34,7 @@
#define LL_POSTPROCESS_H
#include <map>
#include <boost/signals2.hpp>
#include "llsd.h"
#include "llrendertarget.h"
@@ -103,6 +104,9 @@ private:
// The map of all availible effects
LLSD mAllEffectInfo;
typedef boost::signals2::signal<void(const std::string&)> selected_effect_changed_signal;
selected_effect_changed_signal mSelectedEffectChanged;
public:
LLPostProcess(void);
~LLPostProcess(void);
@@ -144,6 +148,7 @@ public:
// Setters
void setSelectedEffect(std::string const & effectName);
void setSelectedEffectValue(std::string const & setting, LLSD value);
auto setSelectedEffectChangeCallback(const selected_effect_changed_signal::slot_type& func) { return mSelectedEffectChanged.connect(func); }
void resetSelectedEffect();
void saveEffectAs(std::string const & effectName);
};

View File

@@ -1497,8 +1497,9 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)
break;
case KEY_RETURN:
if (getCommitOnReturn()) onCommit();
// store sent line in history
updateHistory();
else updateHistory();
break;
case KEY_ESCAPE:

View File

@@ -406,12 +406,13 @@ class ContextText : public LLMemberListener<LLView>
}
};
static const std::string& get_focused_url()
{
return get_focused_text_editor()->getMenuSegmentUrl();
}
class ContextUrl : public LLMemberListener<LLView>
{
static const std::string& get_focused_url()
{
return get_focused_text_editor()->getMenuSegmentUrl();
}
bool handleEvent(LLPointer<LLOldEvents::LLEvent>, const LLSD& userdata) override
{
const auto& url = get_focused_url();
@@ -434,6 +435,20 @@ class ContextUrl : public LLMemberListener<LLView>
}
};
class ContextUrlCopy : public LLMemberListener<LLView>
{
bool handleEvent(LLPointer<LLOldEvents::LLEvent>, const LLSD& userdata) override
{
const auto& url = get_focused_url();
const auto& type = userdata.asStringRef();
// Empty works like avatar and group, "object" is an object (you needed to be told this)
const auto& id = type.empty() ? LLUrlAction::getUserID(url) : LLUrlAction::getObjectId(url);
LLView::getWindow()->copyTextToClipboard(utf8str_to_wstring(id));
return true;
}
};
void LLTextEditor::spell_correct(void* data)
{
@@ -516,6 +531,7 @@ void LLTextEditor::addMenuListeners()
{
(new ContextText)->registerListener(LLMenuGL::sMenuContainer, "Text");
(new ContextUrl)->registerListener(LLMenuGL::sMenuContainer, "Text.Url");
(new ContextUrlCopy)->registerListener(LLMenuGL::sMenuContainer, "Text.Url.CopyUUID");
}
void LLTextEditor::setTrackColor( const LLColor4& color )
@@ -4246,7 +4262,7 @@ void LLTextEditor::appendColoredText(const std::string &new_text,
static LLTrace::BlockTimerStatHandle FTM_APPEND_TEXT("Append Text");
void LLTextEditor::appendText(const std::string &new_text, bool allow_undo, bool prepend_newline,
const LLStyleSP style)
const LLStyleSP style, bool force_replace_links)
{
LL_RECORD_BLOCK_TIME(FTM_APPEND_TEXT);
if (new_text.empty())
@@ -4264,11 +4280,12 @@ void LLTextEditor::appendText(const std::string &new_text, bool allow_undo, bool
static LLTrace::BlockTimerStatHandle FTM_PARSE_HTML("Parse HTML");
// Appends new text to end of document
void LLTextEditor::appendTextImpl(const std::string &new_text, const LLStyleSP style)
void LLTextEditor::appendTextImpl(const std::string &new_text, const LLStyleSP style, bool force_replace_links)
{
std::string text = new_text;
static LLUICachedControl<bool> replace_links("SinguReplaceLinks");
bool is_link = style && !style->getLinkHREF().empty(); // Don't search for URLs inside a link segment (STORM-358).
static const LLUICachedControl<bool> replace_links("SinguReplaceLinks");
force_replace_links = force_replace_links || replace_links;
bool is_link = style && style->isLink(); // Don't search for URLs inside a link segment (STORM-358).
S32 part = (S32)LLTextParser::WHOLE;
if (mReadOnly && mParseHTML && !is_link) // Singu Note: Do not replace html if the user is going to edit it. (Like in profiles)
@@ -4276,20 +4293,25 @@ void LLTextEditor::appendTextImpl(const std::string &new_text, const LLStyleSP s
LL_RECORD_BLOCK_TIME(FTM_PARSE_HTML);
S32 start=0,end=0;
LLUrlMatch match;
const auto& link_color = mLinkColor ? *mLinkColor : LLUI::sConfigGroup->getColor4("HTMLLinkColor");
auto append_substr = [&](const size_t& pos, const size_t& count)
{
appendAndHighlightText(text.substr(pos, count), part, style);
};
auto append_link = [&](const std::string& link)
auto append_link = [&](const std::string& link, LLStyleSP link_style)
{
LLStyleSP link_style(style ? new LLStyle(*style) : new LLStyle);
link_style->setColor(link_color);
link_style->setLinkHREF(match.getUrl());
if (style) // Respect styling
{
const auto& text_style = *style;
link_style->mItalic = text_style.mItalic;
link_style->mBold = text_style.mBold;
link_style->mUnderline = text_style.mUnderline;
}
// Hack around colors looking bad on some backgrounds by allowing setting link color for this editor
if (mLinkColor) link_style->setColor(*mLinkColor);
appendAndHighlightText(link, part, link_style, true/*match.underlineOnHoverOnly()*/);
};
while (!text.empty() && LLUrlRegistry::instance().findUrl(text, match,
boost::bind(&LLTextEditor::replaceUrl, this, _1, _2, _3)))
const auto&& cb = force_replace_links ? boost::bind(&LLTextEditor::replaceUrl, this, _1, _2, _3) : LLUrlLabelCallback::slot_function_type();
while (!text.empty() && LLUrlRegistry::instance().findUrl(text, match, cb))
{
start = match.getStart();
end = match.getEnd()+1;
@@ -4311,7 +4333,7 @@ void LLTextEditor::appendTextImpl(const std::string &new_text, const LLStyleSP s
auto url = match.getUrl();
const auto& label = match.getLabel();
if (replace_links || url == label)
if (force_replace_links || replace_links || url == label)
{
// add icon before url if need
/* Singu TODO: Icons next to links?
@@ -4323,7 +4345,7 @@ void LLTextEditor::appendTextImpl(const std::string &new_text, const LLStyleSP s
}*/
// output the styled url
append_link(label + match.getQuery());
append_link(label + match.getQuery(), match.getStyle());
bool tooltip_required = !match.getTooltip().empty();
// set the tooltip for the Url label
@@ -4350,7 +4372,7 @@ void LLTextEditor::appendTextImpl(const std::string &new_text, const LLStyleSP s
}
}*/
}
else if (!replace_links) // Still link the link itself
else // Still link the link itself
{
const auto pos = text.find(url);
bool fallback(pos == std::string::npos); // In special cases like no protocol and brackets
@@ -4359,7 +4381,7 @@ void LLTextEditor::appendTextImpl(const std::string &new_text, const LLStyleSP s
append_substr(start, brackets ? 1 : pos-start);
// In the special cases, only link exactly the url, this might not have a protocol so calculate the exact string
if (fallback) url = brackets ? text.substr(start+1, text.find(' ', start+2)-start) : text.substr(start, end-start);
append_link(url); // Append the link
append_link(url, match.getStyle()); // Append the link
const auto url_end = pos + url.size();
if (fallback == brackets && end > url_end) // Ending text, only in special case if brackets present
append_substr(url_end, end-url_end);
@@ -4433,9 +4455,6 @@ void LLTextEditor::replaceUrl(const std::string &url,
const std::string &label,
const std::string &icon)
{
static LLUICachedControl<bool> replace_links("SinguReplaceLinks");
if (!replace_links) return;
// get the full (wide) text for the editor so we can change it
LLWString text = getWText();
LLWString wlabel = utf8str_to_wstring(label);

View File

@@ -181,8 +181,8 @@ public:
void insertText(const std::string &text, BOOL deleteSelection = TRUE);
// appends text at end
void appendText(const std::string &wtext, bool allow_undo, bool prepend_newline,
const LLStyleSP stylep = NULL);
void appendTextImpl(const std::string& new_text, const LLStyleSP style);
const LLStyleSP stylep = NULL, bool force_replace_links = true);
void appendTextImpl(const std::string& new_text, const LLStyleSP style, bool force_replace_links = true);
void setLastSegmentToolTip(const std::string& tooltip);
@@ -295,6 +295,7 @@ public:
llwchar getWChar(S32 pos) const { return mWText[pos]; }
LLWString getWSubString(S32 pos, S32 len) const { return mWText.substr(pos, len); }
const LLTextSegment* getLastSegment() const { return mSegments.empty() ? nullptr : mSegments.back(); }
const LLTextSegment* getCurrentSegment() const { return getSegmentAtOffset(mCursorPos); }
const LLTextSegment* getPreviousSegment() const;
void getSelectedSegments(std::vector<LLTextSegmentPtr>& segments) const;

View File

@@ -69,14 +69,13 @@ std::string LLUrlEntryBase::getIcon(const std::string &url)
return mIcon;
}
/*LLStyle::Params LLUrlEntryBase::getStyle() const
LLStyleSP LLUrlEntryBase::getStyle() const
{
LLStyle::Params style_params;
style_params.color = LLUIColorTable::instance().getColor("HTMLLinkColor");
style_params.readonly_color = LLUIColorTable::instance().getColor("HTMLLinkColor");
style_params.font.style = "UNDERLINE";
static LLUICachedControl<LLColor4> color("HTMLLinkColor");
LLStyleSP style_params(new LLStyle(true, color, LLStringUtil::null));
//style_params->mUnderline = true; // Singu Note: We're not gonna bother here, underlining on hover
return style_params;
}*/
}
std::string LLUrlEntryBase::getIDStringFromUrl(const std::string &url) const
@@ -677,13 +676,12 @@ std::string LLUrlEntryAgent::getLabel(const std::string &url, const LLUrlLabelCa
}
}
/*LLStyle::Params LLUrlEntryAgent::getStyle() const
LLStyleSP LLUrlEntryAgent::getStyle() const
{
LLStyle::Params style_params = LLUrlEntryBase::getStyle();
style_params.color = LLUIColorTable::instance().getColor("HTMLLinkColor");
style_params.readonly_color = LLUIColorTable::instance().getColor("HTMLLinkColor");
static LLUICachedControl<LLColor4> color("HTMLAgentColor");
LLStyleSP style_params(new LLStyle(true, color, LLStringUtil::null));
return style_params;
}*/
}
std::string localize_slapp_label(const std::string& url, const std::string& full_name)
{
@@ -733,7 +731,9 @@ std::string LLUrlEntryAgent::getIcon(const std::string &url)
// x-grid-info://lincoln.lindenlab.com/app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/(completename|displayname|username)
//
LLUrlEntryAgentName::LLUrlEntryAgentName()
{}
{
mMenuName = "menu_url_agent.xml";
}
void LLUrlEntryAgentName::onAvatarNameCache(const LLUUID& id,
const LLAvatarName& av_name)
@@ -788,11 +788,12 @@ std::string LLUrlEntryAgentName::getLabel(const std::string &url, const LLUrlLab
}
}
/*LLStyle::Params LLUrlEntryAgentName::getStyle() const
LLStyleSP LLUrlEntryAgentName::getStyle() const
{
// don't override default colors
return LLStyle::Params().is_link(false);
}*/
static LLUICachedControl<LLColor4> color("HTMLAgentColor");
LLStyleSP style_params(new LLStyle(true, color, LLStringUtil::null));
return style_params;
}
//
// LLUrlEntryAgentCompleteName describes a Second Life agent complete name Url, e.g.,
@@ -924,13 +925,12 @@ std::string LLUrlEntryGroup::getLabel(const std::string &url, const LLUrlLabelCa
}
}
/*LLStyle::Params LLUrlEntryGroup::getStyle() const
LLStyleSP LLUrlEntryGroup::getStyle() const
{
LLStyle::Params style_params = LLUrlEntryBase::getStyle();
style_params.color = LLUIColorTable::instance().getColor("HTMLLinkColor");
style_params.readonly_color = LLUIColorTable::instance().getColor("HTMLLinkColor");
LLStyleSP style_params = LLUrlEntryBase::getStyle();
//style_params->mUnderline = false; // Singu Note: We're not gonna bother here, underlining on hover
return style_params;
}*/
}
//
@@ -1392,11 +1392,12 @@ std::string LLUrlEntryNoLink::getLabel(const std::string &url, const LLUrlLabelC
return getUrl(url);
}
/*LLStyle::Params LLUrlEntryNoLink::getStyle() const
LLStyleSP LLUrlEntryNoLink::getStyle() const
{
// Don't render as URL (i.e. no context menu or hand cursor).
return LLStyle::Params().is_link(false);
}*/
// Singu Note: What the heck? No, that's misleading!!
return LLUrlEntryBase::getStyle();
}
//

View File

@@ -82,7 +82,7 @@ public:
virtual std::string getIcon(const std::string &url);
/// Return the style to render the displayed text
//virtual LLStyle::Params getStyle() const;
virtual LLStyleSP getStyle() const;
/// Given a matched Url, return a tooltip string for the hyperlink
virtual std::string getTooltip(const std::string &string) const { return mTooltip; }
@@ -232,7 +232,7 @@ public:
/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb) override;
/*virtual*/ std::string getIcon(const std::string &url) override;
/*virtual*/ std::string getTooltip(const std::string &string) const override;
///*virtual*/ LLStyle::Params getStyle() const override;
/*virtual*/ LLStyleSP getStyle() const override;
/*virtual*/ LLUUID getID(const std::string &string) const override;
/*virtual*/ bool underlineOnHoverOnly(const std::string &string) const override;
protected:
@@ -265,7 +265,7 @@ public:
}
/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb) override;
///*virtual*/ LLStyle::Params getStyle() const override;
/*virtual*/ LLStyleSP getStyle() const override;
protected:
// override this to pull out relevant name fields
virtual std::string getName(const LLAvatarName& avatar_name) = 0;
@@ -332,7 +332,7 @@ class LLUrlEntryGroup : public LLUrlEntryBase
public:
LLUrlEntryGroup();
/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb) override;
///*virtual*/ LLStyle::Params getStyle() const override;
/*virtual*/ LLStyleSP getStyle() const override;
/*virtual*/ LLUUID getID(const std::string &string) const override;
private:
void onGroupNameReceived(const LLUUID& id, const std::string& name, bool is_group);
@@ -492,7 +492,7 @@ public:
LLUrlEntryNoLink();
/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb) override;
/*virtual*/ std::string getUrl(const std::string &string) const override;
///*virtual*/ LLStyle::Params getStyle() const override;
/*virtual*/ LLStyleSP getStyle() const override;
};
///

View File

@@ -46,7 +46,7 @@ LLUrlMatch::LLUrlMatch() :
void LLUrlMatch::setValues(U32 start, U32 end, const std::string &url, const std::string &label,
const std::string& query, const std::string &tooltip,
const std::string &icon, /*const LLStyle::Params& style,*/
const std::string &icon, const LLStyleSP& style,
const std::string &menu, const std::string &location,
const LLUUID& id, bool underline_on_hover_only, bool trusted)
{
@@ -57,8 +57,8 @@ void LLUrlMatch::setValues(U32 start, U32 end, const std::string &url, const std
mQuery = query;
mTooltip = tooltip;
mIcon = icon;
//mStyle = style;
//mStyle.link_href = url;
mStyle = style;
mStyle->setLinkHREF(url);
mMenuName = menu;
mLocation = location;
mID = id;

View File

@@ -70,7 +70,7 @@ public:
std::string getIcon() const { return mIcon; }
/// Return the color to render the displayed text
//LLStyle::Params getStyle() const { return mStyle; }
LLStyleSP getStyle() const { return mStyle; }
/// Return the name of a XUI file containing the context menu items
std::string getMenuName() const { return mMenuName; }
@@ -87,7 +87,7 @@ public:
/// Change the contents of this match object (used by LLUrlRegistry)
void setValues(U32 start, U32 end, const std::string &url, const std::string &label,
const std::string& query, const std::string &tooltip, const std::string &icon,
/*const LLStyle::Params& style,*/ const std::string &menu,
const LLStyleSP& style, const std::string &menu,
const std::string &location, const LLUUID& id,
bool underline_on_hover_only = false, bool trusted = false);
@@ -103,7 +103,7 @@ private:
std::string mMenuName;
std::string mLocation;
LLUUID mID;
//LLStyle::Params mStyle;
LLStyleSP mStyle;
bool mUnderlineOnHoverOnly;
bool mTrusted;
};

View File

@@ -265,7 +265,7 @@ bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LL
match_entry->getQuery(url),
match_entry->getTooltip(url),
match_entry->getIcon(url),
//match_entry->getStyle(),
match_entry->getStyle(),
match_entry->getMenuName(),
match_entry->getLocation(url),
match_entry->getID(url),
@@ -302,7 +302,7 @@ bool LLUrlRegistry::findUrl(const LLWString &text, LLUrlMatch &match, const LLUr
match.getQuery(),
match.getTooltip(),
match.getIcon(),
//match.getStyle(),
match.getStyle(),
match.getMenuName(),
match.getLocation(),
match.getID(),

View File

@@ -66,7 +66,7 @@ public:
};
public:
virtual void postInitialized() {}
virtual void show() = 0;
virtual void show(bool focus = true) = 0;
virtual void hide() = 0;
virtual void close() = 0;
virtual BOOL getVisible() = 0;

View File

@@ -32,7 +32,7 @@
class LLWindowHeadless : public LLWindow
{
public:
/*virtual*/ void show() {};
/*virtual*/ void show(bool) {};
/*virtual*/ void hide() {};
/*virtual*/ void close() {};
/*virtual*/ BOOL getVisible() {return FALSE;};

View File

@@ -35,7 +35,7 @@
class LLWindowMesaHeadless : public LLWindow
{
public:
/*virtual*/ void show() {};
/*virtual*/ void show(bool) {};
/*virtual*/ void hide() {};
/*virtual*/ void close() {};
/*virtual*/ BOOL getVisible() {return FALSE;};

View File

@@ -790,7 +790,7 @@ LLWindowSDL::~LLWindowSDL()
}
void LLWindowSDL::show()
void LLWindowSDL::show(bool focus)
{
// *FIX: What to do with SDL?
}

View File

@@ -49,7 +49,7 @@
class LLWindowSDL : public LLWindow
{
public:
/*virtual*/ void show();
/*virtual*/ void show(bool focus);
/*virtual*/ void hide();
/*virtual*/ void close();
/*virtual*/ BOOL getVisible();

View File

@@ -717,9 +717,10 @@ void LLWindowWin32::postInitialized()
mCallbacks->handleDPIScaleChange(this, xDPIScale, yDPIScale);
}
void LLWindowWin32::show()
void LLWindowWin32::show(bool take_focus)
{
ShowWindow(mWindowHandle, SW_SHOW);
if (!take_focus) return;
SetForegroundWindow(mWindowHandle);
SetFocus(mWindowHandle);
}

View File

@@ -41,7 +41,7 @@ class LLWindowWin32 : public LLWindow
{
public:
/*virtual*/ void postInitialized();
/*virtual*/ void show();
/*virtual*/ void show(bool focus = true);
/*virtual*/ void hide();
/*virtual*/ void close();
/*virtual*/ BOOL getVisible();

View File

@@ -13,7 +13,7 @@ include_directories(
)
set(llxml_SOURCE_FILES
#aixml.cpp
aixml.cpp
llcontrol.cpp
llxmlnode.cpp
llxmlparser.cpp
@@ -23,7 +23,7 @@ set(llxml_SOURCE_FILES
set(llxml_HEADER_FILES
CMakeLists.txt
#aixml.h
aixml.h
llcontrol.h
llcontrolgroupreader.h
llxmlnode.h

View File

@@ -32,7 +32,6 @@
#include "aixml.h"
#include "llmd5.h"
#include <boost/tokenizer.hpp>
#include "aifile.h"
//=============================================================================
// Overview
@@ -311,11 +310,10 @@ void AIXMLElement::child(LLDate const& element)
//-----------------------------------------------------------------------------
// AIXMLStream
AIXMLStream::AIXMLStream(LLFILE* fp, bool standalone) : mOfs(fp)
AIXMLStream::AIXMLStream(const std::string& filename, bool standalone) : mOfs(filename)
{
char const* sp = standalone ? " standalone=\"yes\"" : "";
int rc = fprintf(fp, "<?xml version=\"1.0\" encoding=\"utf-8\"%s ?>\n", sp);
if (rc < 0 || ferror(fp))
mOfs << "<?xml version=\"1.0\" encoding=\"utf-8\"" << (standalone ? " standalone=\"yes\"" : LLStringUtil::null) << "?>\n";
if (!mOfs)
{
// I don't think that errno is set to anything else but EBADF here,
// so there is not really any informative message to add here.
@@ -342,7 +340,6 @@ AIXMLParser::AIXMLParser(std::string const& filename, char const* file_desc, std
AIArgs args;
if (!mXmlTree.parseFile(filename, TRUE))
{
AIFile dummy(filename, "rb"); // Check if the file can be opened at all (throws with a more descriptive error if not).
error = "AIXMLParser_Cannot_parse_FILEDESC_FILENAME";
}
else

View File

@@ -151,7 +151,7 @@ void AIXMLElement::child(FWD_ITERATOR i1, FWD_ITERATOR const& i2)
class AIXMLStream {
protected:
llofstream mOfs;
AIXMLStream(LLFILE* fp, bool standalone);
AIXMLStream(const std::string& filename, bool standalone);
~AIXMLStream();
};
@@ -159,7 +159,7 @@ class AIXMLStream {
class AIXMLRootElement : public AIXMLStream, public AIXMLElement
{
public:
AIXMLRootElement(LLFILE* fp, char const* name, bool standalone = true) : AIXMLStream(fp, standalone), AIXMLElement(mOfs, name, 0) { }
AIXMLRootElement(const std::string& filename, char const* name, bool standalone = true) : AIXMLStream(filename, standalone), AIXMLElement(mOfs, name, 0) { }
};
class AIXMLElementParser

View File

@@ -78,7 +78,7 @@ include_directories(
set(viewer_SOURCE_FILES
NACLantispam.cpp
aihttpview.cpp
#aixmllindengenepool.cpp
aixmllindengenepool.cpp
alfloaterregiontracker.cpp
aoremotectrl.cpp
ascentfloatercontactgroups.cpp
@@ -174,6 +174,7 @@ set(viewer_SOURCE_FILES
llexternaleditor.cpp
llface.cpp
llfasttimerview.cpp
llfavoritesbar.cpp
llfeaturemanager.cpp
llfirstuse.cpp
llflexibleobject.cpp
@@ -321,6 +322,7 @@ set(viewer_SOURCE_FILES
llinventoryobserver.cpp
llinventorypanel.cpp
lljoystickbutton.cpp
lllandmarkactions.cpp
lllandmarklist.cpp
lllogchat.cpp
llloginhandler.cpp
@@ -612,7 +614,7 @@ set(viewer_HEADER_FILES
NACLantispam.h
aihttpview.h
#aixmllindengenepool.h
aixmllindengenepool.h
alfloaterregiontracker.h
aoremotectrl.h
ascentfloatercontactgroups.h
@@ -708,6 +710,7 @@ set(viewer_HEADER_FILES
llexternaleditor.h
llface.h
llfasttimerview.h
llfavoritesbar.h
llfeaturemanager.h
llfirstuse.h
llflexibleobject.h
@@ -854,6 +857,7 @@ set(viewer_HEADER_FILES
llinventoryobserver.h
llinventorypanel.h
lljoystickbutton.h
lllandmarkactions.h
lllandmarklist.h
lllightconstants.h
lllogchat.h

View File

@@ -67,7 +67,7 @@ AIXMLLindenGenepool::MetaData::MetaData(AIXMLElementParser const& parser)
parser.attribute(DEFAULT_LLDATE_NAME, mDate);
}
AIXMLLindenGenepool::AIXMLLindenGenepool(LLFILE* fp) : AIXMLRootElement(fp, "linden_genepool")
AIXMLLindenGenepool::AIXMLLindenGenepool(const std::string& filename) : AIXMLRootElement(filename, "linden_genepool")
{
attribute("version", "1.0");
attribute("metaversion", "1.0");

View File

@@ -53,7 +53,7 @@ class AIXMLLindenGenepool : public AIXMLRootElement
MetaData(AIXMLElementParser const& parser);
};
AIXMLLindenGenepool(LLFILE* fp);
AIXMLLindenGenepool(const std::string& filename);
};
class AIVisualParamIDValuePair

View File

@@ -1196,7 +1196,7 @@ Found in Advanced->Rendering->Info Displays</string>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<boolean>0</boolean>
<boolean>1</boolean>
</map>
<key>InstantMessageLogPathAnyAccount</key>
<map>
@@ -9074,6 +9074,22 @@ This should be as low as possible, but too low may break functionality</string>
<key>Value</key>
<integer>400</integer>
</map>
<key>HTMLAgentColor</key>
<map>
<key>Comment</key>
<string>Color of hyperlinked user/object names</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Color4</string>
<key>Value</key>
<array>
<real>0.600000023842</real>
<real>0.600000023842</real>
<real>1.0</real>
<real>1.0</real>
</array>
</map>
<key>HTMLLinkColor</key>
<map>
<key>Comment</key>

View File

@@ -770,6 +770,17 @@
<key>Value</key>
<string>-%Y-%m</string>
</map>
<key>ShowFavoritesOnLogin</key>
<map>
<key>Comment</key>
<string>Determines whether favorites of last logged in user will be saved on exit from viewer and shown on login screen</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>KeywordsChangeColor</key>
<map>

View File

@@ -6,6 +6,8 @@
<real>4.5799999237060547</real>
<key>bloom_width</key>
<real>12.539999961853027</real>
<key>gamma</key>
<real>1.0</real>
<key>brightness</key>
<real>0.89999997615814209</real>
<key>brightness_multiplier</key>
@@ -42,6 +44,8 @@
<real>1.5</real>
<key>bloom_width</key>
<real>2.25</real>
<key>gamma</key>
<real>1.0</real>
<key>brightness</key>
<real>1</real>
<key>brightness_multiplier</key>
@@ -144,7 +148,7 @@
<key>saturation</key>
<real>1</real>
</map>
<key>default</key>
<key>Default</key>
<map>
<key>bloom_strength</key>
<real>1.5</real>
@@ -173,12 +177,12 @@
<boolean>0</boolean>
<key>enable_gauss_blur</key>
<boolean>0</boolean>
<key>enable_posterize</key>
<boolean>0</boolean>
<key>enable_motionblur</key>
<boolean>0</boolean>
<key>enable_vignette</key>
<boolean>0</boolean>
<key>enable_posterize</key>
<boolean>0</boolean>
<key>enable_motionblur</key>
<boolean>0</boolean>
<key>enable_vignette</key>
<boolean>0</boolean>
<key>gauss_blur_passes</key>
<integer>2</integer>
<key>extract_high</key>
@@ -191,82 +195,20 @@
<real>0.40000000000000002</real>
<key>saturation</key>
<real>1</real>
<key>posterize_layers</key>
<real>10</real>
<key>blur_strength</key>
<real>10</real>
<key>vignette_strength</key>
<real>0.85</real>
<key>vignette_radius</key>
<real>0.7</real>
<key>vignette_darkness</key>
<real>1.0</real>
<key>vignette_desaturation</key>
<real>1.0</real>
<key>vignette_chromatic_aberration</key>
<real>0.01</real>
</map>
<key>PyFx None</key>
<map>
<key>bloom_strength</key>
<real>1.5</real>
<key>bloom_width</key>
<real>2.25</real>
<key>blur_strength</key>
<real>10</real>
<key>brightness</key>
<real>1</real>
<key>brightness_multiplier</key>
<real>3</real>
<key>contrast</key>
<real>1</real>
<key>contrast_base</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>0.5</real>
</array>
<key>enable_bloom</key>
<boolean>0</boolean>
<key>enable_color_filter</key>
<boolean>0</boolean>
<key>enable_gauss_blur</key>
<boolean>0</boolean>
<key>enable_motionblur</key>
<boolean>0</boolean>
<key>enable_night_vision</key>
<boolean>0</boolean>
<key>enable_posterize</key>
<boolean>0</boolean>
<key>enable_vignette</key>
<boolean>0</boolean>
<key>extract_high</key>
<real>1</real>
<key>extract_low</key>
<real>0.949999999999999955591079</real>
<key>gamma</key>
<real>1</real>
<key>gauss_blur_passes</key>
<integer>2</integer>
<key>noise_size</key>
<real>25</real>
<key>noise_strength</key>
<real>0.4000000000000000222044605</real>
<key>posterize_layers</key>
<real>10</real>
<key>saturation</key>
<real>1</real>
<key>vignette_chromatic_aberration</key>
<real>0.01000000000000000020816682</real>
<key>vignette_darkness</key>
<real>1</real>
<key>vignette_desaturation</key>
<real>1</real>
<key>vignette_radius</key>
<real>0.699999999999999955591079</real>
<key>blur_strength</key>
<real>10</real>
<key>vignette_strength</key>
<real>0.8499999999999999777955395</real>
<real>0.85</real>
<key>vignette_radius</key>
<real>0.7</real>
<key>vignette_darkness</key>
<real>1.0</real>
<key>vignette_desaturation</key>
<real>1.0</real>
<key>vignette_chromatic_aberration</key>
<real>0.01</real>
</map>
<key>PyFX CatVision v1</key>
<map>
@@ -826,7 +768,7 @@
<key>vignette_strength</key>
<real>1</real>
</map>
<key>PyFX v1</key>
<key>PyFX Twilight v1 Cold</key>
<map>
<key>bloom_strength</key>
<real>1.5</real>
@@ -835,15 +777,77 @@
<key>blur_strength</key>
<real>30</real>
<key>brightness</key>
<real>1.19999992847442626953125</real>
<real>1.25</real>
<key>brightness_multiplier</key>
<real>3</real>
<key>contrast</key>
<real>1.25</real>
<real>1.0299999713897705078125</real>
<key>contrast_base</key>
<array>
<real>0.7999999523162841796875</real>
<real>0.89999997615814208984375</real>
<real>1</real>
<real>0.329999983310699462890625</real>
<real>0</real>
<real>1</real>
</array>
<key>enable_bloom</key>
<boolean>0</boolean>
<key>enable_color_filter</key>
<integer>1</integer>
<key>enable_gauss_blur</key>
<boolean>0</boolean>
<key>enable_motionblur</key>
<integer>1</integer>
<key>enable_night_vision</key>
<boolean>0</boolean>
<key>enable_posterize</key>
<boolean>0</boolean>
<key>enable_vignette</key>
<integer>1</integer>
<key>extract_high</key>
<real>1</real>
<key>extract_low</key>
<real>0.949999999999999955591079</real>
<key>gamma</key>
<real>1.5</real>
<key>gauss_blur_passes</key>
<integer>2</integer>
<key>noise_size</key>
<real>25</real>
<key>noise_strength</key>
<real>0.4000000000000000222044605</real>
<key>posterize_layers</key>
<real>10</real>
<key>saturation</key>
<real>0.5</real>
<key>vignette_chromatic_aberration</key>
<real>0.005000000353902578353881836</real>
<key>vignette_darkness</key>
<real>1</real>
<key>vignette_desaturation</key>
<real>0.4000000059604644775390625</real>
<key>vignette_radius</key>
<real>5</real>
<key>vignette_strength</key>
<real>1</real>
</map>
<key>PyFX Twilight v1 Warm</key>
<map>
<key>bloom_strength</key>
<real>1.5</real>
<key>bloom_width</key>
<real>2.25</real>
<key>blur_strength</key>
<real>30</real>
<key>brightness</key>
<real>1.25</real>
<key>brightness_multiplier</key>
<real>3</real>
<key>contrast</key>
<real>1.0299999713897705078125</real>
<key>contrast_base</key>
<array>
<real>0</real>
<real>0.66999995708465576171875</real>
<real>1</real>
<real>1</real>
</array>
@@ -866,7 +870,7 @@
<key>extract_low</key>
<real>0.949999999999999955591079</real>
<key>gamma</key>
<real>2</real>
<real>1.5</real>
<key>gauss_blur_passes</key>
<integer>2</integer>
<key>noise_size</key>
@@ -876,15 +880,15 @@
<key>posterize_layers</key>
<real>10</real>
<key>saturation</key>
<real>0.7999999523162841796875</real>
<real>0.5</real>
<key>vignette_chromatic_aberration</key>
<real>0.004500000271946191787719727</real>
<real>0.005000000353902578353881836</real>
<key>vignette_darkness</key>
<real>1</real>
<key>vignette_desaturation</key>
<real>0</real>
<real>0.4000000059604644775390625</real>
<key>vignette_radius</key>
<real>1.5</real>
<real>5</real>
<key>vignette_strength</key>
<real>1</real>
</map>
@@ -950,7 +954,69 @@
<key>vignette_strength</key>
<real>1</real>
</map>
<key>PyFx default</key>
<key>PyFX Vivid v1 Cold</key>
<map>
<key>bloom_strength</key>
<real>1.5</real>
<key>bloom_width</key>
<real>2.25</real>
<key>blur_strength</key>
<real>30</real>
<key>brightness</key>
<real>1.19999992847442626953125</real>
<key>brightness_multiplier</key>
<real>3</real>
<key>contrast</key>
<real>1.25</real>
<key>contrast_base</key>
<array>
<real>1</real>
<real>0.89999997615814208984375</real>
<real>0.7999999523162841796875</real>
<real>1</real>
</array>
<key>enable_bloom</key>
<boolean>0</boolean>
<key>enable_color_filter</key>
<integer>1</integer>
<key>enable_gauss_blur</key>
<boolean>0</boolean>
<key>enable_motionblur</key>
<integer>1</integer>
<key>enable_night_vision</key>
<boolean>0</boolean>
<key>enable_posterize</key>
<boolean>0</boolean>
<key>enable_vignette</key>
<integer>1</integer>
<key>extract_high</key>
<real>1</real>
<key>extract_low</key>
<real>0.949999999999999955591079</real>
<key>gamma</key>
<real>2</real>
<key>gauss_blur_passes</key>
<integer>2</integer>
<key>noise_size</key>
<real>25</real>
<key>noise_strength</key>
<real>0.4000000000000000222044605</real>
<key>posterize_layers</key>
<real>10</real>
<key>saturation</key>
<real>1.19999980926513671875</real>
<key>vignette_chromatic_aberration</key>
<real>0.004500000271946191787719727</real>
<key>vignette_darkness</key>
<real>1</real>
<key>vignette_desaturation</key>
<real>0</real>
<key>vignette_radius</key>
<real>2.9999997615814208984375</real>
<key>vignette_strength</key>
<real>1</real>
</map>
<key>PyFX v1</key>
<map>
<key>bloom_strength</key>
<real>1.5</real>
@@ -972,7 +1038,7 @@
<real>1</real>
</array>
<key>enable_bloom</key>
<boolean>1</boolean>
<boolean>0</boolean>
<key>enable_color_filter</key>
<integer>1</integer>
<key>enable_gauss_blur</key>
@@ -1012,5 +1078,191 @@
<key>vignette_strength</key>
<real>1</real>
</map>
<key>PyFX v2</key>
<map>
<key>bloom_strength</key>
<real>1.5</real>
<key>bloom_width</key>
<real>2.25</real>
<key>blur_strength</key>
<real>30</real>
<key>brightness</key>
<real>1</real>
<key>brightness_multiplier</key>
<real>3</real>
<key>contrast</key>
<real>2</real>
<key>contrast_base</key>
<array>
<real>0.949999988079071044921875</real>
<real>0.969999969005584716796875</real>
<real>1</real>
<real>1</real>
</array>
<key>enable_bloom</key>
<boolean>1</boolean>
<key>enable_color_filter</key>
<integer>1</integer>
<key>enable_gauss_blur</key>
<boolean>0</boolean>
<key>enable_motionblur</key>
<integer>1</integer>
<key>enable_night_vision</key>
<boolean>0</boolean>
<key>enable_posterize</key>
<boolean>0</boolean>
<key>enable_vignette</key>
<integer>1</integer>
<key>extract_high</key>
<real>1</real>
<key>extract_low</key>
<real>0.949999999999999955591079</real>
<key>gamma</key>
<real>5</real>
<key>gauss_blur_passes</key>
<integer>2</integer>
<key>noise_size</key>
<real>25</real>
<key>noise_strength</key>
<real>0.4000000000000000222044605</real>
<key>posterize_layers</key>
<real>10</real>
<key>saturation</key>
<real>1</real>
<key>vignette_chromatic_aberration</key>
<real>0.004500000271946191787719727</real>
<key>vignette_darkness</key>
<real>1</real>
<key>vignette_desaturation</key>
<real>0</real>
<key>vignette_radius</key>
<real>1.5</real>
<key>vignette_strength</key>
<real>1</real>
</map>
<key>PyFX v3</key>
<map>
<key>bloom_strength</key>
<real>1.5</real>
<key>bloom_width</key>
<real>2.25</real>
<key>blur_strength</key>
<real>30</real>
<key>brightness</key>
<real>1</real>
<key>brightness_multiplier</key>
<real>3</real>
<key>contrast</key>
<real>1.75</real>
<key>contrast_base</key>
<array>
<real>0.949999988079071044921875</real>
<real>0.969999969005584716796875</real>
<real>1</real>
<real>1</real>
</array>
<key>enable_bloom</key>
<boolean>1</boolean>
<key>enable_color_filter</key>
<integer>1</integer>
<key>enable_gauss_blur</key>
<boolean>0</boolean>
<key>enable_motionblur</key>
<integer>1</integer>
<key>enable_night_vision</key>
<boolean>0</boolean>
<key>enable_posterize</key>
<boolean>0</boolean>
<key>enable_vignette</key>
<integer>1</integer>
<key>extract_high</key>
<real>1</real>
<key>extract_low</key>
<real>0.949999999999999955591079</real>
<key>gamma</key>
<real>4</real>
<key>gauss_blur_passes</key>
<integer>2</integer>
<key>noise_size</key>
<real>25</real>
<key>noise_strength</key>
<real>0.4000000000000000222044605</real>
<key>posterize_layers</key>
<real>10</real>
<key>saturation</key>
<real>1.099999904632568359375</real>
<key>vignette_chromatic_aberration</key>
<real>0.004500000271946191787719727</real>
<key>vignette_darkness</key>
<real>0.66999995708465576171875</real>
<key>vignette_desaturation</key>
<real>0</real>
<key>vignette_radius</key>
<real>2.9999997615814208984375</real>
<key>vignette_strength</key>
<real>1</real>
</map>
<key>PyFX Default</key>
<map>
<key>bloom_strength</key>
<real>1.5</real>
<key>bloom_width</key>
<real>2.25</real>
<key>blur_strength</key>
<real>30</real>
<key>brightness</key>
<real>1</real>
<key>brightness_multiplier</key>
<real>3</real>
<key>contrast</key>
<real>1.75</real>
<key>contrast_base</key>
<array>
<real>0.949999988079071044921875</real>
<real>0.969999969005584716796875</real>
<real>1</real>
<real>1</real>
</array>
<key>enable_bloom</key>
<boolean>1</boolean>
<key>enable_color_filter</key>
<integer>1</integer>
<key>enable_gauss_blur</key>
<boolean>0</boolean>
<key>enable_motionblur</key>
<integer>1</integer>
<key>enable_night_vision</key>
<boolean>0</boolean>
<key>enable_posterize</key>
<boolean>0</boolean>
<key>enable_vignette</key>
<integer>1</integer>
<key>extract_high</key>
<real>1</real>
<key>extract_low</key>
<real>0.949999999999999955591079</real>
<key>gamma</key>
<real>4</real>
<key>gauss_blur_passes</key>
<integer>2</integer>
<key>noise_size</key>
<real>25</real>
<key>noise_strength</key>
<real>0.4000000000000000222044605</real>
<key>posterize_layers</key>
<real>10</real>
<key>saturation</key>
<real>1.099999904632568359375</real>
<key>vignette_chromatic_aberration</key>
<real>0.004500000271946191787719727</real>
<key>vignette_darkness</key>
<real>0.66999995708465576171875</real>
<key>vignette_desaturation</key>
<real>0</real>
<key>vignette_radius</key>
<real>2.9999997615814208984375</real>
<key>vignette_strength</key>
<real>1</real>
</map>
</map>
</llsd>

View File

@@ -2,10 +2,10 @@
<map>
<key>ambient</key>
<array>
<real>3</real>
<real>3</real>
<real>3</real>
<real>1</real>
<real>1.5</real>
<real>1.5</real>
<real>1.5</real>
<real>0.5</real>
</array>
<key>blue_density</key>
<array>
@@ -63,14 +63,14 @@
</array>
<key>density_multiplier</key>
<array>
<real>4.999999873689375817775726e-05</real>
<real>0.0008999999845400452613830566</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>50</real>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>

View File

@@ -0,0 +1,141 @@
<llsd>
<map>
<key>ambient</key>
<array>
<real>1.5</real>
<real>1.5</real>
<real>1.5</real>
<real>0.5</real>
</array>
<key>blue_density</key>
<array>
<real>0.449999993698308176082179</real>
<real>0.4499999939833594919669224</real>
<real>0.4499999944309046040480382</real>
<real>1</real>
</array>
<key>blue_horizon</key>
<array>
<real>0.89999997615814208984375</real>
<real>0.89999997615814208984375</real>
<real>0.89999997615814208984375</real>
<real>0.449999988079071044921875</real>
</array>
<key>cloud_color</key>
<array>
<real>0.2261540024157503436796901</real>
<real>0.2261540024157503436796901</real>
<real>0.2261540024157503436796901</real>
<real>1</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
<array>
<real>0.5</real>
<real>0.5</real>
<real>0.125</real>
<real>1</real>
</array>
<key>cloud_scale</key>
<array>
<real>0.4199999868869781494140625</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scroll_rate</key>
<array>
<real>10</real>
<real>10</real>
</array>
<key>cloud_shadow</key>
<array>
<real>0.36000001430511474609375</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>density_multiplier</key>
<array>
<real>0.0004499999922700226306915283</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>east_angle</key>
<real>0</real>
<key>enable_cloud_scroll</key>
<array>
<boolean>1</boolean>
<boolean>1</boolean>
</array>
<key>gamma</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>glow</key>
<array>
<real>5</real>
<real>0.001000000047497451305389404</real>
<real>-0</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>4</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>haze_horizon</key>
<array>
<real>0</real>
<real>0.1991560043746730401803546</real>
<real>0.1991560043746730401803546</real>
<real>1</real>
</array>
<key>lightnorm</key>
<array>
<real>-0</real>
<real>1</real>
<real>1.148381556959066074341536e-06</real>
<real>0</real>
</array>
<key>max_y</key>
<array>
<real>4000</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>preset_num</key>
<integer>26</integer>
<key>star_brightness</key>
<real>0</real>
<key>sun_angle</key>
<real>1.57079517841339111328125</real>
<key>sunlight_color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>0</real>
</array>
</map>
</llsd>

View File

@@ -37,14 +37,14 @@
</array>
<key>cloud_pos_density2</key>
<array>
<real>1.6884100437164306640625</real>
<real>1</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scale</key>
<array>
<real>0.07000000029802322387695313</real>
<real>0.2000000029802322387695313</real>
<real>0</real>
<real>0</real>
<real>1</real>
@@ -56,7 +56,7 @@
</array>
<key>cloud_shadow</key>
<array>
<real>0.66999995708465576171875</real>
<real>0.75</real>
<real>0</real>
<real>0</real>
<real>1</real>
@@ -105,7 +105,7 @@
</array>
<key>haze_horizon</key>
<array>
<real>0</real>
<real>0.1499999910593032836914063</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
@@ -119,7 +119,7 @@
</array>
<key>max_y</key>
<array>
<real>150</real>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>

View File

@@ -23,10 +23,10 @@
</array>
<key>cloud_color</key>
<array>
<real>0.25</real>
<real>0.25</real>
<real>0.25</real>
<real>0.25</real>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
</array>
<key>cloud_pos_density1</key>
<array>
@@ -44,7 +44,7 @@
</array>
<key>cloud_scale</key>
<array>
<real>0.07000000029802322387695313</real>
<real>0.2000000029802322387695313</real>
<real>0</real>
<real>0</real>
<real>1</real>
@@ -56,7 +56,7 @@
</array>
<key>cloud_shadow</key>
<array>
<real>0.66999995708465576171875</real>
<real>0.75</real>
<real>0</real>
<real>0</real>
<real>1</real>
@@ -119,7 +119,7 @@
</array>
<key>max_y</key>
<array>
<real>150</real>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>

View File

@@ -0,0 +1,141 @@
<llsd>
<map>
<key>ambient</key>
<array>
<real>0.2999999821186065673828125</real>
<real>0.44999992847442626953125</real>
<real>0.599999964237213134765625</real>
<real>0.199999988079071044921875</real>
</array>
<key>blue_density</key>
<array>
<real>2</real>
<real>2</real>
<real>2</real>
<real>1</real>
</array>
<key>blue_horizon</key>
<array>
<real>0.599999964237213134765625</real>
<real>0.599999964237213134765625</real>
<real>0.599999964237213134765625</real>
<real>0.2999999821186065673828125</real>
</array>
<key>cloud_color</key>
<array>
<real>0.329999983310699462890625</real>
<real>0.329999983310699462890625</real>
<real>0.329999983310699462890625</real>
<real>0.329999983310699462890625</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>1</real>
<real>1</real>
<real>0.25</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
<array>
<real>1.6884100437164306640625</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scale</key>
<array>
<real>0.2000000029802322387695313</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scroll_rate</key>
<array>
<real>10.3999996185302734375</real>
<real>10</real>
</array>
<key>cloud_shadow</key>
<array>
<real>0.75</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>density_multiplier</key>
<array>
<real>9.999999747378751635551453e-05</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>5</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>east_angle</key>
<real>0</real>
<key>enable_cloud_scroll</key>
<array>
<boolean>1</boolean>
<boolean>1</boolean>
</array>
<key>gamma</key>
<array>
<real>0.89999997615814208984375</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>glow</key>
<array>
<real>0.200002193450927734375</real>
<real>0.001000000047497451305389404</real>
<real>-0.199999988079071044921875</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>4</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>haze_horizon</key>
<array>
<real>0.2099999934434890747070313</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
</array>
<key>lightnorm</key>
<array>
<real>0</real>
<real>1</real>
<real>-4.371138828673792886547744e-08</real>
<real>0</real>
</array>
<key>max_y</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>preset_num</key>
<integer>22</integer>
<key>star_brightness</key>
<real>0</real>
<key>sun_angle</key>
<real>1.57079637050628662109375</real>
<key>sunlight_color</key>
<array>
<real>1.0499999523162841796875</real>
<real>1.0499999523162841796875</real>
<real>1.0499999523162841796875</real>
<real>0.3499999940395355224609375</real>
</array>
</map>
</llsd>

View File

@@ -0,0 +1,141 @@
<llsd>
<map>
<key>ambient</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>0</real>
</array>
<key>blue_density</key>
<array>
<real>2</real>
<real>2</real>
<real>2</real>
<real>2</real>
</array>
<key>blue_horizon</key>
<array>
<real>0.39999997615814208984375</real>
<real>0.39999997615814208984375</real>
<real>0.39999997615814208984375</real>
<real>0.199999988079071044921875</real>
</array>
<key>cloud_color</key>
<array>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>0.5</real>
<real>0.5</real>
<real>0.1700000017881393432617188</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
<array>
<real>1.6884100437164306640625</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scale</key>
<array>
<real>0.2000000029802322387695313</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scroll_rate</key>
<array>
<real>10.3999996185302734375</real>
<real>10</real>
</array>
<key>cloud_shadow</key>
<array>
<real>0.75</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>density_multiplier</key>
<array>
<real>0.0005999999702908098697662354</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>3.5</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>east_angle</key>
<real>0</real>
<key>enable_cloud_scroll</key>
<array>
<boolean>1</boolean>
<boolean>1</boolean>
</array>
<key>gamma</key>
<array>
<real>1.599999904632568359375</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>glow</key>
<array>
<real>0.200002193450927734375</real>
<real>0.001000000047497451305389404</real>
<real>-0.1499999910593032836914063</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>4</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>haze_horizon</key>
<array>
<real>0.04999999701976776123046875</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
</array>
<key>lightnorm</key>
<array>
<real>0</real>
<real>0.876306593418121337890625</real>
<real>-0.4817537963390350341796875</real>
<real>0</real>
</array>
<key>max_y</key>
<array>
<real>26</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>preset_num</key>
<integer>22</integer>
<key>star_brightness</key>
<real>0</real>
<key>sun_angle</key>
<real>2.0734512805938720703125</real>
<key>sunlight_color</key>
<array>
<real>0.599999964237213134765625</real>
<real>0.75</real>
<real>0.749999940395355224609375</real>
<real>0.75</real>
</array>
</map>
</llsd>

View File

@@ -0,0 +1,141 @@
<llsd>
<map>
<key>ambient</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>0</real>
</array>
<key>blue_density</key>
<array>
<real>2</real>
<real>2</real>
<real>2</real>
<real>2</real>
</array>
<key>blue_horizon</key>
<array>
<real>0.39999997615814208984375</real>
<real>0.39999997615814208984375</real>
<real>0.39999997615814208984375</real>
<real>0.199999988079071044921875</real>
</array>
<key>cloud_color</key>
<array>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>0.5</real>
<real>0.5</real>
<real>0.1700000017881393432617188</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
<array>
<real>1.6884100437164306640625</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scale</key>
<array>
<real>0.2000000029802322387695313</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scroll_rate</key>
<array>
<real>10.3999996185302734375</real>
<real>10</real>
</array>
<key>cloud_shadow</key>
<array>
<real>0.75</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>density_multiplier</key>
<array>
<real>0.0005999999702908098697662354</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>3.5</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>east_angle</key>
<real>0</real>
<key>enable_cloud_scroll</key>
<array>
<boolean>1</boolean>
<boolean>1</boolean>
</array>
<key>gamma</key>
<array>
<real>1.19999992847442626953125</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>glow</key>
<array>
<real>0.200002193450927734375</real>
<real>0.001000000047497451305389404</real>
<real>-0.1499999910593032836914063</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>4</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>haze_horizon</key>
<array>
<real>0.04999999701976776123046875</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
</array>
<key>lightnorm</key>
<array>
<real>0</real>
<real>0.876306593418121337890625</real>
<real>-0.4817537963390350341796875</real>
<real>0</real>
</array>
<key>max_y</key>
<array>
<real>100</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>preset_num</key>
<integer>22</integer>
<key>star_brightness</key>
<real>0</real>
<key>sun_angle</key>
<real>2.0734512805938720703125</real>
<key>sunlight_color</key>
<array>
<real>0.599999964237213134765625</real>
<real>0.75</real>
<real>0.749999940395355224609375</real>
<real>0.75</real>
</array>
</map>
</llsd>

View File

@@ -30,9 +30,9 @@
</array>
<key>cloud_pos_density1</key>
<array>
<real>1</real>
<real>1</real>
<real>0.2999999821186065673828125</real>
<real>0.5</real>
<real>0.5</real>
<real>0.1700000017881393432617188</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
@@ -44,33 +44,33 @@
</array>
<key>cloud_scale</key>
<array>
<real>0.07000000029802322387695313</real>
<real>0.2000000029802322387695313</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scroll_rate</key>
<array>
<real>11</real>
<real>10.3999996185302734375</real>
<real>10</real>
</array>
<key>cloud_shadow</key>
<array>
<real>0.66999995708465576171875</real>
<real>0.75</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>density_multiplier</key>
<array>
<real>0.0003999999898951500654220581</real>
<real>0.0005999999702908098697662354</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>6</real>
<real>3.5</real>
<real>0</real>
<real>0</real>
<real>1</real>
@@ -93,7 +93,7 @@
<array>
<real>0.200002193450927734375</real>
<real>0.001000000047497451305389404</real>
<real>-0.2499999850988388061523438</real>
<real>-0.1499999910593032836914063</real>
<real>1</real>
</array>
<key>haze_density</key>
@@ -105,7 +105,7 @@
</array>
<key>haze_horizon</key>
<array>
<real>0</real>
<real>0.04999999701976776123046875</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
@@ -119,7 +119,7 @@
</array>
<key>max_y</key>
<array>
<real>70</real>
<real>100</real>
<real>0</real>
<real>0</real>
<real>1</real>

View File

@@ -2,49 +2,49 @@
<map>
<key>ambient</key>
<array>
<real>0.2880000174045562744140625</real>
<real>0.449999988079071044921875</real>
<real>0.599999964237213134765625</real>
<real>0.599999964237213134765625</real>
<real>1.0499999523162841796875</real>
<real>1.19999992847442626953125</real>
<real>1.19999992847442626953125</real>
</array>
<key>blue_density</key>
<array>
<real>0.199999988079071044921875</real>
<real>0.2999999821186065673828125</real>
<real>0.39999997615814208984375</real>
<real>0.699999988079071044921875</real>
<real>0.599999964237213134765625</real>
<real>0.2999999821186065673828125</real>
</array>
<key>blue_horizon</key>
<array>
<real>0.39999997615814208984375</real>
<real>0.5</real>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>0.199999988079071044921875</real>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
</array>
<key>cloud_color</key>
<array>
<real>0.2399999797344207763671875</real>
<real>0.2399999797344207763671875</real>
<real>0.2399999797344207763671875</real>
<real>0.2399999946355819702148438</real>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>1</real>
<real>1</real>
<real>0.329999983310699462890625</real>
<real>0.08999999612569808959960938</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
<array>
<real>1.6884100437164306640625</real>
<real>0</real>
<real>0.04999999701976776123046875</real>
<real>0.75</real>
<real>1</real>
</array>
<key>cloud_scale</key>
<array>
<real>0.0999999940395355224609375</real>
<real>0.4999999701976776123046875</real>
<real>0</real>
<real>0</real>
<real>1</real>
@@ -63,14 +63,14 @@
</array>
<key>density_multiplier</key>
<array>
<real>9.999999747378751635551453e-05</real>
<real>0.0002500000118743628263473511</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>6</real>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
@@ -84,28 +84,28 @@
</array>
<key>gamma</key>
<array>
<real>0.5</real>
<real>0.75</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>glow</key>
<array>
<real>5</real>
<real>10</real>
<real>0.001000000047497451305389404</real>
<real>-0.4799999892711639404296875</real>
<real>-0.4999999701976776123046875</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>1</real>
<real>0.199999988079071044921875</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>haze_horizon</key>
<array>
<real>0.199999988079071044921875</real>
<real>0.4699999988079071044921875</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
@@ -113,13 +113,13 @@
<key>lightnorm</key>
<array>
<real>0</real>
<real>0.876306593418121337890625</real>
<real>-0.4817537963390350341796875</real>
<real>0.867070615291595458984375</real>
<real>-0.49818527698516845703125</real>
<real>0</real>
</array>
<key>max_y</key>
<array>
<real>4000</real>
<real>2000</real>
<real>0</real>
<real>0</real>
<real>1</real>
@@ -129,13 +129,13 @@
<key>star_brightness</key>
<real>0</real>
<key>sun_angle</key>
<real>2.0734512805938720703125</real>
<real>2.092300891876220703125</real>
<key>sunlight_color</key>
<array>
<real>1.7999999523162841796875</real>
<real>1.61999976634979248046875</real>
<real>1.43999946117401123046875</real>
<real>0.599999964237213134765625</real>
<real>1.5</real>
<real>1.5</real>
<real>1.5</real>
<real>0.5</real>
</array>
</map>
</llsd>

View File

@@ -3,55 +3,55 @@
<key>ambient</key>
<array>
<real>0.599999964237213134765625</real>
<real>1.0499999523162841796875</real>
<real>1.19999992847442626953125</real>
<real>1.049999237060546875</real>
<real>1.19999992847442626953125</real>
<real>0.39999997615814208984375</real>
</array>
<key>blue_density</key>
<array>
<real>0.199999988079071044921875</real>
<real>0.0999999940395355224609375</real>
<real>0.2999999821186065673828125</real>
<real>0.39999997615814208984375</real>
<real>0.699999988079071044921875</real>
<real>0.560000002384185791015625</real>
</array>
<key>blue_horizon</key>
<array>
<real>0.39999997615814208984375</real>
<real>0.5</real>
<real>1</real>
<real>0.5</real>
<real>0.39999997615814208984375</real>
<real>0.7999999523162841796875</real>
<real>0.39999997615814208984375</real>
</array>
<key>cloud_color</key>
<array>
<real>0.2399999797344207763671875</real>
<real>0.2399999797344207763671875</real>
<real>0.2399999797344207763671875</real>
<real>0.2399999946355819702148438</real>
<real>0.39999997615814208984375</real>
<real>0.2800000011920928955078125</real>
<real>0.1999999433755874633789063</real>
<real>0.39999997615814208984375</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>1</real>
<real>1</real>
<real>0.329999983310699462890625</real>
<real>0.0999999940395355224609375</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
<array>
<real>1.6884100437164306640625</real>
<real>0</real>
<real>0.04999999701976776123046875</real>
<real>0.0999999940395355224609375</real>
<real>1</real>
</array>
<key>cloud_scale</key>
<array>
<real>0.0999999940395355224609375</real>
<real>0.05999999493360519409179688</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scroll_rate</key>
<array>
<real>10.19999980926513671875</real>
<real>10.5</real>
<real>10.0109996795654296875</real>
</array>
<key>cloud_shadow</key>
@@ -84,28 +84,28 @@
</array>
<key>gamma</key>
<array>
<real>0.5</real>
<real>0.599999964237213134765625</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>glow</key>
<array>
<real>21.8000011444091796875</real>
<real>20</real>
<real>0.001000000047497451305389404</real>
<real>-0.2499999850988388061523438</real>
<real>-1.25</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>1</real>
<real>0.5</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>haze_horizon</key>
<array>
<real>0.199999988079071044921875</real>
<real>0.2999999821186065673828125</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
@@ -132,10 +132,10 @@
<real>2.51327419281005859375</real>
<key>sunlight_color</key>
<array>
<real>2.25</real>
<real>1.68749940395355224609375</real>
<real>1.125</real>
<real>0.75</real>
<real>1.5</real>
<real>1.19999992847442626953125</real>
<real>0.89999997615814208984375</real>
<real>1.5</real>
</array>
</map>
</llsd>

View File

@@ -0,0 +1,141 @@
<llsd>
<map>
<key>ambient</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>0</real>
</array>
<key>blue_density</key>
<array>
<real>0</real>
<real>0</real>
<real>1.5</real>
<real>1.5</real>
</array>
<key>blue_horizon</key>
<array>
<real>0</real>
<real>0</real>
<real>2</real>
<real>2</real>
</array>
<key>cloud_color</key>
<array>
<real>0.5</real>
<real>0.5</real>
<real>0.5</real>
<real>0.5</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>1.6884100437164306640625</real>
<real>0</real>
<real>0.5</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
<array>
<real>1.6884100437164306640625</real>
<real>0.526096999645233154296875</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scale</key>
<array>
<real>0.0999999940395355224609375</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scroll_rate</key>
<array>
<real>10.19999980926513671875</real>
<real>10.0109996795654296875</real>
</array>
<key>cloud_shadow</key>
<array>
<real>0.5</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>density_multiplier</key>
<array>
<real>0.0003299999807495623826980591</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>50</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>east_angle</key>
<real>0</real>
<key>enable_cloud_scroll</key>
<array>
<boolean>1</boolean>
<boolean>1</boolean>
</array>
<key>gamma</key>
<array>
<real>0.329999983310699462890625</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>glow</key>
<array>
<real>30</real>
<real>0.001000000047497451305389404</real>
<real>-0.4999999701976776123046875</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>haze_horizon</key>
<array>
<real>0.5</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
</array>
<key>lightnorm</key>
<array>
<real>0</real>
<real>0.867070615291595458984375</real>
<real>-0.49818527698516845703125</real>
<real>0</real>
</array>
<key>max_y</key>
<array>
<real>2000</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>preset_num</key>
<integer>22</integer>
<key>star_brightness</key>
<real>0</real>
<key>sun_angle</key>
<real>2.092300891876220703125</real>
<key>sunlight_color</key>
<array>
<real>3</real>
<real>0.990000188350677490234375</real>
<real>0</real>
<real>1</real>
</array>
</map>
</llsd>

View File

@@ -0,0 +1,141 @@
<llsd>
<map>
<key>ambient</key>
<array>
<real>2.25</real>
<real>2.25</real>
<real>2.25</real>
<real>0.75</real>
</array>
<key>blue_density</key>
<array>
<real>2</real>
<real>2</real>
<real>2</real>
<real>2</real>
</array>
<key>blue_horizon</key>
<array>
<real>0.1999999731779098510742188</real>
<real>0.1999999731779098510742188</real>
<real>0.1999999731779098510742188</real>
<real>0.0999999940395355224609375</real>
</array>
<key>cloud_color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>1</real>
<real>1</real>
<real>0.08999999612569808959960938</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
<array>
<real>1.6884100437164306640625</real>
<real>0</real>
<real>0.75</real>
<real>1</real>
</array>
<key>cloud_scale</key>
<array>
<real>0.4999999701976776123046875</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scroll_rate</key>
<array>
<real>10.19999980926513671875</real>
<real>10.0109996795654296875</real>
</array>
<key>cloud_shadow</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>density_multiplier</key>
<array>
<real>9.999999747378751635551453e-06</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>100</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>east_angle</key>
<real>0</real>
<key>enable_cloud_scroll</key>
<array>
<boolean>1</boolean>
<boolean>1</boolean>
</array>
<key>gamma</key>
<array>
<real>0.66999995708465576171875</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>glow</key>
<array>
<real>10</real>
<real>0.001000000047497451305389404</real>
<real>-0.4999999701976776123046875</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>haze_horizon</key>
<array>
<real>1</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
</array>
<key>lightnorm</key>
<array>
<real>0</real>
<real>0.867070615291595458984375</real>
<real>-0.49818527698516845703125</real>
<real>0</real>
</array>
<key>max_y</key>
<array>
<real>4000</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>preset_num</key>
<integer>22</integer>
<key>star_brightness</key>
<real>0</real>
<key>sun_angle</key>
<real>2.092300891876220703125</real>
<key>sunlight_color</key>
<array>
<real>3</real>
<real>2.4000003337860107421875</real>
<real>2.099999904632568359375</real>
<real>1</real>
</array>
</map>
</llsd>

View File

@@ -0,0 +1,141 @@
<llsd>
<map>
<key>ambient</key>
<array>
<real>1.5</real>
<real>1.7999999523162841796875</real>
<real>2.099999904632568359375</real>
<real>2.099999904632568359375</real>
</array>
<key>blue_density</key>
<array>
<real>2</real>
<real>2</real>
<real>2</real>
<real>2</real>
</array>
<key>blue_horizon</key>
<array>
<real>0.1999999731779098510742188</real>
<real>0.1999999731779098510742188</real>
<real>0.1999999731779098510742188</real>
<real>0.0999999940395355224609375</real>
</array>
<key>cloud_color</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>1</real>
<real>1</real>
<real>0.08999999612569808959960938</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
<array>
<real>1.6884100437164306640625</real>
<real>0</real>
<real>0.75</real>
<real>1</real>
</array>
<key>cloud_scale</key>
<array>
<real>0.4999999701976776123046875</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scroll_rate</key>
<array>
<real>10.19999980926513671875</real>
<real>10.0109996795654296875</real>
</array>
<key>cloud_shadow</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>density_multiplier</key>
<array>
<real>1.999999949475750327110291e-05</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>100</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>east_angle</key>
<real>0</real>
<key>enable_cloud_scroll</key>
<array>
<boolean>1</boolean>
<boolean>1</boolean>
</array>
<key>gamma</key>
<array>
<real>0.66999995708465576171875</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>glow</key>
<array>
<real>10</real>
<real>0.001000000047497451305389404</real>
<real>-0.4999999701976776123046875</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>haze_horizon</key>
<array>
<real>1</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
</array>
<key>lightnorm</key>
<array>
<real>0</real>
<real>0.867070615291595458984375</real>
<real>-0.49818527698516845703125</real>
<real>0</real>
</array>
<key>max_y</key>
<array>
<real>4000</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>preset_num</key>
<integer>22</integer>
<key>star_brightness</key>
<real>0</real>
<key>sun_angle</key>
<real>2.092300891876220703125</real>
<key>sunlight_color</key>
<array>
<real>1.230000019073486328125</real>
<real>1.230000019073486328125</real>
<real>1.230000019073486328125</real>
<real>0.4099999964237213134765625</real>
</array>
</map>
</llsd>

View File

@@ -0,0 +1,141 @@
<llsd>
<map>
<key>ambient</key>
<array>
<real>0.2999999821186065673828125</real>
<real>0.599999964237213134765625</real>
<real>0.89999997615814208984375</real>
<real>0.89999997615814208984375</real>
</array>
<key>blue_density</key>
<array>
<real>2</real>
<real>2</real>
<real>2</real>
<real>2</real>
</array>
<key>blue_horizon</key>
<array>
<real>0.1999999731779098510742188</real>
<real>0.1999999731779098510742188</real>
<real>0.1999999731779098510742188</real>
<real>0.0999999940395355224609375</real>
</array>
<key>cloud_color</key>
<array>
<real>0.5</real>
<real>0.5</real>
<real>0.5</real>
<real>0.5</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>1</real>
<real>1</real>
<real>0.08999999612569808959960938</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
<array>
<real>1.6884100437164306640625</real>
<real>0</real>
<real>0.75</real>
<real>1</real>
</array>
<key>cloud_scale</key>
<array>
<real>0.4999999701976776123046875</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scroll_rate</key>
<array>
<real>10.19999980926513671875</real>
<real>10.0109996795654296875</real>
</array>
<key>cloud_shadow</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>density_multiplier</key>
<array>
<real>1.999999949475750327110291e-05</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>100</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>east_angle</key>
<real>0</real>
<key>enable_cloud_scroll</key>
<array>
<boolean>1</boolean>
<boolean>1</boolean>
</array>
<key>gamma</key>
<array>
<real>0.66999995708465576171875</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>glow</key>
<array>
<real>10</real>
<real>0.001000000047497451305389404</real>
<real>-0.4999999701976776123046875</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>haze_horizon</key>
<array>
<real>1</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
</array>
<key>lightnorm</key>
<array>
<real>0</real>
<real>0</real>
<real>-1</real>
<real>0</real>
</array>
<key>max_y</key>
<array>
<real>4000</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>preset_num</key>
<integer>22</integer>
<key>star_brightness</key>
<real>0</real>
<key>sun_angle</key>
<real>3.1415927410125732421875</real>
<key>sunlight_color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>0</real>
</array>
</map>
</llsd>

View File

@@ -0,0 +1,141 @@
<llsd>
<map>
<key>ambient</key>
<array>
<real>0.599999964237213134765625</real>
<real>0.75</real>
<real>1.19999992847442626953125</real>
<real>0.39999997615814208984375</real>
</array>
<key>blue_density</key>
<array>
<real>1.99999988079071044921875</real>
<real>1.99999988079071044921875</real>
<real>1.99999988079071044921875</real>
<real>1</real>
</array>
<key>blue_horizon</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>0</real>
</array>
<key>cloud_color</key>
<array>
<real>0.5</real>
<real>0.5</real>
<real>0.5</real>
<real>0.5</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>1</real>
<real>1</real>
<real>0.08999999612569808959960938</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
<array>
<real>1.6884100437164306640625</real>
<real>0</real>
<real>0.75</real>
<real>1</real>
</array>
<key>cloud_scale</key>
<array>
<real>0.4999999701976776123046875</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scroll_rate</key>
<array>
<real>10.19999980926513671875</real>
<real>10.0109996795654296875</real>
</array>
<key>cloud_shadow</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>density_multiplier</key>
<array>
<real>0.0002500000118743628263473511</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>100</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>east_angle</key>
<real>0</real>
<key>enable_cloud_scroll</key>
<array>
<boolean>1</boolean>
<boolean>1</boolean>
</array>
<key>gamma</key>
<array>
<real>0.66999995708465576171875</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>glow</key>
<array>
<real>10</real>
<real>0.001000000047497451305389404</real>
<real>-0.4999999701976776123046875</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>haze_horizon</key>
<array>
<real>0</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
</array>
<key>lightnorm</key>
<array>
<real>0</real>
<real>0</real>
<real>-1</real>
<real>0</real>
</array>
<key>max_y</key>
<array>
<real>4000</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>preset_num</key>
<integer>22</integer>
<key>star_brightness</key>
<real>0</real>
<key>sun_angle</key>
<real>3.1415927410125732421875</real>
<key>sunlight_color</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>0</real>
</array>
</map>
</llsd>

View File

@@ -0,0 +1,141 @@
<llsd>
<map>
<key>ambient</key>
<array>
<real>0</real>
<real>0.1499999910593032836914063</real>
<real>0.4500000178813934326171875</real>
<real>0.1499999910593032836914063</real>
</array>
<key>blue_density</key>
<array>
<real>0.39999997615814208984375</real>
<real>0.39999997615814208984375</real>
<real>0.39999997615814208984375</real>
<real>0.199999988079071044921875</real>
</array>
<key>blue_horizon</key>
<array>
<real>0.4000000059604644775390625</real>
<real>0.599999725818634033203125</real>
<real>0.800000011920928955078125</real>
<real>0.39999997615814208984375</real>
</array>
<key>cloud_color</key>
<array>
<real>0.329999983310699462890625</real>
<real>0.329999983310699462890625</real>
<real>0.329999983310699462890625</real>
<real>0.329999983310699462890625</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>0.5</real>
<real>0.5</real>
<real>0.0999999940395355224609375</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
<array>
<real>0.5</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scale</key>
<array>
<real>0.07000000029802322387695313</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scroll_rate</key>
<array>
<real>10.1399993896484375</real>
<real>10.0109996795654296875</real>
</array>
<key>cloud_shadow</key>
<array>
<real>0.39999997615814208984375</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>density_multiplier</key>
<array>
<real>4.999999873689375817775726e-05</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>10</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>east_angle</key>
<real>0</real>
<key>enable_cloud_scroll</key>
<array>
<boolean>1</boolean>
<boolean>1</boolean>
</array>
<key>gamma</key>
<array>
<real>2</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>glow</key>
<array>
<real>20</real>
<real>0.001000000047497451305389404</real>
<real>-1.25</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>2</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>haze_horizon</key>
<array>
<real>0.04999999701976776123046875</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
</array>
<key>lightnorm</key>
<array>
<real>-0</real>
<real>0.3090172111988067626953125</real>
<real>0.951056420803070068359375</real>
<real>1</real>
</array>
<key>max_y</key>
<array>
<real>4000</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>preset_num</key>
<integer>10</integer>
<key>star_brightness</key>
<real>0.5</real>
<key>sun_angle</key>
<real>3.4557521343231201171875</real>
<key>sunlight_color</key>
<array>
<real>0.08999999612569808959960938</real>
<real>0.1799999922513961791992188</real>
<real>0.2999999821186065673828125</real>
<real>0.0999999940395355224609375</real>
</array>
</map>
</llsd>

View File

@@ -0,0 +1,141 @@
<llsd>
<map>
<key>ambient</key>
<array>
<real>0</real>
<real>0.1499999910593032836914063</real>
<real>0.449999988079071044921875</real>
<real>0.449999988079071044921875</real>
</array>
<key>blue_density</key>
<array>
<real>0.39999997615814208984375</real>
<real>0.39999997615814208984375</real>
<real>0.39999997615814208984375</real>
<real>0.199999988079071044921875</real>
</array>
<key>blue_horizon</key>
<array>
<real>0.7999999523162841796875</real>
<real>0.599999964237213134765625</real>
<real>0.39999997615814208984375</real>
<real>0.39999997615814208984375</real>
</array>
<key>cloud_color</key>
<array>
<real>0.699999988079071044921875</real>
<real>0.39999997615814208984375</real>
<real>0.2999999821186065673828125</real>
<real>0.699999988079071044921875</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>0.5</real>
<real>0.5</real>
<real>0.04999999701976776123046875</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
<array>
<real>0.5</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scale</key>
<array>
<real>0.07000000029802322387695313</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scroll_rate</key>
<array>
<real>10.1399993896484375</real>
<real>10.0109996795654296875</real>
</array>
<key>cloud_shadow</key>
<array>
<real>0.5</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>density_multiplier</key>
<array>
<real>4.999999873689375817775726e-05</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>10</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>east_angle</key>
<real>0</real>
<key>enable_cloud_scroll</key>
<array>
<boolean>1</boolean>
<boolean>1</boolean>
</array>
<key>gamma</key>
<array>
<real>2</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>glow</key>
<array>
<real>20</real>
<real>0.001000000047497451305389404</real>
<real>-1.25</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>2</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>haze_horizon</key>
<array>
<real>0.04999999701976776123046875</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
</array>
<key>lightnorm</key>
<array>
<real>-0</real>
<real>0.3090172111988067626953125</real>
<real>0.951056420803070068359375</real>
<real>1</real>
</array>
<key>max_y</key>
<array>
<real>4000</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>preset_num</key>
<integer>10</integer>
<key>star_brightness</key>
<real>0.5</real>
<key>sun_angle</key>
<real>3.4557521343231201171875</real>
<key>sunlight_color</key>
<array>
<real>0.1799999922513961791992188</real>
<real>0.1799999922513961791992188</real>
<real>0.1799999922513961791992188</real>
<real>0.1799999922513961791992188</real>
</array>
</map>
</llsd>

View File

@@ -0,0 +1,141 @@
<llsd>
<map>
<key>ambient</key>
<array>
<real>0</real>
<real>0.1499999910593032836914063</real>
<real>0.449999988079071044921875</real>
<real>0.449999988079071044921875</real>
</array>
<key>blue_density</key>
<array>
<real>0.39999997615814208984375</real>
<real>0.39999997615814208984375</real>
<real>0.39999997615814208984375</real>
<real>0.199999988079071044921875</real>
</array>
<key>blue_horizon</key>
<array>
<real>0.7999999523162841796875</real>
<real>0.599999964237213134765625</real>
<real>0.39999997615814208984375</real>
<real>0.39999997615814208984375</real>
</array>
<key>cloud_color</key>
<array>
<real>0.699999988079071044921875</real>
<real>0.39999997615814208984375</real>
<real>0.2999999821186065673828125</real>
<real>0.699999988079071044921875</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>0.5</real>
<real>0.5</real>
<real>0.04999999701976776123046875</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
<array>
<real>0.5</real>
<real>0.5</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scale</key>
<array>
<real>0.07000000029802322387695313</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scroll_rate</key>
<array>
<real>10.1399993896484375</real>
<real>10.0109996795654296875</real>
</array>
<key>cloud_shadow</key>
<array>
<real>0.5</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>density_multiplier</key>
<array>
<real>4.999999873689375817775726e-05</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>10</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>east_angle</key>
<real>0</real>
<key>enable_cloud_scroll</key>
<array>
<boolean>1</boolean>
<boolean>1</boolean>
</array>
<key>gamma</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>glow</key>
<array>
<real>20</real>
<real>0.001000000047497451305389404</real>
<real>-1.25</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>2</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>haze_horizon</key>
<array>
<real>0.04999999701976776123046875</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
</array>
<key>lightnorm</key>
<array>
<real>-0</real>
<real>0.3090172111988067626953125</real>
<real>0.951056420803070068359375</real>
<real>1</real>
</array>
<key>max_y</key>
<array>
<real>4000</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>preset_num</key>
<integer>10</integer>
<key>star_brightness</key>
<real>0.5</real>
<key>sun_angle</key>
<real>3.4557521343231201171875</real>
<key>sunlight_color</key>
<array>
<real>0.1799999922513961791992188</real>
<real>0.1799999922513961791992188</real>
<real>0.1799999922513961791992188</real>
<real>0.1799999922513961791992188</real>
</array>
</map>
</llsd>

View File

@@ -0,0 +1,141 @@
<llsd>
<map>
<key>ambient</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>0</real>
</array>
<key>blue_density</key>
<array>
<real>2</real>
<real>2</real>
<real>2</real>
<real>1</real>
</array>
<key>blue_horizon</key>
<array>
<real>0.1999999731779098510742188</real>
<real>0.1999999731779098510742188</real>
<real>0.1999999731779098510742188</real>
<real>0.0999999940395355224609375</real>
</array>
<key>cloud_color</key>
<array>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>1</real>
<real>1</real>
<real>0.2999999821186065673828125</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
<array>
<real>1.6884100437164306640625</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scale</key>
<array>
<real>0.07000000029802322387695313</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scroll_rate</key>
<array>
<real>11</real>
<real>10</real>
</array>
<key>cloud_shadow</key>
<array>
<real>0.66999995708465576171875</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>density_multiplier</key>
<array>
<real>0.0008999999845400452613830566</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>32.200000762939453125</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>east_angle</key>
<real>0</real>
<key>enable_cloud_scroll</key>
<array>
<boolean>1</boolean>
<boolean>1</boolean>
</array>
<key>gamma</key>
<array>
<real>0.39999997615814208984375</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>glow</key>
<array>
<real>0.200002193450927734375</real>
<real>0.001000000047497451305389404</real>
<real>-0.2499999850988388061523438</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>haze_horizon</key>
<array>
<real>0.0999999940395355224609375</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
</array>
<key>lightnorm</key>
<array>
<real>0</real>
<real>0.876306593418121337890625</real>
<real>-0.4817537963390350341796875</real>
<real>0</real>
</array>
<key>max_y</key>
<array>
<real>314</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>preset_num</key>
<integer>22</integer>
<key>star_brightness</key>
<real>0</real>
<key>sun_angle</key>
<real>2.0734512805938720703125</real>
<key>sunlight_color</key>
<array>
<real>0.08999998867511749267578125</real>
<real>0.1799999773502349853515625</real>
<real>0.269999980926513671875</real>
<real>0.08999999612569808959960938</real>
</array>
</map>
</llsd>

View File

@@ -2,10 +2,10 @@
<map>
<key>ambient</key>
<array>
<real>0.2999999821186065673828125</real>
<real>0.449999988079071044921875</real>
<real>0.599999964237213134765625</real>
<real>0.199999988079071044921875</real>
<real>0</real>
<real>0.1499999910593032836914063</real>
<real>0.4500000178813934326171875</real>
<real>0.1499999910593032836914063</real>
</array>
<key>blue_density</key>
<array>
@@ -16,23 +16,23 @@
</array>
<key>blue_horizon</key>
<array>
<real>0.199999988079071044921875</real>
<real>0.2999999821186065673828125</real>
<real>0.4000000059604644775390625</real>
<real>0.599999725818634033203125</real>
<real>0.800000011920928955078125</real>
<real>0.39999997615814208984375</real>
<real>0.199999988079071044921875</real>
</array>
<key>cloud_color</key>
<array>
<real>0.09411763399839401245117188</real>
<real>0.1499999910593032836914063</real>
<real>0.199999988079071044921875</real>
<real>0.199999988079071044921875</real>
<real>0.329999983310699462890625</real>
<real>0.329999983310699462890625</real>
<real>0.329999983310699462890625</real>
<real>0.329999983310699462890625</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>0.5</real>
<real>0.5</real>
<real>0.07000000029802322387695313</real>
<real>0.0999999940395355224609375</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
@@ -56,21 +56,21 @@
</array>
<key>cloud_shadow</key>
<array>
<real>0.5</real>
<real>0.39999997615814208984375</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>density_multiplier</key>
<array>
<real>0.0001999999949475750327110291</real>
<real>4.999999873689375817775726e-05</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>8</real>
<real>10</real>
<real>0</real>
<real>0</real>
<real>1</real>
@@ -84,21 +84,21 @@
</array>
<key>gamma</key>
<array>
<real>0.699999988079071044921875</real>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>glow</key>
<array>
<real>11.6000003814697265625</real>
<real>20</real>
<real>0.001000000047497451305389404</real>
<real>-0.749999940395355224609375</real>
<real>-1.25</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>0.5</real>
<real>2</real>
<real>0</real>
<real>0</real>
<real>1</real>
@@ -119,7 +119,7 @@
</array>
<key>max_y</key>
<array>
<real>500</real>
<real>4000</real>
<real>0</real>
<real>0</real>
<real>1</real>
@@ -127,15 +127,15 @@
<key>preset_num</key>
<integer>10</integer>
<key>star_brightness</key>
<real>0.3599999845027923583984375</real>
<real>0.5</real>
<key>sun_angle</key>
<real>3.4557521343231201171875</real>
<key>sunlight_color</key>
<array>
<real>0.1499999910593032836914063</real>
<real>0.1499999910593032836914063</real>
<real>0.1499999910593032836914063</real>
<real>0.04999999701976776123046875</real>
<real>0.08999999612569808959960938</real>
<real>0.1799999922513961791992188</real>
<real>0.2999999821186065673828125</real>
<real>0.0999999940395355224609375</real>
</array>
</map>
</llsd>

View File

@@ -0,0 +1,141 @@
<llsd>
<map>
<key>ambient</key>
<array>
<real>0.599999964237213134765625</real>
<real>0.599999964237213134765625</real>
<real>0.599999964237213134765625</real>
<real>0.199999988079071044921875</real>
</array>
<key>blue_density</key>
<array>
<real>2</real>
<real>2</real>
<real>2</real>
<real>1</real>
</array>
<key>blue_horizon</key>
<array>
<real>0.599999964237213134765625</real>
<real>0.599999964237213134765625</real>
<real>0.599999964237213134765625</real>
<real>0.2999999821186065673828125</real>
</array>
<key>cloud_color</key>
<array>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>1</real>
<real>1</real>
<real>0.25</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
<array>
<real>1.6884100437164306640625</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scale</key>
<array>
<real>0.07000000029802322387695313</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scroll_rate</key>
<array>
<real>10.3999996185302734375</real>
<real>10</real>
</array>
<key>cloud_shadow</key>
<array>
<real>0.61000001430511474609375</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>density_multiplier</key>
<array>
<real>9.999999747378751635551453e-05</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>5</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>east_angle</key>
<real>1.06814157962799072265625</real>
<key>enable_cloud_scroll</key>
<array>
<boolean>1</boolean>
<boolean>1</boolean>
</array>
<key>gamma</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>glow</key>
<array>
<real>0.200002193450927734375</real>
<real>0.001000000047497451305389404</real>
<real>-0.199999988079071044921875</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>4</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>haze_horizon</key>
<array>
<real>0.2099999934434890747070313</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
</array>
<key>lightnorm</key>
<array>
<real>0.38304769992828369140625</real>
<real>0.89940512180328369140625</real>
<real>-0.2105822265148162841796875</real>
<real>0</real>
</array>
<key>max_y</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>preset_num</key>
<integer>22</integer>
<key>star_brightness</key>
<real>0</real>
<key>sun_angle</key>
<real>2.0231859683990478515625</real>
<key>sunlight_color</key>
<array>
<real>1.5</real>
<real>1.5</real>
<real>1.5</real>
<real>0.5</real>
</array>
</map>
</llsd>

View File

@@ -0,0 +1,141 @@
<llsd>
<map>
<key>ambient</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>0</real>
</array>
<key>blue_density</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>0</real>
</array>
<key>blue_horizon</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>0</real>
</array>
<key>cloud_color</key>
<array>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
<real>0.2999999821186065673828125</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>1</real>
<real>1</real>
<real>0.25</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
<array>
<real>1.6884100437164306640625</real>
<real>1</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scale</key>
<array>
<real>0.07000000029802322387695313</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>cloud_scroll_rate</key>
<array>
<real>10.3999996185302734375</real>
<real>10</real>
</array>
<key>cloud_shadow</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>density_multiplier</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>distance_multiplier</key>
<array>
<real>100</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>east_angle</key>
<real>0</real>
<key>enable_cloud_scroll</key>
<array>
<boolean>1</boolean>
<boolean>1</boolean>
</array>
<key>gamma</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>glow</key>
<array>
<real>0.200002193450927734375</real>
<real>0.001000000047497451305389404</real>
<real>-0.199999988079071044921875</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>1</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>haze_horizon</key>
<array>
<real>0.2099999934434890747070313</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
</array>
<key>lightnorm</key>
<array>
<real>0</real>
<real>0.587785184383392333984375</real>
<real>-0.80901706218719482421875</real>
<real>0</real>
</array>
<key>max_y</key>
<array>
<real>0</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>preset_num</key>
<integer>22</integer>
<key>star_brightness</key>
<real>0</real>
<key>sun_angle</key>
<real>2.51327419281005859375</real>
<key>sunlight_color</key>
<array>
<real>2.009999752044677734375</real>
<real>2.009999752044677734375</real>
<real>2.009999752044677734375</real>
<real>0.66999995708465576171875</real>
</array>
</map>
</llsd>

View File

@@ -2,10 +2,10 @@
<map>
<key>ambient</key>
<array>
<real>0</real>
<real>0.449999988079071044921875</real>
<real>0.75</real>
<real>1.0499999523162841796875</real>
<real>0.3499999940395355224609375</real>
<real>0.89999997615814208984375</real>
<real>0.2999999821186065673828125</real>
</array>
<key>blue_density</key>
<array>
@@ -23,16 +23,16 @@
</array>
<key>cloud_color</key>
<array>
<real>0.199999988079071044921875</real>
<real>0.199999988079071044921875</real>
<real>0.199999988079071044921875</real>
<real>0.199999988079071044921875</real>
<real>0.25</real>
<real>0.25</real>
<real>0.25</real>
<real>0.25</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>1</real>
<real>1</real>
<real>0.25</real>
<real>0.189999997615814208984375</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
@@ -44,7 +44,7 @@
</array>
<key>cloud_scale</key>
<array>
<real>0.0999999940395355224609375</real>
<real>0.07000000029802322387695313</real>
<real>0</real>
<real>0</real>
<real>1</real>
@@ -91,21 +91,21 @@
</array>
<key>glow</key>
<array>
<real>4.00000095367431640625</real>
<real>38</real>
<real>0.001000000047497451305389404</real>
<real>-0.39999997615814208984375</real>
<real>-0.2499999850988388061523438</real>
<real>1</real>
</array>
<key>haze_density</key>
<array>
<real>0.75</real>
<real>0.199999988079071044921875</real>
<real>0</real>
<real>0</real>
<real>1</real>
</array>
<key>haze_horizon</key>
<array>
<real>0.199999988079071044921875</real>
<real>0.5</real>
<real>0.1991560012102127075195313</real>
<real>0.1991560012102127075195313</real>
<real>1</real>
@@ -132,10 +132,10 @@
<real>0.31415927410125732421875</real>
<key>sunlight_color</key>
<array>
<real>3</real>
<real>2.9999997615814208984375</real>
<real>1.19999992847442626953125</real>
<real>0.2999999821186065673828125</real>
<real>3</real>
<real>0.449999988079071044921875</real>
<real>1</real>
</array>
</map>
</llsd>

View File

@@ -23,16 +23,16 @@
</array>
<key>cloud_color</key>
<array>
<real>0.09999998658895492553710938</real>
<real>0.09999998658895492553710938</real>
<real>0.09999998658895492553710938</real>
<real>0.0999999940395355224609375</real>
<real>0</real>
<real>0.02999999932944774627685547</real>
<real>0.05999999865889549255371094</real>
<real>0.05999999865889549255371094</real>
</array>
<key>cloud_pos_density1</key>
<array>
<real>1</real>
<real>1</real>
<real>0.1499999910593032836914063</real>
<real>0.1199999973177909851074219</real>
<real>1</real>
</array>
<key>cloud_pos_density2</key>
@@ -44,7 +44,7 @@
</array>
<key>cloud_scale</key>
<array>
<real>0.0999999940395355224609375</real>
<real>0.07000000029802322387695313</real>
<real>0</real>
<real>0</real>
<real>1</real>

View File

@@ -0,0 +1,43 @@
<llsd>
<map>
<key>blurMultiplier</key>
<real>0.1600000113248825073242188</real>
<key>fresnelOffset</key>
<real>0.5</real>
<key>fresnelScale</key>
<real>1</real>
<key>normScale</key>
<array>
<real>5</real>
<real>5</real>
<real>5</real>
</array>
<key>normalMap</key>
<uuid>f92da839-f302-c813-668d-601ab1957af1</uuid>
<key>scaleAbove</key>
<real>0.199999988079071044921875</real>
<key>scaleBelow</key>
<real>0.2000000029802322387695313</real>
<key>underWaterFogMod</key>
<real>1</real>
<key>waterFogColor</key>
<array>
<real>0.02851562201976776123046875</real>
<real>0.07148437201976776123046875</real>
<real>0.06242064759135246276855469</real>
<real>1</real>
</array>
<key>waterFogDensity</key>
<real>2</real>
<key>wave1Dir</key>
<array>
<real>0</real>
<real>0</real>
</array>
<key>wave2Dir</key>
<array>
<real>0</real>
<real>0</real>
</array>
</map>
</llsd>

View File

@@ -1,16 +1,16 @@
<llsd>
<map>
<key>blurMultiplier</key>
<real>0.08000000566244125366210938</real>
<real>0.01000000070780515670776367</real>
<key>fresnelOffset</key>
<real>0.550000011920928955078125</real>
<real>0.5</real>
<key>fresnelScale</key>
<real>0.75</real>
<real>0.5</real>
<key>normScale</key>
<array>
<real>5</real>
<real>5</real>
<real>5</real>
<real>4</real>
<real>4</real>
<real>1</real>
</array>
<key>normalMap</key>
<uuid>7f132b94-6c9c-5af3-5a17-3412ad653da0</uuid>
@@ -19,25 +19,25 @@
<key>scaleBelow</key>
<real>0.2000000029802322387695313</real>
<key>underWaterFogMod</key>
<real>1</real>
<real>0.66999995708465576171875</real>
<key>waterFogColor</key>
<array>
<real>0.02851562201976776123046875</real>
<real>0.07148437201976776123046875</real>
<real>0.06242064759135246276855469</real>
<real>0.1960784494876861572265625</real>
<real>0.2196078598499298095703125</real>
<real>0.1764705926179885864257813</real>
<real>1</real>
</array>
<key>waterFogDensity</key>
<real>16</real>
<real>103.96833038330078125</real>
<key>wave1Dir</key>
<array>
<real>-0.1000001430511474609375</real>
<real>-0.1000001430511474609375</real>
<real>-0.25</real>
<real>0</real>
</array>
<key>wave2Dir</key>
<array>
<real>-0.5</real>
<real>-0.5</real>
<real>-1</real>
<real>0</real>
</array>
</map>
</llsd>

View File

@@ -1,43 +1,43 @@
<llsd>
<map>
<key>blurMultiplier</key>
<real>0.010000000707805157</real>
<real>0.04500000178813934326171875</real>
<key>fresnelOffset</key>
<real>0.5</real>
<key>fresnelScale</key>
<real>0.39999997615814209</real>
<real>0.5</real>
<key>normScale</key>
<array>
<integer>2</integer>
<integer>2</integer>
<integer>2</integer>
<real>1.10000002384185791015625</real>
<real>1</real>
<real>1</real>
</array>
<key>normalMap</key>
<uuid>822ded49-9a6c-f61c-cb89-6df54f42cdf4</uuid>
<key>scaleAbove</key>
<real>0.029999999329447746</real>
<real>0.02999999932944774627685547</real>
<key>scaleBelow</key>
<real>0.099999994039535522</real>
<real>0.2000000029802322387695313</real>
<key>underWaterFogMod</key>
<real>0.25</real>
<real>0.66999995708465576171875</real>
<key>waterFogColor</key>
<array>
<real>0</real>
<real>0.039215687662363052</real>
<real>0.039215687662363052</real>
<real>0.199999988079071044921875</real>
<real>0.2199999988079071044921875</real>
<real>0.1799999773502349853515625</real>
<real>1</real>
</array>
<key>waterFogDensity</key>
<real>32</real>
<real>103.96833038330078125</real>
<key>wave1Dir</key>
<array>
<real>1.0499997138977051</real>
<real>-0.42000007629394531</real>
<real>-1</real>
<real>0</real>
</array>
<key>wave2Dir</key>
<array>
<real>1.1099996566772461</real>
<real>-1.1600000858306885</real>
<real>-1</real>
<real>0</real>
</array>
</map>
</llsd>

View File

@@ -0,0 +1,43 @@
<llsd>
<map>
<key>blurMultiplier</key>
<real>0.05000000074505805969238281</real>
<key>fresnelOffset</key>
<real>0.5</real>
<key>fresnelScale</key>
<real>0.5</real>
<key>normScale</key>
<array>
<real>5</real>
<real>5</real>
<real>5</real>
</array>
<key>normalMap</key>
<uuid>7f132b94-6c9c-5af3-5a17-3412ad653da0</uuid>
<key>scaleAbove</key>
<real>0.04999999701976776123046875</real>
<key>scaleBelow</key>
<real>0.2000000029802322387695313</real>
<key>underWaterFogMod</key>
<real>1</real>
<key>waterFogColor</key>
<array>
<real>0.194549560546875</real>
<real>0.602325439453125</real>
<real>0.50675296783447265625</real>
<real>1</real>
</array>
<key>waterFogDensity</key>
<real>8</real>
<key>wave1Dir</key>
<array>
<real>-0.1000001430511474609375</real>
<real>-0.1000001430511474609375</real>
</array>
<key>wave2Dir</key>
<array>
<real>-0.5</real>
<real>-0.5</real>
</array>
</map>
</llsd>

View File

@@ -0,0 +1,43 @@
<llsd>
<map>
<key>blurMultiplier</key>
<real>0.005000000353902578353881836</real>
<key>fresnelOffset</key>
<real>0.599999964237213134765625</real>
<key>fresnelScale</key>
<real>0.2999999821186065673828125</real>
<key>normScale</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>normalMap</key>
<uuid>7f132b94-6c9c-5af3-5a17-3412ad653da0</uuid>
<key>scaleAbove</key>
<real>0.02999999932944774627685547</real>
<key>scaleBelow</key>
<real>0.2000000029802322387695313</real>
<key>underWaterFogMod</key>
<real>0.5</real>
<key>waterFogColor</key>
<array>
<real>0.1882353127002716064453125</real>
<real>0.2509804069995880126953125</real>
<real>0.3137255012989044189453125</real>
<real>1</real>
</array>
<key>waterFogDensity</key>
<real>32</real>
<key>wave1Dir</key>
<array>
<real>-0.5</real>
<real>0</real>
</array>
<key>wave2Dir</key>
<array>
<real>-2</real>
<real>0</real>
</array>
</map>
</llsd>

View File

@@ -0,0 +1,43 @@
<llsd>
<map>
<key>blurMultiplier</key>
<real>0.04500000178813934326171875</real>
<key>fresnelOffset</key>
<real>0.599999964237213134765625</real>
<key>fresnelScale</key>
<real>0.2999999821186065673828125</real>
<key>normScale</key>
<array>
<real>1</real>
<real>1</real>
<real>1</real>
</array>
<key>normalMap</key>
<uuid>822ded49-9a6c-f61c-cb89-6df54f42cdf4</uuid>
<key>scaleAbove</key>
<real>0.02999999932944774627685547</real>
<key>scaleBelow</key>
<real>0.2000000029802322387695313</real>
<key>underWaterFogMod</key>
<real>0.5</real>
<key>waterFogColor</key>
<array>
<real>0.1882353127002716064453125</real>
<real>0.2509804069995880126953125</real>
<real>0.3137255012989044189453125</real>
<real>1</real>
</array>
<key>waterFogDensity</key>
<real>32</real>
<key>wave1Dir</key>
<array>
<real>-2</real>
<real>0</real>
</array>
<key>wave2Dir</key>
<array>
<real>-4</real>
<real>0</real>
</array>
</map>
</llsd>

View File

@@ -64,6 +64,8 @@ this feature is still a work in progress.
#include "llviewermenufile.h"
#include "llfloaterimagepreview.h"
#include "llfile.h"
#include "llsdparam.h"
#include "llsdserialize.h"
/* including to force rebakes when needed */
#include "llvoavatarself.h"
@@ -93,21 +95,29 @@ bool LocalAssetBrowser::mSculptUpdated;
containing one loaded local texture.
*/
LocalBitmap::LocalBitmap(std::string fullpath)
LocalBitmap::Params::Params(const std::string& path)
: fullpath("path", path)
, keep_updating("update", gSavedSettings.getBOOL("LocalBitmapUpdate"))
, type("type", TYPE_TEXTURE)
, id("id", LLUUID::generateNewID())
{
}
LocalBitmap::LocalBitmap(const Params& p)
{
llassert(!p.fullpath.empty());
valid = false;
if ( gDirUtilp->fileExists(fullpath) )
if ( gDirUtilp->fileExists(p.fullpath) )
{
/* taking care of basic properties */
id.generate();
filename = fullpath;
keep_updating = gSavedSettings.getBOOL("LocalBitmapUpdate");
id = p.id;
filename = p.fullpath;
keep_updating = p.keep_updating;
linkstatus = keep_updating ? LINK_ON : LINK_OFF;
shortname = gDirUtilp->getBaseFileName(filename, true);
bitmap_type = TYPE_TEXTURE;
bitmap_type = p.type;
sculpt_dirty = false;
volume_dirty = false;
valid = false;
/* taking care of extension type now to avoid switch madness */
std::string temp_exten = gDirUtilp->getExtension(filename);
@@ -143,6 +153,7 @@ LocalBitmap::LocalBitmap(std::string fullpath)
/* filename is valid, bitmap is decoded and valid, i can haz liftoff! */
valid = true;
LocalAssetBrowser::add(*this);
}
}
}
@@ -293,64 +304,64 @@ void LocalBitmap::setType( S32 type )
bitmap_type = type;
}
void LocalBitmap::setID(const LLUUID& uuid)
{
LLViewerFetchedTexture* image = gTextureList.findImage(id);
gTextureList.deleteImage(image);
id = uuid;
image->setID(id);
gTextureList.addImage(image);
}
/* [information query functions] */
std::string LocalBitmap::getShortName()
std::string LocalBitmap::getShortName() const
{
return shortname;
}
std::string LocalBitmap::getFileName()
std::string LocalBitmap::getFileName() const
{
return filename;
}
LLUUID LocalBitmap::getID()
LLUUID LocalBitmap::getID() const
{
return id;
}
LLSD LocalBitmap::getLastModified()
LLSD LocalBitmap::getLastModified() const
{
return last_modified;
}
std::string LocalBitmap::getLinkStatus()
std::string LocalBitmap::getLinkStatus() const
{
switch(linkstatus)
{
case LINK_ON:
return "On";
case LINK_OFF:
return "Off";
case LINK_BROKEN:
return "Broken";
case LINK_UPDATING:
return "Updating";
default:
return "Unknown";
case LINK_ON: return "On";
case LINK_OFF: return "Off";
case LINK_BROKEN: return "Broken";
case LINK_UPDATING: return "Updating";
default: return "Unknown";
}
}
bool LocalBitmap::getUpdateBool()
bool LocalBitmap::getUpdateBool() const
{
return keep_updating;
}
bool LocalBitmap::getIfValidBool()
bool LocalBitmap::getIfValidBool() const
{
return valid;
}
S32 LocalBitmap::getType()
S32 LocalBitmap::getType() const
{
return bitmap_type;
}
std::vector<LLFace*> LocalBitmap::getFaceUsesThis(LLDrawable* drawable)
std::vector<LLFace*> LocalBitmap::getFaceUsesThis(LLDrawable* drawable) const
{
std::vector<LLFace*> matching_faces;
@@ -365,7 +376,7 @@ std::vector<LLFace*> LocalBitmap::getFaceUsesThis(LLDrawable* drawable)
return matching_faces;
}
std::vector<affected_object> LocalBitmap::getUsingObjects(bool seek_by_type, bool seek_textures, bool seek_sculptmaps)
std::vector<affected_object> LocalBitmap::getUsingObjects(bool seek_by_type, bool seek_textures, bool seek_sculptmaps) const
{
std::vector<affected_object> affected_vector;
@@ -413,21 +424,29 @@ std::vector<affected_object> LocalBitmap::getUsingObjects(bool seek_by_type, boo
return affected_vector;
}
void LocalBitmap::getDebugInfo()
void LocalBitmap::getDebugInfo() const
{
/* debug function: dumps everything human readable into llinfos */
LL_INFOS() << "===[local bitmap debug]===" << "\n"
<< "path: " << filename << "\n"
<< "name: " << shortname << "\n"
<< "extension: " << extension << "\n"
<< "uuid: " << id << "\n"
<< "last modified: " << last_modified << "\n"
<< "link status: " << getLinkStatus() << "\n"
<< "keep updated: " << keep_updating << "\n"
<< "type: " << bitmap_type << "\n"
<< "is valid: " << valid << "\n"
LL_INFOS() << "===[local bitmap debug]===" << '\n'
<< "path: " << filename << '\n'
<< "name: " << shortname << '\n'
<< "extension: " << extension << '\n'
<< "uuid: " << id << '\n'
<< "last modified: " << last_modified << '\n'
<< "link status: " << getLinkStatus() << '\n'
<< "keep updated: " << keep_updating << '\n'
<< "type: " << bitmap_type << '\n'
<< "is valid: " << valid << '\n'
<< "==========================" << LL_ENDL;
}
LLSD LocalBitmap::asLLSD() const
{
return LLSD()
.with("path", filename)
.with("id", id)
.with("update", keep_updating)
.with("type", bitmap_type);
}
/*=======================================*/
@@ -439,15 +458,47 @@ void LocalBitmap::getDebugInfo()
Sits in memory until the viewer is closed.
*/
const std::string LocalAssetBrowser::getFileName() const
{
return gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "local_assets.xml");
}
LocalAssetBrowser::LocalAssetBrowser()
{
gLocalBrowser = this;
mLayerUpdated = false;
mSculptUpdated = false;
// Load bitmaps
llifstream file(getFileName());
if (!file) return;
LLSD saved_assets;
LLSDSerialize::fromXML(saved_assets, file);
file.close();
for (auto it = saved_assets.beginArray(), end = saved_assets.endArray(); it < end; ++it)
{
const auto&& p = LLSDParamAdapter<LocalBitmap::Params>(*it);
LocalBitmap bm(p); // Creating one adds it to the list
}
if (!loaded_bitmaps.empty()) PingTimer();
}
LocalAssetBrowser::~LocalAssetBrowser()
{
// Save bitmaps
llofstream file(getFileName());
if (!file)
{
LL_WARNS() << "Could not open file " << getFileName() << " for saving." << LL_ENDL;
return;
}
LLSD saved_assets(LLSD::emptyArray());
for (const auto& bitmap : loaded_bitmaps)
saved_assets.append(bitmap.asLLSD());
LLSDSerialize::toPrettyXML(saved_assets, file);
file.close();
gLocalBrowser = nullptr;
}
void LocalAssetBrowser::AddBitmap()
@@ -463,20 +514,13 @@ void LocalAssetBrowser::AddBitmap_continued(AIFilePicker* filepicker)
return;
bool change_happened = false;
std::vector<std::string> const& filenames(filepicker->getFilenames());
for(std::vector<std::string>::const_iterator filename = filenames.begin(); filename != filenames.end(); ++filename)
{
LocalBitmap unit(*filename);
if (unit.getIfValidBool())
{
loaded_bitmaps.push_back(unit);
for(const auto& filename : filepicker->getFilenames())
if (LocalBitmap(filename).getIfValidBool())
change_happened = true;
}
}
if (change_happened) onChangeHappened();
}
void LocalAssetBrowser::DelBitmap( std::vector<LLScrollListItem*> delete_vector, S32 column )
{
bool change_happened = false;
@@ -592,21 +636,20 @@ void LocalAssetBrowser::UpdateTextureCtrlList(LLScrollListCtrl* ctrl)
if (ctrl) // checking again in case called externally for some silly reason.
{
ctrl->clearRows();
if ( !loaded_bitmaps.empty() )
for (const auto& bitmap : loaded_bitmaps)
{
for (local_list_iter iter = loaded_bitmaps.begin(); iter != loaded_bitmaps.end(); ++iter)
{
LLSD element;
element["columns"][0]["column"] = "unit_name";
element["columns"][0]["type"] = "text";
element["columns"][0]["value"] = (*iter).shortname;
auto row = LLScrollListItem::Params();
row.columns.add(LLScrollListCell::Params()
.column("unit_name")
.type("text")
.value(bitmap.shortname));
element["columns"][1]["column"] = "unit_id_HIDDEN";
element["columns"][1]["type"] = "text";
element["columns"][1]["value"] = (*iter).id;
row.columns.add(LLScrollListCell::Params()
.column("unit_id_HIDDEN")
.type("text")
.value(bitmap.id));
ctrl->addElement(element);
}
ctrl->addRow(row);
}
}
}
@@ -731,6 +774,11 @@ FloaterLocalAssetBrowser::FloaterLocalAssetBrowser()
// checkbox callbacks
mUpdateChkBox->setCommitCallback(boost::bind(&FloaterLocalAssetBrowser::onClickUpdateChkbox,this));
// Allow changing the ID!
mUUIDTxt->setCommitCallback(boost::bind(&FloaterLocalAssetBrowser::onUpdateID, this, _2));
mUUIDTxt->setCommitOnReturn(true);
mUUIDTxt->setCommitOnFocusLost(true);
}
void FloaterLocalAssetBrowser::show(void*)
@@ -798,6 +846,21 @@ void FloaterLocalAssetBrowser::onCommitTypeCombo()
}
}
void FloaterLocalAssetBrowser::onUpdateID(const LLSD& val)
{
const auto& id = val.asUUID();
const auto& col = mBitmapList->getFirstSelected()->getColumn(BITMAPLIST_COL_ID);
const auto& old_id = col->getValue().asString();
if (id.isNull() && id.asString() != old_id) // Just reset if invalid or unchanged
mUUIDTxt->setValue(old_id);
else
{
gLocalBrowser->GetBitmapUnit(LLUUID(old_id))->setID(id);
mTextureView->setImageAssetID(id);
col->setValue(id);
}
}
void FloaterLocalAssetBrowser::FloaterResize(bool expand)
{
mMoreBtn->setVisible(!expand);
@@ -855,10 +918,9 @@ void FloaterLocalAssetBrowser::UpdateRightSide()
*/
if (!mTextureView->getVisible()) return;
if (!mBitmapList->getAllSelected().empty())
if (const auto& selected = mBitmapList->getFirstSelected())
{
LocalBitmap* unit = gLocalBrowser->GetBitmapUnit( LLUUID(mBitmapList->getSelectedItemLabel(BITMAPLIST_COL_ID)) );
LocalBitmap* unit = gLocalBrowser->GetBitmapUnit(LLUUID(selected->getColumn(BITMAPLIST_COL_ID)->getValue().asString()));
if ( unit )
{
mTextureView->setImageAssetID(unit->getID());
@@ -873,6 +935,7 @@ void FloaterLocalAssetBrowser::UpdateRightSide()
mTextureView->setEnabled(true);
mUpdateChkBox->setEnabled(true);
mTypeComboBox->setEnabled(true);
mUUIDTxt->setEnabled(true);
}
}
else
@@ -884,12 +947,14 @@ void FloaterLocalAssetBrowser::UpdateRightSide()
mTypeComboBox->selectFirstItem();
mTypeComboBox->setEnabled(false);
mUUIDTxt->setEnabled(false);
mPathTxt->setText(LLStringExplicit("None"));
mUUIDTxt->setText(LLStringExplicit("None"));
mNameTxt->setText(LLStringExplicit("None"));
mLinkTxt->setText(LLStringExplicit("None"));
mTimeTxt->setText(LLStringExplicit("None"));
const auto none = LLStringExplicit("None");
mPathTxt->setText(none);
mUUIDTxt->setText(none);
mNameTxt->setText(none);
mLinkTxt->setText(none);
mTimeTxt->setText(none);
}
}
@@ -931,7 +996,7 @@ void LocalAssetBrowserTimer::stop()
mEventTimer.stop();
}
bool LocalAssetBrowserTimer::isRunning()
bool LocalAssetBrowserTimer::isRunning() const
{
return mEventTimer.getStarted();
}

View File

@@ -97,7 +97,15 @@ struct affected_object
class LocalBitmap
{
public:
LocalBitmap(std::string filename);
struct Params : public LLInitParam::Block<Params>
{
Mandatory<std::string> fullpath;
Optional<bool> keep_updating;
Optional<S32> type;
Optional<LLUUID> id;
Params(const std::string& path = LLStringUtil::null);
};
LocalBitmap(const Params& p);
virtual ~LocalBitmap();
friend class LocalAssetBrowser;
@@ -127,25 +135,28 @@ class LocalBitmap
};
public: /* [information query functions] */
std::string getShortName();
std::string getFileName();
LLUUID getID();
LLSD getLastModified();
std::string getLinkStatus();
bool getUpdateBool();
std::string getShortName() const;
std::string getFileName() const;
LLUUID getID() const;
void setID(const LLUUID&);
LLSD getLastModified() const;
std::string getLinkStatus() const;
bool getUpdateBool() const;
void setType( S32 );
bool getIfValidBool();
S32 getType();
void getDebugInfo();
bool getIfValidBool() const;
S32 getType() const;
void getDebugInfo() const;
LLSD asLLSD() const;
private: /* [maintenence functions] */
void updateSelf();
bool decodeSelf(LLImageRaw* rawimg);
void setUpdateBool();
std::vector<LLFace*> getFaceUsesThis(LLDrawable*);
std::vector<LLFace*> getFaceUsesThis(LLDrawable*) const;
std::vector<affected_object> getUsingObjects(bool seek_by_type = true,
bool seek_textures = false, bool seek_sculptmaps = false);
bool seek_textures = false, bool seek_sculptmaps = false) const;
protected: /* [basic properties] */
std::string shortname;
@@ -173,9 +184,10 @@ class LocalBitmap
class AIFilePicker;
class LocalAssetBrowser
class LocalAssetBrowser : public LLSingleton<LocalAssetBrowser>
{
public:
const std::string getFileName() const;
LocalAssetBrowser();
virtual ~LocalAssetBrowser();
friend class FloaterLocalAssetBrowser;
@@ -183,6 +195,7 @@ class LocalAssetBrowser
static void UpdateTextureCtrlList(LLScrollListCtrl*);
static void setLayerUpdated(bool toggle) { mLayerUpdated = toggle; }
static void setSculptUpdated(bool toggle) { mSculptUpdated = toggle; }
static void add(const LocalBitmap& unit) { loaded_bitmaps.push_back(unit); }
static void AddBitmap();
static void AddBitmap_continued(AIFilePicker* filepicker);
static void DelBitmap( std::vector<LLScrollListItem*>, S32 column = BITMAPLIST_COL_ID );
@@ -241,6 +254,8 @@ private:
// Combobox type select
void onCommitTypeCombo();
void onUpdateID(const LLSD& val);
// Widgets
LLButton* mAddBtn;
LLButton* mDelBtn;
@@ -289,10 +304,10 @@ class LocalAssetBrowserTimer : public LLEventTimer
public:
LocalAssetBrowserTimer();
~LocalAssetBrowserTimer();
virtual BOOL tick();
BOOL tick() override;
void start();
void stop();
bool isRunning();
bool isRunning() const;
};
#endif

View File

@@ -81,7 +81,7 @@ const std::string& HippoGridInfo::getGridOwner() const
}
else
{
return this->getGridName();
return getGridName();
}
}
@@ -102,12 +102,11 @@ void HippoGridInfo::setPlatform(Platform platform)
void HippoGridInfo::setPlatform(const std::string& platform)
{
std::string tmp = platform;
for (unsigned i=0; i<platform.size(); i++)
tmp[i] = tolower(tmp[i]);
LLStringUtil::toLower(tmp);
if (tmp == "aurora")
if (tmp == "aurora" || tmp == "whitecore")
{
setPlatform(PLATFORM_AURORA);
setPlatform(PLATFORM_WHITECORE);
}
else if (tmp == "opensim")
{
@@ -120,7 +119,7 @@ void HippoGridInfo::setPlatform(const std::string& platform)
else
{
setPlatform(PLATFORM_OTHER);
LL_WARNS() << "Unknown platform '" << platform << "' for " << mGridName << "." << LL_ENDL;
LL_WARNS() << "Unknown platform '" << platform << "' for " << mGridName << '.' << LL_ENDL;
}
}
@@ -337,7 +336,7 @@ void HippoGridInfo::onXmlCharacterData(void* userData, const XML_Char* s, int le
case XML_GRIDNAME:
{
if (self->mGridName == "")
if (self->mGridName.empty())
{
self->mGridName.assign(s, len);
}
@@ -366,7 +365,7 @@ void HippoGridInfo::getGridInfo()
// Make sure the uri ends on a '/'.
std::string uri = mLoginUri;
if (uri.compare(uri.length() - 1, 1, "/") != 0)
if (uri.back() != '/')
{
uri += '/';
}
@@ -482,9 +481,9 @@ std::string HippoGridInfo::getGridNick() const
// static
const char* HippoGridInfo::getPlatformString(Platform platform)
{
static const char* platformStrings[PLATFORM_LAST] =
constexpr const char* platformStrings[PLATFORM_LAST] =
{
"Other", "Aurora", "OpenSim", "SecondLife"
"Other", "WhiteCore", "OpenSim", "SecondLife"
};
if ((platform < PLATFORM_OTHER) || (platform >= PLATFORM_LAST))

View File

@@ -26,7 +26,7 @@ class HippoGridInfo
public:
enum Platform {
PLATFORM_OTHER = 0,
PLATFORM_AURORA,
PLATFORM_WHITECORE,
PLATFORM_OPENSIM,
PLATFORM_SECONDLIFE,
PLATFORM_LAST
@@ -35,8 +35,8 @@ public:
explicit HippoGridInfo(const std::string& gridName);
Platform getPlatform() { return mPlatform; }
bool isOpenSimulator() const { return (mPlatform == PLATFORM_OPENSIM || mPlatform == PLATFORM_AURORA); }
bool isAurora() const { return (mPlatform == PLATFORM_AURORA); }
bool isOpenSimulator() const { return (mPlatform == PLATFORM_OPENSIM || mPlatform == PLATFORM_WHITECORE); }
bool isWhiteCore() const { return (mPlatform == PLATFORM_WHITECORE); }
bool isSecondLife() const { return (mPlatform == PLATFORM_SECONDLIFE); }
bool isAvination() const { return mIsInAvination; }
bool isInProductionGrid() const { llassert(mPlatform == PLATFORM_SECONDLIFE); return mIsInProductionGrid; } // Should only be called if isSecondLife() returns true.

View File

@@ -21,8 +21,8 @@ void HippoLimits::setLimits()
{
if (gHippoGridManager->getConnectedGrid()->getPlatform() == HippoGridInfo::PLATFORM_SECONDLIFE) {
setSecondLifeLimits();
} else if (gHippoGridManager->getConnectedGrid()->getPlatform() == HippoGridInfo::PLATFORM_AURORA) {
setAuroraLimits();
} else if (gHippoGridManager->getConnectedGrid()->getPlatform() == HippoGridInfo::PLATFORM_WHITECORE) {
setWhiteCoreLimits();
} else {
setOpenSimLimits();
}
@@ -65,7 +65,7 @@ void HippoLimits::setOpenSimLimits()
}
}
void HippoLimits::setAuroraLimits()
void HippoLimits::setWhiteCoreLimits()
{
setMaxAgentGroups();
mMaxPrimScale = 8192.0f;

View File

@@ -27,7 +27,7 @@ private:
void setMaxAgentGroups();
void setOpenSimLimits();
void setAuroraLimits();
void setWhiteCoreLimits();
void setSecondLifeLimits();
};

View File

@@ -326,9 +326,9 @@ Function CloseSecondLife
IntCmp $0 0 DONE
StrCmp $SKIP_DIALOGS "true" CLOSE
MessageBox MB_OKCANCEL $(CloseSecondLifeInstMB) IDOK CLOSE IDCANCEL CANCEL_INSTALL
MessageBox MB_YESNOCANCEL $(CloseSecondLifeInstMB) IDYES CLOSE IDNO DONE
CANCEL_INSTALL:
; CANCEL_INSTALL:
Quit
CLOSE:

View File

@@ -165,6 +165,7 @@
// in save_settings_to_globals()
#include "llbutton.h"
#include "llcombobox.h"
#include "floaterlocalassetbrowse.h"
#include "llstatusbar.h"
#include "llsurface.h"
#include "llvosky.h"
@@ -1723,6 +1724,8 @@ bool LLAppViewer::cleanup()
LLFloaterTeleportHistory::saveFile("teleport_history.xml");
LocalAssetBrowser::deleteSingleton(); // <edit/>
// save mute list. gMuteList used to also be deleted here too.
LLMuteList::getInstance()->cache(gAgent.getID());

View File

@@ -39,6 +39,7 @@
#include "rlvhandler.h"
#include "rlvlocks.h"
// [/RLVa:KB]
#include <boost/algorithm/string/predicate.hpp>
const F32 COF_LINK_BATCH_TIME = 5.0F;
const F32 MAX_ATTACHMENT_REQUEST_LIFETIME = 30.0F;
@@ -478,9 +479,17 @@ void LLAttachmentsMgr::onAttachmentArrived(const LLUUID& inv_item_id)
{
LLTimer timer;
bool expected = mAttachmentRequests.getTime(inv_item_id, timer);
LLInventoryItem *item = gInventory.getItem(inv_item_id);
if (item && boost::algorithm::contains(item->getName(), " Bridge v") && gSavedSettings.getBOOL("SGDetachBridge"))
{
LL_INFOS() << "Bridge detected! detaching" << LL_ENDL;
LLVOAvatarSelf::detachAttachmentIntoInventory(item->getUUID());
return;
}
if (!expected)
{
LLInventoryItem *item = gInventory.getItem(inv_item_id);
LL_WARNS() << "ATT Attachment was unexpected or arrived after " << MAX_ATTACHMENT_REQUEST_LIFETIME << " seconds: "
<< (item ? item->getName() : "UNKNOWN") << " id " << inv_item_id << LL_ENDL;
}

View File

@@ -546,20 +546,12 @@ void LLAvatarActions::csr(const LLUUID& id)
if (!gCacheName->getFullName(id, name)) return;
std::string url = "http://csr.lindenlab.com/agent/";
// slow and stupid, but it's late
S32 len = name.length();
for (S32 i = 0; i < len; i++)
if (char* output = curl_easy_escape(nullptr, name.c_str(), name.length()))
{
if (name[i] == ' ')
{
url += "%20";
}
else
{
url += name[i];
}
name = output;
curl_free(output);
}
url += name;
LLWeb::loadURL(url);
}

View File

@@ -505,7 +505,7 @@ void LLEnvManagerNew::onRegionSettingsResponse(const LLSD& content)
mRegionSettingsChangeSignal();
// reset
if (!gHippoGridManager->getConnectedGrid()->isAurora()) // On Aurora, the region says when to refresh
if (!gHippoGridManager->getConnectedGrid()->isWhiteCore()) // On WhiteCore, the region says when to refresh
mInterpNextChangeMessage = false;
}
@@ -704,7 +704,7 @@ void LLEnvManagerNew::onRegionChange()
}
}
// Aurora-sim windlight refresh
// WhiteCore windlight refresh
class WindLightRefresh : public LLHTTPNode
{
/*virtual*/ void post(LLHTTPNode::ResponsePtr response, const LLSD& context, const LLSD& input) const

View File

@@ -190,6 +190,20 @@ namespace
mErrorCount = 0;
makeRequest();
}
else if (mStatus == HTTP_NOT_FOUND)
{ // Event polling for this server has been canceled. In
// some cases the server gets ahead of the viewer and will
// return a 404 error (Not Found) before the cancel event
// comes back in the queue
LL_WARNS("LLEventPollImpl") << "Canceling coroutine" << LL_ENDL;
stop();
}
else if (mCode != CURLE_OK)
{
/// Some LLCore or LIBCurl error was returned. This is unlikely to be recoverable
LL_WARNS("LLEventPollImpl") << "Critical error from poll request returned from libraries. Canceling coroutine." << LL_ENDL;
stop();
}
else if (mErrorCount < MAX_EVENT_POLL_HTTP_ERRORS)
{
++mErrorCount;
@@ -213,6 +227,7 @@ namespace
// They are essentially disconnected from the region even though some things may still work.
// Since things won't get better until they relog we force a disconnect now.
/* Singu Note: There's no reason to disconnect, just because this failed a few too many times
// *NOTE:Mani - The following condition check to see if this failing event poll
// is attached to the Agent's main region. If so we disconnect the viewer.
// Else... its a child region and we just leave the dead event poll stopped and
@@ -222,6 +237,7 @@ namespace
LL_WARNS() << "Forcing disconnect due to stalled main region event poll." << LL_ENDL;
LLAppViewer::instance()->forceDisconnect(LLTrans::getString("AgentLostConnection"));
}
*/
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,274 @@
/**
* @file llfavoritesbar.h
* @brief LLFavoritesBarCtrl base class
*
* $LicenseInfo:firstyear=2009&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
#ifndef LL_LLFAVORITESBARCTRL_H
#define LL_LLFAVORITESBARCTRL_H
#include "llbutton.h"
#include "lluictrl.h"
#include "lltextbox.h"
#include "llinventoryobserver.h"
#include "llinventorymodel.h"
#include "llviewerinventory.h"
#include "llui.h" //"llinitdestroyclass.h"
class LLMenuItemCallGL;
class LLMenuGL;
class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver
{
public:
struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
{
Optional<LLUIImage*> image_drag_indication;
Optional<LLTextBox::Params> more_button;
Optional<LLTextBox::Params> label;
Params();
};
protected:
LLFavoritesBarCtrl(const Params&);
friend class LLUICtrlFactory;
public:
virtual ~LLFavoritesBarCtrl();
/*virtual*/ BOOL postBuild() override;
/*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
EDragAndDropType cargo_type,
void* cargo_data,
EAcceptance* accept,
std::string& tooltip_msg) override;
/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask) override;
/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask) override;
// LLInventoryObserver observer trigger
void changed(U32 mask) override;
void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE) override;
void draw() override;
void showDragMarker(BOOL show) { mShowDragMarker = show; }
void setLandingTab(LLUICtrl* tab) { mLandingTab = tab; }
protected:
void updateButtons();
LLButton* createButton(const LLPointer<LLViewerInventoryItem> item, const LLButton::Params& button_params, S32 x_offset );
const LLButton::Params& getButtonParams();
BOOL collectFavoriteItems(LLInventoryModel::item_array_t &items);
void onButtonClick(LLUUID id);
void onButtonRightClick(LLUUID id,LLView* button,S32 x,S32 y,MASK mask);
void onButtonMouseDown(LLUUID id, LLUICtrl* button, S32 x, S32 y, MASK mask);
void onOverflowMenuItemMouseDown(LLUUID id, LLUICtrl* item, S32 x, S32 y, MASK mask);
void onButtonMouseUp(LLUUID id, LLUICtrl* button, S32 x, S32 y, MASK mask);
void onEndDrag();
bool enableSelected(const LLSD& userdata);
void doToSelected(const LLSD& userdata);
BOOL isClipboardPasteable() const;
void pasteFromClipboard() const;
void showDropDownMenu();
LLHandle<LLView> mOverflowMenuHandle;
LLHandle<LLView> mContextMenuHandle;
LLUUID mFavoriteFolderId;
const LLFontGL *mFont;
S32 mFirstDropDownItem;
S32 mDropDownItemsCount;
bool mUpdateDropDownItems;
bool mRestoreOverflowMenu;
LLUUID mSelectedItemID;
LLUIImage* mImageDragIndication;
private:
/*
* Helper function to make code more readable. It handles all drag and drop
* operations of the existing favorites items on the favorites bar.
*/
void handleExistingFavoriteDragAndDrop(S32 x, S32 y);
/*
* Helper function to make code more readable. It handles all drag and drop
* operations of the new landmark to the favorites bar.
*/
void handleNewFavoriteDragAndDrop(LLInventoryItem *item, const LLUUID& favorites_id, S32 x, S32 y);
// finds a control under the specified LOCAL point
LLUICtrl* findChildByLocalCoords(S32 x, S32 y);
// checks if the current order of the favorites items must be saved
BOOL needToSaveItemsOrder(const LLInventoryModel::item_array_t& items);
/**
* inserts an item identified by insertedItemId BEFORE an item identified by beforeItemId.
* this function assumes that an item identified by insertedItemId doesn't exist in items array.
*/
void insertItem(LLInventoryModel::item_array_t& items, const LLUUID& dest_item_id, LLViewerInventoryItem* insertedItem, bool insert_before);
// finds an item by it's UUID in the items array
LLInventoryModel::item_array_t::iterator findItemByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id);
void createOverflowMenu();
void updateMenuItems(LLMenuGL* menu);
// Fits menu item label width with favorites menu width
void fitLabelWidth(LLMenuItemCallGL* menu_item);
void addOpenLandmarksMenuItem(LLMenuGL* menu);
void positionAndShowMenu(LLMenuGL* menu);
BOOL mShowDragMarker;
LLUICtrl* mLandingTab;
LLUICtrl* mLastTab;
LLTextBox* mMoreTextBox;
LLTextBox* mBarLabel;
LLUUID mDragItemId;
BOOL mStartDrag;
LLInventoryModel::item_array_t mItems;
BOOL mTabsHighlightEnabled;
boost::signals2::connection mEndDragConnection;
};
/**
* Class to store sorting order of favorites landmarks in a local file. EXT-3985.
* It replaced previously implemented solution to store sort index in landmark's name as a "<N>@" prefix.
* Data are stored in user home directory.
*/
class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage>
, public LLDestroyClass<LLFavoritesOrderStorage>
{
friend class LLSingleton<LLFavoritesOrderStorage>;
LLFavoritesOrderStorage(); //LLSINGLETON(LLFavoritesOrderStorage);
~LLFavoritesOrderStorage() { save(); }
LOG_CLASS(LLFavoritesOrderStorage);
public:
/**
* Sets sort index for specified with LLUUID favorite landmark
*/
void setSortIndex(const LLViewerInventoryItem* inv_item, S32 sort_index);
/**
* Gets sort index for specified with LLUUID favorite landmark
*/
S32 getSortIndex(const LLUUID& inv_item_id);
void removeSortIndex(const LLUUID& inv_item_id);
void getSLURL(const LLUUID& asset_id);
// Saves current order of the passed items using inventory item sort field.
// Resets 'items' sort fields and saves them on server.
// Is used to save order for Favorites folder.
void saveItemsOrder(const LLInventoryModel::item_array_t& items);
void saveOrder();
void rearrangeFavoriteLandmarks(const LLUUID& source_item_id, const LLUUID& target_item_id);
/**
* Implementation of LLDestroyClass. Calls cleanup() instance method.
*
* It is important this callback is called before gInventory is cleaned.
* For now it is called from LLAppViewer::cleanup() -> LLAppViewer::disconnectViewer(),
* Inventory is cleaned later from LLAppViewer::cleanup() after LLAppViewer::disconnectViewer() is called.
* @see cleanup()
*/
static void destroyClass();
const static S32 NO_INDEX;
private:
/**
* Removes sort indexes for items which are not in Favorites bar for now.
*/
void cleanup();
const static std::string SORTING_DATA_FILE_NAME;
std::string getSavedOrderFileName();
static std::string getStoredFavoritesFilename();
void load();
void save();
void saveFavoritesSLURLs();
// Remove record of current user's favorites from file on disk.
void removeFavoritesRecordOfUser();
void onLandmarkLoaded(const LLUUID& asset_id, class LLLandmark* landmark);
void storeFavoriteSLURL(const LLUUID& asset_id, std::string& slurl);
typedef std::map<LLUUID, S32> sort_index_map_t;
sort_index_map_t mSortIndexes;
typedef std::map<LLUUID, std::string> slurls_map_t;
slurls_map_t mSLURLs;
std::set<LLUUID> mMissingSLURLs;
bool mIsDirty;
struct IsNotInFavorites
{
IsNotInFavorites(const LLInventoryModel::item_array_t& items)
: mFavoriteItems(items)
{
}
/**
* Returns true if specified item is not found among inventory items
*/
bool operator()(const sort_index_map_t::value_type& id_index_pair) const
{
LLPointer<LLViewerInventoryItem> item = gInventory.getItem(id_index_pair.first);
if (item.isNull()) return true;
LLInventoryModel::item_array_t::const_iterator found_it =
std::find(mFavoriteItems.begin(), mFavoriteItems.end(), item);
return found_it == mFavoriteItems.end();
}
private:
LLInventoryModel::item_array_t mFavoriteItems;
};
};
inline
LLFavoritesOrderStorage::LLFavoritesOrderStorage() :
mIsDirty(false)
{ load(); }
#endif // LL_LLFAVORITESBARCTRL_H

View File

@@ -421,6 +421,9 @@ void LLFeatureManager::parseGPUTable(std::string filename)
else
{
LL_WARNS("RenderInit") << "GPU '" << rawRenderer << "' not recognized" << LL_ENDL;
mGPUString = rawRenderer;
mGPUClass = EGPUClass::GPU_CLASS_3;
mGPUSupported = true;
}
}

View File

@@ -98,7 +98,7 @@ namespace
case STAT_TYPE_DRAW: if (radar_alert_draw) args["[RANGE]"] = LLTrans::getString("draw_distance"); break;
case STAT_TYPE_SHOUTRANGE: if (radar_alert_shout_range) args["[RANGE]"] = LLTrans::getString("shout_range"); break;
case STAT_TYPE_CHATRANGE: if (radar_alert_chat_range) args["[RANGE]"] = LLTrans::getString("chat_range"); break;
case STAT_TYPE_AGE: if (radar_alert_age) chat.mText = name + " " + LLTrans::getString("has_triggered_your_avatar_age_alert") + "."; break;
case STAT_TYPE_AGE: if (radar_alert_age) chat.mText = name + ' ' + LLTrans::getString("has_triggered_your_avatar_age_alert") + '.'; break;
default: llassert(type); break;
}
args["[NAME]"] = name;
@@ -112,6 +112,7 @@ namespace
if (radar_show_dist) chat.mText += llformat(" (%.2fm)", dist);
}
chat.mFromName = name;
chat.mFromID = key;
if (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) // RLVa:LF - No way!
chat.mURL = llformat("secondlife:///app/agent/%s/about", key.asString().c_str());
chat.mSourceType = CHAT_SOURCE_SYSTEM;
@@ -591,13 +592,13 @@ void LLFloaterAvatarList::updateAvatarList(const LLViewerRegion* region, bool fi
U32 num_ids = 0;
while(!announce_keys.empty())
{
ids << "," << announce_keys.front().asString();
ids << ',' << announce_keys.front().asString();
++num_ids;
if (ids.tellp() > 200)
{
send_keys_message(transact_num, num_ids, ids.str());
ids.seekp(num_ids = 0);
ids.str("");
ids.str(LLStringUtil::null);
}
announce_keys.pop();
}
@@ -1101,7 +1102,6 @@ void LLFloaterAvatarList::trackAvatar(const LLAvatarListEntry* entry) const
LLAvatarListEntry* LLFloaterAvatarList::getAvatarEntry(const LLUUID& avatar) const
{
if (avatar.isNull()) return NULL;
av_list_t::const_iterator iter = std::find_if(mAvatars.begin(),mAvatars.end(),LLAvatarListEntry::uuidMatch(avatar));
return (iter != mAvatars.end()) ? iter->get() : NULL;
}
@@ -1271,13 +1271,13 @@ void LLFloaterAvatarList::sendKeys() const
for (U32 i = 0; i < regionp->mMapAvatarIDs.size(); ++i)
{
ids << "," << regionp->mMapAvatarIDs.at(i);
ids << ',' << regionp->mMapAvatarIDs.at(i);
++num_ids;
if (ids.tellp() > 200)
{
send_keys_message(transact_num, num_ids, ids.str());
ids.seekp(num_ids = 0);
ids.str("");
ids.str(LLStringUtil::null);
}
}
if (num_ids > 0) send_keys_message(transact_num, num_ids, ids.str());
@@ -1416,7 +1416,7 @@ std::string LLFloaterAvatarList::getSelectedNames(const std::string& separator)
std::string LLFloaterAvatarList::getSelectedName() const
{
LLAvatarListEntry* entry = getAvatarEntry(getSelectedID());
return entry ? entry->getName() : "";
return entry ? entry->getName() : LLStringUtil::null;
}
LLUUID LLFloaterAvatarList::getSelectedID() const

View File

@@ -45,6 +45,7 @@
#include "llcombobox.h"
#include "lltextparser.h"
#include "lltrans.h"
#include "llurlregistry.h"
#include "llwindow.h"
// project include
@@ -200,7 +201,7 @@ void add_timestamped_line(LLViewerTextEditor* edit, LLChat chat, const LLColor4&
if (chat.mSourceType == CHAT_SOURCE_OBJECT)
{
LLStringUtil::trim(chat.mFromName);
if (!chat.mFromName.length())
if (chat.mFromName.empty())
{
chat.mFromName = LLTrans::getString("Unnamed");
line = chat.mFromName + line;
@@ -211,19 +212,19 @@ void add_timestamped_line(LLViewerTextEditor* edit, LLChat chat, const LLColor4&
bool is_irc = italicize && chat.mChatStyle == CHAT_STYLE_IRC;
// If the chat line has an associated url, link it up to the name.
if (!chat.mURL.empty()
&& (line.length() > chat.mFromName.length() && line.find(chat.mFromName,0) == 0))
&& boost::algorithm::starts_with(line, chat.mFromName))
{
std::string start_line = line.substr(0, chat.mFromName.length() + 1);
line = line.substr(chat.mFromName.length() + 1);
line = line.substr(chat.mFromName.length());
LLStyleSP sourceStyle = LLStyleMap::instance().lookup(chat.mFromID, chat.mURL);
sourceStyle->mItalic = is_irc;
edit->appendText(start_line, false, prepend_newline, sourceStyle);
edit->appendText(chat.mFromName, false, prepend_newline, sourceStyle, false);
prepend_newline = false;
}
LLStyleSP style(new LLStyle);
style->setColor(color);
style->mItalic = is_irc;
edit->appendText(line, false, prepend_newline, style);
style->mBold = chat.mChatType == CHAT_TYPE_SHOUT;
edit->appendText(line, false, prepend_newline, style, false);
}
void log_chat_text(const LLChat& chat)
@@ -384,7 +385,19 @@ void LLFloaterChat::addChat(const LLChat& chat,
// We display anything if it's not an IM. If it's an IM, check pref...
if ( !from_instant_message || gSavedSettings.getBOOL("IMInChatConsole") )
{
gConsole->addConsoleLine(chat.mText, text_color);
// Replace registered urls in the console so it looks right.
std::string chit(chat.mText), // Read through this
chat; // Add parts to this
LLUrlMatch match;
while (!chit.empty() && LLUrlRegistry::instance().findUrl(chit, match))
{
const auto start(match.getStart()), length(match.getEnd()+1-start);
if (start > 0) chat += chit.substr(0, start); // Add up to the start of the match
chat += match.getLabel() + match.getQuery(); // Add the label and the query
chit.erase(0, start+length); // remove the url match and all before it
}
if (!chit.empty()) chat += chit; // Add any leftovers
gConsole->addConsoleLine(chat, text_color);
}
}

View File

@@ -55,8 +55,7 @@
#include "statemachine/aifilepicker.h"
#include "hippogridmanager.h"
//#include "aixmllindengenepool.h"
#include "aifile.h"
#include "aixmllindengenepool.h"
using namespace LLAvatarAppearanceDefines;
@@ -119,9 +118,9 @@ LLFloaterCustomize::LLFloaterCustomize()
gInventory.addObserver(mInventoryObserver);
LLOutfitObserver& outfit_observer = LLOutfitObserver::instance();
outfit_observer.addBOFReplacedCallback(boost::bind(&LLFloaterCustomize::refreshCurrentOutfitName, this, ""));
outfit_observer.addBOFChangedCallback(boost::bind(&LLFloaterCustomize::refreshCurrentOutfitName, this, ""));
outfit_observer.addCOFChangedCallback(boost::bind(&LLFloaterCustomize::refreshCurrentOutfitName, this, ""));
outfit_observer.addBOFReplacedCallback(boost::bind(&LLFloaterCustomize::refreshCurrentOutfitName, this, LLStringUtil::null));
outfit_observer.addBOFChangedCallback(boost::bind(&LLFloaterCustomize::refreshCurrentOutfitName, this, LLStringUtil::null));
outfit_observer.addCOFChangedCallback(boost::bind(&LLFloaterCustomize::refreshCurrentOutfitName, this, LLStringUtil::null));
LLCallbackMap::map_t factory_map;
const std::string &invalid_name = LLWearableType::getTypeName(LLWearableType::WT_INVALID);
@@ -238,7 +237,11 @@ void LLFloaterCustomize::editWearable(LLViewerWearable* wearable, bool disable_c
{
if(!wearable)
return;
LLFloaterCustomize::getInstance()->setCurrentWearableType(wearable->getType(), disable_camera_switch);
auto& inst = LLFloaterCustomize::instance();
inst.setCurrentWearableType(wearable->getType(), disable_camera_switch);
U32 index(0);
gAgentWearables.getWearableIndex(wearable, index);
static_cast<LLPanelEditWearable*>(inst.mTabContainer->getCurrentPanel())->setWearableIndex(index);
}
//static
@@ -314,7 +317,6 @@ void LLFloaterCustomize::onBtnImport()
void LLFloaterCustomize::onBtnImport_continued(AIFilePicker* filepicker)
{
#if 0
if (!filepicker->hasFilename())
{
// User canceled import.
@@ -457,7 +459,6 @@ void LLFloaterCustomize::onBtnImport_continued(AIFilePicker* filepicker)
{
AIAlert::add("AIXMLImportWearableTypeMismatch", args("[TYPE]", label)("[ARCHETYPENAME]", wearable_types));
}
#endif
}
// reX: new function
@@ -502,7 +503,6 @@ void LLFloaterCustomize::onBtnExport()
//static
void LLFloaterCustomize::onBtnExport_continued(LLViewerWearable* edit_wearable, AIFilePicker* filepicker)
{
#if 0
if (!filepicker->hasFilename())
{
// User canceled export.
@@ -514,9 +514,7 @@ void LLFloaterCustomize::onBtnExport_continued(LLViewerWearable* edit_wearable,
bool success = false;
try
{
AIFile outfile(filename, "wb");
AIXMLLindenGenepool linden_genepool(outfile);
AIXMLLindenGenepool linden_genepool(filename);
linden_genepool.child(edit_wearable->getArchetype());
success = true;
@@ -530,7 +528,6 @@ void LLFloaterCustomize::onBtnExport_continued(LLViewerWearable* edit_wearable,
{
AIAlert::add_modal("AIXMLExportSuccess", AIArgs("[FILE]", filename));
}
#endif
}
void LLFloaterCustomize::onBtnOk()
@@ -677,7 +674,8 @@ const S32 HEADER_HEIGHT = 3 * (LINE_HEIGHT + LLFLOATER_VPAD) + (2 * LLPANEL_BORD
void LLFloaterCustomize::wearablesChanged(LLWearableType::EType type)
{
llassert( type < LLWearableType::WT_COUNT );
gSavedSettings.setU32("AvatarSex", (gAgentAvatarp->getSex() == SEX_MALE) );
if (type == LLWearableType::WT_SHAPE)
gSavedSettings.setU32("AvatarSex", (gAgentAvatarp->getSex() == SEX_MALE));
LLPanelEditWearable* panel = mWearablePanelList[ type ];
if( panel )

View File

@@ -556,7 +556,7 @@ void LLPanelRegionTools::onSaveState(void* userdata)
gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
gMessageSystem->nextBlockFast(_PREHASH_DataBlock);
gMessageSystem->addStringFast(_PREHASH_Filename, NULL);
gMessageSystem->addStringFast(_PREHASH_Filename, nullptr);
gAgent.sendReliableMessage();
}
}
@@ -1354,7 +1354,7 @@ void LLPanelRequestTools::onClickRequest()
if(dest == SELECTION)
{
std::string req =getChild<LLUICtrl>("request")->getValue();
req = req.substr(0, req.find_first_of(" "));
req = req.substr(0, req.find_first_of(' '));
std::string param = getChild<LLUICtrl>("parameter")->getValue();
LLSelectMgr::getInstance()->sendGodlikeRequest(req, param);
}
@@ -1401,11 +1401,11 @@ void LLPanelRequestTools::sendRequest(const LLHost& host)
host,
FALSE,
terrain_download_done,
NULL);
nullptr);
}
else
{
req = req.substr(0, req.find_first_of(" "));
req = req.substr(0, req.find_first_of(' '));
sendRequest(req, getChild<LLUICtrl>("parameter")->getValue().asString(), host);
}
}

View File

@@ -52,7 +52,7 @@
LLFloaterPostProcess* LLFloaterPostProcess::sPostProcess = NULL;
LLFloaterPostProcess::LLFloaterPostProcess() : LLFloater(std::string("Post-Process Floater"))
LLFloaterPostProcess::LLFloaterPostProcess(const LLSD&) : LLFloater("Post-Process Floater")
{
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_post_process.xml");
@@ -91,24 +91,11 @@ LLFloaterPostProcess::LLFloaterPostProcess() : LLFloater(std::string("Post-Proce
getChild<LLUICtrl>("PPSaveEffect")->setCommitCallback(boost::bind(&LLFloaterPostProcess::onSaveEffect, this, editBox));
syncMenu();
LLPostProcess::instance().setSelectedEffectChangeCallback(boost::bind(&LLFloaterPostProcess::syncMenu, this));
}
LLFloaterPostProcess::~LLFloaterPostProcess()
{
}
LLFloaterPostProcess* LLFloaterPostProcess::instance()
{
// if we don't have our singleton instance, create it
if (!sPostProcess)
{
sPostProcess = new LLFloaterPostProcess();
sPostProcess->open();
sPostProcess->setFocus(TRUE);
}
return sPostProcess;
}
@@ -122,8 +109,6 @@ void LLFloaterPostProcess::onLoadEffect(LLComboBox* comboBox)
LLSD::String effectName(comboBox->getSelectedValue().asString());
LLPostProcess::getInstance()->setSelectedEffect(effectName);
syncMenu();
}
void LLFloaterPostProcess::onSaveEffect(LLLineEditor* editBox)
@@ -139,7 +124,6 @@ void LLFloaterPostProcess::onSaveEffect(LLLineEditor* editBox)
else
{
LLPostProcess::getInstance()->saveEffectAs(effectName);
syncMenu();
}
}
@@ -161,48 +145,40 @@ bool LLFloaterPostProcess::saveAlertCallback(const LLSD& notification, const LLS
if (option == 0)
{
LLPostProcess::getInstance()->saveEffectAs(notification["payload"]["effect_name"].asString());
syncMenu();
}
return false;
}
void LLFloaterPostProcess::show()
{
// get the instance, make sure the values are synced
// and open the menu
LLFloaterPostProcess* postProcess = instance();
postProcess->syncMenu();
postProcess->open();
}
// virtual
void LLFloaterPostProcess::onClose(bool app_quitting)
{
// just set visibility to false, don't get fancy yet
if (sPostProcess)
{
sPostProcess->setVisible(FALSE);
}
if (app_quitting)
die();
else
setVisible(FALSE);
}
void LLFloaterPostProcess::syncMenu()
void populatePostProcessList(LLComboBox* comboBox)
{
// add the combo boxe contents
LLComboBox* comboBox = getChild<LLComboBox>("PPEffectsCombo");
comboBox->removeall();
LLSD::map_const_iterator currEffect;
for(currEffect = LLPostProcess::getInstance()->getAllEffectInfo().beginMap();
currEffect != LLPostProcess::getInstance()->getAllEffectInfo().endMap();
const auto& inst(LLPostProcess::instance());
for(auto currEffect = inst.getAllEffectInfo().beginMap(), end = inst.getAllEffectInfo().endMap();
currEffect != end;
++currEffect)
{
comboBox->add(currEffect->first);
}
// set the current effect as selected.
comboBox->selectByValue(LLPostProcess::getInstance()->getSelectedEffectName());
comboBox->selectByValue(inst.getSelectedEffectName());
}
void LLFloaterPostProcess::syncMenu()
{
// add the combo boxe contents
populatePostProcessList(getChild<LLComboBox>("PPEffectsCombo"));
const LLSD &tweaks = LLPostProcess::getInstance()->getSelectedEffectInfo();
//Iterate down all uniforms handled by post-process shaders. Update any linked ui elements.
@@ -214,7 +190,7 @@ void LLFloaterPostProcess::syncMenu()
//llsd["uniform"][1]=>"uniform[1]"
for(S32 i=0;i<it->second.size();++i)
{
childSetValue(it->first+"["+boost::lexical_cast<std::string>(i)+"]",it->second[i]);
childSetValue(it->first+'['+boost::lexical_cast<std::string>(i)+']',it->second[i]);
}
}
else

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