Only show script error icon in statusbar if there are script errors and not also errors while loading mesh LODs

Ansariel 2013-03-12 16:31:26 +01:00
parent 62c99411e5
commit e1b814fff3
5 changed files with 49 additions and 4 deletions

View File

@ -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));
// <FS:Ansariel> Mark script error icons
objectp->getIcon()->setScriptError();
// </FS:Ansariel> Mark script error icons
floater_label = llformat("%s (%.0f, %.0f, %.0f)",
user_name.c_str(),
objectp->getPositionRegion().mV[VX],

View File

@ -61,6 +61,10 @@ static F32 calc_bouncy_animation(F32 x)
//-----------------------------------------------------------------------------
LLHUDIcon::icon_instance_t LLHUDIcon::sIconInstances;
// <FS:Ansariel> Mark script error icons
LLHUDIcon::icon_instance_t LLHUDIcon::sScriptErrorIconInstances;
// </FS:Ansariel> Mark script error icons
LLHUDIcon::LLHUDIcon(const U8 type) :
LLHUDObject(type),
mImagep(NULL),
@ -390,6 +394,17 @@ void LLHUDIcon::cleanupDeadIcons()
{
sIconInstances.erase(found_it);
}
// <FS:Ansariel> 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);
}
}
// </FS:Ansariel> Mark script error icons
}
}
@ -398,3 +413,17 @@ S32 LLHUDIcon::getNumInstances()
{
return (S32)sIconInstances.size();
}
// <FS:Ansariel> Mark script error icons
void LLHUDIcon::setScriptError()
{
mScriptError = true;
sScriptErrorIconInstances.push_back(this);
}
//static
BOOL LLHUDIcon::scriptIconsNearby()
{
return !sScriptErrorIconInstances.empty();
}
// </FS:Ansariel> Mark script error icons

View File

@ -75,6 +75,11 @@ public:
BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end, LLVector3* intersection);
// <FS:Ansariel> Mark script error icons
void setScriptError();
static BOOL scriptIconsNearby();
// </FS:Ansariel> Mark script error icons
protected:
LLHUDIcon(const U8 type);
~LLHUDIcon();
@ -92,6 +97,11 @@ private:
typedef std::vector<LLPointer<LLHUDIcon> > icon_instance_t;
static icon_instance_t sIconInstances;
// <FS:Ansariel> Mark script error icons
bool mScriptError;
static icon_instance_t sScriptErrorIconInstances;
// </FS:Ansariel> Mark script error icons
};
#endif // LL_LLHUDICON_H

View File

@ -362,7 +362,7 @@ BOOL LLStatusBar::postBuild()
//mScriptOut = getChildView("scriptout");
mScriptOut = getChild<LLIconCtrl>("scriptout");
mScriptOut->setMouseDownCallback(boost::bind(&LLFloaterScriptDebug::show, LLUUID::null));
mNearbyIcons = LLHUDIcon::iconsNearby();
mNearbyIcons = LLHUDIcon::scriptIconsNearby();
// </FS:Ansariel> Script debug
mParcelInfoPanel = getChild<LLPanel>("parcel_info_panel");
@ -559,9 +559,9 @@ void LLStatusBar::refresh()
mParcelInfoText->setEnabled(!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC));
// <FS:Ansariel> Script debug
if (mNearbyIcons != LLHUDIcon::iconsNearby())
if (mNearbyIcons != LLHUDIcon::scriptIconsNearby())
{
mNearbyIcons = LLHUDIcon::iconsNearby();
mNearbyIcons = LLHUDIcon::scriptIconsNearby();
updateParcelIcons();
}
// </FS:Ansariel> Script debug
@ -1135,7 +1135,7 @@ void LLStatusBar::updateParcelIcons()
mLightshareBtn->setEnabled(has_lightshare);
// </FS:CR>
// <FS:Ansariel> Script debug
mScriptOut->setVisible(LLHUDIcon::iconsNearby());
mScriptOut->setVisible(LLHUDIcon::scriptIconsNearby());
// </FS:Ansariel> Script debug
}
else

View File

@ -388,6 +388,9 @@ public:
void setIcon(LLViewerTexture* icon_image);
void clearIcon();
// <FS:Ansariel> Getter for HUD icon attached to the object
LLPointer<LLHUDIcon> getIcon() const { return mIcon; };
void markForUpdate(BOOL priority);
void updateVolume(const LLVolumeParams& volume_params);
virtual void updateSpatialExtents(LLVector4a& min, LLVector4a& max);