From 1d41fd4984308a4b811f40aca18a90a79f243020 Mon Sep 17 00:00:00 2001 From: Tedd Hansen Date: Sat, 18 Aug 2007 19:54:04 +0000 Subject: Working on AppDomains. Scripting is now officially broken. :] --- .../ScriptEngine/DotNetEngine/ScriptManager.cs | 25 ++++++++++------------ 1 file changed, 11 insertions(+), 14 deletions(-) (limited to 'OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs') 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 // Object> + // IMPORTANT: Types and MemberInfo-derived objects require a LOT of memory. + // Instead use RuntimeTypeHandle, RuntimeFieldHandle and RunTimeHandle (IntPtr) instead! internal Dictionary> Scripts = new Dictionary>(); public Scene World { @@ -221,23 +223,18 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine /// private OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass LoadAndInitAssembly(AppDomain FreeAppDomain, string FileName, IScriptHost host) { - //object[] ADargs = new object[] - // { - // this, - // host - // }; - ////LSL_BaseClass mbrt = (LSL_BaseClass)FreeAppDomain.CreateInstanceAndUnwrap(FileName, "SecondLife.Script"); - //Console.WriteLine("Base directory: " + AppDomain.CurrentDomain.BaseDirectory); + //LSL_BaseClass mbrt = (LSL_BaseClass)FreeAppDomain.CreateInstanceAndUnwrap(FileName, "SecondLife.Script"); + Console.WriteLine("Base directory: " + AppDomain.CurrentDomain.BaseDirectory); - //LSL_BaseClass mbrt = (LSL_BaseClass)FreeAppDomain.CreateInstanceFromAndUnwrap(FileName, "SecondLife.Script"); - //Type mytype = mbrt.GetType(); + LSL_BaseClass mbrt = (LSL_BaseClass)FreeAppDomain.CreateInstanceFromAndUnwrap(FileName, "SecondLife.Script"); + Type mytype = mbrt.GetType(); - //Console.WriteLine("is proxy={0}", RemotingServices.IsTransparentProxy(mbrt)); + Console.WriteLine("is proxy={0}", RemotingServices.IsTransparentProxy(mbrt)); - ////mbrt.Start(); - //return mbrt; + //mbrt.Start(); + return mbrt; @@ -301,11 +298,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine Type type = Script.GetType(); - m_scriptEngine.Log.Verbose("ScriptEngine", "Invoke: \"" + Script.State + "_event_" + FunctionName + "\""); + m_scriptEngine.Log.Verbose("ScriptEngine", "Invoke: \"" + Script.State() + "_event_" + FunctionName + "\""); try { - type.InvokeMember(Script.State + "_event_" + FunctionName, BindingFlags.InvokeMethod, null, Script, args); + type.InvokeMember(Script.State() + "_event_" + FunctionName, BindingFlags.InvokeMethod, null, Script, args); } catch (Exception e) { -- cgit v1.1