Baker Linden's group update, added with some care, won't compile,
Note: These changesets removed the some caps in llviewerregion.cpp, I have made a note of these, but left them in. Please take a look at the Singu Note:'s and Singu: TODO:'s when working on this.
This commit is contained in:
@@ -36,6 +36,7 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
#include "llappviewer.h" //For gFrameCount
|
||||||
#include "llagent.h"
|
#include "llagent.h"
|
||||||
#include "llui.h"
|
#include "llui.h"
|
||||||
#include "message.h"
|
#include "message.h"
|
||||||
@@ -44,6 +45,7 @@
|
|||||||
#include "llstatusbar.h"
|
#include "llstatusbar.h"
|
||||||
#include "lleconomy.h"
|
#include "lleconomy.h"
|
||||||
#include "llviewercontrol.h"
|
#include "llviewercontrol.h"
|
||||||
|
#include "llviewerregion.h"
|
||||||
#include "llviewerwindow.h"
|
#include "llviewerwindow.h"
|
||||||
#include "llfloaterdirectory.h"
|
#include "llfloaterdirectory.h"
|
||||||
#include "llfloatergroupinfo.h"
|
#include "llfloatergroupinfo.h"
|
||||||
@@ -821,6 +823,7 @@ void LLGroupMgrGroupData::cancelRoleChanges()
|
|||||||
|
|
||||||
LLGroupMgr::LLGroupMgr()
|
LLGroupMgr::LLGroupMgr()
|
||||||
{
|
{
|
||||||
|
mLastGroupMembersRequestFrame = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
LLGroupMgr::~LLGroupMgr()
|
LLGroupMgr::~LLGroupMgr()
|
||||||
@@ -1885,6 +1888,184 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Responder class for capability group management
|
||||||
|
class GroupMemberDataResponder : public LLHTTPClient::Responder
|
||||||
|
{ //Singu: TODO: make this comply with CT3 standards and compile
|
||||||
|
public:
|
||||||
|
GroupMemberDataResponder() {}
|
||||||
|
virtual ~GroupMemberDataResponder() {}
|
||||||
|
virtual void result(const LLSD& pContent);
|
||||||
|
virtual void error(U32 pStatus, const std::string& pReason);
|
||||||
|
private:
|
||||||
|
LLSD mMemberData;
|
||||||
|
};
|
||||||
|
|
||||||
|
void GroupMemberDataResponder::error(U32 pStatus, const std::string& pReason)
|
||||||
|
{
|
||||||
|
LL_WARNS("GrpMgr") << "Error receiving group member data." << LL_ENDL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupMemberDataResponder::result(const LLSD& content)
|
||||||
|
{
|
||||||
|
LLGroupMgr::processCapGroupMembersRequest(content);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// static
|
||||||
|
void LLGroupMgr::sendCapGroupMembersRequest(const LLUUID& group_id)
|
||||||
|
{
|
||||||
|
// Have we requested the information already this frame?
|
||||||
|
if (mLastGroupMembersRequestFrame == gFrameCount)
|
||||||
|
return;
|
||||||
|
|
||||||
|
LLViewerRegion* currentRegion = gAgent.getRegion();
|
||||||
|
// Thank you FS:Ansariel!
|
||||||
|
if (!currentRegion)
|
||||||
|
{
|
||||||
|
LL_WARNS("GrpMgr") << "Agent does not have a current region. Uh-oh!" << LL_ENDL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check to make sure we have our capabilities
|
||||||
|
if (!currentRegion->capabilitiesReceived())
|
||||||
|
{
|
||||||
|
LL_WARNS("GrpMgr") << " Capabilities not received!" << LL_ENDL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get our capability
|
||||||
|
std::string cap_url = currentRegion->getCapability("GroupMemberData");
|
||||||
|
|
||||||
|
// Thank you FS:Ansariel!
|
||||||
|
if (cap_url.empty())
|
||||||
|
{
|
||||||
|
LL_INFOS("GrpMgr") << "Region has no GroupMemberData capability. Falling back to UDP fetch." << LL_ENDL;
|
||||||
|
sendGroupMembersRequest(group_id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Post to our service. Add a body containing the group_id.
|
||||||
|
LLSD body = LLSD::emptyMap();
|
||||||
|
body["group_id"] = group_id;
|
||||||
|
|
||||||
|
LLHTTPClient::ResponderPtr grp_data_responder = new GroupMemberDataResponder();
|
||||||
|
|
||||||
|
//Singu: TODO: make this timeout after 5 minutes somehow.. AIHTTPTimeoutPolicy?
|
||||||
|
// This could take a while to finish, timeout after 5 minutes.
|
||||||
|
//LLHTTPClient::post(cap_url, body, grp_data_responder, LLSD(), 300);
|
||||||
|
LLHTTPClient::post(cap_url, body, grp_data_responder);
|
||||||
|
|
||||||
|
mLastGroupMembersRequestFrame = gFrameCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
// static
|
||||||
|
void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content)
|
||||||
|
{
|
||||||
|
// Did we get anything in content?
|
||||||
|
if (!content.size())
|
||||||
|
{
|
||||||
|
LL_DEBUGS("GrpMgr") << "No group member data received." << LL_ENDL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we have no members, there's no reason to do anything else
|
||||||
|
S32 num_members = content["member_count"];
|
||||||
|
if (num_members < 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
LLUUID group_id = content["group_id"].asUUID();
|
||||||
|
|
||||||
|
LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->getGroupData(group_id);
|
||||||
|
if (!group_datap)
|
||||||
|
{
|
||||||
|
LL_WARNS("GrpMgr") << "Received incorrect, possibly stale, group or request id" << LL_ENDL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
group_datap->mMemberCount = num_members;
|
||||||
|
|
||||||
|
LLSD member_list = content["members"];
|
||||||
|
LLSD titles = content["titles"];
|
||||||
|
LLSD defaults = content["defaults"];
|
||||||
|
|
||||||
|
std::string online_status;
|
||||||
|
std::string title;
|
||||||
|
S32 contribution;
|
||||||
|
U64 member_powers;
|
||||||
|
// If this is changed to a bool, make sure to change the LLGroupMemberData constructor
|
||||||
|
BOOL is_owner;
|
||||||
|
|
||||||
|
// Compute this once, rather than every time.
|
||||||
|
U64 default_powers = llstrtou64(defaults["default_powers"].asString().c_str(), NULL, 16);
|
||||||
|
|
||||||
|
LLSD::map_const_iterator member_iter_start = member_list.beginMap();
|
||||||
|
LLSD::map_const_iterator member_iter_end = member_list.endMap();
|
||||||
|
for ( ; member_iter_start != member_iter_end; ++member_iter_start)
|
||||||
|
{
|
||||||
|
// Reset defaults
|
||||||
|
online_status = "unknown";
|
||||||
|
title = titles[0].asString();
|
||||||
|
contribution = 0;
|
||||||
|
member_powers = default_powers;
|
||||||
|
is_owner = false;
|
||||||
|
|
||||||
|
const LLUUID member_id(member_iter_start->first);
|
||||||
|
LLSD member_info = member_iter_start->second;
|
||||||
|
|
||||||
|
if (member_info.has("last_login"))
|
||||||
|
{
|
||||||
|
online_status = member_info["last_login"].asString();
|
||||||
|
if (online_status == "Online")
|
||||||
|
online_status = LLTrans::getString("group_member_status_online");
|
||||||
|
else
|
||||||
|
formatDateString(online_status);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (member_info.has("title"))
|
||||||
|
title = titles[member_info["title"].asInteger()].asString();
|
||||||
|
|
||||||
|
if (member_info.has("powers"))
|
||||||
|
member_powers = llstrtou64(member_info["powers"].asString().c_str(), NULL, 16);
|
||||||
|
|
||||||
|
if (member_info.has("donated_square_meters"))
|
||||||
|
contribution = member_info["donated_square_meters"];
|
||||||
|
|
||||||
|
if (member_info.has("owner"))
|
||||||
|
is_owner = true;
|
||||||
|
|
||||||
|
LLGroupMemberData* data = new LLGroupMemberData(member_id,
|
||||||
|
contribution,
|
||||||
|
member_powers,
|
||||||
|
title,
|
||||||
|
online_status,
|
||||||
|
is_owner);
|
||||||
|
|
||||||
|
group_datap->mMembers[member_id] = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Technically, we have this data, but to prevent completely overhauling
|
||||||
|
// this entire system (it would be nice, but I don't have the time),
|
||||||
|
// I'm going to be dumb and just call services I most likely don't need
|
||||||
|
// with the thought being that the system might need it to be done.
|
||||||
|
//
|
||||||
|
// TODO: Refactor to reduce multiple calls for data we already have.
|
||||||
|
if (group_datap->mTitles.size() < 1)
|
||||||
|
LLGroupMgr::getInstance()->sendGroupTitlesRequest(group_id);
|
||||||
|
|
||||||
|
group_datap->mMemberDataComplete = TRUE;
|
||||||
|
group_datap->mMemberRequestID.setNull();
|
||||||
|
// Make the role-member data request
|
||||||
|
if (group_datap->mPendingRoleMemberRequest)
|
||||||
|
{
|
||||||
|
group_datap->mPendingRoleMemberRequest = FALSE;
|
||||||
|
LLGroupMgr::getInstance()->sendGroupRoleMembersRequest(group_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
group_datap->mChanged = TRUE;
|
||||||
|
LLGroupMgr::getInstance()->notifyObservers(GC_MEMBER_DATA);
|
||||||
|
}
|
||||||
|
|
||||||
void LLGroupMgr::sendGroupRoleChanges(const LLUUID& group_id)
|
void LLGroupMgr::sendGroupRoleChanges(const LLUUID& group_id)
|
||||||
{
|
{
|
||||||
lldebugs << "LLGroupMgr::sendGroupRoleChanges" << llendl;
|
lldebugs << "LLGroupMgr::sendGroupRoleChanges" << llendl;
|
||||||
|
|||||||
@@ -335,6 +335,9 @@ public:
|
|||||||
static void sendGroupMemberEjects(const LLUUID& group_id,
|
static void sendGroupMemberEjects(const LLUUID& group_id,
|
||||||
uuid_vec_t& member_ids);
|
uuid_vec_t& member_ids);
|
||||||
|
|
||||||
|
void sendCapGroupMembersRequest(const LLUUID& group_id);
|
||||||
|
static void processCapGroupMembersRequest(const LLSD& content);
|
||||||
|
|
||||||
void cancelGroupRoleChanges(const LLUUID& group_id);
|
void cancelGroupRoleChanges(const LLUUID& group_id);
|
||||||
|
|
||||||
static void processGroupPropertiesReply(LLMessageSystem* msg, void** data);
|
static void processGroupPropertiesReply(LLMessageSystem* msg, void** data);
|
||||||
@@ -370,6 +373,8 @@ private:
|
|||||||
typedef std::set<LLParticularGroupObserver*> observer_set_t;
|
typedef std::set<LLParticularGroupObserver*> observer_set_t;
|
||||||
typedef std::map<LLUUID,observer_set_t> observer_map_t;
|
typedef std::map<LLUUID,observer_set_t> observer_map_t;
|
||||||
observer_map_t mParticularObservers;
|
observer_map_t mParticularObservers;
|
||||||
|
|
||||||
|
S32 mLastGroupMembersRequestFrame;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -433,10 +433,9 @@ void LLPanelGroupGeneral::activate()
|
|||||||
LLGroupMgr::getInstance()->sendGroupTitlesRequest(mGroupID);
|
LLGroupMgr::getInstance()->sendGroupTitlesRequest(mGroupID);
|
||||||
LLGroupMgr::getInstance()->sendGroupPropertiesRequest(mGroupID);
|
LLGroupMgr::getInstance()->sendGroupPropertiesRequest(mGroupID);
|
||||||
|
|
||||||
|
|
||||||
if (!gdatap || !gdatap->isMemberDataComplete() )
|
if (!gdatap || !gdatap->isMemberDataComplete() )
|
||||||
{
|
{
|
||||||
LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID);
|
LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID);
|
||||||
}
|
}
|
||||||
|
|
||||||
mFirstUse = FALSE;
|
mFirstUse = FALSE;
|
||||||
@@ -901,7 +900,7 @@ void LLPanelGroupGeneral::updateMembers()
|
|||||||
for( ; mMemberProgress != gdatap->mMembers.end() && i<UPDATE_MEMBERS_PER_FRAME;
|
for( ; mMemberProgress != gdatap->mMembers.end() && i<UPDATE_MEMBERS_PER_FRAME;
|
||||||
++mMemberProgress, ++i)
|
++mMemberProgress, ++i)
|
||||||
{
|
{
|
||||||
//llinfos << "Adding " << iter->first << ", " << iter->second->getTitle() << llendl;
|
lldebugs << "Adding " << mMemberProgress->first << ", " << mMemberProgress->second->getTitle() << llendl;
|
||||||
LLGroupMemberData* member = mMemberProgress->second;
|
LLGroupMemberData* member = mMemberProgress->second;
|
||||||
if (!member)
|
if (!member)
|
||||||
{
|
{
|
||||||
@@ -941,15 +940,15 @@ void LLPanelGroupGeneral::updateMembers()
|
|||||||
}
|
}
|
||||||
sAllTime += all_timer.getElapsedTimeF32();
|
sAllTime += all_timer.getElapsedTimeF32();
|
||||||
|
|
||||||
llinfos << "Updated " << i << " of " << UPDATE_MEMBERS_PER_FRAME << "members in the list." << llendl;
|
lldebugs << "Updated " << i << " of " << UPDATE_MEMBERS_PER_FRAME << "members in the list." << llendl;
|
||||||
if (mMemberProgress == gdatap->mMembers.end())
|
if (mMemberProgress == gdatap->mMembers.end())
|
||||||
{
|
{
|
||||||
llinfos << " member list completed." << llendl;
|
lldebugs << " member list completed." << llendl;
|
||||||
mListVisibleMembers->setEnabled(TRUE);
|
mListVisibleMembers->setEnabled(TRUE);
|
||||||
|
|
||||||
llinfos << "All Time: " << sAllTime << llendl;
|
lldebugs << "All Time: " << sAllTime << llendl;
|
||||||
llinfos << "SD Time: " << sSDTime << llendl;
|
lldebugs << "SD Time: " << sSDTime << llendl;
|
||||||
llinfos << "Element Time: " << sElementTime << llendl;
|
lldebugs << "Element Time: " << sElementTime << llendl;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -472,8 +472,8 @@ void LLPanelGroupInvite::updateLists()
|
|||||||
if (!mPendingUpdate)
|
if (!mPendingUpdate)
|
||||||
{
|
{
|
||||||
LLGroupMgr::getInstance()->sendGroupPropertiesRequest(mImplementation->mGroupID);
|
LLGroupMgr::getInstance()->sendGroupPropertiesRequest(mImplementation->mGroupID);
|
||||||
LLGroupMgr::getInstance()->sendGroupMembersRequest(mImplementation->mGroupID);
|
|
||||||
LLGroupMgr::getInstance()->sendGroupRoleDataRequest(mImplementation->mGroupID);
|
LLGroupMgr::getInstance()->sendGroupRoleDataRequest(mImplementation->mGroupID);
|
||||||
|
LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mImplementation->mGroupID);
|
||||||
}
|
}
|
||||||
mPendingUpdate = TRUE;
|
mPendingUpdate = TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -402,7 +402,7 @@ void LLPanelGroupRoles::activate()
|
|||||||
|
|
||||||
if (!gdatap || !gdatap->isMemberDataComplete() )
|
if (!gdatap || !gdatap->isMemberDataComplete() )
|
||||||
{
|
{
|
||||||
LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID);
|
LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check role data.
|
// Check role data.
|
||||||
@@ -1980,7 +1980,7 @@ void LLPanelGroupRolesSubTab::update(LLGroupChange gc)
|
|||||||
|
|
||||||
if (!gdatap || !gdatap->isMemberDataComplete())
|
if (!gdatap || !gdatap->isMemberDataComplete())
|
||||||
{
|
{
|
||||||
LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID);
|
LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!gdatap || !gdatap->isRoleMemberDataComplete())
|
if (!gdatap || !gdatap->isRoleMemberDataComplete())
|
||||||
@@ -2572,7 +2572,7 @@ void LLPanelGroupActionsSubTab::handleActionSelect()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID);
|
LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gdatap->isRoleDataComplete())
|
if (gdatap->isRoleDataComplete())
|
||||||
|
|||||||
@@ -1564,7 +1564,6 @@ void LLViewerRegion::unpackRegionHandshake()
|
|||||||
msg->sendReliable(host);
|
msg->sendReliable(host);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
|
void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
|
||||||
{
|
{
|
||||||
capabilityNames.append("AgentState");
|
capabilityNames.append("AgentState");
|
||||||
@@ -1575,11 +1574,9 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
|
|||||||
capabilityNames.append("CopyInventoryFromNotecard");
|
capabilityNames.append("CopyInventoryFromNotecard");
|
||||||
capabilityNames.append("CreateInventoryCategory");
|
capabilityNames.append("CreateInventoryCategory");
|
||||||
capabilityNames.append("DispatchRegionInfo");
|
capabilityNames.append("DispatchRegionInfo");
|
||||||
|
capabilityNames.append("EnvironmentSettings");
|
||||||
capabilityNames.append("EstateChangeInfo");
|
capabilityNames.append("EstateChangeInfo");
|
||||||
capabilityNames.append("EventQueueGet");
|
capabilityNames.append("EventQueueGet");
|
||||||
capabilityNames.append("EnvironmentSettings");
|
|
||||||
/*capabilityNames.append("ObjectMedia");
|
|
||||||
capabilityNames.append("ObjectMediaNavigate");*/
|
|
||||||
|
|
||||||
if (gSavedSettings.getBOOL("UseHTTPInventory")) //Caps suffixed with 2 by LL. Don't update until rest of fetch system is updated first.
|
if (gSavedSettings.getBOOL("UseHTTPInventory")) //Caps suffixed with 2 by LL. Don't update until rest of fetch system is updated first.
|
||||||
{
|
{
|
||||||
@@ -1590,12 +1587,12 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
|
|||||||
}
|
}
|
||||||
|
|
||||||
capabilityNames.append("GetDisplayNames");
|
capabilityNames.append("GetDisplayNames");
|
||||||
capabilityNames.append("GetTexture");
|
|
||||||
capabilityNames.append("GetMesh");
|
capabilityNames.append("GetMesh");
|
||||||
capabilityNames.append("GetObjectCost");
|
capabilityNames.append("GetObjectCost");
|
||||||
capabilityNames.append("GetObjectPhysicsData");
|
capabilityNames.append("GetObjectPhysicsData");
|
||||||
|
capabilityNames.append("GetTexture");
|
||||||
|
capabilityNames.append("GroupMemberData");
|
||||||
capabilityNames.append("GroupProposalBallot");
|
capabilityNames.append("GroupProposalBallot");
|
||||||
|
|
||||||
capabilityNames.append("HomeLocation");
|
capabilityNames.append("HomeLocation");
|
||||||
//capabilityNames.append("LandResources"); //Script limits (llfloaterscriptlimits.cpp)
|
//capabilityNames.append("LandResources"); //Script limits (llfloaterscriptlimits.cpp)
|
||||||
capabilityNames.append("MapLayer");
|
capabilityNames.append("MapLayer");
|
||||||
@@ -1605,9 +1602,11 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
|
|||||||
#endif //MESH_IMPORT
|
#endif //MESH_IMPORT
|
||||||
capabilityNames.append("NavMeshGenerationStatus");
|
capabilityNames.append("NavMeshGenerationStatus");
|
||||||
capabilityNames.append("NewFileAgentInventory");
|
capabilityNames.append("NewFileAgentInventory");
|
||||||
|
/*capabilityNames.append("ObjectMedia");
|
||||||
|
capabilityNames.append("ObjectMediaNavigate");*/
|
||||||
capabilityNames.append("ObjectNavMeshProperties");
|
capabilityNames.append("ObjectNavMeshProperties");
|
||||||
|
capabilityNames.append("ParcelNavigateMedia"); //Singu Note: Removed by Baker, do we need this?
|
||||||
capabilityNames.append("ParcelPropertiesUpdate");
|
capabilityNames.append("ParcelPropertiesUpdate");
|
||||||
capabilityNames.append("ParcelNavigateMedia");
|
|
||||||
capabilityNames.append("ParcelVoiceInfoRequest");
|
capabilityNames.append("ParcelVoiceInfoRequest");
|
||||||
capabilityNames.append("ProductInfoRequest");
|
capabilityNames.append("ProductInfoRequest");
|
||||||
capabilityNames.append("ProvisionVoiceAccountRequest");
|
capabilityNames.append("ProvisionVoiceAccountRequest");
|
||||||
@@ -1621,10 +1620,10 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
|
|||||||
capabilityNames.append("SendUserReport");
|
capabilityNames.append("SendUserReport");
|
||||||
capabilityNames.append("SendUserReportWithScreenshot");
|
capabilityNames.append("SendUserReportWithScreenshot");
|
||||||
capabilityNames.append("ServerReleaseNotes");
|
capabilityNames.append("ServerReleaseNotes");
|
||||||
capabilityNames.append("SimConsole");
|
|
||||||
capabilityNames.append("SimulatorFeatures");
|
|
||||||
capabilityNames.append("SetDisplayName");
|
capabilityNames.append("SetDisplayName");
|
||||||
|
capabilityNames.append("SimConsole"); //Singu: TODO: Removed by Baker, find out if sim console will work without this.
|
||||||
capabilityNames.append("SimConsoleAsync");
|
capabilityNames.append("SimConsoleAsync");
|
||||||
|
capabilityNames.append("SimulatorFeatures");
|
||||||
capabilityNames.append("StartGroupProposal");
|
capabilityNames.append("StartGroupProposal");
|
||||||
capabilityNames.append("TerrainNavMeshProperties");
|
capabilityNames.append("TerrainNavMeshProperties");
|
||||||
capabilityNames.append("TextureStats");
|
capabilityNames.append("TextureStats");
|
||||||
@@ -1632,10 +1631,10 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
|
|||||||
capabilityNames.append("UpdateAgentInformation");
|
capabilityNames.append("UpdateAgentInformation");
|
||||||
capabilityNames.append("UpdateAgentLanguage");
|
capabilityNames.append("UpdateAgentLanguage");
|
||||||
capabilityNames.append("UpdateGestureAgentInventory");
|
capabilityNames.append("UpdateGestureAgentInventory");
|
||||||
capabilityNames.append("UpdateNotecardAgentInventory");
|
|
||||||
capabilityNames.append("UpdateScriptAgent");
|
|
||||||
capabilityNames.append("UpdateGestureTaskInventory");
|
capabilityNames.append("UpdateGestureTaskInventory");
|
||||||
|
capabilityNames.append("UpdateNotecardAgentInventory");
|
||||||
capabilityNames.append("UpdateNotecardTaskInventory");
|
capabilityNames.append("UpdateNotecardTaskInventory");
|
||||||
|
capabilityNames.append("UpdateScriptAgent");
|
||||||
capabilityNames.append("UpdateScriptTask");
|
capabilityNames.append("UpdateScriptTask");
|
||||||
capabilityNames.append("UploadBakedTexture");
|
capabilityNames.append("UploadBakedTexture");
|
||||||
//capabilityNames.append("ViewerMetrics");
|
//capabilityNames.append("ViewerMetrics");
|
||||||
|
|||||||
Reference in New Issue
Block a user