Merge branch 'master' of https://vcs.firestormviewer.org/phoenix-firestorm
commit
37d04235fe
|
|
@ -30,7 +30,6 @@ indra/tools/vstool/* -text
|
|||
# Files with Windows line endings
|
||||
VivoxAUP.txt text eol=crlf
|
||||
FILES_ARE_UNICODE_UTF-16LE.txt text eol=crlf
|
||||
*.nsi text eol=crlf
|
||||
|
||||
# Windows Manifest files
|
||||
*.manifest text eol=crlf
|
||||
|
|
|
|||
|
|
@ -30,7 +30,6 @@ jobs:
|
|||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-python@v4
|
||||
if: runner.os != 'Windows'
|
||||
id: py311
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
|
|
|||
|
|
@ -1140,11 +1140,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>9d9f72f50cffe7443e4b58f009ffc1f4</string>
|
||||
<string>8ee7c21f3f109cf4e1709e4af0b4bebf</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.02.15-darwin64-9.tar.bz2</string>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.02.17-darwin64-232401806.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -1154,11 +1154,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>79fb2f09d2c81ed6464e11af36566910</string>
|
||||
<string>8c82bd0fd9b544d02c8da1f9d921e964</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.02.15-linux64-231741426.tar.bz2</string>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.02.17-linux64-232401431.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1168,11 +1168,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>c1bce2b362c31345200297a4010626e9</string>
|
||||
<string>fb5a3f97091028859ffa8c2768536b52</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.15-windows-231741106.tar.bz2</string>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.17-windows-232401332.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -1182,18 +1182,18 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>cd0e8f58fece3eac0b5ebe21f354bf8c</string>
|
||||
<string>f8e4fdd3eafbd54c01f5f78d04b95bf8</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.15-windows64-231741113.tar.bz2</string>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.17-windows64-232401329.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>2.02.15</string>
|
||||
<string>2.02.17</string>
|
||||
</map>
|
||||
<key>fontconfig</key>
|
||||
<map>
|
||||
|
|
@ -1818,9 +1818,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>e99b86fc3ed48a778580dd1449f8f33b</string>
|
||||
<string>3142fccbcc0e2c5a019e3177ef364290</string>
|
||||
<key>url</key>
|
||||
<string>file:///opt/firestorm/kdu-8.2-darwin-212431232.tar.bz2</string>
|
||||
<string>file:///opt/firestorm/kdu-8.3-darwin64-232392239.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -1830,9 +1830,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>c4dd59fbb0709fc4c7b5ab69b20246f8</string>
|
||||
<string>e13d6fe708613bb3a5d630c4cdd97a3b</string>
|
||||
<key>url</key>
|
||||
<string>file:///opt/firestorm/kdu-8.2-linux64_bionic-220911445.tar.bz2</string>
|
||||
<string>file:///opt/firestorm/kdu-8.3-linux64-232392238.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1842,9 +1842,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>e88372fa10b83c6900443dcc12c12338</string>
|
||||
<string>4aa7df19125708580055b42190d2511e</string>
|
||||
<key>url</key>
|
||||
<string>file:///c:/cygwin/opt/firestorm/kdu-8.2-windows-212351246.tar.bz2</string>
|
||||
<string>file:///c:/cygwin/opt/firestorm/kdu-8.3-windows-232392239.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -1854,16 +1854,16 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>e88372fa10b83c6900443dcc12c12338</string>
|
||||
<string>4aa7df19125708580055b42190d2511e</string>
|
||||
<key>url</key>
|
||||
<string>file:///c:/cygwin/opt/firestorm/kdu-8.2-windows-212351246.tar.bz2</string>
|
||||
<string>file:///c:/cygwin/opt/firestorm/kdu-8.3-windows-232392239.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>8.0.6</string>
|
||||
<string>8.3</string>
|
||||
</map>
|
||||
<key>libhunspell</key>
|
||||
<map>
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ elseif (WINDOWS)
|
|||
${pymaybe}
|
||||
)
|
||||
endif()
|
||||
include(FindPythonInterp)
|
||||
find_package(Python3 COMPONENTS Interpreter)
|
||||
else()
|
||||
find_program(python python3)
|
||||
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ class LLAudioEngine_OpenAL : public LLAudioEngine
|
|||
|
||||
virtual bool init(void *user_data, const std::string &app_title);
|
||||
virtual std::string getDriverName(bool verbose);
|
||||
virtual LLStreamingAudioInterface* createDefaultStreamingAudioImpl() const { return nullptr; }
|
||||
virtual void allocateListener();
|
||||
|
||||
virtual void shutdown();
|
||||
|
|
@ -56,7 +57,6 @@ class LLAudioEngine_OpenAL : public LLAudioEngine
|
|||
/*virtual*/ void updateWind(LLVector3 direction, F32 camera_altitude);
|
||||
|
||||
private:
|
||||
void * windDSP(void *newbuffer, int length);
|
||||
typedef S16 WIND_SAMPLE_T;
|
||||
LLWindGen<WIND_SAMPLE_T> *mWindGen;
|
||||
S16 *mWindBuf;
|
||||
|
|
|
|||
|
|
@ -90,6 +90,8 @@ endif (BUILD_HEADLESS)
|
|||
add_library (llrender ${llrender_SOURCE_FILES})
|
||||
target_include_directories( llrender INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
set_property(TARGET llrender PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
# Libraries on which this library depends, needed for Linux builds
|
||||
# Sort by high-level to low-level
|
||||
target_link_libraries(llrender
|
||||
|
|
|
|||
|
|
@ -654,6 +654,6 @@
|
|||
execute_parameters="performance"
|
||||
is_running_function="Floater.IsOpen"
|
||||
is_running_parameters="performance"
|
||||
checkbox_control="FSAutoTuneFPS"
|
||||
checkbox_control="AutoTuneFPS"
|
||||
/>
|
||||
</commands>
|
||||
|
|
|
|||
|
|
@ -42,12 +42,10 @@
|
|||
#include "llpanelpeoplemenus.h"
|
||||
#include "llslurl.h"
|
||||
|
||||
const U32 MAX_SELECTIONS = 20;
|
||||
constexpr U32 MAX_SELECTIONS = 20;
|
||||
static LLPanelInjector<FSPanelContactSets> t_panel_contact_sets("contact_sets_panel");
|
||||
|
||||
FSPanelContactSets::FSPanelContactSets() : LLPanel()
|
||||
, mContactSetCombo(NULL)
|
||||
, mAvatarList(NULL)
|
||||
{
|
||||
mContactSetChangedConnection = LGGContactSets::getInstance()->setContactSetChangeCallback(boost::bind(&FSPanelContactSets::updateSets, this, _1));
|
||||
}
|
||||
|
|
@ -130,7 +128,7 @@ void FSPanelContactSets::generateAvatarList(const std::string& contact_set)
|
|||
++buddy)
|
||||
{
|
||||
// Only show our buddies who aren't in a set, by request.
|
||||
if (!LGGContactSets::getInstance()->isFriendInSet(buddy->first))
|
||||
if (!LGGContactSets::getInstance()->isFriendInAnySet(buddy->first))
|
||||
avatars.push_back(buddy->first);
|
||||
}
|
||||
}
|
||||
|
|
@ -144,10 +142,12 @@ void FSPanelContactSets::generateAvatarList(const std::string& contact_set)
|
|||
}
|
||||
else if (!LGGContactSets::getInstance()->isInternalSetName(contact_set))
|
||||
{
|
||||
LGGContactSets::ContactSet* group = LGGContactSets::getInstance()->getContactSet(contact_set); // UGLY!
|
||||
for (auto const& id : group->mFriends)
|
||||
if (LGGContactSets::ContactSet* group = LGGContactSets::getInstance()->getContactSet(contact_set); group)// UGLY!
|
||||
{
|
||||
avatars.push_back(id);
|
||||
for (auto const& id : group->mFriends)
|
||||
{
|
||||
avatars.push_back(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
getChild<LLTextBox>("member_count")->setTextArg("[COUNT]", llformat("%d", avatars.size()));
|
||||
|
|
@ -198,7 +198,7 @@ void FSPanelContactSets::refreshContactSets()
|
|||
std::vector<std::string> contact_sets = LGGContactSets::getInstance()->getAllContactSets();
|
||||
if (!contact_sets.empty())
|
||||
{
|
||||
for(auto const& set_name : contact_sets)
|
||||
for (auto const& set_name : contact_sets)
|
||||
{
|
||||
mContactSetCombo->add(set_name);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,8 +70,8 @@ private:
|
|||
|
||||
uuid_vec_t mAvatarSelections;
|
||||
|
||||
LLComboBox* mContactSetCombo;
|
||||
LLAvatarList* mAvatarList;
|
||||
LLComboBox* mContactSetCombo{ nullptr };
|
||||
LLAvatarList* mAvatarList{ nullptr };
|
||||
};
|
||||
|
||||
#endif // FS_PANELCONTACTSETS_H
|
||||
|
|
|
|||
|
|
@ -98,8 +98,6 @@ FSRadar::FSRadar() :
|
|||
mNameFormatCallbackConnection(),
|
||||
mAgeAlertCallbackConnection()
|
||||
{
|
||||
mRadarListUpdater = std::make_unique<FSRadarListUpdater>(std::bind(&FSRadar::updateRadarList, this));
|
||||
|
||||
// Use the callback from LLAvatarNameCache here or we might update the names too early!
|
||||
LLAvatarNameCache::getInstance()->addUseDisplayNamesCallback(boost::bind(&FSRadar::updateNames, this));
|
||||
mShowUsernamesCallbackConnection = gSavedSettings.getControl("NameTagShowUsernames")->getSignal()->connect(boost::bind(&FSRadar::updateNames, this));
|
||||
|
|
@ -126,6 +124,11 @@ FSRadar::~FSRadar()
|
|||
}
|
||||
}
|
||||
|
||||
void FSRadar::initSingleton()
|
||||
{
|
||||
mRadarListUpdater = std::make_unique<FSRadarListUpdater>(std::bind(&FSRadar::updateRadarList, this));
|
||||
}
|
||||
|
||||
void FSRadar::radarAlertMsg(const LLUUID& agent_id, const LLAvatarName& av_name, std::string_view postMsg)
|
||||
{
|
||||
// <FS:CR> Milkshake-style radar alerts
|
||||
|
|
|
|||
|
|
@ -109,6 +109,9 @@ public:
|
|||
return mUpdateSignal.connect(cb);
|
||||
}
|
||||
|
||||
protected:
|
||||
void initSingleton() override;
|
||||
|
||||
private:
|
||||
void updateRadarList();
|
||||
void updateTracking();
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -39,12 +39,11 @@
|
|||
#include "rlvactions.h"
|
||||
#include "rlvhandler.h"
|
||||
|
||||
const F32 COLOR_DAMPENING = 0.8f;
|
||||
constexpr F32 COLOR_DAMPENING = 0.8f;
|
||||
const std::string CONTACT_SETS_FILE = "settings_friends_groups.xml";
|
||||
const std::string CS_PSEUDONYM_QUOTED = "'--- ---'";
|
||||
|
||||
LGGContactSets::LGGContactSets()
|
||||
: mDefaultColor(LLColor4::grey)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -73,15 +72,14 @@ void LGGContactSets::toneDownColor(LLColor4& color) const
|
|||
|
||||
bool LGGContactSets::callbackAliasReset(const LLSD& notification, const LLSD& response)
|
||||
{
|
||||
S32 option = LLNotification::getSelectedOption(notification, response);
|
||||
if (option == 0)
|
||||
if (S32 option = LLNotification::getSelectedOption(notification, response); option == 0)
|
||||
{
|
||||
clearPseudonym(notification["payload"]["agent_id"].asUUID());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string LGGContactSets::getFilename()
|
||||
std::string LGGContactSets::getFilename() const
|
||||
{
|
||||
std::string path = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "");
|
||||
|
||||
|
|
@ -92,7 +90,7 @@ std::string LGGContactSets::getFilename()
|
|||
return path;
|
||||
}
|
||||
|
||||
std::string LGGContactSets::getDefaultFilename()
|
||||
std::string LGGContactSets::getDefaultFilename() const
|
||||
{
|
||||
std::string path = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "");
|
||||
|
||||
|
|
@ -107,8 +105,7 @@ LLSD LGGContactSets::exportContactSet(std::string_view set_name)
|
|||
{
|
||||
LLSD ret;
|
||||
|
||||
ContactSet* set = getContactSet(set_name);
|
||||
if (set)
|
||||
if (ContactSet* set = getContactSet(set_name); set)
|
||||
{
|
||||
ret["groupname"] = set->mName;
|
||||
ret["color"] = set->mColor.getValue();
|
||||
|
|
@ -199,27 +196,25 @@ LLSD LGGContactSets::exportToLLSD()
|
|||
output[CS_GLOBAL_SETTINGS]["defaultColor"] = mDefaultColor.getValue();
|
||||
|
||||
// Extra avatars
|
||||
for (uuid_set_t::iterator it = mExtraAvatars.begin(); it != mExtraAvatars.end(); ++it)
|
||||
for (const auto& avid : mExtraAvatars)
|
||||
{
|
||||
output[CS_SET_EXTRA_AVS][(*it).asString()] = "";
|
||||
output[CS_SET_EXTRA_AVS][avid.asString()] = "";
|
||||
}
|
||||
|
||||
// Pseudonyms
|
||||
for (uuid_map_t::iterator it = mPseudonyms.begin(); it != mPseudonyms.end(); ++it)
|
||||
for (const auto& [avid, pseudonym] : mPseudonyms)
|
||||
{
|
||||
output[CS_SET_PSEUDONYM][it->first.asString()] = it->second;
|
||||
output[CS_SET_PSEUDONYM][avid.asString()] = pseudonym;
|
||||
}
|
||||
|
||||
// Contact Sets
|
||||
for (contact_set_map_t::iterator it = mContactSets.begin(); it != mContactSets.end(); ++it)
|
||||
for (const auto& [name, set] : mContactSets)
|
||||
{
|
||||
std::string name = it->first;
|
||||
ContactSet* set = it->second;
|
||||
output[name]["color"] = set->mColor.getValue();
|
||||
output[name]["notify"] = set->mNotify;
|
||||
for (uuid_set_t::iterator friend_it = set->mFriends.begin(); friend_it != set->mFriends.end(); ++friend_it)
|
||||
for (const auto& friend_id : set->mFriends)
|
||||
{
|
||||
output[name]["friends"][(*friend_it).asString()] = "";
|
||||
output[name]["friends"][friend_id.asString()] = "";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -300,10 +295,9 @@ void LGGContactSets::importFromLLSD(const LLSD& data)
|
|||
}
|
||||
}
|
||||
|
||||
LLColor4 LGGContactSets::getSetColor(std::string_view set_name)
|
||||
LLColor4 LGGContactSets::getSetColor(std::string_view set_name) const
|
||||
{
|
||||
ContactSet* set = getContactSet(set_name);
|
||||
if (set)
|
||||
if (ContactSet* set = getContactSet(set_name); set)
|
||||
{
|
||||
return set->mColor;
|
||||
}
|
||||
|
|
@ -311,13 +305,12 @@ LLColor4 LGGContactSets::getSetColor(std::string_view set_name)
|
|||
return getDefaultColor();
|
||||
};
|
||||
|
||||
LLColor4 LGGContactSets::colorize(const LLUUID& uuid, const LLColor4& cur_color, ELGGCSType type)
|
||||
LLColor4 LGGContactSets::colorize(const LLUUID& uuid, LLColor4 color, ELGGCSType type) const
|
||||
{
|
||||
static LLCachedControl<bool> legacy_radar_friend(gSavedSettings, "FSLegacyRadarFriendColoring");
|
||||
static LLCachedControl<bool> legacy_radar_linden(gSavedSettings, "FSLegacyRadarLindenColoring");
|
||||
bool rlv_shownames = !RlvActions::canShowName(RlvActions::SNC_DEFAULT, uuid);
|
||||
LLColor4 color = cur_color;
|
||||
|
||||
|
||||
if (uuid == gAgentID)
|
||||
{
|
||||
switch (type)
|
||||
|
|
@ -451,7 +444,7 @@ LLColor4 LGGContactSets::colorize(const LLUUID& uuid, const LLColor4& cur_color,
|
|||
return color;
|
||||
}
|
||||
|
||||
LLColor4 LGGContactSets::getFriendColor(const LLUUID& friend_id, std::string_view ignored_set_name)
|
||||
LLColor4 LGGContactSets::getFriendColor(const LLUUID& friend_id, std::string_view ignored_set_name) const
|
||||
{
|
||||
LLColor4 color = getDefaultColor();
|
||||
if (ignored_set_name == CS_SET_NO_SETS)
|
||||
|
|
@ -460,8 +453,7 @@ LLColor4 LGGContactSets::getFriendColor(const LLUUID& friend_id, std::string_vie
|
|||
}
|
||||
|
||||
U32 lowest = U32_MAX;
|
||||
string_vec_t contact_sets = getFriendSets(friend_id);
|
||||
for (const auto& set_name : contact_sets)
|
||||
for (const auto& set_name : getFriendSets(friend_id))
|
||||
{
|
||||
if (set_name != ignored_set_name)
|
||||
{
|
||||
|
|
@ -474,7 +466,7 @@ LLColor4 LGGContactSets::getFriendColor(const LLUUID& friend_id, std::string_vie
|
|||
{
|
||||
lowest = set_size;
|
||||
|
||||
color = mContactSets[set_name]->mColor;
|
||||
color = mContactSets.at(set_name)->mColor;
|
||||
if (isNonFriend(friend_id))
|
||||
{
|
||||
toneDownColor(color);
|
||||
|
|
@ -487,20 +479,20 @@ LLColor4 LGGContactSets::getFriendColor(const LLUUID& friend_id, std::string_vie
|
|||
{
|
||||
if (isFriendInSet(friend_id, ignored_set_name) && !isInternalSetName(ignored_set_name))
|
||||
{
|
||||
return mContactSets[ignored_set_name.data()]->mColor;
|
||||
return mContactSets.at(ignored_set_name.data())->mColor;
|
||||
}
|
||||
}
|
||||
return color;
|
||||
}
|
||||
|
||||
bool LGGContactSets::hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGCSType type)
|
||||
bool LGGContactSets::hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGCSType type) const
|
||||
{
|
||||
LLColor4 color = LLColor4::white;
|
||||
return hasFriendColorThatShouldShow(friend_id, type, color);
|
||||
}
|
||||
|
||||
// handle all settings and rlv that would prevent us from showing the cs color
|
||||
bool LGGContactSets::hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGCSType type, LLColor4& color)
|
||||
bool LGGContactSets::hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGCSType type, LLColor4& color) const
|
||||
{
|
||||
if (!RlvActions::canShowName(RlvActions::SNC_DEFAULT, friend_id))
|
||||
{
|
||||
|
|
@ -551,7 +543,7 @@ bool LGGContactSets::hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGC
|
|||
return true;
|
||||
}
|
||||
|
||||
string_vec_t LGGContactSets::getFriendSets(const LLUUID& friend_id)
|
||||
string_vec_t LGGContactSets::getFriendSets(const LLUUID& friend_id) const
|
||||
{
|
||||
string_vec_t sets{};
|
||||
|
||||
|
|
@ -565,7 +557,7 @@ string_vec_t LGGContactSets::getFriendSets(const LLUUID& friend_id)
|
|||
return sets;
|
||||
}
|
||||
|
||||
uuid_vec_t LGGContactSets::getFriendsInSet(std::string_view set_name)
|
||||
uuid_vec_t LGGContactSets::getFriendsInSet(std::string_view set_name) const
|
||||
{
|
||||
uuid_vec_t friends;
|
||||
|
||||
|
|
@ -586,8 +578,7 @@ uuid_vec_t LGGContactSets::getFriendsInSet(std::string_view set_name)
|
|||
return getListOfNonFriends();
|
||||
}
|
||||
|
||||
ContactSet* set = getContactSet(set_name);
|
||||
if (set)
|
||||
if (ContactSet* set = getContactSet(set_name); set)
|
||||
{
|
||||
for (const auto& id : set->mFriends)
|
||||
{
|
||||
|
|
@ -598,7 +589,7 @@ uuid_vec_t LGGContactSets::getFriendsInSet(std::string_view set_name)
|
|||
return friends;
|
||||
}
|
||||
|
||||
string_vec_t LGGContactSets::getAllContactSets()
|
||||
string_vec_t LGGContactSets::getAllContactSets() const
|
||||
{
|
||||
string_vec_t sets{};
|
||||
|
||||
|
|
@ -610,7 +601,7 @@ string_vec_t LGGContactSets::getAllContactSets()
|
|||
return sets;
|
||||
}
|
||||
|
||||
uuid_vec_t LGGContactSets::getFriendsInAnySet()
|
||||
uuid_vec_t LGGContactSets::getFriendsInAnySet() const
|
||||
{
|
||||
uuid_set_t friendsInAnySet{};
|
||||
|
||||
|
|
@ -625,9 +616,9 @@ uuid_vec_t LGGContactSets::getFriendsInAnySet()
|
|||
return uuid_vec_t(friendsInAnySet.begin(), friendsInAnySet.end());
|
||||
}
|
||||
|
||||
bool LGGContactSets::isFriendInSet(const LLUUID& friend_id)
|
||||
bool LGGContactSets::isFriendInAnySet(const LLUUID& friend_id) const
|
||||
{
|
||||
for (const auto& [set_name, set] : mContactSets)
|
||||
for (const auto& [set_name, set] : mContactSets)
|
||||
{
|
||||
if (set->hasFriend(friend_id))
|
||||
{
|
||||
|
|
@ -638,15 +629,15 @@ bool LGGContactSets::isFriendInSet(const LLUUID& friend_id)
|
|||
return false;
|
||||
}
|
||||
|
||||
bool LGGContactSets::isFriendInSet(const LLUUID& friend_id, std::string_view set_name)
|
||||
bool LGGContactSets::isFriendInSet(const LLUUID& friend_id, std::string_view set_name) const
|
||||
{
|
||||
if (set_name == CS_SET_ALL_SETS)
|
||||
{
|
||||
return isFriendInSet(friend_id);
|
||||
return isFriendInAnySet(friend_id);
|
||||
}
|
||||
else if (set_name == CS_SET_NO_SETS)
|
||||
{
|
||||
return !isFriendInSet(friend_id);
|
||||
return !isFriendInAnySet(friend_id);
|
||||
}
|
||||
else if (set_name == CS_SET_PSEUDONYM)
|
||||
{
|
||||
|
|
@ -660,8 +651,7 @@ bool LGGContactSets::isFriendInSet(const LLUUID& friend_id, std::string_view set
|
|||
if( set_name.empty() )
|
||||
return false;
|
||||
|
||||
ContactSet* set = getContactSet(set_name);
|
||||
if (set)
|
||||
if (ContactSet* set = getContactSet(set_name); set)
|
||||
{
|
||||
return set->hasFriend(friend_id);
|
||||
}
|
||||
|
|
@ -669,12 +659,11 @@ bool LGGContactSets::isFriendInSet(const LLUUID& friend_id, std::string_view set
|
|||
return false;
|
||||
}
|
||||
|
||||
bool LGGContactSets::notifyForFriend(const LLUUID& friend_id)
|
||||
bool LGGContactSets::notifyForFriend(const LLUUID& friend_id) const
|
||||
{
|
||||
string_vec_t sets = getFriendSets(friend_id);
|
||||
for (const auto& set_name : sets)
|
||||
for (const auto& set_name : getFriendSets(friend_id))
|
||||
{
|
||||
if (mContactSets[set_name]->mNotify)
|
||||
if (mContactSets.at(set_name)->mNotify)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
@ -706,8 +695,7 @@ void LGGContactSets::addToSet(const uuid_vec_t& avatar_ids, std::string_view set
|
|||
void LGGContactSets::removeNonFriendFromList(const LLUUID& non_friend_id, bool save_changes /*= true*/)
|
||||
{
|
||||
LLAvatarTracker& tracker = LLAvatarTracker::instance();
|
||||
uuid_set_t::iterator found = mExtraAvatars.find(non_friend_id);
|
||||
if (found != mExtraAvatars.end())
|
||||
if (auto found = mExtraAvatars.find(non_friend_id); found != mExtraAvatars.end())
|
||||
{
|
||||
mExtraAvatars.erase(found);
|
||||
|
||||
|
|
@ -727,14 +715,13 @@ void LGGContactSets::removeNonFriendFromList(const LLUUID& non_friend_id, bool s
|
|||
|
||||
void LGGContactSets::removeFriendFromAllSets(const LLUUID& friend_id, bool save_changes /*= true*/)
|
||||
{
|
||||
string_vec_t sets = getFriendSets(friend_id);
|
||||
for (const auto& set_name : sets)
|
||||
for (const auto& set_name : getFriendSets(friend_id))
|
||||
{
|
||||
removeFriendFromSet(friend_id, set_name, save_changes);
|
||||
}
|
||||
}
|
||||
|
||||
bool LGGContactSets::isNonFriend(const LLUUID& non_friend_id)
|
||||
bool LGGContactSets::isNonFriend(const LLUUID& non_friend_id) const
|
||||
{
|
||||
if (LLAvatarTracker::instance().isBuddy(non_friend_id))
|
||||
{
|
||||
|
|
@ -744,7 +731,7 @@ bool LGGContactSets::isNonFriend(const LLUUID& non_friend_id)
|
|||
return (mExtraAvatars.find(non_friend_id) != mExtraAvatars.end());
|
||||
}
|
||||
|
||||
uuid_vec_t LGGContactSets::getListOfNonFriends()
|
||||
uuid_vec_t LGGContactSets::getListOfNonFriends() const
|
||||
{
|
||||
LLAvatarTracker& tracker = LLAvatarTracker::instance();
|
||||
uuid_vec_t nonfriends{};
|
||||
|
|
@ -760,7 +747,7 @@ uuid_vec_t LGGContactSets::getListOfNonFriends()
|
|||
return nonfriends;
|
||||
}
|
||||
|
||||
uuid_vec_t LGGContactSets::getListOfPseudonymAvs()
|
||||
uuid_vec_t LGGContactSets::getListOfPseudonymAvs() const
|
||||
{
|
||||
uuid_vec_t pseudonyms{};
|
||||
|
||||
|
|
@ -780,8 +767,7 @@ void LGGContactSets::setPseudonym(const LLUUID& friend_id, std::string_view pseu
|
|||
inst->fetch(friend_id);
|
||||
LLVOAvatar::invalidateNameTag(friend_id);
|
||||
|
||||
avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.find(friend_id);
|
||||
if (it != mAvatarNameCacheConnections.end())
|
||||
if (auto it = mAvatarNameCacheConnections.find(friend_id); it != mAvatarNameCacheConnections.end())
|
||||
{
|
||||
if (it->second.connected())
|
||||
{
|
||||
|
|
@ -793,10 +779,9 @@ void LGGContactSets::setPseudonym(const LLUUID& friend_id, std::string_view pseu
|
|||
saveToDisk();
|
||||
}
|
||||
|
||||
std::string LGGContactSets::getPseudonym(const LLUUID& friend_id)
|
||||
std::string LGGContactSets::getPseudonym(const LLUUID& friend_id) const
|
||||
{
|
||||
uuid_map_t::iterator found = mPseudonyms.find(friend_id);
|
||||
if (found != mPseudonyms.end())
|
||||
if (auto found = mPseudonyms.find(friend_id); found != mPseudonyms.end())
|
||||
{
|
||||
return llformat("'%s'", found->second.c_str());
|
||||
}
|
||||
|
|
@ -805,8 +790,7 @@ std::string LGGContactSets::getPseudonym(const LLUUID& friend_id)
|
|||
|
||||
void LGGContactSets::clearPseudonym(const LLUUID& friend_id, bool save_changes /*= true*/)
|
||||
{
|
||||
uuid_map_t::iterator found = mPseudonyms.find(friend_id);
|
||||
if (found != mPseudonyms.end())
|
||||
if (auto found = mPseudonyms.find(friend_id); found != mPseudonyms.end())
|
||||
{
|
||||
mPseudonyms.erase(found);
|
||||
LLAvatarNameCache* inst = LLAvatarNameCache::getInstance();
|
||||
|
|
@ -818,8 +802,7 @@ void LGGContactSets::clearPseudonym(const LLUUID& friend_id, bool save_changes /
|
|||
removeNonFriendFromList(friend_id, save_changes);
|
||||
}
|
||||
|
||||
avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.find(friend_id);
|
||||
if (it != mAvatarNameCacheConnections.end())
|
||||
if (auto it = mAvatarNameCacheConnections.find(friend_id); it != mAvatarNameCacheConnections.end())
|
||||
{
|
||||
if (it->second.connected())
|
||||
{
|
||||
|
|
@ -837,8 +820,7 @@ void LGGContactSets::clearPseudonym(const LLUUID& friend_id, bool save_changes /
|
|||
|
||||
void LGGContactSets::onAvatarNameCache(const LLUUID& av_id)
|
||||
{
|
||||
avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.find(av_id);
|
||||
if (it != mAvatarNameCacheConnections.end())
|
||||
if (auto it = mAvatarNameCacheConnections.find(av_id); it != mAvatarNameCacheConnections.end())
|
||||
{
|
||||
if (it->second.connected())
|
||||
{
|
||||
|
|
@ -849,12 +831,12 @@ void LGGContactSets::onAvatarNameCache(const LLUUID& av_id)
|
|||
mChangedSignal(UPDATED_MEMBERS);
|
||||
}
|
||||
|
||||
bool LGGContactSets::hasPseudonym(const LLUUID& friend_id)
|
||||
bool LGGContactSets::hasPseudonym(const LLUUID& friend_id) const
|
||||
{
|
||||
return (!getPseudonym(friend_id).empty());
|
||||
}
|
||||
|
||||
bool LGGContactSets::hasPseudonym(uuid_vec_t ids)
|
||||
bool LGGContactSets::hasPseudonym(const uuid_vec_t& ids) const
|
||||
{
|
||||
bool has_pseudonym = false;
|
||||
for (const auto& id : ids)
|
||||
|
|
@ -868,12 +850,12 @@ bool LGGContactSets::hasPseudonym(uuid_vec_t ids)
|
|||
return has_pseudonym;
|
||||
}
|
||||
|
||||
bool LGGContactSets::hasDisplayNameRemoved(const LLUUID& friend_id)
|
||||
bool LGGContactSets::hasDisplayNameRemoved(const LLUUID& friend_id) const
|
||||
{
|
||||
return (getPseudonym(friend_id) == CS_PSEUDONYM_QUOTED);
|
||||
}
|
||||
|
||||
bool LGGContactSets::hasDisplayNameRemoved(uuid_vec_t ids)
|
||||
bool LGGContactSets::hasDisplayNameRemoved(const uuid_vec_t& ids) const
|
||||
{
|
||||
bool has_pseudonym = false;
|
||||
for (const auto& id : ids)
|
||||
|
|
@ -887,7 +869,7 @@ bool LGGContactSets::hasDisplayNameRemoved(uuid_vec_t ids)
|
|||
return has_pseudonym;
|
||||
}
|
||||
|
||||
bool LGGContactSets::hasVisuallyDifferentPseudonym(const LLUUID& friend_id)
|
||||
bool LGGContactSets::hasVisuallyDifferentPseudonym(const LLUUID& friend_id) const
|
||||
{
|
||||
return (hasPseudonym(friend_id) && (!hasDisplayNameRemoved(friend_id)));
|
||||
}
|
||||
|
|
@ -908,8 +890,7 @@ void LGGContactSets::removeFriendFromSet(const LLUUID& friend_id, std::string_vi
|
|||
return clearPseudonym(friend_id, save_changes);
|
||||
}
|
||||
|
||||
ContactSet* set = getContactSet(set_name);
|
||||
if (set)
|
||||
if (ContactSet* set = getContactSet(set_name); set)
|
||||
{
|
||||
set->mFriends.erase(friend_id);
|
||||
if (save_changes)
|
||||
|
|
@ -920,7 +901,7 @@ void LGGContactSets::removeFriendFromSet(const LLUUID& friend_id, std::string_vi
|
|||
}
|
||||
}
|
||||
|
||||
bool LGGContactSets::isValidSet(std::string_view set_name)
|
||||
bool LGGContactSets::isValidSet(std::string_view set_name) const
|
||||
{
|
||||
return (mContactSets.find(set_name.data()) != mContactSets.end());
|
||||
}
|
||||
|
|
@ -995,10 +976,9 @@ void LGGContactSets::setNotifyForSet(std::string_view set_name, bool notify)
|
|||
}
|
||||
}
|
||||
|
||||
bool LGGContactSets::getNotifyForSet(std::string_view set_name)
|
||||
bool LGGContactSets::getNotifyForSet(std::string_view set_name) const
|
||||
{
|
||||
ContactSet* set = getContactSet(set_name);
|
||||
if (set)
|
||||
if (ContactSet* set = getContactSet(set_name); set)
|
||||
{
|
||||
return set->mNotify;
|
||||
}
|
||||
|
|
@ -1007,15 +987,14 @@ bool LGGContactSets::getNotifyForSet(std::string_view set_name)
|
|||
|
||||
void LGGContactSets::setSetColor(std::string_view set_name, const LLColor4& color)
|
||||
{
|
||||
ContactSet* set = getContactSet(set_name);
|
||||
if (set)
|
||||
if (ContactSet* set = getContactSet(set_name); set)
|
||||
{
|
||||
set->mColor = color;
|
||||
saveToDisk();
|
||||
}
|
||||
}
|
||||
|
||||
bool LGGContactSets::isInternalSetName(std::string_view set_name)
|
||||
bool LGGContactSets::isInternalSetName(std::string_view set_name) const
|
||||
{
|
||||
return (set_name.empty() ||
|
||||
set_name == CS_SET_EXTRA_AVS ||
|
||||
|
|
@ -1025,7 +1004,7 @@ bool LGGContactSets::isInternalSetName(std::string_view set_name)
|
|||
set_name == CS_GLOBAL_SETTINGS);
|
||||
}
|
||||
|
||||
LGGContactSets::ContactSet* LGGContactSets::getContactSet(std::string_view set_name)
|
||||
LGGContactSets::ContactSet* LGGContactSets::getContactSet(std::string_view set_name) const
|
||||
{
|
||||
if (set_name.empty())
|
||||
{
|
||||
|
|
@ -1033,8 +1012,7 @@ LGGContactSets::ContactSet* LGGContactSets::getContactSet(std::string_view set_n
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
contact_set_map_t::iterator found = mContactSets.find(set_name.data());
|
||||
if (found != mContactSets.end())
|
||||
if (auto found = mContactSets.find(set_name.data()); found != mContactSets.end())
|
||||
{
|
||||
return found->second;
|
||||
}
|
||||
|
|
@ -1042,7 +1020,7 @@ LGGContactSets::ContactSet* LGGContactSets::getContactSet(std::string_view set_n
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
bool LGGContactSets::checkCustomName(const LLUUID& id, bool& dn_removed, std::string& pseudonym)
|
||||
bool LGGContactSets::checkCustomName(const LLUUID& id, bool& dn_removed, std::string& pseudonym) const
|
||||
{
|
||||
dn_removed = hasDisplayNameRemoved(id);
|
||||
pseudonym = getPseudonym(id);
|
||||
|
|
@ -1052,8 +1030,7 @@ bool LGGContactSets::checkCustomName(const LLUUID& id, bool& dn_removed, std::st
|
|||
// static
|
||||
bool LGGContactSets::handleAddContactSetCallback(const LLSD& notification, const LLSD& response)
|
||||
{
|
||||
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
|
||||
if (option == 0)
|
||||
if (S32 option = LLNotificationsUtil::getSelectedOption(notification, response); option == 0)
|
||||
{
|
||||
const std::string set_name = response["message"].asString();
|
||||
LGGContactSets::getInstance()->addSet(set_name);
|
||||
|
|
@ -1064,8 +1041,7 @@ bool LGGContactSets::handleAddContactSetCallback(const LLSD& notification, const
|
|||
// static
|
||||
bool LGGContactSets::handleRemoveContactSetCallback(const LLSD& notification, const LLSD& response)
|
||||
{
|
||||
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
|
||||
if (option == 0)
|
||||
if (S32 option = LLNotificationsUtil::getSelectedOption(notification, response); option == 0)
|
||||
{
|
||||
LGGContactSets::getInstance()->removeSet(notification["payload"]["contact_set"].asString());
|
||||
}
|
||||
|
|
@ -1075,8 +1051,7 @@ bool LGGContactSets::handleRemoveContactSetCallback(const LLSD& notification, co
|
|||
// static
|
||||
bool LGGContactSets::handleRemoveAvatarFromSetCallback(const LLSD& notification, const LLSD& response)
|
||||
{
|
||||
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
|
||||
if (option == 0)
|
||||
if (S32 option = LLNotificationsUtil::getSelectedOption(notification, response); option == 0)
|
||||
{
|
||||
LGGContactSets& instance = LGGContactSets::instance();
|
||||
LLAvatarTracker& tracker = LLAvatarTracker::instance();
|
||||
|
|
@ -1085,7 +1060,7 @@ bool LGGContactSets::handleRemoveAvatarFromSetCallback(const LLSD& notification,
|
|||
it != notification["payload"]["ids"].endArray();
|
||||
++it)
|
||||
{
|
||||
LLUUID id = it->asUUID();
|
||||
const LLUUID& id = it->asUUID();
|
||||
std::string set_name = notification["payload"]["contact_set"].asString();
|
||||
|
||||
instance.removeFriendFromSet(id, set_name, false);
|
||||
|
|
@ -1107,8 +1082,7 @@ bool LGGContactSets::handleRemoveAvatarFromSetCallback(const LLSD& notification,
|
|||
// static
|
||||
bool LGGContactSets::handleSetAvatarPseudonymCallback(const LLSD& notification, const LLSD& response)
|
||||
{
|
||||
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
|
||||
if (option == 0)
|
||||
if (S32 option = LLNotificationsUtil::getSelectedOption(notification, response); option == 0)
|
||||
{
|
||||
const std::string pseudonym(response["message"].asString());
|
||||
const LLUUID id(notification["payload"]["id"].asUUID());
|
||||
|
|
|
|||
|
|
@ -22,9 +22,9 @@
|
|||
|
||||
#include "v4color.h"
|
||||
#include "llsingleton.h"
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
#include <boost/signals2.hpp>
|
||||
#include <boost/unordered_map.hpp>
|
||||
#include <boost/unordered_set.hpp>
|
||||
|
||||
typedef enum e_lgg_cs
|
||||
{
|
||||
|
|
@ -51,63 +51,63 @@ class LGGContactSets : public LLSingleton<LGGContactSets>
|
|||
|
||||
public:
|
||||
typedef std::vector<std::string> string_vec_t;
|
||||
typedef boost::unordered_set<LLUUID, FSUUIDHash> uuid_set_t;
|
||||
typedef std::unordered_set<LLUUID, FSUUIDHash> uuid_set_t;
|
||||
|
||||
void loadFromDisk();
|
||||
|
||||
void setSetColor(std::string_view set_name, const LLColor4& color);
|
||||
LLColor4 getSetColor(std::string_view set_name);
|
||||
LLColor4 getFriendColor(const LLUUID& friend_id, std::string_view ignored_set_name = "");
|
||||
LLColor4 colorize(const LLUUID& uuid, const LLColor4& cur_color, ELGGCSType type);
|
||||
LLColor4 getSetColor(std::string_view set_name) const;
|
||||
LLColor4 getFriendColor(const LLUUID& friend_id, std::string_view ignored_set_name = "") const;
|
||||
LLColor4 colorize(const LLUUID& uuid, LLColor4 color, ELGGCSType type) const;
|
||||
|
||||
void setDefaultColor(const LLColor4& default_color) { mDefaultColor = default_color; };
|
||||
LLColor4 getDefaultColor() { return mDefaultColor; };
|
||||
LLColor4 getDefaultColor() const { return mDefaultColor; };
|
||||
|
||||
std::string getPseudonym(const LLUUID& friend_id);
|
||||
bool hasPseudonym(const LLUUID& friend_id);
|
||||
bool hasPseudonym(uuid_vec_t ids);
|
||||
std::string getPseudonym(const LLUUID& friend_id) const;
|
||||
bool hasPseudonym(const LLUUID& friend_id) const;
|
||||
bool hasPseudonym(const uuid_vec_t& ids) const;
|
||||
void clearPseudonym(const LLUUID& friend_id, bool save_changes = true);
|
||||
|
||||
void removeDisplayName(const LLUUID& friend_id);
|
||||
bool hasDisplayNameRemoved(const LLUUID& friend_id);
|
||||
bool hasDisplayNameRemoved(uuid_vec_t ids);
|
||||
bool hasDisplayNameRemoved(const LLUUID& friend_id) const;
|
||||
bool hasDisplayNameRemoved(const uuid_vec_t& ids) const;
|
||||
|
||||
bool checkCustomName(const LLUUID& id, bool& dn_removed, std::string& pseudonym);
|
||||
bool checkCustomName(const LLUUID& id, bool& dn_removed, std::string& pseudonym) const;
|
||||
|
||||
string_vec_t getFriendSets(const LLUUID& friend_id);
|
||||
string_vec_t getAllContactSets();
|
||||
string_vec_t getFriendSets(const LLUUID& friend_id) const;
|
||||
string_vec_t getAllContactSets() const;
|
||||
|
||||
void addToSet(const uuid_vec_t&, std::string_view set_name);
|
||||
void removeFriendFromSet(const LLUUID& friend_id, std::string_view set_name, bool save_changes = true);
|
||||
void removeFriendFromAllSets(const LLUUID& friend_id, bool save_changes = true);
|
||||
bool isFriendInSet(const LLUUID& friend_id, std::string_view set_name);
|
||||
bool hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGCSType type);
|
||||
bool hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGCSType type, LLColor4& color);
|
||||
bool isFriendInSet(const LLUUID& friend_id, std::string_view set_name) const;
|
||||
bool hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGCSType type) const;
|
||||
bool hasFriendColorThatShouldShow(const LLUUID& friend_id, ELGGCSType type, LLColor4& color) const;
|
||||
|
||||
void addSet(std::string_view set_name);
|
||||
bool renameSet(std::string_view set_name, std::string_view new_set_name);
|
||||
void removeSet(std::string_view set_name);
|
||||
bool isValidSet(std::string_view set_name);
|
||||
bool isValidSet(std::string_view set_name) const;
|
||||
|
||||
void removeNonFriendFromList(const LLUUID& non_friend_id, bool save_changes = true);
|
||||
bool isNonFriend(const LLUUID& non_friend_id);
|
||||
bool isFriendInSet(const LLUUID& friend_id);
|
||||
uuid_vec_t getListOfNonFriends();
|
||||
uuid_vec_t getListOfPseudonymAvs();
|
||||
bool isNonFriend(const LLUUID& non_friend_id) const;
|
||||
bool isFriendInAnySet(const LLUUID& friend_id) const;
|
||||
uuid_vec_t getListOfNonFriends() const;
|
||||
uuid_vec_t getListOfPseudonymAvs() const;
|
||||
|
||||
bool notifyForFriend(const LLUUID& friend_id);
|
||||
bool notifyForFriend(const LLUUID& friend_id) const;
|
||||
void setNotifyForSet(std::string_view set_name, bool notify);
|
||||
bool getNotifyForSet(std::string_view set_name);
|
||||
bool getNotifyForSet(std::string_view set_name) const;
|
||||
|
||||
bool callbackAliasReset(const LLSD& notification, const LLSD& response);
|
||||
|
||||
bool isInternalSetName(std::string_view set_name);
|
||||
bool hasSets() { return !mContactSets.empty(); }
|
||||
bool isInternalSetName(std::string_view set_name) const;
|
||||
bool hasSets() const { return !mContactSets.empty(); }
|
||||
|
||||
class ContactSet
|
||||
{
|
||||
public:
|
||||
bool hasFriend(const LLUUID& avatar_id)
|
||||
bool hasFriend(const LLUUID& avatar_id) const
|
||||
{
|
||||
return (mFriends.find(avatar_id) != mFriends.end());
|
||||
}
|
||||
|
|
@ -117,7 +117,7 @@ public:
|
|||
bool mNotify;
|
||||
LLColor4 mColor;
|
||||
};
|
||||
ContactSet* getContactSet(std::string_view set_name);
|
||||
ContactSet* getContactSet(std::string_view set_name) const;
|
||||
|
||||
// [FS:CR] Signals for updating the various UI
|
||||
typedef enum e_contact_set_update {
|
||||
|
|
@ -140,27 +140,27 @@ public:
|
|||
|
||||
private:
|
||||
void toneDownColor(LLColor4& color) const;
|
||||
uuid_vec_t getFriendsInSet(std::string_view set_name);
|
||||
uuid_vec_t getFriendsInAnySet();
|
||||
uuid_vec_t getFriendsInSet(std::string_view set_name) const;
|
||||
uuid_vec_t getFriendsInAnySet() const;
|
||||
|
||||
void setPseudonym(const LLUUID& friend_id, std::string_view pseudonym);
|
||||
bool hasVisuallyDifferentPseudonym(const LLUUID& friend_id);
|
||||
bool hasVisuallyDifferentPseudonym(const LLUUID& friend_id) const;
|
||||
|
||||
LLSD exportContactSet(std::string_view set_name);
|
||||
bool saveContactSetToDisk(std::string_view set_name, std::string_view filename);
|
||||
|
||||
std::string getFilename();
|
||||
std::string getDefaultFilename();
|
||||
std::string getFilename() const;
|
||||
std::string getDefaultFilename() const;
|
||||
|
||||
void importFromLLSD(const LLSD& data);
|
||||
LLSD exportToLLSD();
|
||||
void saveToDisk();
|
||||
|
||||
typedef boost::unordered_map<LLUUID, std::string, FSUUIDHash> uuid_map_t;
|
||||
typedef std::unordered_map<LLUUID, std::string, FSUUIDHash> uuid_map_t;
|
||||
typedef std::map<std::string, ContactSet*> contact_set_map_t;
|
||||
contact_set_map_t mContactSets;
|
||||
|
||||
LLColor4 mDefaultColor;
|
||||
LLColor4 mDefaultColor{ LLColor4::grey };
|
||||
uuid_set_t mExtraAvatars;
|
||||
uuid_map_t mPseudonyms;
|
||||
|
||||
|
|
|
|||
|
|
@ -1141,7 +1141,18 @@ void LLEnvironment::onRegionChange()
|
|||
}
|
||||
if (!cur_region->capabilitiesReceived())
|
||||
{
|
||||
// <FS:PR-Aleric> GCC13 warning: maybe-uninitialized - probably bogus
|
||||
#if defined(__GNUC__) && (__GNUC__ >= 13)
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||
#endif
|
||||
// </FS:PR-Aleric>
|
||||
cur_region->setCapabilitiesReceivedCallback([](const LLUUID ®ion_id, LLViewerRegion* regionp) { LLEnvironment::instance().requestRegion(); });
|
||||
// <FS:PR-Aleric> GCC13 warning: maybe-uninitialized - probably bogus
|
||||
#if defined(__GNUC__) && (__GNUC__ >= 13)
|
||||
#pragma GCC diagnostic pop
|
||||
#endif
|
||||
// </FS:PR-Aleric>
|
||||
return;
|
||||
}
|
||||
requestRegion();
|
||||
|
|
|
|||
|
|
@ -2130,8 +2130,18 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
|
|||
LLVector4a t;
|
||||
tangent_to_object.rotate(binormal_dir, t);
|
||||
LLVector4a binormal;
|
||||
// <FS:PR-Aleric> GCC13 warning: maybe-uninitialized - probably bogus
|
||||
#if defined(__GNUC__) && (__GNUC__ >= 13)
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||
#endif
|
||||
// </FS:PR-Aleric>
|
||||
mat_normal.rotate(t, binormal);
|
||||
|
||||
// <FS:PR-Aleric>
|
||||
#if defined(__GNUC__) && (__GNUC__ >= 13)
|
||||
#pragma GCC diagnostic pop
|
||||
#endif
|
||||
// </FS:PR-Aleric>
|
||||
//VECTORIZE THIS
|
||||
if (mDrawablep->isActive())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -7495,11 +7495,19 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
|
|||
std::string submenu_name = attachment->getName();
|
||||
if (LLTrans::getString(submenu_name) != "")
|
||||
{
|
||||
p.name = (" ")+LLTrans::getString(submenu_name)+" ";
|
||||
// <FS:Ansariel> Add attachment point ID to non-HUD attachment spots
|
||||
if (attachment->getIsHUDAttachment())
|
||||
p.name = (" ")+LLTrans::getString(submenu_name)+" ";
|
||||
else
|
||||
p.name = (" ") + LLTrans::getString(submenu_name) + " (" + std::to_string(curiter->first) + ")" + " ";
|
||||
}
|
||||
else
|
||||
{
|
||||
p.name = submenu_name;
|
||||
if (attachment->getIsHUDAttachment())
|
||||
p.name = submenu_name;
|
||||
else
|
||||
p.name = submenu_name + " (" + std::to_string(curiter->first) + ")";
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
LLSD cbparams;
|
||||
cbparams["index"] = curiter->first;
|
||||
|
|
|
|||
|
|
@ -2523,7 +2523,7 @@ void LLModelPreview::genMeshOptimizerLODs(S32 which_lod, S32 meshopt_mode, U32 d
|
|||
out << "Invalid level of detail: " << which_lod;
|
||||
LL_WARNS() << out.str() << LL_ENDL;
|
||||
LLFloaterModelPreview::addStringToLog(out, true); // <FS:Beq/> if you don't flash the log tab on error when do you?
|
||||
assert(lod >= -1 && lod < LLModel::NUM_LODS);
|
||||
assert(which_lod >= -1 && which_lod < LLModel::NUM_LODS); // <FS:PR-Aleric/> use the correct variable (which_lod).
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1852,7 +1852,7 @@ void LLPanelPeople::generateContactList(const std::string& contact_set)
|
|||
++buddy)
|
||||
{
|
||||
// Only show our buddies who aren't in a set, by request.
|
||||
if (!LGGContactSets::getInstance()->isFriendInSet(buddy->first))
|
||||
if (!LGGContactSets::getInstance()->isFriendInAnySet(buddy->first))
|
||||
avatars.push_back(buddy->first);
|
||||
}
|
||||
}
|
||||
|
|
@ -1862,10 +1862,12 @@ void LLPanelPeople::generateContactList(const std::string& contact_set)
|
|||
}
|
||||
else if (!LGGContactSets::getInstance()->isInternalSetName(contact_set))
|
||||
{
|
||||
LGGContactSets::ContactSet* group = LGGContactSets::getInstance()->getContactSet(contact_set);
|
||||
for (auto const& id : group->mFriends)
|
||||
if (LGGContactSets::ContactSet* group = LGGContactSets::getInstance()->getContactSet(contact_set); group)
|
||||
{
|
||||
avatars.push_back(id);
|
||||
for (auto const& id : group->mFriends)
|
||||
{
|
||||
avatars.push_back(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
mContactSetList->setDirty();
|
||||
|
|
|
|||
|
|
@ -370,12 +370,16 @@ bool LLPresetsManager::savePreset(const std::string& subdirectory, std::string n
|
|||
|
||||
// <FS:Ansariel> Graphic preset controls independent from XUI
|
||||
// Add the controls not in feature table to the default preset with their current value
|
||||
for (std::vector<std::string>::iterator it = mGraphicPresetControls.begin(); it != mGraphicPresetControls.end(); ++it)
|
||||
for (const auto& ctrl_name : mGraphicPresetControls)
|
||||
{
|
||||
std::string ctrl_name = *it;
|
||||
if (!paramsData.has(ctrl_name))
|
||||
{
|
||||
LLControlVariable* ctrl = gSavedSettings.getControl(ctrl_name).get();
|
||||
if (!ctrl)
|
||||
{
|
||||
LL_WARNS() << "Presets setting list contains non-existing setting: " << ctrl_name << LL_ENDL;
|
||||
continue;
|
||||
}
|
||||
std::string comment = ctrl->getComment();
|
||||
std::string type = LLControlGroup::typeEnumToString(ctrl->type());
|
||||
LLSD value = ctrl->getValue();
|
||||
|
|
|
|||
|
|
@ -431,7 +431,7 @@ public:
|
|||
|
||||
std::string region_name = LLURI::unescape(tokens[0]);
|
||||
|
||||
std::string callback_url = LLSLURL(url_grid, region_name, coords).getSLURLString();
|
||||
std::string callback_url = LLSLURL(grid, region_name, coords).getSLURLString();
|
||||
#endif // OPENSIM
|
||||
// </FS:AW optional opensim support>
|
||||
|
||||
|
|
|
|||
|
|
@ -69,11 +69,19 @@ void LLViewerAttachMenu::populateMenus(const std::string& attach_to_menu_name, c
|
|||
|
||||
if (LLTrans::findString(translated_submenu_name, submenu_name))
|
||||
{
|
||||
p.name = (" ") + translated_submenu_name + " ";
|
||||
// <FS:Ansariel> Add attachment point ID to non-HUD attachment spots
|
||||
if (attachment->getIsHUDAttachment())
|
||||
p.name = (" ") + translated_submenu_name + " ";
|
||||
else
|
||||
p.name = (" ") + translated_submenu_name + " (" + std::to_string(curiter->first) + ")" + " ";
|
||||
}
|
||||
else
|
||||
{
|
||||
p.name = submenu_name;
|
||||
if (attachment->getIsHUDAttachment())
|
||||
p.name = submenu_name;
|
||||
else
|
||||
p.name = submenu_name + " (" + std::to_string(curiter->first) + ")";
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
|
||||
LLSD cbparams;
|
||||
|
|
|
|||
|
|
@ -224,7 +224,8 @@
|
|||
// </FS:Ansariel> [FS communication UI]
|
||||
#include "llwindowlistener.h"
|
||||
#include "llviewerwindowlistener.h"
|
||||
#include "llpaneltopinfobar.h"
|
||||
// <FS:Zi> We don't use the mini location panel in Firestorm
|
||||
// #include "llpaneltopinfobar.h"
|
||||
#include "llcleanup.h"
|
||||
#include "llimview.h"
|
||||
#include "llviewermenufile.h"
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="perm prefs" title="Standart icazələr">
|
||||
<panel label="İcazələr" name="permissions">
|
||||
<check_box label="Qrup ilə paylaş" name="share_with_group"/>
|
||||
<check_box label="Hər kəsə köçürtməyə icazə ver" name="everyone_copy"/>
|
||||
<text name="NextOwnerLabel">
|
||||
Yeni sahibin icazəsi var:
|
||||
</text>
|
||||
<check_box label="dəyişdirmək" name="next_owner_modify"/>
|
||||
<check_box label="köçürtmək" name="next_owner_copy"/>
|
||||
<check_box initial_value="true" label="satmaq/paylaşmaq" name="next_owner_transfer"/>
|
||||
</panel>
|
||||
<button label="OK" label_selected="OK" name="ok"/>
|
||||
<button label="Ləğv et" label_selected="Ləğv et" name="cancel"/>
|
||||
</floater>
|
||||
|
|
@ -1,561 +1,98 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater
|
||||
height="652"
|
||||
layout="topleft"
|
||||
name="performance"
|
||||
help_topic="fs_performance_floater"
|
||||
save_rect="true"
|
||||
title="Improve Graphics Speed (Experimental)"
|
||||
can_resize="false"
|
||||
min_width="580"
|
||||
width="580">
|
||||
<floater.string name="frame_stats">
|
||||
Frame: [TOT_FRAME_TIME]ms - Scenery:[SCENERY_FRAME_PCT]% Avatars:[AV_FRAME_PCT]% UI:[UI_FRAME_PCT]% HUDs:[HUDS_FRAME_PCT]% Swap:[SWAP_FRAME_PCT]% Tasks:[IDLE_FRAME_PCT]%
|
||||
</floater.string>
|
||||
<floater.string name="limit_fps">
|
||||
User Limited @ [FPSCAP] FPS
|
||||
</floater.string>
|
||||
<floater.string name="tuning_fps">
|
||||
Target [FPSTARGET] FPS
|
||||
</floater.string>
|
||||
<floater.string name="av_frame_pct">
|
||||
[AV_FRAME_PCT]%
|
||||
</floater.string>
|
||||
<floater.string name="huds_frame_pct">
|
||||
[HUDS_FRAME_PCT]%
|
||||
</floater.string>
|
||||
<floater.string name="focus_fps">
|
||||
In Background
|
||||
</floater.string>
|
||||
<floater.string name="info_waitforit">
|
||||
Allow 5-10 seconds for changes to take effect.
|
||||
</floater.string>
|
||||
<floater.string name="info_frozen">
|
||||
Stats pause when FPS is limited or in background.
|
||||
</floater.string>
|
||||
<floater.string name="tot_av_template">
|
||||
Total: [TOT_AV] ([TOT_AV_TIME]μs)
|
||||
</floater.string>
|
||||
<floater.string name="tot_att_template">
|
||||
Total: [TOT_ATT] ([TOT_ATT_TIME]μs)
|
||||
</floater.string>
|
||||
height="642"
|
||||
layout="topleft"
|
||||
name="performance"
|
||||
save_rect="true"
|
||||
reuse_instance="true"
|
||||
title="IMPROVE GRAPHICS SPEED"
|
||||
width="580">
|
||||
<string
|
||||
name="fps_text"
|
||||
value="frames per second"/>
|
||||
<string
|
||||
name="max_text"
|
||||
value=" (maximum)"/>
|
||||
<panel
|
||||
bevel_style="none"
|
||||
follows="left|top|right"
|
||||
height="600"
|
||||
width="580"
|
||||
name="panel_top"
|
||||
visible="true"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
top="0">
|
||||
bevel_style="none"
|
||||
follows="left|top"
|
||||
height="540"
|
||||
width="580"
|
||||
name="panel_top"
|
||||
visible="true"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
top="0">
|
||||
<panel
|
||||
bg_alpha_color="black"
|
||||
background_visible="true"
|
||||
background_opaque="false"
|
||||
border="false"
|
||||
bevel_style="none"
|
||||
follows="left|top|right"
|
||||
height="55"
|
||||
width="560"
|
||||
name="fps_subpanel"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
top="5">
|
||||
bg_alpha_color="black"
|
||||
background_visible="true"
|
||||
background_opaque="false"
|
||||
border="false"
|
||||
bevel_style="none"
|
||||
follows="left|top"
|
||||
height="40"
|
||||
width="560"
|
||||
name="fps_subpanel"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
top="5">
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerifHuge"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
top="8"
|
||||
name="fps_value"
|
||||
width="42">
|
||||
follows="left|top"
|
||||
font="SansSerifHuge"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
top="8"
|
||||
name="fps_value"
|
||||
width="42">
|
||||
167
|
||||
</text>
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerifLarge"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_pad="3"
|
||||
top="13"
|
||||
name="fps_lbl"
|
||||
width="150">
|
||||
follows="left|top"
|
||||
font="SansSerifLarge"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_pad="3"
|
||||
top="13"
|
||||
name="fps_lbl"
|
||||
width="450">
|
||||
frames per second
|
||||
</text>
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerifLarge"
|
||||
text_color="DrYellow"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
left_pad="10"
|
||||
name="fps_warning"
|
||||
top="13"
|
||||
width="200"> User Limited @ 000 FPS
|
||||
follows="left|top"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="395"
|
||||
top="7"
|
||||
name="fps_desc1_lbl"
|
||||
width="150">
|
||||
Allow 5-10 seconds for
|
||||
</text>
|
||||
<text
|
||||
follows="top|right"
|
||||
text_color="White"
|
||||
height="40"
|
||||
layout="topleft"
|
||||
left="420"
|
||||
top="5"
|
||||
name="fps_desc1_lbl"
|
||||
width="140"
|
||||
wrap="true">
|
||||
Stats pause when FPS is limited or in background.
|
||||
follows="left|top"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
top_pad="-3"
|
||||
name="fps_desc2_lbl"
|
||||
width="150">
|
||||
changes to take full effect.
|
||||
</text>
|
||||
<text
|
||||
follows="left|top|right"
|
||||
font="MonospaceMedium"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
halign="center"
|
||||
left="5"
|
||||
top="38"
|
||||
name="frame_breakdown"
|
||||
width="550">
|
||||
[--------------------Frame breakdown will appear here.---------------------]
|
||||
</text>
|
||||
</panel>
|
||||
<panel
|
||||
bg_alpha_color="black"
|
||||
background_visible="true"
|
||||
background_opaque="false"
|
||||
border="false"
|
||||
bevel_style="none"
|
||||
follows="left|top|right"
|
||||
height="55"
|
||||
width="560"
|
||||
name="target_subpanel"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
top_pad="0">
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerifLarge"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="settings_lbl"
|
||||
top="7"
|
||||
tool_tip="Automatically adjust settings to maintain FPS. Set the Target to the desired frame rate and the viewer will attempt to match this by dynamically altering your settings."
|
||||
width="75">
|
||||
Auto Tune:
|
||||
</text>
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerif"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_pad="10"
|
||||
name="targetfps_desc"
|
||||
wrap="true"
|
||||
width="140"
|
||||
halign="right"
|
||||
top_delta="3">
|
||||
Target Frame Rate (fps)
|
||||
</text>
|
||||
<spinner
|
||||
name="target_fps"
|
||||
control_name="FSTargetFPS"
|
||||
font="SansSerifLarge"
|
||||
tool_tip="Target FPS - The desired FPS level. The viewer will attempt to achieve this by adjusting your graphics settings."
|
||||
layout="topleft"
|
||||
follows="right|top"
|
||||
left_pad="10"
|
||||
top_delta="0"
|
||||
height="25"
|
||||
visible="true"
|
||||
decimal_digits="0"
|
||||
increment="1"
|
||||
initial_value="25"
|
||||
max_val="300"
|
||||
min_val="1"
|
||||
width="48"
|
||||
label_width="0" />
|
||||
<button
|
||||
control_name="FSAutoTuneFPS"
|
||||
follows="top|right"
|
||||
height="20"
|
||||
initial_value="false"
|
||||
image_pressed="PushButton_Press"
|
||||
image_pressed_selected="PushButton_Selected_Press"
|
||||
image_selected="PushButton_Selected_Press"
|
||||
is_toggle="true"
|
||||
label="Start"
|
||||
label_selected="Stop"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="AutoTuneFPS"
|
||||
top_delta="0"
|
||||
tool_tip="The viewer will attempt to adjust settings to meet the target FPS."
|
||||
width="72">
|
||||
</button>
|
||||
<check_box
|
||||
control_name="FSAutoTuneLock"
|
||||
follows="top|right"
|
||||
height="20"
|
||||
initial_value="true"
|
||||
image_pressed="PushButton_Press"
|
||||
image_pressed_selected="PushButton_Selected_Press"
|
||||
image_selected="PushButton_Selected_Press"
|
||||
is_toggle="true"
|
||||
label="Continuous"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="AutoTuneContinuous"
|
||||
top_delta="0"
|
||||
tool_tip="The viewer will continually adapt the settings to meet the target FPS until stopped even with the floater closed. When disabled clicking the Auto Tune button will adjust for the current settings then stop."
|
||||
width="64">
|
||||
</check_box>
|
||||
<button
|
||||
follows="left|top"
|
||||
height="24"
|
||||
image_overlay="Script_Disk_Save"
|
||||
layout="topleft"
|
||||
right="-62"
|
||||
name="PrefSaveButton"
|
||||
top_delta="0"
|
||||
tool_tip="Save the current settings to a default for future use."
|
||||
width="24">
|
||||
<button.commit_callback
|
||||
function="Performance.PrefSave"
|
||||
parameter="graphic" />
|
||||
</button>
|
||||
<button
|
||||
follows="left|top"
|
||||
height="24"
|
||||
image_overlay="Script_Disk_Load"
|
||||
layout="topleft"
|
||||
right="-34"
|
||||
name="PrefLoadButton"
|
||||
top_delta="0"
|
||||
tool_tip="Load an existing preset."
|
||||
width="24">
|
||||
<button.commit_callback
|
||||
function="Performance.PrefLoad"
|
||||
parameter="graphic" />
|
||||
</button>
|
||||
<!--Reset Button-->
|
||||
<button
|
||||
follows="left|top"
|
||||
height="24"
|
||||
image_overlay="Refresh_Off"
|
||||
tool_tip="Reload default graphics settings for your hardware."
|
||||
layout="topleft"
|
||||
right="-6"
|
||||
name="Defaults"
|
||||
top_delta="0"
|
||||
width="24">
|
||||
<button.commit_callback
|
||||
function="Performance.HardwareDefaults" />
|
||||
</button>
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerif"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="20"
|
||||
name="settings_desc"
|
||||
top_pad="0"
|
||||
wrap="true"
|
||||
width="215"
|
||||
halign="right"
|
||||
top_delta="5">
|
||||
Tuning Strategy
|
||||
</text>
|
||||
<combo_box
|
||||
follows="top|right"
|
||||
font="SansSerif"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_pad="10"
|
||||
control_name="FSTuningFPSStrategy"
|
||||
name="FSTuningFPSStrategy"
|
||||
top_delta="0"
|
||||
width="125">
|
||||
<combo_box.item
|
||||
label="Avatars Only"
|
||||
name="av_only"
|
||||
value="0" />
|
||||
<combo_box.item
|
||||
label="Avatars and Scene"
|
||||
name="av_and_scene"
|
||||
value="1" />
|
||||
</combo_box>
|
||||
<button
|
||||
height="16"
|
||||
width="16"
|
||||
scale_image="true"
|
||||
layout="topleft"
|
||||
mouse_opaque="true"
|
||||
follows="right|top"
|
||||
name="target_btn"
|
||||
top_delta="2"
|
||||
tool_tip="Change the Tuning Strategy behavior."
|
||||
image_selected="Icon_Gear"
|
||||
image_pressed="Icon_Gear"
|
||||
image_unselected="Icon_Gear"
|
||||
left_pad="8"
|
||||
is_toggle="true"></button>
|
||||
</panel>
|
||||
</panel>
|
||||
<panel
|
||||
bevel_style="none"
|
||||
follows="left|top|right"
|
||||
height="540"
|
||||
width="580"
|
||||
name="panel_performance_main"
|
||||
visible="true"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
top="115">
|
||||
<panel
|
||||
bg_alpha_color="PanelGray"
|
||||
background_visible="true"
|
||||
background_opaque="false"
|
||||
border="true"
|
||||
bevel_style="none"
|
||||
follows="left|top|right"
|
||||
height="50"
|
||||
width="560"
|
||||
name="settings_subpanel"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
top_pad="10">
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerifLarge"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="settings_lbl"
|
||||
top="7"
|
||||
width="180">
|
||||
Graphics settings
|
||||
</text>
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerif"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="settings_desc"
|
||||
top_pad="0"
|
||||
width="395">
|
||||
Choose settings for distance, water, lighting and more.
|
||||
</text>
|
||||
<icon
|
||||
height="16"
|
||||
width="16"
|
||||
image_name="Arrow_Right_Off"
|
||||
mouse_opaque="true"
|
||||
name="icon_arrow3"
|
||||
follows="right|top"
|
||||
top="19"
|
||||
right="-20" />
|
||||
</panel>
|
||||
<panel
|
||||
bg_alpha_color="PanelGray"
|
||||
background_visible="true"
|
||||
background_opaque="false"
|
||||
border="true"
|
||||
bevel_style="none"
|
||||
follows="left|top|right"
|
||||
height="50"
|
||||
width="560"
|
||||
name="nearby_subpanel"
|
||||
layout="topleft"
|
||||
top_pad="10">
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerifLarge"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="avatars_nearby_lbl"
|
||||
top="7"
|
||||
width="205">
|
||||
Avatars nearby
|
||||
</text>
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerif"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="avatars_nearby_desc"
|
||||
top_pad="0"
|
||||
width="345">
|
||||
Manage which nearby avatars are fully displayed.
|
||||
</text>
|
||||
<text
|
||||
follows="top|right"
|
||||
font="SansSerifSmall"
|
||||
text_color="White"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
left_pad="10"
|
||||
name="avatars_frme_pct_lbl"
|
||||
top="8"
|
||||
width="75">
|
||||
Time spent
|
||||
drawing
|
||||
avatars
|
||||
</text>
|
||||
<text
|
||||
follows="top|right"
|
||||
font="SansSerifHuge"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_pad="10"
|
||||
top="14"
|
||||
name="av_frame_stats"
|
||||
width="62">
|
||||
00%
|
||||
</text>
|
||||
<icon
|
||||
height="16"
|
||||
width="16"
|
||||
image_name="Arrow_Right_Off"
|
||||
mouse_opaque="true"
|
||||
name="icon_arrow2"
|
||||
follows="right|top"
|
||||
top="19"
|
||||
right="-20" />
|
||||
</panel>
|
||||
<panel
|
||||
bg_alpha_color="PanelGray"
|
||||
background_visible="true"
|
||||
background_opaque="false"
|
||||
border="true"
|
||||
bevel_style="none"
|
||||
follows="left|top|right"
|
||||
height="50"
|
||||
width="560"
|
||||
name="complexity_subpanel"
|
||||
layout="topleft"
|
||||
top_pad="10">
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerifLarge"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="complexity_lbl"
|
||||
top="7"
|
||||
width="180">
|
||||
Your avatar complexity
|
||||
</text>
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerif"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="complexity_info"
|
||||
top_pad="0"
|
||||
width="455">
|
||||
Be a good citizen. Manage the impact of your avatar
|
||||
</text>
|
||||
<icon
|
||||
height="16"
|
||||
width="16"
|
||||
image_name="Arrow_Right_Off"
|
||||
mouse_opaque="true"
|
||||
name="icon_arrow4"
|
||||
follows="right|top"
|
||||
top="19"
|
||||
right="-20" />
|
||||
</panel>
|
||||
<panel
|
||||
bg_alpha_color="PanelGray"
|
||||
background_visible="true"
|
||||
background_opaque="false"
|
||||
border="true"
|
||||
bevel_style="none"
|
||||
follows="left|top|right"
|
||||
height="50"
|
||||
width="560"
|
||||
name="huds_subpanel"
|
||||
layout="topleft"
|
||||
top_pad="10">
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerifLarge"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="huds_lbl"
|
||||
top="7"
|
||||
width="135">
|
||||
Your active HUDs
|
||||
</text>
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerif"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="huds_desc"
|
||||
top_pad="0"
|
||||
width="345">
|
||||
Removing unnecessary HUDs may improve speed.
|
||||
</text>
|
||||
<text
|
||||
follows="top|right"
|
||||
font="SansSerifSmall"
|
||||
text_color="White"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
left_pad="10"
|
||||
name="huds_frme_pct_lbl"
|
||||
top="8"
|
||||
width="75">
|
||||
Time spent
|
||||
drawing
|
||||
HUDs
|
||||
</text>
|
||||
<text
|
||||
follows="top|right"
|
||||
font="SansSerifHuge"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_pad="10"
|
||||
top="14"
|
||||
name="huds_frame_stats"
|
||||
width="62">
|
||||
00%
|
||||
</text>
|
||||
<icon
|
||||
height="16"
|
||||
width="16"
|
||||
image_name="Arrow_Right_Off"
|
||||
mouse_opaque="true"
|
||||
name="icon_arrow4"
|
||||
follows="right|top"
|
||||
top="19"
|
||||
right="-20" />
|
||||
</panel>
|
||||
bevel_style="none"
|
||||
follows="left|top"
|
||||
height="540"
|
||||
width="580"
|
||||
name="panel_performance_main"
|
||||
visible="true"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
top="60">
|
||||
<panel
|
||||
bg_alpha_color="PanelGray"
|
||||
background_visible="true"
|
||||
|
|
@ -567,6 +104,99 @@ HUDs
|
|||
width="560"
|
||||
name="autoadjustments_subpanel"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
top="5">
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerifBoldLarge"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="auto_adj_lbl"
|
||||
top="7"
|
||||
width="375">
|
||||
Auto-adjust settings (recommended)
|
||||
</text>
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerif"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="auto_adj_desc"
|
||||
top_pad="0"
|
||||
width="485">
|
||||
Allow automatic adjustments to reach your preferred frame rate.
|
||||
</text>
|
||||
<icon
|
||||
height="16"
|
||||
width="16"
|
||||
image_name="Arrow_Right_Off"
|
||||
mouse_opaque="true"
|
||||
name="icon_arrow4"
|
||||
follows="right|top"
|
||||
top="19"
|
||||
right="-20"/>
|
||||
</panel>
|
||||
<panel
|
||||
bg_alpha_color="PanelGray"
|
||||
background_visible="true"
|
||||
background_opaque="false"
|
||||
border="true"
|
||||
bevel_style="none"
|
||||
follows="left|top"
|
||||
height="50"
|
||||
width="560"
|
||||
name="settings_subpanel"
|
||||
layout="topleft"
|
||||
top_pad="10">
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerifLarge"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="settings_lbl"
|
||||
top="7"
|
||||
width="180">
|
||||
Graphics settings
|
||||
</text>
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerif"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="settings_desc"
|
||||
top_pad="0"
|
||||
width="395">
|
||||
Choose settings for distance, water, lighting and more.
|
||||
</text>
|
||||
<icon
|
||||
height="16"
|
||||
width="16"
|
||||
image_name="Arrow_Right_Off"
|
||||
mouse_opaque="true"
|
||||
name="icon_arrow3"
|
||||
follows="right|top"
|
||||
top="19"
|
||||
right="-20"/>
|
||||
</panel>
|
||||
<panel
|
||||
bg_alpha_color="PanelGray"
|
||||
background_visible="true"
|
||||
background_opaque="false"
|
||||
border="true"
|
||||
bevel_style="none"
|
||||
follows="left|top"
|
||||
height="50"
|
||||
width="560"
|
||||
name="nearby_subpanel"
|
||||
layout="topleft"
|
||||
top_pad="10">
|
||||
<text
|
||||
follows="left|top"
|
||||
|
|
@ -575,10 +205,10 @@ HUDs
|
|||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="auto_adj_lbl"
|
||||
name="avatars_nearby_lbl"
|
||||
top="7"
|
||||
width="175">
|
||||
Preferred frame rate
|
||||
width="205">
|
||||
Avatars nearby
|
||||
</text>
|
||||
<text
|
||||
follows="left|top"
|
||||
|
|
@ -587,10 +217,102 @@ HUDs
|
|||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="auto_adj_desc"
|
||||
name="avatars_nearby_desc"
|
||||
top_pad="0"
|
||||
width="485">
|
||||
Allow automatic adjustments to reach your preferred frame rate (advanced).
|
||||
width="395">
|
||||
Manage which nearby avatars are fully displayed.
|
||||
</text>
|
||||
<icon
|
||||
height="16"
|
||||
width="16"
|
||||
image_name="Arrow_Right_Off"
|
||||
mouse_opaque="true"
|
||||
name="icon_arrow2"
|
||||
follows="right|top"
|
||||
top="19"
|
||||
right="-20"/>
|
||||
</panel>
|
||||
<panel
|
||||
bg_alpha_color="PanelGray"
|
||||
background_visible="true"
|
||||
background_opaque="false"
|
||||
border="true"
|
||||
bevel_style="none"
|
||||
follows="left|top"
|
||||
height="50"
|
||||
width="560"
|
||||
name="complexity_subpanel"
|
||||
layout="topleft"
|
||||
top_pad="10">
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerifLarge"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="complexity_lbl"
|
||||
top="7"
|
||||
width="180">
|
||||
Your avatar complexity
|
||||
</text>
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerif"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="complexity_info"
|
||||
top_pad="0"
|
||||
width="455">
|
||||
Reduce the complexity of your avatar if you aren't satisfied with current FPS.
|
||||
</text>
|
||||
<icon
|
||||
height="16"
|
||||
width="16"
|
||||
image_name="Arrow_Right_Off"
|
||||
mouse_opaque="true"
|
||||
name="icon_arrow4"
|
||||
follows="right|top"
|
||||
top="19"
|
||||
right="-20"/>
|
||||
</panel>
|
||||
<panel
|
||||
bg_alpha_color="PanelGray"
|
||||
background_visible="true"
|
||||
background_opaque="false"
|
||||
border="true"
|
||||
bevel_style="none"
|
||||
follows="left|top"
|
||||
height="50"
|
||||
width="560"
|
||||
name="huds_subpanel"
|
||||
layout="topleft"
|
||||
top_pad="10">
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerifLarge"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="huds_lbl"
|
||||
top="7"
|
||||
width="135">
|
||||
Your active HUDs
|
||||
</text>
|
||||
<text
|
||||
follows="left|top"
|
||||
font="SansSerif"
|
||||
text_color="White"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="huds_desc"
|
||||
top_pad="0"
|
||||
width="395">
|
||||
Removing HUDs you are not using can improve speed.
|
||||
</text>
|
||||
<icon
|
||||
height="16"
|
||||
|
|
@ -604,29 +326,29 @@ HUDs
|
|||
</panel>
|
||||
</panel>
|
||||
<panel
|
||||
filename="panel_performance_nearby.xml"
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="panel_performance_nearby"
|
||||
visible="false"
|
||||
top="115" />
|
||||
filename="panel_performance_nearby.xml"
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="panel_performance_nearby"
|
||||
visible="false"
|
||||
top="55" />
|
||||
<panel
|
||||
filename="panel_performance_complexity.xml"
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="panel_performance_complexity"
|
||||
visible="false"
|
||||
top="115" />
|
||||
filename="panel_performance_complexity.xml"
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="panel_performance_complexity"
|
||||
visible="false"
|
||||
top="55" />
|
||||
<panel
|
||||
filename="panel_performance_preferences.xml"
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="panel_performance_preferences"
|
||||
visible="false"
|
||||
top="115" />
|
||||
filename="panel_performance_preferences.xml"
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="panel_performance_preferences"
|
||||
visible="false"
|
||||
top="55" />
|
||||
<panel
|
||||
filename="panel_performance_huds.xml"
|
||||
follows="all"
|
||||
|
|
|
|||
|
|
@ -1,108 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater
|
||||
legacy_header_height="18"
|
||||
height="180"
|
||||
layout="topleft"
|
||||
name="perm prefs"
|
||||
help_topic="perm_prefs"
|
||||
save_rect="true"
|
||||
title="Default Upload Permissions"
|
||||
width="315">
|
||||
<panel
|
||||
follows="left|top|right|bottom"
|
||||
height="120"
|
||||
label="Permissions"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="permissions"
|
||||
top="20"
|
||||
width="315">
|
||||
<check_box
|
||||
control_name="ShareWithGroup"
|
||||
height="16"
|
||||
label="Share with group"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="share_with_group"
|
||||
top="5"
|
||||
width="150" />
|
||||
<check_box
|
||||
control_name="EveryoneCopy"
|
||||
height="16"
|
||||
label="Allow anyone to copy"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="everyone_copy"
|
||||
top_pad="5"
|
||||
width="150" />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="10"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="NextOwnerLabel"
|
||||
top_pad="5"
|
||||
width="200">
|
||||
Next owner can:
|
||||
</text>
|
||||
<check_box
|
||||
control_name="NextOwnerModify"
|
||||
height="16"
|
||||
label="Modify"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="next_owner_modify"
|
||||
top_pad="5"
|
||||
width="150" />
|
||||
<check_box
|
||||
control_name="NextOwnerCopy"
|
||||
height="16"
|
||||
label="Copy"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="next_owner_copy"
|
||||
top_pad="5"
|
||||
width="150" >
|
||||
<check_box.commit_callback
|
||||
function="Perms.Copy" />
|
||||
</check_box>
|
||||
<check_box
|
||||
enabled_control="NextOwnerCopy"
|
||||
control_name="NextOwnerTransfer"
|
||||
enabled="false"
|
||||
height="16"
|
||||
initial_value="true"
|
||||
label="Resell/Give away"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="next_owner_transfer"
|
||||
top_pad="5"
|
||||
width="150" />
|
||||
</panel>
|
||||
<button
|
||||
height="20"
|
||||
label="OK"
|
||||
label_selected="OK"
|
||||
layout="topleft"
|
||||
left="90"
|
||||
name="ok"
|
||||
top="150"
|
||||
width="100">
|
||||
<button.commit_callback
|
||||
function="Perms.OK" />
|
||||
</button>
|
||||
<button
|
||||
height="20"
|
||||
label="Cancel"
|
||||
label_selected="Cancel"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="cancel"
|
||||
top_delta="0"
|
||||
width="100">
|
||||
<button.commit_callback
|
||||
function="Perms.Cancel" />
|
||||
</button>
|
||||
</floater>
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="perm prefs" title="Domyślne uprawnienia przesyłania">
|
||||
<panel label="Uprawnienia" name="permissions">
|
||||
<check_box label="Udostępnij grupie" name="share_with_group"/>
|
||||
<check_box label="Pozwól kopiować każdemu" name="everyone_copy"/>
|
||||
<text name="NextOwnerLabel">
|
||||
Następny Właściciel:
|
||||
</text>
|
||||
<check_box label="Modyfikacja" name="next_owner_modify"/>
|
||||
<check_box label="Kopiowanie" name="next_owner_copy"/>
|
||||
<check_box label="Transferowanie" name="next_owner_transfer"/>
|
||||
</panel>
|
||||
<button label="Anuluj" label_selected="Anuluj" name="cancel"/>
|
||||
</floater>
|
||||
|
|
@ -222,6 +222,7 @@
|
|||
<combo_box.item label="Заплатить за объект" name="Payobject"/>
|
||||
<combo_box.item label="Открыть" name="Open"/>
|
||||
<combo_box.item label="Увеличить" name="Zoom"/>
|
||||
<combo_box.item label="Игнорировать" name="Ignoreobject" />
|
||||
<combo_box.item label="Ничего" name="None"/>
|
||||
</combo_box>
|
||||
<check_box label="Для продажи:" name="checkbox for sale" tool_tip="Позволяет людям покупать этот объект, его содержимое или копировать в мире по указанной цене." />
|
||||
|
|
|
|||
|
|
@ -137,7 +137,9 @@
|
|||
<menu_item_call label="Показать собственные земли" name="My Land"/>
|
||||
<menu_item_call label="Мой Линден Дом..." name="Linden Home"/>
|
||||
<menu label="Показать больше" name="LandShow">
|
||||
<menu_item_check label="Запрещающие линии" name="Ban Lines"/>
|
||||
<menu_item_check label="Скрыть Запрещающие линии" name="Hide Ban Lines"/>
|
||||
<menu_item_check label="Показать Запрещающие линии при столкновении" name="Show Ban Lines On Collision"/>
|
||||
<menu_item_check label="Показать Запрещающие линии при приближении" name="Show Ban Lines On Proximity"/>
|
||||
<menu_item_check label="Маяки" name="beacons"/>
|
||||
<menu_item_check label="Линии собственности" name="Property Lines"/>
|
||||
<menu_item_check label="Владельцев земли" name="Land Owners"/>
|
||||
|
|
|
|||
|
|
@ -83,6 +83,7 @@
|
|||
<combo_box.item label="Заплатить за объект" name="Payobject"/>
|
||||
<combo_box.item label="Открыть" name="Open"/>
|
||||
<combo_box.item label="Приблизить" name="Zoom"/>
|
||||
<combo_box.item label="Игнорировать объект" name="Ignoreobject"/>
|
||||
<combo_box.item label="Нет" name="None"/>
|
||||
</combo_box>
|
||||
<panel name="perms_inv">
|
||||
|
|
|
|||
|
|
@ -1,2 +1,3 @@
|
|||
llbase>=1.2.11
|
||||
autobuild>=3.9.1
|
||||
llbase=1.2.11
|
||||
autobuild=3.9.1
|
||||
llsd=1.2.1
|
||||
|
|
@ -527,7 +527,7 @@ if [ $WANTS_CONFIG -eq $TRUE ] ; then
|
|||
CRASH_REPORTING="-DRELEASE_CRASH_REPORTING=ON"
|
||||
if [ ! -z $CHANNEL_SIMPLE ]
|
||||
then
|
||||
CRASH_REPORTING="$CRASH_REPORTING -DUSE_BUGSPLAT=On -DBUGSPLAT_DB=firestorm_"`echo $CHANNEL_SIMPLE | tr [:upper:] [:lower:] | sed -e 's/x64//' | sed -e 's/_//g'`
|
||||
CRASH_REPORTING="$CRASH_REPORTING -DUSE_BUGSPLAT=On -DBUGSPLAT_DB=firestorm_"`echo $CHANNEL_SIMPLE | tr [:upper:] [:lower:] | sed -e 's/x64//' | sed 's/[^A-Za-z0-9]//g'`
|
||||
fi
|
||||
else
|
||||
CRASH_REPORTING="-DRELEASE_CRASH_REPORTING:BOOL=OFF"
|
||||
|
|
|
|||
Loading…
Reference in New Issue