From 876f71cf931b887a3132ce719a4cc539b77cbca9 Mon Sep 17 00:00:00 2001
From: Tedd Hansen
Date: Mon, 13 Aug 2007 19:39:51 +0000
Subject: (DotNet) ScriptEngine is now loaded and added to Scene during
startup.
---
.../Scenes/Scripting/ScriptEngineInterface.cs | 40 +++++++++
.../Scenes/Scripting/ScriptEngineLoader.cs | 100 +++++++++++++++++++++
2 files changed, 140 insertions(+)
create mode 100644 OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineInterface.cs
create mode 100644 OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineLoader.cs
(limited to 'OpenSim/Region/Environment/Scenes/Scripting')
diff --git a/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineInterface.cs b/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineInterface.cs
new file mode 100644
index 0000000..3c3b5a7
--- /dev/null
+++ b/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineInterface.cs
@@ -0,0 +1,40 @@
+/*
+* 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.
+*
+*/
+/* Original code: Tedd Hansen */
+using System;
+using System.Collections.Generic;
+using System.Text;
+//TODO: WHERE TO PLACE THIS?
+namespace OpenSim.Region.Environment.Scenes.Scripting
+{
+ public interface ScriptEngineInterface
+ {
+ void InitializeEngine(OpenSim.Region.Environment.Scenes.Scene Sceneworld);
+ void Shutdown();
+ }
+}
diff --git a/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineLoader.cs b/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineLoader.cs
new file mode 100644
index 0000000..2f0551c
--- /dev/null
+++ b/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineLoader.cs
@@ -0,0 +1,100 @@
+/*
+* 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.
+*
+*/
+/* Original code: Tedd Hansen */
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Reflection;
+
+namespace OpenSim.Region.Environment.Scenes.Scripting
+{
+ public class ScriptEngineLoader
+ {
+ public ScriptEngineLoader()
+ {
+ }
+
+ public ScriptEngineInterface LoadScriptEngine(string EngineName)
+ {
+ return LoadAndInitAssembly(@"ScriptEngines\OpenSim.Region.ScriptEngine." + EngineName + ".dll",
+ "OpenSim.Region.ScriptEngine." + EngineName + ".ScriptEngine");
+ }
+
+ ///
+ /// Does actual loading and initialization of script Assembly
+ ///
+ /// AppDomain to load script into
+ /// FileName of script assembly (.dll)
+ ///
+ private ScriptEngineInterface LoadAndInitAssembly(string FileName, string NameSpace)
+ {
+ //Common.SendToDebug("Loading ScriptEngine Assembly " + FileName);
+ // Load .Net Assembly (.dll)
+ // Initialize and return it
+
+ // TODO: Add error handling
+
+ Assembly a;
+ //try
+ //{
+
+
+ // Load to default appdomain (temporary)
+ a = Assembly.LoadFrom(FileName);
+ // Load to specified appdomain
+ // TODO: Insert security
+ //a = FreeAppDomain.Load(FileName);
+ //}
+ //catch (Exception e)
+ //{
+ //}
+
+
+ //Console.WriteLine("Loading: " + FileName);
+ //foreach (Type _t in a.GetTypes())
+ //{
+ // Console.WriteLine("Type: " + _t.ToString());
+ //}
+
+ Type t;
+ //try
+ //{
+ t = a.GetType(NameSpace, true);
+ //}
+ //catch (Exception e)
+ //{
+ //}
+
+ return (ScriptEngineInterface)Activator.CreateInstance(t);
+
+
+ }
+
+
+ }
+}
--
cgit v1.1