private void GroupRoleDataHandler(Packet packet, Simulator simulator) { GroupRoleDataReplyPacket roles = (GroupRoleDataReplyPacket)packet; Dictionary <LLUUID, GroupRole> groupRoleCache = null; lock (GroupRolesCaches) { // If nothing is registered to receive this RequestID drop the data if (GroupRolesCaches.ContainsKey(roles.GroupData.RequestID)) { groupRoleCache = GroupRolesCaches[roles.GroupData.RequestID]; foreach (GroupRoleDataReplyPacket.RoleDataBlock block in roles.RoleData) { GroupRole groupRole = new GroupRole(block.RoleID); groupRole.Description = Helpers.FieldToString(block.Description); groupRole.Name = Helpers.FieldToString(block.Name); groupRole.Powers = block.Powers; groupRole.Title = Helpers.FieldToString(block.Title); groupRoleCache[block.RoleID] = groupRole; } } } // Check if we've received all the group members that are showing up if (groupRoleCache != null && groupRoleCache.Count >= roles.GroupData.RoleCount) { GroupRolesCallbacks[roles.GroupData.GroupID](groupRoleCache); } }
private void GroupRoleDataHandler(Packet packet, Simulator simulator) { GroupRoleDataReplyPacket roles = (GroupRoleDataReplyPacket)packet; Dictionary<LLUUID, GroupRole> groupRoleCache = null; lock (GroupRolesCaches) { // If nothing is registered to receive this RequestID drop the data if (GroupRolesCaches.ContainsKey(roles.GroupData.RequestID)) { groupRoleCache = GroupRolesCaches[roles.GroupData.RequestID]; foreach (GroupRoleDataReplyPacket.RoleDataBlock block in roles.RoleData) { GroupRole groupRole = new GroupRole(block.RoleID); groupRole.Description = Helpers.FieldToString(block.Description); groupRole.Name = Helpers.FieldToString(block.Name); groupRole.Powers = block.Powers; groupRole.Title = Helpers.FieldToString(block.Title); groupRoleCache[block.RoleID] = groupRole; } } } // Check if we've received all the group members that are showing up if (groupRoleCache != null && groupRoleCache.Count >= roles.GroupData.RoleCount) { GroupRolesCallbacks[roles.GroupData.GroupID](groupRoleCache); } }
/// <summary> /// Create a new role /// </summary> /// <param name="group">Group to update</param> /// <param name="role">Role to create</param> public void CreateRole(LLUUID group, GroupRole role) { libsecondlife.Packets.GroupRoleUpdatePacket gru = new GroupRoleUpdatePacket(); gru.AgentData.AgentID = Client.Self.AgentID; gru.AgentData.SessionID = Client.Self.SessionID; gru.AgentData.GroupID = group; gru.RoleData = new GroupRoleUpdatePacket.RoleDataBlock[1]; gru.RoleData[0].Name = Helpers.StringToField(role.Name); gru.RoleData[0].Description = Helpers.StringToField(role.Description); gru.RoleData[0].Powers = (ulong)role.Powers; gru.RoleData[0].Title = Helpers.StringToField(role.Title); gru.RoleData[0].UpdateType = (byte)GroupRoleUpdate.Create; Client.Network.SendPacket(gru); }
private void GroupRoleDataHandler(Packet packet, Simulator simulator) { GroupRoleDataReplyPacket roles = (GroupRoleDataReplyPacket)packet; Dictionary<LLUUID, GroupRole> groupRoleCache = null; lock (GroupRolesCaches) { // If nothing is registered to receive this RequestID drop the data if (GroupRolesCaches.ContainsKey(roles.GroupData.RequestID)) { groupRoleCache = GroupRolesCaches[roles.GroupData.RequestID]; foreach (GroupRoleDataReplyPacket.RoleDataBlock block in roles.RoleData) { GroupRole groupRole = new GroupRole(); groupRole.ID = block.RoleID; groupRole.Description = Helpers.FieldToUTF8String(block.Description); groupRole.Name = Helpers.FieldToUTF8String(block.Name); groupRole.Powers = (GroupPowers)block.Powers; groupRole.Title = Helpers.FieldToUTF8String(block.Title); groupRoleCache[block.RoleID] = groupRole; } } } // Check if we've received all the group members that are showing up if (OnGroupRoles != null && groupRoleCache != null && groupRoleCache.Count >= roles.GroupData.RoleCount) { try { OnGroupRoles(groupRoleCache); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } }