# Conflicts:
#	.github/workflows/build_viewer.yml
#	indra/newview/llface.cpp
#	indra/newview/llmodelpreview.cpp
#	indra/newview/llviewerregion.cpp
master
Ansariel 2023-08-31 18:09:40 +02:00
commit f075bf7599
47 changed files with 603 additions and 940 deletions

1
.gitattributes vendored
View File

@ -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

View File

@ -4,8 +4,7 @@ on:
branches:
- "Firestorm*.*.*"
- "*alpha"
tags:
- "preview"
- "*nightly"
schedule:
- cron: '00 03 * * *' # Run every day at 3am UTC
env:
@ -27,21 +26,38 @@ jobs:
addrsize: 32
- os: macos-11
addrsize: 32
- grid: sl
addrsize: 32
# - grid: sl
# addrsize: 32
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
if: runner.os != 'Windows'
id: py311
with:
python-version: '3.11'
cache: 'pip'
- run: pip3 install -r requirements.txt
- if: runner.os == 'Windows'
run: |
python3 -m pip install -r requirements.txt --user
echo "$HOME/.local/bin" >> $GITHUB_PATH
- if: runner.os != 'Windows'
run: |
python3 -m pip install -r requirements.txt
- name: Check python version
run: python -V
- name: Check python3 version
run: python3 -V
- name: Test python llsd
run: |
python - <<EOF
import llsd
print("Hello from inline Python script!")
EOF
shell: bash
- name: Free Disk Space (Ubuntu)
if: runner.os == 'Linux'
@ -84,7 +100,7 @@ jobs:
FS_RELEASE_TYPE=Beta
elif [[ "${{ github.ref_name }}" == *alpha* ]]; then
FS_RELEASE_TYPE=Alpha
elif [[ "${{ github.event_name }}" == 'schedule' ]]; then
elif [[ "${{ github.ref_name }}" == *nightly* ]] || [[ "${{ github.event_name }}" == 'schedule' ]]; then
FS_RELEASE_TYPE=Nightly
else
FS_RELEASE_TYPE=Unknown
@ -127,7 +143,7 @@ jobs:
run: 'rclone copy fs_bundles: --filter "- Alpha/*" --filter "+ *${{ env.fallback_platform }}*bz2" .'
- name: rclone any extra private 3p packages for Alpha (allows library updates not in the main repo)
if: env.FS_BUILD_TYPE == 'Alpha'
if: env.FS_RELEASE_TYPE == 'Alpha'
run: 'rclone copy fs_bundles:Alpha --include "*${{ env.fallback_platform }}*bz2" .'
- name: set VSVER for Windows builds
@ -209,11 +225,11 @@ jobs:
shell: bash
- name: make Nightly builds expire after 14 days
if: env.FS_BUILD_TYPE == 'Nightly'
if: env.FS_RELEASE_TYPE == 'Nightly'
run: |
echo "EXTRA_ARGS=${{ env.EXTRA_ARGS}} --testbuild=14" >> $GITHUB_ENV
- name: make Alpha builds expire after 28 days
if: env.FS_BUILD_TYPE == 'Alpha'
if: env.FS_RELEASE_TYPE == 'Alpha'
run: |
echo "EXTRA_ARGS=${{ env.EXTRA_ARGS}} --testbuild=28" >> $GITHUB_ENV
@ -278,7 +294,7 @@ jobs:
elif [[ "${{ github.ref_name }}" == *alpha* ]]; then
FS_RELEASE_FOLDER=preview
FS_BUILD_WEBHOOK_URL=${{ secrets.BETA_WEBHOOK_URL }}
elif [[ "${{ github.event_name }}" == 'schedule' ]]; then
elif [[ "${{ github.ref_name }}" == *nightly* ]] || [[ "${{ github.event_name }}" == 'schedule' ]]; then
FS_RELEASE_FOLDER=nightly
FS_BUILD_WEBHOOK_URL=${{ secrets.NIGHTLY_WEBHOOK_URL }}
else

