diff options
author | Melanie Thielker | 2008-09-13 14:40:42 +0000 |
---|---|---|
committer | Melanie Thielker | 2008-09-13 14:40:42 +0000 |
commit | fdb24c46ac02447e05662227180927c9bd270276 (patch) | |
tree | 7a56f38ab6bc761330e72d5c0b04a3c16a8dfbb1 | |
parent | Change all LSL functions to return LSL types instead of base types. (diff) | |
download | opensim-SC_OLD-fdb24c46ac02447e05662227180927c9bd270276.zip opensim-SC_OLD-fdb24c46ac02447e05662227180927c9bd270276.tar.gz opensim-SC_OLD-fdb24c46ac02447e05662227180927c9bd270276.tar.bz2 opensim-SC_OLD-fdb24c46ac02447e05662227180927c9bd270276.tar.xz |
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
4 files changed, 18 insertions, 0 deletions
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 | |||
58 | void SetState(UUID itemID, string newState); | 58 | void SetState(UUID itemID, string newState); |
59 | int GetStartParameter(UUID itemID); | 59 | int GetStartParameter(UUID itemID); |
60 | IScriptWorkItem QueueEventHandler(object parms); | 60 | IScriptWorkItem QueueEventHandler(object parms); |
61 | IScriptApi GetApi(UUID itemID, string name); | ||
61 | 62 | ||
62 | DetectParams GetDetectParams(UUID item, int number); | 63 | DetectParams GetDetectParams(UUID item, int number); |
63 | } | 64 | } |
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 | |||
85 | DetectParams GetDetectParams(int idx); | 85 | DetectParams GetDetectParams(int idx); |
86 | UUID GetDetectID(int idx); | 86 | UUID GetDetectID(int idx); |
87 | void SaveState(string assembly); | 87 | void SaveState(string assembly); |
88 | |||
89 | IScriptApi GetApi(string name); | ||
88 | } | 90 | } |
89 | } | 91 | } |
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 | |||
714 | throw new Exception("Completed persistence save, but no file was created"); | 714 | throw new Exception("Completed persistence save, but no file was created"); |
715 | } | 715 | } |
716 | } | 716 | } |
717 | |||
718 | public IScriptApi GetApi(string name) | ||
719 | { | ||
720 | if (m_Apis.ContainsKey(name)) | ||
721 | return m_Apis[name]; | ||
722 | return null; | ||
723 | } | ||
717 | } | 724 | } |
718 | } | 725 | } |
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 | |||
869 | 869 | ||
870 | DoBackup(new Object[] {0}); | 870 | DoBackup(new Object[] {0}); |
871 | } | 871 | } |
872 | |||
873 | public IScriptApi GetApi(UUID itemID, string name) | ||
874 | { | ||
875 | IScriptInstance instance = GetInstance(itemID); | ||
876 | if (instance == null) | ||
877 | return null; | ||
878 | return instance.GetApi(name); | ||
879 | } | ||
872 | } | 880 | } |
873 | } | 881 | } |