diff --git a/etc/message.xml b/etc/message.xml index 847f483aa..8dfd75e13 100644 --- a/etc/message.xml +++ b/etc/message.xml @@ -672,10 +672,10 @@ FetchInventoryDescendents false - + WebFetchInventoryDescendents - true - + false + FetchInventory true diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt index 3b1c1e467..11d3f7ab7 100644 --- a/indra/CMakeLists.txt +++ b/indra/CMakeLists.txt @@ -30,6 +30,8 @@ include(Versions) include(UnixInstall) +set (GCC_DISABLE_FATAL_WARNINGS TRUE) + if (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE ReleaseSSE2 CACHE STRING "Build type. One of: Debug Release ReleaseSSE2 RelWithDebInfo" FORCE) diff --git a/indra/cmake/WebKitLibPlugin.cmake b/indra/cmake/WebKitLibPlugin.cmake index a4befa495..9b0635e16 100644 --- a/indra/cmake/WebKitLibPlugin.cmake +++ b/indra/cmake/WebKitLibPlugin.cmake @@ -62,13 +62,12 @@ elseif (LINUX) else (STANDALONE) set(WEBKIT_PLUGIN_LIBRARIES llqtwebkit - qgif - qjpeg QtWebKit QtOpenGL QtNetwork QtGui QtCore + jscore jpeg fontconfig X11 diff --git a/indra/llimage/llimagej2c.cpp b/indra/llimage/llimagej2c.cpp index fc4829b2b..c8a92539f 100644 --- a/indra/llimage/llimagej2c.cpp +++ b/indra/llimage/llimagej2c.cpp @@ -376,7 +376,7 @@ S32 LLImageJ2C::calcDataSizeJ2C(S32 w, S32 h, S32 comp, S32 discard_level, F32 r discard_level--; } S32 bytes = (S32)((F32)(w*h*comp)*rate); - bytes = llmax(bytes, calcHeaderSizeJ2C()); + //bytes = llmax(bytes, calcHeaderSizeJ2C()); return bytes; } @@ -396,9 +396,11 @@ S32 LLImageJ2C::calcDataSize(S32 discard_level) static const LLCachedControl offset("SianaJ2CSizeOffset", 0); S32 size = calcDataSizeJ2C(getWidth(), getHeight(), getComponents(), discard_level, mRate); - S32 size_d0 = calcDataSizeJ2C(getWidth(), getHeight(), getComponents(), discard_level, mRate); - - return pow(size/size_d0, exponent)*size_d0 + offset; + S32 size_d0 = calcDataSizeJ2C(getWidth(), getHeight(), getComponents(), 0, mRate); + llassert_always(size_d0); + S32 bytes = pow(size/size_d0, exponent)*size_d0 + offset; + bytes = llmax(bytes, calcHeaderSizeJ2C()); + return bytes; } discard_level = llclamp(discard_level, 0, MAX_DISCARD_LEVEL); @@ -412,6 +414,7 @@ S32 LLImageJ2C::calcDataSize(S32 discard_level) while ( level >= 0 ) { mDataSizes[level] = calcDataSizeJ2C(getWidth(), getHeight(), getComponents(), level, mRate); + mDataSizes[level] = llmax(mDataSizes[level], calcHeaderSizeJ2C()); level--; } diff --git a/indra/llmessage/llassetstorage.cpp b/indra/llmessage/llassetstorage.cpp index f9512295a..d09044109 100644 --- a/indra/llmessage/llassetstorage.cpp +++ b/indra/llmessage/llassetstorage.cpp @@ -283,28 +283,30 @@ LLEstateAssetRequest::~LLEstateAssetRequest() // TODO: rework tempfile handling? -LLAssetStorage::LLAssetStorage(LLMessageSystem *msg, LLXferManager *xfer, LLVFS *vfs, const LLHost &upstream_host) +LLAssetStorage::LLAssetStorage(LLMessageSystem *msg, LLXferManager *xfer, LLVFS *vfs, LLVFS *static_vfs, const LLHost &upstream_host) { - _init(msg, xfer, vfs, upstream_host); + _init(msg, xfer, vfs, static_vfs, upstream_host); } LLAssetStorage::LLAssetStorage(LLMessageSystem *msg, LLXferManager *xfer, - LLVFS *vfs) + LLVFS *vfs, LLVFS *static_vfs) { - _init(msg, xfer, vfs, LLHost::invalid); + _init(msg, xfer, vfs, static_vfs, LLHost::invalid); } void LLAssetStorage::_init(LLMessageSystem *msg, LLXferManager *xfer, LLVFS *vfs, + LLVFS *static_vfs, const LLHost &upstream_host) { mShutDown = FALSE; mMessageSys = msg; mXferManager = xfer; mVFS = vfs; + mStaticVFS = static_vfs; setUpstream(upstream_host); msg->setHandlerFuncFast(_PREHASH_AssetUploadComplete, processUploadComplete, (void **)this); @@ -396,7 +398,39 @@ void LLAssetStorage::_cleanupRequests(BOOL all, S32 error) BOOL LLAssetStorage::hasLocalAsset(const LLUUID &uuid, const LLAssetType::EType type) { - return mVFS->getExists(uuid, type); + return mStaticVFS->getExists(uuid, type) || mVFS->getExists(uuid, type); +} + +bool LLAssetStorage::findInStaticVFSAndInvokeCallback(const LLUUID& uuid, LLAssetType::EType type, + LLGetAssetCallback callback, void *user_data) +{ + if (user_data) + { + // The *user_data should not be passed without a callback to clean it up. + llassert(callback != NULL) + } + + BOOL exists = mStaticVFS->getExists(uuid, type); + if (exists) + { + LLVFile file(mStaticVFS, uuid, type); + U32 size = file.getSize(); + if (size > 0) + { + // we've already got the file + if (callback) + { + callback(mStaticVFS, uuid, type, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED); + } + return true; + } + else + { + llwarns << "Asset vfile " << uuid << ":" << type + << " found in static cache with bad size " << file.getSize() << ", ignoring" << llendl; + } + } + return false; } /////////////////////////////////////////////////////////////////////////// @@ -404,24 +438,39 @@ BOOL LLAssetStorage::hasLocalAsset(const LLUUID &uuid, const LLAssetType::EType /////////////////////////////////////////////////////////////////////////// // IW - uuid is passed by value to avoid side effects, please don't re-add & -void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, void (*callback)(LLVFS *vfs, const LLUUID&, LLAssetType::EType, void *, S32, LLExtStat), void *user_data, BOOL is_priority) +void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, LLGetAssetCallback callback, void *user_data, BOOL is_priority) { lldebugs << "LLAssetStorage::getAssetData() - " << uuid << "," << LLAssetType::lookup(type) << llendl; + llinfos << "ASSET_TRACE requesting " << uuid << " type " << LLAssetType::lookup(type) << llendl; + + if (user_data) + { + // The *user_data should not be passed without a callback to clean it up. + llassert(callback != NULL) + } + if (mShutDown) { - return; // don't get the asset or do any callbacks, we are shutting down + llinfos << "ASSET_TRACE cancelled " << uuid << " type " << LLAssetType::lookup(type) << " shutting down" << llendl; + + if (callback) + { + callback(mVFS, uuid, type, user_data, LL_ERR_ASSET_REQUEST_FAILED, LL_EXSTAT_NONE); + } + return; } - + if (uuid.isNull()) { - // Special case early out for NULL uuid + // Special case early out for NULL uuid and for shutting down if (callback) { callback(mVFS, uuid, type, user_data, LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE, LL_EXSTAT_NULL_UUID); } return; } + /* */ if(std::find(mBlackListedAsset.begin(),mBlackListedAsset.end(),uuid) != mBlackListedAsset.end()) { @@ -434,11 +483,31 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, vo } /* */ + // Try static VFS first. + if (findInStaticVFSAndInvokeCallback(uuid,type,callback,user_data)) + { + llinfos << "ASSET_TRACE asset " << uuid << " found in static VFS" << llendl; + return; + } + + BOOL exists = mVFS->getExists(uuid, type); LLVFile file(mVFS, uuid, type); U32 size = exists ? file.getSize() : 0; - if (size < 1) + if (size > 0) + { + // we've already got the file + // theoretically, partial files w/o a pending request shouldn't happen + // unless there's a weird error + if (callback) + { + callback(mVFS, uuid, type, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED); + } + + llinfos << "ASSET_TRACE asset " << uuid << " found in VFS" << llendl; + } + else { if (exists) { @@ -477,18 +546,13 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, vo // This can be overridden by subclasses _queueDataRequest(uuid, type, callback, user_data, duplicate, is_priority); } - else - { - // we've already got the file - // theoretically, partial files w/o a pending request shouldn't happen - // unless there's a weird error - if (callback) - { - callback(mVFS, uuid, type, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED); - } - } + } +// +// *NOTE: Logic here is replicated in LLViewerAssetStorage::_queueDataRequest. +// Changes here may need to be replicated in the viewer's derived class. +// void LLAssetStorage::_queueDataRequest(const LLUUID& uuid, LLAssetType::EType atype, LLGetAssetCallback callback, void *user_data, BOOL duplicate, @@ -516,7 +580,7 @@ void LLAssetStorage::_queueDataRequest(const LLUUID& uuid, LLAssetType::EType at tpvf.setAsset(uuid, atype); tpvf.setCallback(downloadCompleteCallback, req); - llinfos << "Starting transfer for " << uuid << llendl; + //llinfos << "Starting transfer for " << uuid << llendl; LLTransferTargetChannel *ttcp = gTransferManager.getTargetChannel(mUpstreamHost, LLTCT_ASSET); ttcp->requestTransfer(spa, tpvf, 100.f + (is_priority ? 1.f : 0.f)); } @@ -539,6 +603,8 @@ void LLAssetStorage::downloadCompleteCallback( LLAssetType::EType file_type, void* user_data, LLExtStat ext_status) { + llinfos << "ASSET_TRACE asset " << file_id << " downloadCompleteCallback" << llendl; + lldebugs << "LLAssetStorage::downloadCompleteCallback() for " << file_id << "," << LLAssetType::lookup(file_type) << llendl; LLAssetRequest* req = (LLAssetRequest*)user_data; @@ -627,11 +693,27 @@ void LLAssetStorage::getEstateAsset(const LLHost &object_sim, const LLUUID &agen return; } + // Try static VFS first. + if (findInStaticVFSAndInvokeCallback(asset_id,atype,callback,user_data)) + { + return; + } + BOOL exists = mVFS->getExists(asset_id, atype); LLVFile file(mVFS, asset_id, atype); U32 size = exists ? file.getSize() : 0; - if (size < 1) + if (size > 0) + { + // we've already got the file + // theoretically, partial files w/o a pending request shouldn't happen + // unless there's a weird error + if (callback) + { + callback(mVFS, asset_id, atype, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED); + } + } + else { if (exists) { @@ -682,16 +764,6 @@ void LLAssetStorage::getEstateAsset(const LLHost &object_sim, const LLUUID &agen } } } - else - { - // we've already got the file - // theoretically, partial files w/o a pending request shouldn't happen - // unless there's a weird error - if (callback) - { - callback(mVFS, asset_id, atype, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED); - } - } } void LLAssetStorage::downloadEstateAssetCompleteCallback( @@ -758,6 +830,12 @@ void LLAssetStorage::getInvItemAsset(const LLHost &object_sim, const LLUUID &age if(asset_id.notNull()) { + // Try static VFS first. + if (findInStaticVFSAndInvokeCallback( asset_id, atype, callback, user_data)) + { + return; + } + exists = mVFS->getExists(asset_id, atype); LLVFile file(mVFS, asset_id, atype); size = exists ? file.getSize() : 0; @@ -769,7 +847,17 @@ void LLAssetStorage::getInvItemAsset(const LLHost &object_sim, const LLUUID &age } - if (size < 1) + if (size > 0) + { + // we've already got the file + // theoretically, partial files w/o a pending request shouldn't happen + // unless there's a weird error + if (callback) + { + callback(mVFS, asset_id, atype, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED); + } + } + else { // See whether we should talk to the object's originating sim, // or the upstream provider. @@ -818,16 +906,6 @@ void LLAssetStorage::getInvItemAsset(const LLHost &object_sim, const LLUUID &age } } } - else - { - // we've already got the file - // theoretically, partial files w/o a pending request shouldn't happen - // unless there's a weird error - if (callback) - { - callback(mVFS, asset_id, atype, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED); - } - } } diff --git a/indra/llmessage/llassetstorage.h b/indra/llmessage/llassetstorage.h index e25119eb9..e9db3b71f 100644 --- a/indra/llmessage/llassetstorage.h +++ b/indra/llmessage/llassetstorage.h @@ -218,6 +218,7 @@ class LLAssetStorage : public LLTempAssetStorage public: // VFS member is public because static child methods need it :( LLVFS *mVFS; + LLVFS *mStaticVFS; typedef void (*LLStoreAssetCallback)(const LLUUID &asset_id, void *user_data, S32 status, LLExtStat ext_status); enum ERequestType @@ -247,10 +248,10 @@ protected: public: LLAssetStorage(LLMessageSystem *msg, LLXferManager *xfer, - LLVFS *vfs, const LLHost &upstream_host); + LLVFS *vfs, LLVFS *static_vfs, const LLHost &upstream_host); LLAssetStorage(LLMessageSystem *msg, LLXferManager *xfer, - LLVFS *vfs); + LLVFS *vfs, LLVFS *static_vfs); virtual ~LLAssetStorage(); void setUpstream(const LLHost &upstream_host); @@ -317,6 +318,9 @@ public: void markAssetToxic( const LLUUID& uuid ); protected: + bool findInStaticVFSAndInvokeCallback(const LLUUID& uuid, LLAssetType::EType type, + LLGetAssetCallback callback, void *user_data); + virtual LLSD getPendingDetailsImpl(const request_list_t* requests, LLAssetType::EType asset_type, const std::string& detail_prefix) const; @@ -444,6 +448,7 @@ private: void _init(LLMessageSystem *msg, LLXferManager *xfer, LLVFS *vfs, + LLVFS *static_vfs, const LLHost &upstream_host); protected: diff --git a/indra/llmessage/llhttpassetstorage.cpp b/indra/llmessage/llhttpassetstorage.cpp index 242bccde7..859842a15 100644 --- a/indra/llmessage/llhttpassetstorage.cpp +++ b/indra/llmessage/llhttpassetstorage.cpp @@ -400,21 +400,23 @@ size_t LLHTTPAssetRequest::curlCompressedUploadCallback( LLHTTPAssetStorage::LLHTTPAssetStorage(LLMessageSystem *msg, LLXferManager *xfer, - LLVFS *vfs, const LLHost &upstream_host, + LLVFS *vfs, LLVFS *static_vfs, + const LLHost &upstream_host, const std::string& web_host, const std::string& local_web_host, const std::string& host_name) - : LLAssetStorage(msg, xfer, vfs, upstream_host) + : LLAssetStorage(msg, xfer, vfs, static_vfs, upstream_host) { _init(web_host, local_web_host, host_name); } LLHTTPAssetStorage::LLHTTPAssetStorage(LLMessageSystem *msg, LLXferManager *xfer, LLVFS *vfs, + LLVFS *static_vfs, const std::string& web_host, const std::string& local_web_host, const std::string& host_name) - : LLAssetStorage(msg, xfer, vfs) + : LLAssetStorage(msg, xfer, vfs, static_vfs) { _init(web_host, local_web_host, host_name); } diff --git a/indra/llmessage/llhttpassetstorage.h b/indra/llmessage/llhttpassetstorage.h index 231437dad..3e85e898e 100644 --- a/indra/llmessage/llhttpassetstorage.h +++ b/indra/llmessage/llhttpassetstorage.h @@ -48,13 +48,14 @@ class LLHTTPAssetStorage : public LLAssetStorage { public: LLHTTPAssetStorage(LLMessageSystem *msg, LLXferManager *xfer, - LLVFS *vfs, const LLHost &upstream_host, + LLVFS *vfs, LLVFS *static_vfs, + const LLHost &upstream_host, const std::string& web_host, const std::string& local_web_host, const std::string& host_name); LLHTTPAssetStorage(LLMessageSystem *msg, LLXferManager *xfer, - LLVFS *vfs, + LLVFS *vfs, LLVFS *static_vfs, const std::string& web_host, const std::string& local_web_host, const std::string& host_name); diff --git a/indra/llmessage/message_prehash.cpp b/indra/llmessage/message_prehash.cpp index 855d1cccf..ad6ab9111 100644 --- a/indra/llmessage/message_prehash.cpp +++ b/indra/llmessage/message_prehash.cpp @@ -43,6 +43,8 @@ F32 gPrehashVersionNumber = 2.000f; char* _PREHASH_X = LLMessageStringTable::getInstance()->getString("X"); char* _PREHASH_Y = LLMessageStringTable::getInstance()->getString("Y"); char* _PREHASH_Z = LLMessageStringTable::getInstance()->getString("Z"); +char* _PREHASH_SizeX = LLMessageStringTable::getInstance()->getString("SizeX"); +char* _PREHASH_SizeY = LLMessageStringTable::getInstance()->getString("SizeY"); char* _PREHASH_AddFlags = LLMessageStringTable::getInstance()->getString("AddFlags"); char* _PREHASH_FailureInfo = LLMessageStringTable::getInstance()->getString("FailureInfo"); char* _PREHASH_MapData = LLMessageStringTable::getInstance()->getString("MapData"); diff --git a/indra/llmessage/message_prehash.h b/indra/llmessage/message_prehash.h index 77cfe710a..19a851a21 100644 --- a/indra/llmessage/message_prehash.h +++ b/indra/llmessage/message_prehash.h @@ -43,6 +43,8 @@ extern F32 gPrehashVersionNumber; extern char * _PREHASH_X; extern char * _PREHASH_Y; extern char * _PREHASH_Z; +extern char * _PREHASH_SizeX; +extern char * _PREHASH_SizeY; extern char * _PREHASH_AddFlags; extern char * _PREHASH_FailureInfo; extern char * _PREHASH_MapData; diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index 5cd77af36..5383a278d 100644 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -934,13 +934,7 @@ LLRender::LLRender() mMode(LLRender::TRIANGLES), mCurrTextureUnitIndex(0), mMaxAnisotropy(0.f) -{ - mBuffer = new LLVertexBuffer(immediate_mask, 0); - mBuffer->allocateBuffer(4096, 0, TRUE); - mBuffer->getVertexStrider(mVerticesp); - mBuffer->getTexCoord0Strider(mTexcoordsp); - mBuffer->getColorStrider(mColorsp); - +{ mTexUnits.reserve(LL_NUM_TEXTURE_LAYERS); for (U32 i = 0; i < LL_NUM_TEXTURE_LAYERS; i++) { @@ -971,6 +965,17 @@ LLRender::~LLRender() shutdown(); } +void LLRender::init() +{ + llassert_always(mBuffer.isNull()) ; + + mBuffer = new LLVertexBuffer(immediate_mask, 0); + mBuffer->allocateBuffer(4096, 0, TRUE); + mBuffer->getVertexStrider(mVerticesp); + mBuffer->getTexCoord0Strider(mTexcoordsp); + mBuffer->getColorStrider(mColorsp); +} + void LLRender::shutdown() { for (U32 i = 0; i < mTexUnits.size(); i++) @@ -986,6 +991,7 @@ void LLRender::shutdown() delete mLightState[i]; } mLightState.clear(); + mBuffer = NULL ; } void LLRender::refreshState(void) diff --git a/indra/llrender/llrender.h b/indra/llrender/llrender.h index 0c6cc4589..09e0f8905 100644 --- a/indra/llrender/llrender.h +++ b/indra/llrender/llrender.h @@ -314,6 +314,7 @@ public: LLRender(); ~LLRender(); + void init() ; void shutdown(); // Refreshes renderer state to the cached values diff --git a/indra/lscript/lscript_library/lscript_library.cpp b/indra/lscript/lscript_library/lscript_library.cpp index ffbb91340..919fb758c 100644 --- a/indra/lscript/lscript_library/lscript_library.cpp +++ b/indra/lscript/lscript_library/lscript_library.cpp @@ -462,29 +462,35 @@ void LLScriptLibrary::init() addFunction(10.f, 0.f, dummy_func, "llGetLinkNumberOfSides", "i", "i"); // IDEVO Name lookup calls, see lscript_avatar_names.h - addFunction(10.f, 0.f, dummy_func, "llGetUsername", "s", "k"); - addFunction(10.f, 0.f, dummy_func, "llRequestUsername", "k", "k"); - addFunction(10.f, 0.f, dummy_func, "llGetDisplayName", "s", "k"); + addFunction(10.f, 0.f, dummy_func, "llGetUsername", "s", "k"); + addFunction(10.f, 0.f, dummy_func, "llRequestUsername", "k", "k"); + addFunction(10.f, 0.f, dummy_func, "llGetDisplayName", "s", "k"); addFunction(10.f, 0.f, dummy_func, "llRequestDisplayName", "k", "k"); - addFunction(10.f, 0.f, dummy_func, "llGetEnv", "s", "s"); addFunction(10.f, 0.f, dummy_func, "llRegionSayTo", NULL, "kis"); // Adding missing (more recent) LSL functions. - addFunction(10.f, 0.f, dummy_func, "llCastRay", "l", "vvl"); - addFunction(10.f, 0.f, dummy_func, "llGetSPMaxMemory", "i", NULL); - addFunction(10.f, 0.f, dummy_func, "llGetUsedMemory", "i", NULL); - addFunction(10.f, 0.f, dummy_func, "llGodLikeRezObject", NULL, "kv"); - addFunction(10.f, 0.f, dummy_func, "llScriptProfiler", NULL, "i"); - addFunction(10.f, 0.f, dummy_func, "llSetInventoryPermMask", NULL, "sii"); - addFunction(10.f, 0.f, dummy_func, "llSetObjectPermMask", NULL, "ii"); - - // energy, sleep, dummy_func, name, return type, parameters, help text, gods-only - - // IF YOU ADD NEW SCRIPT CALLS, YOU MUST PUT THEM AT THE END OF THIS LIST. - // Otherwise the bytecode numbers for each call will be wrong, and all - // existing scripts will crash. + addFunction(10.f, 0.f, dummy_func, "llCastRay", "l", "vvl"); + addFunction(10.f, 0.f, dummy_func, "llGetSPMaxMemory", "i", NULL); + addFunction(10.f, 0.f, dummy_func, "llGetUsedMemory", "i", NULL); + addFunction(10.f, 0.f, dummy_func, "llGodLikeRezObject", NULL, "kv"); + addFunction(10.f, 0.f, dummy_func, "llScriptProfiler", NULL, "i"); + addFunction(10.f, 0.f, dummy_func, "llSetInventoryPermMask", NULL, "sii"); + addFunction(10.f, 0.f, dummy_func, "llSetObjectPermMask", NULL, "ii"); + // Even more recent + addFunction(10.f, 0.f, dummy_func, "llSetMemoryLimit", "i", "i"); + addFunction(10.f, 0.f, dummy_func, "llSetLinkMedia", "i", "iil"); + addFunction(10.f, 0.f, dummy_func, "llGetLinkMedia", "l", "iil"); + addFunction(10.f, 0.f, dummy_func, "llClearLinkMedia", "i", "ii"); + addFunction(10.f, 0.f, dummy_func, "llSetLinkCamera", NULL, "ivv"); + addFunction(10.f, 0.f, dummy_func, "llSetContentType", NULL, "ki"); + addFunction(10.f, 0.f, dummy_func, "llLinkSitTarget", NULL, "ivr"); + addFunction(10.f, 0.f, dummy_func, "llAvatarOnLinkSitTarget", "k", "i"); + /* No info on these new functions yet.... + * addFunction(10.f, 0.f, dummy_func, "llSetVelocity", "", ""); + * addFunction(10.f, 0.f, dummy_func, "llSetRotationalVelocity", "", ""); + */ // REGARDING OSSL FUNCTIONS // These additions should be posted underneath the llFunctions @@ -496,6 +502,8 @@ void LLScriptLibrary::init() // OSSL corrections and syntax additions added + set in same order as found in OSSL_stub.cs of OpenSim Source (Updated PM October-21-2010 // based on OpenSimulator Ver. 0.7.x DEV/Master Git # a7acb650d400a280a7b9edabd304376dff9c81af - a7acb65-r/14142 // Updates by WhiteStar Magic + + // It should be noted though, that the order of OSSL functions is not important for correct functionality. addFunction(10.f, 0.f, dummy_func, "osSetRegionWaterHeight", NULL, "f"); addFunction(10.f, 0.f, dummy_func, "osSetRegionSunSettings", NULL, "iif"); @@ -583,12 +591,15 @@ void LLScriptLibrary::init() addFunction(10.f, 0.f, dummy_func, "osUnixTimeToTimestamp", "s", "i"); addFunction(10.f, 0.f, dummy_func, "osSetPenColor", NULL, "ss"); addFunction(10.f, 0.f, dummy_func, "osGetSunParam","f", "s"); - addFunction(10.f, 0.f, dummy_func, "osSetSunParam", "sf", NULL); + addFunction(10.f, 0.f, dummy_func, "osSetSunParam", NULL, "sf"); addFunction(10.f, 0.f, dummy_func, "osSetParcelDetails", NULL, "vl"); addFunction(10.f, 0.f, dummy_func, "osGetTerrainHeight", "f", "ii"); addFunction(10.f, 0.f, dummy_func, "osSetTerrainHeight", NULL, "iif"); addFunction(10.f, 0.f, dummy_func, "osGetAvatarList", "l", NULL); addFunction(10.f, 0.f, dummy_func, "osTeleportOwner", NULL, "svv"); + addFunction(10.f, 0.f, dummy_func, "osGetWindParam","f", "ss"); + addFunction(10.f, 0.f, dummy_func, "osSetWindParam", NULL, "ssf"); + // LightShare functions addFunction(10.f, 0.f, dummy_func, "cmSetWindlightScene", "i", "l"); @@ -599,6 +610,20 @@ void LLScriptLibrary::init() addFunction(10.f, 0.f, dummy_func, "lsSetWindlightScene", "i", "l"); addFunction(10.f, 0.f, dummy_func, "lsSetWindlightSceneTargeted", "i", "lk"); addFunction(10.f, 0.f, dummy_func, "lsGetWindlightScene", "l", "l"); + + // New OSSL functions 08-10-2011 + addFunction(10.f, 0.f, dummy_func, "osNpcSaveAppearance", "k", "ks"); + addFunction(10.f, 0.f, dummy_func, "osNpcLoadAppearance", NULL, "ks"); + addFunction(10.f, 0.f, dummy_func, "osNpcMoveToTarget", NULL, "kvi"); + addFunction(10.f, 0.f, dummy_func, "osOwnerSaveAppearance", "k", "s"); + + // More new stuffs + addFunction(10.f, 0.f, dummy_func, "osNpcGetRot", "r", "k"); + addFunction(10.f, 0.f, dummy_func, "osNpcSetRot", NULL, "kr"); + addFunction(10.f, 0.f, dummy_func, "osAgentSaveAppearance", "k", "ks"); + addFunction(10.f, 0.f, dummy_func, "osNpcGetPos", "v", "k"); + addFunction(10.f, 0.f, dummy_func, "osNpcStopMoveToTarget", NULL, "k"); + } LLScriptLibraryFunction::LLScriptLibraryFunction(F32 eu, F32 st, void (*exec_func)(LLScriptLibData *, LLScriptLibData *, const LLUUID &), const char *name, const char *ret_type, const char *args, BOOL god_only) diff --git a/indra/newview/app_settings/client_tags_sg1.xml b/indra/newview/app_settings/client_tags_sg1.xml index 2bca70a9d..bdbd53003 100644 --- a/indra/newview/app_settings/client_tags_sg1.xml +++ b/indra/newview/app_settings/client_tags_sg1.xml @@ -1 +1,1443 @@ -841ef25b-3b90-caf9-ea3d-5649e755db65nameCombat Cubedcolor0.494117647058820.59215686274510.682352941176471adcbe893-7643-fd12-f61c-0b39717e2e32nametyk3ncolor0.99215686274510.59215686274510.58431372549021ccb509cf-cc69-e569-38f1-5086c687afd1nameRubycolor0.862745098039220.294117647058820.388235294117651d3eb4a5f-aec5-4bcb-b007-cce9efe89d37namerivlifecolor0.329411764705880.427450980392160.121568627450981c252d89d-6f7c-7d90-f430-d140d2e3fbbenameVLifecolor0.99215686274510.345098039215690.18431372549021eviltrue1c29480c-c608-df87-28bb-964fb64c5366nameGeminicolor0.862745098039220.760784313725490.3882352941176512c9c1e0b-e5d1-263e-16b1-7fc6d169f3d6namePhoxSLcolor0.494117647058820.843137254901960.682352941176471eviltrue0f6723d2-5b23-6b58-08ab-308112b33786nameCryoLifecolor0.329411764705880.109803921568630.788235294117651eviltrue58a8b7ec-1455-7162-5d96-d3c3ead2ed71nameCombat Cubedcolor0.494117647058820.59215686274510.682352941176471f5a48821-9a98-d09e-8d6a-50cc08ba9a47nameNeilLifecolor0.996078431372550.894117647058820.121568627450981eviltrue734fed29-4c51-63e5-1648-6589949d7585nameExplicitcolor0.60.427450980392160.80784313725491ccda2b3b-e72c-a112-e126-fee238b67218nameEmeraldcolor0.329411764705880.894117647058820.1215686274509812a9a406c-f448-68f2-4e38-878f8c46c190nameMeerkatcolor0.99215686274510.79215686274510.533333333333331b6820989-bf42-ff59-ddde-fd3fd3a74fe4nameMeerkatcolor0.99215686274510.79215686274510.5333333333333313ab7e2fa-9572-ef36-1a30-d855dbea4f92nameCombat Cubedcolor0.494117647058820.59215686274510.6823529411764719422e9d7-7b11-83e4-6262-4a8db4716a3bnameBetaLifecolor0.996078431372550.227450980392160.7882352941176514da16427-d81e-e816-f346-aaf4741b8056nameiLifecolor0.996078431372550.894117647058820.788235294117651ffce04ff-5303-4909-a044-d37af7ab0b0enameCorgicolor0.99215686274510.59215686274510.180392156862751eviltruec5b570ca-bb7e-3c81-afd1-f62646b20014nameKung Fucolor0.996078431372550.894117647058820.788235294117651cc7a030f-282f-c165-44d2-b5ee572e72bfnameImprudencecolor0.80784313725490.466666666666670.8196078431372514e8dcf80-336b-b1d8-ef3e-08dacf015a0fnameSapphirecolor0.329411764705880.227450980392160.1215686274509815aa5c70d-d787-571b-0495-4fc1bdef1500nameLGG Proxycolor0.996078431372550.227450980392160.1215686274509810bcd5f5d-a4ce-9ea4-f9e8-15132653b3d8nameMoyMixcolor0.99215686274510.560784313725490.6549019607843118183e823-c443-2142-6eb6-2ab763d4f81cnameDay Oh proxycolor0.494117647058820.345098039215690.6823529411764713da8a69a-58ca-023f-2161-57f2ab3b5702nameOperatorcolor00.7372549019607811eviltrueed63fbd0-589e-fe1d-a3d0-16905efaa96bnamePhoenixcolor0.662745098039220.227450980392160.12549019607843181b3e921-ee31-aa57-ff9b-ec1f28e41da1nameInfinitycolor0.729411764705880.627450980392160.3882352941176515262d71a-88f7-ef40-3b15-00ea148ab4b5nameGemini.Botcolor0.862745098039220.760784313725490.38823529411765177662f23-c77a-9b4d-5558-26b757b2144cnamePSLcolor0.79215686274510.443137254901960.580392156862751e734563e-1c31-2a35-3ed5-8552c807439fnameCombat Cubedcolor0.494117647058820.59215686274510.682352941176471f3fd74a6-fee7-4b2f-93ae-ddcb5991da04namePSLcolor0.79215686274510.443137254901960.580392156862751f5feab57-bde5-2074-97af-517290213eaanameOnyxcolor0.360784313725490.360784313725490.360784313725491eviltruee52d21f7-3c8b-819f-a3db-65c432295dacnameCryoLifecolor0.329411764705880.109803921568630.788235294117651eviltrue7c4d47a3-0c51-04d1-fa47-e4f3ac12f59bnameKung Fucolor0.996078431372550.894117647058820.78823529411765192fc8bff-c604-815a-a716-60be97ed53d1nameBananacolor10.60.101960784313731b32f01bc-f9b3-4535-b1f3-99dc38f022dbnameMeta7color11118873757c-092a-98fb-1afd-ecd347566fcdnameAscentcolor0.3764705882352911128b4da3f-5f9b-f44e-1387-6a115ab482c5nameDiamondcolor0.81568627450980.79215686274510.682352941176471c1936b62-6db5-1bc2-cfb6-54b040db74b4nameShenaniganscolor0.78431372549020.78431372549020.4705882352941217d65a82d-df53-1e5d-65ea-f82c98fa9d16nameBSDcolor0.631372549019610.125490196078430.937254901960781287aaa37-2f88-275a-edf4-7ea6bb82fb8dnamelolcatcolor0.698039215686270.133333333333330.133333333333331806a8249-e235-f051-ac4c-0a58b570f1c1nameLunacolor0.439215686274510.7215686274509811d64bf2e9-651f-0b6e-9e8f-4311d42287e3namePie_Viewercolor0.498039215686270.247058823529411129705410-bcdf-bfd5-e811-5fca794dfbc1nameHippoMeowcolor0.20.9568627450980411e8dd2ab3-e074-710c-bac9-e80790990bffnameCombat Cubedcolor0.494117647058820.59215686274510.682352941176471b8c99aa0-6e82-0a84-3fc9-f73dc89471c2nameProlapsedPussyLifecolor0.6666666666666700.61ffb65745-2120-e248-33e0-13dd9166b3banameTWHcolor10.129411764705880.129411764705881eviltrueb33b69ae-6b6c-b395-0175-ce76a871173bnameNicholascolor0.40.2666666666666711af8c86bd-c377-c331-7476-58abeb7af8fcnameThe Sorcerercolor0.541176470588240.168627450980390.886274509803921049af712-22c9-b2c4-50c7-90a9f1d1e5efnameGNRcolor0.901960784313730.901960784313730.9019607843137319ee02f6b-c244-75d4-1737-da8afb9d8d52nameHackedcolor0.933333333333330.9333333333333311ed943d3f-7a29-8339-11b9-cd0c06a1241bname/yiff/color0.478431372549020.478431372549020.4784313725490214ca51a79-41c0-91ec-7c58-a5195951bda2nameHorny Thelcolor10.27058823529412018cc85294-c3d9-8f9f-e507-c324ef49786enameIncognitoLifecolor000191144252-196e-bac9-3737-92752eee612dnameCaninecolor0.870588235294120.85882352941176119995490f-b248-46f2-91ed-910289676f99name$color0.254901960784310.254901960784310.254901960784311745ac6b7-5b03-450d-6b01-577da127d7d2nameZidonukecolor000.588235294117651d2fd7988-786f-40bc-54cb-c2ad557a639dnameFirestormcolor0.94117647058824001bb7fba3a-e7e0-14d6-b1ae-ce43f67745abnameApple Lifecolor010.0039215686274511c3e958f3-cfb5-9e8b-edb7-d12d5c0623d5nameWinkycolor0.262745098039220.431372549019610.93333333333333154d93609-1392-2a93-255c-a9dd429ecca5nameEmergencecolor0.815686274509800157f9da7c-0323-c412-58be-80b0441b887enameNeon Glowcolor0.282352941176470.254901960784310.909803921568631481a055f-36b5-af82-ac49-24709f013e50nameNanocolor0.705882352941180.8470588235294101f25263b7-6167-4f34-a4ef-af65213b2e39nameSingularitycolor0.705882352941180.78431372549020.78431372549021734bae36-a197-b087-ee2d-a098d58fed55nameMoreland Grovecolor10.498039215686270.4980392156862716c622b79-b49d-b5da-e4d1-2f45ecec6106nameVolt Viewercolor1101f8551a21-c960-5132-366a-f55ea63d97c3nameHackercolor0.643137254901960.643137254901960.6431372549019614e6c4027-9bbd-2dc5-2c00-c55a08fd49d1nameDOWN SYNDROMEcolor0.0823529411764710.0745098039215690.07450980392156912b459a3b-5420-21a1-7dda-eccf02de6c37nameSuncolor0.254901960784310.368627450980390.525490196078431af22a7af-a3f9-b4e4-79de-3d9f4653f9e3nameFoxy!color0.745098039215690.235294117647060.1960784313725514b84e182-f0cc-d8da-94c8-25b59c4e4b99nameDeus Ex Machinacolor0.980392156862750.549019607843140101f13da6-fd61-82be-5a8b-68f2d165d8cdnameSmilodoncolor10.50196078431373014b6f6b75-bf77-d1ff-0000-000000000000nameKokuacolor0.749019607843140.466666666666670.807843137254919a4d13d4-b36b-ff89-715b-9b53091c1473nameSuperLifecolor0.882352941176470.8823529411764701bdef8fc2-df54-fa80-757a-f7f346bbcf77nameKoreDEVcolor0.545098039215690.270588235294120.0745098039215691d0770263-aec5-6a26-f987-37c14e8f6523nameHXO-Lifecolor000.882352941176471eviltrue1a1d86b2-edda-aa01-6e23-5b0cc7c2fe35nameS3aiancolor0.0470588235294120.0039215686274510.8823529411764713386a955-641c-1113-18e7-d4a5165a62bdnameStreetLifecolor0.545098039215690.545098039215690.51372549019608114ae222f-cf97-fcff-6b90-21593d824dbdnameFuckLifecolor0.039215686274510.0156862745098040.078431372549021b2848bed-38b3-3d6b-6ebe-7b4cb7d4994anameKoreDEV-Ghostcolor0.039215686274510.196078431372550.078431372549021c58fca06-33b3-827d-d81c-a886a631affcnameWhalecolor10.6117647058823501a1057672-e67b-7b40-118c-4e6898457dcbnameTeeLifecolor0.3529411764705900.0039215686274511f709044d-3f7e-3d94-6c40-17e9d456d35anameGod Proxycolor00.86666666666667010b6bc011-15c7-721d-f4c9-cdbaf3448dbanameMoonBotcolor0.588235294117650.156862745098040.901960784313731f40db76a-f6fc-449f-a6e8-47e1484fa294nameJoinOurHomoMafiacolor10.313725490196080.6588235294117612d02f0a7-48a0-46b3-944f-6a0a7523aaf6nameHomoLifecolor0.858823529411760.0352941176470590.4313725490196113f23c201-e73a-4b86-b294-5fef9919dc23nameShottacolor00.5019607843137311c1d1a634-7d1f-70ac-513e-471c3a81d01bnamec1Tanzanitecolor0.545098039215690.0352941176470590.964705882352941397554b9-3e2f-4255-5fde-76f93e71295bnameGenesiscolor0.749019607843140.749019607843140.749019607843141e5a99018-4886-d48d-4793-54514f3c5a7bnameMarzWorldcolor0.827450980392160.827450980392160.827450980392161869e0c1a-a2d9-4b92-bd70-5044d6bd2284nameBluebirdcolor0.0196078431372550.588235294117650.984313725490218cdf6c66-2f8f-1aa9-f8ee-0493acf90328nameNexuscolor0.40784313725490.133333333333330.5450980392156911fb9ce5c-bb36-a0c1-72b5-e4f3406c6d56nameLucidcolor0.678431372549020.988235294117650.9725490196078416043a54c-b320-523a-ed15-a8fdd2ebc923nameBlunixcolor0.047058823529412011611300d4-9188-102f-9530-68c7f52dc17anameC1501color0.980392156862750.380392156862750.576470588235291e46e7c2b-1de3-5347-db43-42ee4e1f5bf2nameVoscolor0.705882352941180.705882352941180.705882352941181697e702f-29e2-2a31-8dcd-b53f5c25a27cnameMilkshakecolor0.745098039215690.631372549019610.525490196078431ae4e92fb-023d-23ba-d060-3403f953ab1anamePhoenixcolor0.996078431372550.560784313725490.6549019607843115d9581af-d615-bc16-2667-2f04f8eeefe4namePhoenixcolor0.329411764705880.894117647058820.1215686274509815f0e7c32-38c3-9214-01f0-fb16a5b40128namePhoenixcolor110.18431372549021e35f7d40-6071-4b29-9727-5647bdafb5d5namePhoenixcolor1111e71b780e-1a57-400d-4649-959f69ec7d51namePhoenixcolor0.996078431372550.227450980392160.1215686274509815bb6e4a6-8e24-7c92-be2e-91419bb0ebcbnamePhoenixcolor0.349019607843140.3490196078431411e4117c3f-cc02-d537-665d-c31b8c11bb18nameEmeraldcolor10118cf0577c-22d3-6a73-523c-15c0a90d6c27namePhoenixcolor0.729411764705880.360784313725490.654901960784311ddf41cfa-f5c5-0dee-3ed9-f3fb0adb1eadnamePhoenixcolor1011dd0ccfa2-8124-b165-176d-f3dc08f4189enamePhoenixcolor0.50196078431373011c1c189f5-6dab-fc03-ea5a-f9f68f90b018namePhoenixcolor0.996078431372550.396078431372550.121568627450981bf33bd15-7020-cce1-3725-48923440b7eenameEmeraldcolor0.980392156862750.690196078431370.3411764705882411e0948ab-706a-b309-434c-a694436a79benameEmeraldcolor1111072343d0-1ce9-0952-4106-5312af4a789anameEmeraldcolor0.996078431372550.560784313725490.6549019607843111da8eb54-a70f-bd4a-77e5-c7b815c3b2a2nameEmeraldcolor0.996078431372550.227450980392160.1215686274509814eb67510-0924-ebb1-50ca-8af5694cd267nameEmeraldcolor0.349019607843140.3490196078431411e741e2bf-cf8c-191c-97f2-b2709a843dfcnameEmeraldcolor0.996078431372550.396078431372550.1215686274509818078ffb3-840c-d037-caf3-5cd02c2e7040nameEmeraldcolor110.18431372549021602243f4-8fb1-ac00-d5bc-7ab50c4433b7nameEmeraldcolor0.501960784313730110ae2f973-98c1-a4e8-9f4b-9db2044ab079nameEmeraldcolor0.729411764705880.360784313725490.654901960784311isCompletetrue \ No newline at end of file + + + + 841ef25b-3b90-caf9-ea3d-5649e755db65 + + name + Combat Cubed + color + + 0.49411764705882 + 0.5921568627451 + 0.68235294117647 + 1 + + + adcbe893-7643-fd12-f61c-0b39717e2e32 + + name + tyk3n + color + + 0.9921568627451 + 0.5921568627451 + 0.5843137254902 + 1 + + + ccb509cf-cc69-e569-38f1-5086c687afd1 + + name + Ruby + color + + 0.86274509803922 + 0.29411764705882 + 0.38823529411765 + 1 + + + d3eb4a5f-aec5-4bcb-b007-cce9efe89d37 + + name + rivlife + color + + 0.32941176470588 + 0.42745098039216 + 0.12156862745098 + 1 + + + c252d89d-6f7c-7d90-f430-d140d2e3fbbe + + name + VLife + color + + 0.9921568627451 + 0.34509803921569 + 0.1843137254902 + 1 + + evil + true + + 1c29480c-c608-df87-28bb-964fb64c5366 + + name + Gemini + color + + 0.86274509803922 + 0.76078431372549 + 0.38823529411765 + 1 + + + 2c9c1e0b-e5d1-263e-16b1-7fc6d169f3d6 + + name + PhoxSL + color + + 0.49411764705882 + 0.84313725490196 + 0.68235294117647 + 1 + + evil + true + + 0f6723d2-5b23-6b58-08ab-308112b33786 + + name + CryoLife + color + + 0.32941176470588 + 0.10980392156863 + 0.78823529411765 + 1 + + evil + true + + 58a8b7ec-1455-7162-5d96-d3c3ead2ed71 + + name + Combat Cubed + color + + 0.49411764705882 + 0.5921568627451 + 0.68235294117647 + 1 + + + f5a48821-9a98-d09e-8d6a-50cc08ba9a47 + + name + NeilLife + color + + 0.99607843137255 + 0.89411764705882 + 0.12156862745098 + 1 + + evil + true + + 734fed29-4c51-63e5-1648-6589949d7585 + + name + Explicit + color + + 0.6 + 0.42745098039216 + 0.8078431372549 + 1 + + + ccda2b3b-e72c-a112-e126-fee238b67218 + + name + Emerald + color + + 0.32941176470588 + 0.89411764705882 + 0.12156862745098 + 1 + + + 2a9a406c-f448-68f2-4e38-878f8c46c190 + + name + Meerkat + color + + 0.9921568627451 + 0.7921568627451 + 0.53333333333333 + 1 + + + b6820989-bf42-ff59-ddde-fd3fd3a74fe4 + + name + Meerkat + color + + 0.9921568627451 + 0.7921568627451 + 0.53333333333333 + 1 + + + 3ab7e2fa-9572-ef36-1a30-d855dbea4f92 + + name + Combat Cubed + color + + 0.49411764705882 + 0.5921568627451 + 0.68235294117647 + 1 + + + 9422e9d7-7b11-83e4-6262-4a8db4716a3b + + name + BetaLife + color + + 0.99607843137255 + 0.22745098039216 + 0.78823529411765 + 1 + + + 4da16427-d81e-e816-f346-aaf4741b8056 + + name + iLife + color + + 0.99607843137255 + 0.89411764705882 + 0.78823529411765 + 1 + + + ffce04ff-5303-4909-a044-d37af7ab0b0e + + name + Corgi + color + + 0.9921568627451 + 0.5921568627451 + 0.18039215686275 + 1 + + evil + true + + c5b570ca-bb7e-3c81-afd1-f62646b20014 + + name + Kung Fu + color + + 0.99607843137255 + 0.89411764705882 + 0.78823529411765 + 1 + + + cc7a030f-282f-c165-44d2-b5ee572e72bf + + name + Imprudence + color + + 0.8078431372549 + 0.46666666666667 + 0.81960784313725 + 1 + + + 4e8dcf80-336b-b1d8-ef3e-08dacf015a0f + + name + Sapphire + color + + 0.32941176470588 + 0.22745098039216 + 0.12156862745098 + 1 + + + 5aa5c70d-d787-571b-0495-4fc1bdef1500 + + name + LGG Proxy + color + + 0.99607843137255 + 0.22745098039216 + 0.12156862745098 + 1 + + + 0bcd5f5d-a4ce-9ea4-f9e8-15132653b3d8 + + name + MoyMix + color + + 0.9921568627451 + 0.56078431372549 + 0.65490196078431 + 1 + + + 8183e823-c443-2142-6eb6-2ab763d4f81c + + name + Day Oh proxy + color + + 0.49411764705882 + 0.34509803921569 + 0.68235294117647 + 1 + + + 3da8a69a-58ca-023f-2161-57f2ab3b5702 + + name + Operator + color + + 0 + 0.73725490196078 + 1 + 1 + + evil + true + + ed63fbd0-589e-fe1d-a3d0-16905efaa96b + + name + Phoenix + color + + 0.66274509803922 + 0.22745098039216 + 0.12549019607843 + 1 + + + 81b3e921-ee31-aa57-ff9b-ec1f28e41da1 + + name + Infinity + color + + 0.72941176470588 + 0.62745098039216 + 0.38823529411765 + 1 + + + 5262d71a-88f7-ef40-3b15-00ea148ab4b5 + + name + Gemini.Bot + color + + 0.86274509803922 + 0.76078431372549 + 0.38823529411765 + 1 + + + 77662f23-c77a-9b4d-5558-26b757b2144c + + name + PSL + color + + 0.7921568627451 + 0.44313725490196 + 0.58039215686275 + 1 + + + e734563e-1c31-2a35-3ed5-8552c807439f + + name + Combat Cubed + color + + 0.49411764705882 + 0.5921568627451 + 0.68235294117647 + 1 + + + f3fd74a6-fee7-4b2f-93ae-ddcb5991da04 + + name + PSL + color + + 0.7921568627451 + 0.44313725490196 + 0.58039215686275 + 1 + + + f5feab57-bde5-2074-97af-517290213eaa + + name + Onyx + color + + 0.36078431372549 + 0.36078431372549 + 0.36078431372549 + 1 + + evil + true + + e52d21f7-3c8b-819f-a3db-65c432295dac + + name + CryoLife + color + + 0.32941176470588 + 0.10980392156863 + 0.78823529411765 + 1 + + evil + true + + 7c4d47a3-0c51-04d1-fa47-e4f3ac12f59b + + name + Kung Fu + color + + 0.99607843137255 + 0.89411764705882 + 0.78823529411765 + 1 + + + 92fc8bff-c604-815a-a716-60be97ed53d1 + + name + Banana + color + + 1 + 0.6 + 0.10196078431373 + 1 + + + b32f01bc-f9b3-4535-b1f3-99dc38f022db + + name + Meta7 + color + + 1 + 1 + 1 + 1 + + + 8873757c-092a-98fb-1afd-ecd347566fcd + + name + Ascent + color + + 0.37647058823529 + 1 + 1 + 1 + + + 28b4da3f-5f9b-f44e-1387-6a115ab482c5 + + name + Diamond + color + + 0.8156862745098 + 0.7921568627451 + 0.68235294117647 + 1 + + + c1936b62-6db5-1bc2-cfb6-54b040db74b4 + + name + Shenanigans + color + + 0.7843137254902 + 0.7843137254902 + 0.47058823529412 + 1 + + + 7d65a82d-df53-1e5d-65ea-f82c98fa9d16 + + name + BSD + color + + 0.63137254901961 + 0.12549019607843 + 0.93725490196078 + 1 + + + 287aaa37-2f88-275a-edf4-7ea6bb82fb8d + + name + lolcat + color + + 0.69803921568627 + 0.13333333333333 + 0.13333333333333 + 1 + + + 806a8249-e235-f051-ac4c-0a58b570f1c1 + + name + Luna + color + + 0.43921568627451 + 0.72156862745098 + 1 + 1 + + + d64bf2e9-651f-0b6e-9e8f-4311d42287e3 + + name + Pie_Viewer + color + + 0.49803921568627 + 0.24705882352941 + 1 + 1 + + + 29705410-bcdf-bfd5-e811-5fca794dfbc1 + + name + HippoMeow + color + + 0.2 + 0.95686274509804 + 1 + 1 + + + e8dd2ab3-e074-710c-bac9-e80790990bff + + name + Combat Cubed + color + + 0.49411764705882 + 0.5921568627451 + 0.68235294117647 + 1 + + + b8c99aa0-6e82-0a84-3fc9-f73dc89471c2 + + name + ProlapsedPussyLife + color + + 0.66666666666667 + 0 + 0.6 + 1 + + + ffb65745-2120-e248-33e0-13dd9166b3ba + + name + TWH + color + + 1 + 0.12941176470588 + 0.12941176470588 + 1 + + evil + true + + b33b69ae-6b6c-b395-0175-ce76a871173b + + name + Nicholas + color + + 0.4 + 0.26666666666667 + 1 + 1 + + + af8c86bd-c377-c331-7476-58abeb7af8fc + + name + The Sorcerer + color + + 0.54117647058824 + 0.16862745098039 + 0.88627450980392 + 1 + + + 049af712-22c9-b2c4-50c7-90a9f1d1e5ef + + name + GNR + color + + 0.90196078431373 + 0.90196078431373 + 0.90196078431373 + 1 + + + 9ee02f6b-c244-75d4-1737-da8afb9d8d52 + + name + Hacked + color + + 0.93333333333333 + 0.93333333333333 + 1 + 1 + + + ed943d3f-7a29-8339-11b9-cd0c06a1241b + + name + /yiff/ + color + + 0.47843137254902 + 0.47843137254902 + 0.47843137254902 + 1 + + + 4ca51a79-41c0-91ec-7c58-a5195951bda2 + + name + Horny Thel + color + + 1 + 0.27058823529412 + 0 + 1 + + + 8cc85294-c3d9-8f9f-e507-c324ef49786e + + name + IncognitoLife + color + + 0 + 0 + 0 + 1 + + + 91144252-196e-bac9-3737-92752eee612d + + name + Canine + color + + 0.87058823529412 + 0.85882352941176 + 1 + 1 + + + 9995490f-b248-46f2-91ed-910289676f99 + + name + $ + color + + 0.25490196078431 + 0.25490196078431 + 0.25490196078431 + 1 + + + 745ac6b7-5b03-450d-6b01-577da127d7d2 + + name + Zidonuke + color + + 0 + 0 + 0.58823529411765 + 1 + + + d2fd7988-786f-40bc-54cb-c2ad557a639d + + name + Firestorm + color + + 0.94117647058824 + 0 + 0 + 1 + + + bb7fba3a-e7e0-14d6-b1ae-ce43f67745ab + + name + Apple Life + color + + 0 + 1 + 0.003921568627451 + 1 + + + c3e958f3-cfb5-9e8b-edb7-d12d5c0623d5 + + name + Winky + color + + 0.26274509803922 + 0.43137254901961 + 0.93333333333333 + 1 + + + 54d93609-1392-2a93-255c-a9dd429ecca5 + + name + Emergence + color + + 0.8156862745098 + 0 + 0 + 1 + + + 57f9da7c-0323-c412-58be-80b0441b887e + + name + Neon Glow + color + + 0.28235294117647 + 0.25490196078431 + 0.90980392156863 + 1 + + + 481a055f-36b5-af82-ac49-24709f013e50 + + name + Nano + color + + 0.70588235294118 + 0.84705882352941 + 0 + 1 + + + f25263b7-6167-4f34-a4ef-af65213b2e39 + + name + Singularity + color + + 0.70588235294118 + 0.7843137254902 + 0.7843137254902 + 1 + + + 734bae36-a197-b087-ee2d-a098d58fed55 + + name + Moreland Grove + color + + 1 + 0.49803921568627 + 0.49803921568627 + 1 + + + 6c622b79-b49d-b5da-e4d1-2f45ecec6106 + + name + Volt Viewer + color + + 1 + 1 + 0 + 1 + + + f8551a21-c960-5132-366a-f55ea63d97c3 + + name + Hacker + color + + 0.64313725490196 + 0.64313725490196 + 0.64313725490196 + 1 + + + 4e6c4027-9bbd-2dc5-2c00-c55a08fd49d1 + + name + DOWN SYNDROME + color + + 0.082352941176471 + 0.074509803921569 + 0.074509803921569 + 1 + + + 2b459a3b-5420-21a1-7dda-eccf02de6c37 + + name + Sun + color + + 0.25490196078431 + 0.36862745098039 + 0.52549019607843 + 1 + + + af22a7af-a3f9-b4e4-79de-3d9f4653f9e3 + + name + Foxy! + color + + 0.74509803921569 + 0.23529411764706 + 0.19607843137255 + 1 + + + 4b84e182-f0cc-d8da-94c8-25b59c4e4b99 + + name + Deus Ex Machina + color + + 0.98039215686275 + 0.54901960784314 + 0 + 1 + + + 01f13da6-fd61-82be-5a8b-68f2d165d8cd + + name + Smilodon + color + + 1 + 0.50196078431373 + 0 + 1 + + + 4b6f6b75-bf77-d1ff-0000-000000000000 + + name + Kokua + color + + 0.74901960784314 + 0.46666666666667 + 0.8078431372549 + 1 + + + 9a4d13d4-b36b-ff89-715b-9b53091c1473 + + name + SuperLife + color + + 0.88235294117647 + 0.88235294117647 + 0 + 1 + + + bdef8fc2-df54-fa80-757a-f7f346bbcf77 + + name + KoreDEV + color + + 0.54509803921569 + 0.27058823529412 + 0.074509803921569 + 1 + + + d0770263-aec5-6a26-f987-37c14e8f6523 + + name + HXO-Life + color + + 0 + 0 + 0.88235294117647 + 1 + + evil + true + + 1a1d86b2-edda-aa01-6e23-5b0cc7c2fe35 + + name + S3aian + color + + 0.047058823529412 + 0.003921568627451 + 0.88235294117647 + 1 + + + 3386a955-641c-1113-18e7-d4a5165a62bd + + name + StreetLife + color + + 0.54509803921569 + 0.54509803921569 + 0.51372549019608 + 1 + + + 14ae222f-cf97-fcff-6b90-21593d824dbd + + name + FuckLife + color + + 0.03921568627451 + 0.015686274509804 + 0.07843137254902 + 1 + + + b2848bed-38b3-3d6b-6ebe-7b4cb7d4994a + + name + KoreDEV-Ghost + color + + 0.03921568627451 + 0.19607843137255 + 0.07843137254902 + 1 + + + c58fca06-33b3-827d-d81c-a886a631affc + + name + Whale + color + + 1 + 0.61176470588235 + 0 + 1 + + + a1057672-e67b-7b40-118c-4e6898457dcb + + name + TeeLife + color + + 0.35294117647059 + 0 + 0.003921568627451 + 1 + + + f709044d-3f7e-3d94-6c40-17e9d456d35a + + name + God Proxy + color + + 0 + 0.86666666666667 + 0 + 1 + + + 0b6bc011-15c7-721d-f4c9-cdbaf3448dba + + name + MoonBot + color + + 0.58823529411765 + 0.15686274509804 + 0.90196078431373 + 1 + + + f40db76a-f6fc-449f-a6e8-47e1484fa294 + + name + JoinOurHomoMafia + color + + 1 + 0.31372549019608 + 0.65882352941176 + 1 + + + 2d02f0a7-48a0-46b3-944f-6a0a7523aaf6 + + name + HomoLife + color + + 0.85882352941176 + 0.035294117647059 + 0.43137254901961 + 1 + + + 3f23c201-e73a-4b86-b294-5fef9919dc23 + + name + Shotta + color + + 0 + 0.50196078431373 + 1 + 1 + + + c1d1a634-7d1f-70ac-513e-471c3a81d01b + + name + c1Tanzanite + color + + 0.54509803921569 + 0.035294117647059 + 0.96470588235294 + 1 + + + 397554b9-3e2f-4255-5fde-76f93e71295b + + name + Genesis + color + + 0.74901960784314 + 0.74901960784314 + 0.74901960784314 + 1 + + + e5a99018-4886-d48d-4793-54514f3c5a7b + + name + MarzWorld + color + + 0.82745098039216 + 0.82745098039216 + 0.82745098039216 + 1 + + + 869e0c1a-a2d9-4b92-bd70-5044d6bd2284 + + name + Bluebird + color + + 0.019607843137255 + 0.58823529411765 + 0.9843137254902 + 1 + + + 8cdf6c66-2f8f-1aa9-f8ee-0493acf90328 + + name + Nexus + color + + 0.4078431372549 + 0.13333333333333 + 0.54509803921569 + 1 + + + 1fb9ce5c-bb36-a0c1-72b5-e4f3406c6d56 + + name + Lucid + color + + 0.67843137254902 + 0.98823529411765 + 0.97254901960784 + 1 + + + 6043a54c-b320-523a-ed15-a8fdd2ebc923 + + name + Blunix + color + + 0.047058823529412 + 0 + 1 + 1 + + + 611300d4-9188-102f-9530-68c7f52dc17a + + name + C1501 + color + + 0.98039215686275 + 0.38039215686275 + 0.57647058823529 + 1 + + + e46e7c2b-1de3-5347-db43-42ee4e1f5bf2 + + name + Vos + color + + 0.70588235294118 + 0.70588235294118 + 0.70588235294118 + 1 + + + 697e702f-29e2-2a31-8dcd-b53f5c25a27c + + name + Milkshake + color + + 0.74509803921569 + 0.63137254901961 + 0.52549019607843 + 1 + + + ae4e92fb-023d-23ba-d060-3403f953ab1a + + name + Phoenix + color + + 0.99607843137255 + 0.56078431372549 + 0.65490196078431 + 1 + + + 5d9581af-d615-bc16-2667-2f04f8eeefe4 + + name + Phoenix + color + + 0.32941176470588 + 0.89411764705882 + 0.12156862745098 + 1 + + + 5f0e7c32-38c3-9214-01f0-fb16a5b40128 + + name + Phoenix + color + + 1 + 1 + 0.1843137254902 + 1 + + + e35f7d40-6071-4b29-9727-5647bdafb5d5 + + name + Phoenix + color + + 1 + 1 + 1 + 1 + + + e71b780e-1a57-400d-4649-959f69ec7d51 + + name + Phoenix + color + + 0.99607843137255 + 0.22745098039216 + 0.12156862745098 + 1 + + + 5bb6e4a6-8e24-7c92-be2e-91419bb0ebcb + + name + Phoenix + color + + 0.34901960784314 + 0.34901960784314 + 1 + 1 + + + e4117c3f-cc02-d537-665d-c31b8c11bb18 + + name + Emerald + color + + 1 + 0 + 1 + 1 + + + 8cf0577c-22d3-6a73-523c-15c0a90d6c27 + + name + Phoenix + color + + 0.72941176470588 + 0.36078431372549 + 0.65490196078431 + 1 + + + ddf41cfa-f5c5-0dee-3ed9-f3fb0adb1ead + + name + Phoenix + color + + 1 + 0 + 1 + 1 + + + dd0ccfa2-8124-b165-176d-f3dc08f4189e + + name + Phoenix + color + + 0.50196078431373 + 0 + 1 + 1 + + + c1c189f5-6dab-fc03-ea5a-f9f68f90b018 + + name + Phoenix + color + + 0.99607843137255 + 0.39607843137255 + 0.12156862745098 + 1 + + + bf33bd15-7020-cce1-3725-48923440b7ee + + name + Emerald + color + + 0.98039215686275 + 0.69019607843137 + 0.34117647058824 + 1 + + + 1e0948ab-706a-b309-434c-a694436a79be + + name + Emerald + color + + 1 + 1 + 1 + 1 + + + 072343d0-1ce9-0952-4106-5312af4a789a + + name + Emerald + color + + 0.99607843137255 + 0.56078431372549 + 0.65490196078431 + 1 + + + 1da8eb54-a70f-bd4a-77e5-c7b815c3b2a2 + + name + Emerald + color + + 0.99607843137255 + 0.22745098039216 + 0.12156862745098 + 1 + + + 4eb67510-0924-ebb1-50ca-8af5694cd267 + + name + Emerald + color + + 0.34901960784314 + 0.34901960784314 + 1 + 1 + + + e741e2bf-cf8c-191c-97f2-b2709a843dfc + + name + Emerald + color + + 0.99607843137255 + 0.39607843137255 + 0.12156862745098 + 1 + + + 8078ffb3-840c-d037-caf3-5cd02c2e7040 + + name + Emerald + color + + 1 + 1 + 0.1843137254902 + 1 + + + 602243f4-8fb1-ac00-d5bc-7ab50c4433b7 + + name + Emerald + color + + 0.50196078431373 + 0 + 1 + 1 + + + 0ae2f973-98c1-a4e8-9f4b-9db2044ab079 + + name + Emerald + color + + 0.72941176470588 + 0.36078431372549 + 0.65490196078431 + 1 + + + b748af88-58e2-995b-cf26-9486dea8e830 + + name + Radegast + color + + 0.56862 + 0.78431 + 1 + 1 + + + isComplete + true + + diff --git a/indra/newview/app_settings/windlight/days/Colder%20Tones.xml b/indra/newview/app_settings/windlight/days/Colder%20Tones.xml new file mode 100644 index 000000000..63d0b099e --- /dev/null +++ b/indra/newview/app_settings/windlight/days/Colder%20Tones.xml @@ -0,0 +1,28 @@ + + + + 0 + Midnight + + + 0.24999989569187164 + Purple + + + 0.49999979138374329 + Blue Midday + + + 0.74999970197677612 + Blizzard + + + 0.87499958276748657 + Ghost + + + 0.99999958276748657 + Midnight + + + diff --git a/indra/newview/app_settings/windlight/days/Dynamic%20Richness.xml b/indra/newview/app_settings/windlight/days/Dynamic%20Richness.xml new file mode 100644 index 000000000..f75b52e6e --- /dev/null +++ b/indra/newview/app_settings/windlight/days/Dynamic%20Richness.xml @@ -0,0 +1,32 @@ + + + + 0 + Night + + + 0.12499994784593582 + Blizzard + + + 0.24999989569187164 + Sunrise + + + 0.49999979138374329 + Midday 3 + + + 0.68749970197677612 + Pirate + + + 0.81249970197677612 + Coastal Sunset + + + 0.99999958276748657 + Midnight + + + diff --git a/indra/newview/app_settings/windlight/days/Pirate%27s%20Dream.xml b/indra/newview/app_settings/windlight/days/Pirate%27s%20Dream.xml new file mode 100644 index 000000000..6dc1ba9f4 --- /dev/null +++ b/indra/newview/app_settings/windlight/days/Pirate%27s%20Dream.xml @@ -0,0 +1,44 @@ + + + + 0 + A-12AM + + + 0.12499994784593582 + A-3AM + + + 0.22222213447093964 + Barcelona + + + 0.30208322405815125 + Sunrise + + + 0.37499985098838806 + Sailor's Delight + + + 0.53819423913955688 + Coastal Afternoon + + + 0.63194417953491211 + Pirate + + + 0.7048608660697937 + Desert Sunset + + + 0.74999970197677612 + Coastal Sunset + + + 0.87499958276748657 + Blizzard + + + diff --git a/indra/newview/app_settings/windlight/days/Psycho%20Strobe%21.xml b/indra/newview/app_settings/windlight/days/Psycho%20Strobe%21.xml new file mode 100644 index 000000000..302af5a9b --- /dev/null +++ b/indra/newview/app_settings/windlight/days/Psycho%20Strobe%21.xml @@ -0,0 +1,72 @@ + + + + 0 + Sheer Surreality + + + 0.062499973922967911 + A-12AM + + + 0.12499994784593582 + Sheer Surreality + + + 0.18749992549419403 + A-3AM + + + 0.24999989569187164 + Sheer Surreality + + + 0.31249985098838806 + A-6AM + + + 0.37499985098838806 + Sheer Surreality + + + 0.43749979138374329 + A-9AM + + + 0.49999979138374329 + Sheer Surreality + + + 0.5624997615814209 + A-12PM + + + 0.62499970197677612 + Sheer Surreality + + + 0.68749970197677612 + A-3PM + + + 0.74999970197677612 + Sheer Surreality + + + 0.81249970197677612 + A-6PM + + + 0.87499958276748657 + Sheer Surreality + + + 0.93749958276748657 + A-9PM + + + 0.99999958276748657 + Sheer Surreality + + + diff --git a/indra/newview/app_settings/windlight/days/Tropicalia.xml b/indra/newview/app_settings/windlight/days/Tropicalia.xml new file mode 100644 index 000000000..89a56d4a1 --- /dev/null +++ b/indra/newview/app_settings/windlight/days/Tropicalia.xml @@ -0,0 +1,32 @@ + + + + 0.062499973922967911 + Purple + + + 0.16666659712791443 + Funky Funky + + + 0.31249985098838806 + Sunrise + + + 0.49999979138374329 + Fine Day + + + 0.66666638851165771 + Desert Sunset + + + 0.74999970197677612 + Sailor's Delight + + + 0.95833295583724976 + Midnight + + + diff --git a/indra/newview/app_settings/windlight/days/Weird-O.xml b/indra/newview/app_settings/windlight/days/Weird-O.xml new file mode 100644 index 000000000..1e312f246 --- /dev/null +++ b/indra/newview/app_settings/windlight/days/Weird-O.xml @@ -0,0 +1,56 @@ + + + + 0 + Funky Funky + + + 0.13194438815116882 + Funky Funky Funky + + + 0.26041656732559204 + Gelatto + + + 0.40624985098838806 + Funky Funky Funky + + + 0.43749979138374329 + Ghost + + + 0.46874979138374329 + Gelatto + + + 0.5486108660697937 + Sheer Surreality + + + 0.6076386570930481 + Gelatto + + + 0.68055528402328491 + Ghost + + + 0.75694411993026733 + Sheer Surreality + + + 0.87847185134887695 + Gelatto + + + 0.91319411993026733 + Funky Funky Funky + + + 0.96527737379074097 + Funky Funky Funky + + + diff --git a/indra/newview/app_settings/windlight/skies/B5%2DShadowDancing.xml b/indra/newview/app_settings/windlight/skies/B5%2DShadowDancing.xml new file mode 100644 index 000000000..a1a8f026d --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/B5%2DShadowDancing.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.26999998092651367 + 0.26999998092651367 + 0.26999998092651367 + 0.08999999612569809 + + blue_density + + 0.37999999523162842 + 0.37999999523162842 + 0.37999999523162842 + 0.18999999761581421 + + blue_horizon + + 0.69999998807907104 + 0.69999998807907104 + 0.69999998807907104 + 0.34999999403953552 + + cloud_color + + 0 + 0 + 0 + 0 + + cloud_pos_density1 + + 0.2800000011920929 + 0.59999996423721313 + 1 + 1 + + cloud_pos_density2 + + 0 + 0 + 0 + 1 + + cloud_scale + + 0.2199999988079071 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.069999776780605 + 9.9299997761845589 + + cloud_shadow + + 0.22999998927116394 + 0 + 0 + 1 + + density_multiplier + + 0.00039999998989515007 + 0 + 0 + 1 + + distance_multiplier + + 8.6000003814697266 + 0 + 0 + 1 + + east_angle + 2.7017695903778076 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.5099999904632568 + 0 + 0 + 1 + + glow + + 13.600001335144043 + 0.0010000000474974513 + -0.39999997615814209 + 1 + + haze_density + + 0.81999999284744263 + 0 + 0 + 1 + + haze_horizon + + 0.59999996423721313 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.42413315176963806 + 0.087851203978061676 + -0.90132862329483032 + 0 + + max_y + + 2562 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 0.74000000953674316 + sun_angle + 0.087964601814746857 + sunlight_color + + 1.1999999284744263 + 1.1999999284744263 + 1.1999999284744263 + 0.39999997615814209 + + + diff --git a/indra/newview/app_settings/windlight/skies/Bryn%20Oh%27s%20Annas%20Many%20Murders.xml b/indra/newview/app_settings/windlight/skies/Bryn%20Oh%27s%20Annas%20Many%20Murders.xml new file mode 100644 index 000000000..f585ddb6d --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Bryn%20Oh%27s%20Annas%20Many%20Murders.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.21000000834465027 + 0.08999999612569809 + 0 + 0.070000000298023224 + + blue_density + + 0.17999999225139618 + 0.19999998807907104 + 0.14000000059604645 + 0.2199999988079071 + + blue_horizon + + 0.29999998211860657 + 0.17999999225139618 + 0.19999998807907104 + 0.29999998211860657 + + cloud_color + + 0.61000001430511475 + 0.53999996185302734 + 0.56000000238418579 + 0.61000001430511475 + + cloud_pos_density1 + + 0.44999998807907104 + 0.55000001192092896 + 0.059999998658895493 + 1 + + cloud_pos_density2 + + 0.53999996185302734 + 0.47999998927116394 + 0.039999999105930328 + 1 + + cloud_scale + + 0.18000000715255737 + 0 + 0 + 1 + + cloud_scroll_rate + + 12.989999771118164 + 10.510000228881836 + + cloud_shadow + + 0.63999998569488525 + 0 + 0 + 1 + + density_multiplier + + 0.00020999999833293259 + 0 + 0 + 1 + + distance_multiplier + + 23 + 0 + 0 + 1 + + east_angle + 2.0106194019317627 + enable_cloud_scroll + + 1 + 1 + + gamma + + 0.74000000953674316 + 0 + 0 + 1 + + glow + + 20 + 0.0010000000474974513 + -0 + 1 + + haze_density + + 4 + 0 + 0 + 1 + + haze_horizon + + 0.17000000178813934 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.90482699871063232 + 1.7484555314695172e-007 + -0.42577937245368958 + 0 + + max_y + + 322 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 0 + sun_angle + 6.2831854820251465 + sunlight_color + + 0.65999996662139893 + 0.53999996185302734 + 0.59999996423721313 + 0.65999996662139893 + + + diff --git a/indra/newview/app_settings/windlight/skies/Bryn%20Oh%27s%20BLUNIVERSE.xml b/indra/newview/app_settings/windlight/skies/Bryn%20Oh%27s%20BLUNIVERSE.xml new file mode 100644 index 000000000..8c2082e43 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Bryn%20Oh%27s%20BLUNIVERSE.xml @@ -0,0 +1,141 @@ + + + ambient + + 0 + 0 + 0.14999999105930328 + 0.14999999105930328 + + blue_density + + 0 + 0.37999999523162842 + 0.56000000238418579 + 0.56000000238418579 + + blue_horizon + + 0.45999997854232788 + 0.37999999523162842 + 0.57999998331069946 + 0.57999998331069946 + + cloud_color + + 0.11999999731779099 + 0.10999999940395355 + 0.11999999731779099 + 0.11999999731779099 + + cloud_pos_density1 + + 0.69999998807907104 + 0.34999999403953552 + 0.79999995231628418 + 1 + + cloud_pos_density2 + + 0.29999998211860657 + 0.17000000178813934 + 0.17000000178813934 + 1 + + cloud_scale + + 0.39999997615814209 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.359999656677246 + 10.029999732971191 + + cloud_shadow + + 0.29999998211860657 + 0 + 0 + 1 + + density_multiplier + + 9.9999997473787516e-005 + 0 + 0 + 1 + + distance_multiplier + + 37.200000762939453 + 0 + 0 + 1 + + east_angle + 1.1938052177429199 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.0099999904632568 + 0 + 0 + 1 + + glow + + 3.8000011444091797 + 0.0010000000474974513 + -1.5999999046325684 + 1 + + haze_density + + 1.2699999809265137 + 0 + 0 + 1 + + haze_horizon + + 0.35999998450279236 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0.76900023221969604 + 0.56208312511444092 + -0.30446872115135193 + 0 + + max_y + + 349 + 0 + 0 + 1 + + preset_num + 24 + star_brightness + 2 + sun_angle + 2.5446903705596924 + sunlight_color + + 1.4099999666213989 + 1.6500000953674316 + 2.0399999618530273 + 2.0399999618530273 + + + diff --git a/indra/newview/app_settings/windlight/skies/Bryn%20Oh%27s%20Immersiva%20Grey%20Dust.xml b/indra/newview/app_settings/windlight/skies/Bryn%20Oh%27s%20Immersiva%20Grey%20Dust.xml new file mode 100644 index 000000000..2a07b39d0 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Bryn%20Oh%27s%20Immersiva%20Grey%20Dust.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.32999998331069946 + 0.23999999463558197 + 0.029999999329447746 + 0.32999998331069946 + + blue_density + + 0.15999999642372131 + 0.15999999642372131 + 0.47999998927116394 + 0.47999998927116394 + + blue_horizon + + 0.19999998807907104 + 0.19999998807907104 + 0.43999999761581421 + 0.43999999761581421 + + cloud_color + + 0.48999997973442078 + 0.50999999046325684 + 0.64999997615814209 + 0.64999997615814209 + + cloud_pos_density1 + + 0.48999997973442078 + 0.50999999046325684 + 0.2199999988079071 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.039999999105930328 + 1 + + cloud_scale + + 0.11999999731779099 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.659999847412109 + 20 + + cloud_shadow + + 0.70999997854232788 + 0 + 0 + 1 + + density_multiplier + + 0.00018999999156221747 + 0 + 0 + 1 + + distance_multiplier + + 24.30000114440918 + 0 + 0 + 1 + + east_angle + 2.3876104354858398 + enable_cloud_scroll + + 1 + 0 + + gamma + + 0.94999998807907104 + 0 + 0 + 1 + + glow + + 20 + 0.0010000000474974513 + -0.29999998211860657 + 1 + + haze_density + + 3.7799999713897705 + 0 + 0 + 1 + + haze_horizon + + 0.15999999642372131 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0.64833343029022217 + 0.32094338536262512 + 0.69040501117706299 + 0 + + max_y + + 376 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 0 + sun_angle + 2.8148672580718994 + sunlight_color + + 0.75 + 0.71999996900558472 + 0.77999997138977051 + 0.77999997138977051 + + + diff --git a/indra/newview/app_settings/windlight/skies/Bryn%20Oh%27s%20Mayfly.xml b/indra/newview/app_settings/windlight/skies/Bryn%20Oh%27s%20Mayfly.xml new file mode 100644 index 000000000..272d1e041 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Bryn%20Oh%27s%20Mayfly.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.21000000834465027 + 0.23999999463558197 + 0.32999998331069946 + 0.10999999940395355 + + blue_density + + 0.15999999642372131 + 0.43999999761581421 + 0.89999997615814209 + 0.89999997615814209 + + blue_horizon + + 0 + 0 + 0.059999998658895493 + 0.029999999329447746 + + cloud_color + + 0.29999998211860657 + 0.31999999284744263 + 0.22999998927116394 + 0.31999999284744263 + + cloud_pos_density1 + + 0.98999994993209839 + 1 + 1 + 1 + + cloud_pos_density2 + + 1.6884100437164307 + 0.52609699964523315 + 0.125 + 1 + + cloud_scale + + 0.15000000596046448 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.359999656677246 + 10.219999313354492 + + cloud_shadow + + 0.42999997735023499 + 0 + 0 + 1 + + density_multiplier + + 0.00052000000141561031 + 0 + 0 + 1 + + distance_multiplier + + 3.4000000953674316 + 0 + 0 + 1 + + east_angle + 4.8380527496337891 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1 + 0 + 0 + 1 + + glow + + 7.7999997138977051 + 0.0010000000474974513 + -0.59999996423721313 + 1 + + haze_density + + 1.1100000143051147 + 0 + 0 + 1 + + haze_horizon + + 0.12999999523162842 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.98646044731140137 + 0.10661106556653976 + -0.12461899220943451 + 0 + + max_y + + 591 + 0 + 0 + 1 + + preset_num + 22 + star_brightness + 0.71999996900558472 + sun_angle + 3.0347785949707031 + sunlight_color + + 1.5 + 1.5299999713897705 + 2.8499999046325684 + 0.94999998807907104 + + + diff --git a/indra/newview/app_settings/windlight/skies/Fairy%20blue%20%28Paulina%29.xml b/indra/newview/app_settings/windlight/skies/Fairy%20blue%20%28Paulina%29.xml new file mode 100644 index 000000000..a426aac29 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Fairy%20blue%20%28Paulina%29.xml @@ -0,0 +1,141 @@ + + + ambient + + 1.2300000190734863 + 1.2300000190734863 + 1.1914535760879517 + 0.40999999642372131 + + blue_density + + 0.2199999988079071 + 0.57999998331069946 + 0.55851858854293823 + 0.68000000715255737 + + blue_horizon + + 0.2159720099190805 + 0.36269319055529792 + 0.41333344578742803 + 0.62444435060024084 + + cloud_color + + 0.22616269560725816 + 0.22616269560725816 + 0.22616269560725816 + 0.99997991561308353 + + cloud_pos_density1 + + 0.4699999988079071 + 0.5 + 0.88000017954328535 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.41999998605913369 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.499400261264498 + 10.010999906567616 + + cloud_shadow + + 0.22999998927116394 + 0 + 0 + 1 + + density_multiplier + + 0.00011000000085914508 + 0 + 0 + 1 + + distance_multiplier + + 16.200000762939453 + 0 + 0 + 1 + + east_angle + 6.2831854820251465 + enable_cloud_scroll + + 0 + 0 + + gamma + + 1.8899999856948853 + 0 + 0 + 1 + + glow + + 0.19999980926513672 + 0.0010000000474974513 + -2.2000000476837158 + 1 + + haze_density + + 1.8899999856948853 + 0 + 0 + 1 + + haze_horizon + + 0 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 1.2670240323586768e-007 + 0.68911367654800415 + -0.72465324401855469 + 0 + + max_y + + 403 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 1.2999999523162842 + sun_angle + 2.3813273906707764 + sunlight_color + + 0.52803641557693481 + 0.52897685766220093 + 0.56999999284744263 + 0.18999999761581421 + + + diff --git a/indra/newview/app_settings/windlight/skies/Fairy%20dark%20blue%20%28Paulina%29.xml b/indra/newview/app_settings/windlight/skies/Fairy%20dark%20blue%20%28Paulina%29.xml new file mode 100644 index 000000000..4fbdfe121 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Fairy%20dark%20blue%20%28Paulina%29.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.58604651689529419 + 0.7813953161239624 + 1.0499999523162842 + 0.34999999403953552 + + blue_density + + 0.43999999761581421 + 0.43999999761581421 + 0.43999999761581421 + 0.2199999988079071 + + blue_horizon + + 0.2159720099190805 + 0.36269319055529792 + 0.41333344578742803 + 0.62444435060024084 + + cloud_color + + 0.22616269560725816 + 0.22616269560725816 + 0.22616269560725816 + 0.99997991561308353 + + cloud_pos_density1 + + 0.4699999988079071 + 0.5 + 0.88000017954328535 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.41999998605913369 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.499400261264498 + 10.010999906567616 + + cloud_shadow + + 0.22999998927116394 + 0 + 0 + 1 + + density_multiplier + + 0.0002899999963119626 + 0 + 0 + 1 + + distance_multiplier + + 16.200000762939453 + 0 + 0 + 1 + + east_angle + 1.1938052177429199 + enable_cloud_scroll + + 0 + 0 + + gamma + + 1.6200000047683716 + 0 + 0 + 1 + + glow + + 0.19999980926513672 + 0.0010000000474974513 + -2.2000000476837158 + 1 + + haze_density + + 1.8899999856948853 + 0 + 0 + 1 + + haze_horizon + + 0 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.9034002423286438 + 0.23649945855140686 + 0.35768145322799683 + 1 + + max_y + + 1047 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 1.2999999523162842 + sun_angle + 3.3803541660308838 + sunlight_color + + 2.3344762325286865 + 2.3386342525482178 + 2.5199999809265137 + 0.8399999737739563 + + + diff --git a/indra/newview/app_settings/windlight/skies/Fairy%20light%20pink%20%28Paulina%29.xml b/indra/newview/app_settings/windlight/skies/Fairy%20light%20pink%20%28Paulina%29.xml new file mode 100644 index 000000000..a3d67ac73 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Fairy%20light%20pink%20%28Paulina%29.xml @@ -0,0 +1,141 @@ + + + ambient + + 1.7400000095367432 + 1.4500001668930054 + 1.353333592414856 + 0.57999998331069946 + + blue_density + + 0.17032256722450256 + 0.47999998927116394 + 0.3449999988079071 + 0.23999999463558197 + + blue_horizon + + 0.93999999761581421 + 0.2199999988079071 + 0.25999999046325684 + 0.93999999761581421 + + cloud_color + + 0.22616269560725816 + 0.22616269560725816 + 0.22616269560725816 + 0.99997991561308353 + + cloud_pos_density1 + + 0.4699999988079071 + 0.5 + 0.88000017954328535 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.41999998605913369 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.499400261264498 + 10.010999906567616 + + cloud_shadow + + 0.22999998927116394 + 0 + 0 + 1 + + density_multiplier + + 0.00089999998454004526 + 0 + 0 + 1 + + distance_multiplier + + 4.0999999046325684 + 0 + 0 + 1 + + east_angle + 4.6495571136474609 + enable_cloud_scroll + + 0 + 0 + + gamma + + 1.2799999713897705 + 0 + 0 + 1 + + glow + + 0.19999980926513672 + 0.0010000000474974513 + -2.2000000476837158 + 1 + + haze_density + + 0.2199999988079071 + 0 + 0 + 1 + + haze_horizon + + 0.08999999612569809 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0.72322285175323486 + 0.68911415338516235 + -0.045501336455345154 + 1 + + max_y + + 4000 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 2 + sun_angle + 3.9018585681915283 + sunlight_color + + 1.9521123170852661 + 2.0000483989715576 + 2.0999999046325684 + 0.69999998807907104 + + + diff --git a/indra/newview/app_settings/windlight/skies/Fairy%20warm%20pinks%20%28Paulina%29.xml b/indra/newview/app_settings/windlight/skies/Fairy%20warm%20pinks%20%28Paulina%29.xml new file mode 100644 index 000000000..72d3345c4 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Fairy%20warm%20pinks%20%28Paulina%29.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.68999993801116943 + 0.44999998807907104 + 0.42000001668930054 + 0.68999993801116943 + + blue_density + + 0.25714284181594849 + 0.71428567171096802 + 1 + 0.5 + + blue_horizon + + 0.56000000238418579 + 0.17999999225139618 + 0.25999999046325684 + 0.56000000238418579 + + cloud_color + + 0.22616269560725816 + 0.22616269560725816 + 0.22616269560725816 + 0.99997991561308353 + + cloud_pos_density1 + + 0.4699999988079071 + 0.5 + 0.88000017954328535 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.41999998605913369 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.499400261264498 + 10.010999906567616 + + cloud_shadow + + 0.22999998927116394 + 0 + 0 + 1 + + density_multiplier + + 0.00042999998549930751 + 0 + 0 + 1 + + distance_multiplier + + 9.5 + 0 + 0 + 1 + + east_angle + 0.81681406497955322 + enable_cloud_scroll + + 0 + 0 + + gamma + + 1.8199999332427979 + 0 + 0 + 1 + + glow + + 0.19999980926513672 + 0.0010000000474974513 + -2.2000000476837158 + 1 + + haze_density + + 0.31999999284744263 + 0 + 0 + 1 + + haze_horizon + + 0.029999999329447746 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0.63206756114959717 + 0.49818456172943115 + -0.59355098009109497 + 1 + + max_y + + 4000 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 2 + sun_angle + 5.7616815567016602 + sunlight_color + + 1.7400000095367432 + 1.5899999141693115 + 0.71999996900558472 + 1.7400000095367432 + + + diff --git a/indra/newview/app_settings/windlight/skies/Midday.xml b/indra/newview/app_settings/windlight/skies/Midday.xml new file mode 100644 index 000000000..119b3e141 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Midday.xml @@ -0,0 +1,141 @@ + + + ambient + + 1.0499999523162842 + 1.0499999523162842 + 1.0499999523162842 + 0.34999999403953552 + + blue_density + + 0.24475815892219543 + 0.44872328639030457 + 0.75999999046325684 + 0.37999999523162842 + + blue_horizon + + 0.49548381567001343 + 0.49548381567001343 + 0.63999998569488525 + 0.31999999284744263 + + cloud_color + + 0.40999999642372131 + 0.40999999642372131 + 0.40999999642372131 + 0.40999999642372131 + + cloud_pos_density1 + + 1.6884100437164307 + 0.52609699964523315 + 1 + 1 + + cloud_pos_density2 + + 1.6884100437164307 + 0.52609699964523315 + 0.125 + 1 + + cloud_scale + + 0.41999998688697815 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.199999809265137 + 10.01099967956543 + + cloud_shadow + + 0.26999998092651367 + 0 + 0 + 1 + + density_multiplier + + 0.00017999998817685992 + 0 + 0 + 1 + + distance_multiplier + + 0.80000001192092896 + 0 + 0 + 1 + + east_angle + 0 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1 + 0 + 0 + 1 + + glow + + 5 + 0.0010000000474974513 + -0.47999998927116394 + 1 + + haze_density + + 0.69999998807907104 + 0 + 0 + 1 + + haze_horizon + + 0.18999999761581421 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0 + 1 + -4.3711388286737929e-008 + 0 + + max_y + + 1605 + 0 + 0 + 1 + + preset_num + 22 + star_brightness + 0 + sun_angle + 1.5707963705062866 + sunlight_color + + 0.7342105507850647 + 0.78157895803451538 + 0.89999997615814209 + 0.29999998211860657 + + + diff --git a/indra/newview/app_settings/windlight/skies/Midnight.xml b/indra/newview/app_settings/windlight/skies/Midnight.xml new file mode 100644 index 000000000..0aba31214 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Midnight.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.20405027270317078 + 0.24246673285961151 + 0.32999998331069946 + 0.10999999940395355 + + blue_density + + 0.44999998807907104 + 0.44999998807907104 + 0.44999998807907104 + 1 + + blue_horizon + + 0.23999999463558197 + 0.23999999463558197 + 0.23999999463558197 + 1 + + cloud_color + + 0.22615399956703186 + 0.22615399956703186 + 0.22615399956703186 + 1 + + cloud_pos_density1 + + 1.6884100437164307 + 0.52609699964523315 + 0.87999999523162842 + 1 + + cloud_pos_density2 + + 1.6884100437164307 + 0.52609699964523315 + 0.125 + 1 + + cloud_scale + + 0.41999998688697815 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.26999998092651367 + 0 + 0 + 1 + + density_multiplier + + 0.00030000001424923539 + 0 + 0 + 1 + + distance_multiplier + + 0 + 0 + 0 + 1 + + east_angle + 0 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1 + 0 + 0 + 1 + + glow + + 5 + 0.0010000000474974513 + -0.47999998927116394 + 1 + + haze_density + + 4 + 0 + 0 + 1 + + haze_horizon + + 0 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0 + 1 + -4.8876205482883961e-007 + 1 + + max_y + + 906.20001220703125 + 0 + 0 + 1 + + preset_num + 22 + star_brightness + 2 + sun_angle + 4.7123894691467285 + sunlight_color + + 0.34876692295074463 + 0.35574248433113098 + 0.65999996662139893 + 0.2199999988079071 + + + diff --git a/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Black%20fog%201.xml b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Black%20fog%201.xml new file mode 100644 index 000000000..4dee8354e --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Black%20fog%201.xml @@ -0,0 +1,141 @@ + + + ambient + + 0 + 0 + 0 + 0 + + blue_density + + 0.5 + 0.5 + 0.5 + 0.25 + + blue_horizon + + 0.56000000238418579 + 0.56000000238418579 + 0.56000000238418579 + 0.2800000011920929 + + cloud_color + + 0.22617273092134837 + 0.2261830306064212 + 0.22618354559006093 + 1 + + cloud_pos_density1 + + 0.5 + 0.5 + 1 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.12499716758729562 + 1 + + cloud_scale + + 0.22999998927116394 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.499370784775238 + 10.011009025563908 + + cloud_shadow + + 0.26999998092651367 + 0 + 0 + 1 + + density_multiplier + + 0.00089999998454004526 + 0 + 0 + 1 + + distance_multiplier + + 100 + 0 + 0 + 1 + + east_angle + 0 + enable_cloud_scroll + + 0 + 0 + + gamma + + 0.19999998807907104 + 0 + 0 + 1 + + glow + + 20 + 0.0010000000474974513 + -2.5 + 1 + + haze_density + + 0 + 0 + 0 + 1 + + haze_horizon + + 0 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0 + 1 + -4.3711388286737929e-008 + 0 + + max_y + + 4000 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 2 + sun_angle + 1.5707963705062866 + sunlight_color + + 3 + 3 + 3 + 1 + + + diff --git a/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Black%20fog%202.xml b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Black%20fog%202.xml new file mode 100644 index 000000000..ef93fdc08 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Black%20fog%202.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.29999998211860657 + 0.29999998211860657 + 0.29999998211860657 + 0.099999994039535522 + + blue_density + + 0.5 + 0.5 + 0.5 + 0.25 + + blue_horizon + + 0.56000000238418579 + 0.56000000238418579 + 0.56000000238418579 + 0.2800000011920929 + + cloud_color + + 0 + 0 + 0 + 0 + + cloud_pos_density1 + + 0 + 0 + 0 + 1 + + cloud_pos_density2 + + 0 + 0 + 0 + 1 + + cloud_scale + + 0.0099999997764825821 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.499370784775238 + 10.011009025563908 + + cloud_shadow + + 0 + 0 + 0 + 1 + + density_multiplier + + 0.00089999998454004526 + 0 + 0 + 1 + + distance_multiplier + + 100 + 0 + 0 + 1 + + east_angle + 0 + enable_cloud_scroll + + 0 + 0 + + gamma + + 0.19999998807907104 + 0 + 0 + 1 + + glow + + 0.19999980926513672 + 0.0010000000474974513 + -2.5 + 1 + + haze_density + + 0 + 0 + 0 + 1 + + haze_horizon + + 0 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0 + 1 + -4.3711388286737929e-008 + 0 + + max_y + + 4000 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 0 + sun_angle + 1.5707963705062866 + sunlight_color + + 3 + 3 + 3 + 1 + + + diff --git a/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Drawing%20blue.xml b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Drawing%20blue.xml new file mode 100644 index 000000000..69a23e7f9 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Drawing%20blue.xml @@ -0,0 +1,141 @@ + + + ambient + + 0 + 0 + 3 + 3 + + blue_density + + 0 + 0 + 2 + 2 + + blue_horizon + + 0 + 0 + 2 + 2 + + cloud_color + + 0 + 1 + 0 + 1 + + cloud_pos_density1 + + 1 + 1 + 1 + 1 + + cloud_pos_density2 + + 1 + 1 + 1 + 1 + + cloud_scale + + 1 + 0 + 0 + 1 + + cloud_scroll_rate + + 9.8000001907348633 + 8.9899997711181641 + + cloud_shadow + + 0 + 0 + 0 + 1 + + density_multiplier + + 0.00026999998954124749 + 0 + 0 + 1 + + distance_multiplier + + 100 + 0 + 0 + 1 + + east_angle + 2.6389377117156982 + enable_cloud_scroll + + 0 + 0 + + gamma + + 0.0099999997764825821 + 0 + 0 + 1 + + glow + + 20 + 0.0010000000474974513 + 0 + 1 + + haze_density + + 0.0099999997764825821 + 0 + 0 + 1 + + haze_horizon + + 1 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0.48175370693206787 + 0 + 0.87630659341812134 + 0 + + max_y + + 1 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 0 + sun_angle + 3.2107079029083252 + sunlight_color + + 0 + 0 + 3 + 3 + + + diff --git a/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Drawing%20extreme.xml b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Drawing%20extreme.xml new file mode 100644 index 000000000..09d9c3546 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Drawing%20extreme.xml @@ -0,0 +1,141 @@ + + + ambient + + 3 + 3 + 3 + 3 + + blue_density + + 2 + 2 + 2 + 2 + + blue_horizon + + 2 + 2 + 2 + 2 + + cloud_color + + 1 + 1 + 1 + 1 + + cloud_pos_density1 + + 1 + 1 + 1 + 1 + + cloud_pos_density2 + + 1 + 1 + 1 + 1 + + cloud_scale + + 1 + 0 + 0 + 1 + + cloud_scroll_rate + + 9.8000001907348633 + 8.9899997711181641 + + cloud_shadow + + 0 + 0 + 0 + 1 + + density_multiplier + + 0.00089999998454004526 + 0 + 0 + 1 + + distance_multiplier + + 100 + 0 + 0 + 1 + + east_angle + 3.1415927410125732 + enable_cloud_scroll + + 0 + 0 + + gamma + + 0.0099999997764825821 + 0 + 0 + 1 + + glow + + 0.19999980926513672 + 0.0010000000474974513 + -2.5 + 1 + + haze_density + + 0 + 0 + 0 + 1 + + haze_horizon + + 0 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -8.7422776573475858e-008 + 0 + 1 + 0 + + max_y + + 1 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 0 + sun_angle + 3.1415927410125732 + sunlight_color + + 3 + 3 + 3 + 3 + + + diff --git a/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Drawing%20green.xml b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Drawing%20green.xml new file mode 100644 index 000000000..9343abe71 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Drawing%20green.xml @@ -0,0 +1,141 @@ + + + ambient + + 0 + 3 + 0 + 3 + + blue_density + + 0 + 2 + 0 + 2 + + blue_horizon + + 0 + 2 + 0 + 2 + + cloud_color + + 0 + 1 + 0 + 1 + + cloud_pos_density1 + + 1 + 1 + 1 + 1 + + cloud_pos_density2 + + 1 + 1 + 1 + 1 + + cloud_scale + + 1 + 0 + 0 + 1 + + cloud_scroll_rate + + 9.8000001907348633 + 8.9899997711181641 + + cloud_shadow + + 0 + 0 + 0 + 1 + + density_multiplier + + 0.00026999998954124749 + 0 + 0 + 1 + + distance_multiplier + + 100 + 0 + 0 + 1 + + east_angle + 2.6389377117156982 + enable_cloud_scroll + + 0 + 0 + + gamma + + 0.0099999997764825821 + 0 + 0 + 1 + + glow + + 20 + 0.0010000000474974513 + 0 + 1 + + haze_density + + 0.0099999997764825821 + 0 + 0 + 1 + + haze_horizon + + 1 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0.48175376653671265 + 0 + 0.87630665302276611 + 0 + + max_y + + 1 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 0 + sun_angle + 3.2107079029083252 + sunlight_color + + 0 + 3 + 0 + 3 + + + diff --git a/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Drawing%20red.xml b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Drawing%20red.xml new file mode 100644 index 000000000..0ce00b1e8 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Drawing%20red.xml @@ -0,0 +1,141 @@ + + + ambient + + 3 + 0 + 0 + 3 + + blue_density + + 2 + 0 + 0 + 2 + + blue_horizon + + 2 + 0 + 0 + 2 + + cloud_color + + 0 + 1 + 0 + 1 + + cloud_pos_density1 + + 1 + 1 + 1 + 1 + + cloud_pos_density2 + + 1 + 1 + 1 + 1 + + cloud_scale + + 1 + 0 + 0 + 1 + + cloud_scroll_rate + + 9.8000001907348633 + 8.9899997711181641 + + cloud_shadow + + 0 + 0 + 0 + 1 + + density_multiplier + + 0.00026999998954124749 + 0 + 0 + 1 + + distance_multiplier + + 100 + 0 + 0 + 1 + + east_angle + 2.6389377117156982 + enable_cloud_scroll + + 0 + 0 + + gamma + + 0.0099999997764825821 + 0 + 0 + 1 + + glow + + 20 + 0.0010000000474974513 + 0 + 1 + + haze_density + + 0.0099999997764825821 + 0 + 0 + 1 + + haze_horizon + + 1 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0.48175376653671265 + 0 + 0.87630665302276611 + 0 + + max_y + + 1 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 0 + sun_angle + 3.2107079029083252 + sunlight_color + + 3 + 0 + 0 + 3 + + + diff --git a/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Drawing%20underground%20comic.xml b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Drawing%20underground%20comic.xml new file mode 100644 index 000000000..62ebaa233 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20Drawing%20underground%20comic.xml @@ -0,0 +1,141 @@ + + + ambient + + 3 + 3 + 3 + 3 + + blue_density + + 0.35000002384185791 + 0.28999707102775574 + 0.57999998331069946 + 0.57999998331069946 + + blue_horizon + + 0.56000000238418579 + 0.42976745963096619 + 0.2734883725643158 + 0.56000000238418579 + + cloud_color + + 1 + 1 + 1 + 1 + + cloud_pos_density1 + + 1 + 1 + 1 + 1 + + cloud_pos_density2 + + 1 + 1 + 1 + 1 + + cloud_scale + + 1 + 0 + 0 + 1 + + cloud_scroll_rate + + 9.8000001907348633 + 8.9899997711181641 + + cloud_shadow + + 0 + 0 + 0 + 1 + + density_multiplier + + 0.00020999999833293259 + 0 + 0 + 1 + + distance_multiplier + + 24.200000762939453 + 0 + 0 + 1 + + east_angle + 3.1415927410125732 + enable_cloud_scroll + + 0 + 0 + + gamma + + 0.0099999997764825821 + 0 + 0 + 1 + + glow + + 0.19999980926513672 + 0.0010000000474974513 + -2.5 + 1 + + haze_density + + 0.56000000238418579 + 0 + 0 + 1 + + haze_horizon + + 0.2199999988079071 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -8.7422776573475858e-008 + 0 + 1 + 0 + + max_y + + 632 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 0 + sun_angle + 3.1415927410125732 + sunlight_color + + 3 + 3 + 3 + 3 + + + diff --git a/indra/newview/app_settings/windlight/skies/Orac%20%2D%20fog.xml b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20fog.xml new file mode 100644 index 000000000..088f09cbb --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20fog.xml @@ -0,0 +1,141 @@ + + + ambient + + 0 + 0 + 0 + 0 + + blue_density + + 0.39999997615814209 + 0.39999997615814209 + 0.39999997615814209 + 0.19999998807907104 + + blue_horizon + + 1 + 1 + 1 + 0.5 + + cloud_color + + 0.22617273092134837 + 0.2261830306064212 + 0.22618354559006093 + 1 + + cloud_pos_density1 + + 0.5 + 0.5 + 1 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.12499716758729562 + 1 + + cloud_scale + + 0.22999998927116394 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.499370784775238 + 10.011009025563908 + + cloud_shadow + + 0.26999998092651367 + 0 + 0 + 1 + + density_multiplier + + 0.00089999998454004526 + 0 + 0 + 1 + + distance_multiplier + + 100 + 0 + 0 + 1 + + east_angle + 0 + enable_cloud_scroll + + 0 + 0 + + gamma + + 1 + 0 + 0 + 1 + + glow + + 0.19999980926513672 + 0.0010000000474974513 + 0 + 1 + + haze_density + + 0.5 + 0 + 0 + 1 + + haze_horizon + + 0.32999998331069946 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0 + 1 + -4.3711388286737929e-008 + 0 + + max_y + + 4000 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 0 + sun_angle + 1.5707963705062866 + sunlight_color + + 3 + 3 + 3 + 1 + + + diff --git a/indra/newview/app_settings/windlight/skies/Orac%20%2D%20gray.xml b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20gray.xml new file mode 100644 index 000000000..fbbf36485 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20gray.xml @@ -0,0 +1,141 @@ + + + ambient + + 0 + 0 + 0 + 0 + + blue_density + + 2 + 2 + 2 + 1 + + blue_horizon + + 2 + 2 + 2 + 1 + + cloud_color + + 0.22617273092134837 + 0.2261830306064212 + 0.22618354559006093 + 1 + + cloud_pos_density1 + + 0.5 + 0.5 + 1 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.12499716758729562 + 1 + + cloud_scale + + 0.22999998927116394 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.499370784775238 + 10.011009025563908 + + cloud_shadow + + 0.26999998092651367 + 0 + 0 + 1 + + density_multiplier + + 0.00089999998454004526 + 0 + 0 + 1 + + distance_multiplier + + 100 + 0 + 0 + 1 + + east_angle + 0 + enable_cloud_scroll + + 0 + 0 + + gamma + + 1 + 0 + 0 + 1 + + glow + + 20 + 0.0010000000474974513 + 0 + 1 + + haze_density + + 1 + 0 + 0 + 1 + + haze_horizon + + 0 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0 + 0 + 1 + 0 + + max_y + + 1 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 0 + sun_angle + 0 + sunlight_color + + 3 + 3 + 3 + 1 + + + diff --git a/indra/newview/app_settings/windlight/skies/Orac%20%2D%20green.xml b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20green.xml new file mode 100644 index 000000000..8c5e8f119 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Orac%20%2D%20green.xml @@ -0,0 +1,141 @@ + + + ambient + + 0 + 1.2599999904632568 + 0 + 1.2599999904632568 + + blue_density + + 0.019999999552965164 + 0.019999999552965164 + 0.019999999552965164 + 0.0099999997764825821 + + blue_horizon + + 0 + 0 + 0 + 0 + + cloud_color + + 0 + 0.5 + 0 + 0.5 + + cloud_pos_density1 + + 0 + 0 + 0.5 + 1 + + cloud_pos_density2 + + 0 + 0 + 0 + 1 + + cloud_scale + + 1 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.5 + 0 + 0 + 1 + + density_multiplier + + 0 + 0 + 0 + 1 + + distance_multiplier + + 0 + 0 + 0 + 1 + + east_angle + 0.062831856310367584 + enable_cloud_scroll + + 0 + 0 + + gamma + + 1 + 0 + 0 + 1 + + glow + + 20 + 0.0010000000474974513 + 0 + 1 + + haze_density + + 0 + 0 + 0 + 1 + + haze_horizon + + 0 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.05404643714427948 + 0.509041428565979 + 0.85904353857040405 + 0 + + max_y + + 1 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 0 + sun_angle + 0.53407078981399536 + sunlight_color + + 0 + 1.1399999856948853 + 0 + 1.1399999856948853 + + + diff --git a/indra/newview/app_settings/windlight/skies/Orange%20Incubus.xml b/indra/newview/app_settings/windlight/skies/Orange%20Incubus.xml new file mode 100644 index 000000000..6ab92ce6f --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Orange%20Incubus.xml @@ -0,0 +1,142 @@ + + + + ambient + + 1.8999998569488525 + 0.80384618043899536 + 2.8499999046325684 + 0.94999998807907104 + + blue_density + + 0.43999999761581421 + 0 + 0 + 0.2199999988079071 + + blue_horizon + + 0.2800000011920929 + 0 + 0 + 0.2800000011920929 + + cloud_color + + 0.75 + 0.56999999284744263 + 0 + 0.75 + + cloud_pos_density1 + + 1 + 0.48999997973442078 + 0.34999999403953552 + 1 + + cloud_pos_density2 + + 0.31000000238418579 + 0 + 0 + 1 + + cloud_scale + + 0.59999996423721313 + 0 + 0 + 1 + + cloud_scroll_rate + + 8.1899995803833008 + 9.7199993133544922 + + cloud_shadow + + 0.28999999165534973 + 0 + 0 + 1 + + density_multiplier + + 9.9999997473787516e-006 + 0 + 0 + 1 + + distance_multiplier + + 18.100000381469727 + 0 + 0 + 1 + + east_angle + 2.4504423141479492 + enable_cloud_scroll + + 1 + 1 + + gamma + + 0.57999998331069946 + 0 + 0 + 1 + + glow + + 20 + 0.0010000000474974513 + -2.2000000476837158 + 1 + + haze_density + + 4 + 0 + 0 + 1 + + haze_horizon + + 0.019999999552965164 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 3.1154863222582208e-007 + 1 + 3.765976543945726e-007 + 1 + + max_y + + 4000 + 0 + 0 + 1 + + preset_num + 26 + star_brightness + 2 + sun_angle + 4.7123894691467285 + sunlight_color + + 0 + 0.80999994277954102 + 2.0699999332427979 + 2.0699999332427979 + + + diff --git a/indra/newview/app_settings/windlight/skies/PaperSnow.xml b/indra/newview/app_settings/windlight/skies/PaperSnow.xml new file mode 100644 index 000000000..a34ac8df6 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/PaperSnow.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.62999999523162842 + 0.62999999523162842 + 0.62999999523162842 + 0.62999999523162842 + + blue_density + + 0.56000000238418579 + 0.56000000238418579 + 0.23999999463558197 + 0.56000000238418579 + + blue_horizon + + 0.59999996423721313 + 0.59999996423721313 + 0.68000000715255737 + 0.74000000953674316 + + cloud_color + + 0.12862999737262726 + 0.12862999737262726 + 0.12862999737262726 + 1 + + cloud_pos_density1 + + 0.88419097661972046 + 0.53047597408294678 + 0.4270470142364502 + 1 + + cloud_pos_density2 + + 0.38419300317764282 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.41999998688697815 + 0 + 0 + 1 + + cloud_scroll_rate + + 10 + 10 + + cloud_shadow + + 0.61711597442626953 + 0 + 0 + 1 + + density_multiplier + + 0.00013000000035390258 + 0 + 0 + 1 + + distance_multiplier + + 16.200000762939453 + 0 + 0 + 1 + + east_angle + 0 + enable_cloud_scroll + + 1 + 1 + + gamma + + 0.94999998807907104 + 0 + 0 + 1 + + glow + + 6.4079799652099609 + 0.0012815999798476696 + -0.44999998807907104 + 1 + + haze_density + + 4 + 0 + 0 + 1 + + haze_horizon + + 0.12999999523162842 + 0.21744099259376526 + 0.21744099259376526 + 1 + + lightnorm + + 0 + 0.25477027893066406 + -0.96700161695480347 + 1 + + max_y + + 4000 + 0 + 0 + 1 + + preset_num + 2 + star_brightness + 0 + sun_angle + 6.0255751609802246 + sunlight_color + + 3 + 3 + 3 + 1 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Abracadabra.xml b/indra/newview/app_settings/windlight/skies/Places%20Abracadabra.xml new file mode 100644 index 000000000..21e73f0a4 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Abracadabra.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.35999998450279236 + 0.25200003385543823 + 0 + 0.11999999731779099 + + blue_density + + 0.97999995946884155 + 0.97999995946884155 + 0.97999995946884155 + 0.48999997973442078 + + blue_horizon + + 0.47999998927116394 + 0.29999998211860657 + 0.2800000011920929 + 0.51999998092651367 + + cloud_color + + 0.50999999046325684 + 0.50999999046325684 + 0.50999999046325684 + 1 + + cloud_pos_density1 + + 0.5 + 0.5 + 1 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.079999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.25999999046325684 + 0 + 0 + 1 + + density_multiplier + + 0.00022000000171829015 + 0 + 0 + 1 + + distance_multiplier + + 31.100000381469727 + 0 + 0 + 1 + + east_angle + 4.3353981971740723 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1 + 0 + 0 + 1 + + glow + + 5 + 0.0010000000474974513 + -0.33000001311302185 + 1 + + haze_density + + 1.2699999809265137 + 0 + 0 + 1 + + haze_horizon + + 0.2800000011920929 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.86661803722381592 + 0.36227512359619141 + 0.34311801195144653 + 0 + + max_y + + 752 + 0 + 0 + 1 + + preset_num + 21 + star_brightness + 0 + sun_angle + 2.7708849906921387 + sunlight_color + + 1.3799998760223389 + 1.3799998760223389 + 1.3799998760223389 + 0.45999997854232788 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Abracadabra2.xml b/indra/newview/app_settings/windlight/skies/Places%20Abracadabra2.xml new file mode 100644 index 000000000..55158516c --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Abracadabra2.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.35999998450279236 + 0.25200003385543823 + 0 + 0.11999999731779099 + + blue_density + + 0.97999995946884155 + 0.97999995946884155 + 0.97999995946884155 + 0.48999997973442078 + + blue_horizon + + 0.47999998927116394 + 0.53999996185302734 + 0.45999997854232788 + 0.53999996185302734 + + cloud_color + + 0.50999999046325684 + 0.50999999046325684 + 0.50999999046325684 + 1 + + cloud_pos_density1 + + 0.5 + 0.5 + 1 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.079999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.25999999046325684 + 0 + 0 + 1 + + density_multiplier + + 0.00013000000035390258 + 0 + 0 + 1 + + distance_multiplier + + 24.30000114440918 + 0 + 0 + 1 + + east_angle + 5.9061942100524902 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.6899999380111694 + 0 + 0 + 1 + + glow + + 15.59999942779541 + 0.0010000000474974513 + -0.59999996423721313 + 1 + + haze_density + + 1.2699999809265137 + 0 + 0 + 1 + + haze_horizon + + 0.26999998092651367 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.34311828017234802 + 0.36227512359619141 + -0.86661791801452637 + 0 + + max_y + + 483 + 0 + 0 + 1 + + preset_num + 21 + star_brightness + 0 + sun_angle + 2.7708849906921387 + sunlight_color + + 1.3799998760223389 + 1.3799998760223389 + 1.3799998760223389 + 0.45999997854232788 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Abracadabra3.xml b/indra/newview/app_settings/windlight/skies/Places%20Abracadabra3.xml new file mode 100644 index 000000000..9b5388ab6 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Abracadabra3.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.35999998450279236 + 0.25200003385543823 + 0 + 0.11999999731779099 + + blue_density + + 0.97999995946884155 + 0.97999995946884155 + 0.97999995946884155 + 0.48999997973442078 + + blue_horizon + + 0.47999998927116394 + 0.53999996185302734 + 0.45999997854232788 + 0.53999996185302734 + + cloud_color + + 0.50999999046325684 + 0.50999999046325684 + 0.50999999046325684 + 1 + + cloud_pos_density1 + + 0.5 + 0.5 + 1 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.079999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.25999999046325684 + 0 + 0 + 1 + + density_multiplier + + 0.00013000000035390258 + 0 + 0 + 1 + + distance_multiplier + + 24.30000114440918 + 0 + 0 + 1 + + east_angle + 5.026547908782959 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.6899999380111694 + 0 + 0 + 1 + + glow + + 15.59999942779541 + 0.0010000000474974513 + -0.59999996423721313 + 1 + + haze_density + + 1.2699999809265137 + 0 + 0 + 1 + + haze_horizon + + 0.26999998092651367 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.88645249605178833 + 0.36227512359619141 + -0.28802555799484253 + 0 + + max_y + + 483 + 0 + 0 + 1 + + preset_num + 21 + star_brightness + 0 + sun_angle + 2.7708849906921387 + sunlight_color + + 1.3799998760223389 + 1.3799998760223389 + 1.3799998760223389 + 0.45999997854232788 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Annamaria.xml b/indra/newview/app_settings/windlight/skies/Places%20Annamaria.xml new file mode 100644 index 000000000..15876975d --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Annamaria.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.17999999225139618 + 0.17999999225139618 + 0 + 0.17999999225139618 + + blue_density + + 0.97999995946884155 + 0.97999995946884155 + 0.75999999046325684 + 1 + + blue_horizon + + 0.084897957742214203 + 0.11000000685453415 + 0.25999999046325684 + 0.12999999523162842 + + cloud_color + + 0.47999998927116394 + 0.47999998927116394 + 0.47999998927116394 + 0.47999998927116394 + + cloud_pos_density1 + + 0.63999998569488525 + 0.5 + 0.56999999284744263 + 1 + + cloud_pos_density2 + + 0.37000000476837158 + 0.35999998450279236 + 0 + 1 + + cloud_scale + + 0.079999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.219999775290489 + 9.9899997767060995 + + cloud_shadow + + 0.31999999284744263 + 0 + 0 + 1 + + density_multiplier + + 0.00013000000035390258 + 0 + 0 + 1 + + distance_multiplier + + 2 + 0 + 0 + 1 + + east_angle + 3.1415927410125732 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1 + 0 + 0 + 1 + + glow + + 5.3999996185302734 + 0.0010000000474974513 + -0.33000001311302185 + 1 + + haze_density + + 1.8899999856948853 + 0 + 0 + 1 + + haze_horizon + + 0.23999999463558197 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -8.1484252234531596e-008 + 0.36227512359619141 + 0.93207120895385742 + 0 + + max_y + + 671 + 0 + 0 + 1 + + preset_num + 21 + star_brightness + 0.2199999988079071 + sun_angle + 2.7708849906921387 + sunlight_color + + 1.3799998760223389 + 1.3799998760223389 + 1.3799998760223389 + 1.3799998760223389 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Astryls%20Wild.xml b/indra/newview/app_settings/windlight/skies/Places%20Astryls%20Wild.xml new file mode 100644 index 000000000..c9783190b --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Astryls%20Wild.xml @@ -0,0 +1,141 @@ + + + ambient + + 1.7372221946716309 + 1.7699999809265137 + 1.5899999141693115 + 1.7999999523162842 + + blue_density + + 0.5 + 0.97999995946884155 + 0.97999995946884155 + 0.48999997973442078 + + blue_horizon + + 0.31999999284744263 + 0.2800000011920929 + 0.37999999523162842 + 0.37999999523162842 + + cloud_color + + 0.50999999046325684 + 0.50999999046325684 + 0.50999999046325684 + 1 + + cloud_pos_density1 + + 0.5 + 0.5 + 1 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.079999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.25999999046325684 + 0 + 0 + 1 + + density_multiplier + + 0.00053999997908249497 + 0 + 0 + 1 + + distance_multiplier + + 8.8000001907348633 + 0 + 0 + 1 + + east_angle + 0.56548666954040527 + enable_cloud_scroll + + 1 + 1 + + gamma + + 0.94999998807907104 + 0 + 0 + 1 + + glow + + 11.600000381469727 + 0.0010000000474974513 + -2.2999999523162842 + 1 + + haze_density + + 1.4299999475479126 + 0 + 0 + 1 + + haze_horizon + + 0.15999999642372131 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0.38828861713409424 + 0.68911367654800415 + -0.61184495687484741 + 0 + + max_y + + 886 + 0 + 0 + 1 + + preset_num + 21 + star_brightness + 0 + sun_angle + 2.3813273906707764 + sunlight_color + + 1.4399999380111694 + 1.4699999094009399 + 1.4399999380111694 + 1.4699999094009399 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Babbage.xml b/indra/newview/app_settings/windlight/skies/Places%20Babbage.xml new file mode 100644 index 000000000..a7176d14e --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Babbage.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.32999998331069946 + 0.32999998331069946 + 0.32999998331069946 + 0.10999999940395355 + + blue_density + + 0 + 0.39999699592590332 + 0.80000197887420654 + 0.97999995946884155 + + blue_horizon + + 0.16199998557567596 + 0.76855206489562988 + 0.89999997615814209 + 0.44999998807907104 + + cloud_color + + 0.69999998807907104 + 0.69999998807907104 + 0.69999998807907104 + 0.69999998807907104 + + cloud_pos_density1 + + 0.5 + 0.5 + 0.53999996185302734 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.29999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.39999997615814209 + 0 + 0 + 1 + + density_multiplier + + 0.00072999997064471245 + 0 + 0 + 1 + + distance_multiplier + + 7.4000000953674316 + 0 + 0 + 1 + + east_angle + 0 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1 + 0 + 0 + 1 + + glow + + 3.7999999523162842 + 0.0010000000474974513 + -0.5 + 1 + + haze_density + + 4 + 0 + 0 + 1 + + haze_horizon + + 0.64999997615814209 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0 + 1 + -4.3711388286737929e-008 + 0 + + max_y + + 1745 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 0 + sun_angle + 1.5707963705062866 + sunlight_color + + 0.53999996185302734 + 0.53999996185302734 + 0.53999996185302734 + 0.17999999225139618 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Beach%20Cay%20Surreal.xml b/indra/newview/app_settings/windlight/skies/Places%20Beach%20Cay%20Surreal.xml new file mode 100644 index 000000000..1b06037ae --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Beach%20Cay%20Surreal.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.35999998450279236 + 0.25200003385543823 + 0 + 0.11999999731779099 + + blue_density + + 0.97999995946884155 + 0.97999995946884155 + 0.97999995946884155 + 0.48999997973442078 + + blue_horizon + + 0.47999998927116394 + 0.53999996185302734 + 0.45999997854232788 + 0.53999996185302734 + + cloud_color + + 0.50999999046325684 + 0.50999999046325684 + 0.50999999046325684 + 1 + + cloud_pos_density1 + + 0.5 + 0.5 + 1 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.079999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.25999999046325684 + 0 + 0 + 1 + + density_multiplier + + 7.0000001869630069e-005 + 0 + 0 + 1 + + distance_multiplier + + 31.100000381469727 + 0 + 0 + 1 + + east_angle + 4.0840702056884766 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.6899999380111694 + 0 + 0 + 1 + + glow + + 15.59999942779541 + 0.0010000000474974513 + -0.59999996423721313 + 1 + + haze_density + + 1.2699999809265137 + 0 + 0 + 1 + + haze_horizon + + 0.26999998092651367 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.75406128168106079 + 0.36227512359619141 + 0.54785788059234619 + 0 + + max_y + + 403 + 0 + 0 + 1 + + preset_num + 21 + star_brightness + 0 + sun_angle + 2.7708849906921387 + sunlight_color + + 1.3799998760223389 + 1.3799998760223389 + 1.3799998760223389 + 0.45999997854232788 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Beach%20Cay.xml b/indra/newview/app_settings/windlight/skies/Places%20Beach%20Cay.xml new file mode 100644 index 000000000..d4fa195fe --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Beach%20Cay.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.21000000834465027 + 0.029999999329447746 + 0 + 0.21000000834465027 + + blue_density + + 0.29999998211860657 + 0.29999998211860657 + 0.29999998211860657 + 0.14999999105930328 + + blue_horizon + + 0.47999998927116394 + 0.17142856121063232 + 0 + 0.23999999463558197 + + cloud_color + + 0.26999998092651367 + 0.34999999403953552 + 0.029999999329447746 + 0.34999999403953552 + + cloud_pos_density1 + + 0.85999995470046997 + 0.42999997735023499 + 0.45999997854232788 + 1 + + cloud_pos_density2 + + 1 + 1 + 0.099999994039535522 + 1 + + cloud_scale + + 0.14000000059604645 + 0 + 0 + 1 + + cloud_scroll_rate + + 9.644780158996582 + 10.423800468444824 + + cloud_shadow + + 0.2800000011920929 + 0 + 0 + 1 + + density_multiplier + + 0.00013999998918734491 + 0 + 0 + 1 + + distance_multiplier + + 37.799999237060547 + 0 + 0 + 1 + + east_angle + 1.7592918872833252 + enable_cloud_scroll + + 1 + 1 + + gamma + + 2.2999999523162842 + 0 + 0 + 1 + + glow + + 2.5999999046325684 + 0.0013735899701714516 + -2.5 + 1 + + haze_density + + 1.7300000190734863 + 0 + 0 + 1 + + haze_horizon + + 0.14999999105930328 + 0.13210900127887726 + 0.13210900127887726 + 1 + + lightnorm + + -0.98228722810745239 + 0 + -0.187381312251091 + 0 + + max_y + + 1396 + 0 + 0 + 1 + + preset_num + 5 + star_brightness + 2 + sun_angle + 0 + sunlight_color + + 1.9199999570846558 + 1.7699999809265137 + 0 + 1.9199999570846558 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Bentham.xml b/indra/newview/app_settings/windlight/skies/Places%20Bentham.xml new file mode 100644 index 000000000..db35e04ec --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Bentham.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.59999996423721313 + 0.4888889491558075 + 0.40000000596046448 + 0.19999998807907104 + + blue_density + + 1.059999942779541 + 0.47638890147209167 + 0.47638890147209167 + 1.059999942779541 + + blue_horizon + + 0.14000000059604645 + 0.31999999284744263 + 0.62000000476837158 + 0.62000000476837158 + + cloud_color + + 0.28999999165534973 + 0.28999999165534973 + 0.31999999284744263 + 0.31999999284744263 + + cloud_pos_density1 + + 0.5 + 0.5 + 1 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.079999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 9.9299993515014648 + + cloud_shadow + + 0.32999998331069946 + 0 + 0 + 1 + + density_multiplier + + 0.00032999998074956238 + 0 + 0 + 1 + + distance_multiplier + + 6.8000001907348633 + 0 + 0 + 1 + + east_angle + 4.7752208709716797 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.0799999237060547 + 0 + 0 + 1 + + glow + + 5 + 0.0010000000474974513 + -0.33000001311302185 + 1 + + haze_density + + 1.8899999856948853 + 0 + 0 + 1 + + haze_horizon + + 0.23999999463558197 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.91343516111373901 + 0.4029063880443573 + -0.057468503713607788 + 0 + + max_y + + 644 + 0 + 0 + 1 + + preset_num + 21 + star_brightness + 0 + sun_angle + 2.7269024848937988 + sunlight_color + + 2.25 + 1.8899999856948853 + 1.6800000667572021 + 2.25 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Cornfield.xml b/indra/newview/app_settings/windlight/skies/Places%20Cornfield.xml new file mode 100644 index 000000000..77416688e --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Cornfield.xml @@ -0,0 +1,141 @@ + + + ambient + + 1.7400000095367432 + 1.619999885559082 + 1.4099999666213989 + 2.4600000381469727 + + blue_density + + 0.97999995946884155 + 0.97999995946884155 + 0.97999995946884155 + 0.48999997973442078 + + blue_horizon + + 0.2800000011920929 + 0.29999998211860657 + 0.37999999523162842 + 0.39999997615814209 + + cloud_color + + 0.50999999046325684 + 0.50999999046325684 + 0.50999999046325684 + 1 + + cloud_pos_density1 + + 0.5 + 0.5 + 1 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.079999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.25999999046325684 + 0 + 0 + 1 + + density_multiplier + + 0.00031000000308267772 + 0 + 0 + 1 + + distance_multiplier + + 6.8000001907348633 + 0 + 0 + 1 + + east_angle + 4.5238933563232422 + enable_cloud_scroll + + 1 + 1 + + gamma + + 0.74000000953674316 + 0 + 0 + 1 + + glow + + 11.600000381469727 + 0.0010000000474974513 + -2.2999999523162842 + 1 + + haze_density + + 1.4299999475479126 + 0 + 0 + 1 + + haze_horizon + + 0.15999999642372131 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.71181762218475342 + 0.68911367654800415 + 0.1357865184545517 + 0 + + max_y + + 242 + 0 + 0 + 1 + + preset_num + 21 + star_brightness + 0 + sun_angle + 2.3813273906707764 + sunlight_color + + 1.4399999380111694 + 1.4399999380111694 + 1.4399999380111694 + 0.47999998927116394 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Cromac.xml b/indra/newview/app_settings/windlight/skies/Places%20Cromac.xml new file mode 100644 index 000000000..efec78721 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Cromac.xml @@ -0,0 +1,141 @@ + + + ambient + + 1.0799999237060547 + 0.98999994993209839 + 0.77999997138977051 + 1.0799999237060547 + + blue_density + + 0.64736837148666382 + 0.48414888978004456 + 0.81999999284744263 + 0.40999999642372131 + + blue_horizon + + 0.5 + 0.49548381567001343 + 0.45999997854232788 + 0.51999998092651367 + + cloud_color + + 0.4100000062111997 + 0.4100000062111997 + 0.4100000062111997 + 0.4100000062111997 + + cloud_pos_density1 + + 0.14000000059604645 + 0.62000000476837158 + 1 + 1 + + cloud_pos_density2 + + 0.35999998450279236 + 0.56999999284744263 + 0.12999999523162842 + 1 + + cloud_scale + + 0.35999998450279236 + 0 + 0 + 1.0000000149011612 + + cloud_scroll_rate + + 10.199999791580112 + 10.010999679880427 + + cloud_shadow + + 0.29999998211860657 + 0 + 0 + 1.0000000149011612 + + density_multiplier + + 7.9999997979030013e-005 + 0 + 0 + 1.0000000149011612 + + distance_multiplier + + 5.4000000953674316 + 0 + 0 + 1.0000000149011612 + + east_angle + 4.2725663185119629 + enable_cloud_scroll + + 1 + 1 + + gamma + + 2.8399999141693115 + 0 + 0 + 1.0000000149011612 + + glow + + 5 + 0.0010000000474974513 + -0.55000001192092896 + 1 + + haze_density + + 0.31999999284744263 + 0 + 0 + 1 + + haze_horizon + + 0.17999999225139618 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.14154624938964844 + 0.98768830299377441 + 0.066606558859348297 + 0 + + max_y + + 805 + 0 + 0 + 1.0000000149011612 + + preset_num + 28 + star_brightness + 0.25999999046325684 + sun_angle + 1.7278760671615601 + sunlight_color + + 0.69882339239120483 + 0.8258824348449707 + 1.0799999237060547 + 0.35999998450279236 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Crucible.xml b/indra/newview/app_settings/windlight/skies/Places%20Crucible.xml new file mode 100644 index 000000000..08c15adf0 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Crucible.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.20405015781398106 + 0.24246659642869872 + 0.33000011563842691 + 0.11000042485298422 + + blue_density + + 0.44999968444335536 + 0.44999993884084688 + 0.45000033684982554 + 1 + + blue_horizon + + 0.2399998628207527 + 0.23999996847777538 + 0.24000000489354534 + 1 + + cloud_color + + 0.22615399956703186 + 0.22615399956703186 + 0.22615399956703186 + 1 + + cloud_pos_density1 + + 1.6884100437164307 + 0.52609699964523315 + 0.87999999523162842 + 1 + + cloud_pos_density2 + + 1.6884100437164307 + 0.52609699964523315 + 0.125 + 1 + + cloud_scale + + 0.41999998688697815 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.26999998092651367 + 0 + 0 + 1 + + density_multiplier + + 0.00030000017352815878 + 0 + 0 + 1 + + distance_multiplier + + 2.6920993051460229e-006 + 0 + 0 + 1 + + east_angle + 0 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1 + 0 + 0 + 1 + + glow + + 5 + 0.0010000000474974513 + -0.47999998927116394 + 1 + + haze_density + + 3.9999967092453517 + 0 + 0 + 1 + + haze_horizon + + 1.5953180371869324e-007 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0 + 0.99963462352752686 + 0.027029547840356827 + 1 + + max_y + + 906.19966977159493 + 0 + 0 + 1 + + preset_num + 22 + star_brightness + 1.9999979734420776 + sun_angle + 4.6853561401367187 + sunlight_color + + 0.34876771076233126 + 0.35574326291055058 + 0.66000120168018839 + 0.22000041117803448 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20District8.xml b/indra/newview/app_settings/windlight/skies/Places%20District8.xml new file mode 100644 index 000000000..0ef69a361 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20District8.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.26999998092651367 + 0.21000000834465027 + 0.08999999612569809 + 0.26999998092651367 + + blue_density + + 0.71999996900558472 + 1.0199999809265137 + 1.059999942779541 + 1.059999942779541 + + blue_horizon + + 0.35999998450279236 + 0.36272725462913513 + 0.41999998688697815 + 0.5 + + cloud_color + + 0.50999999046325684 + 0.50999999046325684 + 0.50999999046325684 + 1 + + cloud_pos_density1 + + 0.5 + 0.5 + 1 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.079999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.25 + 0 + 0 + 1 + + density_multiplier + + 0.00020999999833293259 + 0 + 0 + 1 + + distance_multiplier + + 4.7000002861022949 + 0 + 0 + 1 + + east_angle + 3.3300881385803223 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.2200000286102295 + 0 + 0 + 1 + + glow + + 16.600000381469727 + 0.0010000000474974513 + -0.049999997019767761 + 1 + + haze_density + + 2.1599998474121094 + 0 + 0 + 1 + + haze_horizon + + 0.25999999046325684 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0.17994101345539093 + 0.27899131178855896 + -0.94328427314758301 + 1 + + max_y + + 698 + 0 + 0 + 1 + + preset_num + 21 + star_brightness + 0 + sun_angle + 3.4243361949920654 + sunlight_color + + 2.0999999046325684 + 2.1599998474121094 + 2.1599998474121094 + 2.1599998474121094 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Duskwood.xml b/indra/newview/app_settings/windlight/skies/Places%20Duskwood.xml new file mode 100644 index 000000000..2389e9660 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Duskwood.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.17999999225139618 + 0.17999999225139618 + 0 + 0.17999999225139618 + + blue_density + + 0.97999995946884155 + 0.97999995946884155 + 0.75999999046325684 + 1 + + blue_horizon + + 0.084897957742214203 + 0.11000000685453415 + 0.25999999046325684 + 0.12999999523162842 + + cloud_color + + 0.47999998927116394 + 0.47999998927116394 + 0.47999998927116394 + 0.47999998927116394 + + cloud_pos_density1 + + 0.63999998569488525 + 0.5 + 0.56999999284744263 + 1 + + cloud_pos_density2 + + 0.37000000476837158 + 0.35999998450279236 + 0 + 1 + + cloud_scale + + 0.079999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.219999775290489 + 9.9899997767060995 + + cloud_shadow + + 0.31999999284744263 + 0 + 0 + 1 + + density_multiplier + + 0.00031000000308267772 + 0 + 0 + 1 + + distance_multiplier + + 33.100002288818359 + 0 + 0 + 1 + + east_angle + 3.1415927410125732 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1 + 0 + 0 + 1 + + glow + + 5.3999996185302734 + 0.0010000000474974513 + -0.33000001311302185 + 1 + + haze_density + + 1.8899999856948853 + 0 + 0 + 1 + + haze_horizon + + 0.23999999463558197 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -8.1484252234531596e-008 + 0.36227512359619141 + 0.93207120895385742 + 0 + + max_y + + 671 + 0 + 0 + 1 + + preset_num + 21 + star_brightness + 0.2199999988079071 + sun_angle + 2.7708849906921387 + sunlight_color + + 1.3799998760223389 + 1.3799998760223389 + 1.3799998760223389 + 1.3799998760223389 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Eridu.xml b/indra/newview/app_settings/windlight/skies/Places%20Eridu.xml new file mode 100644 index 000000000..d93310016 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Eridu.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.50999999046325684 + 0.57310229539871216 + 0.59999996423721313 + 0.59999996423721313 + + blue_density + + 0.14522500336170197 + 0.39999699592590332 + 0.80000197887420654 + 1 + + blue_horizon + + 0.15130999684333801 + 0.30000001192092896 + 0.35131001472473145 + 1 + + cloud_color + + 0.12862999737262726 + 0.12862999737262726 + 0.12862999737262726 + 1 + + cloud_pos_density1 + + 0.88419097661972046 + 0.53047597408294678 + 0.4270470142364502 + 1 + + cloud_pos_density2 + + 0.38419300317764282 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.41999998688697815 + 0 + 0 + 1 + + cloud_scroll_rate + + 10 + 10 + + cloud_shadow + + 0.61711597442626953 + 0 + 0 + 1 + + density_multiplier + + 0.0001250890054507181 + 0 + 0 + 1 + + distance_multiplier + + 11.40000057220459 + 0 + 0 + 1 + + east_angle + 5.4035391807556152 + enable_cloud_scroll + + 1 + 1 + + gamma + + 0.87999999523162842 + 0 + 0 + 1 + + glow + + 6.4079799652099609 + 0.0012815999798476696 + -0.42292699217796326 + 1 + + haze_density + + 4 + 0 + 0 + 1 + + haze_horizon + + 0.21744099259376526 + 0.21744099259376526 + 0.21744099259376526 + 1 + + lightnorm + + 0.76102709770202637 + 0.15643447637557983 + 0.62957614660263062 + 0 + + max_y + + 4000 + 0 + 0 + 1 + + preset_num + 2 + star_brightness + 0 + sun_angle + 0.15707963705062866 + sunlight_color + + 3 + 3 + 3 + 1 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Erie.xml b/indra/newview/app_settings/windlight/skies/Places%20Erie.xml new file mode 100644 index 000000000..7be0e3ffd --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Erie.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.26999998092651367 + 0.26999998092651367 + 0.26999998092651367 + 0.08999999612569809 + + blue_density + + 0.35999998450279236 + 0.35999998450279236 + 0.35999998450279236 + 0.17999999225139618 + + blue_horizon + + 0.16199998557567596 + 0.76855206489562988 + 1.9799998998641968 + 1.9799998998641968 + + cloud_color + + 0.69999998807907104 + 0.69999998807907104 + 0.69999998807907104 + 0.69999998807907104 + + cloud_pos_density1 + + 0.5 + 0.5 + 0.53999996185302734 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.29999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.39999997615814209 + 0 + 0 + 1 + + density_multiplier + + 0.00054999999701976776 + 0 + 0 + 1 + + distance_multiplier + + 6.0999999046325684 + 0 + 0 + 1 + + east_angle + 0 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.5499999523162842 + 0 + 0 + 1 + + glow + + 3.7999999523162842 + 0.0010000000474974513 + -0.5 + 1 + + haze_density + + 4 + 0 + 0 + 1 + + haze_horizon + + 0.64999997615814209 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0 + 1 + -4.3711388286737929e-008 + 0 + + max_y + + 1745 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 0 + sun_angle + 1.5707963705062866 + sunlight_color + + 0.08999999612569809 + 0.070000007748603821 + 0.08999999612569809 + 0.029999999329447746 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Eugene%202.xml b/indra/newview/app_settings/windlight/skies/Places%20Eugene%202.xml new file mode 100644 index 000000000..85a0a2d93 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Eugene%202.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.21000000834465027 + 0.029999997466802597 + 0 + 0.070000000298023224 + + blue_density + + 0.29999998211860657 + 0.29999998211860657 + 0.29999998211860657 + 0.14999999105930328 + + blue_horizon + + 0.47999998927116394 + 0.47999998927116394 + 0.47999998927116394 + 0.47999998927116394 + + cloud_color + + 0.29999998211860657 + 0.34999999403953552 + 0.029999999329447746 + 0.34999999403953552 + + cloud_pos_density1 + + 0.85999995470046997 + 0.42999997735023499 + 0.45999997854232788 + 1 + + cloud_pos_density2 + + 1 + 1 + 0.099999994039535522 + 1 + + cloud_scale + + 0.14000000059604645 + 0 + 0 + 1 + + cloud_scroll_rate + + 9.644780158996582 + 10.423800468444824 + + cloud_shadow + + 0.2800000011920929 + 0 + 0 + 1 + + density_multiplier + + 0.00013999998918734491 + 0 + 0 + 1 + + distance_multiplier + + 37.799999237060547 + 0 + 0 + 1 + + east_angle + 1.382300853729248 + enable_cloud_scroll + + 1 + 1 + + gamma + + 4.190000057220459 + 0 + 0 + 1 + + glow + + 8.8000011444091797 + 0.0013735899701714516 + -0.94999998807907104 + 1 + + haze_density + + 4 + 0 + 0 + 1 + + haze_horizon + + 0.019999999552965164 + 0.13210900127887726 + 0.13210900127887726 + 1 + + lightnorm + + -0.98228728771209717 + 0 + 0.18738122284412384 + 0 + + max_y + + 1396 + 0 + 0 + 1 + + preset_num + 5 + star_brightness + 2 + sun_angle + 0 + sunlight_color + + 1.2300000190734863 + 0.82000011205673218 + 0.84000003337860107 + 1.2899999618530273 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Eugene%20BL.xml b/indra/newview/app_settings/windlight/skies/Places%20Eugene%20BL.xml new file mode 100644 index 000000000..2402f44d0 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Eugene%20BL.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.21000000834465027 + 0.029999997466802597 + 0 + 0.070000000298023224 + + blue_density + + 0.29999998211860657 + 0.29999998211860657 + 0.29999998211860657 + 0.14999999105930328 + + blue_horizon + + 0.47999998927116394 + 0.17142856121063232 + 0 + 0.23999999463558197 + + cloud_color + + 0.29999998211860657 + 0.34999999403953552 + 0.029999999329447746 + 0.34999999403953552 + + cloud_pos_density1 + + 0.85999995470046997 + 0.42999997735023499 + 0.45999997854232788 + 1 + + cloud_pos_density2 + + 1 + 1 + 0.099999994039535522 + 1 + + cloud_scale + + 0.14000000059604645 + 0 + 0 + 1 + + cloud_scroll_rate + + 9.644780158996582 + 10.423800468444824 + + cloud_shadow + + 0.2800000011920929 + 0 + 0 + 1 + + density_multiplier + + 0.00013999998918734491 + 0 + 0 + 1 + + distance_multiplier + + 37.799999237060547 + 0 + 0 + 1 + + east_angle + 1.382300853729248 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.1499999761581421 + 0 + 0 + 1 + + glow + + 8.8000011444091797 + 0.0013735899701714516 + -0.94999998807907104 + 1 + + haze_density + + 1.7300000190734863 + 0 + 0 + 1 + + haze_horizon + + 0.14999999105930328 + 0.13210900127887726 + 0.13210900127887726 + 1 + + lightnorm + + -0.98228728771209717 + 0 + 0.18738122284412384 + 0 + + max_y + + 1396 + 0 + 0 + 1 + + preset_num + 5 + star_brightness + 2 + sun_angle + 0 + sunlight_color + + 1.2300000190734863 + 0.82000011205673218 + 0 + 0.40999999642372131 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Greed.xml b/indra/newview/app_settings/windlight/skies/Places%20Greed.xml new file mode 100644 index 000000000..268716b94 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Greed.xml @@ -0,0 +1,141 @@ + + + ambient + + 1.1699999570846558 + 0.95727264881134033 + 0.95727264881134033 + 0.38999998569488525 + + blue_density + + 0.14522500336170197 + 0.39999699592590332 + 0.80000197887420654 + 1 + + blue_horizon + + 0.10767599940299988 + 0.21348699927330017 + 0.25 + 1 + + cloud_color + + 0.22615399956703186 + 0.22615399956703186 + 0.22615399956703186 + 1 + + cloud_pos_density1 + + 1.6884100437164307 + 0.52609699964523315 + 0.87999999523162842 + 1 + + cloud_pos_density2 + + 1.6884100437164307 + 0.52609699964523315 + 0.125 + 1 + + cloud_scale + + 0.41999998688697815 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.26999998092651367 + 0 + 0 + 1 + + density_multiplier + + 0.00046000001020729542 + 0 + 0 + 1 + + distance_multiplier + + 1 + 0 + 0 + 1 + + east_angle + 5.4035391807556152 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.6200000047683716 + 0 + 0 + 1 + + glow + + 4.2000007629394531 + 0.0010000000474974513 + -0 + 1 + + haze_density + + 0.69999998807907104 + 0 + 0 + 1 + + haze_horizon + + 0.15999999642372131 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.75594335794448853 + 0.19354932010173798 + -0.6253705620765686 + 0 + + max_y + + 562.5 + 0 + 0 + 1 + + preset_num + 22 + star_brightness + 0 + sun_angle + 2.9468140602111816 + sunlight_color + + 2.8385701179504395 + 2.8385701179504395 + 2.8385701179504395 + 1 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Greed2.xml b/indra/newview/app_settings/windlight/skies/Places%20Greed2.xml new file mode 100644 index 000000000..ec5282f7e --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Greed2.xml @@ -0,0 +1,141 @@ + + + ambient + + 1.1699999570846558 + 0.95727264881134033 + 0.95727264881134033 + 0.38999998569488525 + + blue_density + + 0.14522500336170197 + 0.39999699592590332 + 0.80000197887420654 + 1 + + blue_horizon + + 0.10767599940299988 + 0.21348699927330017 + 0.25 + 1 + + cloud_color + + 0.22615399956703186 + 0.22615399956703186 + 0.22615399956703186 + 1 + + cloud_pos_density1 + + 1.6884100437164307 + 0.52609699964523315 + 0.87999999523162842 + 1 + + cloud_pos_density2 + + 1.6884100437164307 + 0.52609699964523315 + 0.125 + 1 + + cloud_scale + + 0.41999998688697815 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.26999998092651367 + 0 + 0 + 1 + + density_multiplier + + 0.00046000001020729542 + 0 + 0 + 1 + + distance_multiplier + + 1 + 0 + 0 + 1 + + east_angle + 2.9530971050262451 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.2200000286102295 + 0 + 0 + 1 + + glow + + 4.2000007629394531 + 0.0010000000474974513 + -0 + 1 + + haze_density + + 0.69999998807907104 + 0 + 0 + 1 + + haze_horizon + + 0.15999999642372131 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0.18383802473545074 + 0.19354932010173798 + 0.96371269226074219 + 0 + + max_y + + 562.5 + 0 + 0 + 1 + + preset_num + 22 + star_brightness + 0 + sun_angle + 2.9468140602111816 + sunlight_color + + 2.8385701179504395 + 2.8385701179504395 + 2.8385701179504395 + 1 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Imagine.xml b/indra/newview/app_settings/windlight/skies/Places%20Imagine.xml new file mode 100644 index 000000000..48fba1e31 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Imagine.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.68999993801116943 + 0.68999993801116943 + 0.68999993801116943 + 0.68999993801116943 + + blue_density + + 0.97999995946884155 + 0.97999995946884155 + 0.97999995946884155 + 0.48999997973442078 + + blue_horizon + + 0.25999999046325684 + 0.29999998211860657 + 0.37999999523162842 + 0.37999999523162842 + + cloud_color + + 0.50999999046325684 + 0.50999999046325684 + 0.50999999046325684 + 1 + + cloud_pos_density1 + + 0.5 + 0.5 + 1 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.079999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.25999999046325684 + 0 + 0 + 1 + + density_multiplier + + 0.00038999997195787728 + 0 + 0 + 1 + + distance_multiplier + + 11.5 + 0 + 0 + 1 + + east_angle + 5.7176985740661621 + enable_cloud_scroll + + 1 + 1 + + gamma + + 0.68000000715255737 + 0 + 0 + 1 + + glow + + 12.399999618530273 + 0.0010000000474974513 + -1.8500000238418579 + 1 + + haze_density + + 1.8899999856948853 + 0 + 0 + 1 + + haze_horizon + + 0.23999999463558197 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.41922605037689209 + 0.6227877140045166 + -0.6605944037437439 + 0 + + max_y + + 940 + 0 + 0 + 1 + + preset_num + 21 + star_brightness + 0 + sun_angle + 2.4692919254302979 + sunlight_color + + 2.6700000762939453 + 2.6700000762939453 + 2.6700000762939453 + 0.88999998569488525 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Kingsport.xml b/indra/newview/app_settings/windlight/skies/Places%20Kingsport.xml new file mode 100644 index 000000000..dfaf68596 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Kingsport.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.32999998331069946 + 0.32999998331069946 + 0.32999998331069946 + 0.32999998331069946 + + blue_density + + 0 + 0 + 0 + 0 + + blue_horizon + + 0.16199998557567596 + 0.76855206489562988 + 0.89999997615814209 + 0.44999998807907104 + + cloud_color + + 0.69999998807907104 + 0.69999998807907104 + 0.69999998807907104 + 0.69999998807907104 + + cloud_pos_density1 + + 0.5 + 0.5 + 0.53999996185302734 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.29999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.39999997615814209 + 0 + 0 + 1 + + density_multiplier + + 0.00058999995235353708 + 0 + 0 + 1 + + distance_multiplier + + 12.800000190734863 + 0 + 0 + 1 + + east_angle + 0 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.4199999570846558 + 0 + 0 + 1 + + glow + + 3.7999999523162842 + 0.0010000000474974513 + -0.5 + 1 + + haze_density + + 4 + 0 + 0 + 1 + + haze_horizon + + 0.64999997615814209 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0 + 1 + -4.3711388286737929e-008 + 0 + + max_y + + 2013 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 0 + sun_angle + 1.5707963705062866 + sunlight_color + + 0.53999996185302734 + 0.53999996185302734 + 0.53999996185302734 + 0.17999999225139618 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Kunming.xml b/indra/newview/app_settings/windlight/skies/Places%20Kunming.xml new file mode 100644 index 000000000..e641bebcc --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Kunming.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.89999997615814209 + 0.80999994277954102 + 0.80999994277954102 + 0.89999997615814209 + + blue_density + + 0.14522500336170197 + 0.39999699592590332 + 0.80000197887420654 + 1 + + blue_horizon + + 0.10767599940299988 + 0.21348699927330017 + 0.25 + 1 + + cloud_color + + 0.22615399956703186 + 0.22615399956703186 + 0.22615399956703186 + 1 + + cloud_pos_density1 + + 0.5 + 0.5 + 0.87999999523162842 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.32999998331069946 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.48999997973442078 + 0 + 0 + 1 + + density_multiplier + + 0.00059999997029080987 + 0 + 0 + 1 + + distance_multiplier + + 18.200000762939453 + 0 + 0 + 1 + + east_angle + 3.2044246196746826 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.4199999570846558 + 0 + 0 + 1 + + glow + + 5 + 0.0010000000474974513 + -0.39999997615814209 + 1 + + haze_density + + 0.68000000715255737 + 0 + 0 + 1 + + haze_horizon + + 0.43999999761581421 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.062790632247924805 + 0 + 0.99802672863006592 + 0 + + max_y + + 859 + 0 + 0 + 1 + + preset_num + 21 + star_brightness + 0 + sun_angle + 3.2044248580932617 + sunlight_color + + 2.8385701179504395 + 2.8385701179504395 + 2.8385701179504395 + 1 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Las%20Legunas.xml b/indra/newview/app_settings/windlight/skies/Places%20Las%20Legunas.xml new file mode 100644 index 000000000..4121f8fa6 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Las%20Legunas.xml @@ -0,0 +1,141 @@ + + + ambient + + 1.7372221946716309 + 1.7699999809265137 + 1.5899999141693115 + 1.7999999523162842 + + blue_density + + 0.5 + 0.97999995946884155 + 0.97999995946884155 + 0.48999997973442078 + + blue_horizon + + 0.31999999284744263 + 0.2800000011920929 + 0.37999999523162842 + 0.37999999523162842 + + cloud_color + + 0.50999999046325684 + 0.50999999046325684 + 0.50999999046325684 + 1 + + cloud_pos_density1 + + 0.8399999737739563 + 0.5899999737739563 + 1 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.079999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.17000000178813934 + 0 + 0 + 1 + + density_multiplier + + 0.00033999999868683517 + 0 + 0 + 1 + + distance_multiplier + + 4.0999999046325684 + 0 + 0 + 1 + + east_angle + 0.56548666954040527 + enable_cloud_scroll + + 1 + 1 + + gamma + + 0.94999998807907104 + 0 + 0 + 1 + + glow + + 11.600000381469727 + 0.0010000000474974513 + -2.2999999523162842 + 1 + + haze_density + + 1.9199999570846558 + 0 + 0 + 1 + + haze_horizon + + 0.15999999642372131 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0.38828861713409424 + 0.68911367654800415 + -0.61184495687484741 + 0 + + max_y + + 403 + 0 + 0 + 1 + + preset_num + 21 + star_brightness + 0 + sun_angle + 2.3813273906707764 + sunlight_color + + 1.4399999380111694 + 1.4699999094009399 + 1.4399999380111694 + 1.4699999094009399 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Legacies.xml b/indra/newview/app_settings/windlight/skies/Places%20Legacies.xml new file mode 100644 index 000000000..a8284bb2a --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Legacies.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.32999998331069946 + 0.32999998331069946 + 0.32999998331069946 + 0.10999999940395355 + + blue_density + + 0.19999998807907104 + 0.39999699592590332 + 1.0199999809265137 + 1.0199999809265137 + + blue_horizon + + 0.16199998557567596 + 0.76855206489562988 + 0.89999997615814209 + 0.44999998807907104 + + cloud_color + + 0.69999998807907104 + 0.69999998807907104 + 0.69999998807907104 + 0.69999998807907104 + + cloud_pos_density1 + + 0.5 + 0.5 + 0.53999996185302734 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.29999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.39999997615814209 + 0 + 0 + 1 + + density_multiplier + + 0.00039999998989515007 + 0 + 0 + 1 + + distance_multiplier + + 14.199999809265137 + 0 + 0 + 1 + + east_angle + 0 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.2799999713897705 + 0 + 0 + 1 + + glow + + 3.7999999523162842 + 0.0010000000474974513 + -0.39999997615814209 + 1 + + haze_density + + 3.8599998950958252 + 0 + 0 + 1 + + haze_horizon + + 0.77999997138977051 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0 + 0.99715888500213623 + -0.07532694935798645 + 0 + + max_y + + 1745 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 0 + sun_angle + 1.6461946964263916 + sunlight_color + + 0.53999996185302734 + 0.53999996185302734 + 0.53999996185302734 + 0.17999999225139618 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Midian.xml b/indra/newview/app_settings/windlight/skies/Places%20Midian.xml new file mode 100644 index 000000000..40a34a4a9 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Midian.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.85248766300455259 + 0.69348653809556993 + 0.71145841248196007 + 0.83318269234937503 + + blue_density + + 0.20779243499502797 + 0.41026214234642566 + 0.72814986965084927 + 1 + + blue_horizon + + 0.13484086845960519 + 0.21892986884401466 + 0.24794709491764877 + 1 + + cloud_color + + 0.22615399956703186 + 0.22615399956703186 + 0.22615399956703186 + 1 + + cloud_pos_density1 + + 1.6884100437164307 + 0.52609699964523315 + 0.87999999523162842 + 1 + + cloud_pos_density2 + + 1.6884100437164307 + 0.52609699964523315 + 0.125 + 1 + + cloud_scale + + 0.41999998688697815 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.26999998092651367 + 0 + 0 + 1 + + density_multiplier + + 0.00029999998514540493 + 0 + 0 + 1 + + distance_multiplier + + 4.0999999046325684 + 0 + 0 + 1 + + east_angle + 6.2831854820251465 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.3500000238418579 + 0 + 0 + 1 + + glow + + 5 + 0.0010000000474974513 + -0.47999998927116394 + 1 + + haze_density + + 1.3774588671593051 + 0 + 0 + 1 + + haze_horizon + + 0.29999998211860657 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 1.7484556735780643e-007 + 0 + -1 + 0 + + max_y + + 564 + 0 + 0 + 1 + + preset_num + 22 + star_brightness + 0.41058114171028137 + sun_angle + 3.2044248580932617 + sunlight_color + + 2.3274268943138168 + 2.3288588977004565 + 2.3913246215581694 + 0.83987117651068388 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Mother.xml b/indra/newview/app_settings/windlight/skies/Places%20Mother.xml new file mode 100644 index 000000000..753cf0706 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Mother.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.71999996900558472 + 0.54638898372650146 + 0.58705025911331177 + 0.71999996900558472 + + blue_density + + 0.28678349408657766 + 0.42322183665254443 + 0.63743695308465931 + 1 + + blue_horizon + + 0.16913637525681224 + 0.22580146354854946 + 0.24535531286049661 + 1 + + cloud_color + + 0.22615399956703186 + 0.22615399956703186 + 0.22615399956703186 + 1 + + cloud_pos_density1 + + 1.6884100437164307 + 0.52609699964523315 + 0.70999997854232788 + 1 + + cloud_pos_density2 + + 1.6884100437164307 + 0.20999999344348907 + 0.125 + 1 + + cloud_scale + + 0.3399999737739563 + 0 + 0 + 1 + + cloud_scroll_rate + + 8.6099996566772461 + 6.2799997329711914 + + cloud_shadow + + 0.23999999463558197 + 0 + 0 + 1 + + density_multiplier + + 0.00031999999191612005 + 0 + 0 + 1 + + distance_multiplier + + 40.5 + 0 + 0 + 1 + + east_angle + 1.8849555253982544 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.7599999904632568 + 0 + 0 + 1 + + glow + + 5.7999992370605469 + 0.0010000000474974513 + -1.1000000238418579 + 1 + + haze_density + + 2.2327472009226881 + 0 + 0 + 1 + + haze_horizon + + 0.085684981703968377 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.60160976648330688 + 0.77450323104858398 + -0.19547481834888458 + 1 + + max_y + + 644 + 0 + 0 + 1 + + preset_num + 22 + star_brightness + 0.92893773317337036 + sun_angle + 4.027522087097168 + sunlight_color + + 2.624443531036377 + 2.6294984817504883 + 2.8499999046325684 + 0.94999998807907104 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Old%20New%20York.xml b/indra/newview/app_settings/windlight/skies/Places%20Old%20New%20York.xml new file mode 100644 index 000000000..df356084b --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Old%20New%20York.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.56999999284744263 + 0.59999996423721313 + 0.71999996900558472 + 0.71999996900558472 + + blue_density + + 0.14522500336170197 + 0.39999699592590332 + 0.80000197887420654 + 1 + + blue_horizon + + 0.23999999463558197 + 0.30000001192092896 + 0.35131001472473145 + 0.37999999523162842 + + cloud_color + + 0.12862999737262726 + 0.12862999737262726 + 0.12862999737262726 + 1 + + cloud_pos_density1 + + 0.88419097661972046 + 0.53047597408294678 + 0.4270470142364502 + 1 + + cloud_pos_density2 + + 0.38419300317764282 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.41999998688697815 + 0 + 0 + 1 + + cloud_scroll_rate + + 10 + 10 + + cloud_shadow + + 0.61711597442626953 + 0 + 0 + 1 + + density_multiplier + + 0.00013000000035390258 + 0 + 0 + 1 + + distance_multiplier + + 18.899999618530273 + 0 + 0 + 1 + + east_angle + 5.4035391807556152 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.6899999380111694 + 0 + 0 + 1 + + glow + + 4.4000005722045898 + 0.0012815999798476696 + -0.64999997615814209 + 1 + + haze_density + + 4 + 0 + 0 + 1 + + haze_horizon + + 0.17000000178813934 + 0.21744099259376526 + 0.21744099259376526 + 1 + + lightnorm + + 0.76102709770202637 + 0.15643447637557983 + 0.62957614660263062 + 0 + + max_y + + 4000 + 0 + 0 + 1 + + preset_num + 2 + star_brightness + 0.65999996662139893 + sun_angle + 0.15707963705062866 + sunlight_color + + 1.3199999332427979 + 0.69959986209869385 + 0.71279996633529663 + 0.43999999761581421 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Paris%202.xml b/indra/newview/app_settings/windlight/skies/Places%20Paris%202.xml new file mode 100644 index 000000000..431ee1867 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Paris%202.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.85248766300455259 + 0.69348653809556993 + 0.71145841248196007 + 0.83318269234937503 + + blue_density + + 0.20779243499502797 + 0.41026214234642566 + 0.72814986965084927 + 1 + + blue_horizon + + 0.13484086845960519 + 0.21892986884401466 + 0.24794709491764877 + 1 + + cloud_color + + 0.22615399956703186 + 0.22615399956703186 + 0.22615399956703186 + 1 + + cloud_pos_density1 + + 1.6884100437164307 + 0.52609699964523315 + 0.87999999523162842 + 1 + + cloud_pos_density2 + + 1.6884100437164307 + 0.52609699964523315 + 0.125 + 1 + + cloud_scale + + 0.34999999403953552 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.31999999284744263 + 0 + 0 + 1 + + density_multiplier + + 0.00029999998514540493 + 0 + 0 + 1 + + distance_multiplier + + 4.0999999046325684 + 0 + 0 + 1 + + east_angle + 3.0787608623504639 + enable_cloud_scroll + + 1 + 1 + + gamma + + 2.1599998474121094 + 0 + 0 + 1 + + glow + + 8.4000015258789063 + 0.0010000000474974513 + -0.34999999403953552 + 1 + + haze_density + + 1.3774588671593051 + 0 + 0 + 1 + + haze_horizon + + 0.29999998211860657 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0.062790460884571075 + 0 + 0.99802672863006592 + 0 + + max_y + + 564 + 0 + 0 + 1 + + preset_num + 22 + star_brightness + 0.41058114171028137 + sun_angle + 3.2044248580932617 + sunlight_color + + 2.3274268943138168 + 2.3288588977004565 + 2.3913246215581694 + 0.83987117651068388 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Paris.xml b/indra/newview/app_settings/windlight/skies/Places%20Paris.xml new file mode 100644 index 000000000..ebd2970c9 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Paris.xml @@ -0,0 +1,141 @@ + + + ambient + + 1.2300000190734863 + 1.0553969144821167 + 1.0920002460479736 + 1.2300000190734863 + + blue_density + + 0.57999998331069946 + 0.59999996423721313 + 0.77111077308654785 + 0.55220913887023926 + + blue_horizon + + 0.29999998211860657 + 0.41715732216835022 + 0.53167486190795898 + 0.65999996662139893 + + cloud_color + + 0.35893553611745688 + 0.35893553611745688 + 0.35893553611745688 + 0.57387644052505493 + + cloud_pos_density1 + + 1.6884100437164307 + 0.52609699964523315 + 0.96666919575807242 + 1 + + cloud_pos_density2 + + 1.6884100437164307 + 0.52609699964523315 + 0.125 + 1 + + cloud_scale + + 0.41999999993404913 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.283160487214445 + 10.010999818490745 + + cloud_shadow + + 0.23999999463558197 + 0 + 0 + 1 + + density_multiplier + + 7.0000001869630069e-005 + 0 + 0 + 1 + + distance_multiplier + + 2 + 0 + 0 + 1 + + east_angle + 3.8955750465393066 + enable_cloud_scroll + + 1 + 1 + + gamma + + 2.2300000190734863 + 0 + 0 + 1 + + glow + + 7.4000000953674316 + 0.0010000000474974513 + -0 + 1 + + haze_density + + 1.0499999523162842 + 0 + 0 + 1 + + haze_horizon + + 0.37999999523162842 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.68454724550247192 + 0 + 0.72896856069564819 + 0 + + max_y + + 268 + 0 + 0 + 1 + + preset_num + 22 + star_brightness + 0 + sun_angle + 3.2044248580932617 + sunlight_color + + 1.3187105655670166 + 1.3529220819473267 + 1.7100000381469727 + 1.7100000381469727 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Pathfinder.xml b/indra/newview/app_settings/windlight/skies/Places%20Pathfinder.xml new file mode 100644 index 000000000..43e69daea --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Pathfinder.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.47999998927116394 + 0.39111119508743286 + 0.31999999284744263 + 0.47999998927116394 + + blue_density + + 0.059999998658895493 + 0.059999998658895493 + 0.059999998658895493 + 0.029999999329447746 + + blue_horizon + + 1.8600000143051147 + 0.47999998927116394 + 0.47999998927116394 + 1.8600000143051147 + + cloud_color + + 0.28999999165534973 + 0.28999999165534973 + 0.31999999284744263 + 0.31999999284744263 + + cloud_pos_density1 + + 0.5 + 0.5 + 1 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.079999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 9.9299993515014648 + + cloud_shadow + + 0.32999998331069946 + 0 + 0 + 1 + + density_multiplier + + 0.00019999999494757503 + 0 + 0 + 1 + + distance_multiplier + + 3.4000000953674316 + 0 + 0 + 1 + + east_angle + 1.8849555253982544 + enable_cloud_scroll + + 1 + 1 + + gamma + + 0.74000000953674316 + 0 + 0 + 1 + + glow + + 5 + 0.0010000000474974513 + -0.33000001311302185 + 1 + + haze_density + + 2.809999942779541 + 0 + 0 + 1 + + haze_horizon + + 0.23999999463558197 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0.87044608592987061 + 0.4029063880443573 + 0.28282502293586731 + 0 + + max_y + + 752 + 0 + 0 + 1 + + preset_num + 21 + star_brightness + 0 + sun_angle + 2.7269024848937988 + sunlight_color + + 1.8600000143051147 + 1.7699999809265137 + 1.6537500619888306 + 1.8600000143051147 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Sand.xml b/indra/newview/app_settings/windlight/skies/Places%20Sand.xml new file mode 100644 index 000000000..da66198d5 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Sand.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.59999996423721313 + 0.4888889491558075 + 0.40000000596046448 + 0.19999998807907104 + + blue_density + + 2 + 0.97999995946884155 + 0.97999995946884155 + 2 + + blue_horizon + + 0.71999996900558472 + 0.50086963176727295 + 0.50086963176727295 + 0.35999998450279236 + + cloud_color + + 0.28999999165534973 + 0.28999999165534973 + 0.31999999284744263 + 0.31999999284744263 + + cloud_pos_density1 + + 0.5 + 0.5 + 1 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.079999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 9.9299993515014648 + + cloud_shadow + + 0.32999998331069946 + 0 + 0 + 1 + + density_multiplier + + 0.00031000000308267772 + 0 + 0 + 1 + + distance_multiplier + + 6.8000001907348633 + 0 + 0 + 1 + + east_angle + 5.6548666954040527 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.1499999761581421 + 0 + 0 + 1 + + glow + + 5 + 0.0010000000474974513 + -0.33000001311302185 + 1 + + haze_density + + 1.8899999856948853 + 0 + 0 + 1 + + haze_horizon + + 0.23999999463558197 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.53796529769897461 + 0.4029063880443573 + -0.74044561386108398 + 0 + + max_y + + 752 + 0 + 0 + 1 + + preset_num + 21 + star_brightness + 0 + sun_angle + 2.7269024848937988 + sunlight_color + + 2.25 + 1.8899999856948853 + 1.6800000667572021 + 2.25 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Terre%20Des%20Mortes.xml b/indra/newview/app_settings/windlight/skies/Places%20Terre%20Des%20Mortes.xml new file mode 100644 index 000000000..00ae35765 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Terre%20Des%20Mortes.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.21000000834465027 + 0.26999998092651367 + 0.35999998450279236 + 0.35999998450279236 + + blue_density + + 0.97999995946884155 + 0.97999995946884155 + 0.97999995946884155 + 0.48999997973442078 + + blue_horizon + + 0.25999999046325684 + 0.29999998211860657 + 0.37999999523162842 + 0.37999999523162842 + + cloud_color + + 0.50999999046325684 + 0.50999999046325684 + 0.50999999046325684 + 1 + + cloud_pos_density1 + + 0.5 + 0.5 + 1 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.079999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.25999999046325684 + 0 + 0 + 1 + + density_multiplier + + 0.00076999998418614268 + 0 + 0 + 1 + + distance_multiplier + + 16.899999618530273 + 0 + 0 + 1 + + east_angle + 4.0840702056884766 + enable_cloud_scroll + + 1 + 1 + + gamma + + 0.74000000953674316 + 0 + 0 + 1 + + glow + + 5 + 0.0010000000474974513 + -0.33000001311302185 + 1 + + haze_density + + 1.8899999856948853 + 0 + 0 + 1 + + haze_horizon + + 0.23999999463558197 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.63296741247177124 + 0.6227877140045166 + 0.45987796783447266 + 0 + + max_y + + 752 + 0 + 0 + 1 + + preset_num + 21 + star_brightness + 0 + sun_angle + 2.4692919254302979 + sunlight_color + + 1.4399999380111694 + 1.4399999380111694 + 1.4399999380111694 + 0.47999998927116394 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Urbania.xml b/indra/newview/app_settings/windlight/skies/Places%20Urbania.xml new file mode 100644 index 000000000..4aed800ea --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Urbania.xml @@ -0,0 +1,141 @@ + + + ambient + + 0 + 0.029999997466802597 + 0 + 0.029999999329447746 + + blue_density + + 0.29999998211860657 + 0.29999998211860657 + 0.29999998211860657 + 0.14999999105930328 + + blue_horizon + + 0.39999997615814209 + 0.17142856121063232 + 0 + 0.39999997615814209 + + cloud_color + + 0.29999998211860657 + 0.34999999403953552 + 0.029999999329447746 + 0.34999999403953552 + + cloud_pos_density1 + + 0.85999995470046997 + 0.42999997735023499 + 0.45999997854232788 + 1 + + cloud_pos_density2 + + 1 + 1 + 0.099999994039535522 + 1 + + cloud_scale + + 0.14000000059604645 + 0 + 0 + 1 + + cloud_scroll_rate + + 9.644780158996582 + 10.423800468444824 + + cloud_shadow + + 0.2800000011920929 + 0 + 0 + 1 + + density_multiplier + + 0.00058999995235353708 + 0 + 0 + 1 + + distance_multiplier + + 20.30000114440918 + 0 + 0 + 1 + + east_angle + 1.2566369771957397 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.9599999189376831 + 0 + 0 + 1 + + glow + + 8.8000011444091797 + 0.0013735899701714516 + -0.94999998807907104 + 1 + + haze_density + + 1.7300000190734863 + 0 + 0 + 1 + + haze_horizon + + 0.45999997854232788 + 0.13210900127887726 + 0.13210900127887726 + 1 + + lightnorm + + -0.95105648040771484 + 0 + 0.30901706218719482 + 0 + + max_y + + 1450 + 0 + 0 + 1 + + preset_num + 5 + star_brightness + 2 + sun_angle + 0 + sunlight_color + + 1.2300000190734863 + 0.82000011205673218 + 0 + 0.40999999642372131 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20Wiccan.xml b/indra/newview/app_settings/windlight/skies/Places%20Wiccan.xml new file mode 100644 index 000000000..7e220c9ff --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20Wiccan.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.71999996900558472 + 0.54638898372650146 + 0.58705025911331177 + 0.71999996900558472 + + blue_density + + 0.28678349408657766 + 0.42322183665254443 + 0.63743695308465931 + 1 + + blue_horizon + + 0.16913637525681224 + 0.22580146354854946 + 0.24535531286049661 + 1 + + cloud_color + + 0.22615399956703186 + 0.22615399956703186 + 0.22615399956703186 + 1 + + cloud_pos_density1 + + 1.6884100437164307 + 0.52609699964523315 + 0.70999997854232788 + 1 + + cloud_pos_density2 + + 1.6884100437164307 + 0.20999999344348907 + 0.125 + 1 + + cloud_scale + + 0.3399999737739563 + 0 + 0 + 1 + + cloud_scroll_rate + + 8.6099996566772461 + 6.2799997329711914 + + cloud_shadow + + 0.23999999463558197 + 0 + 0 + 1 + + density_multiplier + + 0.00038568499229132969 + 0 + 0 + 1 + + distance_multiplier + + 0.53555402121232365 + 0 + 0 + 1 + + east_angle + 6.2831854820251465 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.6899999380111694 + 0 + 0 + 1 + + glow + + 5 + 0.0010000000474974513 + -0.47999998927116394 + 1 + + haze_density + + 2.2327472009226881 + 0 + 0 + 1 + + haze_horizon + + 0.085684981703968377 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -1.6790306744951522e-007 + 0.27899131178855896 + 0.96029365062713623 + 1 + + max_y + + 722.13795372575987 + 0 + 0 + 1 + + preset_num + 22 + star_brightness + 0.92893773317337036 + sun_angle + 3.4243361949920654 + sunlight_color + + 2.624443531036377 + 2.6294984817504883 + 2.8499999046325684 + 0.94999998807907104 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%20alirium.xml b/indra/newview/app_settings/windlight/skies/Places%20alirium.xml new file mode 100644 index 000000000..6bed05a85 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%20alirium.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.26999998092651367 + 0.21000000834465027 + 0.08999999612569809 + 0.26999998092651367 + + blue_density + + 0.47886797785758972 + 0.90452831983566284 + 0.93999999761581421 + 0.4699999988079071 + + blue_horizon + + 0.28636360168457031 + 0.36272725462913513 + 0.41999998688697815 + 0.20999999344348907 + + cloud_color + + 0.50999999046325684 + 0.50999999046325684 + 0.50999999046325684 + 0.50999999046325684 + + cloud_pos_density1 + + 0.5 + 0.5 + 1 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.10999999940395355 + 1 + + cloud_scale + + 0.079999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.800000190734863 + 10.01099967956543 + + cloud_shadow + + 0.22999998927116394 + 0 + 0 + 1 + + density_multiplier + + 0.00013000000035390258 + 0 + 0 + 1 + + distance_multiplier + + 6.8000001907348633 + 0 + 0 + 1 + + east_angle + 4.2725663185119629 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.7599999904632568 + 0 + 0 + 1 + + glow + + 16.600000381469727 + 0.0010000000474974513 + -0.24999998509883881 + 1 + + haze_density + + 1.1899999380111694 + 0 + 0 + 1 + + haze_horizon + + 0.2199999988079071 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.84336334466934204 + 0.36227512359619141 + 0.39685636758804321 + 0 + + max_y + + 564 + 0 + 0 + 1 + + preset_num + 21 + star_brightness + 0 + sun_angle + 2.7708849906921387 + sunlight_color + + 2.4600000381469727 + 2.4600000381469727 + 2.4600000381469727 + 0.81999999284744263 + + + diff --git a/indra/newview/app_settings/windlight/skies/Places%2DEmbryo.xml b/indra/newview/app_settings/windlight/skies/Places%2DEmbryo.xml new file mode 100644 index 000000000..66d490aa9 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Places%2DEmbryo.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.35999998450279236 + 0.23999999463558197 + 0 + 0.35999998450279236 + + blue_density + + 0.15999999642372131 + 0.15999999642372131 + 0.15999999642372131 + 0.079999998211860657 + + blue_horizon + + 0.19999998807907104 + 0.19999998807907104 + 0.19999998807907104 + 0.099999994039535522 + + cloud_color + + 0.50999999046325684 + 0.50999999046325684 + 0.50999999046325684 + 0.50999999046325684 + + cloud_pos_density1 + + 0.53999996185302734 + 0.50999999046325684 + 0.2199999988079071 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.039999999105930328 + 1 + + cloud_scale + + 0.15999999642372131 + 0 + 0 + 1 + + cloud_scroll_rate + + 20 + 20 + + cloud_shadow + + 0.68000000715255737 + 0 + 0 + 1 + + density_multiplier + + 0.00020999999833293259 + 0 + 0 + 1 + + distance_multiplier + + 23 + 0 + 0 + 1 + + east_angle + 2.2619466781616211 + enable_cloud_scroll + + 0 + 0 + + gamma + + 0.94999998807907104 + 0 + 0 + 1 + + glow + + 20 + 0.0010000000474974513 + 0 + 1 + + haze_density + + 4 + 0 + 0 + 1 + + haze_horizon + + 0.17000000178813934 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0.70520544052124023 + 0.4029063880443573 + 0.58339667320251465 + 0 + + max_y + + 322 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 0 + sun_angle + 2.7269024848937988 + sunlight_color + + 0.71999996900558472 + 0.71999996900558472 + 0.71999996900558472 + 0.23999999463558197 + + + diff --git a/indra/newview/app_settings/windlight/skies/StrawberrySingh%2Ecom%20%2D%20Closeups.xml b/indra/newview/app_settings/windlight/skies/StrawberrySingh%2Ecom%20%2D%20Closeups.xml new file mode 100644 index 000000000..d9a45e832 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/StrawberrySingh%2Ecom%20%2D%20Closeups.xml @@ -0,0 +1,141 @@ + + + ambient + + 1.9524954557418823 + 2.0699999332427979 + 2.059481143951416 + 0.68999999761581421 + + blue_density + + 2 + 2 + 2 + 1 + + blue_horizon + + 1.5 + 1.5 + 1.5 + 0.75 + + cloud_color + + 0.40999999642372131 + 0.40999999642372131 + 0.40999999642372131 + 0.40999999642372131 + + cloud_pos_density1 + + 1.6884100437164307 + 0.52609699964523315 + 1 + 1 + + cloud_pos_density2 + + 1.6884100437164307 + 0.52609699964523315 + 0.125 + 1 + + cloud_scale + + 0.41999998688697815 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.199999809265137 + 10.01099967956543 + + cloud_shadow + + 0.12999999523162842 + 0 + 0 + 1 + + density_multiplier + + 0.0002899999963119626 + 0 + 0 + 1 + + distance_multiplier + + 0 + 0 + 0 + 1 + + east_angle + 0 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1.2599999904632568 + 0 + 0 + 1 + + glow + + 10.199999809265137 + 0.0010000000474974513 + -1.3999999761581421 + 1 + + haze_density + + 1.0099999904632568 + 0 + 0 + 1 + + haze_horizon + + 0.5 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0 + 0 + 1 + 0 + + max_y + + 493 + 0 + 0 + 1 + + preset_num + 22 + star_brightness + 0 + sun_angle + 0 + sunlight_color + + 1.5299999713897705 + 1.5299999713897705 + 1.5299999713897705 + 0.50999999046325684 + + + diff --git a/indra/newview/app_settings/windlight/skies/Sunrise.xml b/indra/newview/app_settings/windlight/skies/Sunrise.xml new file mode 100644 index 000000000..bbc7aeec5 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Sunrise.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.80999994277954102 + 0.46289783716201782 + 0.62999993562698364 + 0.26999998092651367 + + blue_density + + 0.15793180465698242 + 0.43499568104743958 + 0.87000000476837158 + 0.87000000476837158 + + blue_horizon + + 0.20673196017742157 + 0.40988314151763916 + 0.47999998927116394 + 0.47999998927116394 + + cloud_color + + 0.22616604226328718 + 0.22616604226328718 + 0.22616604226328718 + 0.99997219085526012 + + cloud_pos_density1 + + 1.6884100437164307 + 0.52609699964523315 + 0.88000025272481253 + 1 + + cloud_pos_density2 + + 1.6884100437164307 + 0.52609699964523315 + 0.125 + 1 + + cloud_scale + + 0.41999998688697815 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013883861 + 10.010999679576344 + + cloud_shadow + + 0.26999998092651367 + 0 + 0 + 1 + + density_multiplier + + 0.00062000000616535544 + 0 + 0 + 1 + + distance_multiplier + + 2.6999279499073054 + 0 + 0 + 1 + + east_angle + 0 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1 + 0 + 0 + 1 + + glow + + 5.0009990693069994 + 0.0010000000474963411 + -0.48000101923815919 + 1 + + haze_density + + 0.53999996185302734 + 0 + 0 + 1 + + haze_horizon + + 0.15999999642372131 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0 + 0.094108223915100098 + 0.99556195735931396 + 0 + + max_y + + 563 + 0 + 0 + 1 + + preset_num + 22 + star_brightness + 0 + sun_angle + 0.094247691333293915 + sunlight_color + + 2.369999885559082 + 2.369999885559082 + 2.369999885559082 + 0.78999996185302734 + + + diff --git a/indra/newview/app_settings/windlight/skies/Sunset%20Pink%20%28Paulina%29.xml b/indra/newview/app_settings/windlight/skies/Sunset%20Pink%20%28Paulina%29.xml new file mode 100644 index 000000000..9b5b74f03 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Sunset%20Pink%20%28Paulina%29.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.65999996662139893 + 0.30564266443252563 + 0.31655827164649963 + 0.2199999988079071 + + blue_density + + 1.1599999666213989 + 0.59999996423721313 + 1.3199999332427979 + 1.3199999332427979 + + blue_horizon + + 0.71153849363327026 + 0.74000000953674316 + 0.74000000953674316 + 0.37000000476837158 + + cloud_color + + 0 + 0 + 0.0099999997764825821 + 0.0099999997764825821 + + cloud_pos_density1 + + 0.53999996185302734 + 0.50999999046325684 + 0.23999999463558197 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.059999998658895493 + 1 + + cloud_scale + + 0.15999999642372131 + 0 + 0 + 1 + + cloud_scroll_rate + + 20 + 20 + + cloud_shadow + + 0.2199999988079071 + 0 + 0 + 1 + + density_multiplier + + 4.9999998736893758e-005 + 0 + 0 + 1 + + distance_multiplier + + 8.1000003814697266 + 0 + 0 + 1 + + east_angle + 3.5185837745666504 + enable_cloud_scroll + + 0 + 0 + + gamma + + 0.61000001430511475 + 0 + 0 + 1 + + glow + + 0.59999942779541016 + 0.0010000000474974513 + -0.59999996423721313 + 1 + + haze_density + + 1.8600000143051147 + 0 + 0 + 1 + + haze_horizon + + 0.76999998092651367 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + -0.36805915832519531 + 0.01884840801358223 + 0.92961132526397705 + 0 + + max_y + + 2443 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 1.8600000143051147 + sun_angle + 3.1227431297302246 + sunlight_color + + 1.1999999284744263 + 0.7486223578453064 + 0.39302670955657959 + 1.1999999284744263 + + + diff --git a/indra/newview/app_settings/windlight/skies/Sunset.xml b/indra/newview/app_settings/windlight/skies/Sunset.xml new file mode 100644 index 000000000..ebf08e1a3 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Sunset.xml @@ -0,0 +1,142 @@ + + + ambient + + 1.0199999809265137 + 0.80999994277954102 + 0.80999994277954102 + 1.0199999809265137 + + blue_density + + 0.14522500336170197 + 0.39999699592590332 + 0.80000197887420654 + 1 + + blue_horizon + + 0.10767599940299988 + 0.21348699927330017 + 0.25 + 1 + + cloud_color + + 0.22615399956703186 + 0.22615399956703186 + 0.22615399956703186 + 1 + + cloud_pos_density1 + + 1.6884100437164307 + 0.52609699964523315 + 0.87999999523162842 + 1 + + cloud_pos_density2 + + 1.6884100437164307 + 0.52609699964523315 + 0.125 + 1 + + cloud_scale + + 0.41999998688697815 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.26999998092651367 + 0 + 0 + 1 + + density_multiplier + + 0.00046000001020729542 + 0 + 0 + 1 + + distance_multiplier + + 1 + 0 + 0 + 1 + + east_angle + 0 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1 + 0 + 0 + 1 + + glow + + 5 + 0.0010000000474974513 + -0.47999998927116394 + 1 + + haze_density + + 0.69999998807907104 + 0 + 0 + 1 + + haze_horizon + + 0.15999999642372131 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0 + 0.07532646507024765 + -0.99715894460678101 + 0 + + max_y + + 562.5 + 0 + 0 + 1 + + preset_num + 22 + star_brightness + 0 + sun_angle + 3.0661947727203369 + sunlight_color + + 2.8385701179504395 + 2.8385701179504395 + 2.8385701179504395 + 1 + + + + diff --git a/indra/newview/app_settings/windlight/skies/Surreal%20%2D%20Brazil%20%28Paulina%29.xml b/indra/newview/app_settings/windlight/skies/Surreal%20%2D%20Brazil%20%28Paulina%29.xml new file mode 100644 index 000000000..97044da7b --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Surreal%20%2D%20Brazil%20%28Paulina%29.xml @@ -0,0 +1,141 @@ + + + ambient + + 1.5 + 2.2799999713897705 + 0.93000000715255737 + 2.2799999713897705 + + blue_density + + 1.2799999713897705 + 1.2999999523162842 + 1.3999999761581421 + 1.3999999761581421 + + blue_horizon + + 1 + 1.1200000047683716 + 0.068059712648391724 + 1.1200000047683716 + + cloud_color + + 0.52756190160579308 + 0.52756190160579308 + 0.52756190160579308 + 1 + + cloud_pos_density1 + + 0.72999995946884155 + 0.34000000357627869 + 0.32999998331069946 + 1 + + cloud_pos_density2 + + 0.28999999165534973 + 0.84999996423721313 + 0.019999999552965164 + 1 + + cloud_scale + + 0.32999998058761548 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.499399946934318 + 10.010999746491507 + + cloud_shadow + + 0.34999999403953552 + 0 + 0 + 1 + + density_multiplier + + 5.999999848427251e-005 + 0 + 0 + 1 + + distance_multiplier + + 12.800000190734863 + 0 + 0 + 1 + + east_angle + 3.8327431678771973 + enable_cloud_scroll + + 0 + 0 + + gamma + + 0.14000000059604645 + 0 + 0 + 1 + + glow + + 10 + 0.0010000000474974513 + -1.0499999523162842 + 1 + + haze_density + + 0.18999999761581421 + 0 + 0 + 1 + + haze_horizon + + 0.5899999737739563 + 0.19915598630905151 + 0.19915598630905151 + 1 + + lightnorm + + -0.60370332002639771 + 0.32094338536262512 + 0.72975176572799683 + 0 + + max_y + + 537 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 1.2200000286102295 + sun_angle + 2.8148672580718994 + sunlight_color + + 3 + 2.3461534976959229 + 3 + 1 + + + diff --git a/indra/newview/app_settings/windlight/skies/Surreal%20%2D%20Fire%20%28Paulina%29.xml b/indra/newview/app_settings/windlight/skies/Surreal%20%2D%20Fire%20%28Paulina%29.xml new file mode 100644 index 000000000..5519f5ec9 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Surreal%20%2D%20Fire%20%28Paulina%29.xml @@ -0,0 +1,141 @@ + + + ambient + + 3 + 3 + 3 + 3 + + blue_density + + 0.89999997615814209 + 0 + 0.41999998688697815 + 0.89999997615814209 + + blue_horizon + + 1.4800000190734863 + 1.6799999475479126 + 2 + 2 + + cloud_color + + 0.52756190160579308 + 0.52756190160579308 + 0.52756190160579308 + 1 + + cloud_pos_density1 + + 0.72999995946884155 + 0.34000000357627869 + 0.32999998331069946 + 1 + + cloud_pos_density2 + + 0.28999999165534973 + 0.84999996423721313 + 0.019999999552965164 + 1 + + cloud_scale + + 0.32999998058761548 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.499399946934318 + 10.010999746491507 + + cloud_shadow + + 0.28999999165534973 + 0 + 0 + 1 + + density_multiplier + + 0.00020999999833293259 + 0 + 0 + 1 + + distance_multiplier + + 8.1000003814697266 + 0 + 0 + 1 + + east_angle + 3.2044246196746826 + enable_cloud_scroll + + 0 + 0 + + gamma + + 0.070000000298023224 + 0 + 0 + 1 + + glow + + 3.0000019073486328 + 0.0010000000474974513 + -1.0499999523162842 + 1 + + haze_density + + 2.8899998664855957 + 0 + 0 + 1 + + haze_horizon + + 0.62000000476837158 + 0.19915598630905151 + 0.19915598630905151 + 1 + + lightnorm + + 0.061363283544778824 + 0.21200713515281677 + -0.97533971071243286 + 0 + + max_y + + 752 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 1.2200000286102295 + sun_angle + 0.21362832188606262 + sunlight_color + + 3 + 3 + 3 + 3 + + + diff --git a/indra/newview/app_settings/windlight/skies/Surreal%20%2D%20Flirt%20%28Paulina%29.xml b/indra/newview/app_settings/windlight/skies/Surreal%20%2D%20Flirt%20%28Paulina%29.xml new file mode 100644 index 000000000..70dd0d106 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Surreal%20%2D%20Flirt%20%28Paulina%29.xml @@ -0,0 +1,141 @@ + + + ambient + + 3 + 3 + 3 + 3 + + blue_density + + 1 + 0 + 0.41999998688697815 + 1 + + blue_horizon + + 1.4399999380111694 + 2 + 2 + 2 + + cloud_color + + 0.52756190160579308 + 0.52756190160579308 + 0.52756190160579308 + 1 + + cloud_pos_density1 + + 0.72999995946884155 + 0.34000000357627869 + 0.32999998331069946 + 1 + + cloud_pos_density2 + + 0.28999999165534973 + 0.84999996423721313 + 0.019999999552965164 + 1 + + cloud_scale + + 0.32999998058761548 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.499399946934318 + 10.010999746491507 + + cloud_shadow + + 0.28999999165534973 + 0 + 0 + 1 + + density_multiplier + + 0.0006399999838322401 + 0 + 0 + 1 + + distance_multiplier + + 5.4000000953674316 + 0 + 0 + 1 + + east_angle + 1.8221237659454346 + enable_cloud_scroll + + 0 + 0 + + gamma + + 0.070000000298023224 + 0 + 0 + 1 + + glow + + 2.2000002861022949 + 0.0010000000474974513 + -1.4499999284744263 + 1 + + haze_density + + 2.8899998664855957 + 0 + 0 + 1 + + haze_horizon + + 0.62000000476837158 + 0.19915598630905151 + 0.19915598630905151 + 1 + + lightnorm + + -0.96764647960662842 + 0.043968122452497482 + -0.2484494149684906 + 0 + + max_y + + 27 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 2 + sun_angle + 0.043982300907373428 + sunlight_color + + 3 + 3 + 3 + 1 + + + diff --git a/indra/newview/app_settings/windlight/skies/Surreal%20%2D%20Night%20%28Paulina%29.xml b/indra/newview/app_settings/windlight/skies/Surreal%20%2D%20Night%20%28Paulina%29.xml new file mode 100644 index 000000000..80ee99ef6 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Surreal%20%2D%20Night%20%28Paulina%29.xml @@ -0,0 +1,141 @@ + + + ambient + + 3 + 3 + 3 + 3 + + blue_density + + 1 + 0 + 0.41999998688697815 + 1 + + blue_horizon + + 1.4800000190734863 + 1.6799999475479126 + 2 + 2 + + cloud_color + + 0.52756190160579308 + 0.52756190160579308 + 0.52756190160579308 + 1 + + cloud_pos_density1 + + 0.72999995946884155 + 0.34000000357627869 + 0.32999998331069946 + 1 + + cloud_pos_density2 + + 0.28999999165534973 + 0.84999996423721313 + 0.019999999552965164 + 1 + + cloud_scale + + 0.32999998058761548 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.499399946934318 + 10.010999746491507 + + cloud_shadow + + 0.28999999165534973 + 0 + 0 + 1 + + density_multiplier + + 0 + 0 + 0 + 1 + + distance_multiplier + + 22.30000114440918 + 0 + 0 + 1 + + east_angle + 1.8221237659454346 + enable_cloud_scroll + + 0 + 0 + + gamma + + 0.070000000298023224 + 0 + 0 + 1 + + glow + + 3.0000019073486328 + 0.0010000000474974513 + -1.0499999523162842 + 1 + + haze_density + + 2.8899998664855957 + 0 + 0 + 1 + + haze_horizon + + 0.62000000476837158 + 0.19915598630905151 + 0.19915598630905151 + 1 + + lightnorm + + -0.96764647960662842 + 0.043968122452497482 + -0.2484494149684906 + 0 + + max_y + + 1289 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 1.2200000286102295 + sun_angle + 0.043982300907373428 + sunlight_color + + 3 + 3 + 3 + 1 + + + diff --git a/indra/newview/app_settings/windlight/skies/Surreal%20%2D%20Summer%20%28Paulina%29.xml b/indra/newview/app_settings/windlight/skies/Surreal%20%2D%20Summer%20%28Paulina%29.xml new file mode 100644 index 000000000..6929904cc --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/Surreal%20%2D%20Summer%20%28Paulina%29.xml @@ -0,0 +1,141 @@ + + + ambient + + 1.5 + 2.2799999713897705 + 0.93000000715255737 + 2.2799999713897705 + + blue_density + + 1.4800000190734863 + 1.4399999380111694 + 2 + 2 + + blue_horizon + + 1.2400000095367432 + 1.1399999856948853 + 0.71999996900558472 + 1.2799999713897705 + + cloud_color + + 0.2199999988079071 + 0.23999999463558197 + 0.68999999761581421 + 0.68999999761581421 + + cloud_pos_density1 + + 0.72999995946884155 + 0.34000000357627869 + 0.32999998331069946 + 1 + + cloud_pos_density2 + + 0.28999999165534973 + 0.84999996423721313 + 0.019999999552965164 + 1 + + cloud_scale + + 0.42999997735023499 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.499399946934318 + 10.010999746491507 + + cloud_shadow + + 0.65999996662139893 + 0 + 0 + 1 + + density_multiplier + + 1.9999999494757503e-005 + 0 + 0 + 1 + + distance_multiplier + + 15.5 + 0 + 0 + 1 + + east_angle + 4.1469020843505859 + enable_cloud_scroll + + 0 + 0 + + gamma + + 0.14000000059604645 + 0 + 0 + 1 + + glow + + 10 + 0.0010000000474974513 + -1.0499999523162842 + 1 + + haze_density + + 1.6999999284744263 + 0 + 0 + 1 + + haze_horizon + + 0.52999997138977051 + 0.19915598630905151 + 0.19915598630905151 + 1 + + lightnorm + + -0.82513469457626343 + 0.21200692653656006 + 0.52364665269851685 + 1 + + max_y + + 456 + 0 + 0 + 1 + + preset_num + 18 + star_brightness + 1.2200000286102295 + sun_angle + 6.0695571899414062 + sunlight_color + + 3 + 1.3499999046325684 + 3 + 3 + + + diff --git a/indra/newview/app_settings/windlight/skies/names.txt b/indra/newview/app_settings/windlight/skies/names.txt new file mode 100644 index 000000000..2d80cde58 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/names.txt @@ -0,0 +1,77 @@ +- Orac - Black fog 1 +- Orac - Black fog 2 +- Orac - Drawing blue +- Orac - Drawing extreme +- Orac - Drawing green +- Orac - Drawing red +- Orac - Drawing underground comic +- Orac - fog +- Orac - gray +- Orac - green +AnaLu - outdoor city night +AnaLutetia - AvatarOpt(2) +AnaLutetia - AvatarOpt2 whiter +AnaLutetia - outdoor +AnaLutetia - Studio Light +AnaLutetia - STUDIO2 +AnaLutetia - STUDIO3 +AnaLutetia-default +AnaLutetia-outdoor2(2) +AnaLutetia +B5-ShadowDancing +CB'%s %Rouge 1 +CB'%s %Rouge 2 +CB'%s %Rouge 3 +CB'%s %Rouge 4 +CB'%s %Rouge 5 +CB'%s %Rouge 6 +Fairy blue (Paulina) +Fairy dark blue (Paulina) +Fairy light pink (Paulina) +Fairy warm pinks (Paulina) +PaperSnow +Places Abracadabra +Places Abracadabra2 +Places Abracadabra3 +Places alirium +Places Annamaria +Places Astryls Wild +Places Babbage +Places Beach Cay Surreal +Places Beach Cay +Places Bentham +Places Cornfield +Places Cromac +Places Crucible +Places District8 +Places Duskwood +Places Eridu +Places Erie +Places Eugene 2 +Places Eugene BL +Places Greed +Places Greed2 +Places Imagine +Places Kingsport +Places Kunming +Places Las Legunas +Places Legacies +Places Midian +Places Mother +Places Old New York +Places Paris 2 +Places Paris +Places Pathfinder +Places Sand +Places Terre Des Mortes +Places Urbania +Places Wiccan +Places-Embryo +StrawberrySingh.com - Closeups +Sunset Pink (Paulina) +Surreal - Brazil (Paulina) +Surreal - Fire (Paulina) +Surreal - Flirt (Paulina) +Surreal - Night (Paulina) +Surreal - Summer (Paulina) +wastelands \ No newline at end of file diff --git a/indra/newview/app_settings/windlight/skies/wastelands.xml b/indra/newview/app_settings/windlight/skies/wastelands.xml new file mode 100644 index 000000000..ffb22cf37 --- /dev/null +++ b/indra/newview/app_settings/windlight/skies/wastelands.xml @@ -0,0 +1,141 @@ + + + ambient + + 0.29999998211860657 + 0.17999999225139618 + 0 + 0.29999998211860657 + + blue_density + + 0.97999995946884155 + 0.97999995946884155 + 0.97999995946884155 + 0.48999997973442078 + + blue_horizon + + 0.31999999284744263 + 0.31999999284744263 + 0.31999999284744263 + 0.15999999642372131 + + cloud_color + + 0.50999999046325684 + 0.50999999046325684 + 0.50999999046325684 + 1 + + cloud_pos_density1 + + 0.5 + 0.5 + 1 + 1 + + cloud_pos_density2 + + 0.5 + 0.5 + 0.125 + 1 + + cloud_scale + + 0.079999998211860657 + 0 + 0 + 1 + + cloud_scroll_rate + + 10.49940013885498 + 10.01099967956543 + + cloud_shadow + + 0.25999999046325684 + 0 + 0 + 1 + + density_multiplier + + 0.00031000000308267772 + 0 + 0 + 1 + + distance_multiplier + + 6.8000001907348633 + 0 + 0 + 1 + + east_angle + 0 + enable_cloud_scroll + + 1 + 1 + + gamma + + 1 + 0 + 0 + 1 + + glow + + 5 + 0.0010000000474974513 + -0.33000001311302185 + 1 + + haze_density + + 1.8899999856948853 + 0 + 0 + 1 + + haze_horizon + + 0.23999999463558197 + 0.19915600121021271 + 0.19915600121021271 + 1 + + lightnorm + + 0 + 0.36227512359619141 + -0.93207120895385742 + 0 + + max_y + + 752 + 0 + 0 + 1 + + preset_num + 21 + star_brightness + 0 + sun_angle + 2.7708849906921387 + sunlight_color + + 1.3799998760223389 + 1.3799998760223389 + 1.3799998760223389 + 0.45999997854232788 + + + \ No newline at end of file diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml index 47433ae01..c018f19a8 100755 --- a/indra/newview/character/avatar_lad.xml +++ b/indra/newview/character/avatar_lad.xml @@ -1320,6 +1320,7 @@ name="Hair_Egg_Head" wearable="hair" edit_group="hair_style" + cross_wearable="true" value_min="-1.3" value_max="1"> @@ -1331,6 +1332,7 @@ name="Hair_Squash_Stretch_Head" wearable="hair" edit_group="hair_style" + cross_wearable="true" value_min="-.5" value_max="1"> @@ -1342,6 +1344,7 @@ name="Hair_Square_Head" wearable="hair" edit_group="hair_style" + cross_wearable="true" value_min="0" value_max="1"> @@ -1353,6 +1356,7 @@ name="Hair_Round_Head" wearable="hair" edit_group="hair_style" + cross_wearable="true" value_min="0" value_max="1"> @@ -1364,6 +1368,7 @@ name="Hair_Forehead_Round" wearable="hair" edit_group="hair_style" + cross_wearable="true" value_min="0" value_max="1"> @@ -1375,6 +1380,7 @@ name="Hair_Forehead_Slant" wearable="hair" edit_group="hair_style" + cross_wearable="true" value_min="0" value_max="1"> @@ -1386,6 +1392,7 @@ name="Shear_Head_Hair" wearable="hair" edit_group="hair_style" + cross_wearable="true" value_min="-2" value_max="2"> @@ -1397,6 +1404,7 @@ name="Elongate_Head_Hair" wearable="hair" edit_group="hair_style" + cross_wearable="true" value_min="-1" value_max="1"> @@ -4902,6 +4910,7 @@ clothing_morph="false" wearable="skirt" edit_group="skirt" + cross_wearable="true" label_min="form fitting" label_max="loose" value_min="0" @@ -4936,6 +4945,7 @@ label="legs skirt" wearable="skirt" edit_group="driven" + cross_wearable="true" value_min="-1" value_max="1" value_default="0"> @@ -4948,6 +4958,7 @@ name="skirt_bigbutt" wearable="skirt" edit_group="driven" + cross_wearable="true" label="bigbutt skirt" label_min="less" label_max="more" @@ -4962,6 +4973,7 @@ name="skirt_belly" wearable="skirt" edit_group="driven" + cross_wearable="true" label="big belly skirt" value_min="0" value_max="1"> @@ -4973,6 +4985,7 @@ group="1" wearable="skirt" edit_group="driven" + cross_wearable="true" name="skirt_saddlebags" value_min="-.5" value_max="3"> @@ -4985,6 +4998,7 @@ name="skirt_chubby" wearable="skirt" edit_group="driven" + cross_wearable="true" label_min="less" label_max="more" value_min="0" @@ -4999,6 +5013,7 @@ name="skirt_lovehandles" wearable="skirt" edit_group="driven" + cross_wearable="true" label_min="less" label_max="more" value_min="-1" @@ -5018,6 +5033,7 @@ name="skirt_male" wearable="skirt" edit_group="driven" + cross_wearable="true" value_min="0" value_max="1"> @@ -7623,6 +7639,7 @@ id="1020" group="1" edit_group="driven" + wearable="jacket" name="jacket Sleeve Length" value_min="0" value_max="1"> @@ -7635,6 +7652,7 @@ @@ -8428,6 +8448,7 @@ group="1" wearable="jacket" edit_group="driven" + cross_wearable="true" name="jacket bottom length lower bump" value_min="0" value_max="1"> @@ -8906,7 +8927,7 @@ id="1017" /> + id="1035" /> getHandle(), pos_local); } else if(regionp && teleportCore(regionp->getHandle() == to_region_handle_global((F32)pos_global.mdV[VX], (F32)pos_global.mdV[VY]))) @@ -3631,6 +3631,10 @@ void LLAgent::teleportViaLocationLookAt(const LLVector3d& pos_global) mbTeleportKeepsLookAt = true; gAgentCamera.setFocusOnAvatar(FALSE, ANIMATE); // detach camera form avatar, so it keeps direction U64 region_handle = to_region_handle(pos_global); + LLSimInfo* simInfo = LLWorldMap::instance().simInfoFromHandle(region_handle); + if(simInfo) + region_handle = simInfo->getHandle(); + LLVector3 pos_local = (LLVector3)(pos_global - from_region_handle(region_handle)); teleportRequest(region_handle, pos_local, getTeleportKeepsLookAt()); } diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index ef9ecb967..886348d1a 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -64,6 +64,8 @@ LLAgentWearables gAgentWearables; +BOOL LLAgentWearables::mInitialWearablesUpdateReceived = FALSE; + using namespace LLVOAvatarDefines; LLAgentWearables::LLAgentWearables() : mWearablesLoaded(FALSE) @@ -104,8 +106,8 @@ LLAgentWearables::sendAgentWearablesUpdateCallback::~sendAgentWearablesUpdateCal } LLAgentWearables::addWearableToAgentInventoryCallback::addWearableToAgentInventoryCallback( - LLPointer cb, S32 index, LLWearable* wearable, U32 todo) : - mIndex(index), + LLPointer cb, LLWearableType::EType type, LLWearable* wearable, U32 todo) : + mType(type), mWearable(wearable), mTodo(todo), mCB(cb) @@ -118,7 +120,7 @@ void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& i if (inv_item.isNull()) return; - gAgentWearables.addWearabletoAgentInventoryDone(mIndex, inv_item, mWearable); + gAgentWearables.addWearabletoAgentInventoryDone(mType, inv_item, mWearable); if (mTodo & CALL_UPDATE) { @@ -133,28 +135,41 @@ void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& i */ if (mTodo & CALL_CREATESTANDARDDONE) { - gAgentWearables.createStandardWearablesDone(mIndex); + gAgentWearables.createStandardWearablesDone(mType); } if (mTodo & CALL_MAKENEWOUTFITDONE) { - gAgentWearables.makeNewOutfitDone(mIndex); + gAgentWearables.makeNewOutfitDone(mType); } } -void LLAgentWearables::addWearabletoAgentInventoryDone( - S32 index, +void LLAgentWearables::addWearabletoAgentInventoryDone(const LLWearableType::EType type, const LLUUID& item_id, LLWearable* wearable) { + llinfos << "type " << type << " item " << item_id.asString() << llendl; + if (item_id.isNull()) return; - LLUUID old_item_id = mWearableEntry[index].mItemID; - mWearableEntry[index].mItemID = item_id; - mWearableEntry[index].mWearable = wearable; - if (old_item_id.notNull()) - gInventory.addChangedMask(LLInventoryObserver::LABEL, old_item_id); + LLUUID old_item_id = getWearableItemID(type); + if (wearable) + { + wearable->setItemID(item_id); + + if (old_item_id.notNull()) + { + gInventory.addChangedMask(LLInventoryObserver::LABEL, old_item_id); + setWearable(type,wearable); + } + else + { + pushWearable(type,wearable); + } + } + gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id); + LLViewerInventoryItem* item = gInventory.getItem(item_id); if(item && wearable) { @@ -172,26 +187,27 @@ void LLAgentWearables::addWearabletoAgentInventoryDone( void LLAgentWearables::sendAgentWearablesUpdate() { // First make sure that we have inventory items for each wearable - S32 i; - for(i=0; i < LLWearableType::WT_COUNT; ++i) + for (S32 type=0; type < LLWearableType::WT_COUNT; ++type) { - LLWearable* wearable = mWearableEntry[ i ].mWearable; - if (wearable) { - if( mWearableEntry[ i ].mItemID.isNull() ) + LLWearable* wearable = getWearable((LLWearableType::EType)type); + if (wearable) { - LLPointer cb = - new addWearableToAgentInventoryCallback( - LLPointer(NULL), - i, - wearable, - addWearableToAgentInventoryCallback::CALL_NONE); - addWearableToAgentInventory(cb, wearable); - } - else - { - gInventory.addChangedMask( LLInventoryObserver::LABEL, - mWearableEntry[i].mItemID ); + if (wearable->getItemID().isNull()) + { + LLPointer cb = + new addWearableToAgentInventoryCallback( + LLPointer(NULL), + (LLWearableType::EType)type, + wearable, + addWearableToAgentInventoryCallback::CALL_NONE); + addWearableToAgentInventory(cb, wearable); + } + else + { + gInventory.addChangedMask( LLInventoryObserver::LABEL, + wearable->getItemID()); + } } } } @@ -209,19 +225,19 @@ void LLAgentWearables::sendAgentWearablesUpdate() gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - LL_DEBUGS("Wearables") << "sendAgentWearablesUpdate()" << LL_ENDL; - for(i=0; i < LLWearableType::WT_COUNT; ++i) + lldebugs << "sendAgentWearablesUpdate()" << llendl; + for (S32 type=0; type < LLWearableType::WT_COUNT; ++type) { gMessageSystem->nextBlockFast(_PREHASH_WearableData); - U8 type_u8 = (U8)i; + U8 type_u8 = (U8)type; gMessageSystem->addU8Fast(_PREHASH_WearableType, type_u8 ); - LLWearable* wearable = mWearableEntry[ i ].mWearable; + LLWearable* wearable = getWearable((LLWearableType::EType)type); if( wearable ) { - LL_DEBUGS("Wearables") << "Sending wearable " << wearable->getName() << " mItemID = " << mWearableEntry[ i ].mItemID << LL_ENDL; - LLUUID item_id = mWearableEntry[i].mItemID; + LLUUID item_id = wearable->getItemID(); + LL_DEBUGS("Wearables") << "Sending wearable " << wearable->getName() << " mItemID = " << item_id << LL_ENDL; const LLViewerInventoryItem *item = gInventory.getItem(item_id); if (item && item->getIsLinkType()) { @@ -233,26 +249,37 @@ void LLAgentWearables::sendAgentWearablesUpdate() } else { - LL_DEBUGS("Wearables") << "Not wearing wearable type " << LLWearableType::getTypeName((LLWearableType::EType)i) << LL_ENDL; + LL_DEBUGS("Wearables") << "Not wearing wearable type " << LLWearableType::getTypeName((LLWearableType::EType)type) << LL_ENDL; gMessageSystem->addUUIDFast(_PREHASH_ItemID, LLUUID::null ); } - LL_DEBUGS("Wearables") << " " << LLWearableType::getTypeLabel((LLWearableType::EType)i) << " : " << (wearable ? wearable->getAssetID() : LLUUID::null) << LL_ENDL; + lldebugs << " " << LLWearableType::getTypeLabel((LLWearableType::EType)type) << ": " << (wearable ? wearable->getAssetID() : LLUUID::null) << llendl; } gAgent.sendReliableMessage(); } -void LLAgentWearables::saveWearable( LLWearableType::EType type, BOOL send_update ) +void LLAgentWearables::saveWearable(const LLWearableType::EType type, BOOL send_update, + const std::string new_name) { - LLWearable* old_wearable = mWearableEntry[(S32)type].mWearable; - if( old_wearable && (old_wearable->isDirty() || old_wearable->isOldVersion()) ) + LLWearable* old_wearable = getWearable(type); + if(!old_wearable) return; + bool name_changed = !new_name.empty() && (new_name != old_wearable->getName()); + if (name_changed || old_wearable->isDirty() || old_wearable->isOldVersion()) { - LLWearable* new_wearable = gWearableList.createCopyFromAvatar( old_wearable ); - mWearableEntry[(S32)type].mWearable = new_wearable; + LLUUID old_item_id = old_wearable->getItemID(); + LLWearable* new_wearable = LLWearableList::instance().createCopyFromAvatar( old_wearable ); + new_wearable->setItemID(old_item_id); // should this be in LLWearable::copyDataFrom()? + setWearable(type,new_wearable); - LLInventoryItem* item = gInventory.getItem(mWearableEntry[(S32)type].mItemID); + LLInventoryItem* item = gInventory.getItem(old_item_id); if( item ) { + std::string item_name = item->getName(); + if (name_changed) + { + llinfos << "saveWearable changing name from " << item->getName() << " to " << new_name << llendl; + item_name = new_name; + } // Update existing inventory item LLPointer template_item = new LLViewerInventoryItem(item->getUUID(), @@ -261,7 +288,7 @@ void LLAgentWearables::saveWearable( LLWearableType::EType type, BOOL send_updat new_wearable->getAssetID(), new_wearable->getAssetType(), item->getInventoryType(), - item->getName(), + item_name, item->getDescription(), item->getSaleInfo(), item->getFlags(), @@ -269,6 +296,10 @@ void LLAgentWearables::saveWearable( LLWearableType::EType type, BOOL send_updat template_item->setTransactionID(new_wearable->getTransactionID()); template_item->updateServer(FALSE); gInventory.updateItem(template_item); + if (name_changed) + { + gInventory.notifyObservers(); + } } else { @@ -281,14 +312,14 @@ void LLAgentWearables::saveWearable( LLWearableType::EType type, BOOL send_updat LLPointer cb = new addWearableToAgentInventoryCallback( LLPointer(NULL), - (S32)type, + type, new_wearable, todo); addWearableToAgentInventory(cb, new_wearable); return; } - gAgentAvatarp->wearableUpdated( type ); + gAgentAvatarp->wearableUpdated( type, TRUE ); if( send_update ) { @@ -297,10 +328,9 @@ void LLAgentWearables::saveWearable( LLWearableType::EType type, BOOL send_updat } } -void LLAgentWearables::saveWearableAs( - LLWearableType::EType type, - const std::string& new_name, - BOOL save_in_lost_and_found) +void LLAgentWearables::saveWearableAs(const LLWearableType::EType type, + const std::string& new_name, + BOOL save_in_lost_and_found) { if(!isWearableCopyable(type)) { @@ -313,7 +343,8 @@ void LLAgentWearables::saveWearableAs( llwarns << "LLAgent::saveWearableAs() no old wearable." << llendl; return; } - LLInventoryItem* item = gInventory.getItem(mWearableEntry[type].mItemID); + + LLInventoryItem* item = gInventory.getItem(getWearableItemID(type)); if(!item) { llwarns << "LLAgent::saveWearableAs() no inventory item." << llendl; @@ -321,7 +352,7 @@ void LLAgentWearables::saveWearableAs( } std::string trunc_name(new_name); LLStringUtil::truncate(trunc_name, DB_INV_ITEM_NAME_STR_LEN); - LLWearable* new_wearable = gWearableList.createCopyFromAvatar( + LLWearable* new_wearable = LLWearableList::instance().createCopyFromAvatar( old_wearable, trunc_name); LLPointer cb = @@ -356,7 +387,7 @@ void LLAgentWearables::saveWearableAs( { std::string old_name = old_wearable->getName(); old_wearable->setName( new_name ); - LLWearable* new_wearable = gWearableList.createCopyFromAvatar( old_wearable ); + LLWearable* new_wearable = LLWearableList::instance().createCopyFromAvatar( old_wearable ); old_wearable->setName( old_name ); LLUUID category_id; @@ -393,11 +424,13 @@ void LLAgentWearables::saveWearableAs( void LLAgentWearables::revertWearable( LLWearableType::EType type ) { - LLWearable* wearable = mWearableEntry[(S32)type].mWearable; + LLWearable* wearable = getWearable(type); + llassert(wearable); if( wearable ) { wearable->writeToAvatar( TRUE ); } + gAgent.sendAgentSetAppearance(); } @@ -428,14 +461,17 @@ void LLAgentWearables::setWearableName( const LLUUID& item_id, const std::string { for( S32 i=0; i < LLWearableType::WT_COUNT; i++ ) { - if( mWearableEntry[i].mItemID == item_id ) + LLUUID curr_item_id = getWearableItemID((LLWearableType::EType)i); + if( curr_item_id == item_id ) { - LLWearable* old_wearable = mWearableEntry[i].mWearable; + LLWearable* old_wearable = getWearable((LLWearableType::EType)i); llassert( old_wearable ); + if (!old_wearable) continue; std::string old_name = old_wearable->getName(); old_wearable->setName( new_name ); - LLWearable* new_wearable = gWearableList.createCopy( old_wearable ); + LLWearable* new_wearable = LLWearableList::instance().createCopy(old_wearable); + new_wearable->setItemID(item_id); LLInventoryItem* item = gInventory.getItem(item_id); if(item) { @@ -443,7 +479,7 @@ void LLAgentWearables::setWearableName( const LLUUID& item_id, const std::string } old_wearable->setName( old_name ); - mWearableEntry[i].mWearable = new_wearable; + setWearable((LLWearableType::EType)i,new_wearable); sendAgentWearablesUpdate(); break; } @@ -459,9 +495,10 @@ BOOL LLAgentWearables::isWearableModifiable(LLWearableType::EType type) const BOOL LLAgentWearables::isWearableModifiable(const LLUUID& item_id) const { - if(!item_id.isNull()) + const LLUUID& linked_id = gInventory.getLinkedItemID(item_id); + if (linked_id.notNull()) { - LLInventoryItem* item = gInventory.getItem(item_id); + LLInventoryItem* item = gInventory.getItem(linked_id); if(item && item->getPermissions().allowModifyBy(gAgent.getID(), gAgent.getGroupID())) { @@ -520,11 +557,13 @@ LLInventoryItem* LLAgentWearables::getWearableInventoryItem(LLWearableType::ETyp const LLWearable* LLAgentWearables::getWearableFromItemID( const LLUUID& item_id ) const { + const LLUUID& base_item_id = gInventory.getLinkedItemID(item_id); for( S32 i=0; i < LLWearableType::WT_COUNT; i++ ) { - if( mWearableEntry[i].mItemID == item_id ) + const LLWearable * curr_wearable = getWearable((LLWearableType::EType)i); + if (curr_wearable && (curr_wearable->getItemID() == base_item_id)) { - return mWearableEntry[i].mWearable; + return curr_wearable; } } return NULL; @@ -532,16 +571,30 @@ const LLWearable* LLAgentWearables::getWearableFromItemID( const LLUUID& item_id LLWearable* LLAgentWearables::getWearableFromItemID( const LLUUID& item_id ) { + const LLUUID& base_item_id = gInventory.getLinkedItemID(item_id); for( S32 i=0; i < LLWearableType::WT_COUNT; i++ ) { - if( mWearableEntry[i].mItemID == item_id ) + LLWearable * curr_wearable = getWearable((LLWearableType::EType)i); + if (curr_wearable && (curr_wearable->getItemID() == base_item_id)) { - return mWearableEntry[i].mWearable; + return curr_wearable; } } return NULL; } +LLWearable* LLAgentWearables::getWearableFromAssetID(const LLUUID& asset_id) +{ + for (S32 i=0; i < LLWearableType::WT_COUNT; i++) + { + LLWearable * curr_wearable = getWearable((LLWearableType::EType)i); + if (curr_wearable && (curr_wearable->getAssetID() == asset_id)) + { + return curr_wearable; + } + } + return NULL; +} void LLAgentWearables::sendAgentWearablesRequest() { @@ -554,23 +607,213 @@ void LLAgentWearables::sendAgentWearablesRequest() // Used to enable/disable menu items. // static -BOOL LLAgentWearables::selfHasWearable( void* userdata ) +BOOL LLAgentWearables::selfHasWearable(LLWearableType::EType type) { - LLWearableType::EType type = (LLWearableType::EType)(intptr_t)userdata; - return gAgentWearables.getWearable( type ) != NULL; -} -LLWearable* LLAgentWearables::getWearable(const LLWearableType::EType type) -{ - return (type < LLWearableType::WT_COUNT) ? mWearableEntry[ type ].mWearable : NULL; -} -const LLWearable* LLAgentWearables::getWearable(const LLWearableType::EType type) const -{ - return (type < LLWearableType::WT_COUNT) ? mWearableEntry[ type ].mWearable : NULL; + return (gAgentWearables.getWearableCount(type) > 0); } -const LLUUID &LLAgentWearables::getWearableItemID(LLWearableType::EType type) const +LLWearable* LLAgentWearables::getWearable(const LLWearableType::EType type) { - return (type < LLWearableType::WT_COUNT) ? mWearableEntry[ type ].mItemID : LLUUID::null; + wearableentry_map_t::iterator wearable_iter = mWearableDatas.find(type); + if (wearable_iter == mWearableDatas.end()) + { + return NULL; + } + U32 index = 0; //Remove when multi-wearables are implemented. + wearableentry_vec_t& wearable_vec = wearable_iter->second; + if (index>=wearable_vec.size()) + { + return NULL; + } + else + { + return wearable_vec[index]; + } +} + +void LLAgentWearables::setWearable(const LLWearableType::EType type, LLWearable *wearable) +{ + + LLWearable *old_wearable = getWearable(type); + if (!old_wearable) + { + pushWearable(type,wearable); + return; + } + + U32 index = 0; //Remove when multi-wearables are implemented. + wearableentry_map_t::iterator wearable_iter = mWearableDatas.find(type); + if (wearable_iter == mWearableDatas.end()) + { + llwarns << "invalid type, type " << type << " index " << index << llendl; + return; + } + wearableentry_vec_t& wearable_vec = wearable_iter->second; + if (index>=wearable_vec.size()) + { + llwarns << "invalid index, type " << type << " index " << index << llendl; + } + else + { + wearable_vec[index] = wearable; + old_wearable->setLabelUpdated(); + wearableUpdated(wearable); + } +} + +U32 LLAgentWearables::pushWearable(const LLWearableType::EType type, LLWearable *wearable) +{ + if (wearable == NULL) + { + // no null wearables please! + llwarns << "Null wearable sent for type " << type << llendl; + return MAX_CLOTHING_PER_TYPE; + } + if (type < LLWearableType::WT_COUNT || mWearableDatas[type].size() < MAX_CLOTHING_PER_TYPE) + { + mWearableDatas[type].push_back(wearable); + wearableUpdated(wearable); + return mWearableDatas[type].size()-1; + } + return MAX_CLOTHING_PER_TYPE; +} + +void LLAgentWearables::wearableUpdated(LLWearable *wearable) +{ + gAgentAvatarp->wearableUpdated(wearable->getType(), FALSE); + wearable->refreshName(); + wearable->setLabelUpdated(); +} + +void LLAgentWearables::popWearable(LLWearable *wearable) +{ + if (wearable == NULL) + { + // nothing to do here. move along. + return; + } + + U32 index = 0; //Remove when multi-wearables are implemented. + LLWearableType::EType type = wearable->getType(); + + if (index < MAX_CLOTHING_PER_TYPE && index < getWearableCount(type)) + { + popWearable(type); + } +} + +void LLAgentWearables::popWearable(const LLWearableType::EType type) +{ + LLWearable *wearable = getWearable(type); + if (wearable) + { + mWearableDatas[type].erase(mWearableDatas[type].begin()); + gAgentAvatarp->wearableUpdated(wearable->getType(), TRUE); + wearable->setLabelUpdated(); + } +} + +U32 LLAgentWearables::getWearableIndex(const LLWearable *wearable) const +{ + if (wearable == NULL) + { + return MAX_CLOTHING_PER_TYPE; + } + + const LLWearableType::EType type = wearable->getType(); + wearableentry_map_t::const_iterator wearable_iter = mWearableDatas.find(type); + if (wearable_iter == mWearableDatas.end()) + { + llwarns << "tried to get wearable index with an invalid type!" << llendl; + return MAX_CLOTHING_PER_TYPE; + } + const wearableentry_vec_t& wearable_vec = wearable_iter->second; + for(U32 index = 0; index < wearable_vec.size(); index++) + { + if (wearable_vec[index] == wearable) + { + return index; + } + } + + return MAX_CLOTHING_PER_TYPE; +} + + +const LLWearable* LLAgentWearables::getWearable(const LLWearableType::EType type) const +{ + wearableentry_map_t::const_iterator wearable_iter = mWearableDatas.find(type); + if (wearable_iter == mWearableDatas.end()) + { + return NULL; + } + U32 index = 0; //Remove when multi-wearables are implemented. + const wearableentry_vec_t& wearable_vec = wearable_iter->second; + if (index>=wearable_vec.size()) + { + return NULL; + } + else + { + return wearable_vec[index]; + } +} + +LLWearable* LLAgentWearables::getTopWearable(const LLWearableType::EType type) +{ + U32 count = getWearableCount(type); + if ( count == 0) + { + return NULL; + } + + return getWearable(type); +} + +LLWearable* LLAgentWearables::getBottomWearable(const LLWearableType::EType type) +{ + if (getWearableCount(type) == 0) + { + return NULL; + } + + return getWearable(type); +} + +U32 LLAgentWearables::getWearableCount(const LLWearableType::EType type) const +{ + wearableentry_map_t::const_iterator wearable_iter = mWearableDatas.find(type); + if (wearable_iter == mWearableDatas.end()) + { + return 0; + } + const wearableentry_vec_t& wearable_vec = wearable_iter->second; + return wearable_vec.size(); +} + +U32 LLAgentWearables::getWearableCount(const U32 tex_index) const +{ + const LLWearableType::EType wearable_type = LLVOAvatarDictionary::getTEWearableType((LLVOAvatarDefines::ETextureIndex)tex_index); + return getWearableCount(wearable_type); +} + + +const LLUUID LLAgentWearables::getWearableItemID(LLWearableType::EType type) const +{ + const LLWearable *wearable = getWearable(type); + if (wearable) + return wearable->getItemID(); + else + return LLUUID(); +} + +const LLUUID LLAgentWearables::getWearableAssetID(LLWearableType::EType type) const +{ + const LLWearable *wearable = getWearable(type); + if (wearable) + return wearable->getAssetID(); + else + return LLUUID(); } BOOL LLAgentWearables::isWearingItem( const LLUUID& item_id ) const @@ -583,21 +826,21 @@ BOOL LLAgentWearables::isWearingItem( const LLUUID& item_id ) const void LLAgentWearables::processAgentInitialWearablesUpdate( LLMessageSystem* mesgsys, void** user_data ) { // We should only receive this message a single time. Ignore subsequent AgentWearablesUpdates - // that may result from AgentWearablesRequest having been sent more than once. - static bool first = true; - if (!first) return; - first = false; + // that may result from AgentWearablesRequest having been sent more than once. + if (mInitialWearablesUpdateReceived) + return; + mInitialWearablesUpdateReceived = true; LLUUID agent_id; gMessageSystem->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id ); - LLVOAvatar* avatar = gAgentAvatarp; - if( avatar && (agent_id == avatar->getID()) ) + if (isAgentAvatarValid() && (agent_id == gAgentAvatarp->getID())) { - gMessageSystem->getU32Fast(_PREHASH_AgentData, _PREHASH_SerialNum, gAgentQueryManager.mUpdateSerialNum ); + gMessageSystem->getU32Fast(_PREHASH_AgentData, _PREHASH_SerialNum, gAgentQueryManager.mUpdateSerialNum); + const S32 NUM_BODY_PARTS = 4; S32 num_wearables = gMessageSystem->getNumberOfBlocksFast(_PREHASH_WearableData); - if( num_wearables < 4 ) + if (num_wearables < NUM_BODY_PARTS) { // Transitional state. Avatars should always have at least their body parts (hair, eyes, shape and skin). // The fact that they don't have any here (only a dummy is sent) implies that this account existed @@ -607,9 +850,8 @@ void LLAgentWearables::processAgentInitialWearablesUpdate( LLMessageSystem* mesg //lldebugs << "processAgentInitialWearablesUpdate()" << llendl; // Add wearables - LLUUID asset_id_array[ LLWearableType::WT_COUNT ]; - S32 i; - for( i=0; i < num_wearables; i++ ) + std::pair asset_id_array[ LLWearableType::WT_COUNT ]; + for (S32 i=0; i < num_wearables; i++) { U8 type_u8 = 0; gMessageSystem->getU8Fast(_PREHASH_WearableData, _PREHASH_WearableType, type_u8, i ); @@ -636,26 +878,29 @@ void LLAgentWearables::processAgentInitialWearablesUpdate( LLMessageSystem* mesg continue; } - gAgentWearables.mWearableEntry[type].mItemID = item_id; - asset_id_array[type] = asset_id; + asset_id_array[type] = std::pair(asset_id,item_id); } - LL_DEBUGS("Wearables") << " " << LLWearableType::getTypeLabel(type) << " " << asset_id << " item id " << gAgentWearables.mWearableEntry[type].mItemID.asString() << LL_ENDL; + LL_DEBUGS("Wearables") << " " << LLWearableType::getTypeLabel(type) << " " << asset_id << " item id " << gAgentWearables.getWearableItemID(type).asString() << LL_ENDL; } LLCOFMgr::instance().fetchCOF(); // now that we have the asset ids...request the wearable assets - for( i = 0; i < LLWearableType::WT_COUNT; i++ ) + for(S32 i = 0; i < LLWearableType::WT_COUNT; i++ ) { - LL_DEBUGS("Wearables") << " fetching " << asset_id_array[i] << LL_ENDL; - if( !gAgentWearables.mWearableEntry[i].mItemID.isNull() ) + LL_DEBUGS("Wearables") << " fetching " << asset_id_array[i].first << LL_ENDL; + const LLUUID item_id = asset_id_array[i].second; + if( !item_id.isNull() ) { - gWearableList.getAsset( - asset_id_array[i], + LLWearableList::instance().getAsset( + asset_id_array[i].first, LLStringUtil::null, LLWearableType::getAssetType( (LLWearableType::EType) i ), - LLAgentWearables::onInitialWearableAssetArrived, (void*)(intptr_t)i ); + LLAgentWearables::onInitialWearableAssetArrived, + //This scary cast is to prevent messing with llwearablelist. Since ItemIDs are now tied to wearables, + // we now need to pass the ids to onInitialWearableAssetArrived so LLWearable::setItemID can be called there. + (void*)(intptr_t)new std::pair((LLWearableType::EType)i,item_id) ); } } @@ -668,7 +913,10 @@ void LLAgentWearables::processAgentInitialWearablesUpdate( LLMessageSystem* mesg // static void LLAgentWearables::onInitialWearableAssetArrived( LLWearable* wearable, void* userdata ) { - LLWearableType::EType type = (LLWearableType::EType)(intptr_t)userdata; + std::pair* wearable_data = (std::pair*)(intptr_t) userdata; + LLWearableType::EType type = wearable_data->first; + LLUUID item_id = wearable_data->second; + delete wearable_data; LLVOAvatar* avatar = gAgentAvatarp; if( !avatar ) @@ -679,7 +927,8 @@ void LLAgentWearables::onInitialWearableAssetArrived( LLWearable* wearable, void if( wearable ) { llassert( type == wearable->getType() ); - gAgentWearables.mWearableEntry[ type ].mWearable = wearable; + wearable->setItemID(item_id); + gAgentWearables.setWearable(type,wearable); // disable composites if initial textures are baked avatar->setupComposites(); @@ -687,7 +936,7 @@ void LLAgentWearables::onInitialWearableAssetArrived( LLWearable* wearable, void wearable->writeToAvatar( FALSE ); avatar->setCompositeUpdatesEnabled(TRUE); - gInventory.addChangedMask( LLInventoryObserver::LABEL, gAgentWearables.mWearableEntry[type].mItemID ); + gInventory.addChangedMask( LLInventoryObserver::LABEL, item_id ); } else { @@ -703,7 +952,7 @@ void LLAgentWearables::onInitialWearableAssetArrived( LLWearable* wearable, void gAgentWearables.mWearablesLoaded = TRUE; for( S32 i = 0; i < LLWearableType::WT_COUNT; i++ ) { - if( !gAgentWearables.mWearableEntry[i].mItemID.isNull() && !gAgentWearables.mWearableEntry[i].mWearable ) + if( !gAgentWearables.getWearableItemID((LLWearableType::EType)i).isNull() && !gAgentWearables.getWearable((LLWearableType::EType)i) ) { gAgentWearables.mWearablesLoaded = FALSE; break; @@ -733,21 +982,19 @@ void LLAgentWearables::recoverMissingWearable( LLWearableType::EType type ) // Try to recover by replacing missing wearable with a new one. LLNotificationsUtil::add("ReplacedMissingWearable"); lldebugs << "Wearable " << LLWearableType::getTypeLabel( type ) << " could not be downloaded. Replaced inventory item with default wearable." << llendl; - LLWearable* new_wearable = gWearableList.createNewWearable(type); + LLWearable* new_wearable = LLWearableList::instance().createNewWearable(type); - S32 type_s32 = (S32) type; - mWearableEntry[type_s32].mWearable = new_wearable; + setWearable(type,new_wearable); new_wearable->writeToAvatar( TRUE ); // Add a new one in the lost and found folder. // (We used to overwrite the "not found" one, but that could potentially // destory content.) JC - LLUUID lost_and_found_id = - gInventory.findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND); + const LLUUID lost_and_found_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND); LLPointer cb = new addWearableToAgentInventoryCallback( LLPointer(NULL), - type_s32, + type, new_wearable, addWearableToAgentInventoryCallback::CALL_RECOVERDONE); addWearableToAgentInventory( cb, new_wearable, lost_and_found_id, TRUE); @@ -756,17 +1003,8 @@ void LLAgentWearables::recoverMissingWearable( LLWearableType::EType type ) void LLAgentWearables::recoverMissingWearableDone() { // Have all the wearables that the avatar was wearing at log-in arrived or been fabricated? - mWearablesLoaded = TRUE; - for( S32 i = 0; i < LLWearableType::WT_COUNT; i++ ) - { - if( !mWearableEntry[i].mItemID.isNull() && !mWearableEntry[i].mWearable ) - { - mWearablesLoaded = FALSE; - break; - } - } - - if( mWearablesLoaded ) + updateWearablesLoaded(); + if (areWearablesLoaded()) { // Make sure that the server's idea of the avatar's wearables actually match the wearables. gAgent.sendAgentSetAppearance(); @@ -818,14 +1056,13 @@ void LLAgentWearables::createStandardWearables(BOOL female) once = true; donecb = new createStandardWearablesAllDoneCallback; } - llassert( mWearableEntry[i].mWearable == NULL ); - LLWearable* wearable = gWearableList.createNewWearable((LLWearableType::EType)i); - mWearableEntry[i].mWearable = wearable; + llassert(getWearableCount((LLWearableType::EType)i) == 0); + LLWearable* wearable = LLWearableList::instance().createNewWearable((LLWearableType::EType)i); // no need to update here... LLPointer cb = new addWearableToAgentInventoryCallback( donecb, - i, + (LLWearableType::EType)i, wearable, addWearableToAgentInventoryCallback::CALL_CREATESTANDARDDONE); addWearableToAgentInventory(cb, wearable, LLUUID::null, FALSE); @@ -834,7 +1071,7 @@ void LLAgentWearables::createStandardWearables(BOOL female) } void LLAgentWearables::createStandardWearablesDone(S32 index) { - LLWearable* wearable = mWearableEntry[index].mWearable; + LLWearable* wearable = getWearable((LLWearableType::EType)index); if (wearable) { @@ -847,8 +1084,7 @@ void LLAgentWearables::createStandardWearablesAllDone() // ... because sendAgentWearablesUpdate will notify inventory // observers. mWearablesLoaded = TRUE; - sendAgentWearablesUpdate(); - gAgent.sendAgentSetAppearance(); + updateServer(); // Treat this as the first texture entry message, if none received yet gAgentAvatarp->onFirstTEMessageReceived(); @@ -890,10 +1126,10 @@ void LLAgentWearables::makeNewOutfit( for( i = 0; i < count; ++i ) { S32 index = wearables_to_include[i]; - LLWearable* old_wearable = mWearableEntry[ index ].mWearable; + LLWearable* old_wearable = getWearable((LLWearableType::EType)index); if( old_wearable ) { - LLViewerInventoryItem* item = gInventory.getItem(mWearableEntry[index].mItemID); + LLViewerInventoryItem* item = gInventory.getItem(getWearableItemID((LLWearableType::EType)index)); if (fUseOutfits) { std::string strOrdering = llformat("@%d", item->getWearableType() * 100); @@ -920,7 +1156,7 @@ void LLAgentWearables::makeNewOutfit( if (fUseLinks || isWearableCopyable((LLWearableType::EType)index)) { - LLWearable* new_wearable = gWearableList.createCopy(old_wearable); + LLWearable* new_wearable = LLWearableList::instance().createCopy(old_wearable); if (rename_clothing) { new_wearable->setName(new_name); @@ -938,7 +1174,7 @@ void LLAgentWearables::makeNewOutfit( LLPointer cb = new addWearableToAgentInventoryCallback( cbdone, - index, + (LLWearableType::EType)index, new_wearable, todo); if (isWearableCopyable((LLWearableType::EType)index)) @@ -1053,9 +1289,9 @@ void LLAgentWearables::makeNewOutfit( } } -void LLAgentWearables::makeNewOutfitDone(S32 index) +void LLAgentWearables::makeNewOutfitDone(S32 type) { - LLUUID first_item_id = mWearableEntry[index].mItemID; + LLUUID first_item_id = getWearableItemID((LLWearableType::EType)type); // Open the inventory and select the first item we added. if( first_item_id.notNull() ) { @@ -1088,15 +1324,19 @@ void LLAgentWearables::addWearableToAgentInventory(LLPointerisDirty() ) @@ -1150,41 +1392,41 @@ bool LLAgentWearables::onRemoveWearableDialog(const LLSD& notification, const LL // Called by removeWearable() and onRemoveWearableDialog() to actually do the removal. void LLAgentWearables::removeWearableFinal( LLWearableType::EType type ) { - LLWearable* old_wearable = mWearableEntry[ type ].mWearable; + gInventory.addChangedMask( LLInventoryObserver::LABEL, getWearableItemID(type) ); - gInventory.addChangedMask( LLInventoryObserver::LABEL, mWearableEntry[type].mItemID ); - - mWearableEntry[ type ].mWearable = NULL; - mWearableEntry[ type ].mItemID.setNull(); - - queryWearableCache(); + LLWearable* old_wearable = getWearable(type); + //queryWearableCache(); if( old_wearable ) { + popWearable(old_wearable); old_wearable->removeFromAvatar( TRUE ); } + queryWearableCache(); + // Update the server - sendAgentWearablesUpdate(); - gAgent.sendAgentSetAppearance(); + updateServer(); gInventory.notifyObservers(); } void LLAgentWearables::copyWearableToInventory( LLWearableType::EType type ) { - LLWearable* wearable = mWearableEntry[ type ].mWearable; + LLWearable* wearable = getWearable(type); if( wearable ) { // Save the old wearable if it has changed. if( wearable->isDirty() ) { - wearable = gWearableList.createCopyFromAvatar( wearable ); - mWearableEntry[ type ].mWearable = wearable; + LLWearable * new_wearable = LLWearableList::instance().createCopyFromAvatar( wearable ); + new_wearable->setItemID(wearable->getItemID()); + setWearable(type,new_wearable); + wearable = new_wearable; } // Make a new entry in the inventory. (Put it in the same folder as the original item if possible.) LLUUID category_id; - LLInventoryItem* item = gInventory.getItem( mWearableEntry[ type ].mItemID ); + LLInventoryItem* item = gInventory.getItem( wearable->getItemID() ); if( item ) { category_id = item->getParentUUID(); @@ -1278,37 +1520,55 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it LLPointer new_item = items[i]; llassert(new_wearable); - LLWearableType::EType type = new_wearable->getType(); - wearables_to_remove[type] = FALSE; - - LLWearable* old_wearable = mWearableEntry[ type ].mWearable; - if( old_wearable ) + + if (new_wearable) { - const LLUUID& old_item_id = mWearableEntry[ type ].mItemID; - if( (old_wearable->getAssetID() == new_wearable->getAssetID()) && - (old_item_id == new_item->getUUID()) ) + LLWearableType::EType type = new_wearable->getType(); + wearables_to_remove[type] = FALSE; + + LLWearable* old_wearable = getWearable(type); + if( old_wearable ) { - lldebugs << "No change to wearable asset and item: " << LLWearableType::getTypeName( type ) << llendl; - continue; + const LLUUID& old_item_id = getWearableItemID(type); + if( (old_wearable->getAssetID() == new_wearable->getAssetID()) && + (old_item_id == new_item->getUUID()) ) + { + lldebugs << "No change to wearable asset and item: " << LLWearableType::getTypeName( type ) << llendl; + continue; + } + + gInventory.addChangedMask(LLInventoryObserver::LABEL, old_item_id); + + // Assumes existing wearables are not dirty. + if( old_wearable->isDirty() ) + { + llassert(0); + continue; + } } - gInventory.addChangedMask(LLInventoryObserver::LABEL, old_item_id); - - // Assumes existing wearables are not dirty. - if( old_wearable->isDirty() ) + if (isFirstPhysicsWearable(type, new_item, new_wearable)) { - llassert(0); - continue; + return; + } + + new_wearable->setName(new_item->getName()); + new_wearable->setItemID(new_item->getUUID()); + + if (LLWearableType::getAssetType(type) == LLAssetType::AT_BODYPART) + { + // exactly one wearable per body part + setWearable(type,new_wearable); + } + else if(old_wearable) //Remove when multi-wearables are implemented. + { + setWearable(type,new_wearable); + } + else + { + pushWearable(type,new_wearable); } } - - if (isFirstPhysicsWearable(type, new_item, new_wearable)) - { - return; - } - - mWearableEntry[ type ].mItemID = new_item->getUUID(); - mWearableEntry[ type ].mWearable = new_wearable; } std::vector wearables_being_removed; @@ -1317,11 +1577,11 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it { if( wearables_to_remove[i] ) { - wearables_being_removed.push_back(mWearableEntry[ i ].mWearable); - mWearableEntry[ i ].mWearable = NULL; + LLWearable* wearable = getWearable((LLWearableType::EType)i); + wearables_being_removed.push_back(getWearable((LLWearableType::EType)i)); + popWearable(wearable); - gInventory.addChangedMask(LLInventoryObserver::LABEL, mWearableEntry[ i ].mItemID); - mWearableEntry[ i ].mItemID.setNull(); + gInventory.addChangedMask(LLInventoryObserver::LABEL, wearable->getItemID()); } } @@ -1349,8 +1609,8 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it // Start rendering & update the server mWearablesLoaded = TRUE; - sendAgentWearablesUpdate(); - gAgent.sendAgentSetAppearance(); + updateServer(); + lldebugs << "setWearableOutfit() end" << llendl; } @@ -1359,9 +1619,14 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it // User has picked "wear on avatar" from a menu. void LLAgentWearables::setWearableItem( LLInventoryItem* new_item, LLWearable* new_wearable ) { + //LLAgentDumper dumper("setWearableItem"); + if (isWearingItem(new_item->getUUID())) + { + llwarns << "wearable " << new_item->getUUID() << " is already worn" << llendl; + return; + } LLWearableType::EType type = new_wearable->getType(); - LLWearable* old_wearable = mWearableEntry[ type ].mWearable; // [RLVa:KB] - Checked: 2009-07-07 (RLVa-1.0.0d) // Block if: we can't wear on that layer; or we're already wearing something there we can't take off @@ -1376,9 +1641,10 @@ void LLAgentWearables::setWearableItem( LLInventoryItem* new_item, LLWearable* n return; } + LLWearable* old_wearable = getWearable(type); if( old_wearable ) { - const LLUUID& old_item_id = mWearableEntry[ type ].mItemID; + const LLUUID& old_item_id = old_wearable->getItemID(); if( (old_wearable->getAssetID() == new_wearable->getAssetID()) && (old_item_id == new_item->getUUID()) ) { @@ -1391,7 +1657,7 @@ void LLAgentWearables::setWearableItem( LLInventoryItem* new_item, LLWearable* n // Bring up modal dialog: Save changes? Yes, No, Cancel LLSD payload; payload["item_id"] = new_item->getUUID(); - LLNotificationsUtil::add( "WearableSave", LLSD(), payload, boost::bind(LLAgentWearables::onSetWearableDialog, _1, _2, new_wearable)); + LLNotificationsUtil::add( "WearableSave", LLSD(), payload, boost::bind(onSetWearableDialog, _1, _2, new_wearable)); return; } } @@ -1440,9 +1706,14 @@ void LLAgentWearables::setWearableFinal( LLInventoryItem* new_item, LLWearable* // Replace the old wearable with a new one. llassert( new_item->getAssetUUID() == new_wearable->getAssetID() ); - LLUUID old_item_id = mWearableEntry[ type ].mItemID; - mWearableEntry[ type ].mItemID = new_item->getUUID(); - mWearableEntry[ type ].mWearable = new_wearable; + LLWearable *old_wearable = getWearable(type); + LLUUID old_item_id; + if (old_wearable) + { + old_item_id = old_wearable->getItemID(); + } + new_wearable->setItemID(new_item->getUUID()); + setWearable(type,new_wearable); if (old_item_id.notNull()) { @@ -1454,9 +1725,7 @@ void LLAgentWearables::setWearableFinal( LLInventoryItem* new_item, LLWearable* queryWearableCache(); new_wearable->writeToAvatar( TRUE ); - // Update the server - sendAgentWearablesUpdate(); - gAgent.sendAgentSetAppearance(); + updateServer(); } void LLAgentWearables::queryWearableCache() @@ -1551,10 +1820,8 @@ LLUUID LLAgentWearables::computeBakedTextureHash(LLVOAvatarDefines::EBakedTextur // User has picked "remove from avatar" from a menu. // static -void LLAgentWearables::userRemoveWearable( void* userdata ) +void LLAgentWearables::userRemoveWearable(const LLWearableType::EType &type) { - LLWearableType::EType type = (LLWearableType::EType)(intptr_t)userdata; - if( !(type==LLWearableType::WT_SHAPE || type==LLWearableType::WT_SKIN || type==LLWearableType::WT_HAIR || type==LLWearableType::WT_EYES) ) //&& //!((!gAgent.isTeen()) && ( type==WT_UNDERPANTS || type==WT_UNDERSHIRT )) ) { @@ -1562,7 +1829,7 @@ void LLAgentWearables::userRemoveWearable( void* userdata ) } } -void LLAgentWearables::userRemoveAllClothes( void* userdata ) +void LLAgentWearables::userRemoveAllClothes() { // We have to do this up front to avoid having to deal with the case of multiple wearables being dirty. if (gAgentCamera.cameraCustomizeAvatar()) @@ -1727,7 +1994,7 @@ void LLAgentWearables::userRemoveMultipleAttachments(llvo_vec_t& objects_to_remo gMessageSystem->sendReliable(gAgent.getRegionHost()); } -void LLAgentWearables::userRemoveAllAttachments( void* userdata ) +void LLAgentWearables::userRemoveAllAttachments() { if (!isAgentAvatarValid()) return; @@ -1823,3 +2090,22 @@ void LLAgentWearables::userAttachMultipleAttachments(LLInventoryModel::item_arra } } } +// MULTI-WEARABLE: DEPRECATED: item pending count relies on old messages that don't support multi-wearables. do not trust to be accurate +void LLAgentWearables::updateWearablesLoaded() +{ + mWearablesLoaded = TRUE; + for( S32 i = 0; i < LLWearableType::WT_COUNT; i++ ) + { + if( !getWearableItemID((LLWearableType::EType)i).isNull() && !getWearable((LLWearableType::EType)i) ) + { + mWearablesLoaded = FALSE; + break; + } + } + +} +void LLAgentWearables::updateServer() +{ + sendAgentWearablesUpdate(); + gAgent.sendAgentSetAppearance(); +} diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h index 6d052142b..70f9b0969 100644 --- a/indra/newview/llagentwearables.h +++ b/indra/newview/llagentwearables.h @@ -52,8 +52,6 @@ class LLInitialWearablesFetch; class LLViewerObject; class LLTexLayerTemplate; -typedef std::vector llvo_vec_t; - class LLAgentWearables : public LLInitClass { //-------------------------------------------------------------------- @@ -72,7 +70,7 @@ public: // LLInitClass interface static void initClass(); protected: - void createStandardWearablesDone(S32 index); + void createStandardWearablesDone(S32 type); void createStandardWearablesAllDone(); //-------------------------------------------------------------------- @@ -85,7 +83,7 @@ public: BOOL isWearableCopyable(LLWearableType::EType type) const; BOOL areWearablesLoaded() const; - //void updateWearablesLoaded(); + void updateWearablesLoaded(); //void checkWearablesLoaded() const; //bool canMoveWearable(const LLUUID& item_id, bool closer_to_body); @@ -101,24 +99,23 @@ public: // Accessors //-------------------------------------------------------------------- public: - const LLUUID& getWearableItemID(LLWearableType::EType type ) const; - //const LLUUID getWearableAssetID(LLWearableType::EType type, U32 index /*= 0*/) const; + const LLUUID getWearableItemID(LLWearableType::EType type ) const; + const LLUUID getWearableAssetID(LLWearableType::EType type) const; const LLWearable* getWearableFromItemID(const LLUUID& item_id) const; LLWearable* getWearableFromItemID(const LLUUID& item_id); - //LLWearable* getWearableFromAssetID(const LLUUID& asset_id); + LLWearable* getWearableFromAssetID(const LLUUID& asset_id); LLInventoryItem* getWearableInventoryItem(LLWearableType::EType type); - static BOOL selfHasWearable( void* userdata ); // userdata is LLWearableType::EType + static BOOL selfHasWearable(LLWearableType::EType type); LLWearable* getWearable( const LLWearableType::EType type ); const LLWearable* getWearable( const LLWearableType::EType type ) const; - //const LLWearable* getWearable(const LLWearableType::EType type, U32 index /*= 0*/) const; - //LLWearable* getTopWearable(const LLWearableType::EType type); - //LLWearable* getBottomWearable(const LLWearableType::EType type); - //U32 getWearableCount(const LLWearableType::EType type) const; - //U32 getWearableCount(const U32 tex_index) const; + LLWearable* getTopWearable(const LLWearableType::EType type); + LLWearable* getBottomWearable(const LLWearableType::EType type); + U32 getWearableCount(const LLWearableType::EType type) const; + U32 getWearableCount(const U32 tex_index) const; void copyWearableToInventory( LLWearableType::EType type ); - static const U32 MAX_CLOTHING_PER_TYPE = 5; + static const U32 MAX_CLOTHING_PER_TYPE = 1; //-------------------------------------------------------------------- @@ -127,18 +124,18 @@ public: private: // Low-level data structure setter - public access is via setWearableItem, etc. - //void setWearable(const LLWearableType::EType type, U32 index, LLWearable *wearable); - //U32 pushWearable(const LLWearableType::EType type, LLWearable *wearable); - //void wearableUpdated(LLWearable *wearable); - //void popWearable(LLWearable *wearable); - //void popWearable(const LLWearableType::EType type, U32 index); + void setWearable(const LLWearableType::EType type, LLWearable *wearable); + U32 pushWearable(const LLWearableType::EType type, LLWearable *wearable); + void wearableUpdated(LLWearable *wearable); + void popWearable(LLWearable *wearable); + void popWearable(const LLWearableType::EType type); public: void setWearableItem(LLInventoryItem* new_item, LLWearable* wearable); void setWearableOutfit(const LLInventoryItem::item_array_t& items, const LLDynamicArray< LLWearable* >& wearables, BOOL remove); void setWearableName(const LLUUID& item_id, const std::string& new_name); //void addLocalTextureObject(const LLWearableType::EType wearable_type, const LLVOAvatarDefines::ETextureIndex texture_type, U32 wearable_index); - //U32 getWearableIndex(LLWearable *wearable); + U32 getWearableIndex(const LLWearable *wearable) const; protected: void setWearableFinal( LLInventoryItem* new_item, LLWearable* new_wearable ); @@ -159,8 +156,7 @@ protected: * @param item_id The inventory item id of the new wearable to wear. * @param wearable The actual wearable data. */ - void addWearabletoAgentInventoryDone( - S32 index, + void addWearabletoAgentInventoryDone(const LLWearableType::EType type, const LLUUID& item_id, LLWearable* wearable); @@ -206,8 +202,8 @@ protected: void sendAgentWearablesUpdate(); void sendAgentWearablesRequest(); void queryWearableCache(); - //void updateServer(); - static void onInitialWearableAssetArrived(LLWearable* wearable, void* userdata); + void updateServer(); + static void onInitialWearableAssetArrived(LLWearable* wearable, void* userdata ); //-------------------------------------------------------------------- // Outfits @@ -224,14 +220,15 @@ public: BOOL rename_clothing); private: - void makeNewOutfitDone(S32 index); + void makeNewOutfitDone(S32 type); //-------------------------------------------------------------------- // Save Wearables //-------------------------------------------------------------------- public: - void saveWearableAs( LLWearableType::EType type, const std::string& new_name, BOOL save_in_lost_and_found ); - void saveWearable( LLWearableType::EType type, BOOL send_update = TRUE ); + void saveWearableAs(const LLWearableType::EType type, const std::string& new_name, BOOL save_in_lost_and_found ); + void saveWearable(const LLWearableType::EType type, BOOL send_update = TRUE, + const std::string new_name = ""); void saveAllWearables(); void revertWearable( LLWearableType::EType type ); @@ -241,14 +238,16 @@ public: // Static UI hooks //-------------------------------------------------------------------- public: - static void userRemoveWearable( void* userdata ); // userdata is LLWearableType::EType - static void userRemoveAllClothes( void* userdata ); // userdata is NULL + static void userRemoveWearable(const LLWearableType::EType &type); + static void userRemoveAllClothes(); + + typedef std::vector llvo_vec_t; + // static void userUpdateAttachments(LLInventoryModel::item_array_t& obj_item_array); // [SL:KB] - Patch: Appearance-SyncAttach | Checked: 2010-09-22 (Catznip-2.2.0a) | Added: Catznip-2.2.0a // Not the best way to go about this but other attempts changed far too much LL code to be a viable solution static void userUpdateAttachments(LLInventoryModel::item_array_t& obj_item_array, bool fAttachOnly = false); // [/SL:KB] - static void userRemoveAllAttachments( void* userdata); // userdata is NULLy); static void userRemoveMultipleAttachments(llvo_vec_t& llvo_array); static void userRemoveAllAttachments(); static void userAttachMultipleAttachments(LLInventoryModel::item_array_t& obj_item_array); @@ -276,14 +275,12 @@ private: //-------------------------------------------------------------------- // Member variables //-------------------------------------------------------------------- - struct LLWearableEntry - { - LLWearableEntry() : mItemID( LLUUID::null ), mWearable( NULL ) {} +private: + typedef std::vector wearableentry_vec_t; // all wearables of a certain type (EG all shirts) + typedef std::map wearableentry_map_t; // wearable "categories" arranged by wearable type + wearableentry_map_t mWearableDatas; - LLUUID mItemID; // ID of the inventory item in the agent's inventory. - LLWearable* mWearable; - }; - LLWearableEntry mWearableEntry[ LLWearableType::WT_COUNT ]; + static BOOL mInitialWearablesUpdateReceived; BOOL mWearablesLoaded; //-------------------------------------------------------------------------------- @@ -322,15 +319,14 @@ private: * @param wearable The wearable data. * @param todo Bitmask of actions to take on completion. */ - addWearableToAgentInventoryCallback( - LLPointer cb, - S32 index, - LLWearable* wearable, - U32 todo = CALL_NONE); + addWearableToAgentInventoryCallback(LLPointer cb, + LLWearableType::EType type, + LLWearable* wearable, + U32 todo = CALL_NONE); virtual void fire(const LLUUID& inv_item); private: - S32 mIndex; + LLWearableType::EType mType; LLWearable* mWearable; U32 mTodo; LLPointer mCB; diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 11fb33c26..1b3fae454 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3743,6 +3743,7 @@ void LLAppViewer::idle() gEventNotifier.update(); gIdleCallbacks.callFunctions(); + gInventory.idleNotifyObservers(); } if (gDisconnected) diff --git a/indra/newview/llcallbacklist.cpp b/indra/newview/llcallbacklist.cpp index 6063995cf..1bfd2cb9b 100644 --- a/indra/newview/llcallbacklist.cpp +++ b/indra/newview/llcallbacklist.cpp @@ -47,7 +47,7 @@ LLCallbackList gIdleCallbacks; // Member functions // -LLCallbackList::LLCallbackList() : mLoopingOverCallbackList(false) +LLCallbackList::LLCallbackList() { // nothing } @@ -96,15 +96,7 @@ BOOL LLCallbackList::deleteFunction( callback_t func, void *data) callback_list_t::iterator iter = std::find(mCallbackList.begin(), mCallbackList.end(), t); if (iter != mCallbackList.end()) { - if (mLoopingOverCallbackList) - { - iter->first = NULL; // Mark for removal later (when we return to LLCallbackList::callFunctions). - mNeedErase = true; - } - else - { - mCallbackList.erase(iter); - } + mCallbackList.erase(iter); return TRUE; } else @@ -116,39 +108,82 @@ BOOL LLCallbackList::deleteFunction( callback_t func, void *data) void LLCallbackList::deleteAllFunctions() { - llassert(!mLoopingOverCallbackList); // Only called from unit tests. mCallbackList.clear(); } void LLCallbackList::callFunctions() { - llassert(!mLoopingOverCallbackList); - mLoopingOverCallbackList = true; - mNeedErase = false; - for (callback_list_t::iterator iter = mCallbackList.begin(); iter != mCallbackList.end(); ++iter) + for (callback_list_t::iterator iter = mCallbackList.begin(); iter != mCallbackList.end(); ) { - if (iter->first) // Not pending removal? + callback_list_t::iterator curiter = iter++; + curiter->first(curiter->second); + } +} + +// Shim class to allow arbitrary boost::bind +// expressions to be run as one-time idle callbacks. +class OnIdleCallbackOneTime +{ +public: + OnIdleCallbackOneTime(nullary_func_t callable): + mCallable(callable) + { + } + static void onIdle(void *data) + { + gIdleCallbacks.deleteFunction(onIdle, data); + OnIdleCallbackOneTime* self = reinterpret_cast(data); + self->call(); + delete self; + } + void call() + { + mCallable(); + } +private: + nullary_func_t mCallable; +}; + +void doOnIdleOneTime(nullary_func_t callable) +{ + OnIdleCallbackOneTime* cb_functor = new OnIdleCallbackOneTime(callable); + gIdleCallbacks.addFunction(&OnIdleCallbackOneTime::onIdle,cb_functor); +} + +// Shim class to allow generic boost functions to be run as +// recurring idle callbacks. Callable should return true when done, +// false to continue getting called. +class OnIdleCallbackRepeating +{ +public: + OnIdleCallbackRepeating(bool_func_t callable): + mCallable(callable) + { + } + // Will keep getting called until the callable returns true. + static void onIdle(void *data) + { + OnIdleCallbackRepeating* self = reinterpret_cast(data); + bool done = self->call(); + if (done) { - iter->first(iter->second); // This can theorectically set any iter->first to NULL, which means the entry should be erased. + gIdleCallbacks.deleteFunction(onIdle, data); + delete self; } } - mLoopingOverCallbackList = false; - if (mNeedErase) + bool call() { - callback_list_t::iterator iter = mCallbackList.begin(); - while (iter != mCallbackList.end()) - { - if (!iter->first) - { - iter = mCallbackList.erase(iter); - } - else - { - ++iter; - } - } + return mCallable(); } +private: + bool_func_t mCallable; +}; + +void doOnIdleRepeating(bool_func_t callable) +{ + OnIdleCallbackRepeating* cb_functor = new OnIdleCallbackRepeating(callable); + gIdleCallbacks.addFunction(&OnIdleCallbackRepeating::onIdle,cb_functor); } #ifdef _DEBUG diff --git a/indra/newview/llcallbacklist.h b/indra/newview/llcallbacklist.h index 240346478..1819f865a 100644 --- a/indra/newview/llcallbacklist.h +++ b/indra/newview/llcallbacklist.h @@ -34,6 +34,7 @@ #define LL_LLCALLBACKLIST_H #include "llstl.h" +#include class LLCallbackList { @@ -53,13 +54,20 @@ public: protected: // Use a list so that the callbacks are ordered in case that matters - typedef std::pair callback_pair_t; // callback_t is a (function) pointer. If it is NULL it means that the entry should be considered deleted. + typedef std::pair callback_pair_t; typedef std::list callback_list_t; callback_list_t mCallbackList; - bool mLoopingOverCallbackList; // True while looping over mCallbackList and calling the callback_t functions (see callFunctions). - bool mNeedErase; // True when deleteFunction was called while mLoopingOverCallbackList was true. }; +typedef boost::function nullary_func_t; +typedef boost::function bool_func_t; + +// Call a given callable once in idle loop. +void doOnIdleOneTime(nullary_func_t callable); + +// Repeatedly call a callable in idle loop until it returns true. +void doOnIdleRepeating(bool_func_t callable); + extern LLCallbackList gIdleCallbacks; #endif diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index 0946a4ecc..059198597 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -1029,7 +1029,7 @@ BOOL LLDrawable::isVisible() const return TRUE; } -#if 1 +#if 0 //disabling this code fixes DEV-20105. Leaving in place in case some other bug pops up as a a result. //should be safe to just always ask the spatial group for visibility. if (isActive()) @@ -1313,6 +1313,12 @@ void LLSpatialBridge::setVisible(LLCamera& camera_in, std::vector* return; } } + else + { + static const LLCachedControl draw_orphans("ShyotlDrawOrphanAttachments",false); + if(!draw_orphans) + return; + } } @@ -1385,6 +1391,12 @@ void LLSpatialBridge::updateDistance(LLCamera& camera_in, bool force_update) return; } } + else + { + static const LLCachedControl draw_orphans("ShyotlDrawOrphanAttachments",false); + if(!draw_orphans) + return; + } } LLCamera camera = transformCamera(camera_in); diff --git a/indra/newview/lldrawpoolterrain.h b/indra/newview/lldrawpoolterrain.h index 8eb5c5737..ec9cb2023 100644 --- a/indra/newview/lldrawpoolterrain.h +++ b/indra/newview/lldrawpoolterrain.h @@ -35,8 +35,6 @@ #include "lldrawpool.h" -class LLViewerFetchedTexture; - class LLDrawPoolTerrain : public LLFacePool { LLPointer mTexturep; diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp index 7dcc82218..8a1c120ef 100644 --- a/indra/newview/lldrawpoolwater.cpp +++ b/indra/newview/lldrawpoolwater.cpp @@ -114,7 +114,7 @@ void LLDrawPoolWater::prerender() // got rid of modulation by light color since it got a little too // green at sunset and sl-57047 (underwater turns black at 8:00) - sWaterFogColor = LLWaterParamManager::getInstance()->getFogColor(); + sWaterFogColor = LLWaterParamManager::instance().getFogColor(); sWaterFogColor.mV[3] = 0; } @@ -532,7 +532,7 @@ void LLDrawPoolWater::shade() //bind normal map S32 bumpTex = shader->enableTexture(LLViewerShaderMgr::BUMP_MAP); - LLWaterParamManager * param_mgr = LLWaterParamManager::getInstance(); + LLWaterParamManager * param_mgr = &LLWaterParamManager::instance(); // change mWaterNormp if needed if (mWaterNormp->getID() != param_mgr->getNormalMapID()) diff --git a/indra/newview/llfloatercustomize.cpp b/indra/newview/llfloatercustomize.cpp index 1382d6e89..5e6f8f1a5 100644 --- a/indra/newview/llfloatercustomize.cpp +++ b/indra/newview/llfloatercustomize.cpp @@ -719,7 +719,7 @@ bool LLPanelEditWearable::onSelectAutoWearOption(const LLSD& notification, const if(avatar) { // Create a new wearable in the default folder for the wearable's asset type. - LLWearable* wearable = gWearableList.createNewWearable( (LLWearableType::EType)notification["payload"]["wearable_type"].asInteger() ); + LLWearable* wearable = LLWearableList::instance().createNewWearable( (LLWearableType::EType)notification["payload"]["wearable_type"].asInteger() ); LLAssetType::EType asset_type = wearable->getAssetType(); LLUUID folder_id; diff --git a/indra/newview/llfloaterdaycycle.cpp b/indra/newview/llfloaterdaycycle.cpp index 0799ca330..02ea83fb2 100644 --- a/indra/newview/llfloaterdaycycle.cpp +++ b/indra/newview/llfloaterdaycycle.cpp @@ -288,7 +288,7 @@ bool LLFloaterDayCycle::isOpen() { if (sDayCycle != NULL) { - return true; + return sDayCycle->getVisible(); } return false; } diff --git a/indra/newview/llfloaterenvsettings.cpp b/indra/newview/llfloaterenvsettings.cpp index 196cf92b7..e021e365c 100644 --- a/indra/newview/llfloaterenvsettings.cpp +++ b/indra/newview/llfloaterenvsettings.cpp @@ -197,7 +197,7 @@ bool LLFloaterEnvSettings::isOpen() { if (sEnvSettings != NULL) { - return true; + return sEnvSettings->getVisible(); } return false; } diff --git a/indra/newview/llfloaterwater.cpp b/indra/newview/llfloaterwater.cpp index e35d7e6c0..3b04f9387 100644 --- a/indra/newview/llfloaterwater.cpp +++ b/indra/newview/llfloaterwater.cpp @@ -316,7 +316,7 @@ void LLFloaterWater::show() bool LLFloaterWater::isOpen() { if (sWaterMenu != NULL) { - return true; + return sWaterMenu->getVisible(); } return false; } diff --git a/indra/newview/llfloaterwindlight.cpp b/indra/newview/llfloaterwindlight.cpp index dba360b88..9ec787a6c 100644 --- a/indra/newview/llfloaterwindlight.cpp +++ b/indra/newview/llfloaterwindlight.cpp @@ -473,7 +473,7 @@ void LLFloaterWindLight::show() bool LLFloaterWindLight::isOpen() { if (sWindLight != NULL) { - return true; + return sWindLight->getVisible(); } return false; } diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index fa514014d..89b15c132 100644 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp @@ -651,10 +651,11 @@ void LLFloaterWorldMap::trackLocation(const LLVector3d& pos_global) return; } - std::string sim_name; - LLWorldMap::getInstance()->simNameFromPosGlobal( pos_global, sim_name ); - F32 region_x = (F32)fmod( pos_global.mdV[VX], (F64)REGION_WIDTH_METERS ); - F32 region_y = (F32)fmod( pos_global.mdV[VY], (F64)REGION_WIDTH_METERS ); + std::string sim_name = sim_info->getName(); + U32 locX, locY; + from_region_handle(sim_info->getHandle(), &locX, &locY); + F32 region_x = pos_global.mdV[VX] - locX; + F32 region_y = pos_global.mdV[VY] - locY; std::string full_name = llformat("%s (%d, %d, %d)", // sim_name.c_str(), // [RLVa:KB] - Alternate: Snowglobe-1.2.4 | Checked: 2009-07-04 (RLVa-1.0.0a) diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp index c4829d326..1844363d9 100644 --- a/indra/newview/llglsandbox.cpp +++ b/indra/newview/llglsandbox.cpp @@ -73,9 +73,6 @@ #include "rlvhandler.h" // [/RLVa:KB] - -extern BOOL gDebugSelect; - // Returns true if you got at least one object void LLToolSelectRect::handleRectangleSelection(S32 x, S32 y, MASK mask) { diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 0295fa258..c45b05e10 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -2917,7 +2917,7 @@ void LLFolderBridge::createWearable(LLFolderBridge* bridge, LLWearableType::ETyp // static void LLFolderBridge::createWearable(LLUUID parent_id, LLWearableType::EType type) { - LLWearable* wearable = gWearableList.createNewWearable(type); + LLWearable* wearable = LLWearableList::instance().createNewWearable(type); LLAssetType::EType asset_type = wearable->getAssetType(); LLInventoryType::EType inv_type = LLInventoryType::IT_WEARABLE; create_inventory_item(gAgent.getID(), gAgent.getSessionID(), @@ -4148,6 +4148,14 @@ std::string LLObjectBridge::getLabelSuffix() const { std::string attachment_point_name = avatar->getAttachedPointName(mUUID); LLStringUtil::toLower(attachment_point_name); + LLViewerObject* pObj = (rlv_handler_t::isEnabled()) ? avatar->getWornAttachment( mUUID ) : NULL; +// [RLVa:KB] + if ( pObj && (gRlvAttachmentLocks.isLockedAttachment(pObj) || + gRlvAttachmentLocks.isLockedAttachmentPoint(RlvAttachPtLookup::getAttachPointIndex(pObj),RLV_LOCK_REMOVE))) + { + return LLItemBridge::getLabelSuffix() + std::string(" (locked to ") + attachment_point_name + std::string(")"); + } +// [/RLVa:KB] return LLItemBridge::getLabelSuffix() + std::string(" (worn on ") + attachment_point_name + std::string(")"); } else @@ -4155,11 +4163,21 @@ std::string LLObjectBridge::getLabelSuffix() const // testzone attachpt if(avatar) { - std::map::iterator iter = avatar->mUnsupportedAttachmentPoints.begin(); - std::map::iterator end = avatar->mUnsupportedAttachmentPoints.end(); + std::map >::iterator iter = avatar->mUnsupportedAttachmentPoints.begin(); + std::map >::iterator end = avatar->mUnsupportedAttachmentPoints.end(); for( ; iter != end; ++iter) - if((*iter).second == mUUID) + if((*iter).second.first == mUUID) + { +// [RLVa:KB] + LLViewerObject* pObj = (rlv_handler_t::isEnabled()) ? gObjectList.findObject((*iter).second.second) : NULL; + if ( pObj && (gRlvAttachmentLocks.isLockedAttachment(pObj) || + gRlvAttachmentLocks.isLockedAttachmentPoint(RlvAttachPtLookup::getAttachPointIndex(pObj),RLV_LOCK_REMOVE))) + { + return LLItemBridge::getLabelSuffix() + std::string(" (locked to unsupported point %d)", (*iter).first); + } +// [/RLVa:KB] return LLItemBridge::getLabelSuffix() + llformat(" (worn on unsupported point %d)", (*iter).first); + } } // return LLItemBridge::getLabelSuffix(); @@ -4474,7 +4492,7 @@ void wear_inventory_item_on_avatar( LLInventoryItem* item ) lldebugs << "wear_inventory_item_on_avatar( " << item->getName() << " )" << llendl; - gWearableList.getAsset(item->getAssetUUID(), + LLWearableList::instance().getAsset(item->getAssetUUID(), item->getName(), item->getType(), LLWearableBridge::onWearOnAvatarArrived, @@ -4596,8 +4614,8 @@ void LLOutfitObserver::done() name = cat->getName(); } LLViewerInventoryItem* item = NULL; - item_ref_t::iterator it = mComplete.begin(); - item_ref_t::iterator end = mComplete.end(); + uuid_vec_t::iterator it = mComplete.begin(); + uuid_vec_t::iterator end = mComplete.end(); LLUUID pid; for(; it < end; ++it) { @@ -4914,7 +4932,7 @@ void wear_inventory_category_on_avatar_step2( BOOL proceed, void* userdata ) // [/RLVa:KB] found = found_container.get(i); - gWearableList.getAsset(found->mAssetID, + LLWearableList::instance().getAsset(found->mAssetID, found->mName, found->mAssetType, wear_inventory_category_on_avatar_loop, @@ -5036,7 +5054,7 @@ void wear_inventory_category_on_avatar_step3(LLWearableHoldingPattern* holder, B //And this code does not handle failed asset uploads properly // if(!wearable->isMatchedToInventoryItem(item )) // { -// wearable = gWearableList.createWearableMatchedToInventoryItem( wearable, item ); +// wearable = LLWearableList::instance().createWearableMatchedToInventoryItem( wearable, item ); // // Now that we have an asset that matches the // // item, update the item to point to the new // // asset. @@ -5152,7 +5170,7 @@ void remove_inventory_category_from_avatar_step2( BOOL proceed, void* userdata) if ( (pWearable) && ( (!rlv_handler_t::isEnabled()) || (gRlvWearableLocks.canRemove(pWearable->getType())) ) ) // [/RLVa:KB] { - gWearableList.getAsset( item->getAssetUUID(), + LLWearableList::instance().getAsset( item->getAssetUUID(), item->getName(), item->getType(), LLWearableBridge::onRemoveFromAvatarArrived, @@ -5223,6 +5241,10 @@ std::string LLWearableBridge::getLabelSuffix() const { if (get_is_item_worn(getItem())) { + if ( (rlv_handler_t::isEnabled()) && (!gRlvWearableLocks.canRemove(getItem())) ) + { + return LLItemBridge::getLabelSuffix() + " (locked)"; + } return LLItemBridge::getLabelSuffix() + " (worn)"; } else @@ -5255,7 +5277,7 @@ void LLWearableBridge::performAction(LLFolderView* folder, LLInventoryModel* mod LLViewerInventoryItem* item = getItem(); if (item) { - gWearableList.getAsset(item->getAssetUUID(), + LLWearableList::instance().getAsset(item->getAssetUUID(), item->getName(), item->getType(), LLWearableBridge::onRemoveFromAvatarArrived, @@ -5470,7 +5492,7 @@ void LLWearableBridge::onWearOnAvatarArrived( LLWearable* wearable, void* userda // if(!wearable->isMatchedToInventoryItem(item)) // { -// LLWearable* new_wearable = gWearableList.createWearableMatchedToInventoryItem( wearable, item ); +// LLWearable* new_wearable = LLWearableList::instance().createWearableMatchedToInventoryItem( wearable, item ); // // // Now that we have an asset that matches the // // item, update the item to point to the new @@ -5549,7 +5571,7 @@ void LLWearableBridge::onRemoveFromAvatar(void* user_data) LLViewerInventoryItem* item = self->getItem(); if (item) { - gWearableList.getAsset(item->getAssetUUID(), + LLWearableList::instance().getAsset(item->getAssetUUID(), item->getName(), item->getType(), onRemoveFromAvatarArrived, diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index c6c205f86..f084a42ac 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -153,7 +153,10 @@ const char* NEW_CATEGORY_NAMES[LLFolderType::FT_COUNT] = "Current Outfit", // FT_CURRENT_OUTFIT = 46, "New Outfit", // FT_OUTFIT = 47, "My Outfits", // FT_MY_OUTFITS = 48, - "Inbox" // FT_INBOX = 49, + "Mesh", // FT_MESH = 49, + "Inbox", // FT_INBOX = 50, + "Outbox", // FT_OUTBOX = 51, + "Basic Root" // FT_BASIC_ROOT = 52 }; struct InventoryIDPtrLess @@ -221,22 +224,40 @@ bool LLCanCache::operator()(LLInventoryCategory* cat, LLInventoryItem* item) LLInventoryModel gInventory; // Default constructor -LLInventoryModel::LLInventoryModel() : - mModifyMask(LLInventoryObserver::ALL), +LLInventoryModel::LLInventoryModel() +: mModifyMask(LLInventoryObserver::ALL), + mChangedItemIDs(), + mCategoryMap(), + mItemMap(), + mCategoryLock(), + mItemLock(), mLastItem(NULL), + mParentChildCategoryTree(), + mParentChildItemTree(), + mObservers(), + mIsNotifyObservers(FALSE), mIsAgentInvUsable(false) { } // Destroys the object LLInventoryModel::~LLInventoryModel() +{ + cleanupInventory(); +} + +void LLInventoryModel::cleanupInventory() { empty(); - for (observer_list_t::iterator iter = mObservers.begin(); - iter != mObservers.end(); ++iter) + // Deleting one observer might erase others from the list, so always pop off the front + while (!mObservers.empty()) { - delete *iter; + observer_list_t::iterator iter = mObservers.begin(); + LLInventoryObserver* observer = *iter; + mObservers.erase(iter); + delete observer; } + mObservers.clear(); } // This is a convenience function to check if one object has a parent @@ -245,6 +266,7 @@ BOOL LLInventoryModel::isObjectDescendentOf(const LLUUID& obj_id, const LLUUID& cat_id, const BOOL break_on_recursion) const { + if (obj_id == cat_id) return TRUE; LLInventoryObject* obj = getObject(obj_id); int depthCounter = 0; while(obj) @@ -502,7 +524,7 @@ LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id, { name.assign(pname); } - if(preferred_type < LLFolderType::FT_TEXTURE || preferred_type > LLFolderType::FT_INBOX) + else if(preferred_type < (LLFolderType::EType)0 || preferred_type >= LLFolderType::FT_COUNT) name.assign(NEW_CATEGORY_NAME); else name.assign(NEW_CATEGORY_NAMES[preferred_type]); @@ -758,12 +780,23 @@ U32 LLInventoryModel::updateItem(const LLViewerInventoryItem* item) return mask; } + // We're hiding mesh types +#if 0 + if (item->getType() == LLAssetType::AT_MESH) + { + return mask; + } +#endif + LLViewerInventoryItem* old_item = getItem(item->getUUID()); + LLPointer new_item; if(old_item) { - // We already have an old item, modify it's values + // We already have an old item, modify its values + new_item = old_item; LLUUID old_parent_id = old_item->getParentUUID(); LLUUID new_parent_id = item->getParentUUID(); + if(old_parent_id != new_parent_id) { // need to update the parent-child tree @@ -790,7 +823,7 @@ U32 LLInventoryModel::updateItem(const LLViewerInventoryItem* item) else { // Simply add this item - LLPointer new_item = new LLViewerInventoryItem(item); + new_item = new LLViewerInventoryItem(item); addItem(new_item); if(item->getParentUUID().isNull()) @@ -850,11 +883,40 @@ U32 LLInventoryModel::updateItem(const LLViewerInventoryItem* item) } mask |= LLInventoryObserver::ADD; } - if(item->getType() == LLAssetType::AT_CALLINGCARD) + if(new_item->getType() == LLAssetType::AT_CALLINGCARD) { mask |= LLInventoryObserver::CALLING_CARD; + // Handle user created calling cards. + // Target ID is stored in the description field of the card. + LLUUID id; + std::string desc = new_item->getDescription(); + BOOL isId = desc.empty() ? FALSE : id.set(desc, FALSE); + if (isId) + { + // Valid UUID; set the item UUID and rename it + new_item->setCreator(id); + std::string avatar_name; + + if (gCacheName->getFullName(id, avatar_name)) + { + new_item->rename(avatar_name); + mask |= LLInventoryObserver::LABEL; + } + else + { + // Fetch the current name + gCacheName->get(id, FALSE, + boost::bind(&LLViewerInventoryItem::onCallingCardNameLookup, new_item.get(), + _1, _2, _3)); + } + + } } - addChangedMask(mask, item->getUUID()); + /*else if (new_item->getType() == LLAssetType::AT_GESTURE) + { + mask |= LLInventoryObserver::GESTURE; + }*/ + addChangedMask(mask, new_item->getUUID()); return mask; } @@ -1001,39 +1063,40 @@ void LLInventoryModel::deleteObject(const LLUUID& id) return; } - lldebugs << "Deleting inventory object " << id << llendl; - mLastItem = NULL; - LLUUID parent_id = obj->getParentUUID(); - mCategoryMap.erase(id); - mItemMap.erase(id); - //mInventory.erase(id); - item_array_t* item_list = getUnlockedItemArray(parent_id); - if(item_list) - { - LLViewerInventoryItem* item = (LLViewerInventoryItem*)((LLInventoryObject*)obj); - item_list->removeObj(item); - } - cat_array_t* cat_list = getUnlockedCatArray(parent_id); - if(cat_list) - { - LLViewerInventoryCategory* cat = (LLViewerInventoryCategory*)((LLInventoryObject*)obj); - cat_list->removeObj(cat); - } - item_list = getUnlockedItemArray(id); - if(item_list) - { - delete item_list; - mParentChildItemTree.erase(id); - } - cat_list = getUnlockedCatArray(id); - if(cat_list) - { - delete cat_list; - mParentChildCategoryTree.erase(id); - } - addChangedMask(LLInventoryObserver::REMOVE, id); - obj = NULL; // delete obj + lldebugs << "Deleting inventory object " << id << llendl; + mLastItem = NULL; + LLUUID parent_id = obj->getParentUUID(); + mCategoryMap.erase(id); + mItemMap.erase(id); + //mInventory.erase(id); + item_array_t* item_list = getUnlockedItemArray(parent_id); + if(item_list) + { + LLViewerInventoryItem* item = (LLViewerInventoryItem*)((LLInventoryObject*)obj); + item_list->removeObj(item); } + cat_array_t* cat_list = getUnlockedCatArray(parent_id); + if(cat_list) + { + LLViewerInventoryCategory* cat = (LLViewerInventoryCategory*)((LLInventoryObject*)obj); + cat_list->removeObj(cat); + } + item_list = getUnlockedItemArray(id); + if(item_list) + { + delete item_list; + mParentChildItemTree.erase(id); + } + cat_list = getUnlockedCatArray(id); + if(cat_list) + { + delete cat_list; + mParentChildCategoryTree.erase(id); + } + addChangedMask(LLInventoryObserver::REMOVE, id); + obj = NULL; // delete obj + gInventory.notifyObservers(); +} // Delete a particular inventory item by ID, and remove it from the server. void LLInventoryModel::purgeObject(const LLUUID &id) @@ -1219,39 +1282,56 @@ BOOL LLInventoryModel::containsObserver(LLInventoryObserver* observer) const return mObservers.find(observer) != mObservers.end(); } -// Call this method when it's time to update everyone on a new state, -// by default, the inventory model will not update observers -// automatically. -// The optional argument 'service_name' is used by Agent Inventory Service [DEV-20328] -void LLInventoryModel::notifyObservers(const std::string service_name) +void LLInventoryModel::idleNotifyObservers() { + if (mModifyMask == LLInventoryObserver::NONE && (mChangedItemIDs.size() == 0)) + { + return; + } + notifyObservers(); +} + +// Call this method when it's time to update everyone on a new state. +void LLInventoryModel::notifyObservers() +{ + if (mIsNotifyObservers) + { + // Within notifyObservers, something called notifyObservers + // again. This type of recursion is unsafe because it causes items to be + // processed twice, and this can easily lead to infinite loops. + llwarns << "Call was made to notifyObservers within notifyObservers!" << llendl; + return; + } + + mIsNotifyObservers = TRUE; for (observer_list_t::iterator iter = mObservers.begin(); iter != mObservers.end(); ) { LLInventoryObserver* observer = *iter; - if (service_name.empty()) - { - observer->changed(mModifyMask); - } - else - { - observer->mMessageName = service_name; - observer->changed(mModifyMask); - } + observer->changed(mModifyMask); - // safe way to incrament since changed may delete entries! (@!##%@!@&*!) + // safe way to increment since changed may delete entries! (@!##%@!@&*!) iter = mObservers.upper_bound(observer); } mModifyMask = LLInventoryObserver::NONE; mChangedItemIDs.clear(); + mIsNotifyObservers = FALSE; } // store flag for change // and id of object change applies to void LLInventoryModel::addChangedMask(U32 mask, const LLUUID& referent) { + if (mIsNotifyObservers) + { + // Something marked an item for change within a call to notifyObservers + // (which is in the process of processing the list of items marked for change). + // This means the change may fail to be processed. + llwarns << "Adding changed mask within notify observers! Change will likely be lost." << llendl; + } + mModifyMask |= mask; if (referent.notNull()) { @@ -1266,32 +1346,7 @@ void LLInventoryModel::addChangedMask(U32 mask, const LLUUID& referent) } } -// This method to prepares a set of mock inventory which provides -// minimal functionality before the actual arrival of inventory. -/* -void LLInventoryModel::mock(const LLUUID& root_id) -{ - llinfos << "LLInventoryModel::mock() " << root_id << llendl; - if(root_id.isNull()) - { - llwarns << "Not a valid root id" << llendl; - return; - } - LLPointer cat = new LLViewerInventoryCategory( - root_id, - LLUUID::null, - LLAssetType::AT_CATEGORY, - NEW_CATEGORY_NAMES[LLFolderType::FT_ROOT_CATEGORY], - gAgent.getID()); - addCategory(cat); - gInventory.buildParentChildMap(); -} -*/ - -//If we get back a normal response, handle it here -// Note: this is the responder used in "fetchInventory" cap, -// this is not responder for "WebFetchInventoryDescendents" or "agent/inventory" cap - +// If we get back a normal response, handle it here void LLInventoryModel::fetchInventoryResponder::result(const LLSD& content) { start_new_inventory_observer(); @@ -1352,16 +1407,16 @@ void LLInventoryModel::fetchInventoryResponder::result(const LLSD& content) { changes |= gInventory.updateItem(*it); } - gInventory.notifyObservers("fetchinventory"); + gInventory.notifyObservers(); gViewerWindow->getWindow()->decBusyCount(); } //If we get back an error (not found, etc...), handle it here void LLInventoryModel::fetchInventoryResponder::error(U32 status, const std::string& reason) { - LL_INFOS("Inventory") << "fetchInventory::error " - << status << ": " << reason << LL_ENDL; - gInventory.notifyObservers("fetchinventory"); + llinfos << "fetchInventory::error " + << status << ": " << reason << llendl; + gInventory.notifyObservers(); } bool LLInventoryModel::fetchDescendentsOf(const LLUUID& folder_id) const @@ -1462,7 +1517,7 @@ void fetchDescendentsResponder::result(const LLSD& content) titem->setParent(lost_uuid); titem->updateParentOnServer(FALSE); gInventory.updateItem(titem); - gInventory.notifyObservers("fetchDescendents"); + gInventory.notifyObservers(); } } @@ -1539,7 +1594,7 @@ void fetchDescendentsResponder::result(const LLSD& content) LLInventoryModel::stopBackgroundFetch(); } - gInventory.notifyObservers("fetchDescendents"); + gInventory.notifyObservers(); } //If we get back an error (not found, etc...), handle it here @@ -1572,7 +1627,7 @@ void fetchDescendentsResponder::error(U32 status, const std::string& reason) LLInventoryModel::stopBackgroundFetch(); } } - gInventory.notifyObservers("fetchDescendents"); + gInventory.notifyObservers(); } //static Bundle up a bunch of requests to send all at once. @@ -1954,6 +2009,11 @@ void LLInventoryModel::addCategory(LLViewerInventoryCategory* category) //llinfos << "LLInventoryModel::addCategory()" << llendl; if(category) { + // We aren't displaying the Meshes folder + if (category->getPreferredType() == LLFolderType::FT_MESH) + { + return; + } // Insert category uniquely into the map mCategoryMap[category->getUUID()] = category; // LLPointer will deref and delete the old one //mInventory[category->getUUID()] = category; @@ -1962,7 +2022,7 @@ void LLInventoryModel::addCategory(LLViewerInventoryCategory* category) void LLInventoryModel::addItem(LLViewerInventoryItem* item) { - //llinfos << "LLInventoryModel::addItem()" << llendl; + llassert(item); if(item) { // This can happen if assettype enums from llassettype.h ever change. @@ -2030,8 +2090,8 @@ void LLInventoryModel::accountForUpdate(const LLCategoryUpdate& update) const descendents_actual += update.mDescendentDelta; cat->setDescendentCount(descendents_actual); cat->setVersion(++version); - llinfos << "accounted: '" << cat->getName() << "' " - << version << " with " << descendents_actual + lldebugs << "accounted: '" << cat->getName() << "' " + << version << " with " << descendents_actual << " descendents." << llendl; } } @@ -3214,7 +3274,9 @@ void LLInventoryModel::processBulkUpdateInventory(LLMessageSystem* msg, void**) } LLUUID tid; msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_TransactionID, tid); +#ifndef LL_RELEASE_FOR_DOWNLOAD llinfos << "Bulk inventory: " << tid << llendl; +#endif update_map_t update; cat_array_t folders; @@ -3342,7 +3404,7 @@ void LLInventoryModel::processBulkUpdateInventory(LLMessageSystem* msg, void**) LLInventoryView::sWearNewClothing = FALSE; } - if (tid == LLInventoryView::sWearNewClothingTransactionID) + if (tid.notNull() && tid == LLInventoryView::sWearNewClothingTransactionID) { count = wearable_ids.size(); for (i = 0; i < count; ++i) @@ -3428,6 +3490,9 @@ void LLInventoryModel::processInventoryDescendents(LLMessageSystem* msg,void**) { cat->setVersion(version); cat->setDescendentCount(descendents); + // Get this UUID on the changed list so that whatever's listening for it + // will get triggered. + gInventory.addChangedMask(LLInventoryObserver::INTERNAL, cat->getUUID()); } gInventory.notifyObservers(); } diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h index f8e927d4a..d3d525655 100644 --- a/indra/newview/llinventorymodel.h +++ b/indra/newview/llinventorymodel.h @@ -131,6 +131,7 @@ public: public: LLInventoryModel(); ~LLInventoryModel(); + void cleanupInventory(); // //protected: // @@ -375,7 +376,7 @@ public: LLUUID createNewCategory(const LLUUID& parent_id, LLFolderType::EType preferred_type, const std::string& name); - + // Internal methods that add inventory and make sure that all of // the internal data structures are consistent. These methods // should be passed pointers of newly created objects, and the @@ -446,10 +447,13 @@ public: **/ public: - // Call to explicitly update everyone on a new state. The optional argument - // 'service_name' is used by Agent Inventory Service [DEV-20328] - void notifyObservers(const std::string service_name=""); + // Called by the idle loop. Only updates if new state is detected. Call + // notifyObservers() manually to update regardless of whether state change + // has been indicated. + void idleNotifyObservers(); + // Call to explicitly update everyone on a new state. + void notifyObservers(); // Allows outsiders to tell the inventory if something has // been changed 'under the hood', but outside the control of the // inventory. The next notify will include that notification. @@ -459,6 +463,9 @@ protected: // Updates all linked items pointing to this id. void addChangedMaskForLinks(const LLUUID& object_id, U32 mask); private: + // Flag set when notifyObservers is being called, to look for bugs + // where it's called recursively. + BOOL mIsNotifyObservers; // Variables used to track what has changed since the last notify. U32 mModifyMask; changed_items_t mChangedItemIDs; diff --git a/indra/newview/llmapresponders.cpp b/indra/newview/llmapresponders.cpp index ae0090e42..cf0769bce 100644 --- a/indra/newview/llmapresponders.cpp +++ b/indra/newview/llmapresponders.cpp @@ -120,6 +120,8 @@ void LLMapLayerResponder::result(const LLSD& result) S32 x_regions = map_block["X"]; S32 y_regions = map_block["Y"]; + S32 x_size = map_block["SizeX"]; + S32 y_size = map_block["SizeY"]; std::string name = map_block["Name"]; S32 access = map_block["Access"]; S32 region_flags = map_block["RegionFlags"]; @@ -165,6 +167,7 @@ void LLMapLayerResponder::result(const LLSD& result) siminfo->setRegionFlags( region_flags ); siminfo->setWaterHeight( (F32) water_height ); siminfo->setMapImageID( image_id, agent_flags ); + siminfo->setSize((U16)x_size, (U16)y_size); if (use_web_map_tiles) { siminfo->mCurrentImage = LLWorldMap::loadObjectsTile((U32)x_regions, (U32)y_regions); diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index 842ab3b97..8124e841d 100644 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -966,6 +966,42 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event) LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_NAME_CHANGED" << LL_ENDL; }; break; + + case MEDIA_EVENT_NAVIGATE_ERROR_PAGE: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_NAVIGATE_ERROR_PAGE" << LL_ENDL; + }; + break; + + case MEDIA_EVENT_CLOSE_REQUEST: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_CLOSE_REQUEST" << LL_ENDL; + }; + break; + + case MEDIA_EVENT_PICK_FILE_REQUEST: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_PICK_FILE_REQUEST" << LL_ENDL; + }; + break; + + case MEDIA_EVENT_GEOMETRY_CHANGE: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_GEOMETRY_CHANGE" << LL_ENDL; + }; + break; + + case MEDIA_EVENT_AUTH_REQUEST: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_AUTH_REQUEST" << LL_ENDL; + }; + break; + + case MEDIA_EVENT_LINK_HOVERED: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_LINK_HOVERED" << LL_ENDL; + }; + break; default: { diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index bacde05f2..f58d0e6b2 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -453,9 +453,9 @@ LLMeshRepoThread::LLMeshRepoThread() : LLThread("mesh repo") { mWaiting = false; - mMutex = new LLMutex; - mHeaderMutex = new LLMutex; - mSignal = new LLCondition; + mMutex = new LLMutex(); + mHeaderMutex = new LLMutex(); + mSignal = new LLCondition(); } LLMeshRepoThread::~LLMeshRepoThread() @@ -1208,7 +1208,7 @@ LLMeshUploadThread::LLMeshUploadThread(LLMeshUploadThread::instance_list& data, mUploadTextures = upload_textures; mUploadSkin = upload_skin; mUploadJoints = upload_joints; - mMutex = new LLMutex(NULL); + mMutex = new LLMutex(); mCurlRequest = NULL; mPendingUploads = 0; mFinished = false; @@ -2061,7 +2061,7 @@ LLMeshRepository::LLMeshRepository() void LLMeshRepository::init() { - mMeshMutex = new LLMutex; + mMeshMutex = new LLMutex(); #if MESH_IMPORT LLConvexDecomposition::getInstance()->initSystem(); diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp index 02964a038..bc147fd7d 100644 --- a/indra/newview/llnetmap.cpp +++ b/indra/newview/llnetmap.cpp @@ -240,7 +240,6 @@ void LLNetMap::draw() } // figure out where agent is - S32 region_width = llround(LLWorld::getInstance()->getRegionWidthInMeters()); LLColor4 this_region_color = gColors.getColor( "NetMapThisRegion" ); LLColor4 live_region_color = gColors.getColor( "NetMapLiveRegion" ); LLColor4 dead_region_color = gColors.getColor( "NetMapDeadRegion" ); @@ -249,6 +248,7 @@ void LLNetMap::draw() iter != LLWorld::getInstance()->getRegionList().end(); ++iter) { LLViewerRegion* regionp = *iter; + S32 region_width = llround(regionp->getWidth()); // Find x and y position relative to camera's center. LLVector3 origin_agent = regionp->getOriginAgent(); LLVector3 rel_region_pos = origin_agent - gAgentCamera.getCameraPositionAgent(); @@ -328,8 +328,6 @@ void LLNetMap::draw() LLVector3 map_center_agent = gAgent.getPosAgentFromGlobal(mObjectImageCenterGlobal); map_center_agent -= gAgentCamera.getCameraPositionAgent(); - map_center_agent.mV[VX] *= mScale/region_width; - map_center_agent.mV[VY] *= mScale/region_width; gGL.getTexUnit(0)->bind(mObjectImagep); F32 image_half_width = 0.5f*mObjectMapPixels; @@ -685,7 +683,7 @@ BOOL LLNetMap::handleToolTip( S32 x, S32 y, std::string& msg, LLRect* sticky_rec // [/RLVa:KB] //msg.append( region->getName() ); -#ifndef LL_RELEASE_FOR_DOWNLOAD +//#ifndef LL_RELEASE_FOR_DOWNLOAD std::string buffer; msg.append("\n"); buffer = region->getHost().getHostName(); @@ -693,7 +691,7 @@ BOOL LLNetMap::handleToolTip( S32 x, S32 y, std::string& msg, LLRect* sticky_rec msg.append("\n"); buffer = region->getHost().getString(); msg.append(buffer); -#endif +//#endif msg.append("\n"); msg.append(getToolTip()); diff --git a/indra/newview/llphysicsmotion.cpp b/indra/newview/llphysicsmotion.cpp index 12e1408e0..b6904308f 100644 --- a/indra/newview/llphysicsmotion.cpp +++ b/indra/newview/llphysicsmotion.cpp @@ -44,7 +44,7 @@ #include "llcharacter.h" #include "llviewercontrol.h" #include "llviewervisualparam.h" -#include "llvoavatar.h" +#include "llvoavatarself.h" #include "lldriverparam.h" typedef std::map controller_map_t; @@ -497,9 +497,9 @@ BOOL LLPhysicsMotionController::onUpdate(F32 time, U8* joint_mask) { // Skip if disabled globally. static const LLCachedControl avatar_physics("AvatarPhysics",false); - bool supports_physics = !avatar_physics || (!((LLVOAvatar*)mCharacter)->isSelf() && !((LLVOAvatar*)mCharacter)->mSupportsPhysics); + bool physics_unsupported = !avatar_physics || (!((LLVOAvatar*)mCharacter)->isSelf() && !((LLVOAvatar*)mCharacter)->mSupportsPhysics); //Treat lod 0 as AvatarPhyiscs:FALSE. AvatarPhyiscs setting is superfluous unless we decide to hook it into param sending. - if (supports_physics || !LLVOAvatar::sPhysicsLODFactor) + if (physics_unsupported || !LLVOAvatar::sPhysicsLODFactor) { if(!mIsDefault) { @@ -510,8 +510,8 @@ BOOL LLPhysicsMotionController::onUpdate(F32 time, U8* joint_mask) } mCharacter->updateVisualParams(); } - if(!supports_physics) //Only use emerald physics if avatarphysiscs is really off, or the client doesn't seem to support new physics. - ((LLVOAvatar*)mCharacter)->idleUpdateBoobEffect(); //Fall back to emerald physics + if(physics_unsupported) //Only use emerald physics if avatarphysiscs is really off, or the client doesn't seem to support new physics. + ((LLVOAvatar*)mCharacter)->idleUpdateBoobEffect(); //Fall back to emerald physics return TRUE; } @@ -758,7 +758,7 @@ BOOL LLPhysicsMotion::onUpdate(F32 time) const F32 area_for_this_setting = area_for_max_settings + (area_for_min_settings-area_for_max_settings)*(1.0-lod_factor); const F32 pixel_area = (F32) sqrt(mCharacter->getPixelArea()); - const BOOL is_self = (dynamic_cast(mCharacter) != NULL && ((LLVOAvatar*)mCharacter)->isSelf()); + const BOOL is_self = (dynamic_cast(mCharacter) != NULL); if ((pixel_area > area_for_this_setting) || is_self) { const F32 position_diff_local = llabs(mPositionLastUpdate_local-position_new_local_clamped); diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index a68f14594..33dcf21d8 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -113,8 +113,6 @@ const S32 TE_SELECT_MASK_ALL = 0xFFFFFFFF; // Globals // -//BOOL gDebugSelectMgr = FALSE; - //BOOL gHideSelectedObjects = FALSE; //BOOL gAllowSelectAvatar = FALSE; @@ -1882,7 +1880,7 @@ void LLSelectMgr::selectionSetFullbright(U8 fullbright) void LLSelectMgr::selectionSetMediaTypeAndURL(U8 media_type, const std::string& media_url) { U8 media_flags = LLTextureEntry::MF_NONE; - if (media_type == LLViewerObject::MEDIA_TYPE_WEB_PAGE) + if (media_type == LLViewerObject::MEDIA_SET) { media_flags = LLTextureEntry::MF_HAS_MEDIA; } diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index c79a77884..a99400cb1 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -607,7 +607,7 @@ bool idle_startup() gXferManager->setUseAckThrottling(TRUE); gXferManager->setAckThrottleBPS(xfer_throttle_bps); } - gAssetStorage = new LLViewerAssetStorage(msg, gXferManager, gVFS); + gAssetStorage = new LLViewerAssetStorage(msg, gXferManager, gVFS, gStaticVFS); F32 dropPercent = gSavedSettings.getF32("PacketDropPercentage"); @@ -2743,7 +2743,7 @@ bool idle_startup() if (gAgent.isFirstLogin() && !sInitialOutfit.empty() // registration set up an outfit && !sInitialOutfitGender.empty() // and a gender - && gAgentAvatarp // can't wear clothes without object + && isAgentAvatarValid() // can't wear clothes without object && !gAgent.isGenderChosen() ) // nothing already loading { // Start loading the wearables, textures, gestures @@ -2766,7 +2766,7 @@ bool idle_startup() } // wait precache-delay and for agent's avatar or a lot longer. - if(((timeout_frac > 1.f) && gAgentAvatarp) + if(((timeout_frac > 1.f) && isAgentAvatarValid()) || (timeout_frac > 3.f)) { LLStartUp::setStartupState( STATE_WEARABLES_WAIT ); @@ -2822,7 +2822,7 @@ bool idle_startup() if (gAgent.isFirstLogin()) { // wait for avatar to be completely loaded - if (gAgentAvatarp + if (isAgentAvatarValid() && gAgentAvatarp->isFullyLoaded()) { //llinfos << "avatar fully loaded" << llendl; @@ -2889,7 +2889,6 @@ bool idle_startup() // Start automatic replay if the flag is set. if (gSavedSettings.getBOOL("StatsAutoRun")) { - LLUUID id; LL_DEBUGS("AppInit") << "Starting automatic playback" << LL_ENDL; gAgentPilot.startPlayback(); } diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 1f4815d53..1e09a5154 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -400,7 +400,6 @@ class SGHostBlackList{ int errorCount; }; - static LLMutex* sMutex; typedef std::vector blacklist_t; //Why is it a vector? because using std::map for just 1-2 values is insane-ish. typedef blacklist_t::iterator iter; @@ -423,22 +422,10 @@ class SGHostBlackList{ return blacklist.end(); } - static void lock() { - if (!sMutex) - sMutex = new LLMutex; - sMutex->lock(); - } - - static void unlock() { - sMutex->unlock(); - } - public: static bool isBlacklisted(std::string url) { - lock(); iter found = find(url); bool r = (found != blacklist.end()) && (found->errorCount > MAX_ERRORCOUNT); - unlock(); return r; } @@ -450,7 +437,6 @@ public: entry.timeUntil = LLTimer::getTotalTime() + timeout*1000; entry.reason = reason; entry.errorCount = 0; - lock(); iter found = find(entry.host); if(found != blacklist.end()) { entry.errorCount = found->errorCount + 1; @@ -465,18 +451,14 @@ public: } } else blacklist.push_back(entry); - unlock(); } }; -LLMutex* SGHostBlackList::sMutex = 0; SGHostBlackList::blacklist_t SGHostBlackList::blacklist; //call every time a connection is opened //return true if connecting allowed static bool sgConnectionThrottle() { - static LLMutex mutex; - LLMutexLock lock(&mutex); const U32 THROTTLE_TIMESTEPS_PER_SECOND = 10; static const LLCachedControl max_connections_per_second("HTTPRequestRate", 30); U32 max_connections = max_connections_per_second/THROTTLE_TIMESTEPS_PER_SECOND; diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 52d538fee..32e7c2777 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -391,6 +391,11 @@ BOOL LLToolPie::pickAndShowMenu(BOOL always_show) object = (LLViewerObject*)object->getParent(); } + if (!object) + { + return TRUE; // unexpected, but escape + } + // Object is an avatar, so check for mute by id. LLVOAvatar* avatar = (LLVOAvatar*)object; std::string name = avatar->getFullname(); diff --git a/indra/newview/llviewerassetstorage.cpp b/indra/newview/llviewerassetstorage.cpp index bce482eb1..ffd44ed78 100644 --- a/indra/newview/llviewerassetstorage.cpp +++ b/indra/newview/llviewerassetstorage.cpp @@ -40,16 +40,18 @@ #include "llvfile.h" #include "llvfs.h" + LLViewerAssetStorage::LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *xfer, - LLVFS *vfs, const LLHost &upstream_host) - : LLAssetStorage(msg, xfer, vfs, upstream_host) + LLVFS *vfs, LLVFS *static_vfs, + const LLHost &upstream_host) + : LLAssetStorage(msg, xfer, vfs, static_vfs, upstream_host) { } LLViewerAssetStorage::LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *xfer, - LLVFS *vfs) - : LLAssetStorage(msg, xfer, vfs) + LLVFS *vfs, LLVFS *static_vfs) + : LLAssetStorage(msg, xfer, vfs, static_vfs) { } diff --git a/indra/newview/llviewerassetstorage.h b/indra/newview/llviewerassetstorage.h index 8bc8d4f88..15d9a748e 100644 --- a/indra/newview/llviewerassetstorage.h +++ b/indra/newview/llviewerassetstorage.h @@ -42,10 +42,10 @@ class LLViewerAssetStorage : public LLAssetStorage { public: LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *xfer, - LLVFS *vfs, const LLHost &upstream_host); + LLVFS *vfs, LLVFS *static_vfs, const LLHost &upstream_host); LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *xfer, - LLVFS *vfs); + LLVFS *vfs, LLVFS *static_vfs); using LLAssetStorage::storeAssetData; virtual void storeAssetData( diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 7fd6dfed0..0571badb8 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -364,7 +364,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot, boo const F32 TELEPORT_ARRIVAL_DELAY = 2.f; // Time to preload the world before raising the curtain after we've actually already arrived. S32 attach_count = 0; - if (gAgentAvatarp) + if (isAgentAvatarValid()) { attach_count = gAgentAvatarp->getAttachmentCount(); } @@ -546,7 +546,6 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot, boo { LLAppViewer::instance()->pingMainloopTimeout("Display:Disconnected"); render_ui(); - render_disconnected_background(); } ////////////////////////// @@ -1128,13 +1127,11 @@ LLRect get_whole_screen_region() bool get_hud_matrices(const LLRect& screen_region, glh::matrix4f &proj, glh::matrix4f &model) { - LLVOAvatar* my_avatarp = gAgentAvatarp; - if (my_avatarp && my_avatarp->hasHUDAttachment()) + if (isAgentAvatarValid() && gAgentAvatarp->hasHUDAttachment()) { F32 zoom_level = gAgentCamera.mHUDCurZoom; - LLBBox hud_bbox = my_avatarp->getHUDBBox(); - - // set up transform to keep HUD objects in front of camera + LLBBox hud_bbox = gAgentAvatarp->getHUDBBox(); + F32 hud_depth = llmax(1.f, hud_bbox.getExtentLocal().mV[VX] * 1.1f); proj = gl_ortho(-0.5f * LLViewerCamera::getInstance()->getAspect(), 0.5f * LLViewerCamera::getInstance()->getAspect(), -0.5f, 0.5f, 0.f, hud_depth); proj.element(2,2) = -0.01f; @@ -1422,10 +1419,6 @@ void render_ui_2d() stop_glerror(); } gViewerWindow->draw(); - if (gDebugSelect) - { - gViewerWindow->drawPickBuffer(); - } // reset current origin for font rendering, in case of tiling render LLFontGL::sCurOrigin.set(0, 0); diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 2a521e018..022398eb9 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -1077,3 +1077,9 @@ LLViewerInventoryCategory *LLViewerInventoryItem::getLinkedCategory() const } return NULL; } +void LLViewerInventoryItem::onCallingCardNameLookup(const LLUUID& id, const std::string& name, bool is_group) +{ + rename(name); + gInventory.addChangedMask(LLInventoryObserver::LABEL, getUUID()); + gInventory.notifyObservers(); +} diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h index 00782eb25..bb63824bb 100644 --- a/indra/newview/llviewerinventory.h +++ b/indra/newview/llviewerinventory.h @@ -145,6 +145,8 @@ public: LLViewerInventoryItem *getLinkedItem() const; LLViewerInventoryCategory *getLinkedCategory() const; + // callback + void onCallingCardNameLookup(const LLUUID& id, const std::string& name, bool is_group); protected: BOOL mIsComplete; LLTransactionID mTransactionID; diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 9faee6106..4850d5453 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -291,7 +291,6 @@ void handle_test_load_url(void*); extern BOOL gDebugClicks; extern BOOL gDebugWindowProc; extern BOOL gDebugTextEditorTips; -//extern BOOL gDebugSelectMgr; extern BOOL gDebugAvatarRotation; extern BOOL gShowOverlayTitle; extern BOOL gOcclusionCull; @@ -2391,7 +2390,7 @@ class LLSelfRemoveAllAttachments : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) { - LLAgentWearables::userRemoveAllAttachments(NULL); + LLAgentWearables::userRemoveAllAttachments(); return true; } }; @@ -9174,7 +9173,7 @@ class LLEditEnableTakeOff : public view_listener_t if ( !(rlv_handler_t::isEnabled()) || (gRlvWearableLocks.canRemove(type)) ) // [/RLVa:KB] - new_value = LLAgentWearables::selfHasWearable((void *)type); + new_value = LLAgentWearables::selfHasWearable(type); gMenuHolder->findControl(control_name)->setValue(new_value); return false; @@ -9188,14 +9187,14 @@ class LLEditTakeOff : public view_listener_t std::string clothing = userdata.asString(); if (clothing == "all") { - LLAgentWearables::userRemoveAllClothes(NULL); + LLAgentWearables::userRemoveAllClothes(); } else { LLWearableType::EType type = LLWearableType::typeNameToType(clothing); if (type >= LLWearableType::WT_SHAPE && type < LLWearableType::WT_COUNT) - LLAgentWearables::userRemoveWearable((void*)type); + LLAgentWearables::userRemoveWearable(type); } return true; } diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 6b1710b48..9bd7e57a2 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -140,7 +140,6 @@ LLViewerObject *LLViewerObject::createObject(const LLUUID &id, const LLPCode pco { if (!gAgentAvatarp) { - lldebugs << "Marking avatar as self " << id << llendl; gAgentAvatarp = new LLVOAvatarSelf(id, pcode, regionp); gAgentAvatarp->initInstance(); } @@ -741,6 +740,42 @@ void LLViewerObject::hideExtraDisplayItems( BOOL hidden ) } } +U32 LLViewerObject::checkMediaURL(const std::string &media_url) +{ + U32 retval = (U32)0x0; + if (!mMedia && !media_url.empty()) + { + retval |= MEDIA_URL_ADDED; + mMedia = new LLViewerObjectMedia; + mMedia->mMediaURL = media_url; + mMedia->mMediaType = LLViewerObject::MEDIA_SET; + mMedia->mPassedWhitelist = FALSE; + } + else if (mMedia) + { + if (media_url.empty()) + { + retval |= MEDIA_URL_REMOVED; + delete mMedia; + mMedia = NULL; + } + else if (mMedia->mMediaURL != media_url) // <-- This is an optimization. If they are equal don't bother with below's test. + { + /*if (! (LLTextureEntry::getAgentIDFromMediaVersionString(media_url) == gAgent.getID() && + LLTextureEntry::getVersionFromMediaVersionString(media_url) == + LLTextureEntry::getVersionFromMediaVersionString(mMedia->mMediaURL) + 1)) + */ + { + // If the media URL is different and WE were not the one who + // changed it, mark dirty. + retval |= MEDIA_URL_UPDATED; + } + mMedia->mMediaURL = media_url; + mMedia->mPassedWhitelist = FALSE; + } + } + return retval; +} U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, void **user_data, @@ -1119,35 +1154,8 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, std::string media_url; mesgsys->getStringFast(_PREHASH_ObjectData, _PREHASH_MediaURL, media_url, block_num); - //if (!media_url.empty()) - //{ - // llinfos << "WEBONPRIM media_url " << media_url << llendl; - //} - if (!mMedia && !media_url.empty()) - { - retval |= MEDIA_URL_ADDED; - mMedia = new LLViewerObjectMedia; - mMedia->mMediaURL = media_url; - mMedia->mMediaType = LLViewerObject::MEDIA_TYPE_WEB_PAGE; - mMedia->mPassedWhitelist = FALSE; - } - else if (mMedia) - { - if (media_url.empty()) - { - retval |= MEDIA_URL_REMOVED; - delete mMedia; - mMedia = NULL; - } - else if (mMedia->mMediaURL != media_url) - { - // We just added or changed a web page. - retval |= MEDIA_URL_UPDATED; - mMedia->mMediaURL = media_url; - mMedia->mPassedWhitelist = FALSE; - } - } - + retval |= checkMediaURL(media_url); + // // Unpack particle system data // @@ -1547,31 +1555,12 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, mText = NULL; } + std::string media_url; if (value & 0x200) { - std::string media_url; dp->unpackString(media_url, "MediaURL"); - if (!mMedia) - { - retval |= MEDIA_URL_ADDED; - mMedia = new LLViewerObjectMedia; - mMedia->mMediaURL = media_url; - mMedia->mMediaType = LLViewerObject::MEDIA_TYPE_WEB_PAGE; - mMedia->mPassedWhitelist = FALSE; - } - else if (mMedia->mMediaURL != media_url) - { - retval |= MEDIA_URL_UPDATED; - mMedia->mMediaURL = media_url; - mMedia->mPassedWhitelist = FALSE; - } - } - else if (mMedia) - { - retval |= MEDIA_URL_REMOVED; - delete mMedia; - mMedia = NULL; } + retval |= checkMediaURL(media_url); // // Unpack particle system data @@ -3864,7 +3853,7 @@ U8 LLViewerObject::getMediaType() const } else { - return LLViewerObject::MEDIA_TYPE_NONE; + return LLViewerObject::MEDIA_NONE; } } @@ -5682,6 +5671,17 @@ std::string LLViewerObject::getAttachmentPointName() return llformat("unsupported point %d", point); } // + +const LLUUID &LLViewerObject::getAttachmentItemID() const +{ + return mAttachmentItemID; +} + +void LLViewerObject::setAttachmentItemID(const LLUUID &id) +{ + mAttachmentItemID = id; +} + EObjectUpdateType LLViewerObject::getLastUpdateType() const { return mLastUpdateType; @@ -5725,7 +5725,7 @@ LLVOAvatar* LLViewerObject::getAvatar() const { LLViewerObject* vobj = (LLViewerObject*) getParent(); - while (vobj && !vobj->isAvatar()) + while (vobj && !vobj->asAvatar()) { vobj = (LLViewerObject*) vobj->getParent(); } diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index 0da84ef08..12ba19443 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -158,10 +158,15 @@ public: virtual BOOL idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time); // Types of media we can associate - enum { MEDIA_TYPE_NONE = 0, MEDIA_TYPE_WEB_PAGE = 1 }; + enum { MEDIA_NONE = 0, MEDIA_SET = 1 }; // Return codes for processUpdateMessage - enum { MEDIA_URL_REMOVED = 0x1, MEDIA_URL_ADDED = 0x2, MEDIA_URL_UPDATED = 0x4, INVALID_UPDATE = 0x80000000 }; + enum { + MEDIA_URL_REMOVED = 0x1, + MEDIA_URL_ADDED = 0x2, + MEDIA_URL_UPDATED = 0x4, + INVALID_UPDATE = 0x80000000 + }; virtual U32 processUpdateMessage(LLMessageSystem *mesgsys, void **user_data, @@ -546,6 +551,10 @@ private: ExtraParameter* getExtraParameterEntry(U16 param_type) const; ExtraParameter* getExtraParameterEntryCreate(U16 param_type); bool unpackParameterEntry(U16 param_type, LLDataPacker *dp); + + // This function checks to see if the given media URL has changed its version + // and the update wasn't due to this agent's last action. + U32 checkMediaURL(const std::string &media_url); // Motion prediction between updates void interpolateLinearMotion(const F64 & time, const F32 & dt); @@ -763,8 +772,8 @@ public: S32 getAttachmentPoint(); std::string getAttachmentPointName(); // - const LLUUID &getAttachmentItemID() const { return mAttachmentItemID; } - void setAttachmentItemID(const LLUUID &id) { mAttachmentItemID = id; } + const LLUUID &getAttachmentItemID() const; + void setAttachmentItemID(const LLUUID &id); const LLUUID &extractAttachmentItemID(); // find&set the inventory item ID of the attached object EObjectUpdateType getLastUpdateType() const; void setLastUpdateType(EObjectUpdateType last_update_type); @@ -812,8 +821,8 @@ public: class LLAlphaObject : public LLViewerObject { public: - LLAlphaObject(const LLUUID &id, const LLPCode type, LLViewerRegion *regionp) - : LLViewerObject(id,type,regionp) + LLAlphaObject(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp) + : LLViewerObject(id,pcode,regionp) { mDepth = 0.f; } virtual F32 getPartSize(S32 idx); diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 24860ab25..37d6dd2ac 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -488,7 +488,6 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, if (objectp->getRegion() != regionp) { // Object changed region, so update it - objectp->setRegion(regionp); objectp->updateRegion(regionp); // for LLVOAvatar } } @@ -1239,8 +1238,9 @@ void LLViewerObjectList::removeDrawable(LLDrawable* drawablep) BOOL LLViewerObjectList::killObject(LLViewerObject *objectp) { - // Don't commit suicide just because someone thinks you are on a ledge. -SG - if (objectp == gAgentAvatarp) + // Don't ever kill gAgentAvatarp, just force it to the agent's region + // unless region is NULL which is assumed to mean you are logging out. + if ((objectp == gAgentAvatarp) && gAgent.getRegion()) { objectp->setRegion(gAgent.getRegion()); return FALSE; @@ -1746,22 +1746,21 @@ void LLViewerObjectList::generatePickList(LLCamera &camera) // add all hud objects to pick list if (isAgentAvatarValid()) { - LLVOAvatar* avatarp = gAgentAvatarp; - for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin(); - iter != avatarp->mAttachmentPoints.end(); ) + for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); + iter != gAgentAvatarp->mAttachmentPoints.end(); ) { LLVOAvatar::attachment_map_t::iterator curiter = iter++; - LLViewerJointAttachment* attachmentp = curiter->second; - if (attachmentp->getIsHUDAttachment()) + LLViewerJointAttachment* attachment = curiter->second; + if (attachment->getIsHUDAttachment()) { - for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachmentp->mAttachedObjects.begin(); - attachment_iter != attachmentp->mAttachedObjects.end(); + for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin(); + attachment_iter != attachment->mAttachedObjects.end(); ++attachment_iter) { - if (LLViewerObject* objectp = (*attachment_iter)) + if (LLViewerObject* attached_object = (*attachment_iter)) { - mSelectPickList.insert(objectp); - LLViewerObject::const_child_list_t& child_list = objectp->getChildren(); + mSelectPickList.insert(attached_object); + LLViewerObject::const_child_list_t& child_list = attached_object->getChildren(); for (LLViewerObject::child_list_t::const_iterator iter = child_list.begin(); iter != child_list.end(); iter++) { diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h index a458f8e10..795e4cbcc 100644 --- a/indra/newview/llviewerobjectlist.h +++ b/indra/newview/llviewerobjectlist.h @@ -201,7 +201,7 @@ public: S32 mNumUnknownKills; S32 mNumDeadObjects; S32 mMinNumDeadObjects; -protected: +//protected: std::vector mOrphanParents; // LocalID/ip,port of orphaned objects std::vector mOrphanChildren; // UUID's of orphaned objects S32 mNumOrphans; diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp index a233136b5..1493f4abb 100644 --- a/indra/newview/llviewerparcelmedia.cpp +++ b/indra/newview/llviewerparcelmedia.cpp @@ -561,6 +561,42 @@ void LLViewerParcelMedia::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_NAME_CHANGED" << LL_ENDL; }; break; + + case MEDIA_EVENT_NAVIGATE_ERROR_PAGE: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_NAVIGATE_ERROR_PAGE" << LL_ENDL; + }; + break; + + case MEDIA_EVENT_CLOSE_REQUEST: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_CLOSE_REQUEST" << LL_ENDL; + }; + break; + + case MEDIA_EVENT_PICK_FILE_REQUEST: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_PICK_FILE_REQUEST" << LL_ENDL; + }; + break; + + case MEDIA_EVENT_GEOMETRY_CHANGE: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_GEOMETRY_CHANGE" << LL_ENDL; + }; + break; + + case MEDIA_EVENT_AUTH_REQUEST: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_AUTH_REQUEST" << LL_ENDL; + }; + break; + + case MEDIA_EVENT_LINK_HOVERED: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_LINK_HOVERED" << LL_ENDL; + }; + break; default: { diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 684c7e405..2426c75a5 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -190,6 +190,7 @@ #include "llviewerjoystick.h" #include "llviewernetwork.h" #include "llpostprocess.h" +#include "llwearablelist.h" #include "llnotifications.h" #include "llnotificationsutil.h" @@ -220,9 +221,6 @@ extern S32 gJamesInt; LLViewerWindow *gViewerWindow = NULL; LLVelocityBar *gVelocityBar = NULL; - -BOOL gDebugSelect = FALSE; - LLFrameTimer gMouseIdleTimer; LLFrameTimer gAwayTimer; LLFrameTimer gAwayTriggerTimer; @@ -363,7 +361,7 @@ public: agent_center_text = llformat("AgentCenter %f %f %f", (F32)(tvector.mdV[VX]), (F32)(tvector.mdV[VY]), (F32)(tvector.mdV[VZ])); - if (gAgentAvatarp) + if (isAgentAvatarValid()) { tvector = gAgent.getPosGlobalFromAgent(gAgentAvatarp->mRoot.getWorldPosition()); agent_root_center_text = llformat("AgentRootCenter %f %f %f", @@ -578,6 +576,57 @@ public: ypos += y_inc; + S32 total_objects = gObjectList.getNumObjects(); + S32 ID_objects = gObjectList.mUUIDObjectMap.size(); + S32 dead_objects = gObjectList.mNumDeadObjects; + S32 dead_object_list = gObjectList.mDeadObjects.size(); + S32 dead_object_check = 0; + S32 total_avatars = 0; + S32 ID_avatars = gObjectList.mUUIDAvatarMap.size(); + S32 dead_avatar_list = 0; + S32 dead_avatar_check = 0; + + S32 orphan_parents = gObjectList.getOrphanParentCount(); + S32 orphan_parents_check = gObjectList.mOrphanParents.size(); + S32 orphan_children = gObjectList.mOrphanChildren.size(); + S32 orphan_total = gObjectList.getOrphanCount(); + S32 orphan_child_attachments = 0; + + for(U32 i = 0;iisAvatar()) + ++total_avatars; + if(obj->isDead()) + { + ++dead_object_check; + if(obj->isAvatar()) + ++dead_avatar_check; + } + } + } + for(std::set::iterator it = gObjectList.mDeadObjects.begin();it!=gObjectList.mDeadObjects.end();++it) + { + LLViewerObject *obj = gObjectList.findObject(*it); + if(obj && obj->isAvatar()) + ++dead_avatar_list; + } + for(std::vector::iterator it = gObjectList.mOrphanChildren.begin();it!=gObjectList.mOrphanChildren.end();++it) + { + LLViewerObject *obj = gObjectList.findObject(it->mChildInfo); + if(obj && obj->isAttachment()) + ++orphan_child_attachments; + } + addText(xpos,ypos, llformat("%d|%d (%d|%d|%d) Objects", total_objects, ID_objects, dead_objects, dead_object_list,dead_object_check)); + ypos += y_inc; + addText(xpos,ypos, llformat("%d|%d (%d|%d) Avatars", total_avatars, ID_avatars, dead_avatar_list,dead_avatar_check)); + ypos += y_inc; + addText(xpos,ypos, llformat("%d (%d|%d %d %d) Orphans", orphan_total, orphan_parents, orphan_parents_check,orphan_children, orphan_child_attachments)); + + ypos += y_inc; + #if MESH_ENABLED if (gMeshRepo.meshRezEnabled()) { @@ -1449,6 +1498,7 @@ LLViewerWindow::LLViewerWindow( } LLVertexBuffer::initClass(gSavedSettings.getBOOL("RenderVBOEnable"), gSavedSettings.getBOOL("RenderVBOMappingDisable")); LL_INFOS("RenderInit") << "LLVertexBuffer initialization done." << LL_ENDL ; + gGL.init() ; if (LLFeatureManager::getInstance()->isSafe() || (gSavedSettings.getS32("LastFeatureVersion") != LLFeatureManager::getInstance()->getVersion()) @@ -1943,6 +1993,8 @@ void LLViewerWindow::shutdownGL() gSky.cleanup(); stop_glerror(); + LLWearableList::instance().cleanup() ; + gTextureList.shutdown(); stop_glerror(); @@ -3391,27 +3443,8 @@ void LLViewerWindow::pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback pick_transparent = TRUE; } - // center initial pick frame buffer region under mouse cursor - // since that area is guaranteed to be onscreen and hence a valid - // part of the framebuffer - if (mPicks.empty()) - { - mPickScreenRegion.setCenterAndSize(x, y_from_bot, PICK_DIAMETER, PICK_DIAMETER); - - if (mPickScreenRegion.mLeft < 0) mPickScreenRegion.translate(-mPickScreenRegion.mLeft, 0); - if (mPickScreenRegion.mBottom < 0) mPickScreenRegion.translate(0, -mPickScreenRegion.mBottom); - if (mPickScreenRegion.mRight > mWindowRectRaw.getWidth() ) mPickScreenRegion.translate(mWindowRectRaw.getWidth() - mPickScreenRegion.mRight, 0); - if (mPickScreenRegion.mTop > mWindowRectRaw.getHeight() ) mPickScreenRegion.translate(0, mWindowRectRaw.getHeight() - mPickScreenRegion.mTop); - } - - // set frame buffer region for picking results - // stack multiple picks left to right - LLRect screen_region = mPickScreenRegion; - screen_region.translate(mPicks.size() * PICK_DIAMETER, 0); - - LLPickInfo pick(LLCoordGL(x, y_from_bot), screen_region, mask, pick_transparent, get_surface_info, callback); - - schedulePick(pick); + LLPickInfo pick_info(LLCoordGL(x, y_from_bot), mask, pick_transparent, get_surface_info, callback); + schedulePick(pick_info); } void LLViewerWindow::schedulePick(LLPickInfo& pick_info) @@ -3426,7 +3459,6 @@ void LLViewerWindow::schedulePick(LLPickInfo& pick_info) return; } - llassert_always(pick_info.mScreenRegion.notEmpty()); mPicks.push_back(pick_info); // delay further event processing until we receive results of pick @@ -3477,11 +3509,10 @@ LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot, BOOL pick_trans return LLPickInfo(); } - pickAsync(x, y_from_bot, gKeyboard->currentMask(TRUE), NULL, pick_transparent); - // assume that pickAsync put the results in the back of the mPicks list - mLastPick = mPicks.back(); + // shortcut queueing in mPicks and just update mLastPick in place + MASK key_mask = gKeyboard->currentMask(TRUE); + mLastPick = LLPickInfo(LLCoordGL(x, y_from_bot), key_mask, pick_transparent, TRUE, NULL); mLastPick.fetchResults(); - mPicks.pop_back(); return mLastPick; } @@ -5038,12 +5069,6 @@ F32 LLViewerWindow::getDisplayAspectRatio() const } } - -void LLViewerWindow::drawPickBuffer() const -{ - mHoverPick.drawPickBuffer(); -} - void LLViewerWindow::calcDisplayScale() { F32 ui_scale_factor = gSavedSettings.getF32("UIScaleFactor"); @@ -5213,13 +5238,11 @@ LLPickInfo::LLPickInfo() } LLPickInfo::LLPickInfo(const LLCoordGL& mouse_pos, - const LLRect& screen_region, MASK keyboard_mask, BOOL pick_transparent, BOOL pick_uv_coords, void (*pick_callback)(const LLPickInfo& pick_info)) : mMousePt(mouse_pos), - mScreenRegion(screen_region), mKeyMask(keyboard_mask), mPickCallback(pick_callback), mPickType(PICK_INVALID), @@ -5235,10 +5258,6 @@ LLPickInfo::LLPickInfo(const LLCoordGL& mouse_pos, { } -LLPickInfo::~LLPickInfo() -{ -} - void LLPickInfo::fetchResults() { @@ -5257,59 +5276,14 @@ void LLPickInfo::fetchResults() NULL, -1, mPickTransparent, &face_hit, &intersection, &uv, &normal, &binormal); - // read back colors and depth values from buffer - //glReadPixels(mScreenRegion.mLeft, mScreenRegion.mBottom, mScreenRegion.getWidth(), mScreenRegion.getHeight(), GL_RGBA, GL_UNSIGNED_BYTE, mPickBuffer); - //glReadPixels(mScreenRegion.mLeft, mScreenRegion.mBottom, mScreenRegion.getWidth(), mScreenRegion.getHeight(), GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, mPickDepthBuffer ); - - // find pick region that is fully onscreen - //LLCoordGL scaled_pick_point;; - //scaled_pick_point.mX = llclamp(llround((F32)mMousePt.mX * gViewerWindow->getDisplayScale().mV[VX]), PICK_HALF_WIDTH, gViewerWindow->getWindowDisplayWidth() - PICK_HALF_WIDTH); - //scaled_pick_point.mY = llclamp(llround((F32)mMousePt.mY * gViewerWindow->getDisplayScale().mV[VY]), PICK_HALF_WIDTH, gViewerWindow->getWindowDisplayHeight() - PICK_HALF_WIDTH); - //S32 pixel_index = PICK_HALF_WIDTH * PICK_DIAMETER + PICK_HALF_WIDTH; - //S32 pick_id = (U32)mPickBuffer[(pixel_index * 4) + 0] << 16 | (U32)mPickBuffer[(pixel_index * 4) + 1] << 8 | (U32)mPickBuffer[(pixel_index * 4) + 2]; - //F32 depth = mPickDepthBuffer[pixel_index]; - - //S32 x_offset = mMousePt.mX - llround((F32)scaled_pick_point.mX / gViewerWindow->getDisplayScale().mV[VX]); - //S32 y_offset = mMousePt.mY - llround((F32)scaled_pick_point.mY / gViewerWindow->getDisplayScale().mV[VY]); - mPickPt = mMousePt; - // we hit nothing, scan surrounding pixels for something useful - /*if (!pick_id) - { - S32 closest_distance = 10000; - //S32 closest_pick_name = 0; - for (S32 col = 0; col < PICK_DIAMETER; col++) - { - for (S32 row = 0; row < PICK_DIAMETER; row++) - { - S32 distance_squared = (llabs(col - x_offset - PICK_HALF_WIDTH) * llabs(col - x_offset - PICK_HALF_WIDTH)) + (llabs(row - y_offset - PICK_HALF_WIDTH) * llabs(row - y_offset - PICK_HALF_WIDTH)); - pixel_index = row * PICK_DIAMETER + col; - S32 test_name = (U32)mPickBuffer[(pixel_index * 4) + 0] << 16 | (U32)mPickBuffer[(pixel_index * 4) + 1] << 8 | (U32)mPickBuffer[(pixel_index * 4) + 2]; - if (test_name && distance_squared < closest_distance) - { - closest_distance = distance_squared; - pick_id = test_name; - depth = mPickDepthBuffer[pixel_index]; - mPickPt.mX = mMousePt.mX + (col - PICK_HALF_WIDTH); - mPickPt.mY = mMousePt.mY + (row - PICK_HALF_WIDTH); - } - } - } - }*/ - - U32 te_offset = face_hit > -1 ? face_hit : 0; - //pick_id &= 0x000fffff; //unproject relative clicked coordinate from window coordinate using GL LLViewerObject* objectp = hit_object; - //if (pick_id == (S32)GL_NAME_PARCEL_WALL) - //{ - // mPickType = PICK_PARCEL_WALL; - //} if (hit_icon && (!objectp || icon_dist < (LLViewerCamera::getInstance()->getOrigin()-intersection).magVec())) @@ -5353,20 +5327,6 @@ void LLPickInfo::fetchResults() mObjectID = objectp->mID; mObjectFace = (te_offset == NO_FACE) ? -1 : (S32)te_offset; - /*glh::matrix4f newModel((F32*)LLViewerCamera::getInstance()->getModelview().mMatrix); - - for(U32 i = 0; i < 16; ++i) - { - modelview[i] = newModel.m[i]; - projection[i] = LLViewerCamera::getInstance()->getProjection().mMatrix[i/4][i%4]; - } - glGetIntegerv( GL_VIEWPORT, viewport ); - - winX = ((F32)mPickPt.mX) * gViewerWindow->getDisplayScale().mV[VX]; - winY = ((F32)mPickPt.mY) * gViewerWindow->getDisplayScale().mV[VY]; - - gluUnProject( winX, winY, depth, modelview, projection, viewport, &posX, &posY, &posZ);*/ - mPosGlobal = gAgent.getPosGlobalFromAgent(intersection); if (mWantSurfaceInfo) @@ -5401,49 +5361,6 @@ void LLPickInfo::updateXYCoords() } } -void LLPickInfo::drawPickBuffer() const -{ - if (mPickBuffer) - { - gGL.pushMatrix(); - LLGLDisable no_blend(GL_BLEND); - LLGLDisable no_alpha_test(GL_ALPHA_TEST); - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - glPixelZoom(10.f, 10.f); - LLVector2 display_scale = gViewerWindow->getDisplayScale(); - glRasterPos2f(((F32)mMousePt.mX * display_scale.mV[VX] + 10.f), - ((F32)mMousePt.mY * display_scale.mV[VY] + 10.f)); - glDrawPixels(PICK_DIAMETER, PICK_DIAMETER, GL_RGBA, GL_UNSIGNED_BYTE, mPickBuffer); - glPixelZoom(1.f, 1.f); - gGL.color4fv(LLColor4::white.mV); - gl_rect_2d(llround((F32)mMousePt.mX * display_scale.mV[VX] - (F32)(PICK_HALF_WIDTH)), - llround((F32)mMousePt.mY * display_scale.mV[VY] + (F32)(PICK_HALF_WIDTH)), - llround((F32)mMousePt.mX * display_scale.mV[VX] + (F32)(PICK_HALF_WIDTH)), - llround((F32)mMousePt.mY * display_scale.mV[VY] - (F32)(PICK_HALF_WIDTH)), - FALSE); - gl_line_2d(llround((F32)mMousePt.mX * display_scale.mV[VX] - (F32)(PICK_HALF_WIDTH)), - llround((F32)mMousePt.mY * display_scale.mV[VY] + (F32)(PICK_HALF_WIDTH)), - llround((F32)mMousePt.mX * display_scale.mV[VX] + 10.f), - llround((F32)mMousePt.mY * display_scale.mV[VY] + (F32)(PICK_DIAMETER) * 10.f + 10.f)); - gl_line_2d(llround((F32)mMousePt.mX * display_scale.mV[VX] + (F32)(PICK_HALF_WIDTH)), - llround((F32)mMousePt.mY * display_scale.mV[VY] - (F32)(PICK_HALF_WIDTH)), - llround((F32)mMousePt.mX * display_scale.mV[VX] + (F32)(PICK_DIAMETER) * 10.f + 10.f), - llround((F32)mMousePt.mY * display_scale.mV[VY] + 10.f)); - gGL.translatef(10.f, 10.f, 0.f); - gl_rect_2d(llround((F32)mPickPt.mX * display_scale.mV[VX]), - llround((F32)mPickPt.mY * display_scale.mV[VY] + (F32)(PICK_DIAMETER) * 10.f), - llround((F32)mPickPt.mX * display_scale.mV[VX] + (F32)(PICK_DIAMETER) * 10.f), - llround((F32)mPickPt.mY * display_scale.mV[VY]), - FALSE); - gl_rect_2d(llround((F32)mPickPt.mX * display_scale.mV[VX]), - llround((F32)mPickPt.mY * display_scale.mV[VY] + 10.f), - llround((F32)mPickPt.mX * display_scale.mV[VX] + 10.f), - llround((F32)mPickPt.mY * display_scale.mV[VY]), - FALSE); - gGL.popMatrix(); - } -} - void LLPickInfo::getSurfaceInfo() { // set values to uninitialized - this is what we return if no intersection is found diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index 4624245ba..0b03fcf01 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -85,18 +85,15 @@ public: public: LLPickInfo(); LLPickInfo(const LLCoordGL& mouse_pos, - const LLRect& screen_region, MASK keyboard_mask, BOOL pick_transparent, BOOL pick_surface_info, void (*pick_callback)(const LLPickInfo& pick_info)); - ~LLPickInfo(); void fetchResults(); LLPointer getObject() const; LLUUID getObjectID() const { return mObjectID; } bool isValid() const { return mPickType != PICK_INVALID; } - void drawPickBuffer() const; static bool isFlora(LLViewerObject* object); @@ -119,16 +116,12 @@ public: LLVector3 mNormal; LLVector3 mBinormal; BOOL mPickTransparent; - LLRect mScreenRegion; void getSurfaceInfo(); private: void updateXYCoords(); BOOL mWantSurfaceInfo; // do we populate mUVCoord, mNormal, mBinormal? - U8 mPickBuffer[PICK_DIAMETER * PICK_DIAMETER * 4]; - F32 mPickDepthBuffer[PICK_DIAMETER * PICK_DIAMETER]; - BOOL mPickParcelWall; }; @@ -384,8 +377,6 @@ public: const LLVector2& getDisplayScale() const { return mDisplayScale; } void calcDisplayScale(); - void drawPickBuffer() const; - private: bool shouldShowToolTipFor(LLMouseHandler *mh); static bool onAlert(const LLSD& notify); @@ -498,8 +489,6 @@ extern LLFrameTimer gMouseIdleTimer; // how long has it been since the mouse l extern LLFrameTimer gAwayTimer; // tracks time before setting the avatar away state to true extern LLFrameTimer gAwayTriggerTimer; // how long the avatar has been away -extern BOOL gDebugSelect; - extern BOOL gDebugFastUIRender; extern LLViewerObject* gDebugRaycastObject; extern LLVector3 gDebugRaycastIntersection; diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 514030756..045e513eb 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -5132,7 +5132,12 @@ void LLVOAvatar::updateTextures() } else { - render_avatar = isVisible() && !mCulled; + if(!isVisible()) + { + return ;//do not update for invisible avatar. + } + + render_avatar = !mCulled; //visible and not culled. } std::vector layer_baked; @@ -5799,19 +5804,6 @@ void LLVOAvatar::resetSpecificJointPosition( const std::string& name ) //----------------------------------------------------------------------------- void LLVOAvatar::resetJointPositionsToDefault( void ) { - const LLVector3& avPos = getCharacterPosition(); - - //Reposition the pelvis - LLJoint* pPelvis = mRoot.findJoint("mPelvis"); - if ( pPelvis ) - { - pPelvis->setPosition( avPos + pPelvis->getPosition() ); - } - else - { - llwarns<<"Can't get pelvis joint."<setId( LLUUID::null ); //restore joints to default positions, however skip over the pelvis - if ( pJoint && pPelvis != pJoint ) + if ( pJoint ) { pJoint->restoreOldXform(); } @@ -6165,7 +6157,8 @@ BOOL LLVOAvatar::loadSkeletonNode () mRoot.addChild( &mSkeleton[0] ); for (std::vector::iterator iter = mMeshLOD.begin(); - iter != mMeshLOD.end(); iter++) + iter != mMeshLOD.end(); + ++iter) { LLViewerJoint *joint = (LLViewerJoint *) *iter; joint->mUpdateXform = FALSE; @@ -6201,7 +6194,8 @@ BOOL LLVOAvatar::loadSkeletonNode () { LLVOAvatarXmlInfo::skeletal_distortion_info_list_t::iterator iter; for (iter = sAvatarXmlInfo->mSkeletalDistortionInfoList.begin(); - iter != sAvatarXmlInfo->mSkeletalDistortionInfoList.end(); iter++) + iter != sAvatarXmlInfo->mSkeletalDistortionInfoList.end(); + ++iter) { LLPolySkeletalDistortionInfo *info = *iter; LLPolySkeletalDistortion *param = new LLPolySkeletalDistortion(this); @@ -6221,7 +6215,8 @@ BOOL LLVOAvatar::loadSkeletonNode () { LLVOAvatarXmlInfo::attachment_info_list_t::iterator iter; for (iter = sAvatarXmlInfo->mAttachmentInfoList.begin(); - iter != sAvatarXmlInfo->mAttachmentInfoList.end(); iter++) + iter != sAvatarXmlInfo->mAttachmentInfoList.end(); + ++iter) { LLVOAvatarXmlInfo::LLVOAvatarAttachmentInfo *info = *iter; if (!isSelf() && info->mJointName == "mScreen") @@ -6301,8 +6296,8 @@ BOOL LLVOAvatar::loadSkeletonNode () BOOL LLVOAvatar::loadMeshNodes() { for (LLVOAvatarXmlInfo::mesh_info_list_t::const_iterator meshinfo_iter = sAvatarXmlInfo->mMeshInfoList.begin(); - meshinfo_iter != sAvatarXmlInfo->mMeshInfoList.end(); - meshinfo_iter++) + meshinfo_iter != sAvatarXmlInfo->mMeshInfoList.end(); + ++meshinfo_iter) { const LLVOAvatarXmlInfo::LLVOAvatarMeshInfo *info = *meshinfo_iter; const std::string &type = info->mType; @@ -6318,7 +6313,7 @@ BOOL LLVOAvatar::loadMeshNodes() mesh = &mHairMesh0; */ for (LLVOAvatarDictionary::Meshes::const_iterator mesh_iter = LLVOAvatarDictionary::getInstance()->getMeshes().begin(); mesh_iter != LLVOAvatarDictionary::getInstance()->getMeshes().end(); - mesh_iter++) + ++mesh_iter) { const EMeshIndex mesh_index = mesh_iter->first; const LLVOAvatarDictionary::MeshEntry *mesh_dict = mesh_iter->second; @@ -6389,8 +6384,8 @@ BOOL LLVOAvatar::loadMeshNodes() mesh->setLOD( info->mMinPixelArea ); for (LLVOAvatarXmlInfo::LLVOAvatarMeshInfo::morph_info_list_t::const_iterator xmlinfo_iter = info->mPolyMorphTargetInfoList.begin(); - xmlinfo_iter != info->mPolyMorphTargetInfoList.end(); - xmlinfo_iter++) + xmlinfo_iter != info->mPolyMorphTargetInfoList.end(); + ++xmlinfo_iter) { const LLVOAvatarXmlInfo::LLVOAvatarMeshInfo::morph_info_pair_t *info_pair = &(*xmlinfo_iter); LLPolyMorphTarget *param = new LLPolyMorphTarget(mesh->getMesh()); @@ -6863,7 +6858,7 @@ BOOL LLVOAvatar::attachObject(LLViewerObject *viewer_object) } if(!item_id.isNull()) { - mUnsupportedAttachmentPoints[attachmentID] = item_id; + mUnsupportedAttachmentPoints[attachmentID] = std::pair(item_id,viewer_object->getID()); if (viewer_object->isSelected()) { LLSelectMgr::getInstance()->updateSelectionCenter(); @@ -7033,6 +7028,14 @@ void LLVOAvatar::cleanupAttachedMesh( LLViewerObject* pVO ) if ( bindCnt > 0 ) { LLVOAvatar::resetJointPositionsToDefault(); + //Need to handle the repositioning of the cam, updating rig data etc during outfit editing + //This handles the case where we detach a replacement rig. + if ( gAgentCamera.cameraCustomizeAvatar() ) + { + gAgent.unpauseAnimation(); + //Still want to refocus on head bone + gAgentCamera.changeCameraToCustomizeAvatar(); + } } } } @@ -7046,12 +7049,12 @@ void LLVOAvatar::cleanupAttachedMesh( LLViewerObject* pVO ) //----------------------------------------------------------------------------- BOOL LLVOAvatar::detachObject(LLViewerObject *viewer_object) { - for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); - iter != mAttachmentPoints.end(); ) + for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); + iter != mAttachmentPoints.end(); + ++iter) { - attachment_map_t::iterator curiter = iter++; - LLViewerJointAttachment* attachment = curiter->second; - // only one object per attachment point for now + LLViewerJointAttachment* attachment = iter->second; + if (attachment->isObjectAttached(viewer_object)) { // [RLVa:KB] - Checked: 2010-03-05 (RLVa-1.2.0a) | Added: RLVa-1.2.0a @@ -7069,7 +7072,7 @@ BOOL LLVOAvatar::detachObject(LLViewerObject *viewer_object) } } // [/RLVa:KB] - + cleanupAttachedMesh( viewer_object ); LLUUID item_id = viewer_object->getAttachmentItemID(); attachment->removeObject(viewer_object); if (isSelf()) @@ -7125,11 +7128,11 @@ BOOL LLVOAvatar::detachObject(LLViewerObject *viewer_object) } if(!item_id.isNull()) { - std::map::iterator iter = mUnsupportedAttachmentPoints.begin(); - std::map::iterator end = mUnsupportedAttachmentPoints.end(); + std::map >::iterator iter = mUnsupportedAttachmentPoints.begin(); + std::map >::iterator end = mUnsupportedAttachmentPoints.end(); for( ; iter != end; ++iter) { - if((*iter).second == item_id) + if((*iter).second.first == item_id) { mUnsupportedAttachmentPoints.erase((*iter).first); if (isSelf()) @@ -7373,10 +7376,10 @@ BOOL LLVOAvatar::isWearingAttachment( const LLUUID& inv_item_id ) // testzone attachpt BOOL LLVOAvatar::isWearingUnsupportedAttachment( const LLUUID& inv_item_id ) { - std::map::iterator end = mUnsupportedAttachmentPoints.end(); - for(std::map::iterator iter = mUnsupportedAttachmentPoints.begin(); iter != end; ++iter) + std::map >::iterator end = mUnsupportedAttachmentPoints.end(); + for(std::map >::iterator iter = mUnsupportedAttachmentPoints.begin(); iter != end; ++iter) { - if((*iter).second == inv_item_id) + if((*iter).second.first == inv_item_id) { return TRUE; } @@ -7606,20 +7609,18 @@ void LLVOAvatar::invalidateAll() updateMeshTextures(); } -void LLVOAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL set_by_user ) +void LLVOAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake ) { if (global_color == mTexSkinColor) { -// llinfos << "invalidateComposite cause: onGlobalColorChanged( skin color )" << llendl; - invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet, set_by_user ); - invalidateComposite( mBakedTextureDatas[BAKED_UPPER].mTexLayerSet, set_by_user ); - invalidateComposite( mBakedTextureDatas[BAKED_LOWER].mTexLayerSet, set_by_user ); + invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet, upload_bake ); + invalidateComposite( mBakedTextureDatas[BAKED_UPPER].mTexLayerSet, upload_bake ); + invalidateComposite( mBakedTextureDatas[BAKED_LOWER].mTexLayerSet, upload_bake ); } else if (global_color == mTexHairColor) { -// llinfos << "invalidateComposite cause: onGlobalColorChanged( hair color )" << llendl; - invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet, set_by_user ); - invalidateComposite( mBakedTextureDatas[BAKED_HAIR].mTexLayerSet, set_by_user ); + invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet, upload_bake ); + invalidateComposite( mBakedTextureDatas[BAKED_HAIR].mTexLayerSet, upload_bake ); // ! BACKWARDS COMPATIBILITY ! // Fix for dealing with avatars from viewers that don't bake hair. @@ -7631,11 +7632,11 @@ void LLVOAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL mBakedTextureDatas[BAKED_HAIR].mMeshes[i]->setColor( color.mV[VX], color.mV[VY], color.mV[VZ], color.mV[VW] ); } } - } + } else if (global_color == mTexEyeColor) { // llinfos << "invalidateComposite cause: onGlobalColorChanged( eyecolor )" << llendl; - invalidateComposite( mBakedTextureDatas[BAKED_EYES].mTexLayerSet, set_by_user ); + invalidateComposite( mBakedTextureDatas[BAKED_EYES].mTexLayerSet, upload_bake ); } updateMeshTextures(); } @@ -8728,14 +8729,14 @@ BOOL LLVOAvatar::teToColorParams( ETextureIndex te, const char* param_name[3] ) return TRUE; } -void LLVOAvatar::setClothesColor( ETextureIndex te, const LLColor4& new_color, BOOL set_by_user ) +void LLVOAvatar::setClothesColor( ETextureIndex te, const LLColor4& new_color, BOOL upload_bake ) { const char* param_name[3]; if( teToColorParams( te, param_name ) ) { - setVisualParamWeight( param_name[0], new_color.mV[VX], set_by_user ); - setVisualParamWeight( param_name[1], new_color.mV[VY], set_by_user ); - setVisualParamWeight( param_name[2], new_color.mV[VZ], set_by_user ); + setVisualParamWeight( param_name[0], new_color.mV[VX], upload_bake ); + setVisualParamWeight( param_name[1], new_color.mV[VY], upload_bake ); + setVisualParamWeight( param_name[2], new_color.mV[VZ], upload_bake ); } } @@ -8752,8 +8753,11 @@ LLColor4 LLVOAvatar::getClothesColor( ETextureIndex te ) return color; } - - +// static +LLColor4 LLVOAvatar::getDummyColor() +{ + return DUMMY_COLOR; +} void LLVOAvatar::dumpAvatarTEs( const std::string& context ) const { @@ -8765,31 +8769,31 @@ void LLVOAvatar::dumpAvatarTEs( const std::string& context ) const iter != LLVOAvatarDictionary::getInstance()->getTextures().end(); ++iter) { - const LLVOAvatarDictionary::TextureEntry *text_dict = iter->second; + const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second; const LLViewerTexture* te_image = getTEImage(iter->first); if( !te_image ) { - llinfos << " " << text_dict->mName << ": null ptr" << llendl; + llinfos << " " << texture_dict->mName << ": null ptr" << llendl; } else if( te_image->getID().isNull() ) { - llinfos << " " << text_dict->mName << ": null UUID" << llendl; + llinfos << " " << texture_dict->mName << ": null UUID" << llendl; } else if( te_image->getID() == IMG_DEFAULT ) { - llinfos << " " << text_dict->mName << ": IMG_DEFAULT" << llendl; + llinfos << " " << texture_dict->mName << ": IMG_DEFAULT" << llendl; } else if (te_image->getID() == IMG_INVISIBLE) { - llinfos << " " << text_dict->mName << ": IMG_INVISIBLE" << llendl; + llinfos << " " << texture_dict->mName << ": IMG_INVISIBLE" << llendl; } else if( te_image->getID() == IMG_DEFAULT_AVATAR ) { - llinfos << " " << text_dict->mName << ": IMG_DEFAULT_AVATAR" << llendl; + llinfos << " " << texture_dict->mName << ": IMG_DEFAULT_AVATAR" << llendl; } else { - llinfos << " " << text_dict->mName << ": " << te_image->getID() << llendl; + llinfos << " " << texture_dict->mName << ": " << te_image->getID() << llendl; } } } @@ -8850,11 +8854,6 @@ void LLVOAvatar::setInvisible(BOOL newvalue) } } -LLColor4 LLVOAvatar::getDummyColor() -{ - return DUMMY_COLOR; -} - // Unlike most wearable functions, this works for both self and other. BOOL LLVOAvatar::isWearingWearableType( LLWearableType::EType type ) const { @@ -9528,7 +9527,7 @@ void LLVOAvatar::dumpArchetypeXML( void* ) const std::string& wearable_name = LLWearableType::getTypeName( (LLWearableType::EType) type ); apr_file_printf( file, "\n\t\t\n", wearable_name.c_str() ); - for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) + for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() ) { LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param; if( (viewer_param->getWearableType() == type) && @@ -10274,9 +10273,7 @@ std::string LLVOAvatar::getFullname() const LLNameValue* last = getNVPair("LastName"); if (first && last) { - name += first->getString(); - name += " "; - name += last->getString(); + name = LLCacheName::buildFullName( first->getString(), last->getString() ); } return name; @@ -10523,10 +10520,10 @@ const std::string LLVOAvatar::getBakedStatusForPrintout() const ++iter) { const ETextureIndex index = iter->first; - const LLVOAvatarDictionary::TextureEntry *text_dict = iter->second; - if (text_dict->mIsBakedTexture) + const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second; + if (texture_dict->mIsBakedTexture) { - line += text_dict->mName; + line += texture_dict->mName; if (isTextureDefined(index)) { line += "_baked"; diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 342335b04..07a2da690 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -805,7 +805,7 @@ public: const std::string getAttachedPointName(const LLUUID& inv_item_id); // - std::map mUnsupportedAttachmentPoints; + std::map > mUnsupportedAttachmentPoints; // /** Wearables diff --git a/indra/newview/llwaterparammanager.h b/indra/newview/llwaterparammanager.h index c1042d06a..d0f1be510 100644 --- a/indra/newview/llwaterparammanager.h +++ b/indra/newview/llwaterparammanager.h @@ -279,9 +279,6 @@ public: F32 getFogDensity(void); LLColor4 getFogColor(void); - // singleton pattern implementation - static LLWaterParamManager * instance(); - public: LLWaterParamSet mCurParams; @@ -323,7 +320,7 @@ private: // list of all the parameters, listed by name - std::map mParamList; + preset_map_t mParamList; std::vector mShaderList; }; diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index 3e1069f04..1c18245b1 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -730,7 +730,7 @@ void LLWearable::removeFromAvatar( LLWearableType::EType type, BOOL upload_bake } gAgentAvatarp->updateVisualParams(); - gAgentAvatarp->updateMeshTextures(); + gAgentAvatarp->wearableUpdated(type, FALSE); // if( upload_bake ) // { @@ -797,6 +797,15 @@ void LLWearable::copyDataFrom( LLWearable* src ) } } +void LLWearable::setItemID(const LLUUID& item_id) +{ + mItemID = item_id; +} + +const LLUUID& LLWearable::getItemID() const +{ + return mItemID; +} void LLWearable::setType(LLWearableType::EType type) { mType = type; @@ -859,6 +868,20 @@ void LLWearable::readFromAvatar() } +void LLWearable::setLabelUpdated() const +{ + gInventory.addChangedMask(LLInventoryObserver::LABEL, getItemID()); +} + +void LLWearable::refreshName() +{ + LLUUID item_id = getItemID(); + LLInventoryItem* item = gInventory.getItem(item_id); + if( item ) + { + mName = item->getName(); + } +} struct LLWearableSaveData { diff --git a/indra/newview/llwearable.h b/indra/newview/llwearable.h index c206bc368..1459f4f6a 100644 --- a/indra/newview/llwearable.h +++ b/indra/newview/llwearable.h @@ -108,7 +108,17 @@ public: static void setCurrentDefinitionVersion( S32 version ) { LLWearable::sCurrentDefinitionVersion = version; } friend std::ostream& operator<<(std::ostream &s, const LLWearable &w); + void setItemID(const LLUUID& item_id); + // Something happened that requires the wearable's label to be updated (e.g. worn/unworn). + void setLabelUpdated() const; + + // the wearable was worn. make sure the name of the wearable object matches the LLViewerInventoryItem, + // not the wearable asset itself. + void refreshName(); + +private: + typedef std::map te_map_t; static S32 sCurrentDefinitionVersion; // Depends on the current state of the avatar_lad.xml. S32 mDefinitionVersion; // Depends on the state of the avatar_lad.xml when this asset was created. @@ -122,8 +132,9 @@ public: typedef std::map param_map_t; param_map_t mVisualParamMap; // maps visual param id to weight - typedef std::map te_map_t; + te_map_t mTEMap; // maps TE to Image ID + LLUUID mItemID; // ID of the inventory item in the agent's inventory }; #endif // LL_LLWEARABLE_H diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp index 1e6f65136..535beb3ad 100644 --- a/indra/newview/llwearablelist.cpp +++ b/indra/newview/llwearablelist.cpp @@ -43,18 +43,13 @@ #include "llviewerstats.h" #include "llnotificationsutil.h" -// Globals -LLWearableList gWearableList; // Globally constructed; be careful that there's no dependency with gAgent. - - +// Callback struct struct LLWearableArrivedData { - LLWearableArrivedData( - LLAssetType::EType asset_type, + LLWearableArrivedData(LLAssetType::EType asset_type, const std::string& wearable_name, void(*asset_arrived_callback)(LLWearable*, void* userdata), - void* userdata ) - : + void* userdata) : mAssetType( asset_type ), mCallback( asset_arrived_callback ), mUserdata( userdata ), @@ -75,6 +70,11 @@ struct LLWearableArrivedData // LLWearableList LLWearableList::~LLWearableList() +{ + llassert_always(mList.empty()) ; +} + +void LLWearableList::cleanup() { for_each(mList.begin(), mList.end(), DeletePairedPointer()); mList.clear(); @@ -90,8 +90,7 @@ void LLWearableList::getAsset( const LLAssetID& assetID, const std::string& wear } else { - gAssetStorage->getAssetData( - assetID, + gAssetStorage->getAssetData(assetID, asset_type, LLWearableList::processGetAssetReply, (void*)new LLWearableArrivedData( asset_type, wearable_name, asset_arrived_callback, userdata ), @@ -110,8 +109,7 @@ void LLWearableList::processGetAssetReply( const char* filename, const LLAssetID { LL_WARNS("Wearable") << "Bad Wearable Asset: missing file." << LL_ENDL; } - else - if( status >= 0 ) + else if (status >= 0) { // read the file LLFILE* fp = LLFile::fopen(std::string(filename), "rb"); /*Flawfinder: ignore*/ @@ -180,7 +178,7 @@ void LLWearableList::processGetAssetReply( const char* filename, const LLAssetID if (wearable) // success { - gWearableList.mList[ uuid ] = wearable; + LLWearableList::instance().mList[ uuid ] = wearable; LL_DEBUGS("Wearable") << "processGetAssetReply()" << LL_ENDL; LL_DEBUGS("Wearable") << wearable << LL_ENDL; } diff --git a/indra/newview/llwearablelist.h b/indra/newview/llwearablelist.h index c2a13eb66..890bf18f5 100644 --- a/indra/newview/llwearablelist.h +++ b/indra/newview/llwearablelist.h @@ -37,11 +37,19 @@ #include "lluuid.h" #include "llassetstorage.h" -class LLWearableList +// Globally constructed; be careful that there's no dependency with gAgent. +/* + BUG: mList's system of mapping between assetIDs and wearables is flawed + since LLWearable* has an associated itemID, and you can have multiple + inventory items pointing to the same asset (i.e. more than one ItemID + per assetID). EXT-6252 +*/ +class LLWearableList : public LLSingleton { public: LLWearableList() {} ~LLWearableList(); + void cleanup() ; S32 getLength() { return mList.size(); } @@ -62,9 +70,7 @@ public: protected: LLWearable* generateNewWearable(); // used for the create... functions private: - std::map< LLUUID, LLWearable* > mList; + std::map mList; }; -extern LLWearableList gWearableList; - #endif // LL_LLWEARABLELIST_H diff --git a/indra/newview/llworldmap.cpp b/indra/newview/llworldmap.cpp index c6ec2047a..0a8996f5d 100644 --- a/indra/newview/llworldmap.cpp +++ b/indra/newview/llworldmap.cpp @@ -293,12 +293,27 @@ LLSimInfo* LLWorldMap::simInfoFromPosGlobal(const LLVector3d& pos_global) return simInfoFromHandle(handle); } -LLSimInfo* LLWorldMap::simInfoFromHandle(const U64 handle) +LLSimInfo* LLWorldMap::simInfoFromHandle(const U64 findhandle) { - sim_info_map_t::iterator it = mSimInfoMap.find(handle); - if (it != mSimInfoMap.end()) - { - return it->second; + std::map::const_iterator it; + for (it = LLWorldMap::getInstance()->mSimInfoMap.begin(); it != LLWorldMap::getInstance()->mSimInfoMap.end(); ++it) + { + const U64 handle = (*it).first; + LLSimInfo* info = (*it).second; + if(handle == findhandle) + { + return info; + } + U32 x = 0, y = 0; + from_region_handle(findhandle, &x, &y); + U32 checkRegionX, checkRegionY; + from_region_handle(handle, &checkRegionX, &checkRegionY); + + if(x >= checkRegionX && x < (checkRegionX + info->getSizeX()) && + y >= checkRegionY && y < (checkRegionY + info->getSizeY())) + { + return info; + } } return NULL; } @@ -659,6 +674,8 @@ void LLWorldMap::processMapBlockReply(LLMessageSystem* msg, void**) { U16 x_regions; U16 y_regions; + U16 x_size = 256; + U16 y_size = 256; std::string name; U8 accesscode; U32 region_flags; @@ -673,9 +690,19 @@ void LLWorldMap::processMapBlockReply(LLMessageSystem* msg, void**) msg->getU8Fast(_PREHASH_Data, _PREHASH_WaterHeight, water_height, block); msg->getU8Fast(_PREHASH_Data, _PREHASH_Agents, agents, block); msg->getUUIDFast(_PREHASH_Data, _PREHASH_MapImageID, image_id, block); + if(msg->getNumberOfBlocksFast(_PREHASH_Size) > 0) + { + msg->getU16Fast(_PREHASH_Size, _PREHASH_SizeX, x_size, block); + msg->getU16Fast(_PREHASH_Size, _PREHASH_SizeY, y_size, block); + } + if(x_size == 0 || (x_size % 16) != 0|| (y_size % 16) != 0) + { + x_size = 256; + y_size = 256; + } U32 x_meters = x_regions * REGION_WIDTH_UNITS; - U32 y_meters = y_regions * REGION_WIDTH_UNITS; + U32 y_meters = y_regions * REGION_WIDTH_UNITS; U64 handle = to_region_handle(x_meters, y_meters); @@ -714,6 +741,7 @@ void LLWorldMap::processMapBlockReply(LLMessageSystem* msg, void**) siminfo->setRegionFlags( region_flags ); siminfo->setWaterHeight((F32) water_height); siminfo->setMapImageID( image_id, agent_flags ); + siminfo->setSize( x_size, y_size ); #ifdef IMMEDIATE_IMAGE_LOAD if (use_web_map_tiles) diff --git a/indra/newview/llworldmap.h b/indra/newview/llworldmap.h index c87b514ad..c41bf28c3 100644 --- a/indra/newview/llworldmap.h +++ b/indra/newview/llworldmap.h @@ -100,6 +100,7 @@ public: void updateAgentCount(F64 time); // Send an item request for agent count on that region if time's up // Setters void setName(std::string& name) { mName = name; } + void setSize(U16 sizeX, U16 sizeY) { mSizeX = sizeX; mSizeY = sizeY; } void setAccess (U8 accesscode) { mAccess = accesscode; } void setRegionFlags (U32 region_flags) { mRegionFlags = region_flags; } void setWaterHeight (F32 water_height) { mWaterHeight = water_height; } @@ -117,6 +118,8 @@ public: const F32 getWaterHeight() const { return mWaterHeight; } const F32 getAlpha() const { return mAlpha; } const U64 getHandle() const { return mHandle; } + const U16 getSizeX() const { return mSizeX; } + const U16 getSizeY() const { return mSizeY; } bool isName(const std::string& name) const; bool isDown() { return (mAccess == SIM_ACCESS_DOWN); } bool isPG() { return (mAccess <= SIM_ACCESS_PG); } @@ -130,7 +133,9 @@ private: U8 mAccess; U32 mRegionFlags; F32 mWaterHeight; - + U16 mSizeX; + U16 mSizeY; + F32 mAlpha; public: diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp index 575e8120b..0edb7765d 100644 --- a/indra/newview/llworldmapview.cpp +++ b/indra/newview/llworldmapview.cpp @@ -644,7 +644,7 @@ void LLWorldMapView::drawTiles(S32 width, S32 height) { { continue; // better to draw nothing than the missing asset image } - + LLVector3d origin_global((F64)layer->LayerExtents.mLeft * REGION_WIDTH_METERS, (F64)layer->LayerExtents.mBottom * REGION_WIDTH_METERS, 0.f); // Find x and y position relative to camera's center. @@ -674,7 +674,8 @@ void LLWorldMapView::drawTiles(S32 width, S32 height) { } current_image->setBoostLevel(LLViewerTexture::BOOST_MAP_VISIBLE); - current_image->setKnownDrawSize(llround(pix_width * LLUI::sGLScaleFactor.mV[VX]), llround(pix_height * LLUI::sGLScaleFactor.mV[VY])); + current_image->setKnownDrawSize(llround(pix_width * LLUI::sGLScaleFactor.mV[VX]), + llround(pix_height * LLUI::sGLScaleFactor.mV[VY])); if (!current_image->hasGLTexture()) { @@ -762,8 +763,8 @@ void LLWorldMapView::drawTiles(S32 width, S32 height) { // When the view isn't panned, 0,0 = center of rectangle F32 bottom = sPanY + half_height + relative_y; F32 left = sPanX + half_width + relative_x; - F32 top = bottom + sMapScale ; - F32 right = left + sMapScale ; + F32 top = bottom + sMapScale * ((F32)info->getSizeY() / 256.f); + F32 right = left + sMapScale * ((F32)info->getSizeX() / 256.f); // Switch to world map texture (if available for this region) if either: // 1. Tiles are zoomed out small enough, or @@ -815,7 +816,8 @@ void LLWorldMapView::drawTiles(S32 width, S32 height) { (textures_requested_this_tick < MAX_REQUEST_PER_TICK))) { textures_requested_this_tick++; - if (use_web_map_tiles) + if (use_web_map_tiles && info->getSizeX() == REGION_WIDTH_UNITS && + info->getSizeY() == REGION_WIDTH_UNITS) { LLVector3d region_pos = info->getGlobalOrigin(); info->mCurrentImage = LLWorldMap::loadObjectsTile((U32)(region_pos.mdV[VX] / REGION_WIDTH_UNITS), (U32)(region_pos.mdV[VY] / REGION_WIDTH_UNITS)); @@ -852,13 +854,15 @@ void LLWorldMapView::drawTiles(S32 width, S32 height) { if (simimage != NULL) { simimage->setBoostLevel(LLViewerTexture::BOOST_MAP); - simimage->setKnownDrawSize(llround(draw_size * LLUI::sGLScaleFactor.mV[VX]), llround(draw_size * LLUI::sGLScaleFactor.mV[VY])); + simimage->setKnownDrawSize(llround(draw_size * LLUI::sGLScaleFactor.mV[VX] * ((F32)info->getSizeX() / REGION_WIDTH_UNITS)), + llround(draw_size * LLUI::sGLScaleFactor.mV[VY] * ((F32)info->getSizeY() / REGION_WIDTH_UNITS))); } if (overlayimage != NULL) { overlayimage->setBoostLevel(LLViewerTexture::BOOST_MAP); - overlayimage->setKnownDrawSize(llround(draw_size * LLUI::sGLScaleFactor.mV[VX]), llround(draw_size * LLUI::sGLScaleFactor.mV[VY])); + overlayimage->setKnownDrawSize(llround(draw_size * LLUI::sGLScaleFactor.mV[VX] * ((F32)info->getSizeX() / REGION_WIDTH_UNITS)), + llround(draw_size * LLUI::sGLScaleFactor.mV[VY] * ((F32)info->getSizeY() / REGION_WIDTH_UNITS))); } // LLTextureView::addDebugImage(simimage); @@ -1255,8 +1259,17 @@ bool LLWorldMapView::drawMipmapLevel(S32 width, S32 height, S32 level, bool load F32 left = pos_screen[VX]; F32 bottom = pos_screen[VY]; // Compute the NE corner coordinates of the tile now - pos_global[VX] += tile_width; - pos_global[VY] += tile_width; + LLSimInfo* simInfo = LLWorldMap::instance().simInfoFromHandle(to_region_handle(grid_x, grid_y)); + if(simInfo != NULL) + { + pos_global[VX] += ((F32)tile_width * ((F32)simInfo->getSizeX() / REGION_WIDTH_METERS)); + pos_global[VY] += ((F32)tile_width * ((F32)simInfo->getSizeY() / REGION_WIDTH_METERS)); + } + else + { + pos_global[VX] += tile_width; + pos_global[VY] += tile_width; + } pos_screen = globalPosToView (pos_global); F32 right = pos_screen[VX]; F32 top = pos_screen[VY]; @@ -1283,11 +1296,6 @@ bool LLWorldMapView::drawMipmapLevel(S32 width, S32 height, S32 level, bool load drawTileOutline(level, top, left, bottom, right); #endif // DEBUG_DRAW_TILE } - //else - //{ - // Waiting for a tile -> the level is not complete - // LL_INFOS("World Map") << "Unfetched tile. level = " << level << LL_ENDL; - //} } else { diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 2612bf1e2..91ae2427f 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -2382,6 +2382,8 @@ void LLPipeline::markVisible(LLDrawable *drawablep, LLCamera& camera) root->getVObj()->isAttachment()) { LLDrawable* rootparent = root->getParent(); + static const LLCachedControl draw_orphans("ShyotlDrawOrphanAttachments",false); + if (rootparent) // this IS sometimes NULL { LLViewerObject *vobj = rootparent->getVObj(); @@ -2389,12 +2391,16 @@ void LLPipeline::markVisible(LLDrawable *drawablep, LLCamera& camera) if (vobj) // this test may not be needed, see above { const LLVOAvatar* av = vobj->asAvatar(); - if (av && av->isImpostor()) + if (av && av->isImpostor() ) { - return; + return; } + else if(!draw_orphans && (!av || av->isDead())) + return; } } + else if(!draw_orphans) + return; } sCull->pushBridge((LLSpatialBridge*) drawablep); } diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp index 2bd383487..aa61e3640 100644 --- a/indra/newview/rlvhandler.cpp +++ b/indra/newview/rlvhandler.cpp @@ -17,6 +17,7 @@ #include "llviewerprecompiledheaders.h" #include "llfloateravatarlist.h" #include "llavatarnamecache.h" +#include "llcallbacklist.h" #include "llfloaterbeacons.h" #include "llfloaterchat.h" #include "llfloaterdaycycle.h" diff --git a/indra/newview/rlvhelper.cpp b/indra/newview/rlvhelper.cpp index dba0db371..2d264b879 100644 --- a/indra/newview/rlvhelper.cpp +++ b/indra/newview/rlvhelper.cpp @@ -845,14 +845,14 @@ void RlvForceWear::done() return; } - // If all the assets are available locally then "pWearData" will be freed *before* the last "gWearableList.getAsset()" call returns + // If all the assets are available locally then "pWearData" will be freed *before* the last "LLWearableList::instance().getAsset()" call returns bool fContinue = true; LLWearableHoldingPattern::found_list_t::const_iterator itWearable = pWearData->mFoundList.begin(); while ( (fContinue) && (itWearable != pWearData->mFoundList.end()) ) { const LLFoundData* pFound = *itWearable; ++itWearable; fContinue = (itWearable != pWearData->mFoundList.end()); - gWearableList.getAsset(pFound->mAssetID, pFound->mName, pFound->mAssetType, wear_inventory_category_on_avatar_loop, (void*)pWearData); + LLWearableList::instance().getAsset(pFound->mAssetID, pFound->mName, pFound->mAssetType, wear_inventory_category_on_avatar_loop, (void*)pWearData); } m_addWearables.clear(); diff --git a/indra/newview/rlvinventory.cpp b/indra/newview/rlvinventory.cpp index 94327cbd9..971140224 100644 --- a/indra/newview/rlvinventory.cpp +++ b/indra/newview/rlvinventory.cpp @@ -16,6 +16,7 @@ #include "llviewerprecompiledheaders.h" #include "llagent.h" +#include "llcallbacklist.h" #include "llstartup.h" #include "llviewerobject.h" #include "llvoavatar.h" @@ -142,7 +143,7 @@ void RlvInventory::fetchWornItems() // Fetch all currently worn clothing layers and body parts for (int type = 0; type < LLWearableType::WT_COUNT; type++) { - const LLUUID& idItem = gAgentWearables.getWearableItemID((LLWearableType::EType)type); + const LLUUID idItem = gAgentWearables.getWearableItemID((LLWearableType::EType)type); if (idItem.notNull()) idItems.push_back(idItem); } diff --git a/indra/newview/rlvlocks.cpp b/indra/newview/rlvlocks.cpp index 88f7de3c4..c8c800bcf 100644 --- a/indra/newview/rlvlocks.cpp +++ b/indra/newview/rlvlocks.cpp @@ -181,6 +181,11 @@ void RlvAttachmentLocks::addAttachmentLock(const LLUUID& idAttachObj, const LLUU #endif // RLV_RELEASE m_AttachObjRem.insert(std::pair(idAttachObj, idRlvObj)); + if(LLViewerObject *pObj = gObjectList.findObject(idAttachObj)) //OK + { + gInventory.addChangedMask(LLInventoryObserver::LABEL, pObj->getAttachmentItemID()); + gInventory.notifyObservers(); + } updateLockedHUD(); } @@ -197,6 +202,27 @@ void RlvAttachmentLocks::addAttachmentPointLock(S32 idxAttachPt, const LLUUID& i if (eLock & RLV_LOCK_REMOVE) { m_AttachPtRem.insert(std::pair(idxAttachPt, idRlvObj)); + LLVOAvatar* pAvatar = gAgentAvatarp; + if (pAvatar) + { + bool need_update = false; + LLVOAvatar::attachment_map_t::iterator iter = pAvatar->mAttachmentPoints.find(idxAttachPt); + if (iter != pAvatar->mAttachmentPoints.end()) + { + for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = iter->second->mAttachedObjects.begin(); + attachment_iter != iter->second->mAttachedObjects.end();++attachment_iter) + { + LLViewerObject* attached_object = (*attachment_iter); + if(attached_object) + { + gInventory.addChangedMask(LLInventoryObserver::LABEL, attached_object->getAttachmentItemID()); + need_update = true; + } + } + } + if(need_update) + gInventory.notifyObservers(); + } updateLockedHUD(); } if (eLock & RLV_LOCK_ADD) @@ -314,6 +340,11 @@ void RlvAttachmentLocks::removeAttachmentLock(const LLUUID& idAttachObj, const L if (idRlvObj == itAttachObj->second) { m_AttachObjRem.erase(itAttachObj); + if(LLViewerObject *pObj = gObjectList.findObject(idAttachObj)) //OK + { + gInventory.addChangedMask(LLInventoryObserver::LABEL, pObj->getAttachmentItemID()); + gInventory.notifyObservers(); + } updateLockedHUD(); break; } @@ -331,6 +362,7 @@ void RlvAttachmentLocks::removeAttachmentPointLock(S32 idxAttachPt, const LLUUID if (eLock & RLV_LOCK_REMOVE) { + bool removed_entry = false; RLV_ASSERT( m_AttachPtRem.lower_bound(idxAttachPt) != m_AttachPtRem.upper_bound(idxAttachPt) ); // The lock should always exist for (rlv_attachptlock_map_t::iterator itAttachPt = m_AttachPtRem.lower_bound(idxAttachPt), endAttachPt = m_AttachPtRem.upper_bound(idxAttachPt); itAttachPt != endAttachPt; ++itAttachPt) @@ -338,10 +370,38 @@ void RlvAttachmentLocks::removeAttachmentPointLock(S32 idxAttachPt, const LLUUID if (idRlvObj == itAttachPt->second) { m_AttachPtRem.erase(itAttachPt); + removed_entry = true; updateLockedHUD(); break; } } + if(removed_entry) + { + if(m_AttachPtRem.find(idxAttachPt) == m_AttachPtRem.end()) + { + LLVOAvatar* pAvatar = gAgentAvatarp; + if (pAvatar) + { + bool need_update = false; + LLVOAvatar::attachment_map_t::iterator iter = pAvatar->mAttachmentPoints.find(idxAttachPt); + if (iter != pAvatar->mAttachmentPoints.end()) + { + for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = iter->second->mAttachedObjects.begin(); + attachment_iter != iter->second->mAttachedObjects.end();++attachment_iter) + { + LLViewerObject* attached_object = (*attachment_iter); + if(attached_object) + { + gInventory.addChangedMask(LLInventoryObserver::LABEL, attached_object->getAttachmentItemID()); + need_update = true; + } + } + if(need_update) + gInventory.notifyObservers(); + } + } + } + } } if (eLock & RLV_LOCK_ADD) { @@ -362,7 +422,7 @@ void RlvAttachmentLocks::removeAttachmentPointLock(S32 idxAttachPt, const LLUUID void RlvAttachmentLocks::updateLockedHUD() { LLVOAvatar* pAvatar = gAgentAvatarp; - if (!pAvatar) + if (!pAvatar || pAvatar->isDead()) return; m_fHasLockedHUD = false; @@ -814,7 +874,15 @@ void RlvWearableLocks::addWearableTypeLock(LLWearableType::EType eType, const LL // NOTE: m_WearableTypeXXX can contain duplicate pairs (ie @remoutfit:shirt=n,remoutfit=n from the same object) if (eLock & RLV_LOCK_REMOVE) + { m_WearableTypeRem.insert(std::pair(eType, idRlvObj)); + LLUUID item_id = gAgentWearables.getWearableItemID(eType); + if(item_id.notNull()) + { + gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id); + gInventory.notifyObservers(); + } + } if (eLock & RLV_LOCK_ADD) m_WearableTypeAdd.insert(std::pair(eType, idRlvObj)); } @@ -889,15 +957,29 @@ void RlvWearableLocks::removeWearableTypeLock(LLWearableType::EType eType, const if (eLock & RLV_LOCK_REMOVE) { RLV_ASSERT( m_WearableTypeRem.lower_bound(eType) != m_WearableTypeRem.upper_bound(eType) ); // The lock should always exist + bool removed_entry = false; for (rlv_wearabletypelock_map_t::iterator itWearableType = m_WearableTypeRem.lower_bound(eType), endWearableType = m_WearableTypeRem.upper_bound(eType); itWearableType != endWearableType; ++itWearableType) { if (idRlvObj == itWearableType->second) { m_WearableTypeRem.erase(itWearableType); + removed_entry = true; break; } } + if(removed_entry) + { + if(m_WearableTypeRem.find(eType) == m_WearableTypeRem.end()) + { + LLUUID item_id = gAgentWearables.getWearableItemID(eType); + if(item_id.notNull()) + { + gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id); + gInventory.notifyObservers(); + } + } + } } if (eLock & RLV_LOCK_ADD) { diff --git a/indra/newview/rlvviewer2.cpp b/indra/newview/rlvviewer2.cpp index 28caf788d..a90f93c80 100644 --- a/indra/newview/rlvviewer2.cpp +++ b/indra/newview/rlvviewer2.cpp @@ -26,78 +26,6 @@ #include "llviewerinventory.h" #include "rlvviewer2.h" -// ============================================================================ -// From llappearancemgr.cpp - -// Shim class to allow arbitrary boost::bind -// expressions to be run as one-time idle callbacks. -// -// TODO: rework idle function spec to take a boost::function in the first place. -class OnIdleCallbackOneTime -{ -public: - OnIdleCallbackOneTime(nullary_func_t callable): - mCallable(callable) - { - } - static void onIdle(void *data) - { - gIdleCallbacks.deleteFunction(onIdle, data); - OnIdleCallbackOneTime* self = reinterpret_cast(data); - self->call(); - delete self; - } - void call() - { - mCallable(); - } -private: - nullary_func_t mCallable; -}; - -void doOnIdleOneTime(nullary_func_t callable) -{ - OnIdleCallbackOneTime* cb_functor = new OnIdleCallbackOneTime(callable); - gIdleCallbacks.addFunction(&OnIdleCallbackOneTime::onIdle,cb_functor); -} - -// Shim class to allow generic boost functions to be run as -// recurring idle callbacks. Callable should return true when done, -// false to continue getting called. -// -// TODO: rework idle function spec to take a boost::function in the first place. -class OnIdleCallbackRepeating -{ -public: - OnIdleCallbackRepeating(bool_func_t callable): - mCallable(callable) - { - } - // Will keep getting called until the callable returns true. - static void onIdle(void *data) - { - OnIdleCallbackRepeating* self = reinterpret_cast(data); - bool done = self->call(); - if (done) - { - gIdleCallbacks.deleteFunction(onIdle, data); - delete self; - } - } - bool call() - { - return mCallable(); - } -private: - bool_func_t mCallable; -}; - -void doOnIdleRepeating(bool_func_t callable) -{ - OnIdleCallbackRepeating* cb_functor = new OnIdleCallbackRepeating(callable); - gIdleCallbacks.addFunction(&OnIdleCallbackRepeating::onIdle,cb_functor); -} - // ============================================================================ // From llinventoryobserver.cpp diff --git a/indra/newview/rlvviewer2.h b/indra/newview/rlvviewer2.h index 41892f8b7..28075031e 100644 --- a/indra/newview/rlvviewer2.h +++ b/indra/newview/rlvviewer2.h @@ -29,18 +29,6 @@ #include "boost/function.hpp" -// ============================================================================ -// From llappearancemgr.h - -typedef boost::function nullary_func_t; -typedef boost::function bool_func_t; - -// Call a given callable once in idle loop. -void doOnIdleOneTime(nullary_func_t callable); - -// Repeatedly call a callable in idle loop until it returns true. -void doOnIdleRepeating(bool_func_t callable); - // ============================================================================ // From llinventoryobserver.h diff --git a/indra/newview/skins/default/xui/en-us/strings.xml b/indra/newview/skins/default/xui/en-us/strings.xml index 83db17102..070399959 100644 --- a/indra/newview/skins/default/xui/en-us/strings.xml +++ b/indra/newview/skins/default/xui/en-us/strings.xml @@ -1739,6 +1739,46 @@ llSetObjectPermMask( integer mask, integer value ) Sets the given permission mask to the new value on the root object the task is attached to. (Requires god mode) + +integer llSetMemoryLimit( integer limit ) +Request ''limit'' bytes to be reserved for this script. + + +integer llSetLinkMedia( integer link, integer face, list params ) +Set the media params for a particular face on the linked prim(s) without a delay. + + +list llGetLinkMedia( integer link, integer face, list params ) +Returns a list with the media params for a particular face on a linked prim, given the desired list of named params. + + +integer llClearLinkMedia( integer link, integer face ) +Clears the media and all params from the given face on the linked prim(s). + + +llSetLinkCamera( integer link, vector eye, vector at ) +Sets the camera eye offset, and the offset that the camera is looking at, for avatars that sit on the linked prim. + + +llSetContentType( key request_id, integer content_type ) +Set the Internet media type of an LSL HTTP server response. + + +llLinkSitTarget( integer link, vector offset, rotation rot ); +Set the sit location for the linked prim(s). The sit location is relative to the prim's position and rotation. + + +key llAvatarOnLinkSitTarget( integer link ) +Returns a key that is the UUID of the user seated on the prim. + + + + @@ -2244,4 +2284,62 @@ list lsGetWindlightScene(list rules) Get the current WindLight settings. (Reguires LightShare) + + + +key osNpcSaveAppearance(key npc, string notecardName) +Saves the NPC's appearance to a notecard. +(OpenSim only.) + + +osNpcLoadAppearance(key npc, string notecardName) +Loads the NPC's appearance from a notecard with appearance data. +Notecards can also be loaded by UUID. +(OpenSim only.) + + +osNpcMoveToTarget(key npc, vector position, integer options) +Moves the NPC to a target at a given vector, using options to walk or to fly there. +(OpenSim only.) + + +key osOwnerSaveAppearance(string notecardName) +Saves the owner's appearance to a notecard inside the prim that holds the script. +(OpenSim only.) + + +rotation osNpcGetRot(key npc) +Retrieves the rotation of an NPC +(OpenSim only.) + + +osNpcSetRot(key npc, rotation rot) +Sets an NPC's rotation. +(OpenSim only.) + + +key osOwnerSaveAppearance(key avatarId, string notecardName) +Saves an avatar's appearance to a notecard inside the prim that holds the script. +(OpenSim only.) + + +vector osNpcGetPos(key npc) +Retrieves the vector of an NPC's position within a region. +(OpenSim only.) + + +osNpcStopMoveToTarget(key npc) +Makes an NPC stop moving to a target. +(OpenSim only.) + + +float osGetWindParam(string plugin, string param) +Gets the value of param property for plugin module. +(OpenSim only.) + + +osSetWindParam(string plugin, string param, float value) +Sets value of param property for plugin module. +(OpenSim only.) + diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index f49799b1c..7d811fb93 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -510,9 +510,14 @@ class DarwinManifest(ViewerManifest): "libexpat.0.5.0.dylib"): self.path(os.path.join(libdir, libfile), libfile) - #libfmodwrapper.dylib - self.path(self.args['configuration'] + "/libfmodwrapper.dylib", "libfmodwrapper.dylib") - + # For using FMOD for sound...but, fmod is proprietary so some might not use it... + try: + self.path(self.args['configuration'] + "/libfmodwrapper.dylib", "libfmodwrapper.dylib") + pass + except: + print "Skipping libfmodwrapper.dylib - not found" + pass + # our apps try: self.path("../mac_crash_logger/" + self.args['configuration'] + "/mac-crash-logger.app", "mac-crash-logger.app") diff --git a/install.xml b/install.xml index 3f1347123..d61fb7cea 100644 --- a/install.xml +++ b/install.xml @@ -927,9 +927,9 @@ anguage Infrstructure (CLI) international standard linux md5sum - 5d743c93b970abe685b185de83001a6e + 6e422a3548597a043223de9e9384c734 url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-qt4.6-20100923.tar.bz2 + https://github.com/downloads/siana/SingularityViewer/llqtwebkit-4.7.1-linux-20111013.tar.bz2 windows diff --git a/scripts/messages/message_template.msg b/scripts/messages/message_template.msg index d3acb611e..3e748330d 100644 --- a/scripts/messages/message_template.msg +++ b/scripts/messages/message_template.msg @@ -2061,7 +2061,7 @@ version 2.0 { IsPhantom BOOL } { CastsShadows BOOL } } - { + { ExtraPhysics Variable { PhysicsShapeType U8 } { Density F32 } @@ -8654,6 +8654,11 @@ version 2.0 { Agents U8 } { MapImageID LLUUID } } + { + Size Variable + { SizeX U16 } + { SizeY U16 } + } } // viewer -> sim