* Group type stuff. Nothing spectacular. two packets, sorta almost semi half tiny amount implemented.

0.6.0-stable
Teravus Ovares 2008-05-18 03:21:22 +00:00
parent 89056c492d
commit 2bd03b7c8c
9 changed files with 157 additions and 12 deletions

View File

@ -813,8 +813,9 @@ namespace OpenSim.Framework
event EstateBlueBoxMessageRequest OnEstateBlueBoxMessageRequest; event EstateBlueBoxMessageRequest OnEstateBlueBoxMessageRequest;
event EstateDebugRegionRequest OnEstateDebugRegionRequest; event EstateDebugRegionRequest OnEstateDebugRegionRequest;
event EstateTeleportOneUserHomeRequest OnEstateTeleportOneUserHomeRequest; event EstateTeleportOneUserHomeRequest OnEstateTeleportOneUserHomeRequest;
event UUIDNameRequest OnUUIDGroupNameRequest;
event RequestObjectPropertiesFamily OnObjectGroupRequest;
[Obsolete("IClientAPI.OutPacket SHOULD NOT EXIST outside of LLClientView please refactor appropriately.")] [Obsolete("IClientAPI.OutPacket SHOULD NOT EXIST outside of LLClientView please refactor appropriately.")]
void OutPacket(Packet newPack, ThrottleOutPacketType packType); void OutPacket(Packet newPack, ThrottleOutPacketType packType);
@ -983,6 +984,7 @@ namespace OpenSim.Framework
void SendGroupMembership(GroupData[] GroupMembership); void SendGroupMembership(GroupData[] GroupMembership);
void SendGroupNameReply(LLUUID groupLLUID, string GroupName);
byte[] GetThrottlesPacked(float multiplier); byte[] GetThrottlesPacked(float multiplier);

View File

@ -249,6 +249,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private ForceReleaseControls handlerForceReleaseControls = null; private ForceReleaseControls handlerForceReleaseControls = null;
private UUIDNameRequest handlerUUIDGroupNameRequest = null;
private RequestObjectPropertiesFamily handlerObjectGroupRequest = null;
/* Properties */ /* Properties */
public LLUUID SecureSessionId public LLUUID SecureSessionId
@ -828,12 +832,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public event UUIDNameRequest OnTeleportHomeRequest; public event UUIDNameRequest OnTeleportHomeRequest;
public event UUIDNameRequest OnUUIDGroupNameRequest;
public event ScriptAnswer OnScriptAnswer; public event ScriptAnswer OnScriptAnswer;
public event RequestPayPrice OnRequestPayPrice; public event RequestPayPrice OnRequestPayPrice;
public event AgentSit OnUndo; public event AgentSit OnUndo;
public event ForceReleaseControls OnForceReleaseControls; public event ForceReleaseControls OnForceReleaseControls;
public event RequestObjectPropertiesFamily OnObjectGroupRequest;
public event DetailedEstateDataRequest OnDetailedEstateDataRequest; public event DetailedEstateDataRequest OnDetailedEstateDataRequest;
public event SetEstateFlagsRequest OnSetEstateFlagsRequest; public event SetEstateFlagsRequest OnSetEstateFlagsRequest;
public event SetEstateTerrainBaseTexture OnSetEstateTerrainBaseTexture; public event SetEstateTerrainBaseTexture OnSetEstateTerrainBaseTexture;
@ -3044,6 +3052,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
AddLocalPacketHandler(PacketType.MultipleObjectUpdate, MultipleObjUpdate); AddLocalPacketHandler(PacketType.MultipleObjectUpdate, MultipleObjUpdate);
AddLocalPacketHandler(PacketType.MoneyTransferRequest, HandleMoneyTransferRequest); AddLocalPacketHandler(PacketType.MoneyTransferRequest, HandleMoneyTransferRequest);
AddLocalPacketHandler(PacketType.ParcelBuy, HandleParcelBuyRequest); AddLocalPacketHandler(PacketType.ParcelBuy, HandleParcelBuyRequest);
AddLocalPacketHandler(PacketType.UUIDGroupNameRequest, HandleUUIDGroupNameRequest);
AddLocalPacketHandler(PacketType.ObjectGroup, HandleObjectGroupRequest);
} }
private bool HandleMoneyTransferRequest(IClientAPI sender, Packet Pack) private bool HandleMoneyTransferRequest(IClientAPI sender, Packet Pack)
@ -3090,6 +3100,39 @@ namespace OpenSim.Region.ClientStack.LindenUDP
} }
private bool HandleUUIDGroupNameRequest(IClientAPI sender, Packet Pack)
{
UUIDGroupNameRequestPacket upack = (UUIDGroupNameRequestPacket) Pack;
for (int i=0;i< upack.UUIDNameBlock.Length; i++)
{
handlerUUIDGroupNameRequest = OnUUIDGroupNameRequest;
if (handlerUUIDGroupNameRequest != null)
{
handlerUUIDGroupNameRequest(upack.UUIDNameBlock[i].ID,this);
}
}
return true;
}
public bool HandleObjectGroupRequest(IClientAPI sender, Packet Pack)
{
ObjectGroupPacket ogpack = (ObjectGroupPacket)Pack;
handlerObjectGroupRequest = OnObjectGroupRequest;
if (handlerObjectGroupRequest != null)
{
for (int i = 0; i < ogpack.ObjectData.Length; i++)
{
handlerObjectGroupRequest(this, ogpack.AgentData.GroupID, ogpack.ObjectData[i].ObjectLocalID, LLUUID.Zero);
}
}
return true;
}
private bool HandleViewerEffect(IClientAPI sender, Packet Pack) private bool HandleViewerEffect(IClientAPI sender, Packet Pack)
{ {
ViewerEffectPacket viewer = (ViewerEffectPacket)Pack; ViewerEffectPacket viewer = (ViewerEffectPacket)Pack;
@ -5838,7 +5881,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP
OutPacket(Groupupdate, ThrottleOutPacketType.Task); OutPacket(Groupupdate, ThrottleOutPacketType.Task);
} }
public void SendGroupNameReply(LLUUID groupLLUID, string GroupName)
{
UUIDGroupNameReplyPacket pack = new UUIDGroupNameReplyPacket();
UUIDGroupNameReplyPacket.UUIDNameBlockBlock[] uidnameblock = new UUIDGroupNameReplyPacket.UUIDNameBlockBlock[1];
UUIDGroupNameReplyPacket.UUIDNameBlockBlock uidnamebloc = new UUIDGroupNameReplyPacket.UUIDNameBlockBlock();
uidnamebloc.ID = groupLLUID;
uidnamebloc.GroupName = Helpers.StringToField(GroupName);
uidnameblock[0] = uidnamebloc;
pack.UUIDNameBlock = uidnameblock;
OutPacket(pack, ThrottleOutPacketType.Task);
}
public ClientInfo GetClientInfo() public ClientInfo GetClientInfo()
{ {
//MainLog.Instance.Verbose("CLIENT", "GetClientInfo BGN"); //MainLog.Instance.Verbose("CLIENT", "GetClientInfo BGN");

View File

@ -44,6 +44,9 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups
private Dictionary<LLUUID, GroupList> m_grouplistmap = new Dictionary<LLUUID, GroupList>(); private Dictionary<LLUUID, GroupList> m_grouplistmap = new Dictionary<LLUUID, GroupList>();
private Dictionary<LLUUID, GroupData> m_groupmap = new Dictionary<LLUUID, GroupData>(); private Dictionary<LLUUID, GroupData> m_groupmap = new Dictionary<LLUUID, GroupData>();
private Dictionary<LLUUID, IClientAPI> m_iclientmap = new Dictionary<LLUUID, IClientAPI>(); private Dictionary<LLUUID, IClientAPI> m_iclientmap = new Dictionary<LLUUID, IClientAPI>();
private Dictionary<LLUUID, GroupData> m_groupUUIDGroup = new Dictionary<LLUUID, GroupData>();
private LLUUID opensimulatorGroupID = new LLUUID("00000000-68f9-1111-024e-222222111123");
private List<Scene> m_scene = new List<Scene>(); private List<Scene> m_scene = new List<Scene>();
#region IRegionModule Members #region IRegionModule Members
@ -57,6 +60,18 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups
scene.EventManager.OnNewClient += OnNewClient; scene.EventManager.OnNewClient += OnNewClient;
scene.EventManager.OnClientClosed += OnClientClosed; scene.EventManager.OnClientClosed += OnClientClosed;
scene.EventManager.OnGridInstantMessageToGroupsModule += OnGridInstantMessage; scene.EventManager.OnGridInstantMessageToGroupsModule += OnGridInstantMessage;
lock (m_groupUUIDGroup)
{
GroupData OpenSimulatorGroup = new GroupData();
OpenSimulatorGroup.ActiveGroupTitle = "OpenSimulator Tester";
OpenSimulatorGroup.GroupID = opensimulatorGroupID;
OpenSimulatorGroup.groupName = "OpenSimulator Testing";
OpenSimulatorGroup.ActiveGroupPowers = GroupPowers.LandAllowSetHome;
OpenSimulatorGroup.GroupTitles.Add("OpenSimulator Tester");
if (!m_groupUUIDGroup.ContainsKey(opensimulatorGroupID))
m_groupUUIDGroup.Add(opensimulatorGroupID, OpenSimulatorGroup);
}
//scene.EventManager. //scene.EventManager.
} }
@ -102,6 +117,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups
// Subscribe to instant messages // Subscribe to instant messages
client.OnInstantMessage += OnInstantMessage; client.OnInstantMessage += OnInstantMessage;
client.OnAgentDataUpdateRequest += OnAgentDataUpdateRequest; client.OnAgentDataUpdateRequest += OnAgentDataUpdateRequest;
client.OnUUIDGroupNameRequest += HandleUUIDGroupNameRequest;
lock (m_iclientmap) lock (m_iclientmap)
{ {
if (!m_iclientmap.ContainsKey(client.AgentId)) if (!m_iclientmap.ContainsKey(client.AgentId))
@ -109,13 +125,18 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups
m_iclientmap.Add(client.AgentId, client); m_iclientmap.Add(client.AgentId, client);
} }
} }
GroupData OpenSimulatorGroup = new GroupData(); GroupData OpenSimulatorGroup = null;
OpenSimulatorGroup.ActiveGroupTitle = "OpenSimulator Tester"; lock (m_groupUUIDGroup)
OpenSimulatorGroup.GroupID = new LLUUID("00000000-68f9-1111-024e-222222111120"); {
OpenSimulatorGroup.GroupMembers.Add(client.AgentId); OpenSimulatorGroup = m_groupUUIDGroup[opensimulatorGroupID];
OpenSimulatorGroup.groupName = "OpenSimulator Testing"; if (!OpenSimulatorGroup.GroupMembers.Contains(client.AgentId))
OpenSimulatorGroup.ActiveGroupPowers = GroupPowers.LandAllowSetHome; {
OpenSimulatorGroup.GroupTitles.Add("OpenSimulator Tester"); OpenSimulatorGroup.GroupMembers.Add(client.AgentId);
m_groupUUIDGroup[opensimulatorGroupID] = OpenSimulatorGroup;
}
}
lock (m_groupmap) lock (m_groupmap)
{ {
if (!m_groupmap.ContainsKey(client.AgentId)) if (!m_groupmap.ContainsKey(client.AgentId))
@ -124,7 +145,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups
} }
} }
GroupList testGroupList = new GroupList(); GroupList testGroupList = new GroupList();
testGroupList.m_GroupList.Add(new LLUUID("00000000-68f9-1111-024e-222222111120")); testGroupList.m_GroupList.Add(OpenSimulatorGroup.GroupID);
lock (m_grouplistmap) lock (m_grouplistmap)
{ {
@ -133,7 +154,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups
m_grouplistmap.Add(client.AgentId, testGroupList); m_grouplistmap.Add(client.AgentId, testGroupList);
} }
} }
m_log.Info("[GROUP]: Adding " + client.Name + " to OpenSimulator Tester group"); m_log.Info("[GROUP]: Adding " + client.Name + " to " + OpenSimulatorGroup.groupName + " ");
GroupData[] updateGroups = new GroupData[1]; GroupData[] updateGroups = new GroupData[1];
updateGroups[0] = OpenSimulatorGroup; updateGroups[0] = OpenSimulatorGroup;
@ -201,7 +222,22 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups
new LLVector3(msg.Position.x, msg.Position.y, msg.Position.z), new LLUUID(msg.RegionID), new LLVector3(msg.Position.x, msg.Position.y, msg.Position.z), new LLUUID(msg.RegionID),
msg.binaryBucket); msg.binaryBucket);
} }
private void HandleUUIDGroupNameRequest(LLUUID id,IClientAPI remote_client)
{
string groupnamereply = "Unknown";
LLUUID groupUUID = LLUUID.Zero;
lock (m_groupUUIDGroup)
{
if (m_groupUUIDGroup.ContainsKey(id))
{
GroupData grp = m_groupUUIDGroup[id];
groupnamereply = grp.groupName;
groupUUID = grp.GroupID;
}
}
remote_client.SendGroupNameReply(groupUUID, groupnamereply);
}
private void OnClientClosed(LLUUID agentID) private void OnClientClosed(LLUUID agentID)
{ {
lock (m_iclientmap) lock (m_iclientmap)

View File

@ -236,6 +236,7 @@ namespace OpenSim.Region.Environment.Modules.World.NPC
public event RequestAsset OnRequestAsset; public event RequestAsset OnRequestAsset;
public event UUIDNameRequest OnNameFromUUIDRequest; public event UUIDNameRequest OnNameFromUUIDRequest;
public event UUIDNameRequest OnUUIDGroupNameRequest;
public event ParcelPropertiesRequest OnParcelPropertiesRequest; public event ParcelPropertiesRequest OnParcelPropertiesRequest;
public event ParcelDivideRequest OnParcelDivideRequest; public event ParcelDivideRequest OnParcelDivideRequest;
@ -270,6 +271,8 @@ namespace OpenSim.Region.Environment.Modules.World.NPC
public event ForceReleaseControls OnForceReleaseControls; public event ForceReleaseControls OnForceReleaseControls;
public event RequestObjectPropertiesFamily OnObjectGroupRequest;
public event DetailedEstateDataRequest OnDetailedEstateDataRequest; public event DetailedEstateDataRequest OnDetailedEstateDataRequest;
public event SetEstateFlagsRequest OnSetEstateFlagsRequest; public event SetEstateFlagsRequest OnSetEstateFlagsRequest;
public event SetEstateTerrainBaseTexture OnSetEstateTerrainBaseTexture; public event SetEstateTerrainBaseTexture OnSetEstateTerrainBaseTexture;
@ -756,6 +759,10 @@ namespace OpenSim.Region.Environment.Modules.World.NPC
public void sendLandParcelOverlay(byte[] data, int sequence_id) public void sendLandParcelOverlay(byte[] data, int sequence_id)
{ {
} }
public void SendGroupNameReply(LLUUID groupLLUID, string GroupName)
{
}
#endregion #endregion
} }
} }

View File

@ -330,7 +330,30 @@ namespace OpenSim.Region.Environment.Scenes
} }
public void HandleObjectGroupUpdate(
IClientAPI remoteClient, LLUUID GroupID, uint objectLocalID, LLUUID Garbage)
{
List<EntityBase> EntityList = GetEntities();
foreach (EntityBase obj in EntityList)
{
if (obj is SceneObjectGroup)
{
if (((SceneObjectGroup)obj).LocalId == objectLocalID)
{
SceneObjectGroup group = (SceneObjectGroup)obj;
if (m_parentScene.ExternalChecks.ExternalChecksCanEditObject(group.UUID, remoteClient.AgentId))
group.SetGroup(GroupID, remoteClient);
else
remoteClient.SendAgentAlertMessage("You don't have permission to set the group", false);
}
}
}
}
/// <summary> /// <summary>
/// Event Handling routine for Attach Object /// Event Handling routine for Attach Object
/// </summary> /// </summary>

View File

@ -1651,6 +1651,7 @@ namespace OpenSim.Region.Environment.Scenes
client.OnSetStartLocationRequest += SetHomeRezPoint; client.OnSetStartLocationRequest += SetHomeRezPoint;
client.OnUndo += m_innerScene.HandleUndo; client.OnUndo += m_innerScene.HandleUndo;
client.OnObjectGroupRequest += m_innerScene.HandleObjectGroupUpdate;
EventManager.TriggerOnNewClient(client); EventManager.TriggerOnNewClient(client);
} }

