private void AvatarGroupsHandler(Packet packet, Simulator simulator)
        {
            if (OnAvatarGroups != null)
            {
                AvatarGroupsReplyPacket groups       = (AvatarGroupsReplyPacket)packet;
                List <AvatarGroup>      avatarGroups = new List <AvatarGroup>(groups.GroupData.Length);

                for (int i = 0; i < groups.GroupData.Length; i++)
                {
                    AvatarGroup avatarGroup = new AvatarGroup();

                    avatarGroup.AcceptNotices   = groups.GroupData[i].AcceptNotices;
                    avatarGroup.GroupID         = groups.GroupData[i].GroupID;
                    avatarGroup.GroupInsigniaID = groups.GroupData[i].GroupInsigniaID;
                    avatarGroup.GroupName       = Helpers.FieldToUTF8String(groups.GroupData[i].GroupName);
                    avatarGroup.GroupPowers     = (GroupPowers)groups.GroupData[i].GroupPowers;
                    avatarGroup.GroupTitle      = Helpers.FieldToUTF8String(groups.GroupData[i].GroupTitle);
                    avatarGroup.ListInProfile   = groups.NewGroupData.ListInProfile;

                    avatarGroups.Add(avatarGroup);
                }

                try { OnAvatarGroups(groups.AgentData.AvatarID, avatarGroups); }
                catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); }
            }
        }
        private void AvatarGroupsHandler(Packet packet, Simulator simulator)
        {
            if (OnAvatarGroups != null)
            {
                AvatarGroupsReplyPacket groups = (AvatarGroupsReplyPacket)packet;

                // FIXME: Build a little struct to represent the groups.GroupData blocks so we keep
                // libsecondlife.Packets abstracted away
                OnAvatarGroups(groups.AgentData.AvatarID, groups.GroupData);
            }
        }
        void Avatars_OnAvatarGroups(LLUUID avatarID, AvatarGroupsReplyPacket.GroupDataBlock[] groups)
        {
            lock (ReceivedProfileEvent)
            {
                foreach (AvatarGroupsReplyPacket.GroupDataBlock block in groups)
                {
                    Groups.Add(block.GroupID);
                }

                ReceivedGroups = true;

                if (ReceivedInterests && ReceivedProperties && ReceivedGroups)
                    ReceivedProfileEvent.Set();
            }
        }
Exemple #4
0
        void Avatars_OnAvatarGroups(LLUUID avatarID, AvatarGroupsReplyPacket.GroupDataBlock[] groups)
        {
            List<LLUUID> groupList = new List<LLUUID>();

            foreach (AvatarGroupsReplyPacket.GroupDataBlock block in groups)
            {
                // TODO: We just toss away all the other information here, seems like a waste...
                groupList.Add(block.GroupID);
            }

            lock (avatars)
            {
                if (!avatars.ContainsKey(avatarID))
                    avatars[avatarID] = new Avatar();

                avatars[avatarID].Groups = groupList;
            }

            if (GroupsLookupEvents.ContainsKey(avatarID))
                GroupsLookupEvents[avatarID].Set();
        }