Fire EventManager.TriggerOnAttach (and hence LSL attach event) when an object is attached from the scene.

Enables previously disabled regression test.
Based on SingpostMarv's patch in http://opensimulator.org/mantis/view.php?id=6302 but I prefer a simpler approach that does not expose a resume scripts option right now.
connector_plugin
Justin Clark-Casey (justincc) 2012-09-29 01:14:23 +01:00
parent fae869c4ca
commit 818379ba14
2 changed files with 18 additions and 14 deletions

View File

@ -238,8 +238,22 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
sp.ClearAttachments();
}
public bool AttachObject(IScenePresence sp, SceneObjectGroup group, uint attachmentPt, bool silent, bool temp)
{
if (!Enabled)
return false;
if (AttachObjectInternal(sp, group, attachmentPt, silent, temp))
{
m_scene.EventManager.TriggerOnAttach(group.LocalId, group.FromItemID, sp.UUID);
return true;
}
return false;
}
private bool AttachObjectInternal(IScenePresence sp, SceneObjectGroup group, uint attachmentPt, bool silent, bool temp)
{
lock (sp.AttachmentsSyncLock)
{
@ -794,7 +808,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
// This will throw if the attachment fails
try
{
AttachObject(sp, objatt, attachmentPt, false, false);
AttachObjectInternal(sp, objatt, attachmentPt, false, false);
}
catch (Exception e)
{
@ -951,15 +965,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
AttachmentPt &= 0x7f;
// Calls attach with a Zero position
if (AttachObject(sp, part.ParentGroup, AttachmentPt, false, false))
{
// m_log.Debug(
// "[ATTACHMENTS MODULE]: Saving avatar attachment. AgentID: " + remoteClient.AgentId
// + ", AttachmentPoint: " + AttachmentPt);
// Save avatar attachment information
m_scene.EventManager.TriggerOnAttach(objectLocalID, part.ParentGroup.FromItemID, remoteClient.AgentId);
}
AttachObject(sp, part.ParentGroup, AttachmentPt, false, false);
}
catch (Exception e)
{

View File

@ -225,9 +225,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
Assert.That(scene.GetSceneObjectGroups().Count, Is.EqualTo(1));
// Check events
// FIXME: This is currently not occuring!
// Assert.That(m_numberOfAttachEventsFired, Is.EqualTo(1));
Assert.That(m_numberOfAttachEventsFired, Is.EqualTo(1));
}
/// <summary>