Shiny commit (finally)
* Added support for new scripting engines ** Javascript ** J# (Java on .NET) ** C# * Added license headers to things. * Updated prebuild for the aboveSugilite
							parent
							
								
									17275f3ab7
								
							
						
					
					
						commit
						c4379add57
					
				|  | @ -77,6 +77,7 @@ | |||
|       <HintPath>..\..\bin\libsecondlife.dll</HintPath> | ||||
|       <Private>False</Private> | ||||
|     </Reference> | ||||
|     <Reference Include="Microsoft.JScript" /> | ||||
|     <Reference Include="System"> | ||||
|       <HintPath>System.dll</HintPath> | ||||
|       <Private>False</Private> | ||||
|  | @ -86,6 +87,7 @@ | |||
|       <HintPath>System.Xml.dll</HintPath> | ||||
|       <Private>False</Private> | ||||
|     </Reference> | ||||
|     <Reference Include="VJSharpCodeProvider" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ProjectReference Include="..\..\Common\OpenGrid.Framework.Communications\OpenGrid.Framework.Communications.csproj"> | ||||
|  | @ -190,13 +192,15 @@ | |||
|     <Compile Include="Scenes\ScenePresence.cs"> | ||||
|       <SubType>Code</SubType> | ||||
|     </Compile> | ||||
|     <Compile Include="Scenes\scripting\CSharpScriptEngine.cs" /> | ||||
|     <Compile Include="Scenes\scripting\Script.cs" /> | ||||
|     <Compile Include="Scenes\scripting\ScriptInfo.cs" /> | ||||
|     <Compile Include="Scenes\scripting\ScriptManager.cs" /> | ||||
|     <Compile Include="Scenes\Scripting\Engines\CSharpScriptEngine.cs" /> | ||||
|     <Compile Include="Scenes\Scripting\Engines\JScriptEngine.cs" /> | ||||
|     <Compile Include="Scenes\Scripting\Engines\JSharpScriptEngine.cs" /> | ||||
|     <Compile Include="Scenes\Scripting\Script.cs" /> | ||||
|     <Compile Include="Scenes\Scripting\ScriptInfo.cs" /> | ||||
|     <Compile Include="Scenes\Scripting\ScriptManager.cs" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Folder Include="Scenes\scripting\CSharpScripts\" /> | ||||
|     <Folder Include="Scenes\Scripting\CSharpScripts\" /> | ||||
|   </ItemGroup> | ||||
|   <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> | ||||
|   <PropertyGroup> | ||||
|  |  | |||
|  | @ -1,3 +1,30 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||||
| * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||||
| * | ||||
| * Redistribution and use in source and binary forms, with or without | ||||
| * modification, are permitted provided that the following conditions are met: | ||||
| *     * Redistributions of source code must retain the above copyright | ||||
| *       notice, this list of conditions and the following disclaimer. | ||||
| *     * Redistributions in binary form must reproduce the above copyright | ||||
| *       notice, this list of conditions and the following disclaimer in the | ||||
| *       documentation and/or other materials provided with the distribution. | ||||
| *     * Neither the name of the OpenSim Project nor the | ||||
| *       names of its contributors may be used to endorse or promote products | ||||
| *       derived from this software without specific prior written permission. | ||||
| * | ||||
| * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||||
| * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
| * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
| * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||||
| * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
| * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| *  | ||||
| */ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Text; | ||||
|  |  | |||
|  | @ -0,0 +1,104 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||||
| * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||||
| * | ||||
| * Redistribution and use in source and binary forms, with or without | ||||
| * modification, are permitted provided that the following conditions are met: | ||||
| *     * Redistributions of source code must retain the above copyright | ||||
| *       notice, this list of conditions and the following disclaimer. | ||||
| *     * Redistributions in binary form must reproduce the above copyright | ||||
| *       notice, this list of conditions and the following disclaimer in the | ||||
| *       documentation and/or other materials provided with the distribution. | ||||
| *     * Neither the name of the OpenSim Project nor the | ||||
| *       names of its contributors may be used to endorse or promote products | ||||
| *       derived from this software without specific prior written permission. | ||||
| * | ||||
| * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||||
| * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
| * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
| * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||||
| * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
| * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| *  | ||||
| */ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Text; | ||||
| 
 | ||||