View File

@ -2510,5 +2510,16 @@ namespace OpenSim.Region.Environment.Scenes
} }
} }
} }
public void SetGroup(LLUUID GroupID, IClientAPI client)
{
lock (m_parts)
{
foreach (SceneObjectPart part in m_parts.Values)
{
part.SetGroup(GroupID, client);
}
}
ScheduleGroupForFullUpdate();
}
} }
} }

View File

@ -2760,13 +2760,19 @@ namespace OpenSim.Region.Environment.Scenes
public void GetProperties(IClientAPI client) public void GetProperties(IClientAPI client)
{ {
client.SendObjectPropertiesReply(LLUUID.Zero, (ulong)CreationDate, CreatorID, LLUUID.Zero, LLUUID.Zero, client.SendObjectPropertiesReply(LLUUID.Zero, (ulong)CreationDate, CreatorID, LLUUID.Zero, GroupID,
LLUUID.Zero, (short)InventorySerial, LastOwnerID, UUID, OwnerID, LLUUID.Zero, (short)InventorySerial, LastOwnerID, UUID, OwnerID,
ParentGroup.RootPart.TouchName, new byte[0], ParentGroup.RootPart.SitName, Name, Description, ParentGroup.RootPart.TouchName, new byte[0], ParentGroup.RootPart.SitName, Name, Description,
ParentGroup.RootPart.OwnerMask, ParentGroup.RootPart.NextOwnerMask, ParentGroup.RootPart.GroupMask, ParentGroup.RootPart.EveryoneMask, ParentGroup.RootPart.OwnerMask, ParentGroup.RootPart.NextOwnerMask, ParentGroup.RootPart.GroupMask, ParentGroup.RootPart.EveryoneMask,
ParentGroup.RootPart.BaseMask); ParentGroup.RootPart.BaseMask);
} }
public void SetGroup(LLUUID groupID, IClientAPI client)
{
GroupID = groupID;
GetProperties(client);
m_updateFlag = 2;
}
} }
} }