View File

@ -1084,11 +1084,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>
@ -1098,11 +1098,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>
@ -1112,11 +1112,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>
@ -1126,18 +1126,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>
@ -1672,9 +1672,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>
@ -1684,9 +1684,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>
@ -1696,9 +1696,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>
@ -1708,16 +1708,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>

View File

@ -50,7 +50,7 @@ elseif (WINDOWS)
${pymaybe}
)
endif()
include(FindPythonInterp)
find_package(Python3 COMPONENTS Interpreter)
else()
find_program(python python3)

View File

@ -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;

View File

@ -828,11 +828,11 @@ bool unix_post_minidump_callback(const char *dump_dir,
auto dirPathLength = strlen(dump_dir);
auto idLength = strlen(minidump_id);
// The path must not be truncated.
llassert((dirPathLength + idLength + 5) <= LLApp::MAX_MINDUMP_PATH_LENGTH);
// The path must not be truncated, and we need to have room left for a terminating zero.
llassert((dirPathLength + idLength + 5) < LLApp::MAX_MINDUMP_PATH_LENGTH); // <FS:Beq/> Buffer overrun avoidance (from Aleric Inglewood)
char * path = LLApp::instance()->getMiniDumpFilename();
auto remaining = LLApp::MAX_MINDUMP_PATH_LENGTH;
auto remaining = LLApp::MAX_MINDUMP_PATH_LENGTH - 1; // <FS:Beq/> Buffer overrun avoidance (from Aleric Inglewood
strncpy(path, dump_dir, remaining);
remaining -= dirPathLength;
path += dirPathLength;

View File

@ -88,6 +88,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

View File

@ -654,6 +654,6 @@
execute_parameters="performance"
is_running_function="Floater.IsOpen"
is_running_parameters="performance"
checkbox_control="FSAutoTuneFPS"
checkbox_control="AutoTuneFPS"
/>
</commands>

View File

@ -173,7 +173,8 @@ FSAreaSearch::FSAreaSearch(const LLSD& key) :
mRequestNeedsSent(false),
mRlvBehaviorCallbackConnection()
{
LLViewerRegion::sFSAreaSearchActive = true;
gAgent.setFSAreaSearchActive(true);
gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_360);
mFactoryMap["area_search_list_panel"] = LLCallbackMap(createPanelList, this);
mFactoryMap["area_search_find_panel"] = LLCallbackMap(createPanelFind, this);
mFactoryMap["area_search_filter_panel"] = LLCallbackMap(createPanelFilter, this);
@ -189,7 +190,16 @@ FSAreaSearch::FSAreaSearch(const LLSD& key) :
FSAreaSearch::~FSAreaSearch()
{
LLViewerRegion::sFSAreaSearchActive = false;
gAgent.setFSAreaSearchActive(false);
// Tell the Simulator not to send us everything anymore
// and revert to the regular "keyhole" frustum of interest
// list updates.
if( !LLApp::isExiting() )
{
gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_DEFAULT);
}
if (!gIdleCallbacks.deleteFunction(idle, this))
{
LL_WARNS("FSAreaSearch") << "FSAreaSearch::~FSAreaSearch() failed to delete callback" << LL_ENDL;

View File

@ -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);
}

View File

@ -70,8 +70,8 @@ private:
uuid_vec_t mAvatarSelections;
LLComboBox* mContactSetCombo;
LLAvatarList* mAvatarList;
LLComboBox* mContactSetCombo{ nullptr };
LLAvatarList* mAvatarList{ nullptr };
};
#endif // FS_PANELCONTACTSETS_H

View File

@ -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

View File

@ -109,6 +109,9 @@ public:
return mUpdateSignal.connect(cb);
}
protected:
void initSingleton() override;
private:
void updateRadarList();
void updateTracking();

View File

@ -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());

View File

@ -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;

View File

