diff --git a/OpenSim/Region/Application/OpenSimMain.cs b/OpenSim/Region/Application/OpenSimMain.cs index 7d3f7b816c..8934be2ace 100644 --- a/OpenSim/Region/Application/OpenSimMain.cs +++ b/OpenSim/Region/Application/OpenSimMain.cs @@ -455,9 +455,9 @@ namespace OpenSim //m_moduleLoader.PickupModules(scene, "ScriptEngines"); //m_moduleLoader.LoadRegionModules(Path.Combine("ScriptEngines", m_scriptEngine), scene); MainLog.Instance.Verbose("MODULES", "Loading scripting engine modules"); - foreach (string module in m_scriptEngine.Split(';')) + foreach (string module in m_scriptEngine.Split(',')) { - string mod = module.Trim(" \t\r\n".ToCharArray()); // Clean up name + string mod = module.Trim(" \t".ToCharArray()); // Clean up name MainLog.Instance.Verbose("MODULES", "Loading scripting engine: " + mod); try { diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptManager.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptManager.cs index 53ef217056..e346f6839b 100644 --- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptManager.cs +++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptManager.cs @@ -112,9 +112,11 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase { m_scriptEngine = scriptEngine; } + public abstract void Initialize(); public void Start() { ReadConfig(); + Initialize(); AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs index 2e0d1a3338..6d8bfa8b13 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs @@ -67,10 +67,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL private static CSharpCodeProvider CScodeProvider = new CSharpCodeProvider(); private static VBCodeProvider VBcodeProvider = new VBCodeProvider(); - private static UInt64 scriptCompileCounter = 0; - - private static int instanceID = new Random().Next(0, int.MaxValue); - // Implemented due to peer preassure --- will cause garbage in ScriptEngines folder ;) + private static int instanceID = new Random().Next(0, int.MaxValue); // Unique number to use on our compiled files + private static UInt64 scriptCompileCounter = 0; // And a counter public Common.ScriptEngineBase.ScriptEngine m_scriptEngine; public Compiler(Common.ScriptEngineBase.ScriptEngine scriptEngine) @@ -107,7 +105,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL LanguageMapping.Add(enumCompileType.lsl.ToString(), enumCompileType.lsl); // Allowed compilers - string allowComp = m_scriptEngine.ScriptConfigSource.GetString("AllowedCompilers", "lsl;cs;vb"); + string allowComp = m_scriptEngine.ScriptConfigSource.GetString("AllowedCompilers", "lsl,cs,vb"); AllowedCompilers.Clear(); #if DEBUG @@ -115,7 +113,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL #endif - foreach (string strl in allowComp.Split(';')) + foreach (string strl in allowComp.Split(',')) { string strlan = strl.Trim(" \t".ToCharArray()).ToLower(); if (!LanguageMapping.ContainsKey(strlan)) @@ -299,6 +297,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL string OutFile = Path.Combine("ScriptEngines", FilePrefix + "_compiled_" + instanceID.ToString() + "_" + scriptCompileCounter.ToString() + ".dll"); +#if DEBUG + m_scriptEngine.Log.Debug(m_scriptEngine.ScriptEngineName, "Starting compile of \"" + OutFile + "\"."); +#endif try { File.Delete(OutFile); @@ -313,14 +314,16 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL // DEBUG - write source to disk if (WriteScriptSourceToDebugFile) { + string srcFileName = FilePrefix + "_source_" + Path.GetFileNameWithoutExtension(OutFile) + ext; try { File.WriteAllText( - Path.Combine("ScriptEngines", FilePrefix + "_source_" + Path.GetFileNameWithoutExtension(OutFile) + ext), + Path.Combine("ScriptEngines", srcFileName), Script); } - catch + catch (Exception ex) { + m_scriptEngine.Log.Error(m_scriptEngine.ScriptEngineName, "Exception while trying to write script source to file \"" + srcFileName + "\": " + ex.ToString()); } } @@ -346,7 +349,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL parameters.GenerateExecutable = false; parameters.OutputAssembly = OutFile; parameters.IncludeDebugInformation = CompileWithDebugInformation; - parameters.WarningLevel = 4; + parameters.WarningLevel = 1; // Should be 4? parameters.TreatWarningsAsErrors = false; CompilerResults results; diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs index 2f90c161f1..4e20d95872 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs @@ -43,6 +43,14 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine base.m_scriptEngine = scriptEngine; } + private Compiler.LSL.Compiler LSLCompiler; + + + public override void Initialize() + { + // Create our compiler + LSLCompiler = new Compiler.LSL.Compiler(m_scriptEngine); + } // KEEP TRACK OF SCRIPTS //internal Dictionary> Scripts = new Dictionary>(); @@ -50,17 +58,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine // UNLOAD SCRIPT // PROVIDE SCRIPT WITH ITS INTERFACE TO OpenSim - private Compiler.LSL.Compiler LSLCompiler; public override void _StartScript(uint localID, LLUUID itemID, string Script) { m_scriptEngine.Log.Debug(m_scriptEngine.ScriptEngineName, "ScriptManager StartScript: localID: " + localID + ", itemID: " + itemID); - // First time start? Lets fire up our compiler... - if (LSLCompiler == null) - { - LSLCompiler = new Compiler.LSL.Compiler(m_scriptEngine); - } //IScriptHost root = host.GetRoot(); @@ -118,7 +120,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine catch (Exception e2) { m_scriptEngine.Log.Error(m_scriptEngine.ScriptEngineName, "Error displaying error in-world: " + e2.ToString()); - m_scriptEngine.Log.Error(m_scriptEngine.ScriptEngineName, + m_scriptEngine.Log.Error(m_scriptEngine.ScriptEngineName, "Errormessage: Error compiling script:\r\n" + e.Message.ToString()); } } diff --git a/OpenSim/Region/ScriptEngine/LSOEngine/ScriptManager.cs b/OpenSim/Region/ScriptEngine/LSOEngine/ScriptManager.cs index 6664025ce1..652c24c7be 100644 --- a/OpenSim/Region/ScriptEngine/LSOEngine/ScriptManager.cs +++ b/OpenSim/Region/ScriptEngine/LSOEngine/ScriptManager.cs @@ -155,5 +155,9 @@ namespace OpenSim.Region.ScriptEngine.LSOEngine } } + public override void Initialize() + { + + } } } \ No newline at end of file diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 495f4ce694..7b2198ba63 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -116,10 +116,10 @@ shout_distance = 100 ; ## ; These are region modules loaded into each region to provide script support ; Scripts may be everything from LSL or C# scripts put in prims to whole game systems that controls the whole grid. -; You can load multiple modules by separating them with ;. +; You can load multiple modules by separating them with a coma. ; ; Example: -;script_engine = OpenSim.Region.ScriptEngine.DotNetEngine.dll;OpenSim.Region.ScriptEngine.RemoteServer.dll +;script_engine = OpenSim.Region.ScriptEngine.DotNetEngine.dll,OpenSim.Region.ScriptEngine.RemoteServer.dll ; ; This is the current and most stable ScriptEngine: script_engine = OpenSim.Region.ScriptEngine.DotNetEngine.dll @@ -222,7 +222,7 @@ DefaultCompileLanguage=lsl ; Specify what compilers are allowed to be used ; Valid languages are: lsl, cs and vb -AllowedCompilers=lsl;cs;vb +AllowedCompilers=lsl,cs,vb ; Compile scripts with debugging ; Probably a thousand times slower, but gives you a line number when something goes wrong.