# Conflicts:
#	indra/llwebrtc/llwebrtc.h
#	indra/newview/llfloateremojipicker.cpp
#	indra/newview/llvoavatar.cpp
#	indra/newview/llvoavatar.h
master
Ansariel 2024-08-02 13:01:06 +02:00
commit 04bed35215
18 changed files with 104 additions and 50 deletions

View File

@ -22,6 +22,7 @@ jobs:
# important to ensure it's the empty string when false. If you omit || '', # important to ensure it's the empty string when false. If you omit || '',
# its value when false is "false", which is interpreted as true. # its value when false is "false", which is interpreted as true.
RELEASE_RUN: ${{ (github.event.inputs.release_run || github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life')) && 'Y' || '' }} RELEASE_RUN: ${{ (github.event.inputs.release_run || github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life')) && 'Y' || '' }}
FROM_FORK: ${{ github.event.pull_request.head.repo.organization != 'secondlife' }}
steps: steps:
- name: Set Variables - name: Set Variables
id: setvar id: setvar

View File

@ -146,12 +146,21 @@ pre_build()
&& [ -r "$master_message_template_checkout/message_template.msg" ] \ && [ -r "$master_message_template_checkout/message_template.msg" ] \
&& template_verifier_master_url="-DTEMPLATE_VERIFIER_MASTER_URL=file://$master_message_template_checkout/message_template.msg" && template_verifier_master_url="-DTEMPLATE_VERIFIER_MASTER_URL=file://$master_message_template_checkout/message_template.msg"
RELEASE_CRASH_REPORTING=ON RELEASE_CRASH_REPORTING=OFF
HAVOK=ON HAVOK=OFF
SIGNING=() SIGNING=()
if [[ "$arch" == "Darwin" && "$variant" == "Release" ]] if [[ "$variant" != *OS ]]
then SIGNING=("-DENABLE_SIGNING:BOOL=YES" \ then
"-DSIGNING_IDENTITY:STRING=Developer ID Application: Linden Research, Inc.") # Proprietary builds
RELEASE_CRASH_REPORTING=ON
HAVOK=ON
if [[ "$arch" == "Darwin" ]]
then
SIGNING=("-DENABLE_SIGNING:BOOL=YES" \
"-DSIGNING_IDENTITY:STRING=Developer ID Application: Linden Research, Inc.")
fi
fi fi
if [ "${RELEASE_CRASH_REPORTING:-}" != "OFF" ] if [ "${RELEASE_CRASH_REPORTING:-}" != "OFF" ]

View File

@ -1442,6 +1442,30 @@ Sovereign Engineer
SL-18534 SL-18534
SL-19690 SL-19690
SL-19336 SL-19336
secondlife/viewer/pull/1283
secondlife/viewer/pull/1287
secondlife/viewer/pull/1906
secondlife/viewer/pull/1930
secondlife/viewer/pull/1941
secondlife/viewer/pull/1946
secondlife/viewer/pull/1948
secondlife/viewer/pull/1950
secondlife/viewer/pull/1951
secondlife/viewer/pull/2066
secondlife/viewer/pull/2077
secondlife/viewer/pull/2078
secondlife/viewer/pull/2080
secondlife/viewer/pull/2085
secondlife/viewer/pull/2098
secondlife/viewer/pull/2099
secondlife/viewer/pull/2105
secondlife/viewer/pull/2115
secondlife/viewer/pull/2116
secondlife/viewer/pull/2124
secondlife/viewer/pull/2125
secondlife/viewer/pull/2135
secondlife/viewer/pull/2136
secondlife/viewer/pull/2149
SpacedOut Frye SpacedOut Frye
VWR-34 VWR-34
VWR-45 VWR-45

View File

