本文整理汇总了C#中IClientAPI.SendDirPeopleReply方法的典型用法代码示例。如果您正苦于以下问题:C# IClientAPI.SendDirPeopleReply方法的具体用法?C# IClientAPI.SendDirPeopleReply怎么用?C# IClientAPI.SendDirPeopleReply使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IClientAPI
的用法示例。
在下文中一共展示了IClientAPI.SendDirPeopleReply方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DirPeopleQuery
//TODO: Flagged to optimize
public void DirPeopleQuery(IClientAPI remoteClient, UUID queryID,
string queryText, uint queryFlags, int queryStart)
{
//Find the user accounts
List<UserAccount> accounts = m_Scenes[0].UserAccountService.GetUserAccounts(m_Scenes[0].RegionInfo.ScopeID, queryText);
DirPeopleReplyData[] data =
new DirPeopleReplyData[accounts.Count];
int i = 0;
foreach (UserAccount item in accounts)
{
//This is really bad, we should not be searching for all of these people again in the Profile service
IUserProfileInfo UserProfile = ProfileFrontend.GetUserProfile(item.PrincipalID);
if (UserProfile == null)
{
data[i] = new DirPeopleReplyData();
data[i].agentID = item.PrincipalID;
data[i].firstName = item.FirstName;
data[i].lastName = item.LastName;
if (GroupsModule == null)
data[i].group = "";
else
{
data[i].group = "";
GroupMembershipData[] memberships = GroupsModule.GetMembershipData(item.PrincipalID);
foreach (GroupMembershipData membership in memberships)
{
if (membership.Active)
data[i].group = membership.GroupName;
}
}
//Then we have to pull the GUI to see if the user is online or not
OpenSim.Services.Interfaces.GridUserInfo Pinfo = m_Scenes[0].GridUserService.GetGridUserInfo(item.PrincipalID.ToString());
if (Pinfo != null && Pinfo.Online) //If it is null, they are offline
data[i].online = true;
data[i].reputation = 0;
i++;
}
else if (UserProfile.AllowPublish) //Check whether they want to be in search or not
{
data[i] = new DirPeopleReplyData();
data[i].agentID = item.PrincipalID;
data[i].firstName = item.FirstName;
data[i].lastName = item.LastName;
if (GroupsModule == null)
data[i].group = "";
else
{
data[i].group = "";
//Check what group they have set
GroupMembershipData[] memberships = GroupsModule.GetMembershipData(item.PrincipalID);
foreach (GroupMembershipData membership in memberships)
{
if (membership.Active)
data[i].group = membership.GroupName;
}
}
//Then we have to pull the GUI to see if the user is online or not
OpenSim.Services.Interfaces.GridUserInfo Pinfo = m_Scenes[0].GridUserService.GetGridUserInfo(item.PrincipalID.ToString());
if (Pinfo != null && Pinfo.Online)
data[i].online = true;
data[i].reputation = 0;
i++;
}
}
//Only send 10 packets at a time
if (data.Length > 10)
{
DirPeopleReplyData[] retvals = new DirPeopleReplyData[10];
i = 0;
foreach (DirPeopleReplyData d in data)
{
retvals[i] = d;
i++;
if (i == 10)
{
remoteClient.SendDirPeopleReply(queryID, retvals);
i = 0;
if (data.Length - i < 10)
retvals = new DirPeopleReplyData[data.Length - i];
else
retvals = new DirPeopleReplyData[10];
}
}
//Send the remaining
if(retvals.Length != 0)
remoteClient.SendDirPeopleReply(queryID, retvals);
}
else //Send all if under 10
remoteClient.SendDirPeopleReply(queryID, data);
}
示例2: DirPeopleQuery
public void DirPeopleQuery(IClientAPI remoteClient, UUID queryID,
string queryText, uint queryFlags, int queryStart)
{
queryText = queryText.Trim(); // newer viewers sometimes append a space
List<AvatarPickerAvatar> AvatarResponses =
new List<AvatarPickerAvatar>();
AvatarResponses = m_Scenes[0].SceneGridService.
GenerateAgentPickerRequestResponse(queryID, queryText);
DirPeopleReplyData[] data =
new DirPeopleReplyData[AvatarResponses.Count];
int i = 0;
foreach (AvatarPickerAvatar item in AvatarResponses)
{
data[i] = new DirPeopleReplyData();
data[i].agentID = item.AvatarID;
data[i].firstName = item.firstName;
data[i].lastName = item.lastName;
data[i].group = String.Empty;
data[i].online = false;
data[i].reputation = 0;
i++;
}
remoteClient.SendDirPeopleReply(queryID, data);
}
示例3: DirPeopleQuery
//TODO: Flagged to optimize
public void DirPeopleQuery(IClientAPI remoteClient, UUID queryID,
string queryText, uint queryFlags, int queryStart)
{
List<UserAccount> accounts = m_Scenes[0].UserAccountService.GetUserAccounts(m_Scenes[0].RegionInfo.ScopeID, queryText);
DirPeopleReplyData[] data =
new DirPeopleReplyData[accounts.Count];
int i = 0;
foreach (UserAccount item in accounts)
{
IUserProfileInfo UserProfile = ProfileFrontend.GetUserProfile(item.PrincipalID);
if (UserProfile == null)
{
data[i] = new DirPeopleReplyData();
data[i].agentID = item.PrincipalID;
data[i].firstName = item.FirstName;
data[i].lastName = item.LastName;
if (GroupsModule == null)
data[i].group = "";
else
{
data[i].group = "";
GroupMembershipData[] memberships = GroupsModule.GetMembershipData(item.PrincipalID);
foreach (GroupMembershipData membership in memberships)
{
if (membership.Active)
data[i].group = membership.GroupName;
}
}
OpenSim.Services.Interfaces.GridUserInfo Pinfo = m_scene.GridUserService.GetGridUserInfo(item.PrincipalID.ToString());
if (Pinfo != null)
data[i].online = true;
data[i].reputation = 0;
i++;
}
else if (UserProfile.AllowPublish)
{
data[i] = new DirPeopleReplyData();
data[i].agentID = item.PrincipalID;
data[i].firstName = item.FirstName;
data[i].lastName = item.LastName;
if (GroupsModule == null)
data[i].group = "";
else
{
data[i].group = "";
GroupMembershipData[] memberships = GroupsModule.GetMembershipData(item.PrincipalID);
foreach (GroupMembershipData membership in memberships)
{
if (membership.Active)
data[i].group = membership.GroupName;
}
}
OpenSim.Services.Interfaces.GridUserInfo Pinfo = m_scene.GridUserService.GetGridUserInfo(item.PrincipalID.ToString());
if (Pinfo != null)
data[i].online = true;
data[i].reputation = 0;
i++;
}
}
if (data.Length > 10)
{
DirPeopleReplyData[] retvals = new DirPeopleReplyData[10];
i = 0;
foreach (DirPeopleReplyData d in data)
{
retvals[i] = d;
i++;
if (i == 10)
{
remoteClient.SendDirPeopleReply(queryID, retvals);
i = 0;
if (data.Length - i < 10)
{
retvals = new DirPeopleReplyData[data.Length - i];
}
else
{
retvals = new DirPeopleReplyData[10];
}
}
}
remoteClient.SendDirPeopleReply(queryID, retvals);
}
else
remoteClient.SendDirPeopleReply(queryID, data);
}
示例4: DirPeopleQuery
public void DirPeopleQuery(IClientAPI remoteClient, UUID queryID,
string queryText, uint queryFlags, int queryStart)
{
List<UserAccount> accounts = m_Scenes[0].UserAccountService.GetUserAccounts(m_Scenes[0].RegionInfo.ScopeID, queryText);
DirPeopleReplyData[] data = new DirPeopleReplyData[accounts.Count];
int i = 0;
foreach (UserAccount item in accounts)
{
if ((item.UserFlags&0x01)==1) {
data[i] = new DirPeopleReplyData();
data[i].agentID = item.PrincipalID;
data[i].firstName = item.FirstName;
data[i].lastName = item.LastName;
data[i].group = "";
data[i].online = false;
data[i].reputation = 0;
i++;
}
}
remoteClient.SendDirPeopleReply(queryID, data);
}
示例5: OnDirFindQuery
void OnDirFindQuery(IClientAPI remoteClient, UUID queryID, string queryText, uint queryFlags, int queryStart)
{
queryText = queryText.Trim();
if (((DirFindFlags)queryFlags & DirFindFlags.People) == DirFindFlags.People)
{
if (string.IsNullOrEmpty(queryText))
remoteClient.SendDirPeopleReply(queryID, new DirPeopleReplyData[0]);
List<UserAccount> accounts = m_Scenes[0].UserAccountService.GetUserAccounts(m_Scenes[0].RegionInfo.ScopeID, queryText);
DirPeopleReplyData[] hits = new DirPeopleReplyData[accounts.Count];
int i = 0;
foreach (UserAccount acc in accounts)
{
DirPeopleReplyData d = new DirPeopleReplyData();
d.agentID = acc.PrincipalID;
d.firstName = acc.FirstName;
d.lastName = acc.LastName;
d.online = false;
hits[i++] = d;
}
// TODO: This currently ignores pretty much all the query flags including Mature and sort order
remoteClient.SendDirPeopleReply(queryID, hits);
}
else if (((DirFindFlags)queryFlags & DirFindFlags.Groups) == DirFindFlags.Groups)
{
if (m_GroupsService == null)
{
m_log.Warn("[BASIC SEARCH MODULE]: Groups service is not available. Unable to search groups.");
remoteClient.SendAlertMessage("Groups search is not enabled");
return;
}
if (string.IsNullOrEmpty(queryText))
remoteClient.SendDirGroupsReply(queryID, new DirGroupsReplyData[0]);
// TODO: This currently ignores pretty much all the query flags including Mature and sort order
remoteClient.SendDirGroupsReply(queryID, m_GroupsService.FindGroups(remoteClient, queryText).ToArray());
}
}