aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorTedd Hansen2007-08-18 19:54:04 +0000
committerTedd Hansen2007-08-18 19:54:04 +0000
commit1d41fd4984308a4b811f40aca18a90a79f243020 (patch)
tree8752672490125f9809e3801088a7a53b74103432
parentMoved LSL_BuiltIn_Commands_Interface.cs to a separate library (OpenSim.Region... (diff)
downloadopensim-SC-1d41fd4984308a4b811f40aca18a90a79f243020.zip
opensim-SC-1d41fd4984308a4b811f40aca18a90a79f243020.tar.gz
opensim-SC-1d41fd4984308a4b811f40aca18a90a79f243020.tar.bz2
opensim-SC-1d41fd4984308a4b811f40aca18a90a79f243020.tar.xz
Working on AppDomains. Scripting is now officially broken. :]
-rw-r--r--OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs2
-rw-r--r--OpenSim/Region/ScriptEngine/Common/Properties/AssemblyInfo.cs33
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs11
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs2
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs11
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs6
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/MarshalByRefType.cs34
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs25
8 files changed, 64 insertions, 60 deletions
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs
index 58ade0b..c56ff2f 100644
--- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs
+++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs
@@ -34,6 +34,8 @@ namespace OpenSim.Region.ScriptEngine.Common
34{ 34{
35 public interface LSL_BuiltIn_Commands_Interface 35 public interface LSL_BuiltIn_Commands_Interface
36 { 36 {
37 string State();
38
37 double llSin(double f); 39 double llSin(double f);
38 double llCos(double f); 40 double llCos(double f);
39 double llTan(double f); 41 double llTan(double f);
diff --git a/OpenSim/Region/ScriptEngine/Common/Properties/AssemblyInfo.cs b/OpenSim/Region/ScriptEngine/Common/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..def3910
--- /dev/null
+++ b/OpenSim/Region/ScriptEngine/Common/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
1using System.Reflection;
2using System.Runtime.CompilerServices;
3using System.Runtime.InteropServices;
4
5// General Information about an assembly is controlled through the following
6// set of attributes. Change these attribute values to modify the information
7// associated with an assembly.
8[assembly: AssemblyTitle("OpenSim.Region.ScriptEngine.Common")]
9[assembly: AssemblyDescription("")]
10[assembly: AssemblyConfiguration("")]
11[assembly: AssemblyCompany("")]
12[assembly: AssemblyProduct("OpenSim.Region.ScriptEngine.Common")]
13[assembly: AssemblyCopyright("Copyright © 2007")]
14[assembly: AssemblyTrademark("")]
15[assembly: AssemblyCulture("")]
16
17// Setting ComVisible to false makes the types in this assembly not visible
18// to COM components. If you need to access a type in this assembly from
19// COM, set the ComVisible attribute to true on that type.
20[assembly: ComVisible(false)]
21
22// The following GUID is for the ID of the typelib if this project is exposed to COM
23[assembly: Guid("0bf07c53-ae51-487f-a907-e9b30c251602")]
24
25// Version information for an assembly consists of the following four values:
26//
27// Major Version
28// Minor Version
29// Build Number
30// Revision
31//
32[assembly: AssemblyVersion("1.0.0.0")]
33[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs
index 6e992be..4c2ceb0 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs
@@ -52,10 +52,13 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
52 System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters(); 52 System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
53 parameters.IncludeDebugInformation = true; 53 parameters.IncludeDebugInformation = true;
54 // Add all available assemblies 54 // Add all available assemblies
55 foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies()) 55 //foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies())
56 { 56 //{
57 parameters.ReferencedAssemblies.Add(asm.Location); 57 // Console.WriteLine("Adding assembly: " + asm.Location);
58 } 58 // parameters.ReferencedAssemblies.Add(asm.Location);
59 //}
60
61 parameters.ReferencedAssemblies.Add(this.GetType().Assembly.CodeBase);
59 //parameters.ReferencedAssemblies.Add("OpenSim.Region.Environment"); 62 //parameters.ReferencedAssemblies.Add("OpenSim.Region.Environment");
60 parameters.GenerateExecutable = false; 63 parameters.GenerateExecutable = false;
61 parameters.OutputAssembly = OutFile; 64 parameters.OutputAssembly = OutFile;
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs
index 2427cc2..81f8e2d 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs
@@ -228,7 +228,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
228 228
229 // Add namespace, class name and inheritance 229 // Add namespace, class name and inheritance
230 Return = "namespace SecondLife {\r\n"; 230 Return = "namespace SecondLife {\r\n";
231 Return += "public class Script : OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass {\r\n"; 231 Return += "[Serializable] public class Script : OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass {\r\n";
232 Return += @"public Script() { }"+"\r\n"; 232 Return += @"public Script() { }"+"\r\n";
233 Return += Script; 233 Return += Script;
234 Return += "} }\r\n"; 234 Return += "} }\r\n";
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs
index bdae95d..eb3d871 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs
@@ -7,21 +7,22 @@ using System.Threading;
7 7
8namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL 8namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
9{ 9{
10 public class LSL_BaseClass : MarshalByRefObject, LSL_BuiltIn_Commands_Interface 10 [Serializable]
11 public class LSL_BaseClass : LSL_BuiltIn_Commands_Interface
11 { 12 {
12 13
13 public LSL_BuiltIn_Commands m_LSL_Functions; 14 public LSL_BuiltIn_Commands_Interface m_LSL_Functions;
14 15
15 public LSL_BaseClass() 16 public LSL_BaseClass()
16 { 17 {
17 } 18 }
18 public string State 19 public string State()
19 { 20 {
20 get { return m_LSL_Functions.State; } 21 return m_LSL_Functions.State();
21 } 22 }
22 23
23 24
24 public void Start(LSL_BuiltIn_Commands LSL_Functions) 25 public void Start(LSL_BuiltIn_Commands_Interface LSL_Functions)
25 { 26 {
26 m_LSL_Functions = LSL_Functions; 27 m_LSL_Functions = LSL_Functions;
27 28
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs
index 8c2e799..6401163 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs
@@ -14,7 +14,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
14 /// <summary> 14 /// <summary>
15 /// Contains all LSL ll-functions. This class will be in Default AppDomain. 15 /// Contains all LSL ll-functions. This class will be in Default AppDomain.
16 /// </summary> 16 /// </summary>
17 [Serializable]
18 public class LSL_BuiltIn_Commands: LSL_BuiltIn_Commands_Interface 17 public class LSL_BuiltIn_Commands: LSL_BuiltIn_Commands_Interface
19 { 18 {
20 private System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); 19 private System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
@@ -30,7 +29,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
30 } 29 }
31 30
32 31
33 public string State = "default"; 32 private string m_state = "default";
33 public string State() {
34 return m_state;
35 }
34 36
35 public Scene World 37 public Scene World
36 { 38 {
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/MarshalByRefType.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/MarshalByRefType.cs
deleted file mode 100644
index 36bb146..0000000
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/MarshalByRefType.cs
+++ /dev/null
@@ -1,34 +0,0 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4using System.Threading;
5
6namespace OpenSim.Region.ScriptEngine.DotNetEngine
7{
8 // Because this class is derived from MarshalByRefObject, a proxy
9 // to a MarshalByRefType object can be returned across an AppDomain
10 // boundary.
11 public class MarshalByRefType : MarshalByRefObject
12 {
13 // Call this method via a proxy.
14 public void SomeMethod(string callingDomainName)
15 {
16 // Get this AppDomain's settings and display some of them.
17 AppDomainSetup ads = AppDomain.CurrentDomain.SetupInformation;
18 Console.WriteLine("AppName={0}, AppBase={1}, ConfigFile={2}",
19 ads.ApplicationName,
20 ads.ApplicationBase,
21 ads.ConfigurationFile
22 );
23
24 // Display the name of the calling AppDomain and the name
25 // of the second domain.
26 // NOTE: The application's thread has transitioned between
27 // AppDomains.
28 Console.WriteLine("Calling from '{0}' to '{1}'.",
29 callingDomainName,
30 Thread.GetDomain().FriendlyName
31 );
32 }
33 }
34}
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs
index 1d2689d..2cbdfd3 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs
@@ -65,6 +65,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
65 65
66 66
67 // Object<string, Script<string, script>> 67 // Object<string, Script<string, script>>
68 // IMPORTANT: Types and MemberInfo-derived objects require a LOT of memory.
69 // Instead use RuntimeTypeHandle, RuntimeFieldHandle and RunTimeHandle (IntPtr) instead!
68 internal Dictionary<IScriptHost, Dictionary<string, OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass>> Scripts = new Dictionary<IScriptHost, Dictionary<string, OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass>>(); 70 internal Dictionary<IScriptHost, Dictionary<string, OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass>> Scripts = new Dictionary<IScriptHost, Dictionary<string, OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass>>();
69 public Scene World 71 public Scene World
70 { 72 {
@@ -221,23 +223,18 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
221 /// <returns></returns> 223 /// <returns></returns>
222 private OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass LoadAndInitAssembly(AppDomain FreeAppDomain, string FileName, IScriptHost host) 224 private OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass LoadAndInitAssembly(AppDomain FreeAppDomain, string FileName, IScriptHost host)
223 { 225 {
224 //object[] ADargs = new object[]
225 // {
226 // this,
227 // host
228 // };
229 226
230 ////LSL_BaseClass mbrt = (LSL_BaseClass)FreeAppDomain.CreateInstanceAndUnwrap(FileName, "SecondLife.Script"); 227 //LSL_BaseClass mbrt = (LSL_BaseClass)FreeAppDomain.CreateInstanceAndUnwrap(FileName, "SecondLife.Script");
231 //Console.WriteLine("Base directory: " + AppDomain.CurrentDomain.BaseDirectory); 228 Console.WriteLine("Base directory: " + AppDomain.CurrentDomain.BaseDirectory);
232 229
233 //LSL_BaseClass mbrt = (LSL_BaseClass)FreeAppDomain.CreateInstanceFromAndUnwrap(FileName, "SecondLife.Script"); 230 LSL_BaseClass mbrt = (LSL_BaseClass)FreeAppDomain.CreateInstanceFromAndUnwrap(FileName, "SecondLife.Script");
234 //Type mytype = mbrt.GetType(); 231 Type mytype = mbrt.GetType();
235 232
236 //Console.WriteLine("is proxy={0}", RemotingServices.IsTransparentProxy(mbrt)); 233 Console.WriteLine("is proxy={0}", RemotingServices.IsTransparentProxy(mbrt));
237 234
238 235
239 ////mbrt.Start(); 236 //mbrt.Start();
240 //return mbrt; 237 return mbrt;
241 238
242 239
243 240
@@ -301,11 +298,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
301 Type type = Script.GetType(); 298 Type type = Script.GetType();
302 299
303 300
304 m_scriptEngine.Log.Verbose("ScriptEngine", "Invoke: \"" + Script.State + "_event_" + FunctionName + "\""); 301 m_scriptEngine.Log.Verbose("ScriptEngine", "Invoke: \"" + Script.State() + "_event_" + FunctionName + "\"");
305 302
306 try 303 try
307 { 304 {
308 type.InvokeMember(Script.State + "_event_" + FunctionName, BindingFlags.InvokeMethod, null, Script, args); 305 type.InvokeMember(Script.State() + "_event_" + FunctionName, BindingFlags.InvokeMethod, null, Script, args);
309 } 306 }
310 catch (Exception e) 307 catch (Exception e)
311 { 308 {