aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r--OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs7
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs30
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs4
3 files changed, 8 insertions, 33 deletions
diff --git a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
index 77e9a7e..d43ce1f 100644
--- a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
@@ -92,6 +92,13 @@ namespace OpenSim.Region.Framework.Interfaces
92 IClientAPI remoteClient, 92 IClientAPI remoteClient,
93 RezMultipleAttachmentsFromInvPacket.HeaderDataBlock header, 93 RezMultipleAttachmentsFromInvPacket.HeaderDataBlock header,
94 RezMultipleAttachmentsFromInvPacket.ObjectDataBlock[] objects); 94 RezMultipleAttachmentsFromInvPacket.ObjectDataBlock[] objects);
95
96 /// <summary>
97 /// Detach the given item to the ground.
98 /// </summary>
99 /// <param name="itemID"></param>
100 /// <param name="remoteClient"></param>
101 void DetachSingleAttachmentToGround(UUID itemID, IClientAPI remoteClient);
95 102
96 /// <summary> 103 /// <summary>
97 /// Update the user inventory to the attachment of an item 104 /// Update the user inventory to the attachment of an item
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index a90c4b3..e3f1636 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1873,36 +1873,6 @@ namespace OpenSim.Region.Framework.Scenes
1873 EventManager.TriggerOnAttach(localID, itemID, avatarID); 1873 EventManager.TriggerOnAttach(localID, itemID, avatarID);
1874 } 1874 }
1875 1875
1876 public void DetachSingleAttachmentToGround(UUID itemID, IClientAPI remoteClient)
1877 {
1878 SceneObjectPart part = GetSceneObjectPart(itemID);
1879 if (part == null || part.ParentGroup == null)
1880 return;
1881
1882 UUID inventoryID = part.ParentGroup.GetFromItemID();
1883
1884 ScenePresence presence;
1885 if (TryGetScenePresence(remoteClient.AgentId, out presence))
1886 {
1887 if (!Permissions.CanRezObject(part.ParentGroup.Children.Count, remoteClient.AgentId, presence.AbsolutePosition))
1888 return;
1889
1890 presence.Appearance.DetachAttachment(itemID);
1891 IAvatarFactory ava = RequestModuleInterface<IAvatarFactory>();
1892 if (ava != null)
1893 {
1894 ava.UpdateDatabase(remoteClient.AgentId, presence.Appearance);
1895 }
1896 part.ParentGroup.DetachToGround();
1897
1898 List<UUID> uuids = new List<UUID>();
1899 uuids.Add(inventoryID);
1900 InventoryService.DeleteItems(remoteClient.AgentId, uuids);
1901 remoteClient.SendRemoveInventoryItem(inventoryID);
1902 }
1903 SendAttachEvent(part.ParentGroup.LocalId, itemID, UUID.Zero);
1904 }
1905
1906 public void GetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID) 1876 public void GetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID)
1907 { 1877 {
1908 EventManager.TriggerGetScriptRunning(controllingClient, objectID, itemID); 1878 EventManager.TriggerGetScriptRunning(controllingClient, objectID, itemID);
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 23a4ee9..89eb54d 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -443,9 +443,7 @@ namespace OpenSim.Region.Framework.Scenes
443 { 443 {
444 SceneObjectGroup group = GetGroupByPrim(objectLocalID); 444 SceneObjectGroup group = GetGroupByPrim(objectLocalID);
445 if (group != null) 445 if (group != null)
446 { 446 m_parentScene.AttachmentsModule.DetachSingleAttachmentToGround(group.UUID, remoteClient);
447 m_parentScene.DetachSingleAttachmentToGround(group.UUID, remoteClient);
448 }
449 } 447 }
450 448
451 protected internal void DetachObject(uint objectLocalID, IClientAPI remoteClient) 449 protected internal void DetachObject(uint objectLocalID, IClientAPI remoteClient)