@ -274,6 +274,7 @@ void LLThread::shutdown()
mStatus = STOPPED; mStatus = STOPPED;
return; return;
} }
delete mThreadp;
mThreadp = NULL; mThreadp = NULL;
} }
@ -304,6 +305,7 @@ void LLThread::start()
{ {
mThreadp = new std::thread(std::bind(&LLThread::threadRun, this)); mThreadp = new std::thread(std::bind(&LLThread::threadRun, this));
mNativeHandle = mThreadp->native_handle(); mNativeHandle = mThreadp->native_handle();
mThreadp->detach();
} }
catch (std::system_error& ex) catch (std::system_error& ex)
{ {

View File

@ -1277,7 +1277,7 @@ bool LLToolBar::handleDragAndDrop(S32 x, S32 y, MASK mask, bool drop,
int orig_rank = getRankFromPosition(dragged_command); int orig_rank = getRankFromPosition(dragged_command);
mDragRank = getRankFromPosition(x, y); mDragRank = getRankFromPosition(x, y);
// Don't DaD if we're dragging a command on itself // Don't DaD if we're dragging a command on itself
mDragAndDropTarget = ((orig_rank != RANK_NONE) && ((mDragRank == orig_rank) || ((mDragRank - 1) == orig_rank))); mDragAndDropTarget = (orig_rank == RANK_NONE) || ((mDragRank != orig_rank) && ((mDragRank - 1) != orig_rank));
//LL_INFOS() << "Merov debug : DaD, rank = " << mDragRank << ", dragged uui = " << inv_item->getUUID() << LL_ENDL; //LL_INFOS() << "Merov debug : DaD, rank = " << mDragRank << ", dragged uui = " << inv_item->getUUID() << LL_ENDL;
/* Do the following if you want to animate the button itself /* Do the following if you want to animate the button itself
LLCommandId dragged_command(inv_item->getUUID()); LLCommandId dragged_command(inv_item->getUUID());

View File

@ -244,7 +244,7 @@ class LLWebRTCSignalingObserver
// allows for management of this peer connection. // allows for management of this peer connection.
class LLWebRTCPeerConnectionInterface class LLWebRTCPeerConnectionInterface
{ {
public: public:
struct InitOptions struct InitOptions
{ {

View File

@ -247,8 +247,6 @@ void LLDrawPoolWater::renderPostDeferred(S32 pass)
F32 screenRes[] = { 1.f / gGLViewport[2], 1.f / gGLViewport[3] }; F32 screenRes[] = { 1.f / gGLViewport[2], 1.f / gGLViewport[3] };
S32 diffTex = shader->enableTexture(LLShaderMgr::DIFFUSE_MAP);
shader->uniform2fv(LLShaderMgr::DEFERRED_SCREEN_RES, 1, screenRes); shader->uniform2fv(LLShaderMgr::DEFERRED_SCREEN_RES, 1, screenRes);
shader->uniform1f(LLShaderMgr::BLEND_FACTOR, blend_factor); shader->uniform1f(LLShaderMgr::BLEND_FACTOR, blend_factor);
@ -322,8 +320,6 @@ void LLDrawPoolWater::renderPostDeferred(S32 pass)
water = static_cast<LLVOWater*>(face->getViewerObject()); water = static_cast<LLVOWater*>(face->getViewerObject());
if (!water) continue; if (!water) continue;
gGL.getTexUnit(diffTex)->bind(face->getTexture());
if ((bool)edge == (bool)water->getIsEdgePatch()) if ((bool)edge == (bool)water->getIsEdgePatch())
{ {
face->renderIndexed(); face->renderIndexed();
@ -340,7 +336,6 @@ void LLDrawPoolWater::renderPostDeferred(S32 pass)
shader->disableTexture(LLShaderMgr::ENVIRONMENT_MAP, LLTexUnit::TT_CUBE_MAP); shader->disableTexture(LLShaderMgr::ENVIRONMENT_MAP, LLTexUnit::TT_CUBE_MAP);
shader->disableTexture(LLShaderMgr::WATER_SCREENTEX); shader->disableTexture(LLShaderMgr::WATER_SCREENTEX);
shader->disableTexture(LLShaderMgr::BUMP_MAP); shader->disableTexture(LLShaderMgr::BUMP_MAP);
shader->disableTexture(LLShaderMgr::DIFFUSE_MAP);
shader->disableTexture(LLShaderMgr::WATER_REFTEX); shader->disableTexture(LLShaderMgr::WATER_REFTEX);
// clean up // clean up

View File

@ -193,7 +193,7 @@ public:
{ {
mWStr = LLWString(1, emoji); mWStr = LLWString(1, emoji);
mEmoji = emoji; mEmoji = emoji;
mTitle = title; mTitle = utf8str_to_wstring(title);
mBegin = begin; mBegin = begin;
mEnd = end; mEnd = end;
} }
@ -211,9 +211,9 @@ public:
drawIcon(centerX, centerY - 1, iconWidth); drawIcon(centerX, centerY - 1, iconWidth);
static LLColor4 defaultColor(0.75f, 0.75f, 0.75f, 1.0f); static LLColor4 defaultColor(0.75f, 0.75f, 0.75f, 1.0f);
LLColor4 textColor = LLUIColorTable::instance().getColor("MenuItemEnabledColor", defaultColor); static LLUIColor textColor = LLUIColorTable::instance().getColor("MenuItemEnabledColor", defaultColor);
S32 max_pixels = clientWidth - iconWidth; S32 max_pixels = clientWidth - iconWidth;
drawName((F32)iconWidth, centerY, max_pixels, textColor); drawName((F32)iconWidth, centerY, max_pixels, textColor.get());
} }
protected: protected:
@ -237,7 +237,7 @@ protected:
max_pixels); // max_pixels max_pixels); // max_pixels
} }
void drawName(F32 x, F32 y, S32 max_pixels, LLColor4& color) void drawName(F32 x, F32 y, S32 max_pixels, const LLColor4& color)
{ {
static LLCachedControl<bool> useBWEmojis(gSavedSettings, "FSUseBWEmojis", false); // <FS:Beq/> Add B&W emoji font support static LLCachedControl<bool> useBWEmojis(gSavedSettings, "FSUseBWEmojis", false); // <FS:Beq/> Add B&W emoji font support
@ -246,9 +246,9 @@ protected:
LLFontGL* font = LLFontGL::getFontEmojiLarge(useBWEmojis); // <FS:Beq/> Add B&W emoji font support LLFontGL* font = LLFontGL::getFontEmojiLarge(useBWEmojis); // <FS:Beq/> Add B&W emoji font support
if (mBegin) if (mBegin)
{ {
std::string text = mTitle.substr(0, mBegin); LLWString text = mTitle.substr(0, mBegin);
font->renderUTF8( font->render(
text, // text text.c_str(), // text
0, // begin_offset 0, // begin_offset
x0, // x x0, // x
y, // y y, // y
@ -259,14 +259,14 @@ protected:
LLFontGL::DROP_SHADOW_SOFT, // shadow LLFontGL::DROP_SHADOW_SOFT, // shadow
static_cast<S32>(text.size()), // max_chars static_cast<S32>(text.size()), // max_chars
(S32)x1); // max_pixels (S32)x1); // max_pixels
F32 dx = font->getWidthF32(text); F32 dx = font->getWidthF32(text.c_str());
x0 += dx; x0 += dx;
x1 -= dx; x1 -= dx;
} }
if (x1 > 0 && mEnd > mBegin) if (x1 > 0 && mEnd > mBegin)
{ {
std::string text = mTitle.substr(mBegin, mEnd - mBegin); LLWString text = mTitle.substr(mBegin, mEnd - mBegin);
font->renderUTF8( font->render(
text, // text text, // text
0, // begin_offset 0, // begin_offset
x0, // x x0, // x
@ -278,14 +278,14 @@ protected:
LLFontGL::DROP_SHADOW_SOFT, // shadow LLFontGL::DROP_SHADOW_SOFT, // shadow
static_cast<S32>(text.size()), // max_chars static_cast<S32>(text.size()), // max_chars
(S32)x1); // max_pixels (S32)x1); // max_pixels
F32 dx = font->getWidthF32(text); F32 dx = font->getWidthF32(text.c_str());
x0 += dx; x0 += dx;
x1 -= dx; x1 -= dx;
} }
if (x1 > 0 && mEnd < mTitle.size()) if (x1 > 0 && mEnd < mTitle.size())
{ {
std::string text = mEnd ? mTitle.substr(mEnd) : mTitle; LLWString text = mEnd ? mTitle.substr(mEnd) : mTitle;
font->renderUTF8( font->render(
text, // text text, // text
0, // begin_offset 0, // begin_offset
x0, // x x0, // x
@ -303,7 +303,7 @@ protected:
private: private:
llwchar mEmoji; llwchar mEmoji;
LLWString mWStr; LLWString mWStr;
std::string mTitle; LLWString mTitle;
size_t mBegin; size_t mBegin;
size_t mEnd; size_t mEnd;
}; };
@ -443,6 +443,7 @@ void LLFloaterEmojiPicker::fillGroups()
for (LLButton* button : mGroupButtons) for (LLButton* button : mGroupButtons)
{ {
mGroups->removeChild(button); mGroups->removeChild(button);
button->die();
} }
mFilteredEmojiGroups.clear(); mFilteredEmojiGroups.clear();
mFilteredEmojis.clear(); mFilteredEmojis.clear();
@ -456,7 +457,7 @@ void LLFloaterEmojiPicker::fillGroups()
rect.mBottom = mBadge->getRect().getHeight(); rect.mBottom = mBadge->getRect().getHeight();
// Create button for "All categories" // Create button for "All categories"
params.name = "emojigroup_all_cagetories"; // <FS:Ansariel> Fix mandatory name missing (XUI parser warning) params.name = "all_categories";
createGroupButton(params, rect, ALL_EMOJIS_IMAGE_INDEX); createGroupButton(params, rect, ALL_EMOJIS_IMAGE_INDEX);
// Create group and button for "Recently used" and/or "Frequently used" // Create group and button for "Recently used" and/or "Frequently used"
@ -470,7 +471,7 @@ void LLFloaterEmojiPicker::fillGroups()
{ {
mFilteredEmojiGroups.push_back(USED_EMOJIS_GROUP_INDEX); mFilteredEmojiGroups.push_back(USED_EMOJIS_GROUP_INDEX);
mFilteredEmojis.emplace_back(cats); mFilteredEmojis.emplace_back(cats);
params.name = "emojigroup_recently_frequently"; // <FS:Ansariel> Fix mandatory name missing (XUI parser warning) params.name = "used_categories";
createGroupButton(params, rect, USED_EMOJIS_IMAGE_INDEX); createGroupButton(params, rect, USED_EMOJIS_IMAGE_INDEX);
} }
} }
@ -488,7 +489,7 @@ void LLFloaterEmojiPicker::fillGroups()
{ {
mFilteredEmojiGroups.push_back(i); mFilteredEmojiGroups.push_back(i);
mFilteredEmojis.emplace_back(cats); mFilteredEmojis.emplace_back(cats);
params.name = "emojigroup_" + std::to_string(i); // <FS:Ansariel> Fix mandatory name missing (XUI parser warning) params.name = "group_" + std::to_string(i);
createGroupButton(params, rect, groups[i].Character); createGroupButton(params, rect, groups[i].Character);
} }
} }

View File

@ -220,7 +220,7 @@ F32 LLReflectionMap::getNearClip()
if (mViewerObject && mViewerObject->getVolume()) if (mViewerObject && mViewerObject->getVolume())
{ {
ret = ((LLVOVolume*)mViewerObject)->getReflectionProbeNearClip(); ret = mViewerObject->getReflectionProbeNearClip();
} }
else if (mGroup) else if (mGroup)
{ {
@ -240,7 +240,7 @@ bool LLReflectionMap::getIsDynamic()
mViewerObject && mViewerObject &&
mViewerObject->getVolume()) mViewerObject->getVolume())
{ {
return ((LLVOVolume*)mViewerObject)->getReflectionProbeIsDynamic(); return mViewerObject->getReflectionProbeIsDynamic();
} }
return false; return false;

View File

@ -269,7 +269,11 @@ public:
virtual bool isRiggedMesh() const { return false; } virtual bool isRiggedMesh() const { return false; }
virtual bool hasLightTexture() const { return false; } virtual bool hasLightTexture() const { return false; }
virtual bool isReflectionProbe() const { return false; } virtual bool isReflectionProbe() const { return false; }
virtual F32 getReflectionProbeAmbiance() const { return 0.f; }
virtual F32 getReflectionProbeNearClip() const { return 0.f; }
virtual bool getReflectionProbeIsBox() const { return false; } virtual bool getReflectionProbeIsBox() const { return false; }
virtual bool getReflectionProbeIsDynamic() const { return false; };
virtual bool getReflectionProbeIsMirror() const { return false; };
// This method returns true if the object is over land owned by // This method returns true if the object is over land owned by
// the agent, one of its groups, or it encroaches and // the agent, one of its groups, or it encroaches and

View File

@ -555,9 +555,9 @@ void LLViewerTexture::updateClass()
LL_WARNS() << "Low system memory detected, emergency downrezzing off screen textures" << LL_ENDL; LL_WARNS() << "Low system memory detected, emergency downrezzing off screen textures" << LL_ENDL;
sDesiredDiscardBias = llmax(sDesiredDiscardBias, 1.5f); sDesiredDiscardBias = llmax(sDesiredDiscardBias, 1.5f);
for (auto image : gTextureList) for (auto& image : gTextureList)
{ {
gTextureList.updateImageDecodePriority(image); gTextureList.updateImageDecodePriority(image, false /*will modify gTextureList otherwise!*/);
} }
} }

