diff --git a/indra/newview/llfloaterscriptdebug.cpp b/indra/newview/llfloaterscriptdebug.cpp
index 9d43c4f5bd..d62c424c4a 100644
--- a/indra/newview/llfloaterscriptdebug.cpp
+++ b/indra/newview/llfloaterscriptdebug.cpp
@@ -124,6 +124,9 @@ void LLFloaterScriptDebug::addScriptLine(const std::string &utf8mesg, const std:
if (objectp)
{
objectp->setIcon(LLViewerTextureManager::getFetchedTextureFromFile("script_error.j2c", TRUE, LLGLTexture::BOOST_UI));
+ // Mark script error icons
+ objectp->getIcon()->setScriptError();
+ // Mark script error icons
floater_label = llformat("%s (%.0f, %.0f, %.0f)",
user_name.c_str(),
objectp->getPositionRegion().mV[VX],
diff --git a/indra/newview/llhudicon.cpp b/indra/newview/llhudicon.cpp
index 7e1025c41b..35d8aeeadb 100644
--- a/indra/newview/llhudicon.cpp
+++ b/indra/newview/llhudicon.cpp
@@ -61,6 +61,10 @@ static F32 calc_bouncy_animation(F32 x)
//-----------------------------------------------------------------------------
LLHUDIcon::icon_instance_t LLHUDIcon::sIconInstances;
+// Mark script error icons
+LLHUDIcon::icon_instance_t LLHUDIcon::sScriptErrorIconInstances;
+// Mark script error icons
+
LLHUDIcon::LLHUDIcon(const U8 type) :
LLHUDObject(type),
mImagep(NULL),
@@ -390,6 +394,17 @@ void LLHUDIcon::cleanupDeadIcons()
{
sIconInstances.erase(found_it);
}
+
+ // Mark script error icons
+ if ((*icon_it)->mScriptError)
+ {
+ icon_instance_t::iterator found_script_it = std::find(sScriptErrorIconInstances.begin(), sScriptErrorIconInstances.end(), *icon_it);
+ if (found_script_it != sScriptErrorIconInstances.end())
+ {
+ sScriptErrorIconInstances.erase(found_script_it);
+ }
+ }
+ // Mark script error icons
}
}
@@ -398,3 +413,17 @@ S32 LLHUDIcon::getNumInstances()
{
return (S32)sIconInstances.size();
}
+
+// Mark script error icons
+void LLHUDIcon::setScriptError()
+{
+ mScriptError = true;
+ sScriptErrorIconInstances.push_back(this);
+}
+
+//static
+BOOL LLHUDIcon::scriptIconsNearby()
+{
+ return !sScriptErrorIconInstances.empty();
+}
+// Mark script error icons
\ No newline at end of file
diff --git a/indra/newview/llhudicon.h b/indra/newview/llhudicon.h
index 644daa0299..3eaa041634 100644
--- a/indra/newview/llhudicon.h
+++ b/indra/newview/llhudicon.h
@@ -75,6 +75,11 @@ public:
BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end, LLVector3* intersection);
+ // Mark script error icons
+ void setScriptError();
+ static BOOL scriptIconsNearby();
+ // Mark script error icons
+
protected:
LLHUDIcon(const U8 type);
~LLHUDIcon();
@@ -92,6 +97,11 @@ private:
typedef std::vector > icon_instance_t;
static icon_instance_t sIconInstances;
+
+ // Mark script error icons
+ bool mScriptError;
+ static icon_instance_t sScriptErrorIconInstances;
+ // Mark script error icons
};
#endif // LL_LLHUDICON_H
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index 25faef5ff3..9cf139f2e5 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -362,7 +362,7 @@ BOOL LLStatusBar::postBuild()
//mScriptOut = getChildView("scriptout");
mScriptOut = getChild("scriptout");
mScriptOut->setMouseDownCallback(boost::bind(&LLFloaterScriptDebug::show, LLUUID::null));
- mNearbyIcons = LLHUDIcon::iconsNearby();
+ mNearbyIcons = LLHUDIcon::scriptIconsNearby();
// Script debug
mParcelInfoPanel = getChild("parcel_info_panel");
@@ -559,9 +559,9 @@ void LLStatusBar::refresh()
mParcelInfoText->setEnabled(!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC));
// Script debug
- if (mNearbyIcons != LLHUDIcon::iconsNearby())
+ if (mNearbyIcons != LLHUDIcon::scriptIconsNearby())
{
- mNearbyIcons = LLHUDIcon::iconsNearby();
+ mNearbyIcons = LLHUDIcon::scriptIconsNearby();
updateParcelIcons();
}
// Script debug
@@ -1135,7 +1135,7 @@ void LLStatusBar::updateParcelIcons()
mLightshareBtn->setEnabled(has_lightshare);
//
// Script debug
- mScriptOut->setVisible(LLHUDIcon::iconsNearby());
+ mScriptOut->setVisible(LLHUDIcon::scriptIconsNearby());
// Script debug
}
else
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
index b369454a09..5ecc9f7f46 100644
--- a/indra/newview/llviewerobject.h
+++ b/indra/newview/llviewerobject.h
@@ -388,6 +388,9 @@ public:
void setIcon(LLViewerTexture* icon_image);
void clearIcon();
+ // Getter for HUD icon attached to the object
+ LLPointer getIcon() const { return mIcon; };
+
void markForUpdate(BOOL priority);
void updateVolume(const LLVolumeParams& volume_params);
virtual void updateSpatialExtents(LLVector4a& min, LLVector4a& max);