Adds a new script command 'modInvoke' to invoke registered functions

from region modules. The LSL translator is extended to generate the
modInvoke format of commands for directly inlined function calls.

A region module can register a function Test() with the name "Test".
LSL code can call that function as "Test()". The compiler will translate
that invocation into modInvoke("Test", ...)
This commit is contained in:
Mic Bowman
2012-03-15 13:16:02 -07:00
parent acb1355ff2
commit 402ff75d78
7 changed files with 270 additions and 5 deletions

View File

@@ -31,6 +31,7 @@ using OpenMetaverse;
namespace OpenSim.Region.Framework.Interfaces
{
public delegate void ScriptCommand(UUID script, string id, string module, string command, string k);
public delegate object ScriptInvocation(UUID script, object[] parms);
/// <summary>
/// Interface for communication between OpenSim modules and in-world scripts
@@ -45,6 +46,15 @@ namespace OpenSim.Region.Framework.Interfaces
/// </summary>
event ScriptCommand OnScriptCommand;
void RegisterScriptInvocation(string name, ScriptInvocation fn, Type[] csig, Type rsig);
ScriptInvocation LookupScriptInvocation(string fname);
string LookupModInvocation(string fname);
Type[] LookupTypeSignature(string fname);
Type LookupReturnType(string fname);
object InvokeOperation(UUID scriptId, string fname, params object[] parms);
/// <summary>
/// Send a link_message event to an in-world script
/// </summary>