aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs
diff options
context:
space:
mode:
authorMelanie Thielker2008-09-25 17:26:32 +0000
committerMelanie Thielker2008-09-25 17:26:32 +0000
commitf11107821e259d544dc42648f4cdba2b123cd71e (patch)
tree5d288d96a2eb07788ae40130736215599eb9bcec /OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs
parentMantis#2017. Thank you kindly, Tyre, for a patch that solves: (diff)
downloadopensim-SC_OLD-f11107821e259d544dc42648f4cdba2b123cd71e.zip
opensim-SC_OLD-f11107821e259d544dc42648f4cdba2b123cd71e.tar.gz
opensim-SC_OLD-f11107821e259d544dc42648f4cdba2b123cd71e.tar.bz2
opensim-SC_OLD-f11107821e259d544dc42648f4cdba2b123cd71e.tar.xz
Add an extension to allow registering multiple interfaces of a type with
Scene. Make the script engines check that the engine name in the //Engine:language comment is a valid engine and treat it as a normal comment if it's not. //DotNetEngine: needs to be written as //ScriptEngine.DotNetEngine: now, since that is it's real internal name. //XEngine: still works
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs')
-rw-r--r--OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs15
1 files changed, 13 insertions, 2 deletions
diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs
index c8c9cd8..0308169 100644
--- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs
+++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs
@@ -215,6 +215,12 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
215 215
216 public void OnRezScript(uint localID, UUID itemID, string script, int startParam, bool postOnRez, string engine) 216 public void OnRezScript(uint localID, UUID itemID, string script, int startParam, bool postOnRez, string engine)
217 { 217 {
218 List<IScriptModule> engines = new List<IScriptModule>(myScriptEngine.World.RequestModuleInterfaces<IScriptModule>());
219
220 List<string> names = new List<string>();
221 foreach (IScriptModule m in engines)
222 names.Add(m.ScriptEngineName);
223
218 int lineEnd = script.IndexOf('\n'); 224 int lineEnd = script.IndexOf('\n');
219 225
220 if (lineEnd != 1) 226 if (lineEnd != 1)
@@ -224,8 +230,13 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
224 int colon = firstline.IndexOf(':'); 230 int colon = firstline.IndexOf(':');
225 if (firstline.Length > 2 && firstline.Substring(0, 2) == "//" && colon != -1) 231 if (firstline.Length > 2 && firstline.Substring(0, 2) == "//" && colon != -1)
226 { 232 {
227 engine = firstline.Substring(2, colon-2); 233 string engineName = firstline.Substring(2, colon-2);
228 script = "//" + script.Substring(script.IndexOf(':')+1); 234
235 if (names.Contains(engineName))
236 {
237 engine = engineName;
238 script = "//" + script.Substring(script.IndexOf(':')+1);
239 }
229 } 240 }
230 } 241 }
231 242