@ -3594,8 +3594,13 @@ void LLAgent::changeInterestListMode(const std::string &new_mode)
{
if (new_mode != mInterestListMode)
{
// <FS:Beq> Fix area search again
if ( (new_mode == LLViewerRegion::IL_MODE_DEFAULT && (!mFSAreaSearchActive && !m360CaptureActive)) ||
(new_mode == LLViewerRegion::IL_MODE_360) )
{
LL_DEBUGS("360Capture") << "Setting Agent interest list mode to " << mInterestListMode << " and updating regions" << LL_ENDL;
// </FS:Beq>
mInterestListMode = new_mode;
// Change interest list mode for all regions. If they are already set for the current mode,
// the setting will have no effect.
for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin();
@ -3608,6 +3613,7 @@ void LLAgent::changeInterestListMode(const std::string &new_mode)
regionp->setInterestListMode(mInterestListMode);
}
}
} // <FS:Beq/>
}
else
{

View File

@ -312,6 +312,10 @@ private:
region_changed_signal_t mRegionChangedSignal;
std::string mInterestListMode; // How agent wants regions to send updates
// <FS:Beq> Area search fixes
bool mFSAreaSearchActive;
bool m360CaptureActive;
// </FS:Beq>
//--------------------------------------------------------------------
// History
@ -320,6 +324,12 @@ public:
S32 getRegionsVisited() const;
F64 getDistanceTraveled() const;
void setDistanceTraveled(F64 dist) { mDistanceTraveled = dist; }
// <FS:Beq> Area search fixes
void setFSAreaSearchActive(bool enabled) { mFSAreaSearchActive = enabled; }
void set360CaptureActive(bool enabled) { m360CaptureActive = enabled; }
bool getFSAreaSearchActive() const { return mFSAreaSearchActive; }
bool get360CaptureActive() const { return m360CaptureActive; }
// </FS:Beq>
const LLVector3d &getLastPositionGlobal() const { return mLastPositionGlobal; }
void setLastPositionGlobal(const LLVector3d &pos) { mLastPositionGlobal = pos; }

View File

@ -1145,7 +1145,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 &region_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();

View File

@ -1883,7 +1883,6 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
#pragma GCC diagnostic pop
#endif
// </FS:Zi>
//VECTORIZE THIS
if (mDrawablep->isActive())
{

View File

@ -65,7 +65,7 @@ LLFloater360Capture::LLFloater360Capture(const LLSD& key)
// otherwise, exit before this is turned off, the Simulator
// will take care of cleaning up for us.
mStartILMode = gAgent.getInterestListMode();
gAgent.set360CaptureActive(true); // <FS:Beq/> make FS area search work aga
// send everything to us for as long as this floater is open
gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_360);
}
@ -84,11 +84,12 @@ LLFloater360Capture::~LLFloater360Capture()
// and now reverts to the regular "keyhole" frustum of interest
// list updates.
if (!LLApp::isExiting() &&
gSavedSettings.getBOOL("360CaptureUseInterestListCap") &&
// gSavedSettings.getBOOL("360CaptureUseInterestListCap") && // <FS:Beq/> Invalid dependency - This is not used anywhere else now.
mStartILMode != gAgent.getInterestListMode())
{
gAgent.set360CaptureActive(false); // <FS:Beq/> make FS Area search work again
gAgent.changeInterestListMode(mStartILMode);
}
}
}
BOOL LLFloater360Capture::postBuild()

View File

@ -7524,11 +7524,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;

View File

@ -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();

View File

@ -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();

View File

@ -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>

View File

@ -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;

View File

@ -1444,10 +1444,17 @@ public:
// Toggle the mode - regions will get updated
if (gAgent.getInterestListMode() == LLViewerRegion::IL_MODE_360)
{
// <FS:Beq> we need to force the 360 mode "users" to false or this override will fail
gAgent.setFSAreaSearchActive(false);
gAgent.set360CaptureActive(false);
// <FS:Beq/>
gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_DEFAULT);
}
else
{
// <FS:Beq> we need to force the 360 mode user flag to true or this override will fail. Don;t set area search though as that can have other effects.
gAgent.set360CaptureActive(false);
// <FS:Beq/>
gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_360);
}
return true;

