当前位置: 首页>>代码示例>>C#>>正文


C# IClientAPI.SendDirPeopleReply方法代码示例

本文整理汇总了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);
            
        }
开发者ID:WordfromtheWise,项目名称:Aurora,代码行数:93,代码来源:AuroraSearchModule.cs

示例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);
        }
开发者ID:MatthewBeardmore,项目名称:halcyon,代码行数:29,代码来源:AvatarSearchModule.cs

示例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);
            
        }
开发者ID:shangcheng,项目名称:Aurora,代码行数:90,代码来源:AuroraSearchModule.cs

示例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);
        }
开发者ID:unethika,项目名称:mod_nslmodules,代码行数:24,代码来源:OpenSearch.cs

示例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());
            }

        }
开发者ID:CassieEllen,项目名称:opensim,代码行数:43,代码来源:BasicSearchModule.cs


注:本文中的IClientAPI.SendDirPeopleReply方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。