From 2bd03b7c8c3b14ea5e7b709aa9e1a3d63ed67e09 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Sun, 18 May 2008 03:21:22 +0000 Subject: * Group type stuff. Nothing spectacular. two packets, sorta almost semi half tiny amount implemented. --- .../Modules/Avatar/Groups/GroupsModule.cs | 54 ++++++++++++++++++---- 1 file changed, 45 insertions(+), 9 deletions(-) (limited to 'OpenSim/Region/Environment/Modules/Avatar') diff --git a/OpenSim/Region/Environment/Modules/Avatar/Groups/GroupsModule.cs b/OpenSim/Region/Environment/Modules/Avatar/Groups/GroupsModule.cs index 8f3eb62..a83730e 100644 --- a/OpenSim/Region/Environment/Modules/Avatar/Groups/GroupsModule.cs +++ b/OpenSim/Region/Environment/Modules/Avatar/Groups/GroupsModule.cs @@ -44,6 +44,9 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups private Dictionary m_grouplistmap = new Dictionary(); private Dictionary m_groupmap = new Dictionary(); private Dictionary m_iclientmap = new Dictionary(); + private Dictionary m_groupUUIDGroup = new Dictionary(); + private LLUUID opensimulatorGroupID = new LLUUID("00000000-68f9-1111-024e-222222111123"); + private List m_scene = new List(); #region IRegionModule Members @@ -57,6 +60,18 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups scene.EventManager.OnNewClient += OnNewClient; scene.EventManager.OnClientClosed += OnClientClosed; 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. } @@ -102,6 +117,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups // Subscribe to instant messages client.OnInstantMessage += OnInstantMessage; client.OnAgentDataUpdateRequest += OnAgentDataUpdateRequest; + client.OnUUIDGroupNameRequest += HandleUUIDGroupNameRequest; lock (m_iclientmap) { if (!m_iclientmap.ContainsKey(client.AgentId)) @@ -109,13 +125,18 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups m_iclientmap.Add(client.AgentId, client); } } - GroupData OpenSimulatorGroup = new GroupData(); - OpenSimulatorGroup.ActiveGroupTitle = "OpenSimulator Tester"; - OpenSimulatorGroup.GroupID = new LLUUID("00000000-68f9-1111-024e-222222111120"); - OpenSimulatorGroup.GroupMembers.Add(client.AgentId); - OpenSimulatorGroup.groupName = "OpenSimulator Testing"; - OpenSimulatorGroup.ActiveGroupPowers = GroupPowers.LandAllowSetHome; - OpenSimulatorGroup.GroupTitles.Add("OpenSimulator Tester"); + GroupData OpenSimulatorGroup = null; + lock (m_groupUUIDGroup) + { + OpenSimulatorGroup = m_groupUUIDGroup[opensimulatorGroupID]; + if (!OpenSimulatorGroup.GroupMembers.Contains(client.AgentId)) + { + OpenSimulatorGroup.GroupMembers.Add(client.AgentId); + m_groupUUIDGroup[opensimulatorGroupID] = OpenSimulatorGroup; + } + + } + lock (m_groupmap) { if (!m_groupmap.ContainsKey(client.AgentId)) @@ -124,7 +145,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups } } GroupList testGroupList = new GroupList(); - testGroupList.m_GroupList.Add(new LLUUID("00000000-68f9-1111-024e-222222111120")); + testGroupList.m_GroupList.Add(OpenSimulatorGroup.GroupID); lock (m_grouplistmap) { @@ -133,7 +154,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups 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]; 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), 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) { lock (m_iclientmap) -- cgit v1.1