aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs19
-rw-r--r--OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs4
2 files changed, 12 insertions, 11 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index 732e3e3..42a18c5 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -449,29 +449,30 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
449 } 449 }
450 } 450 }
451 451
452 public void DetachSingleAttachmentToGround(UUID itemID, IClientAPI remoteClient) 452 public void DetachSingleAttachmentToGround(UUID sceneObjectID, IClientAPI remoteClient)
453 { 453 {
454 SceneObjectPart part = m_scene.GetSceneObjectPart(itemID); 454 SceneObjectGroup so = m_scene.GetSceneObjectGroup(sceneObjectID);
455 if (part == null || part.ParentGroup == null) 455
456 if (so == null)
456 return; 457 return;
457 458
458 if (part.ParentGroup.RootPart.AttachedAvatar != remoteClient.AgentId) 459 if (so.RootPart.AttachedAvatar != remoteClient.AgentId)
459 return; 460 return;
460 461
461 UUID inventoryID = part.ParentGroup.GetFromItemID(); 462 UUID inventoryID = so.GetFromItemID();
462 463
463 ScenePresence presence; 464 ScenePresence presence;
464 if (m_scene.TryGetScenePresence(remoteClient.AgentId, out presence)) 465 if (m_scene.TryGetScenePresence(remoteClient.AgentId, out presence))
465 { 466 {
466 if (!m_scene.Permissions.CanRezObject( 467 if (!m_scene.Permissions.CanRezObject(
467 part.ParentGroup.PrimCount, remoteClient.AgentId, presence.AbsolutePosition)) 468 so.PrimCount, remoteClient.AgentId, presence.AbsolutePosition))
468 return; 469 return;
469 470
470 bool changed = presence.Appearance.DetachAttachment(itemID); 471 bool changed = presence.Appearance.DetachAttachment(sceneObjectID);
471 if (changed && m_scene.AvatarFactory != null) 472 if (changed && m_scene.AvatarFactory != null)
472 m_scene.AvatarFactory.QueueAppearanceSave(remoteClient.AgentId); 473 m_scene.AvatarFactory.QueueAppearanceSave(remoteClient.AgentId);
473 474
474 part.ParentGroup.DetachToGround(); 475 so.DetachToGround();
475 476
476 List<UUID> uuids = new List<UUID>(); 477 List<UUID> uuids = new List<UUID>();
477 uuids.Add(inventoryID); 478 uuids.Add(inventoryID);
@@ -479,7 +480,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
479 remoteClient.SendRemoveInventoryItem(inventoryID); 480 remoteClient.SendRemoveInventoryItem(inventoryID);
480 } 481 }
481 482
482 m_scene.EventManager.TriggerOnAttach(part.ParentGroup.LocalId, itemID, UUID.Zero); 483 m_scene.EventManager.TriggerOnAttach(so.LocalId, sceneObjectID, UUID.Zero);
483 } 484 }
484 485
485 // What makes this method odd and unique is it tries to detach using an UUID.... Yay for standards. 486 // What makes this method odd and unique is it tries to detach using an UUID.... Yay for standards.
diff --git a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
index 0c82411..86f5a0f 100644
--- a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
@@ -105,9 +105,9 @@ namespace OpenSim.Region.Framework.Interfaces
105 /// <summary> 105 /// <summary>
106 /// Detach the given item to the ground. 106 /// Detach the given item to the ground.
107 /// </summary> 107 /// </summary>
108 /// <param name="itemID"></param> 108 /// <param name="sceneObjectID"></param>
109 /// <param name="remoteClient"></param> 109 /// <param name="remoteClient"></param>
110 void DetachSingleAttachmentToGround(UUID itemID, IClientAPI remoteClient); 110 void DetachSingleAttachmentToGround(UUID sceneObjectID, IClientAPI remoteClient);
111 111
112 /// <summary> 112 /// <summary>
113 /// Detach the given item so that it remains in the user's inventory. 113 /// Detach the given item so that it remains in the user's inventory.