diff options
author | Teravus Ovares | 2008-02-20 09:45:26 +0000 |
---|---|---|
committer | Teravus Ovares | 2008-02-20 09:45:26 +0000 |
commit | ac60382599d8a2bfcf431c0eeafd65eebf865e21 (patch) | |
tree | 9ea29e29c93e1ce5a3d962f26ed00388c9253315 | |
parent | * Fixed xml loading bug (the xml was scheduled for update before added to a s... (diff) | |
download | opensim-SC_OLD-ac60382599d8a2bfcf431c0eeafd65eebf865e21.zip opensim-SC_OLD-ac60382599d8a2bfcf431c0eeafd65eebf865e21.tar.gz opensim-SC_OLD-ac60382599d8a2bfcf431c0eeafd65eebf865e21.tar.bz2 opensim-SC_OLD-ac60382599d8a2bfcf431c0eeafd65eebf865e21.tar.xz |
* Added a few more packets to ClientView. Added tendons to the Skeletal Groups Module, made it shared to save on threads.
-rw-r--r-- | OpenSim/Framework/IClientAPI.cs | 6 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/ClientView.cs | 81 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Modules/GroupsModule.cs | 223 | ||||
-rw-r--r-- | OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs | 8 |
4 files changed, 303 insertions, 15 deletions
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index bdddc33..0563f6b 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs | |||
@@ -451,6 +451,10 @@ namespace OpenSim.Framework | |||
451 | event Action<IClientAPI> OnRequestAvatarsData; | 451 | event Action<IClientAPI> OnRequestAvatarsData; |
452 | event AddNewPrim OnAddPrim; | 452 | event AddNewPrim OnAddPrim; |
453 | 453 | ||
454 | event FetchInventory OnAgentDataUpdateRequest; | ||
455 | event FetchInventory OnUserInfoRequest; | ||
456 | event TeleportLocationRequest OnSetStartLocationRequest; | ||
457 | |||
454 | event RequestGodlikePowers OnRequestGodlikePowers; | 458 | event RequestGodlikePowers OnRequestGodlikePowers; |
455 | event GodKickUser OnGodKickUser; | 459 | event GodKickUser OnGodKickUser; |
456 | 460 | ||
@@ -620,6 +624,8 @@ namespace OpenSim.Framework | |||
620 | void SendXferPacket(ulong xferID, uint packet, byte[] data); | 624 | void SendXferPacket(ulong xferID, uint packet, byte[] data); |
621 | void SendAvatarPickerReply(AvatarPickerReplyPacket Pack); | 625 | void SendAvatarPickerReply(AvatarPickerReplyPacket Pack); |
622 | 626 | ||
627 | void SendAgentDataUpdate(LLUUID agentid, LLUUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname, string grouptitle); | ||
628 | |||
623 | void SendPreLoadSound(LLUUID objectID, LLUUID ownerID, LLUUID soundID); | 629 | void SendPreLoadSound(LLUUID objectID, LLUUID ownerID, LLUUID soundID); |
624 | void SendPlayAttachedSound(LLUUID soundID, LLUUID objectID, LLUUID ownerID, float gain, byte flags); | 630 | void SendPlayAttachedSound(LLUUID soundID, LLUUID objectID, LLUUID ownerID, float gain, byte flags); |
625 | void SendTriggeredSound(LLUUID soundID, LLUUID ownerID, LLUUID objectID, LLUUID parentID, ulong handle, LLVector3 position, float gain); | 631 | void SendTriggeredSound(LLUUID soundID, LLUUID ownerID, LLUUID objectID, LLUUID parentID, ulong handle, LLVector3 position, float gain); |
diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs index ff1bac4..47cb582 100644 --- a/OpenSim/Region/ClientStack/ClientView.cs +++ b/OpenSim/Region/ClientStack/ClientView.cs | |||
@@ -561,6 +561,11 @@ namespace OpenSim.Region.ClientStack | |||
561 | public event RequestAvatarProperties OnRequestAvatarProperties; | 561 | public event RequestAvatarProperties OnRequestAvatarProperties; |
562 | public event SetAlwaysRun OnSetAlwaysRun; | 562 | public event SetAlwaysRun OnSetAlwaysRun; |
563 | 563 | ||
564 | public event FetchInventory OnAgentDataUpdateRequest; | ||
565 | public event FetchInventory OnUserInfoRequest; | ||
566 | public event TeleportLocationRequest OnSetStartLocationRequest; | ||
567 | |||
568 | |||
564 | public event CreateNewInventoryItem OnCreateNewInventoryItem; | 569 | public event CreateNewInventoryItem OnCreateNewInventoryItem; |
565 | public event CreateInventoryFolder OnCreateNewInventoryFolder; | 570 | public event CreateInventoryFolder OnCreateNewInventoryFolder; |
566 | public event UpdateInventoryFolder OnUpdateInventoryFolder; | 571 | public event UpdateInventoryFolder OnUpdateInventoryFolder; |
@@ -1301,6 +1306,19 @@ namespace OpenSim.Region.ClientStack | |||
1301 | OutPacket(replyPacket, ThrottleOutPacketType.Task); | 1306 | OutPacket(replyPacket, ThrottleOutPacketType.Task); |
1302 | } | 1307 | } |
1303 | 1308 | ||
1309 | public void SendAgentDataUpdate(LLUUID agentid, LLUUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname,string grouptitle) | ||
1310 | { | ||
1311 | AgentDataUpdatePacket sendAgentDataUpdate = (AgentDataUpdatePacket)PacketPool.Instance.GetPacket(PacketType.AgentDataUpdate); | ||
1312 | sendAgentDataUpdate.AgentData.ActiveGroupID = activegroupid; | ||
1313 | sendAgentDataUpdate.AgentData.AgentID = agentid; | ||
1314 | sendAgentDataUpdate.AgentData.FirstName = Helpers.StringToField(firstname); | ||
1315 | sendAgentDataUpdate.AgentData.GroupName = Helpers.StringToField(groupname); | ||
1316 | sendAgentDataUpdate.AgentData.GroupPowers = grouppowers; | ||
1317 | sendAgentDataUpdate.AgentData.GroupTitle = Helpers.StringToField(grouptitle); | ||
1318 | sendAgentDataUpdate.AgentData.LastName = Helpers.StringToField(lastname); | ||
1319 | OutPacket(sendAgentDataUpdate,ThrottleOutPacketType.Task); | ||
1320 | } | ||
1321 | |||
1304 | /// <summary> | 1322 | /// <summary> |
1305 | /// | 1323 | /// |
1306 | /// </summary> | 1324 | /// </summary> |
@@ -2795,6 +2813,7 @@ namespace OpenSim.Region.ClientStack | |||
2795 | //rezPacket.RezData.RezSelected; | 2813 | //rezPacket.RezData.RezSelected; |
2796 | //rezPacket.RezData.FromTaskID; | 2814 | //rezPacket.RezData.FromTaskID; |
2797 | //m_log.Info("[REZData]: " + rezPacket.ToString()); | 2815 | //m_log.Info("[REZData]: " + rezPacket.ToString()); |
2816 | |||
2798 | OnRezObject(this, rezPacket.InventoryData.ItemID, rezPacket.RezData.RayEnd, | 2817 | OnRezObject(this, rezPacket.InventoryData.ItemID, rezPacket.RezData.RayEnd, |
2799 | rezPacket.RezData.RayStart, rezPacket.RezData.RayTargetID, | 2818 | rezPacket.RezData.RayStart, rezPacket.RezData.RayTargetID, |
2800 | rezPacket.RezData.BypassRaycast, rezPacket.RezData.RayEndIsIntersection, | 2819 | rezPacket.RezData.BypassRaycast, rezPacket.RezData.RayEndIsIntersection, |
@@ -2949,6 +2968,41 @@ namespace OpenSim.Region.ClientStack | |||
2949 | Helpers.FieldToUTF8String(querydata.Name)); | 2968 | Helpers.FieldToUTF8String(querydata.Name)); |
2950 | } | 2969 | } |
2951 | break; | 2970 | break; |
2971 | case PacketType.AgentDataUpdateRequest: | ||
2972 | AgentDataUpdateRequestPacket avRequestDataUpdatePacket = (AgentDataUpdateRequestPacket)Pack; | ||
2973 | |||
2974 | if (OnAgentDataUpdateRequest != null) | ||
2975 | { | ||
2976 | OnAgentDataUpdateRequest(this, avRequestDataUpdatePacket.AgentData.AgentID, avRequestDataUpdatePacket.AgentData.SessionID); | ||
2977 | } | ||
2978 | |||
2979 | break; | ||
2980 | case PacketType.UserInfoRequest: | ||
2981 | UserInfoRequestPacket avUserInfoRequestPacket = (UserInfoRequestPacket)Pack; | ||
2982 | if (OnUserInfoRequest != null) | ||
2983 | { | ||
2984 | OnUserInfoRequest(this,avUserInfoRequestPacket.AgentData.AgentID,avUserInfoRequestPacket.AgentData.SessionID); | ||
2985 | |||
2986 | } | ||
2987 | break; | ||
2988 | |||
2989 | case PacketType.SetStartLocationRequest: | ||
2990 | SetStartLocationRequestPacket avSetStartLocationRequestPacket = (SetStartLocationRequestPacket)Pack; | ||
2991 | if (avSetStartLocationRequestPacket.AgentData.AgentID == AgentId && avSetStartLocationRequestPacket.AgentData.SessionID == SessionId) | ||
2992 | { | ||
2993 | if (OnSetStartLocationRequest != null) | ||
2994 | { | ||
2995 | OnSetStartLocationRequest(this, 0, avSetStartLocationRequestPacket.StartLocationData.LocationPos, | ||
2996 | avSetStartLocationRequestPacket.StartLocationData.LocationLookAt, | ||
2997 | avSetStartLocationRequestPacket.StartLocationData.LocationID); | ||
2998 | } | ||
2999 | } | ||
3000 | break; | ||
3001 | |||
3002 | case PacketType.AgentThrottle: | ||
3003 | AgentThrottlePacket atpack = (AgentThrottlePacket)Pack; | ||
3004 | m_packetQueue.SetThrottleFromClient(atpack.Throttle.Throttles); | ||
3005 | break; | ||
2952 | 3006 | ||
2953 | #endregion | 3007 | #endregion |
2954 | 3008 | ||
@@ -3654,14 +3708,11 @@ namespace OpenSim.Region.ClientStack | |||
3654 | OnEstateCovenantRequest(this, epack.SessionID); | 3708 | OnEstateCovenantRequest(this, epack.SessionID); |
3655 | } | 3709 | } |
3656 | break; | 3710 | break; |
3657 | case PacketType.AgentThrottle: | 3711 | |
3658 | AgentThrottlePacket atpack = (AgentThrottlePacket)Pack; | ||
3659 | m_packetQueue.SetThrottleFromClient(atpack.Throttle.Throttles); | ||
3660 | break; | ||
3661 | 3712 | ||
3662 | #endregion | 3713 | #endregion |
3663 | 3714 | ||
3664 | #region unimplemented handlers | 3715 | #region GodPackets |
3665 | 3716 | ||
3666 | case PacketType.RequestGodlikePowers: | 3717 | case PacketType.RequestGodlikePowers: |
3667 | RequestGodlikePowersPacket rglpPack = (RequestGodlikePowersPacket)Pack; | 3718 | RequestGodlikePowersPacket rglpPack = (RequestGodlikePowersPacket)Pack; |
@@ -3699,6 +3750,12 @@ namespace OpenSim.Region.ClientStack | |||
3699 | //OutPacket(kupack, ThrottleOutPacketType.Task); | 3750 | //OutPacket(kupack, ThrottleOutPacketType.Task); |
3700 | break; | 3751 | break; |
3701 | 3752 | ||
3753 | |||
3754 | #endregion | ||
3755 | |||
3756 | #region unimplemented handlers | ||
3757 | |||
3758 | |||
3702 | case PacketType.StartPingCheck: | 3759 | case PacketType.StartPingCheck: |
3703 | // Send the client the ping response back | 3760 | // Send the client the ping response back |
3704 | // Pass the same PingID in the matching packet | 3761 | // Pass the same PingID in the matching packet |
@@ -3746,17 +3803,17 @@ namespace OpenSim.Region.ClientStack | |||
3746 | // TODO: handle this packet | 3803 | // TODO: handle this packet |
3747 | m_log.Warn("[CLIENT]: unhandled MuteListRequest packet"); | 3804 | m_log.Warn("[CLIENT]: unhandled MuteListRequest packet"); |
3748 | break; | 3805 | break; |
3749 | case PacketType.AgentDataUpdateRequest: | 3806 | //case PacketType.AgentDataUpdateRequest: |
3750 | // TODO: handle this packet | 3807 | // TODO: handle this packet |
3751 | m_log.Warn("[CLIENT]: unhandled AgentDataUpdateRequest packet"); | 3808 | //m_log.Warn("[CLIENT]: unhandled AgentDataUpdateRequest packet"); |
3752 | break; | 3809 | //break; |
3753 | 3810 | ||
3754 | case PacketType.ParcelDwellRequest: | 3811 | case PacketType.ParcelDwellRequest: |
3755 | // TODO: handle this packet | 3812 | // TODO: handle this packet |
3756 | m_log.Warn("[CLIENT]: unhandled ParcelDwellRequest packet"); | 3813 | m_log.Warn("[CLIENT]: unhandled ParcelDwellRequest packet"); |
3757 | break; | 3814 | break; |
3758 | case PacketType.UseCircuitCode: | 3815 | case PacketType.UseCircuitCode: |
3759 | // TODO: handle this packet | 3816 | // TODO: Don't display this one, we handle it at a lower level |
3760 | //m_log.Warn("[CLIENT]: unhandled UseCircuitCode packet"); | 3817 | //m_log.Warn("[CLIENT]: unhandled UseCircuitCode packet"); |
3761 | break; | 3818 | break; |
3762 | case PacketType.EconomyDataRequest: | 3819 | case PacketType.EconomyDataRequest: |
@@ -3775,10 +3832,10 @@ namespace OpenSim.Region.ClientStack | |||
3775 | // TODO: handle this packet | 3832 | // TODO: handle this packet |
3776 | m_log.Warn("[CLIENT]: unhandled SoundTrigger packet"); | 3833 | m_log.Warn("[CLIENT]: unhandled SoundTrigger packet"); |
3777 | break; | 3834 | break; |
3778 | case PacketType.UserInfoRequest: | 3835 | //case PacketType.UserInfoRequest: |
3779 | // TODO: handle this packet | 3836 | // TODO: handle this packet |
3780 | m_log.Warn("[CLIENT]: unhandled UserInfoRequest packet"); | 3837 | //m_log.Warn("[CLIENT]: unhandled UserInfoRequest packet"); |
3781 | break; | 3838 | //break; |
3782 | case PacketType.InventoryDescendents: | 3839 | case PacketType.InventoryDescendents: |
3783 | // TODO: handle this packet | 3840 | // TODO: handle this packet |
3784 | m_log.Warn("[CLIENT]: unhandled InventoryDescent packet"); | 3841 | m_log.Warn("[CLIENT]: unhandled InventoryDescent packet"); |
diff --git a/OpenSim/Region/Environment/Modules/GroupsModule.cs b/OpenSim/Region/Environment/Modules/GroupsModule.cs index 50e9a39..6eb3cda 100644 --- a/OpenSim/Region/Environment/Modules/GroupsModule.cs +++ b/OpenSim/Region/Environment/Modules/GroupsModule.cs | |||
@@ -27,18 +27,182 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using Nini.Config; | 29 | using Nini.Config; |
30 | using System; | ||
31 | using System.Collections; | ||
32 | using System.Collections.Generic; | ||
33 | using OpenSim.Framework; | ||
34 | using OpenSim.Framework.Console; | ||
30 | using OpenSim.Region.Environment.Interfaces; | 35 | using OpenSim.Region.Environment.Interfaces; |
31 | using OpenSim.Region.Environment.Scenes; | 36 | using OpenSim.Region.Environment.Scenes; |
37 | using libsecondlife; | ||
32 | 38 | ||
33 | namespace OpenSim.Region.Environment.Modules | 39 | namespace OpenSim.Region.Environment.Modules |
34 | { | 40 | { |
35 | public class GroupsModule : IRegionModule | 41 | public class GroupsModule : IRegionModule |
36 | { | 42 | { |
37 | private Scene m_scene; | 43 | private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); |
44 | |||
45 | private List<Scene> m_scene = new List<Scene>(); | ||
46 | private Dictionary<LLUUID, IClientAPI> m_iclientmap = new Dictionary<LLUUID, IClientAPI>(); | ||
47 | private Dictionary<LLUUID, GroupData> m_groupmap = new Dictionary<LLUUID, GroupData>(); | ||
48 | private Dictionary<LLUUID, GroupList> m_grouplistmap = new Dictionary<LLUUID, GroupList>(); | ||
38 | 49 | ||
39 | public void Initialise(Scene scene, IConfigSource config) | 50 | public void Initialise(Scene scene, IConfigSource config) |
40 | { | 51 | { |
41 | m_scene = scene; | 52 | lock (m_scene) |
53 | { | ||
54 | m_scene.Add(scene); | ||
55 | } | ||
56 | scene.EventManager.OnNewClient += OnNewClient; | ||
57 | scene.EventManager.OnClientClosed += OnClientClosed; | ||
58 | scene.EventManager.OnGridInstantMessageToGroupsModule += OnGridInstantMessage; | ||
59 | //scene.EventManager. | ||
60 | } | ||
61 | private void OnNewClient(IClientAPI client) | ||
62 | { | ||
63 | // All friends establishment protocol goes over instant message | ||
64 | // There's no way to send a message from the sim | ||
65 | // to a user to 'add a friend' without causing dialog box spam | ||
66 | // | ||
67 | // The base set of friends are added when the user signs on in their XMLRPC response | ||
68 | // Generated by LoginService. The friends are retreived from the database by the UserManager | ||
69 | |||
70 | // Subscribe to instant messages | ||
71 | client.OnInstantMessage += OnInstantMessage; | ||
72 | client.OnAgentDataUpdateRequest += OnAgentDataUpdateRequest; | ||
73 | lock (m_iclientmap) | ||
74 | { | ||
75 | if (!m_iclientmap.ContainsKey(client.AgentId)) | ||
76 | { | ||
77 | m_iclientmap.Add(client.AgentId, client); | ||
78 | } | ||
79 | } | ||
80 | GroupData OpenSimulatorGroup = new GroupData(); | ||
81 | OpenSimulatorGroup.ActiveGroupTitle = "OpenSimulator Tester"; | ||
82 | OpenSimulatorGroup.GroupID = new LLUUID("00000000-68f9-1111-024e-222222111120"); | ||
83 | OpenSimulatorGroup.GroupMembers.Add(client.AgentId); | ||
84 | OpenSimulatorGroup.groupName = "OpenSimulator Testing"; | ||
85 | OpenSimulatorGroup.ActiveGroupPowers = GroupPowers.LandAllowSetHome; | ||
86 | OpenSimulatorGroup.GroupTitles.Add("OpenSimulator Tester"); | ||
87 | lock (m_groupmap) | ||
88 | { | ||
89 | if (!m_groupmap.ContainsKey(client.AgentId)) | ||
90 | { | ||
91 | m_groupmap.Add(client.AgentId, OpenSimulatorGroup); | ||
92 | } | ||
93 | } | ||
94 | GroupList testGroupList = new GroupList(); | ||
95 | testGroupList.m_GroupList.Add(new LLUUID("00000000-68f9-1111-024e-222222111120")); | ||
96 | |||
97 | lock (m_grouplistmap) | ||
98 | { | ||
99 | if (!m_grouplistmap.ContainsKey(client.AgentId)) | ||
100 | { | ||
101 | m_grouplistmap.Add(client.AgentId, testGroupList); | ||
102 | } | ||
103 | } | ||
104 | m_log.Info("[GROUP]: Adding " + client.FirstName + " " + client.LastName + " to OpenSimulator Tester group"); | ||
105 | |||
106 | |||
107 | } | ||
108 | |||
109 | private void OnAgentDataUpdateRequest(IClientAPI remoteClient, LLUUID AgentID, LLUUID SessionID) | ||
110 | { | ||
111 | string firstname = remoteClient.FirstName; | ||
112 | string lastname = remoteClient.LastName; | ||
113 | |||
114 | LLUUID ActiveGroupID = LLUUID.Zero; | ||
115 | uint ActiveGroupPowers = 0; | ||
116 | string ActiveGroupName = ""; | ||
117 | string ActiveGroupTitle = ""; | ||
118 | |||
119 | bool foundUser = false; | ||
120 | |||
121 | lock (m_iclientmap) | ||
122 | { | ||
123 | if (m_iclientmap.ContainsKey(remoteClient.AgentId)) | ||
124 | { | ||
125 | foundUser = true; | ||
126 | } | ||
127 | } | ||
128 | if (foundUser) | ||
129 | { | ||
130 | lock (m_groupmap) | ||
131 | { | ||
132 | if (m_groupmap.ContainsKey(remoteClient.AgentId)) | ||
133 | { | ||
134 | GroupData grp = m_groupmap[remoteClient.AgentId]; | ||
135 | if (grp != null) | ||
136 | { | ||
137 | ActiveGroupID = grp.GroupID; | ||
138 | ActiveGroupName = grp.groupName; | ||
139 | ActiveGroupPowers = grp.groupPowers; | ||
140 | ActiveGroupTitle = grp.ActiveGroupTitle; | ||
141 | } | ||
142 | |||
143 | //remoteClient.SendAgentDataUpdate(AgentID, ActiveGroupID, firstname, lastname, ActiveGroupPowers, ActiveGroupName, ActiveGroupTitle); | ||
144 | |||
145 | } | ||
146 | } | ||
147 | } | ||
148 | |||
149 | } | ||
150 | |||
151 | private void OnInstantMessage(IClientAPI client, LLUUID fromAgentID, | ||
152 | LLUUID fromAgentSession, LLUUID toAgentID, | ||
153 | LLUUID imSessionID, uint timestamp, string fromAgentName, | ||
154 | string message, byte dialog, bool fromGroup, byte offline, | ||
155 | uint ParentEstateID, LLVector3 Position, LLUUID RegionID, | ||
156 | byte[] binaryBucket) | ||
157 | { | ||
158 | |||
159 | } | ||
160 | |||
161 | private void OnGridInstantMessage(GridInstantMessage msg) | ||
162 | { | ||
163 | // Trigger the above event handler | ||
164 | OnInstantMessage(null, new LLUUID(msg.fromAgentID), new LLUUID(msg.fromAgentSession), | ||
165 | new LLUUID(msg.toAgentID), new LLUUID(msg.imSessionID), msg.timestamp, msg.fromAgentName, | ||
166 | msg.message, msg.dialog, msg.fromGroup, msg.offline, msg.ParentEstateID, | ||
167 | new LLVector3(msg.Position.x, msg.Position.y, msg.Position.z), new LLUUID(msg.RegionID), | ||
168 | msg.binaryBucket); | ||
169 | } | ||
170 | |||
171 | private void OnClientClosed(LLUUID agentID) | ||
172 | { | ||
173 | lock (m_iclientmap) | ||
174 | { | ||
175 | if (m_iclientmap.ContainsKey(agentID)) | ||
176 | { | ||
177 | IClientAPI cli = m_iclientmap[agentID]; | ||
178 | if (cli != null) | ||
179 | { | ||
180 | m_log.Info("[GROUP]: Removing all reference to groups for " + cli.FirstName + " " + cli.LastName); | ||
181 | } | ||
182 | else | ||
183 | { | ||
184 | m_log.Info("[GROUP]: Removing all reference to groups for " + agentID.ToString()); | ||
185 | } | ||
186 | m_iclientmap.Remove(agentID); | ||
187 | } | ||
188 | } | ||
189 | |||
190 | lock (m_groupmap) | ||
191 | { | ||
192 | if (m_groupmap.ContainsKey(agentID)) | ||
193 | { | ||
194 | m_groupmap.Remove(agentID); | ||
195 | } | ||
196 | } | ||
197 | |||
198 | lock (m_grouplistmap) | ||
199 | { | ||
200 | if (m_grouplistmap.ContainsKey(agentID)) | ||
201 | { | ||
202 | m_grouplistmap.Remove(agentID); | ||
203 | } | ||
204 | } | ||
205 | GC.Collect(); | ||
42 | } | 206 | } |
43 | 207 | ||
44 | public void PostInitialise() | 208 | public void PostInitialise() |
@@ -47,6 +211,22 @@ namespace OpenSim.Region.Environment.Modules | |||
47 | 211 | ||
48 | public void Close() | 212 | public void Close() |
49 | { | 213 | { |
214 | m_log.Info("[GROUP]: Shutting down group module."); | ||
215 | lock (m_iclientmap) | ||
216 | { | ||
217 | m_iclientmap.Clear(); | ||
218 | } | ||
219 | |||
220 | lock (m_groupmap) | ||
221 | { | ||
222 | m_groupmap.Clear(); | ||
223 | } | ||
224 | |||
225 | lock (m_grouplistmap) | ||
226 | { | ||
227 | m_grouplistmap.Clear(); | ||
228 | } | ||
229 | GC.Collect(); | ||
50 | } | 230 | } |
51 | 231 | ||
52 | public string Name | 232 | public string Name |
@@ -56,7 +236,44 @@ namespace OpenSim.Region.Environment.Modules | |||
56 | 236 | ||
57 | public bool IsSharedModule | 237 | public bool IsSharedModule |
58 | { | 238 | { |
59 | get { return false; } | 239 | get { return true; } |
240 | } | ||
241 | |||
242 | } | ||
243 | public class GroupData | ||
244 | { | ||
245 | public LLUUID GroupID; | ||
246 | public string groupName; | ||
247 | public string ActiveGroupTitle; | ||
248 | public List<string> GroupTitles; | ||
249 | public List<LLUUID> GroupMembers; | ||
250 | public uint groupPowers = (uint)(GroupPowers.LandAllowLandmark | GroupPowers.LandAllowSetHome); | ||
251 | |||
252 | public GroupPowers ActiveGroupPowers | ||
253 | { | ||
254 | set | ||
255 | { | ||
256 | groupPowers = (uint) value; | ||
257 | } | ||
258 | get | ||
259 | { | ||
260 | return (GroupPowers)groupPowers; | ||
261 | } | ||
262 | } | ||
263 | |||
264 | public GroupData() | ||
265 | { | ||
266 | GroupTitles = new List<string>(); | ||
267 | GroupMembers = new List<LLUUID>(); | ||
268 | } | ||
269 | |||
270 | } | ||
271 | public class GroupList | ||
272 | { | ||
273 | public List<LLUUID> m_GroupList; | ||
274 | public GroupList() | ||
275 | { | ||
276 | m_GroupList = new List<LLUUID>(); | ||
60 | } | 277 | } |
61 | } | 278 | } |
62 | } \ No newline at end of file | 279 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs index 0258c61..089dee7 100644 --- a/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs | |||
@@ -89,6 +89,9 @@ namespace SimpleApp | |||
89 | public event MoveObject OnGrabUpdate; | 89 | public event MoveObject OnGrabUpdate; |
90 | public event ViewerEffectEventHandler OnViewerEffect; | 90 | public event ViewerEffectEventHandler OnViewerEffect; |
91 | 91 | ||
92 | public event FetchInventory OnAgentDataUpdateRequest; | ||
93 | public event FetchInventory OnUserInfoRequest; | ||
94 | public event TeleportLocationRequest OnSetStartLocationRequest; | ||
92 | 95 | ||
93 | public event UpdateShape OnUpdatePrimShape; | 96 | public event UpdateShape OnUpdatePrimShape; |
94 | public event ObjectExtraParams OnUpdateExtraParams; | 97 | public event ObjectExtraParams OnUpdateExtraParams; |
@@ -226,6 +229,11 @@ namespace SimpleApp | |||
226 | { | 229 | { |
227 | } | 230 | } |
228 | 231 | ||
232 | public virtual void SendAgentDataUpdate(LLUUID agentid, LLUUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname, string grouptitle) | ||
233 | { | ||
234 | |||
235 | } | ||
236 | |||
229 | public virtual void SendKillObject(ulong regionHandle, uint localID) | 237 | public virtual void SendKillObject(ulong regionHandle, uint localID) |
230 | { | 238 | { |
231 | } | 239 | } |