FIRE-12344: Added avatar mark options to Firestorm radar

master
Ansariel 2014-03-06 12:41:42 +01:00
parent 4ae0e55807
commit ccfc7e249a
5 changed files with 165 additions and 15 deletions

View File

@ -39,6 +39,7 @@
#include "llagentdata.h" // for gAgentID
#include "llavataractions.h"
#include "llcallingcard.h" // for LLAvatarTracker
#include "llnetmap.h"
#include "llviewermenu.h" // for gMenuHolder
#include "rlvhandler.h"
@ -85,6 +86,9 @@ LLContextMenu* FSRadarMenu::createMenu()
registrar.add("Avatar.AddToContactSet", boost::bind(&FSRadarMenu::addToContactSet, this));
registrar.add("Nearby.People.TeleportToAvatar", boost::bind(&FSRadarMenu::teleportToAvatar, this));
registrar.add("Nearby.People.TrackAvatar", boost::bind(&FSRadarMenu::onTrackAvatarMenuItemClick, this));
registrar.add("Nearby.People.SetAvatarMarkColor", boost::bind(&LLNetMap::setAvatarMarkColor, id, _2));
registrar.add("Nearby.People.ClearAvatarMarkColor", boost::bind(&LLNetMap::clearAvatarMarkColor, id));
registrar.add("Nearby.People.ClearAllAvatarMarkColors", boost::bind(&LLNetMap::clearAvatarMarkColors ));
enable_registrar.add("Avatar.EnableItem", boost::bind(&FSRadarMenu::enableContextMenuItem, this, _2));
enable_registrar.add("Avatar.CheckItem", boost::bind(&FSRadarMenu::checkContextMenuItem, this, _2));
@ -119,6 +123,9 @@ LLContextMenu* FSRadarMenu::createMenu()
registrar.add("Avatar.Derender", boost::bind(&LLAvatarActions::derenderMultiple, mUUIDs, false));
registrar.add("Avatar.DerenderPermanent", boost::bind(&LLAvatarActions::derenderMultiple, mUUIDs, true));
registrar.add("Avatar.AddToContactSet", boost::bind(&FSRadarMenu::addToContactSet, this));
registrar.add("Nearby.People.SetAvatarMarkColor", boost::bind(&LLNetMap::setAvatarMarkColors, mUUIDs, _2));
registrar.add("Nearby.People.ClearAvatarMarkColor", boost::bind(&LLNetMap::clearAvatarMarkColors, mUUIDs));
registrar.add("Nearby.People.ClearAllAvatarMarkColors", boost::bind(&LLNetMap::clearAvatarMarkColors ));
enable_registrar.add("Avatar.EnableItem", boost::bind(&FSRadarMenu::enableContextMenuItem, this, _2));
enable_registrar.add("Avatar.VisibleFreezeEject", boost::bind(&LLAvatarActions::canLandFreezeOrEjectMultiple, mUUIDs, false));

View File

@ -1718,31 +1718,20 @@ void LLNetMap::handleZoom(const LLSD& userdata)
// <FS:Ansariel> Mark avatar feature
void LLNetMap::handleMark(const LLSD& userdata)
{
// Use the name as color definition name from colors.xml
LLColor4 color = LLUIColorTable::instance().getColor(userdata.asString(), LLColor4::green);
for (uuid_vec_t::iterator it = mClosestAgentsRightClick.begin(); it != mClosestAgentsRightClick.end(); ++it)
{
sAvatarMarksMap[*it] = color;
}
setAvatarMarkColors(mClosestAgentsRightClick, userdata);
}
void LLNetMap::handleClearMark()
{
for (uuid_vec_t::iterator it = mClosestAgentsRightClick.begin(); it != mClosestAgentsRightClick.end(); ++it)
{
avatar_marks_map_t::iterator found = sAvatarMarksMap.find(*it);
if (found != sAvatarMarksMap.end())
{
sAvatarMarksMap.erase(found);
}
}
clearAvatarMarkColors(mClosestAgentsRightClick);
}
void LLNetMap::handleClearMarks()
{
sAvatarMarksMap.clear();
clearAvatarMarkColors();
}
// static
bool LLNetMap::getAvatarMarkColor(const LLUUID& avatar_id, LLColor4& color)
{
avatar_marks_map_t::iterator found = sAvatarMarksMap.find(avatar_id);
@ -1754,6 +1743,52 @@ bool LLNetMap::getAvatarMarkColor(const LLUUID& avatar_id, LLColor4& color)
return false;
}
// static
void LLNetMap::setAvatarMarkColor(const LLUUID& avatar_id, const LLSD& color)
{
uuid_vec_t ids;
ids.push_back(avatar_id);
setAvatarMarkColors(ids, color);
}
// static
void LLNetMap::setAvatarMarkColors(const uuid_vec_t& avatar_ids, const LLSD& color)
{
// Use the name as color definition name from colors.xml
LLColor4 mark_color = LLUIColorTable::instance().getColor(color.asString(), LLColor4::green);
for (uuid_vec_t::const_iterator it = avatar_ids.begin(); it != avatar_ids.end(); ++it)
{
sAvatarMarksMap[*it] = mark_color;
}
}
// static
void LLNetMap::clearAvatarMarkColor(const LLUUID& avatar_id)
{
uuid_vec_t ids;
ids.push_back(avatar_id);
clearAvatarMarkColors(ids);
}
// static
void LLNetMap::clearAvatarMarkColors(const uuid_vec_t& avatar_ids)
{
for (uuid_vec_t::const_iterator it = avatar_ids.begin(); it != avatar_ids.end(); ++it)
{
avatar_marks_map_t::iterator found = sAvatarMarksMap.find(*it);
if (found != sAvatarMarksMap.end())
{
sAvatarMarksMap.erase(found);
}
}
}
// static
void LLNetMap::clearAvatarMarkColors()
{
sAvatarMarksMap.clear();
}
//</FS:Ansariel>
void LLNetMap::handleCam()