View File

@ -1793,6 +1793,7 @@ void LLViewerRegion::killInvisibleObjects(F32 max_time)
// because of this, every time you turn around the simulator sends a swarm of full object update messages from cache
// probe misses and objects have to be reloaded from scratch. From some reason, disabling this causes holes to
// appear in the scene when flying back and forth between regions
if(gAgent.getFSAreaSearchActive()){ return; } // <FS:Beq/> FIRE-32668 Area Search improvements (again)
if(!sVOCacheCullingEnabled)
{
return;

View File

@ -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"

View File

@ -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>

View File

@ -82,7 +82,6 @@
Şəkil
</label>
</mimetype>
</mimetypes>
<mimetype name="video/vnd.secondlife.qt.legacy">
<label name="vnd.secondlife.qt.legacy_label">
Video (QuickTime)

View File

@ -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"

View File

@ -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>

View File

@ -206,6 +206,7 @@
<combo_box.item label="Payer l&apos;objet" name="Payobject"/>
<combo_box.item label="Ouvrir" name="Open"/>
<combo_box.item label="Zoomer" name="Zoom"/>
<combo_box.item label="Ignorer l'objet" name="Ignoreobject"/>
<combo_box.item label="Aucun" name="None"/>
</combo_box>
<check_box label="À vendre :" name="checkbox for sale" tool_tip="Permet aux gens d&apos;acheter cet objet, son contenu ou de le copier dans Second Life à un prix donné."/>

View File

@ -123,7 +123,9 @@
<menu_item_call label="Mes terrains..." name="My Land"/>
<menu_item_call label="Ma maison (Linden Home)" name="Linden Home"/>
<menu label="Afficher" name="LandShow">
<menu_item_check label="Lignes d&apos;interdiction" name="Ban Lines"/>
<menu_item_check label="Cacher les lignes d'interdiction" name="Hide Ban Lines"/>
<menu_item_check label="Lignes d'interdiction suite à une collision" name="Show Ban Lines On Collision"/>
<menu_item_check label="Lignes d'interdiction à proximité" name="Show Ban Lines On Proximity"/>
<menu_item_check label="Balises" name="beacons"/>
<menu_item_check label="Limites du terrain" name="Property Lines"/>
<menu_item_check label="Propriétaires de terrains" name="Land Owners"/>

View File

@ -1,4 +1,4 @@
<?xml version="1.0"?>
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel name="panel_login">
<panel.string name="forgot_password_url">
http://secondlife.com/account/request.php?lang=fr
@ -17,7 +17,7 @@
<button label="Connexion" name="connect_btn"/>
<check_box label="Se souvenir de moi" name="remember_check"/>
<text name="forgot_password_text">
Mot de passe oublié
Mot de passe oublié
</text>
<combo_box label="Sélectionner la grille" left_pad="20" name="server_combo"/>
<text name="sign_up_text">

View File

@ -75,6 +75,8 @@
<combo_box.item label="Payer l&apos;objet" name="Payobject"/>
<combo_box.item label="Ouvrir" name="Open"/>
<combo_box.item label="Zoom" name="Zoom"/>
<combo_box.item label="Ignorer l'objet" name="Ignoreobject"/>
<combo_box.item label="Aucun" name="None"/>
</combo_box>
<panel name="perms_inv">
<text name="perm_modify">

View File

@ -296,16 +296,15 @@
<text name="label size">
Dimensioni (metri)
</text>
<button name="copy_rot_btn" tool_tip="Copia dimensioni"/>
<button name="paste_rot_btn" tool_tip="Incolla dimensioni"/>
<button name="paste_rot_clip_btn" tool_tip="Incolla dim da appunti"/>
<text name="label rotation">
Rotazione (gradi)
</text>
<button name="copy_size_btn" tool_tip="Copia rotazione"/>
<button name="paste_size_btn" tool_tip="Incolla rotazione"/>
<button name="paste_size_clip_btn" tool_tip="Incolla dim da appunti"/>
<text name="label rotation">
Rotazione (gradi)
</text>
<button name="copy_rot_btn" tool_tip="Copia dimensioni"/>
<button name="paste_rot_btn" tool_tip="Incolla dimensioni"/>
<button name="paste_rot_clip_btn" tool_tip="Incolla dim da appunti"/>
<button label="Copia" name="copy_params_btn" tool_tip="Copia i parametri dell'&apos;oggetto negli appunti"/>
<button label="Incolla" name="paste_params_btn" tool_tip="Incolla i parametri dagli appunti"/>
<combo_box name="comboBaseType">
@ -407,31 +406,31 @@ Alto:
Medio:
Basso:
Min:
</text>
<combo_box name="LOD_show_combo">
<combo_box.item label="Predef" name="Default"/>
<combo_box.item label="Alto" name="High"/>
<combo_box.item label="Medio" name="Medium"/>
<combo_box.item label="Basso" name="Low"/>
<combo_box.item label="Minimo" name="Lowest/Imposter"/>
</combo_box>
<text name="ObjectLODbehaviourLabel" value="Comportamento LOD oggetto:"/>
<text name="object_radius" value="Raggio oggetto:" width="90"/>
<text name="LOD_swap_factors_label" value="Fattori LOD"/>
<text name="LOD_swap_defaults_label" value="Predef" tool_tip="Il fattore LOD che verrà applicato dalla maggioranza dei viewer."/>
<text name="LOD_swap_usr_label" tool_tip="L&apos;impostazione attuale, presa da RenderVolumeLODFactor" value="Attuale" width="38"/>
<text name="LOD_swap_label" value="Soglia"/>
<string name="ll_lod_tooltip_msg">Predefinito per Linden Lab Second Life Viewer ([FACTOR])</string>
<string name="fs_lod_tooltip_msg">Predefinito per [APP_NAME] Viewer ([FACTOR])</string>
<text name="LOD_swap_usr_current" tool_tip="Your current LOD Factor"/>
<text name="LOD_swap_LOD_Change_label">
</text>
<combo_box name="LOD_show_combo">
<combo_box.item label="Predef" name="Default"/>
<combo_box.item label="Alto" name="High"/>
<combo_box.item label="Medio" name="Medium"/>
<combo_box.item label="Basso" name="Low"/>
<combo_box.item label="Minimo" name="Lowest/Imposter"/>
</combo_box>
<text name="ObjectLODbehaviourLabel" value="Comportamento LOD oggetto:"/>
<text name="object_radius" value="Raggio oggetto:" width="90"/>
<text name="LOD_swap_factors_label" value="Fattori LOD"/>
<text name="LOD_swap_defaults_label" value="Predef" tool_tip="Il fattore LOD che verrà applicato dalla maggioranza dei viewer."/>
<text name="LOD_swap_usr_label" tool_tip="L&apos;impostazione attuale, presa da RenderVolumeLODFactor" value="Attuale" width="38"/>
<text name="LOD_swap_label" value="Soglia"/>
<string name="ll_lod_tooltip_msg">Predefinito per Linden Lab Second Life Viewer ([FACTOR])</string>
<string name="fs_lod_tooltip_msg">Predefinito per [APP_NAME] Viewer ([FACTOR])</string>
<text name="LOD_swap_usr_current" tool_tip="Your current LOD Factor"/>
<text name="LOD_swap_LOD_Change_label">
Alt ↔ Med
Med ↔ Bas
Bas ↔ Min
</text>
<text name="LODSwapTableDscriptionsText" tool_tip="Per i migliori risultati, i creatori dovrebbero cercare una buona resa dei LOD con le impostazioni predefinite per tutti i viewer.">
La tabella mostra i limiti di cambio dei LOD, espressi in metri di distanza dalla camera.
</text>
</text>
<text name="LODSwapTableDscriptionsText" tool_tip="Per i migliori risultati, i creatori dovrebbero cercare una buona resa dei LOD con le impostazioni predefinite per tutti i viewer.">
La tabella mostra i limiti di cambio dei LOD, espressi in metri di distanza dalla camera.
</text>
</panel>
<panel label="Caratteristiche" name="Features">
<panel.string name="None">

View File

@ -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>

View File

@ -218,6 +218,7 @@
<combo_box.item label="Zapłać obiektowi" name="Payobject"/>
<combo_box.item label="Otwórz" name="Open"/>
<combo_box.item label="Przybliż" name="Zoom"/>
<combo_box.item label="Ignoruj obiekt" name="Ignoreobject" />
<combo_box.item label="Brak" name="None"/>
</combo_box>
<check_box label="Na sprzedaż:" name="checkbox for sale" tool_tip="Pozwala ludziom kupować ten obiekt, jego zawartość lub kopię w świecie za określoną cenę." />

View File

@ -122,7 +122,9 @@
<menu_item_call label="Moje działki" name="My Land"/>
<menu_item_call label="Mój dom (Linden Home)" name="Linden Home" />
<menu label="Pokaż więcej" name="LandShow">
<menu_item_check label="Linie zakazu" name="Ban Lines"/>
<menu_item_check label="Ukryj linie zakazu" name="Hide Ban Lines" />
<menu_item_check label="Linie zakazu przy kolizji" name="Show Ban Lines On Collision" />
<menu_item_check label="Linie zakazu przy zbliżaniu" name="Show Ban Lines On Proximity" />
<menu_item_check label="Emitery" name="beacons" shortcut=""/>
<menu_item_check label="Granice działek" name="Property Lines"/>
<menu_item_check label="Właściciele działek" name="Land Owners" shortcut="control|alt|W"/>
@ -542,14 +544,15 @@
<menu_item_check label="Domyślne ustawienia otoczenia Regionu" name="Sim Sun Override"/>
<menu_item_check label="Ustalona pogoda" name="Fixed Weather"/>
<menu_item_call label="Zrzut buforu pamięci obiektów regionu" name="Dump Region Object Cache"/>
<menu_item_call label="Interest List: Pełne odświeżenie" name="Interest List: Full Update"/>
<menu_item_check label="Rejestruj statystyki do pliku" name="Stats Recorder File" />
<menu_item_check label="Interest List: Tryb 360" name="Interest List: 360 Mode" />
<menu_item_call label="Interest List: Resetowanie" name="Reset Interest Lists" />
<menu_item_call label="Zrzut właściwości symulatora do czatu w pobliżu" name="DumpSimFeaturesToChat"/>
</menu>
<menu label="Interfejs" name="UI">
<menu_item_call label="Test przeglądarki mediów" name="Web Browser Test"/>
<menu_item_check label="Test restartu regionu" name="Region Restart Test"/>
<menu_item_call label="Przeglądarka treści internetowych" name="Web Content Browser"/>
<menu_item_call label="Test połączenia z Facebookiem" name="FB Connect Test"/>
<menu_item_call label="Zrzut SelectMgr" name="Dump SelectMgr"/>
<menu_item_call label="Zrzut Szafy" name="Dump Inventory"/>
<menu_item_call label="Zrzut liczników" name="Dump Timers"/>

View File

@ -76,6 +76,7 @@
<combo_box.item label="Zapłać obiektowi" name="Payobject"/>
<combo_box.item label="Otwórz" name="Open"/>
<combo_box.item label="Przybliż" name="Zoom"/>
<combo_box.item label="Ignoruj obiekt" name="Ignoreobject" />
<combo_box.item label="Brak" name="None"/>
</combo_box>
<panel name="perms_inv">

View File

@ -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="Позволяет людям покупать этот объект, его содержимое или копировать в мире по указанной цене." />

View File

@ -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"/>

View File

@ -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">

View File

@ -1,2 +1,3 @@
llbase>=1.2.11
autobuild>=3.9.1
llbase==1.2.11
autobuild==3.9.1
llsd==1.2.1

View File

@ -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"