From ece38437983440449acbc7f7202c470e72ae4e61 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Thu, 21 Feb 2019 22:54:17 +0000 Subject: let changed allowed drop have lldetectedkey[0] return the dropped item id, Yengine and still testing" --- OpenSim/Region/Framework/Scenes/EventManager.cs | 6 +++--- OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 4 ++-- .../Region/Framework/Scenes/SceneObjectPartInventory.cs | 2 +- OpenSim/Region/ScriptEngine/XEngine/EventManager.cs | 2 +- OpenSim/Region/ScriptEngine/YEngine/XMREvents.cs | 17 +++++++++++++++-- 5 files changed, 22 insertions(+), 9 deletions(-) (limited to 'OpenSim') diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index f76f882..edc8886 100644 --- a/OpenSim/Region/Framework/Scenes/EventManager.cs +++ b/OpenSim/Region/Framework/Scenes/EventManager.cs @@ -539,7 +539,7 @@ namespace OpenSim.Region.Framework.Scenes /// /// public event ScriptChangedEvent OnScriptChangedEvent; - public delegate void ScriptChangedEvent(uint localID, uint change); + public delegate void ScriptChangedEvent(uint localID, uint change, object data); public delegate void ScriptControlEvent(UUID item, UUID avatarID, uint held, uint changed); @@ -1185,7 +1185,7 @@ namespace OpenSim.Region.Framework.Scenes } } - public void TriggerOnScriptChangedEvent(uint localID, uint change) + public void TriggerOnScriptChangedEvent(uint localID, uint change, object parameter = null) { ScriptChangedEvent handlerScriptChangedEvent = OnScriptChangedEvent; if (handlerScriptChangedEvent != null) @@ -1194,7 +1194,7 @@ namespace OpenSim.Region.Framework.Scenes { try { - d(localID, change); + d(localID, change, parameter); } catch (Exception e) { diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index a23ebbf..23bef74 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -4439,10 +4439,10 @@ namespace OpenSim.Region.Framework.Scenes SceneObjectSerializer.SOPToXml2(xmlWriter, this, new Dictionary()); } - public void TriggerScriptChangedEvent(Changed val) + public void TriggerScriptChangedEvent(Changed val, object data = null) { if (ParentGroup != null && ParentGroup.Scene != null) - ParentGroup.Scene.EventManager.TriggerOnScriptChangedEvent(LocalId, (uint)val); + ParentGroup.Scene.EventManager.TriggerOnScriptChangedEvent(LocalId, (uint)val, data); } public void TrimPermissions() diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index bc9ab7f..a0f8959 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs @@ -816,7 +816,7 @@ namespace OpenSim.Region.Framework.Scenes m_items.Add(item.ItemID, item); m_items.LockItemsForWrite(false); if (allowedDrop) - m_part.TriggerScriptChangedEvent(Changed.ALLOWED_DROP); + m_part.TriggerScriptChangedEvent(Changed.ALLOWED_DROP, item.ItemID); else m_part.TriggerScriptChangedEvent(Changed.INVENTORY); diff --git a/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs b/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs index b7fc161..7c2136e 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs @@ -215,7 +215,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine det)); } - public void changed(uint localID, uint change) + public void changed(uint localID, uint change, object parameter) { // Add to queue for all scripts in localID, Object pass change. myScriptEngine.PostObjectEvent(localID, new EventParams( diff --git a/OpenSim/Region/ScriptEngine/YEngine/XMREvents.cs b/OpenSim/Region/ScriptEngine/YEngine/XMREvents.cs index 5a8b2a3..eb5aeeb 100644 --- a/OpenSim/Region/ScriptEngine/YEngine/XMREvents.cs +++ b/OpenSim/Region/ScriptEngine/YEngine/XMREvents.cs @@ -182,13 +182,26 @@ namespace OpenSim.Region.ScriptEngine.Yengine new DetectParams[] { det })); } - public void changed(uint localID, uint change) + public void changed(uint localID, uint change, object data) { int ch = (int)change; // Add to queue for all scripts in localID, Object pass change. - this.PostObjectEvent(localID, new EventParams( + if(data == null) + { + PostObjectEvent(localID, new EventParams( "changed", new object[] { ch }, zeroDetectParams)); + return; + } + if ( data is UUID) + { + DetectParams det = new DetectParams(); + det.Key = (UUID)data; + PostObjectEvent(localID, new EventParams( + "changed", new object[] { ch }, + new DetectParams[] { det })); + return; + } } // state_entry: not processed here -- cgit v1.1