Restored sending group membership data via EventQueue -- this had been a regression. Took the opportunity to refactor that code, so that both Groups V2 and XmlRpcGroups can use the same function.
parent
d51fe01ed8
commit
76ab1ed10c
|
@ -1245,7 +1245,8 @@ namespace OpenSim.Groups
|
|||
SendDataUpdate(remoteClient, tellOthers);
|
||||
|
||||
GroupMembershipData[] membershipArray = GetProfileListedGroupMemberships(remoteClient, agentID);
|
||||
remoteClient.SendAgentGroupDataUpdate(agentID, membershipArray);
|
||||
IEventQueue eq = remoteClient.Scene.RequestModuleInterface<IEventQueue>();
|
||||
eq.GroupMembershipData(GetRequestingAgentID(remoteClient), membershipArray);
|
||||
|
||||
remoteClient.RefreshGroupMembership();
|
||||
}
|
||||
|
|
|
@ -585,6 +585,12 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
Enqueue(item, avatarID);
|
||||
}
|
||||
|
||||
public void GroupMembershipData(UUID receiverAgent, GroupMembershipData[] data)
|
||||
{
|
||||
OSD item = EventQueueHelper.GroupMembershipData(receiverAgent, data);
|
||||
Enqueue(item, receiverAgent);
|
||||
}
|
||||
|
||||
public void QueryReply(PlacesReplyPacket groupUpdate, UUID avatarID)
|
||||
{
|
||||
OSD item = EventQueueHelper.PlacesQuery(groupUpdate);
|
||||
|
|
|
@ -32,6 +32,8 @@ using OpenMetaverse.Packets;
|
|||
using OpenMetaverse.StructuredData;
|
||||
using OpenMetaverse.Messages.Linden;
|
||||
|
||||
using OpenSim.Framework;
|
||||
|
||||
namespace OpenSim.Region.ClientStack.Linden
|
||||
{
|
||||
public class EventQueueHelper
|
||||
|
@ -365,6 +367,52 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
return groupUpdate;
|
||||
}
|
||||
|
||||
public static OSD GroupMembershipData(UUID receiverAgent, GroupMembershipData[] data)
|
||||
{
|
||||
OSDArray AgentData = new OSDArray(1);
|
||||
OSDMap AgentDataMap = new OSDMap(1);
|
||||
AgentDataMap.Add("AgentID", OSD.FromUUID(receiverAgent));
|
||||
AgentData.Add(AgentDataMap);
|
||||
|
||||
OSDArray GroupData = new OSDArray(data.Length);
|
||||
OSDArray NewGroupData = new OSDArray(data.Length);
|
||||
|
||||
foreach (GroupMembershipData membership in data)
|
||||
{
|
||||
//if (receiverAgent != dataForAgentID)
|
||||
//{
|
||||
// if (!membership.ListInProfile)
|
||||
// {
|
||||
// // If we're sending group info to remoteclient about another agent,
|
||||
// // filter out groups the other agent doesn't want to share.
|
||||
// continue;
|
||||
// }
|
||||
//}
|
||||
|
||||
OSDMap GroupDataMap = new OSDMap(6);
|
||||
OSDMap NewGroupDataMap = new OSDMap(1);
|
||||
|
||||
GroupDataMap.Add("GroupID", OSD.FromUUID(membership.GroupID));
|
||||
GroupDataMap.Add("GroupPowers", OSD.FromULong(membership.GroupPowers));
|
||||
GroupDataMap.Add("AcceptNotices", OSD.FromBoolean(membership.AcceptNotices));
|
||||
GroupDataMap.Add("GroupInsigniaID", OSD.FromUUID(membership.GroupPicture));
|
||||
GroupDataMap.Add("Contribution", OSD.FromInteger(membership.Contribution));
|
||||
GroupDataMap.Add("GroupName", OSD.FromString(membership.GroupName));
|
||||
NewGroupDataMap.Add("ListInProfile", OSD.FromBoolean(membership.ListInProfile));
|
||||
|
||||
GroupData.Add(GroupDataMap);
|
||||
NewGroupData.Add(NewGroupDataMap);
|
||||
}
|
||||
|
||||
OSDMap llDataStruct = new OSDMap(3);
|
||||
llDataStruct.Add("AgentData", AgentData);
|
||||
llDataStruct.Add("GroupData", GroupData);
|
||||
llDataStruct.Add("NewGroupData", NewGroupData);
|
||||
|
||||
return BuildEvent("AgentGroupDataUpdate", llDataStruct);
|
||||
|
||||
}
|
||||
|
||||
public static OSD PlacesQuery(PlacesReplyPacket PlacesReply)
|
||||
{
|
||||
OSDMap placesReply = new OSDMap();
|
||||
|
|
|
@ -30,6 +30,7 @@ using OpenMetaverse;
|
|||
using OpenMetaverse.Packets;
|
||||
using OpenMetaverse.Messages.Linden;
|
||||
using OpenMetaverse.StructuredData;
|
||||
using OpenSim.Framework;
|
||||
|
||||
namespace OpenSim.Region.Framework.Interfaces
|
||||
{
|
||||
|
@ -58,6 +59,7 @@ namespace OpenSim.Region.Framework.Interfaces
|
|||
bool isModerator, bool textMute);
|
||||
void ParcelProperties(ParcelPropertiesMessage parcelPropertiesMessage, UUID avatarID);
|
||||
void GroupMembership(AgentGroupDataUpdatePacket groupUpdate, UUID avatarID);
|
||||
void GroupMembershipData(UUID receiverAgent, GroupMembershipData[] data);
|
||||
OSD ScriptRunningEvent(UUID objectID, UUID itemID, bool running, bool mono);
|
||||
OSD BuildEvent(string eventName, OSD eventBody);
|
||||
void partPhysicsProperties(uint localID, byte physhapetype, float density, float friction, float bounce, float gravmod, UUID avatarID);
|
||||
|
|
|
@ -1372,7 +1372,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
|
|||
SendDataUpdate(remoteClient, tellOthers);
|
||||
|
||||
GroupMembershipData[] membershipArray = GetProfileListedGroupMemberships(remoteClient, agentID);
|
||||
remoteClient.SendAgentGroupDataUpdate(agentID, membershipArray);
|
||||
IEventQueue eq = remoteClient.Scene.RequestModuleInterface<IEventQueue>();
|
||||
eq.GroupMembershipData(GetRequestingAgentID(remoteClient), membershipArray);
|
||||
|
||||
remoteClient.RefreshGroupMembership();
|
||||
}
|
||||
|
|
|
@ -162,6 +162,11 @@ namespace OpenSim.Tests.Common
|
|||
AddEvent(avatarID, "GroupMembership", groupUpdate);
|
||||
}
|
||||
|
||||
public void GroupMembershipData(UUID receiverAgent, GroupMembershipData[] data)
|
||||
{
|
||||
AddEvent(receiverAgent, "AgentGroupDataUpdate", data);
|
||||
}
|
||||
|
||||
public OSD ScriptRunningEvent (UUID objectID, UUID itemID, bool running, bool mono)
|
||||
{
|
||||
Console.WriteLine("ONE");
|
||||
|
|
Loading…
Reference in New Issue