From 186f0b73cd9c3005fc75a9925bc65902d26d497b Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 21 Jan 2017 10:22:00 +0000 Subject: add/fix CanRunScript --- .../Region/Framework/Scenes/Scene.Permissions.cs | 24 ++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes/Scene.Permissions.cs') diff --git a/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs b/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs index 6925b6c..e941210 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs @@ -60,7 +60,8 @@ namespace OpenSim.Region.Framework.Scenes public delegate bool ViewNotecardHandler(UUID script, UUID objectID, UUID user, Scene scene); public delegate bool EditScriptHandler(UUID script, UUID objectID, UUID user, Scene scene); public delegate bool EditNotecardHandler(UUID notecard, UUID objectID, UUID user, Scene scene); - public delegate bool RunScriptHandler(UUID script, UUID objectID, UUID user, Scene scene); + public delegate bool RunScriptHandlerByIDs(UUID script, UUID objectID, UUID user, Scene scene); + public delegate bool RunScriptHandler(TaskInventoryItem item, SceneObjectPart part); public delegate bool CompileScriptHandler(UUID ownerUUID, int scriptType, Scene scene); public delegate bool StartScriptHandler(UUID script, UUID user, Scene scene); public delegate bool StopScriptHandler(UUID script, UUID user, Scene scene); @@ -131,6 +132,7 @@ namespace OpenSim.Region.Framework.Scenes public event ViewNotecardHandler OnViewNotecard; public event EditScriptHandler OnEditScript; public event EditNotecardHandler OnEditNotecard; + public event RunScriptHandlerByIDs OnRunScriptByIDs; public event RunScriptHandler OnRunScript; public event CompileScriptHandler OnCompileScript; public event StartScriptHandler OnStartScript; @@ -654,19 +656,37 @@ namespace OpenSim.Region.Framework.Scenes #region RUN SCRIPT (When Script Placed in Object) public bool CanRunScript(UUID script, UUID objectID, UUID user) { + RunScriptHandlerByIDs handler = OnRunScriptByIDs; + if (handler != null) + { + Delegate[] list = handler.GetInvocationList(); + foreach (RunScriptHandlerByIDs h in list) + { + if (h(script, objectID, user, m_scene) == false) + return false; + } + } + return true; + } + + public bool CanRunScript(TaskInventoryItem item, SceneObjectPart part) + { RunScriptHandler handler = OnRunScript; if (handler != null) { + if(item == null || part == null) + return false; Delegate[] list = handler.GetInvocationList(); foreach (RunScriptHandler h in list) { - if (h(script, objectID, user, m_scene) == false) + if (h(item, part) == false) return false; } } return true; } + #endregion #region COMPILE SCRIPT (When Script needs to get (re)compiled) -- cgit v1.1