* Applied patch from Melanie, mantis issue #1581 - "Refactor LSL language, api and compiler out of XEngine"

"First stage in a major Script Engine refactor, that will result in the LSL implementaions ebing reconverged. Not there yet, but one major part is done."
Thank you, Melanie!
This commit is contained in:
lbsa71
2008-06-24 21:09:49 +00:00
parent c0a083ad38
commit 6b7930104b
50 changed files with 15820 additions and 1354 deletions

View File

@@ -28,7 +28,8 @@
using System;
using System.Collections.Generic;
using System.Reflection;
using OpenSim.Region.ScriptEngine.XEngine.Script;
using OpenSim.Region.ScriptEngine.Shared;
using OpenSim.Region.ScriptEngine.Shared.ScriptBase;
namespace OpenSim.Region.ScriptEngine.XEngine
{
@@ -44,15 +45,15 @@ namespace OpenSim.Region.ScriptEngine.XEngine
}
protected override scriptEvents DoGetStateEventFlags()
protected override scriptEvents DoGetStateEventFlags(string state)
{
//Console.WriteLine("Get event flags for " + m_Script.State);
//Console.WriteLine("Get event flags for " + state);
// Check to see if we've already computed the flags for this state
scriptEvents eventFlags = scriptEvents.None;
if (m_stateEvents.ContainsKey(m_Script.State))
if (m_stateEvents.ContainsKey(state))
{
m_stateEvents.TryGetValue(m_Script.State, out eventFlags);
m_stateEvents.TryGetValue(state, out eventFlags);
return eventFlags;
}
@@ -61,7 +62,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
// Fill in the events for this state, cache the results in the map
foreach (KeyValuePair<string, scriptEvents> kvp in m_eventFlagsMap)
{
string evname = m_Script.State + "_event_" + kvp.Key;
string evname = state + "_event_" + kvp.Key;
//Console.WriteLine("Trying event "+evname);
try
{
@@ -80,18 +81,18 @@ namespace OpenSim.Region.ScriptEngine.XEngine
// Save the flags we just computed and return the result
if (eventFlags != 0)
m_stateEvents.Add(m_Script.State, eventFlags);
m_stateEvents.Add(state, eventFlags);
//Console.WriteLine("Returning {0:x}", eventFlags);
return (eventFlags);
}
protected override void DoExecuteEvent(string FunctionName, object[] args)
protected override void DoExecuteEvent(string state, string FunctionName, object[] args)
{
// IMPORTANT: Types and MemberInfo-derived objects require a LOT of memory.
// Instead use RuntimeTypeHandle, RuntimeFieldHandle and RunTimeHandle (IntPtr) instead!
string EventName = m_Script.State + "_event_" + FunctionName;
string EventName = state + "_event_" + FunctionName;
//#if DEBUG
// Console.WriteLine("ScriptEngine: Script event function name: " + EventName);