diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/InnerScene.cs | 23 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 1 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | 11 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | 8 |
4 files changed, 42 insertions, 1 deletions
diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs index 352fdf9..7a460a2 100644 --- a/OpenSim/Region/Environment/Scenes/InnerScene.cs +++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs | |||
@@ -330,7 +330,30 @@ namespace OpenSim.Region.Environment.Scenes | |||
330 | 330 | ||
331 | 331 | ||
332 | } | 332 | } |
333 | public void HandleObjectGroupUpdate( | ||
334 | IClientAPI remoteClient, LLUUID GroupID, uint objectLocalID, LLUUID Garbage) | ||
335 | { | ||
336 | List<EntityBase> EntityList = GetEntities(); | ||
333 | 337 | ||
338 | foreach (EntityBase obj in EntityList) | ||
339 | { | ||
340 | if (obj is SceneObjectGroup) | ||
341 | { | ||
342 | if (((SceneObjectGroup)obj).LocalId == objectLocalID) | ||
343 | { | ||
344 | SceneObjectGroup group = (SceneObjectGroup)obj; | ||
345 | |||
346 | if (m_parentScene.ExternalChecks.ExternalChecksCanEditObject(group.UUID, remoteClient.AgentId)) | ||
347 | group.SetGroup(GroupID, remoteClient); | ||
348 | else | ||
349 | remoteClient.SendAgentAlertMessage("You don't have permission to set the group", false); | ||
350 | |||
351 | } | ||
352 | } | ||
353 | } | ||
354 | |||
355 | |||
356 | } | ||
334 | /// <summary> | 357 | /// <summary> |
335 | /// Event Handling routine for Attach Object | 358 | /// Event Handling routine for Attach Object |
336 | /// </summary> | 359 | /// </summary> |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index a798f40..d4b85c2 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -1651,6 +1651,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1651 | 1651 | ||
1652 | client.OnSetStartLocationRequest += SetHomeRezPoint; | 1652 | client.OnSetStartLocationRequest += SetHomeRezPoint; |
1653 | client.OnUndo += m_innerScene.HandleUndo; | 1653 | client.OnUndo += m_innerScene.HandleUndo; |
1654 | client.OnObjectGroupRequest += m_innerScene.HandleObjectGroupUpdate; | ||
1654 | 1655 | ||
1655 | EventManager.TriggerOnNewClient(client); | 1656 | EventManager.TriggerOnNewClient(client); |
1656 | } | 1657 | } |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 635a989..44e4c81 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | |||
@@ -2510,5 +2510,16 @@ namespace OpenSim.Region.Environment.Scenes | |||
2510 | } | 2510 | } |
2511 | } | 2511 | } |
2512 | } | 2512 | } |
2513 | public void SetGroup(LLUUID GroupID, IClientAPI client) | ||
2514 | { | ||
2515 | lock (m_parts) | ||
2516 | { | ||
2517 | foreach (SceneObjectPart part in m_parts.Values) | ||
2518 | { | ||
2519 | part.SetGroup(GroupID, client); | ||
2520 | } | ||
2521 | } | ||
2522 | ScheduleGroupForFullUpdate(); | ||
2523 | } | ||
2513 | } | 2524 | } |
2514 | } | 2525 | } |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index a7b7692..a23083c 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | |||
@@ -2760,13 +2760,19 @@ namespace OpenSim.Region.Environment.Scenes | |||
2760 | public void GetProperties(IClientAPI client) | 2760 | public void GetProperties(IClientAPI client) |
2761 | { | 2761 | { |
2762 | 2762 | ||
2763 | client.SendObjectPropertiesReply(LLUUID.Zero, (ulong)CreationDate, CreatorID, LLUUID.Zero, LLUUID.Zero, | 2763 | client.SendObjectPropertiesReply(LLUUID.Zero, (ulong)CreationDate, CreatorID, LLUUID.Zero, GroupID, |
2764 | LLUUID.Zero, (short)InventorySerial, LastOwnerID, UUID, OwnerID, | 2764 | LLUUID.Zero, (short)InventorySerial, LastOwnerID, UUID, OwnerID, |
2765 | ParentGroup.RootPart.TouchName, new byte[0], ParentGroup.RootPart.SitName, Name, Description, | 2765 | ParentGroup.RootPart.TouchName, new byte[0], ParentGroup.RootPart.SitName, Name, Description, |
2766 | ParentGroup.RootPart.OwnerMask, ParentGroup.RootPart.NextOwnerMask, ParentGroup.RootPart.GroupMask, ParentGroup.RootPart.EveryoneMask, | 2766 | ParentGroup.RootPart.OwnerMask, ParentGroup.RootPart.NextOwnerMask, ParentGroup.RootPart.GroupMask, ParentGroup.RootPart.EveryoneMask, |
2767 | ParentGroup.RootPart.BaseMask); | 2767 | ParentGroup.RootPart.BaseMask); |
2768 | 2768 | ||
2769 | } | 2769 | } |
2770 | public void SetGroup(LLUUID groupID, IClientAPI client) | ||
2771 | { | ||
2772 | GroupID = groupID; | ||
2773 | GetProperties(client); | ||
2774 | m_updateFlag = 2; | ||
2775 | } | ||
2770 | 2776 | ||
2771 | } | 2777 | } |
2772 | } | 2778 | } |