View File

@ -917,7 +917,7 @@ void LLViewerTextureList::clearFetchingRequests()
extern bool gCubeSnapshot; extern bool gCubeSnapshot;
void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imagep) void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imagep, bool flush_images)
{ {
if (imagep->isInDebug() || imagep->isUnremovable()) if (imagep->isInDebug() || imagep->isUnremovable())
{ {
@ -962,7 +962,9 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
// shows one letter at a time // shows one letter at a time
// //
// Maximum usage examples: huge chunk of terrain repeats texture // Maximum usage examples: huge chunk of terrain repeats texture
const LLTextureEntry* te = face->getTextureEntry(); S32 te_offset = face->getTEOffset(); // offset is -1 if not inited
LLViewerObject* objp = face->getViewerObject();
const LLTextureEntry* te = (te_offset < 0 || te_offset >= objp->getNumTEs()) ? nullptr : objp->getTE(te_offset);
F32 min_scale = te ? llmin(fabsf(te->getScaleS()), fabsf(te->getScaleT())) : 1.f; F32 min_scale = te ? llmin(fabsf(te->getScaleS()), fabsf(te->getScaleT())) : 1.f;
min_scale = llclamp(min_scale * min_scale, texture_scale_min(), texture_scale_max()); min_scale = llclamp(min_scale * min_scale, texture_scale_min(), texture_scale_max());
vsize /= min_scale; vsize /= min_scale;
@ -1005,7 +1007,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
// Flush formatted images using a lazy flush // Flush formatted images using a lazy flush
// //
S32 num_refs = imagep->getNumRefs(); S32 num_refs = imagep->getNumRefs();
if (num_refs == min_refs) if (num_refs == min_refs && flush_images)
{ {
if (imagep->getLastReferencedTimer()->getElapsedTimeF32() > lazy_flush_timeout) if (imagep->getLastReferencedTimer()->getElapsedTimeF32() > lazy_flush_timeout)
{ {

View File

@ -152,7 +152,7 @@ public:
// - updates decode priority // - updates decode priority
// - updates desired discard level // - updates desired discard level
// - cleans up textures that haven't been referenced in awhile // - cleans up textures that haven't been referenced in awhile
void updateImageDecodePriority(LLViewerFetchedTexture* imagep); void updateImageDecodePriority(LLViewerFetchedTexture* imagep, bool flush_images = true);
private: private:
F32 updateImagesCreateTextures(F32 max_time); F32 updateImagesCreateTextures(F32 max_time);

View File

@ -3667,9 +3667,9 @@ void LLVOAvatar::idleUpdateNameTagText(bool new_name)
{ {
is_muted = isInMuteList(); is_muted = isInMuteList();
} }
// bool is_friend = LLAvatarTracker::instance().isBuddy(getID()); // bool is_friend = isBuddy();
// [RLVa:KB] - Checked: RLVa-1.2.2 // [RLVa:KB] - Checked: RLVa-1.2.2
bool is_friend = (fRlvShowAvName) && (LLAvatarTracker::instance().isBuddy(getID())); bool is_friend = fRlvShowAvName && isBuddy();
// [/RLVa:KB] // [/RLVa:KB]
bool is_cloud = getIsCloud(); bool is_cloud = getIsCloud();
@ -9381,7 +9381,7 @@ bool LLVOAvatar::isTooComplex() const
{ {
bool too_complex; bool too_complex;
static LLCachedControl<S32> compelxity_render_mode(gSavedSettings, "RenderAvatarComplexityMode"); static LLCachedControl<S32> compelxity_render_mode(gSavedSettings, "RenderAvatarComplexityMode");
bool render_friend = (LLAvatarTracker::instance().isBuddy(getID()) && compelxity_render_mode > AV_RENDER_LIMIT_BY_COMPLEXITY); bool render_friend = (isBuddy() && compelxity_render_mode > AV_RENDER_LIMIT_BY_COMPLEXITY);
if (isSelf() || render_friend || mVisuallyMuteSetting == AV_ALWAYS_RENDER) if (isSelf() || render_friend || mVisuallyMuteSetting == AV_ALWAYS_RENDER)
{ {
@ -9417,7 +9417,7 @@ bool LLVOAvatar::isTooSlow() const
static LLCachedControl<S32> compelxity_render_mode(gSavedSettings, "RenderAvatarComplexityMode"); static LLCachedControl<S32> compelxity_render_mode(gSavedSettings, "RenderAvatarComplexityMode");
static LLCachedControl<bool> friends_only(gSavedSettings, "RenderAvatarFriendsOnly", false); static LLCachedControl<bool> friends_only(gSavedSettings, "RenderAvatarFriendsOnly", false);
bool is_friend = LLAvatarTracker::instance().isBuddy(getID()); bool is_friend = isBuddy();
bool render_friend = is_friend && compelxity_render_mode > AV_RENDER_LIMIT_BY_COMPLEXITY; bool render_friend = is_friend && compelxity_render_mode > AV_RENDER_LIMIT_BY_COMPLEXITY;
if (render_friend || mVisuallyMuteSetting == AV_ALWAYS_RENDER) if (render_friend || mVisuallyMuteSetting == AV_ALWAYS_RENDER)
@ -9475,7 +9475,7 @@ void LLVOAvatar::updateTooSlow()
if(!mTooSlowWithoutShadows) // if we were not previously above the full impostor cap if(!mTooSlowWithoutShadows) // if we were not previously above the full impostor cap
{ {
bool always_render_friends = compelxity_render_mode > AV_RENDER_LIMIT_BY_COMPLEXITY; bool always_render_friends = compelxity_render_mode > AV_RENDER_LIMIT_BY_COMPLEXITY;
bool render_friend_or_exception = (always_render_friends && LLAvatarTracker::instance().isBuddy( id ) ) || bool render_friend_or_exception = (always_render_friends && isBuddy()) ||
( getVisualMuteSettings() == LLVOAvatar::AV_ALWAYS_RENDER ); ( getVisualMuteSettings() == LLVOAvatar::AV_ALWAYS_RENDER );
if( (!isSelf() || allowSelfImpostor) && !render_friend_or_exception) if( (!isSelf() || allowSelfImpostor) && !render_friend_or_exception)
{ {
@ -12647,7 +12647,7 @@ void LLVOAvatar::calcMutedAVColor()
new_color = LLColor4::grey4; new_color = LLColor4::grey4;
change_msg = " not rendered: color is grey4"; change_msg = " not rendered: color is grey4";
} }
else if (LLMuteList::getInstance()->isMuted(av_id)) // the user blocked them else if (isInMuteList()) // the user blocked them
{ {
// blocked avatars are dark grey // blocked avatars are dark grey
new_color = LLColor4::grey4; new_color = LLColor4::grey4;
@ -12899,7 +12899,21 @@ F32 LLVOAvatar::getAverageGPURenderTime()
bool LLVOAvatar::isBuddy() const bool LLVOAvatar::isBuddy() const
{ {
return LLAvatarTracker::instance().isBuddy(getID()); bool is_friend = false;
F64 now = LLFrameTimer::getTotalSeconds();
if (now < mCachedBuddyListUpdateTime)
{
is_friend = mCachedInBuddyList;
}
else
{
is_friend = LLAvatarTracker::instance().isBuddy(getID());
const F64 SECONDS_BETWEEN_BUDDY_UPDATES = 1;
mCachedBuddyListUpdateTime = now + SECONDS_BETWEEN_BUDDY_UPDATES;
mCachedInBuddyList = is_friend;
}
return is_friend;
} }

View File

@ -609,6 +609,8 @@ private:
mutable bool mCachedInMuteList; mutable bool mCachedInMuteList;
mutable F64 mCachedMuteListUpdateTime; mutable F64 mCachedMuteListUpdateTime;
mutable bool mCachedInBuddyList = false;
mutable F64 mCachedBuddyListUpdateTime = 0.0;
// [RLVa:KB] - Checked: RLVa-2.2 (@setcam_avdist) // [RLVa:KB] - Checked: RLVa-2.2 (@setcam_avdist)
mutable bool mCachedIsRlvSilhouette = false; mutable bool mCachedIsRlvSilhouette = false;
mutable F64 mCachedRlvSilhouetteUpdateTime = 0.f; mutable F64 mCachedRlvSilhouetteUpdateTime = 0.f;

View File

@ -309,11 +309,11 @@ public:
bool setReflectionProbeIsMirror(bool is_mirror); bool setReflectionProbeIsMirror(bool is_mirror);
bool isReflectionProbe() const override; bool isReflectionProbe() const override;
F32 getReflectionProbeAmbiance() const; F32 getReflectionProbeAmbiance() const override;
F32 getReflectionProbeNearClip() const; F32 getReflectionProbeNearClip() const override;
bool getReflectionProbeIsBox() const override; bool getReflectionProbeIsBox() const override;
bool getReflectionProbeIsDynamic() const; bool getReflectionProbeIsDynamic() const override;
bool getReflectionProbeIsMirror() const; bool getReflectionProbeIsMirror() const override;
// Flexible Objects // Flexible Objects
U32 getVolumeInterfaceID() const; U32 getVolumeInterfaceID() const;

View File

@ -24,7 +24,7 @@
Optionen: Optionen:
</text> </text>
<check_box label="Mit Skripten" name="return_scripts" tool_tip="Es werden nur die Objekte zurückgegeben, die über Skripte verfügen."/> <check_box label="Mit Skripten" name="return_scripts" tool_tip="Es werden nur die Objekte zurückgegeben, die über Skripte verfügen."/>
<check_box label="Auf dem Land von jemand anderem" name="return_other_land" tool_tip="Es werden nur die Objekte zurückgegeben, die sich auf dem Land eines anderen Einwohners befinden"/> <check_box label="Auf dem Land von jemand anderem" name="return_other_land" tool_tip="Es werden nur die Objekte zurückgegeben, die nicht dem ausgewahlten Einwohner gehören"/>
<check_box label="In jeder Region auf diesem Grundbesitz" name="return_estate_wide" tool_tip="Es werden die Objekte in allen Regionen dieses Grundbesitzes zurückgegeben"/> <check_box label="In jeder Region auf diesem Grundbesitz" name="return_estate_wide" tool_tip="Es werden die Objekte in allen Regionen dieses Grundbesitzes zurückgegeben"/>
<button label="Zurückgeben" name="return_btn" width="90"/> <button label="Zurückgeben" name="return_btn" width="90"/>
<button label="Top-Kollisionsobjekte..." name="top_colliders_btn" tool_tip="Liste der Objekte mit den meisten potenziellen Kollisionen"/> <button label="Top-Kollisionsobjekte..." name="top_colliders_btn" tool_tip="Liste der Objekte mit den meisten potenziellen Kollisionen"/>

View File

@ -140,7 +140,7 @@
layout="topleft" layout="topleft"
left_delta="0" left_delta="0"
name="return_other_land" name="return_other_land"
tool_tip="Return only objects which are on land belonging to someone else" tool_tip="Return only objects which are on land that isn't owned by selected user"
top_delta="20" top_delta="20"
width="80" /> width="80" />
<check_box <check_box