View File

@ -140,6 +140,7 @@ namespace OpenSim.Region.Examples.SimpleModule
public event RequestAsset OnRequestAsset; public event RequestAsset OnRequestAsset;
public event UUIDNameRequest OnNameFromUUIDRequest; public event UUIDNameRequest OnNameFromUUIDRequest;
public event UUIDNameRequest OnUUIDGroupNameRequest;
public event ParcelPropertiesRequest OnParcelPropertiesRequest; public event ParcelPropertiesRequest OnParcelPropertiesRequest;
public event ParcelDivideRequest OnParcelDivideRequest; public event ParcelDivideRequest OnParcelDivideRequest;
@ -173,6 +174,7 @@ namespace OpenSim.Region.Examples.SimpleModule
public event AgentSit OnUndo; public event AgentSit OnUndo;
public event ForceReleaseControls OnForceReleaseControls; public event ForceReleaseControls OnForceReleaseControls;
public event RequestObjectPropertiesFamily OnObjectGroupRequest;
public event DetailedEstateDataRequest OnDetailedEstateDataRequest; public event DetailedEstateDataRequest OnDetailedEstateDataRequest;
public event SetEstateFlagsRequest OnSetEstateFlagsRequest; public event SetEstateFlagsRequest OnSetEstateFlagsRequest;
@ -754,5 +756,9 @@ namespace OpenSim.Region.Examples.SimpleModule
public void sendLandParcelOverlay(byte[] data, int sequence_id) public void sendLandParcelOverlay(byte[] data, int sequence_id)
{ {
} }
public void SendGroupNameReply(LLUUID groupLLUID, string GroupName)
{
}
} }
} }