diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs index 9a6fce9285..1563f26c2a 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs @@ -599,7 +599,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments // this can't be done when creating scripts: // scripts do internal enqueue of attach event // and not all scripts are loaded at this point - m_scene.EventManager.TriggerOnAttach(group.LocalId, group.FromItemID, sp.UUID); +// m_scene.EventManager.TriggerOnAttach(group.LocalId, group.FromItemID, sp.UUID); + TriggerGroupOnAttach(group, sp.UUID); } return true; @@ -759,7 +760,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments sp.ControllingClient.SendRemoveInventoryItem(inventoryID); } - m_scene.EventManager.TriggerOnAttach(so.LocalId, so.UUID, UUID.Zero); + //m_scene.EventManager.TriggerOnAttach(so.LocalId, so.UUID, UUID.Zero); + TriggerGroupOnAttach(so, UUID.Zero); // Attach (NULL) stops scripts. We don't want that. Resume them. so.ResumeScripts(); @@ -1056,8 +1058,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments { if (fireDetachEvent) { - m_scene.EventManager.TriggerOnAttach(grp.LocalId, grp.FromItemID, UUID.Zero); - +// m_scene.EventManager.TriggerOnAttach(grp.LocalId, grp.FromItemID, UUID.Zero); + TriggerGroupOnAttach(grp, UUID.Zero); // Allow detach event time to do some work before stopping the script Thread.Sleep(2); } @@ -1383,6 +1385,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments DetachSingleAttachmentToGround(sp, soLocalId); } + private void TriggerGroupOnAttach(SceneObjectGroup grp, UUID avatarID) + { + UUID item = grp.FromItemID; // this maybe wrong but xengine ignores it + foreach(SceneObjectPart part in grp.Parts) + m_scene.EventManager.TriggerOnAttach(part.LocalId, item, avatarID); + } #endregion } }