View File

@ -102,6 +102,12 @@ public:
// <FS:Ansariel> Mark avatar feature
static bool getAvatarMarkColor(const LLUUID& avatar_id, LLColor4& color);
static void setAvatarMarkColor(const LLUUID& avatar_id, const LLSD& color);
static void setAvatarMarkColors(const uuid_vec_t& avatar_ids, const LLSD& color);
static void clearAvatarMarkColor(const LLUUID& avatar_id);
static void clearAvatarMarkColors(const uuid_vec_t& avatar_ids);
static void clearAvatarMarkColors();
// </FS:Ansariel>
private:
const LLVector3d& getObjectImageCenterGlobal() { return mObjectImageCenterGlobal; }

View File

@ -70,6 +70,57 @@
<menu_item_call.on_click
function="Nearby.People.TrackAvatar" />
</menu_item_call>
<menu name="MarkAvatar" label="Mark...">
<menu_item_call
label="Red"
name="MarkRed">
<menu_item_call.on_click
function="Nearby.People.SetAvatarMarkColor"
parameter="Red"/>
</menu_item_call>
<menu_item_call
label="Green"
name="MarkGreen">
<menu_item_call.on_click
function="Nearby.People.SetAvatarMarkColor"
parameter="Green"/>
</menu_item_call>
<menu_item_call
label="Blue"
name="MarkBlue">
<menu_item_call.on_click
function="Nearby.People.SetAvatarMarkColor"
parameter="Blue"/>
</menu_item_call>
<menu_item_call
label="Purple"
name="MarkPurple">
<menu_item_call.on_click
function="Nearby.People.SetAvatarMarkColor"
parameter="Purple"/>
</menu_item_call>
<menu_item_call
label="Yellow"
name="MarkYellow">
<menu_item_call.on_click
function="Nearby.People.SetAvatarMarkColor"
parameter="LtYellow"/>
</menu_item_call>
<menu_item_separator/>
<menu_item_call
label="Clear Mark"
name="Clear Mark">
<menu_item_call.on_click
function="Nearby.People.ClearAvatarMarkColor"/>
</menu_item_call>
<menu_item_separator/>
<menu_item_call
label="Clear Marks"
name="Clear Marks">
<menu_item_call.on_click
function="Nearby.People.ClearAllAvatarMarkColors"/>
</menu_item_call>
</menu>
<menu_item_call
label="Share"
layout="topleft"

View File

@ -48,6 +48,57 @@
function="Avatar.EnableItem"
parameter="can_call" />
</menu_item_call>
<menu name="MarkAvatar" label="Mark...">
<menu_item_call
label="Red"
name="MarkRed">
<menu_item_call.on_click
function="Nearby.People.SetAvatarMarkColor"
parameter="Red"/>
</menu_item_call>
<menu_item_call
label="Green"
name="MarkGreen">
<menu_item_call.on_click
function="Nearby.People.SetAvatarMarkColor"
parameter="Green"/>
</menu_item_call>
<menu_item_call
label="Blue"
name="MarkBlue">
<menu_item_call.on_click
function="Nearby.People.SetAvatarMarkColor"
parameter="Blue"/>
</menu_item_call>
<menu_item_call
label="Purple"
name="MarkPurple">
<menu_item_call.on_click
function="Nearby.People.SetAvatarMarkColor"
parameter="Purple"/>
</menu_item_call>
<menu_item_call
label="Yellow"
name="MarkYellow">
<menu_item_call.on_click
function="Nearby.People.SetAvatarMarkColor"
parameter="LtYellow"/>
</menu_item_call>
<menu_item_separator/>
<menu_item_call
label="Clear Mark"
name="Clear Mark">
<menu_item_call.on_click
function="Nearby.People.ClearAvatarMarkColor"/>
</menu_item_call>
<menu_item_separator/>
<menu_item_call
label="Clear Marks"
name="Clear Marks">
<menu_item_call.on_click
function="Nearby.People.ClearAllAvatarMarkColors"/>
</menu_item_call>
</menu>
<menu_item_call
enabled="false"
label="Share"