private void GroupMembersHandler(Packet packet, Simulator simulator) { GroupMembersReplyPacket members = (GroupMembersReplyPacket)packet; Dictionary<LLUUID, GroupMember> groupMemberCache = null; lock (GroupMembersCaches) { // If nothing is registered to receive this RequestID drop the data if (GroupMembersCaches.ContainsKey(members.GroupData.RequestID)) { groupMemberCache = GroupMembersCaches[members.GroupData.RequestID]; foreach (GroupMembersReplyPacket.MemberDataBlock block in members.MemberData) { GroupMember groupMember = new GroupMember(block.AgentID); groupMember.Contribution = block.Contribution; groupMember.IsOwner = block.IsOwner; groupMember.OnlineStatus = Helpers.FieldToString(block.OnlineStatus); groupMember.Powers = block.AgentPowers; groupMember.Title = Helpers.FieldToString(block.Title); groupMemberCache[block.AgentID] = groupMember; } } } // Check if we've received all the group members that are showing up if (groupMemberCache != null && groupMemberCache.Count >= members.GroupData.MemberCount) { GroupMembersCallbacks[members.GroupData.GroupID](groupMemberCache); } }
private void GroupMembersHandler(Packet packet, Simulator simulator) { GroupMembersReplyPacket members = (GroupMembersReplyPacket)packet; Dictionary<LLUUID, GroupMember> groupMemberCache = null; lock (GroupMembersCaches) { // If nothing is registered to receive this RequestID drop the data if (GroupMembersCaches.ContainsKey(members.GroupData.RequestID)) { groupMemberCache = GroupMembersCaches[members.GroupData.RequestID]; foreach (GroupMembersReplyPacket.MemberDataBlock block in members.MemberData) { GroupMember groupMember = new GroupMember(); groupMember.ID = block.AgentID; groupMember.Contribution = block.Contribution; groupMember.IsOwner = block.IsOwner; groupMember.OnlineStatus = Helpers.FieldToUTF8String(block.OnlineStatus); groupMember.Powers = (GroupPowers)block.AgentPowers; groupMember.Title = Helpers.FieldToUTF8String(block.Title); groupMemberCache[block.AgentID] = groupMember; } } } // Check if we've received all the group members that are showing up if (OnGroupMembers != null && groupMemberCache != null && groupMemberCache.Count >= members.GroupData.MemberCount) { try { OnGroupMembers(groupMemberCache); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } }