change my previus fix, change xengine to expect SOG and not attachments module, this way not breaking other script engines or modules out there for no valid reason
parent
a4bf78fa19
commit
d96c05a121
|
@ -599,8 +599,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
||||||
// this can't be done when creating scripts:
|
// this can't be done when creating scripts:
|
||||||
// scripts do internal enqueue of attach event
|
// scripts do internal enqueue of attach event
|
||||||
// and not all scripts are loaded at this point
|
// 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;
|
return true;
|
||||||
|
@ -760,8 +759,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
||||||
sp.ControllingClient.SendRemoveInventoryItem(inventoryID);
|
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.
|
// Attach (NULL) stops scripts. We don't want that. Resume them.
|
||||||
so.ResumeScripts();
|
so.ResumeScripts();
|
||||||
|
@ -1058,8 +1056,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
||||||
{
|
{
|
||||||
if (fireDetachEvent)
|
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
|
// Allow detach event time to do some work before stopping the script
|
||||||
Thread.Sleep(2);
|
Thread.Sleep(2);
|
||||||
}
|
}
|
||||||
|
@ -1384,13 +1381,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
||||||
if (sp != null)
|
if (sp != null)
|
||||||
DetachSingleAttachmentToGround(sp, soLocalId);
|
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
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -408,11 +408,18 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
|
|
||||||
public void attach(uint localID, UUID itemID, UUID avatar)
|
public void attach(uint localID, UUID itemID, UUID avatar)
|
||||||
{
|
{
|
||||||
myScriptEngine.PostObjectEvent(localID, new EventParams(
|
SceneObjectGroup grp = myScriptEngine.World.GetSceneObjectGroup(localID);
|
||||||
|
if(grp == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
foreach(SceneObjectPart part in grp.Parts)
|
||||||
|
{
|
||||||
|
myScriptEngine.PostObjectEvent(part.LocalId, new EventParams(
|
||||||
"attach",new object[] {
|
"attach",new object[] {
|
||||||
new LSL_Types.LSLString(avatar.ToString()) },
|
new LSL_Types.LSLString(avatar.ToString()) },
|
||||||
new DetectParams[0]));
|
new DetectParams[0]));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// dataserver: not handled here
|
// dataserver: not handled here
|
||||||
// link_message: not handled here
|
// link_message: not handled here
|
||||||
|
|
Loading…
Reference in New Issue