private void GroupDataHandler(Packet packet, Simulator simulator)
{
if (OnCurrentGroups != null)
{
AgentGroupDataUpdatePacket update = (AgentGroupDataUpdatePacket)packet;
Dictionary<UUID, Group> currentGroups = new Dictionary<UUID, Group>();
foreach (AgentGroupDataUpdatePacket.GroupDataBlock block in update.GroupData)
{
Group group = new Group();
group.ID = block.GroupID;
group.InsigniaID = block.GroupInsigniaID;
group.Name = Utils.BytesToString(block.GroupName);
group.Powers = (GroupPowers)block.GroupPowers;
group.Contribution = block.Contribution;
group.AcceptNotices = block.AcceptNotices;
currentGroups[block.GroupID] = group;
if (!GroupName2KeyCache.ContainsKey(block.GroupID))
GroupName2KeyCache.SafeAdd(block.GroupID, Utils.BytesToString(block.GroupName));
}
try { OnCurrentGroups(currentGroups); }
catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); }
}
}