diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs | 39 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 11 |
2 files changed, 44 insertions, 6 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs index f9d0e0a..3355ebe 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs | |||
@@ -154,6 +154,45 @@ namespace OpenSim.Region.Framework.Scenes | |||
154 | } | 154 | } |
155 | 155 | ||
156 | /// <summary> | 156 | /// <summary> |
157 | /// Handle the update of an object's user group. | ||
158 | /// </summary> | ||
159 | /// <param name="remoteClient"></param> | ||
160 | /// <param name="groupID"></param> | ||
161 | /// <param name="objectLocalID"></param> | ||
162 | /// <param name="Garbage"></param> | ||
163 | private void HandleObjectGroupUpdate( | ||
164 | IClientAPI remoteClient, UUID groupID, uint objectLocalID, UUID Garbage) | ||
165 | { | ||
166 | if (m_groupsModule == null) | ||
167 | return; | ||
168 | |||
169 | // XXX: Might be better to get rid of this special casing and have GetMembershipData return something | ||
170 | // reasonable for a UUID.Zero group. | ||
171 | if (groupID != UUID.Zero) | ||
172 | { | ||
173 | GroupMembershipData gmd = m_groupsModule.GetMembershipData(groupID, remoteClient.AgentId); | ||
174 | |||
175 | if (gmd == null) | ||
176 | { | ||
177 | // m_log.WarnFormat( | ||
178 | // "[GROUPS]: User {0} is not a member of group {1} so they can't update {2} to this group", | ||
179 | // remoteClient.Name, GroupID, objectLocalID); | ||
180 | |||
181 | return; | ||
182 | } | ||
183 | } | ||
184 | |||
185 | SceneObjectGroup so = ((Scene)remoteClient.Scene).GetGroupByPrim(objectLocalID); | ||
186 | if (so != null) | ||
187 | { | ||
188 | if (so.OwnerID == remoteClient.AgentId) | ||
189 | { | ||
190 | so.SetGroup(groupID, remoteClient); | ||
191 | } | ||
192 | } | ||
193 | } | ||
194 | |||
195 | /// <summary> | ||
157 | /// Handle the deselection of a prim from the client. | 196 | /// Handle the deselection of a prim from the client. |
158 | /// </summary> | 197 | /// </summary> |
159 | /// <param name="primLocalID"></param> | 198 | /// <param name="primLocalID"></param> |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 4914d65..6666328 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -139,6 +139,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
139 | protected IDialogModule m_dialogModule; | 139 | protected IDialogModule m_dialogModule; |
140 | protected IEntityTransferModule m_teleportModule; | 140 | protected IEntityTransferModule m_teleportModule; |
141 | protected ICapabilitiesModule m_capsModule; | 141 | protected ICapabilitiesModule m_capsModule; |
142 | protected IGroupsModule m_groupsModule; | ||
142 | 143 | ||
143 | /// <summary> | 144 | /// <summary> |
144 | /// Current scene frame number | 145 | /// Current scene frame number |
@@ -1164,6 +1165,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1164 | m_dialogModule = RequestModuleInterface<IDialogModule>(); | 1165 | m_dialogModule = RequestModuleInterface<IDialogModule>(); |
1165 | m_capsModule = RequestModuleInterface<ICapabilitiesModule>(); | 1166 | m_capsModule = RequestModuleInterface<ICapabilitiesModule>(); |
1166 | m_teleportModule = RequestModuleInterface<IEntityTransferModule>(); | 1167 | m_teleportModule = RequestModuleInterface<IEntityTransferModule>(); |
1168 | m_groupsModule = RequestModuleInterface<IGroupsModule>(); | ||
1167 | } | 1169 | } |
1168 | 1170 | ||
1169 | #endregion | 1171 | #endregion |
@@ -2733,6 +2735,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2733 | client.OnObjectDescription += m_sceneGraph.PrimDescription; | 2735 | client.OnObjectDescription += m_sceneGraph.PrimDescription; |
2734 | client.OnObjectIncludeInSearch += m_sceneGraph.MakeObjectSearchable; | 2736 | client.OnObjectIncludeInSearch += m_sceneGraph.MakeObjectSearchable; |
2735 | client.OnObjectOwner += ObjectOwner; | 2737 | client.OnObjectOwner += ObjectOwner; |
2738 | client.OnObjectGroupRequest += HandleObjectGroupUpdate; | ||
2736 | } | 2739 | } |
2737 | 2740 | ||
2738 | public virtual void SubscribeToClientPrimRezEvents(IClientAPI client) | 2741 | public virtual void SubscribeToClientPrimRezEvents(IClientAPI client) |
@@ -3520,15 +3523,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
3520 | m_log.ErrorFormat("[CONNECTION BEGIN]: Estate Settings is null!"); | 3523 | m_log.ErrorFormat("[CONNECTION BEGIN]: Estate Settings is null!"); |
3521 | } | 3524 | } |
3522 | 3525 | ||
3523 | IGroupsModule groupsModule = | ||
3524 | RequestModuleInterface<IGroupsModule>(); | ||
3525 | |||
3526 | List<UUID> agentGroups = new List<UUID>(); | 3526 | List<UUID> agentGroups = new List<UUID>(); |
3527 | 3527 | ||
3528 | if (groupsModule != null) | 3528 | if (m_groupsModule != null) |
3529 | { | 3529 | { |
3530 | GroupMembershipData[] GroupMembership = | 3530 | GroupMembershipData[] GroupMembership = m_groupsModule.GetMembershipData(agent.AgentID); |
3531 | groupsModule.GetMembershipData(agent.AgentID); | ||
3532 | 3531 | ||
3533 | if (GroupMembership != null) | 3532 | if (GroupMembership != null) |
3534 | { | 3533 | { |