| // Compilation stuff | ||||
| using System.CodeDom; | ||||
| using System.CodeDom.Compiler; | ||||
| using Microsoft.CSharp; | ||||
| 
 | ||||
| namespace OpenSim.Scripting | ||||
| { | ||||
|     public class CSharpScriptEngine : IScriptCompiler | ||||
|     { | ||||
|         public string FileExt() | ||||
|         { | ||||
|             return ".cs"; | ||||
|         } | ||||
| 
 | ||||
|         private Dictionary<string,IScript> LoadDotNetScript(ICodeCompiler compiler, string filename) | ||||
|         { | ||||
|             CompilerParameters compilerParams = new CompilerParameters(); | ||||
|             CompilerResults compilerResults; | ||||
|             compilerParams.GenerateExecutable = false; | ||||
|             compilerParams.GenerateInMemory = true; | ||||
|             compilerParams.IncludeDebugInformation = false; | ||||
|             compilerParams.ReferencedAssemblies.Add("OpenSim.Region.dll"); | ||||
|             compilerParams.ReferencedAssemblies.Add("OpenSim.Framework.dll"); | ||||
|             compilerParams.ReferencedAssemblies.Add("libsecondlife.dll"); | ||||
|             compilerParams.ReferencedAssemblies.Add("System.dll"); | ||||
| 
 | ||||
|             compilerResults = compiler.CompileAssemblyFromFile(compilerParams, filename); | ||||
| 
 | ||||
|             if (compilerResults.Errors.Count > 0) | ||||
|             { | ||||
|                 OpenSim.Framework.Console.MainLog.Instance.Error("Compile errors"); | ||||
|                 foreach (CompilerError error in compilerResults.Errors) | ||||
|                 { | ||||
|                     OpenSim.Framework.Console.MainLog.Instance.Error(error.Line.ToString() + ": " + error.ErrorText.ToString()); | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 Dictionary<string,IScript> scripts = new Dictionary<string,IScript>(); | ||||
|                  | ||||
|                 foreach (Type pluginType in compilerResults.CompiledAssembly.GetExportedTypes()) | ||||
|                 { | ||||
|                     Type testInterface = pluginType.GetInterface("IScript", true); | ||||
| 
 | ||||
|                     if (testInterface != null) | ||||
|                     { | ||||
|                         IScript script = (IScript)compilerResults.CompiledAssembly.CreateInstance(pluginType.ToString()); | ||||
| 
 | ||||
|                         string scriptName = "C#/" + script.getName(); | ||||
|                         Console.WriteLine("Script: " + scriptName + " loaded."); | ||||
| 
 | ||||
|                         if (!scripts.ContainsKey(scriptName)) | ||||
|                         { | ||||
|                             scripts.Add(scriptName, script); | ||||
|                         } | ||||
|                         else | ||||
|                         { | ||||
|                             scripts[scriptName] = script; | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|                 return scripts; | ||||
|             } | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         public Dictionary<string,IScript> compile(string filename) | ||||
|         { | ||||
|             CSharpCodeProvider csharpProvider = new CSharpCodeProvider(); | ||||
|             return LoadDotNetScript(csharpProvider.CreateCompiler(), filename); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,104 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||||
| * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||||
| * | ||||
| * Redistribution and use in source and binary forms, with or without | ||||
| * modification, are permitted provided that the following conditions are met: | ||||
| *     * Redistributions of source code must retain the above copyright | ||||
| *       notice, this list of conditions and the following disclaimer. | ||||
| *     * Redistributions in binary form must reproduce the above copyright | ||||
| *       notice, this list of conditions and the following disclaimer in the | ||||
| *       documentation and/or other materials provided with the distribution. | ||||
| *     * Neither the name of the OpenSim Project nor the | ||||
| *       names of its contributors may be used to endorse or promote products | ||||
| *       derived from this software without specific prior written permission. | ||||
| * | ||||
| * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||||
| * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
| * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
| * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||||
| * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
| * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| *  | ||||
| */ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Text; | ||||
| 
 | ||||
| // Compilation stuff | ||||
| using System.CodeDom; | ||||
| using System.CodeDom.Compiler; | ||||
| using Microsoft.JScript; | ||||
| 
 | ||||
| namespace OpenSim.Scripting | ||||
| { | ||||
|     public class JScriptEngine : IScriptCompiler | ||||
|     { | ||||
|         public string FileExt() | ||||
|         { | ||||
|             return ".js"; | ||||
|         } | ||||
| 
 | ||||
|         private Dictionary<string, IScript> LoadDotNetScript(ICodeCompiler compiler, string filename) | ||||
|         { | ||||
|             CompilerParameters compilerParams = new CompilerParameters(); | ||||
|             CompilerResults compilerResults; | ||||
|             compilerParams.GenerateExecutable = false; | ||||
|             compilerParams.GenerateInMemory = true; | ||||
|             compilerParams.IncludeDebugInformation = false; | ||||
|             compilerParams.ReferencedAssemblies.Add("OpenSim.Region.dll"); | ||||
|             compilerParams.ReferencedAssemblies.Add("OpenSim.Framework.dll"); | ||||
|             compilerParams.ReferencedAssemblies.Add("libsecondlife.dll"); | ||||
|             compilerParams.ReferencedAssemblies.Add("System.dll"); | ||||
| 
 | ||||
|             compilerResults = compiler.CompileAssemblyFromFile(compilerParams, filename); | ||||
| 
 | ||||
|             if (compilerResults.Errors.Count > 0) | ||||
|             { | ||||
|                 OpenSim.Framework.Console.MainLog.Instance.Error("Compile errors"); | ||||
|                 foreach (CompilerError error in compilerResults.Errors) | ||||
|                 { | ||||
|                     OpenSim.Framework.Console.MainLog.Instance.Error(error.Line.ToString() + ": " + error.ErrorText.ToString()); | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 Dictionary<string, IScript> scripts = new Dictionary<string, IScript>(); | ||||
| 
 | ||||
|                 foreach (Type pluginType in compilerResults.CompiledAssembly.GetExportedTypes()) | ||||
|                 { | ||||
|                     Type testInterface = pluginType.GetInterface("IScript", true); | ||||
| 
 | ||||
|                     if (testInterface != null) | ||||
|                     { | ||||
|                         IScript script = (IScript)compilerResults.CompiledAssembly.CreateInstance(pluginType.ToString()); | ||||
| 
 | ||||
|                         string scriptName = "JS.NET/" + script.getName(); | ||||
|                         Console.WriteLine("Script: " + scriptName + " loaded."); | ||||
| 
 | ||||
|                         if (!scripts.ContainsKey(scriptName)) | ||||
|                         { | ||||
|                             scripts.Add(scriptName, script); | ||||
|                         } | ||||
|                         else | ||||
|                         { | ||||
|                             scripts[scriptName] = script; | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|                 return scripts; | ||||
|             } | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         public Dictionary<string, IScript> compile(string filename) | ||||
|         { | ||||
|             JScriptCodeProvider jscriptProvider = new JScriptCodeProvider(); | ||||
|             return LoadDotNetScript(jscriptProvider.CreateCompiler(), filename); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,104 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||||
| * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||||
| * | ||||
| * Redistribution and use in source and binary forms, with or without | ||||
| * modification, are permitted provided that the following conditions are met: | ||||
| *     * Redistributions of source code must retain the above copyright | ||||
| *       notice, this list of conditions and the following disclaimer. | ||||
| *     * Redistributions in binary form must reproduce the above copyright | ||||
| *       notice, this list of conditions and the following disclaimer in the | ||||
| *       documentation and/or other materials provided with the distribution. | ||||
| *     * Neither the name of the OpenSim Project nor the | ||||
| *       names of its contributors may be used to endorse or promote products | ||||
| *       derived from this software without specific prior written permission. | ||||
| * | ||||
| * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||||
| * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
| * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
| * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||||
| * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
| * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| *  | ||||
| */ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Text; | ||||
| 
 | ||||
| // Compilation stuff | ||||
| using System.CodeDom; | ||||
| using System.CodeDom.Compiler; | ||||
| using Microsoft.VJSharp; | ||||
| 
 | ||||
| namespace OpenSim.Scripting | ||||
| { | ||||
|     public class JSharpScriptEngine : IScriptCompiler | ||||
|     { | ||||
|         public string FileExt() | ||||
|         { | ||||
|             return ".jsl"; | ||||
|         } | ||||
| 
 | ||||
|         private Dictionary<string, IScript> LoadDotNetScript(ICodeCompiler compiler, string filename) | ||||
|         { | ||||
|             CompilerParameters compilerParams = new CompilerParameters(); | ||||
|             CompilerResults compilerResults; | ||||
|             compilerParams.GenerateExecutable = false; | ||||
|             compilerParams.GenerateInMemory = true; | ||||
|             compilerParams.IncludeDebugInformation = false; | ||||
|             compilerParams.ReferencedAssemblies.Add("OpenSim.Region.dll"); | ||||
|             compilerParams.ReferencedAssemblies.Add("OpenSim.Framework.dll"); | ||||
|             compilerParams.ReferencedAssemblies.Add("libsecondlife.dll"); | ||||
|             compilerParams.ReferencedAssemblies.Add("System.dll"); | ||||
| 
 | ||||
|             compilerResults = compiler.CompileAssemblyFromFile(compilerParams, filename); | ||||
| 
 | ||||
|             if (compilerResults.Errors.Count > 0) | ||||
|             { | ||||
|                 OpenSim.Framework.Console.MainLog.Instance.Error("Compile errors"); | ||||
|                 foreach (CompilerError error in compilerResults.Errors) | ||||
|                 { | ||||
|                     OpenSim.Framework.Console.MainLog.Instance.Error(error.Line.ToString() + ": " + error.ErrorText.ToString()); | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 Dictionary<string, IScript> scripts = new Dictionary<string, IScript>(); | ||||
| 
 | ||||
|                 foreach (Type pluginType in compilerResults.CompiledAssembly.GetExportedTypes()) | ||||
|                 { | ||||
|                     Type testInterface = pluginType.GetInterface("IScript", true); | ||||
| 
 | ||||
|                     if (testInterface != null) | ||||
|                     { | ||||
|                         IScript script = (IScript)compilerResults.CompiledAssembly.CreateInstance(pluginType.ToString()); | ||||
| 
 | ||||
|                         string scriptName = "J#/" + script.getName(); | ||||
|                         Console.WriteLine("Script: " + scriptName + " loaded."); | ||||
| 
 | ||||
|                         if (!scripts.ContainsKey(scriptName)) | ||||
|                         { | ||||
|                             scripts.Add(scriptName, script); | ||||
|                         } | ||||
|                         else | ||||
|                         { | ||||
|                             scripts[scriptName] = script; | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|                 return scripts; | ||||
|             } | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         public Dictionary<string, IScript> compile(string filename) | ||||
|         { | ||||
|             VJSharpCodeProvider jsharpProvider = new VJSharpCodeProvider(); | ||||
|             return LoadDotNetScript(jsharpProvider.CreateCompiler(), filename); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,71 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||||
| * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||||
| * | ||||
| * Redistribution and use in source and binary forms, with or without | ||||
| * modification, are permitted provided that the following conditions are met: | ||||
| *     * Redistributions of source code must retain the above copyright | ||||
| *       notice, this list of conditions and the following disclaimer. | ||||
| *     * Redistributions in binary form must reproduce the above copyright | ||||
| *       notice, this list of conditions and the following disclaimer in the | ||||
| *       documentation and/or other materials provided with the distribution. | ||||
| *     * Neither the name of the OpenSim Project nor the | ||||
| *       names of its contributors may be used to endorse or promote products | ||||
| *       derived from this software without specific prior written permission. | ||||
| * | ||||
| * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||||
| * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
| * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
| * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||||
| * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
| * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| *  | ||||
| */ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Text; | ||||
| 
 | ||||
| using OpenSim.Framework.Console; | ||||
| using OpenSim.Framework; | ||||
| using OpenSim.Region; | ||||
| using OpenSim.Region.Scenes; | ||||
| 
 | ||||
| namespace OpenSim.Scripting | ||||
| { | ||||
|     public interface IScript | ||||
|     { | ||||
|         void Initialise(ScriptInfo scriptInfo); | ||||
|         string getName(); | ||||
|     } | ||||
| 
 | ||||
|     public class TestScript : IScript | ||||
|     { | ||||
|         ScriptInfo script; | ||||
| 
 | ||||
|         public string getName() | ||||
|         { | ||||
|             return "TestScript 0.1"; | ||||
|         } | ||||
| 
 | ||||
|         public void Initialise(ScriptInfo scriptInfo) | ||||
|         { | ||||
|             script = scriptInfo; | ||||
|             script.events.OnFrame += new OpenSim.Region.Scenes.EventManager.OnFrameDelegate(events_OnFrame); | ||||
|             script.events.OnNewPresence += new EventManager.OnNewPresenceDelegate(events_OnNewPresence); | ||||
|         } | ||||
| 
 | ||||
|         void events_OnNewPresence(ScenePresence presence) | ||||
|         { | ||||
|             script.logger.Verbose("Hello " + presence.firstname.ToString() + "!"); | ||||
|         } | ||||
| 
 | ||||
|         void events_OnFrame() | ||||
|         { | ||||
|             //script.logger.Verbose("Hello World!"); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,58 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||||
| * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||||
| * | ||||
| * Redistribution and use in source and binary forms, with or without | ||||
| * modification, are permitted provided that the following conditions are met: | ||||
| *     * Redistributions of source code must retain the above copyright | ||||
| *       notice, this list of conditions and the following disclaimer. | ||||
| *     * Redistributions in binary form must reproduce the above copyright | ||||
| *       notice, this list of conditions and the following disclaimer in the | ||||
| *       documentation and/or other materials provided with the distribution. | ||||
| *     * Neither the name of the OpenSim Project nor the | ||||
| *       names of its contributors may be used to endorse or promote products | ||||
| *       derived from this software without specific prior written permission. | ||||
| * | ||||
| * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||||
| * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
| * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
| * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||||
| * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
| * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| *  | ||||
| */ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Text; | ||||
| 
 | ||||
| using OpenSim.Region.Scenes; | ||||
| using OpenSim.Framework.Console; | ||||
| 
 | ||||
| namespace OpenSim.Scripting | ||||
| { | ||||
|     /// <summary> | ||||
|     /// Class which provides access to the world | ||||
|     /// </summary> | ||||
|     public class ScriptInfo | ||||
|     { | ||||
|         // Reference to world.eventsManager provided for convenience | ||||
|         public EventManager events; | ||||
| 
 | ||||
|         // The main world | ||||
|         public Scene world; | ||||
| 
 | ||||
|         // The console | ||||
|         public LogBase logger; | ||||
| 
 | ||||
|         public ScriptInfo(Scene scene) | ||||
|         { | ||||
|             world = scene; | ||||
|             events = world.eventManager; | ||||
|             logger = OpenSim.Framework.Console.MainLog.Instance; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,99 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||||
| * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||||
| * | ||||
| * Redistribution and use in source and binary forms, with or without | ||||
| * modification, are permitted provided that the following conditions are met: | ||||
| *     * Redistributions of source code must retain the above copyright | ||||
| *       notice, this list of conditions and the following disclaimer. | ||||
| *     * Redistributions in binary form must reproduce the above copyright | ||||
| *       notice, this list of conditions and the following disclaimer in the | ||||
| *       documentation and/or other materials provided with the distribution. | ||||
| *     * Neither the name of the OpenSim Project nor the | ||||
| *       names of its contributors may be used to endorse or promote products | ||||
| *       derived from this software without specific prior written permission. | ||||
| * | ||||
| * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||||
| * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
| * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
| * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||||
| * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
| * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| *  | ||||
| */ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Text; | ||||
| 
 | ||||
| namespace OpenSim.Scripting | ||||
| { | ||||
|     public class ScriptManager | ||||
|     { | ||||
|         List<IScript> scripts = new List<IScript>(); | ||||
|         OpenSim.Region.Scenes.Scene scene; | ||||
|         Dictionary<string, IScriptCompiler> compilers = new Dictionary<string, IScriptCompiler>(); | ||||
| 
 | ||||
|         private void LoadFromCompiler(Dictionary<string, IScript> compiledscripts) | ||||
|         { | ||||
|             foreach (KeyValuePair<string, IScript> script in compiledscripts) | ||||
|             { | ||||
|                 ScriptInfo scriptInfo = new ScriptInfo(scene); // Since each script could potentially corrupt their access with a stray assignment, making a new one for each script. | ||||
|                 OpenSim.Framework.Console.MainLog.Instance.Verbose("Loading " + script.Key); | ||||
|                 script.Value.Initialise(scriptInfo); | ||||
|                 scripts.Add(script.Value); | ||||
|             } | ||||
|             OpenSim.Framework.Console.MainLog.Instance.Verbose("Finished loading " + compiledscripts.Count.ToString() + " script(s)"); | ||||
|         } | ||||
| 
 | ||||
|         public ScriptManager(OpenSim.Region.Scenes.Scene world) | ||||
|         { | ||||
|             scene = world; | ||||
| 
 | ||||
|             // Default Engines | ||||
|             CSharpScriptEngine csharpCompiler = new CSharpScriptEngine(); | ||||
|             compilers.Add(csharpCompiler.FileExt(),csharpCompiler); | ||||
| 
 | ||||
|             JScriptEngine jscriptCompiler = new JScriptEngine(); | ||||
|             compilers.Add(jscriptCompiler.FileExt(), jscriptCompiler); | ||||
| 
 | ||||
|             JSharpScriptEngine jsharpCompiler = new JSharpScriptEngine(); | ||||
|             compilers.Add(jsharpCompiler.FileExt(), jsharpCompiler); | ||||
|         } | ||||
| 
 | ||||
|         public void Compile(string filename) | ||||
|         { | ||||
|             foreach (KeyValuePair<string, IScriptCompiler> compiler in compilers) | ||||
|             { | ||||
|                 if (filename.EndsWith(compiler.Key)) | ||||
|                 { | ||||
|                     LoadFromCompiler(compiler.Value.compile(filename)); | ||||
|                     break; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public void RunScriptCmd(string[] args) | ||||
|         { | ||||
|             switch (args[0]) | ||||
|             { | ||||
|                 case "load": | ||||
|                     Compile(args[1]); | ||||
|                     break; | ||||
| 
 | ||||
|                 default: | ||||
|                     OpenSim.Framework.Console.MainLog.Instance.Error("Unknown script command"); | ||||
|                     break; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     interface IScriptCompiler | ||||
|     { | ||||
|         Dictionary<string,IScript> compile(string filename); | ||||
|         string FileExt(); | ||||
|     } | ||||
| } | ||||
|  | @ -1,3 +1,30 @@ | |||
| /* | ||||
| * Copyright (c) Contributors, http://www.openmetaverse.org/ | ||||
| * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||||
| * | ||||
| * Redistribution and use in source and binary forms, with or without | ||||
| * modification, are permitted provided that the following conditions are met: | ||||
| *     * Redistributions of source code must retain the above copyright | ||||
| *       notice, this list of conditions and the following disclaimer. | ||||
| *     * Redistributions in binary form must reproduce the above copyright | ||||
| *       notice, this list of conditions and the following disclaimer in the | ||||
| *       documentation and/or other materials provided with the distribution. | ||||
| *     * Neither the name of the OpenSim Project nor the | ||||
| *       names of its contributors may be used to endorse or promote products | ||||
| *       derived from this software without specific prior written permission. | ||||
| * | ||||
| * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | ||||
| * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
| * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
| * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||||
| * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
| * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| *  | ||||
| */ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Text; | ||||
|  |  | |||
|  | @ -630,6 +630,10 @@ | |||
|       <Reference name="OpenSim.Physics.Manager"/> | ||||
|       <Reference name="OpenSim.Servers"/> | ||||
| 	    <Reference name="OpenSim.Caches"/> | ||||
|       <!-- For scripting in funny languages by default --> | ||||
|       <Reference name="Microsoft.JScript"/> | ||||
|       <!-- This needs checking with the Mono folks --> | ||||
|       <Reference name="VJSharpCodeProvider"/> | ||||
|       <Reference name="XMLRPC"/> | ||||
|       <Reference name="OpenGrid.Framework.Communications"/> | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Adam Frisby
						Adam Frisby