From fdb24c46ac02447e05662227180927c9bd270276 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Sat, 13 Sep 2008 14:40:42 +0000 Subject: Provide a GetApi method on the IScriptEngine to get a named API reference This allows cross-api method calls on the implementation and also allows "Meta APIs" that only provide common functionality to other APIs --- OpenSim/Region/ScriptEngine/Interfaces/IScriptEngine.cs | 1 + OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs | 2 ++ OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs | 7 +++++++ OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 8 ++++++++ 4 files changed, 18 insertions(+) diff --git a/OpenSim/Region/ScriptEngine/Interfaces/IScriptEngine.cs b/OpenSim/Region/ScriptEngine/Interfaces/IScriptEngine.cs index 4b46c21..43c2487 100644 --- a/OpenSim/Region/ScriptEngine/Interfaces/IScriptEngine.cs +++ b/OpenSim/Region/ScriptEngine/Interfaces/IScriptEngine.cs @@ -58,6 +58,7 @@ namespace OpenSim.Region.ScriptEngine.Interfaces void SetState(UUID itemID, string newState); int GetStartParameter(UUID itemID); IScriptWorkItem QueueEventHandler(object parms); + IScriptApi GetApi(UUID itemID, string name); DetectParams GetDetectParams(UUID item, int number); } diff --git a/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs b/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs index c07f093..169955c 100644 --- a/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs @@ -85,5 +85,7 @@ namespace OpenSim.Region.ScriptEngine.Interfaces DetectParams GetDetectParams(int idx); UUID GetDetectID(int idx); void SaveState(string assembly); + + IScriptApi GetApi(string name); } } diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs index 1ee6f77..8f6108d 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs @@ -714,5 +714,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance throw new Exception("Completed persistence save, but no file was created"); } } + + public IScriptApi GetApi(string name) + { + if (m_Apis.ContainsKey(name)) + return m_Apis[name]; + return null; + } } } diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index 6582686..0dc1ade 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs @@ -869,5 +869,13 @@ namespace OpenSim.Region.ScriptEngine.XEngine DoBackup(new Object[] {0}); } + + public IScriptApi GetApi(UUID itemID, string name) + { + IScriptInstance instance = GetInstance(itemID); + if (instance == null) + return null; + return instance.GetApi(name); + } } } -- cgit v1.1