aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorUbitUmarov2016-08-29 12:18:01 +0100
committerUbitUmarov2016-08-29 12:18:01 +0100
commitd96c05a1219a60183f5076f6c6f0bdd320611fd5 (patch)
tree4e0fbec610b11574bde78b2eb6556c9721f6b7c4 /OpenSim
parentmantis 8006: AttachmentModule triggered OnAttach by SOG xengine expects by SOP (diff)
downloadopensim-SC-d96c05a1219a60183f5076f6c6f0bdd320611fd5.zip
opensim-SC-d96c05a1219a60183f5076f6c6f0bdd320611fd5.tar.gz
opensim-SC-d96c05a1219a60183f5076f6c6f0bdd320611fd5.tar.bz2
opensim-SC-d96c05a1219a60183f5076f6c6f0bdd320611fd5.tar.xz
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
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs16
-rw-r--r--OpenSim/Region/ScriptEngine/XEngine/EventManager.cs9
2 files changed, 11 insertions, 14 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index 1563f26..d227974 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -599,8 +599,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
599 // this can't be done when creating scripts: 599 // this can't be done when creating scripts:
600 // scripts do internal enqueue of attach event 600 // scripts do internal enqueue of attach event
601 // and not all scripts are loaded at this point 601 // and not all scripts are loaded at this point
602// m_scene.EventManager.TriggerOnAttach(group.LocalId, group.FromItemID, sp.UUID); 602 m_scene.EventManager.TriggerOnAttach(group.LocalId, group.FromItemID, sp.UUID);
603 TriggerGroupOnAttach(group, sp.UUID);
604 } 603 }
605 604
606 return true; 605 return true;
@@ -760,8 +759,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
760 sp.ControllingClient.SendRemoveInventoryItem(inventoryID); 759 sp.ControllingClient.SendRemoveInventoryItem(inventoryID);
761 } 760 }
762 761
763 //m_scene.EventManager.TriggerOnAttach(so.LocalId, so.UUID, UUID.Zero); 762 m_scene.EventManager.TriggerOnAttach(so.LocalId, so.UUID, UUID.Zero);
764 TriggerGroupOnAttach(so, UUID.Zero);
765 763
766 // Attach (NULL) stops scripts. We don't want that. Resume them. 764 // Attach (NULL) stops scripts. We don't want that. Resume them.
767 so.ResumeScripts(); 765 so.ResumeScripts();
@@ -1058,8 +1056,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
1058 { 1056 {
1059 if (fireDetachEvent) 1057 if (fireDetachEvent)
1060 { 1058 {
1061// m_scene.EventManager.TriggerOnAttach(grp.LocalId, grp.FromItemID, UUID.Zero); 1059 m_scene.EventManager.TriggerOnAttach(grp.LocalId, grp.FromItemID, UUID.Zero);
1062 TriggerGroupOnAttach(grp, UUID.Zero);
1063 // Allow detach event time to do some work before stopping the script 1060 // Allow detach event time to do some work before stopping the script
1064 Thread.Sleep(2); 1061 Thread.Sleep(2);
1065 } 1062 }
@@ -1384,13 +1381,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
1384 if (sp != null) 1381 if (sp != null)
1385 DetachSingleAttachmentToGround(sp, soLocalId); 1382 DetachSingleAttachmentToGround(sp, soLocalId);
1386 } 1383 }
1387
1388 private void TriggerGroupOnAttach(SceneObjectGroup grp, UUID avatarID)
1389 {
1390 UUID item = grp.FromItemID; // this maybe wrong but xengine ignores it
1391 foreach(SceneObjectPart part in grp.Parts)
1392 m_scene.EventManager.TriggerOnAttach(part.LocalId, item, avatarID);
1393 }
1394 #endregion 1384 #endregion
1395 } 1385 }
1396} 1386}
diff --git a/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs b/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs
index f1b1e66..301eada 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs
@@ -408,10 +408,17 @@ namespace OpenSim.Region.ScriptEngine.XEngine
408 408
409 public void attach(uint localID, UUID itemID, UUID avatar) 409 public void attach(uint localID, UUID itemID, UUID avatar)
410 { 410 {
411 myScriptEngine.PostObjectEvent(localID, new EventParams( 411 SceneObjectGroup grp = myScriptEngine.World.GetSceneObjectGroup(localID);
412 if(grp == null)
413 return;
414
415 foreach(SceneObjectPart part in grp.Parts)
416 {
417 myScriptEngine.PostObjectEvent(part.LocalId, new EventParams(
412 "attach",new object[] { 418 "attach",new object[] {
413 new LSL_Types.LSLString(avatar.ToString()) }, 419 new LSL_Types.LSLString(avatar.ToString()) },
414 new DetectParams[0])); 420 new DetectParams[0]));
421 }
415 } 422 }
416 423
417 // dataserver: not handled here 424 // dataserver: not handled here