Improved advanced hover tips for objects:
* Get rid of old name cache that wasn't even needed * Use boost::bind to update the hovertip once we received an unknown name * Added some possible crash fixesmeow-7.2.2
parent
0a952efff5
commit
b6c3ec4cb6
|
|
@ -994,8 +994,10 @@ BOOL LLToolPie::handleTooltipLand(std::string line, std::string tooltip_msg)
|
|||
|
||||
BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string line, std::string tooltip_msg)
|
||||
{
|
||||
// <FS:Ansariel> Advanced object tooltips
|
||||
const char* const DEFAULT_DESC = "(No Description)";
|
||||
static LLCachedControl<bool> advancedToolTip(gSavedSettings, "FSAdvancedTooltips");
|
||||
// </FS:Ansariel> Advanced object tooltips
|
||||
|
||||
if ( hover_object->isHUDAttachment() )
|
||||
{
|
||||
|
|
@ -1150,6 +1152,7 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l
|
|||
tooltip_msg.append( nodep->mName );
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Advanced object tooltips
|
||||
if (advancedToolTip)
|
||||
{
|
||||
// Set description
|
||||
|
|
@ -1159,7 +1162,6 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l
|
|||
}
|
||||
|
||||
// Set owner name
|
||||
std::string final_name;
|
||||
std::string full_name;
|
||||
|
||||
if (nodep->mValid)
|
||||
|
|
@ -1167,25 +1169,25 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l
|
|||
LLUUID owner = nodep->mPermissions->getOwner();
|
||||
if (owner.notNull())
|
||||
{
|
||||
|
||||
if (!gCacheName->getFullName(LLSelectMgr::getInstance()->getHoverNode()->mPermissions->getOwner(), full_name))
|
||||
{
|
||||
full_name = LLTrans::getString("LoadingData");
|
||||
}
|
||||
|
||||
LLAvatarName av_name;
|
||||
if (LLAvatarNameCache::useDisplayNames() &&
|
||||
LLAvatarNameCache::get(owner, &av_name))
|
||||
if (LLAvatarNameCache::get(owner, &av_name))
|
||||
{
|
||||
final_name = (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) ? av_name.getCompleteName() : RlvStrings::getAnonym(av_name);
|
||||
full_name = (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) ? av_name.getCompleteName() : RlvStrings::getAnonym(av_name);
|
||||
}
|
||||
else
|
||||
{
|
||||
final_name = (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) ? full_name : RlvStrings::getAnonym(full_name);
|
||||
full_name = LLTrans::getString("LoadingData");
|
||||
|
||||
// If we don't have the avatar name already, let the
|
||||
// avatar name cache retrieve it and simply invoke
|
||||
// us again after it received the name.
|
||||
std::string l;
|
||||
std::string m;
|
||||
LLAvatarNameCache::get(owner, boost::bind(&LLToolPie::handleTooltipObject, this, hover_object, l, m));
|
||||
}
|
||||
|
||||
// Owner name
|
||||
tooltip_msg.append("\n" + LLTrans::getString("TooltipOwner") + " " + final_name);
|
||||
tooltip_msg.append("\n" + LLTrans::getString("TooltipOwner") + " " + full_name);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1231,8 +1233,7 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l
|
|||
// Get prim count
|
||||
S32 prim_count = LLSelectMgr::getInstance()->getHoverObjects()->getObjectCount();
|
||||
args["COUNT"] = llformat("%d", prim_count);
|
||||
std::string primlabel = LLTrans::getString("TooltipPrimCount");
|
||||
LLStringUtil::format(primlabel, args);
|
||||
std::string primlabel = LLTrans::getString("TooltipPrimCount", args);
|
||||
tooltip_msg.append("\n" + primlabel);
|
||||
|
||||
// Display the PE weight for an object if mesh is enabled
|
||||
|
|
@ -1240,15 +1241,15 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l
|
|||
{
|
||||
// Ansariel: What a bummer! PE is only available for
|
||||
// objects in the same region as you!
|
||||
if (hover_object->getRegion()->getRegionID() == gAgent.getRegion()->getRegionID())
|
||||
if (hover_object->getRegion() && gAgent.getRegion() &&
|
||||
hover_object->getRegion()->getRegionID() == gAgent.getRegion()->getRegionID())
|
||||
{
|
||||
S32 link_cost = LLSelectMgr::getInstance()->getHoverObjects()->getSelectedLinksetCost();
|
||||
if (link_cost > 0)
|
||||
{
|
||||
args.clear();
|
||||
args["PEWEIGHT"] = llformat("%d", link_cost);
|
||||
std::string pelabel = LLTrans::getString("TooltipPrimEquivalent");
|
||||
LLStringUtil::format(pelabel, args);
|
||||
std::string pelabel = LLTrans::getString("TooltipPrimEquivalent", args);
|
||||
tooltip_msg.append(pelabel);
|
||||
}
|
||||
else
|
||||
|
|
@ -1263,22 +1264,26 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l
|
|||
}
|
||||
|
||||
// Get position
|
||||
LLViewerRegion *region = gAgent.getRegion();
|
||||
LLVector3 relPositionObject = region->getPosRegionFromGlobal(hover_object->getPositionGlobal());
|
||||
args.clear();
|
||||
args["POSITION"] = llformat("<%.02f, %.02f, %.02f>", relPositionObject.mV[VX], relPositionObject.mV[VY], relPositionObject.mV[VZ]);
|
||||
std::string positionlabel = LLTrans::getString("TooltipPosition");
|
||||
LLStringUtil::format(positionlabel, args);
|
||||
tooltip_msg.append("\n" + positionlabel);
|
||||
LLViewerRegion* region = gAgent.getRegion();
|
||||
if (region)
|
||||
{
|
||||
LLVector3 relPositionObject = region->getPosRegionFromGlobal(hover_object->getPositionGlobal());
|
||||
args.clear();
|
||||
args["POSITION"] = llformat("<%.02f, %.02f, %.02f>", relPositionObject.mV[VX], relPositionObject.mV[VY], relPositionObject.mV[VZ]);
|
||||
std::string positionlabel = LLTrans::getString("TooltipPosition");
|
||||
LLStringUtil::format(positionlabel, args);
|
||||
tooltip_msg.append("\n" + positionlabel);
|
||||
|
||||
// Get distance
|
||||
F32 distance = (relPositionObject - region->getPosRegionFromGlobal(gAgent.getPositionGlobal())).magVec();
|
||||
args.clear();
|
||||
args["DISTANCE"] = llformat("%.02f", distance);
|
||||
std::string distancelabel = LLTrans::getString("TooltipDistance");
|
||||
LLStringUtil::format(distancelabel, args);
|
||||
tooltip_msg.append("\n" + distancelabel);
|
||||
// Get distance
|
||||
F32 distance = (relPositionObject - region->getPosRegionFromGlobal(gAgent.getPositionGlobal())).magVec();
|
||||
args.clear();
|
||||
args["DISTANCE"] = llformat("%.02f", distance);
|
||||
std::string distancelabel = LLTrans::getString("TooltipDistance");
|
||||
LLStringUtil::format(distancelabel, args);
|
||||
tooltip_msg.append("\n" + distancelabel);
|
||||
}
|
||||
}
|
||||
// </FS:Ansariel> Advanced object tooltips
|
||||
|
||||
bool has_media = false;
|
||||
bool is_time_based_media = false;
|
||||
|
|
|
|||
Loading…
Reference in New Issue