Started on AppDomains for ScriptEngine. Moved llFunctions in LSL_BaseClass.cs to LSL_BuiltIn_Commands.cs. Changed how scripts are loaded.

afrisby
Tedd Hansen 2007-08-18 18:18:14 +00:00
parent 6c7f828833
commit 1284369a32
10 changed files with 568 additions and 461 deletions

View File

@ -0,0 +1,115 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Threading;
using System.Runtime.Remoting;
using System.IO;
namespace OpenSim.Region.ScriptEngine.DotNetEngine
{
public class AppDomainManager
{
private int MaxScriptsPerAppDomain = 10;
private List<AppDomainStructure> AppDomains = new List<AppDomainStructure>();
private struct AppDomainStructure
{
/// <summary>
/// The AppDomain itself
/// </summary>
public AppDomain CurrentAppDomain;
/// <summary>
/// Number of scripts loaded into AppDomain
/// </summary>
public int ScriptsLoaded;
/// <summary>
/// Number of dead scripts
/// </summary>
public int ScriptsWaitingUnload;
}
private AppDomainStructure CurrentAD;
private object GetLock = new object();
private ScriptEngine m_scriptEngine;
public AppDomainManager(ScriptEngine scriptEngine)
{
m_scriptEngine = scriptEngine;
}
internal AppDomain GetFreeAppDomain()
{
lock(GetLock) {
// No current or current full?
if (CurrentAD.CurrentAppDomain == null || CurrentAD.ScriptsLoaded >= MaxScriptsPerAppDomain)
{
// Create a new current AppDomain
CurrentAD = new AppDomainStructure();
CurrentAD.ScriptsWaitingUnload = 0; // to avoid compile warning for not in use
CurrentAD.CurrentAppDomain = PrepareNewAppDomain();
AppDomains.Add(CurrentAD);
}
// Increase number of scripts loaded
CurrentAD.ScriptsLoaded++;
// Return AppDomain
return CurrentAD.CurrentAppDomain;
} // lock
}
private int AppDomainNameCount;
private AppDomain PrepareNewAppDomain()
{
// Create and prepare a new AppDomain
AppDomainNameCount++;
// TODO: Currently security and configuration match current appdomain
// Construct and initialize settings for a second AppDomain.
AppDomainSetup ads = new AppDomainSetup();
ads.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;
//Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ScriptEngines");
//ads.ApplicationName = "DotNetScriptEngine";
//ads.DynamicBase = ads.ApplicationBase;
Console.WriteLine("AppDomain BaseDirectory: " + ads.ApplicationBase);
ads.DisallowBindingRedirects = false;
ads.DisallowCodeDownload = true;
ads.ShadowCopyFiles = "true";
ads.ConfigurationFile =
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
AppDomain AD = AppDomain.CreateDomain("ScriptAppDomain_" + AppDomainNameCount, null, ads);
foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies())
{
//Console.WriteLine("Loading: " + a.GetName(true));
try
{
AD.Load(a.GetName(true));
}
catch (Exception e)
{
//Console.WriteLine("FAILED load");
}
}
Console.WriteLine("Assembly file: " + this.GetType().Assembly.CodeBase);
Console.WriteLine("Assembly name: " + this.GetType().ToString());
//AD.CreateInstanceFrom(this.GetType().Assembly.CodeBase, "OpenSim.Region.ScriptEngine.DotNetEngine.ScriptEngine");
//AD.Load(this.GetType().Assembly.CodeBase);
Console.WriteLine("Done preparing new appdomain.");
return AD;
}
public class NOOP : MarshalByRefType
{
public NOOP() {
}
}
}
}

View File

@ -229,10 +229,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
// Add namespace, class name and inheritance // Add namespace, class name and inheritance
Return = "namespace SecondLife {\r\n"; Return = "namespace SecondLife {\r\n";
Return += "public class Script : OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass {\r\n"; Return += "public class Script : OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass {\r\n";
Return += @" Return += @"public Script() { }"+"\r\n";
public Script(
OpenSim.Region.ScriptEngine.DotNetEngine.ScriptManager manager,
OpenSim.Region.Environment.Scenes.Scripting.IScriptHost host ) : base( manager, host ) { }"+"\r\n";
Return += Script; Return += Script;
Return += "} }\r\n"; Return += "} }\r\n";

View File

@ -2,468 +2,378 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler; using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler;
using libsecondlife;
using OpenSim.Region.Environment.Scenes;
using OpenSim.Region.Environment.Scenes.Scripting;
using OpenSim.Framework.Console; using OpenSim.Framework.Console;
using System.Threading;
namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
{ {
public class LSL_BaseClass : LSL_BuiltIn_Commands_Interface public class LSL_BaseClass : MarshalByRefObject, LSL_BuiltIn_Commands_Interface
{ {
public string State = "default";
private System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
protected ScriptManager m_manager; public LSL_BuiltIn_Commands m_LSL_Functions;
protected IScriptHost m_host;
public LSL_BaseClass(ScriptManager manager, IScriptHost host) public LSL_BaseClass()
{ {
m_manager = manager; }
m_host = host; public string State
{
get { return m_LSL_Functions.State; }
} }
public Scene World
{
get { return m_manager.World; }
}
public void Start(string FullScriptID) public void Start(LSL_BuiltIn_Commands LSL_Functions)
{ {
MainLog.Instance.Notice("ScriptEngine", "LSL_BaseClass.Start() called. FullScriptID: " + FullScriptID + ": Hosted by [" + m_host.Name + ":" + m_host.UUID + "@" + m_host.AbsolutePosition + "]"); m_LSL_Functions = LSL_Functions;
MainLog.Instance.Notice("ScriptEngine", "LSL_BaseClass.Start() called.");
// Get this AppDomain's settings and display some of them.
AppDomainSetup ads = AppDomain.CurrentDomain.SetupInformation;
Console.WriteLine("AppName={0}, AppBase={1}, ConfigFile={2}",
ads.ApplicationName,
ads.ApplicationBase,
ads.ConfigurationFile
);
// Display the name of the calling AppDomain and the name
// of the second domain.
// NOTE: The application's thread has transitioned between
// AppDomains.
Console.WriteLine("Calling to '{0}'.",
Thread.GetDomain().FriendlyName
);
return; return;
} }
//These are the implementations of the various ll-functions used by the LSL scripts. public double llSin(double f) { return m_LSL_Functions.llSin(f); }
//starting out, we use the System.Math library for trig functions. - CFK 8-14-07 public double llCos(double f) { return m_LSL_Functions.llCos(f); }
public double llSin(double f) { return (double)Math.Sin(f); } public double llTan(double f) { return m_LSL_Functions.llTan(f); }
public double llCos(double f) { return (double)Math.Cos(f); } public double llAtan2(double x, double y) { return m_LSL_Functions.llAtan2(x, y); }
public double llTan(double f) { return (double)Math.Tan(f); } public double llSqrt(double f) { return m_LSL_Functions.llSqrt(f); }
public double llAtan2(double x, double y) { return (double)Math.Atan2(y, x); } public double llPow(double fbase, double fexponent) { return m_LSL_Functions.llPow(fbase, fexponent); }
public double llSqrt(double f) { return (double)Math.Sqrt(f); } public int llAbs(int i) { return m_LSL_Functions.llAbs(i); }
public double llPow(double fbase, double fexponent) { return (double)Math.Pow(fbase, fexponent); } public double llFabs(double f) { return m_LSL_Functions.llFabs(f); }
public int llAbs(int i) { return (int)Math.Abs(i); } public double llFrand(double mag) { return m_LSL_Functions.llFrand(mag); }
public double llFabs(double f) { return (double)Math.Abs(f); } public int llFloor(double f) { return m_LSL_Functions.llFloor(f); }
public int llCeil(double f) { return m_LSL_Functions.llCeil(f); }
public double llFrand(double mag) public int llRound(double f) { return m_LSL_Functions.llRound(f); }
{ public double llVecMag(Axiom.Math.Vector3 v) { return m_LSL_Functions.llVecMag(v); }
lock(OpenSim.Framework.Utilities.Util.RandomClass) public Axiom.Math.Vector3 llVecNorm(Axiom.Math.Vector3 v) { return m_LSL_Functions.llVecNorm(v); }
{ public double llVecDist(Axiom.Math.Vector3 a, Axiom.Math.Vector3 b) { return m_LSL_Functions.llVecDist(a, b); }
return OpenSim.Framework.Utilities.Util.RandomClass.Next((int)mag); public Axiom.Math.Vector3 llRot2Euler(Axiom.Math.Quaternion r) { return m_LSL_Functions.llRot2Euler(r); }
} public Axiom.Math.Quaternion llEuler2Rot(Axiom.Math.Vector3 v) { return m_LSL_Functions.llEuler2Rot(v); }
} public Axiom.Math.Quaternion llAxes2Rot(Axiom.Math.Vector3 fwd, Axiom.Math.Vector3 left, Axiom.Math.Vector3 up) { return m_LSL_Functions.llAxes2Rot(fwd, left, up); }
public int llFloor(double f) { return (int)Math.Floor(f); } public Axiom.Math.Vector3 llRot2Fwd(Axiom.Math.Quaternion r) { return m_LSL_Functions.llRot2Fwd(r); }
public int llCeil(double f) { return (int)Math.Ceiling(f); } public Axiom.Math.Vector3 llRot2Left(Axiom.Math.Quaternion r) { return m_LSL_Functions.llRot2Left(r); }
public int llRound(double f) { return (int)Math.Round(f, 1); } public Axiom.Math.Vector3 llRot2Up(Axiom.Math.Quaternion r) { return m_LSL_Functions.llRot2Up(r); }
public double llVecMag(Axiom.Math.Vector3 v) { return 0; } public Axiom.Math.Quaternion llRotBetween(Axiom.Math.Vector3 start, Axiom.Math.Vector3 end) { return m_LSL_Functions.llRotBetween(start, end); }
public Axiom.Math.Vector3 llVecNorm(Axiom.Math.Vector3 v) { return new Axiom.Math.Vector3(); } public void llWhisper(int channelID, string text) { m_LSL_Functions.llWhisper(channelID, text); }
public double llVecDist(Axiom.Math.Vector3 a, Axiom.Math.Vector3 b) { return 0; } public void llSay(int channelID, string text) { m_LSL_Functions.llSay(channelID, text); }
public Axiom.Math.Vector3 llRot2Euler(Axiom.Math.Quaternion r) { return new Axiom.Math.Vector3(); } public void llShout(int channelID, string text) { m_LSL_Functions.llShout(channelID, text); }
public Axiom.Math.Quaternion llEuler2Rot(Axiom.Math.Vector3 v) { return new Axiom.Math.Quaternion(); } public int llListen(int channelID, string name, string ID, string msg) { return m_LSL_Functions.llListen(channelID, name, ID, msg); }
public Axiom.Math.Quaternion llAxes2Rot(Axiom.Math.Vector3 fwd, Axiom.Math.Vector3 left, Axiom.Math.Vector3 up) { return new Axiom.Math.Quaternion(); } public void llListenControl(int number, int active) { m_LSL_Functions.llListenControl(number, active); }
public Axiom.Math.Vector3 llRot2Fwd(Axiom.Math.Quaternion r) { return new Axiom.Math.Vector3(); } public void llListenRemove(int number) { m_LSL_Functions.llListenRemove(number); }
public Axiom.Math.Vector3 llRot2Left(Axiom.Math.Quaternion r) { return new Axiom.Math.Vector3(); } public void llSensor(string name, string id, int type, double range, double arc) { m_LSL_Functions.llSensor(name, id, type, range, arc); }
public Axiom.Math.Vector3 llRot2Up(Axiom.Math.Quaternion r) { return new Axiom.Math.Vector3(); } public void llSensorRepeat(string name, string id, int type, double range, double arc, double rate) { m_LSL_Functions.llSensorRepeat(name, id, type, range, arc, rate); }
public Axiom.Math.Quaternion llRotBetween(Axiom.Math.Vector3 start, Axiom.Math.Vector3 end) { return new Axiom.Math.Quaternion(); } public void llSensorRemove() { m_LSL_Functions.llSensorRemove(); }
public string llDetectedName(int number) { return m_LSL_Functions.llDetectedName(number); }
public void llWhisper(int channelID, string text) public string llDetectedKey(int number) { return m_LSL_Functions.llDetectedKey(number); }
{ public string llDetectedOwner(int number) { return m_LSL_Functions.llDetectedOwner(number); }
//Common.SendToDebug("INTERNAL FUNCTION llWhisper(" + channelID + ", \"" + text + "\");"); public int llDetectedType(int number) { return m_LSL_Functions.llDetectedType(number); }
Console.WriteLine("llWhisper Channel " + channelID + ", Text: \"" + text + "\""); public Axiom.Math.Vector3 llDetectedPos(int number) { return m_LSL_Functions.llDetectedPos(number); }
//type for whisper is 0 public Axiom.Math.Vector3 llDetectedVel(int number) { return m_LSL_Functions.llDetectedVel(number); }
World.SimChat(Helpers.StringToField(text), public Axiom.Math.Vector3 llDetectedGrab(int number) { return m_LSL_Functions.llDetectedGrab(number); }
0, m_host.AbsolutePosition, m_host.Name, m_host.UUID); public Axiom.Math.Quaternion llDetectedRot(int number) { return m_LSL_Functions.llDetectedRot(number); }
public int llDetectedGroup(int number) { return m_LSL_Functions.llDetectedGroup(number); }
public int llDetectedLinkNumber(int number) { return m_LSL_Functions.llDetectedLinkNumber(number); }
} public void llDie() { m_LSL_Functions.llDie(); }
//public void llSay(int channelID, string text) public double llGround(Axiom.Math.Vector3 offset) { return m_LSL_Functions.llGround(offset); }
public void llSay(int channelID, string text) public double llCloud(Axiom.Math.Vector3 offset) { return m_LSL_Functions.llCloud(offset); }
{ public Axiom.Math.Vector3 llWind(Axiom.Math.Vector3 offset) { return m_LSL_Functions.llWind(offset); }
//TODO: DO SOMETHING USEFUL HERE public void llSetStatus(int status, int value) { m_LSL_Functions.llSetStatus(status, value); }
//Common.SendToDebug("INTERNAL FUNCTION llSay(" + (int)channelID + ", \"" + (string)text + "\");"); public int llGetStatus(int status) { return m_LSL_Functions.llGetStatus(status); }
Console.WriteLine("llSay Channel " + channelID + ", Text: \"" + text + "\""); public void llSetScale(Axiom.Math.Vector3 scale) { m_LSL_Functions.llSetScale(scale); }
//type for say is 1 public Axiom.Math.Vector3 llGetScale() { return m_LSL_Functions.llGetScale(); }
public void llSetColor(Axiom.Math.Vector3 color, int face) { m_LSL_Functions.llSetColor(color, face); }
World.SimChat(Helpers.StringToField(text), public double llGetAlpha(int face) { return m_LSL_Functions.llGetAlpha(face); }
1, m_host.AbsolutePosition, m_host.Name, m_host.UUID); public void llSetAlpha(double alpha, int face) { m_LSL_Functions.llSetAlpha(alpha, face); }
} public Axiom.Math.Vector3 llGetColor(int face) { return m_LSL_Functions.llGetColor(face); }
public void llSetTexture(string texture, int face) { m_LSL_Functions.llSetTexture(texture, face); }
public void llShout(int channelID, string text) public void llScaleTexture(double u, double v, int face) { m_LSL_Functions.llScaleTexture(u, v, face); }
{ public void llOffsetTexture(double u, double v, int face) { m_LSL_Functions.llOffsetTexture(u, v, face); }
Console.WriteLine("llShout Channel " + channelID + ", Text: \"" + text + "\""); public void llRotateTexture(double rotation, int face) { m_LSL_Functions.llRotateTexture(rotation, face); }
//type for shout is 2 public string llGetTexture(int face) { return m_LSL_Functions.llGetTexture(face); }
World.SimChat(Helpers.StringToField(text), public void llSetPos(Axiom.Math.Vector3 pos) { m_LSL_Functions.llSetPos(pos); }
2, m_host.AbsolutePosition, m_host.Name, m_host.UUID); public Axiom.Math.Vector3 llGetPos() { return m_LSL_Functions.llGetPos(); }
public Axiom.Math.Vector3 llGetLocalPos() { return m_LSL_Functions.llGetLocalPos(); }
} public void llSetRot(Axiom.Math.Quaternion rot) { m_LSL_Functions.llSetRot(rot); }
public Axiom.Math.Quaternion llGetRot() { return m_LSL_Functions.llGetRot(); }
public int llListen(int channelID, string name, string ID, string msg) { return 0; } public Axiom.Math.Quaternion llGetLocalRot() { return m_LSL_Functions.llGetLocalRot(); }
public void llListenControl(int number, int active) { return; } public void llSetForce(Axiom.Math.Vector3 force, int local) { m_LSL_Functions.llSetForce(force, local); }
public void llListenRemove(int number) { return; } public Axiom.Math.Vector3 llGetForce() { return m_LSL_Functions.llGetForce(); }
public void llSensor(string name, string id, int type, double range, double arc) { return; } public int llTarget(Axiom.Math.Vector3 position, double range) { return m_LSL_Functions.llTarget(position, range); }
public void llSensorRepeat(string name, string id, int type, double range, double arc, double rate) { return; } public void llTargetRemove(int number) { m_LSL_Functions.llTargetRemove(number); }
public void llSensorRemove() { return; } public int llRotTarget(Axiom.Math.Quaternion rot, double error) { return m_LSL_Functions.llRotTarget(rot, error); }
public string llDetectedName(int number) { return ""; } public void llRotTargetRemove(int number) { m_LSL_Functions.llRotTargetRemove(number); }
public string llDetectedKey(int number) { return ""; } public void llMoveToTarget(Axiom.Math.Vector3 target, double tau) { m_LSL_Functions.llMoveToTarget(target, tau); }
public string llDetectedOwner(int number) { return ""; } public void llStopMoveToTarget() { m_LSL_Functions.llStopMoveToTarget(); }
public int llDetectedType(int number) { return 0; } public void llApplyImpulse(Axiom.Math.Vector3 force, int local) { m_LSL_Functions.llApplyImpulse(force, local); }
public Axiom.Math.Vector3 llDetectedPos(int number) { return new Axiom.Math.Vector3(); } public void llApplyRotationalImpulse(Axiom.Math.Vector3 force, int local) { m_LSL_Functions.llApplyRotationalImpulse(force, local); }
public Axiom.Math.Vector3 llDetectedVel(int number) { return new Axiom.Math.Vector3(); } public void llSetTorque(Axiom.Math.Vector3 torque, int local) { m_LSL_Functions.llSetTorque(torque, local); }
public Axiom.Math.Vector3 llDetectedGrab(int number) { return new Axiom.Math.Vector3(); } public Axiom.Math.Vector3 llGetTorque() { return m_LSL_Functions.llGetTorque(); }
public Axiom.Math.Quaternion llDetectedRot(int number) { return new Axiom.Math.Quaternion(); } public void llSetForceAndTorque(Axiom.Math.Vector3 force, Axiom.Math.Vector3 torque, int local) { m_LSL_Functions.llSetForceAndTorque(force, torque, local); }
public int llDetectedGroup(int number) { return 0; } public Axiom.Math.Vector3 llGetVel() { return m_LSL_Functions.llGetVel(); }
public int llDetectedLinkNumber(int number) { return 0; } public Axiom.Math.Vector3 llGetAccel() { return m_LSL_Functions.llGetAccel(); }
public void llDie() { return; } public Axiom.Math.Vector3 llGetOmega() { return m_LSL_Functions.llGetOmega(); }
public double llGround(Axiom.Math.Vector3 offset) { return 0; } public double llGetTimeOfDay() { return m_LSL_Functions.llGetTimeOfDay(); }
public double llCloud(Axiom.Math.Vector3 offset) { return 0; } public double llGetWallclock() { return m_LSL_Functions.llGetWallclock(); }
public Axiom.Math.Vector3 llWind(Axiom.Math.Vector3 offset) { return new Axiom.Math.Vector3(); } public double llGetTime() { return m_LSL_Functions.llGetTime(); }
public void llSetStatus(int status, int value) { return; } public void llResetTime() { m_LSL_Functions.llResetTime(); }
public int llGetStatus(int status) { return 0; } public double llGetAndResetTime() { return m_LSL_Functions.llGetAndResetTime(); }
public void llSetScale(Axiom.Math.Vector3 scale) { return; } public void llSound() { m_LSL_Functions.llSound(); }
public Axiom.Math.Vector3 llGetScale() { return new Axiom.Math.Vector3(); } public void llPlaySound(string sound, double volume) { m_LSL_Functions.llPlaySound(sound, volume); }
public void llSetColor(Axiom.Math.Vector3 color, int face) { return; } public void llLoopSound(string sound, double volume) { m_LSL_Functions.llLoopSound(sound, volume); }
public double llGetAlpha(int face) { return 0; } public void llLoopSoundMaster(string sound, double volume) { m_LSL_Functions.llLoopSoundMaster(sound, volume); }
public void llSetAlpha(double alpha, int face) { return; } public void llLoopSoundSlave(string sound, double volume) { m_LSL_Functions.llLoopSoundSlave(sound, volume); }
public Axiom.Math.Vector3 llGetColor(int face) { return new Axiom.Math.Vector3(); } public void llPlaySoundSlave(string sound, double volume) { m_LSL_Functions.llPlaySoundSlave(sound, volume); }
public void llSetTexture(string texture, int face) { return; } public void llTriggerSound(string sound, double volume) { m_LSL_Functions.llTriggerSound(sound, volume); }
public void llScaleTexture(double u, double v, int face) { return; } public void llStopSound() { m_LSL_Functions.llStopSound(); }
public void llOffsetTexture(double u, double v, int face) { return; } public void llPreloadSound(string sound) { m_LSL_Functions.llPreloadSound(sound); }
public void llRotateTexture(double rotation, int face) { return; } public string llGetSubString(string src, int start, int end) { return m_LSL_Functions.llGetSubString(src, start, end); }
public string llGetTexture(int face) { return ""; } public string llDeleteSubString(string src, int start, int end) { return m_LSL_Functions.llDeleteSubString(src, start, end); }
public void llSetPos(Axiom.Math.Vector3 pos) { return; } public string llInsertString(string dst, int position, string src) { return m_LSL_Functions.llInsertString(dst, position, src); }
public string llToUpper(string source) { return m_LSL_Functions.llToUpper(source); }
public Axiom.Math.Vector3 llGetPos() public string llToLower(string source) { return m_LSL_Functions.llToLower(source); }
{ public int llGiveMoney(string destination, int amount) { return m_LSL_Functions.llGiveMoney(destination, amount); }
throw new NotImplementedException("llGetPos"); public void llMakeExplosion() { m_LSL_Functions.llMakeExplosion(); }
// return m_host.AbsolutePosition; public void llMakeFountain() { m_LSL_Functions.llMakeFountain(); }
} public void llMakeSmoke() { m_LSL_Functions.llMakeSmoke(); }
public void llMakeFire() { m_LSL_Functions.llMakeFire(); }
public Axiom.Math.Vector3 llGetLocalPos() { return new Axiom.Math.Vector3(); } public void llRezObject(string inventory, Axiom.Math.Vector3 pos, Axiom.Math.Quaternion rot, int param) { m_LSL_Functions.llRezObject(inventory, pos, rot, param); }
public void llSetRot(Axiom.Math.Quaternion rot) { } public void llLookAt(Axiom.Math.Vector3 target, double strength, double damping) { m_LSL_Functions.llLookAt(target, strength, damping); }
public Axiom.Math.Quaternion llGetRot() { return new Axiom.Math.Quaternion(); } public void llStopLookAt() { m_LSL_Functions.llStopLookAt(); }
public Axiom.Math.Quaternion llGetLocalRot() { return new Axiom.Math.Quaternion(); } public void llSetTimerEvent(double sec) { m_LSL_Functions.llSetTimerEvent(sec); }
public void llSetForce(Axiom.Math.Vector3 force, int local) { } public void llSleep(double sec) { m_LSL_Functions.llSleep(sec); }
public Axiom.Math.Vector3 llGetForce() { return new Axiom.Math.Vector3(); } public double llGetMass() { return m_LSL_Functions.llGetMass(); }
public int llTarget(Axiom.Math.Vector3 position, double range) { return 0; } public void llCollisionFilter(string name, string id, int accept) { m_LSL_Functions.llCollisionFilter(name, id, accept); }
public void llTargetRemove(int number) { } public void llTakeControls(int controls, int accept, int pass_on) { m_LSL_Functions.llTakeControls(controls, accept, pass_on); }
public int llRotTarget(Axiom.Math.Quaternion rot, double error) { return 0; } public void llReleaseControls() { m_LSL_Functions.llReleaseControls(); }
public void llRotTargetRemove(int number) { } public void llAttachToAvatar(int attachment) { m_LSL_Functions.llAttachToAvatar(attachment); }
public void llMoveToTarget(Axiom.Math.Vector3 target, double tau) { } public void llDetachFromAvatar() { m_LSL_Functions.llDetachFromAvatar(); }
public void llStopMoveToTarget() { } public void llTakeCamera() { m_LSL_Functions.llTakeCamera(); }
public void llApplyImpulse(Axiom.Math.Vector3 force, int local) { } public void llReleaseCamera() { m_LSL_Functions.llReleaseCamera(); }
public void llApplyRotationalImpulse(Axiom.Math.Vector3 force, int local) { } public string llGetOwner() { return m_LSL_Functions.llGetOwner(); }
public void llSetTorque(Axiom.Math.Vector3 torque, int local) { } public void llInstantMessage(string user, string message) { m_LSL_Functions.llInstantMessage(user, message); }
public Axiom.Math.Vector3 llGetTorque() { return new Axiom.Math.Vector3(); } public void llEmail(string address, string subject, string message) { m_LSL_Functions.llEmail(address, subject, message); }
public void llSetForceAndTorque(Axiom.Math.Vector3 force, Axiom.Math.Vector3 torque, int local) { } public void llGetNextEmail(string address, string subject) { m_LSL_Functions.llGetNextEmail(address, subject); }
public Axiom.Math.Vector3 llGetVel() { return new Axiom.Math.Vector3(); } public string llGetKey() { return m_LSL_Functions.llGetKey(); }
public Axiom.Math.Vector3 llGetAccel() { return new Axiom.Math.Vector3(); } public void llSetBuoyancy(double buoyancy) { m_LSL_Functions.llSetBuoyancy(buoyancy); }
public Axiom.Math.Vector3 llGetOmega() { return new Axiom.Math.Vector3(); } public void llSetHoverHeight(double height, int water, double tau) { m_LSL_Functions.llSetHoverHeight(height, water, tau); }
public double llGetTimeOfDay() { return 0; } public void llStopHover() { m_LSL_Functions.llStopHover(); }
public double llGetWallclock() { return 0; } public void llMinEventDelay(double delay) { m_LSL_Functions.llMinEventDelay(delay); }
public double llGetTime() { return 0; } public void llSoundPreload() { m_LSL_Functions.llSoundPreload(); }
public void llResetTime() { } public void llRotLookAt(Axiom.Math.Quaternion target, double strength, double damping) { m_LSL_Functions.llRotLookAt(target, strength, damping); }
public double llGetAndResetTime() { return 0; } public int llStringLength(string str) { return m_LSL_Functions.llStringLength(str); }
public void llSound() { } public void llStartAnimation(string anim) { m_LSL_Functions.llStartAnimation(anim); }
public void llPlaySound(string sound, double volume) { } public void llStopAnimation(string anim) { m_LSL_Functions.llStopAnimation(anim); }
public void llLoopSound(string sound, double volume) { } public void llPointAt() { m_LSL_Functions.llPointAt(); }
public void llLoopSoundMaster(string sound, double volume) { } public void llStopPointAt() { m_LSL_Functions.llStopPointAt(); }
public void llLoopSoundSlave(string sound, double volume) { } public void llTargetOmega(Axiom.Math.Vector3 axis, double spinrate, double gain) { m_LSL_Functions.llTargetOmega(axis, spinrate, gain); }
public void llPlaySoundSlave(string sound, double volume) { } public int llGetStartParameter() { return m_LSL_Functions.llGetStartParameter(); }
public void llTriggerSound(string sound, double volume) { } public void llGodLikeRezObject(string inventory, Axiom.Math.Vector3 pos) { m_LSL_Functions.llGodLikeRezObject(inventory, pos); }
public void llStopSound() { } public void llRequestPermissions(string agent, int perm) { m_LSL_Functions.llRequestPermissions(agent, perm); }
public void llPreloadSound(string sound) { } public string llGetPermissionsKey() { return m_LSL_Functions.llGetPermissionsKey(); }
public string llGetSubString(string src, int start, int end) { return src.Substring(start, end); } public int llGetPermissions() { return m_LSL_Functions.llGetPermissions(); }
public string llDeleteSubString(string src, int start, int end) { return ""; } public int llGetLinkNumber() { return m_LSL_Functions.llGetLinkNumber(); }
public string llInsertString(string dst, int position, string src) { return ""; } public void llSetLinkColor(int linknumber, Axiom.Math.Vector3 color, int face) { m_LSL_Functions.llSetLinkColor(linknumber, color, face); }
public string llToUpper(string src) { return src.ToUpper(); } public void llCreateLink(string target, int parent) { m_LSL_Functions.llCreateLink(target, parent); }
public string llToLower(string src) { return src.ToLower(); } public void llBreakLink(int linknum) { m_LSL_Functions.llBreakLink(linknum); }
public int llGiveMoney(string destination, int amount) { return 0; } public void llBreakAllLinks() { m_LSL_Functions.llBreakAllLinks(); }
public void llMakeExplosion() { } public string llGetLinkKey(int linknum) { return m_LSL_Functions.llGetLinkKey(linknum); }
public void llMakeFountain() { } public void llGetLinkName(int linknum) { m_LSL_Functions.llGetLinkName(linknum); }
public void llMakeSmoke() { } public int llGetInventoryNumber(int type) { return m_LSL_Functions.llGetInventoryNumber(type); }
public void llMakeFire() { } public string llGetInventoryName(int type, int number) { return m_LSL_Functions.llGetInventoryName(type, number); }
public void llRezObject(string inventory, Axiom.Math.Vector3 pos, Axiom.Math.Quaternion rot, int param) { } public void llSetScriptState(string name, int run) { m_LSL_Functions.llSetScriptState(name, run); }
public void llLookAt(Axiom.Math.Vector3 target, double strength, double damping) { } public double llGetEnergy() { return m_LSL_Functions.llGetEnergy(); }
public void llStopLookAt() { } public void llGiveInventory(string destination, string inventory) { m_LSL_Functions.llGiveInventory(destination, inventory); }
public void llSetTimerEvent(double sec) { } public void llRemoveInventory(string item) { m_LSL_Functions.llRemoveInventory(item); }
public void llSleep(double sec) { System.Threading.Thread.Sleep((int)(sec * 1000)); } public void llSetText(string text, Axiom.Math.Vector3 color, double alpha) { m_LSL_Functions.llSetText(text, color, alpha); }
public double llGetMass() { return 0; } public double llWater(Axiom.Math.Vector3 offset) { return m_LSL_Functions.llWater(offset); }
public void llCollisionFilter(string name, string id, int accept) { } public void llPassTouches(int pass) { m_LSL_Functions.llPassTouches(pass); }
public void llTakeControls(int controls, int accept, int pass_on) { } public string llRequestAgentData(string id, int data) { return m_LSL_Functions.llRequestAgentData(id, data); }
public void llReleaseControls() { } public string llRequestInventoryData(string name) { return m_LSL_Functions.llRequestInventoryData(name); }
public void llAttachToAvatar(int attachment) { } public void llSetDamage(double damage) { m_LSL_Functions.llSetDamage(damage); }
public void llDetachFromAvatar() { } public void llTeleportAgentHome(string agent) { m_LSL_Functions.llTeleportAgentHome(agent); }
public void llTakeCamera() { } public void llModifyLand(int action, int brush) { m_LSL_Functions.llModifyLand(action, brush); }
public void llReleaseCamera() { } public void llCollisionSound(string impact_sound, double impact_volume) { m_LSL_Functions.llCollisionSound(impact_sound, impact_volume); }
public string llGetOwner() { return ""; } public void llCollisionSprite(string impact_sprite) { m_LSL_Functions.llCollisionSprite(impact_sprite); }
public void llInstantMessage(string user, string message) { } public string llGetAnimation(string id) { return m_LSL_Functions.llGetAnimation(id); }
public void llEmail(string address, string subject, string message) { } public void llResetScript() { m_LSL_Functions.llResetScript(); }
public void llGetNextEmail(string address, string subject) { } public void llMessageLinked(int linknum, int num, string str, string id) { m_LSL_Functions.llMessageLinked(linknum, num, str, id); }
public string llGetKey() { return ""; } public void llPushObject(string target, Axiom.Math.Vector3 impulse, Axiom.Math.Vector3 ang_impulse, int local) { m_LSL_Functions.llPushObject(target, impulse, ang_impulse, local); }
public void llSetBuoyancy(double buoyancy) { } public void llPassCollisions(int pass) { m_LSL_Functions.llPassCollisions(pass); }
public void llSetHoverHeight(double height, int water, double tau) { } public string llGetScriptName() { return m_LSL_Functions.llGetScriptName(); }
public void llStopHover() { } public int llGetNumberOfSides() { return m_LSL_Functions.llGetNumberOfSides(); }
public void llMinEventDelay(double delay) { } public Axiom.Math.Quaternion llAxisAngle2Rot(Axiom.Math.Vector3 axis, double angle) { return m_LSL_Functions.llAxisAngle2Rot(axis, angle); }
public void llSoundPreload() { } public Axiom.Math.Vector3 llRot2Axis(Axiom.Math.Quaternion rot) { return m_LSL_Functions.llRot2Axis(rot); }
public void llRotLookAt(Axiom.Math.Quaternion target, double strength, double damping) { } public void llRot2Angle() { m_LSL_Functions.llRot2Angle(); }
public double llAcos(double val) { return m_LSL_Functions.llAcos(val); }
public int llStringLength(string str) public double llAsin(double val) { return m_LSL_Functions.llAsin(val); }
{ public double llAngleBetween(Axiom.Math.Quaternion a, Axiom.Math.Quaternion b) { return m_LSL_Functions.llAngleBetween(a, b); }
if(str.Length > 0) public string llGetInventoryKey(string name) { return m_LSL_Functions.llGetInventoryKey(name); }
{ public void llAllowInventoryDrop(int add) { m_LSL_Functions.llAllowInventoryDrop(add); }
return str.Length; public Axiom.Math.Vector3 llGetSunDirection() { return m_LSL_Functions.llGetSunDirection(); }
} public Axiom.Math.Vector3 llGetTextureOffset(int face) { return m_LSL_Functions.llGetTextureOffset(face); }
else public Axiom.Math.Vector3 llGetTextureScale(int side) { return m_LSL_Functions.llGetTextureScale(side); }
{ public double llGetTextureRot(int side) { return m_LSL_Functions.llGetTextureRot(side); }
return 0; public int llSubStringIndex(string source, string pattern) { return m_LSL_Functions.llSubStringIndex(source, pattern); }
} public string llGetOwnerKey(string id) { return m_LSL_Functions.llGetOwnerKey(id); }
} public Axiom.Math.Vector3 llGetCenterOfMass() { return m_LSL_Functions.llGetCenterOfMass(); }
public List<string> llListSort(List<string> src, int stride, int ascending) { return m_LSL_Functions.llListSort(src, stride, ascending); }
public void llStartAnimation(string anim) { } public int llGetListLength(List<string> src) { return m_LSL_Functions.llGetListLength(src); }
public void llStopAnimation(string anim) { } public int llList2Integer(List<string> src, int index) { return m_LSL_Functions.llList2Integer(src, index); }
public void llPointAt() { } public double llList2double(List<string> src, int index) { return m_LSL_Functions.llList2double(src, index); }
public void llStopPointAt() { } public string llList2String(List<string> src, int index) { return m_LSL_Functions.llList2String(src, index); }
public void llTargetOmega(Axiom.Math.Vector3 axis, double spinrate, double gain) { } public string llList2Key(List<string> src, int index) { return m_LSL_Functions.llList2Key(src, index); }
public int llGetStartParameter() { return 0; } public Axiom.Math.Vector3 llList2Vector(List<string> src, int index) { return m_LSL_Functions.llList2Vector(src, index); }
public void llGodLikeRezObject(string inventory, Axiom.Math.Vector3 pos) { } public Axiom.Math.Quaternion llList2Rot(List<string> src, int index) { return m_LSL_Functions.llList2Rot(src, index); }
public void llRequestPermissions(string agent, int perm) { } public List<string> llList2List(List<string> src, int start, int end) { return m_LSL_Functions.llList2List(src, start, end); }
public string llGetPermissionsKey() { return ""; } public List<string> llDeleteSubList(List<string> src, int start, int end) { return m_LSL_Functions.llDeleteSubList(src, start, end); }
public int llGetPermissions() { return 0; } public int llGetListEntryType(List<string> src, int index) { return m_LSL_Functions.llGetListEntryType(src, index); }
public int llGetLinkNumber() { return 0; } public string llList2CSV(List<string> src) { return m_LSL_Functions.llList2CSV(src); }
public void llSetLinkColor(int linknumber, Axiom.Math.Vector3 color, int face) { } public List<string> llCSV2List(string src) { return m_LSL_Functions.llCSV2List(src); }
public void llCreateLink(string target, int parent) { } public List<string> llListRandomize(List<string> src, int stride) { return m_LSL_Functions.llListRandomize(src, stride); }
public void llBreakLink(int linknum) { } public List<string> llList2ListStrided(List<string> src, int start, int end, int stride) { return m_LSL_Functions.llList2ListStrided(src, start, end, stride); }
public void llBreakAllLinks() { } public Axiom.Math.Vector3 llGetRegionCorner() { return m_LSL_Functions.llGetRegionCorner(); }
public string llGetLinkKey(int linknum) { return ""; } public List<string> llListInsertList(List<string> dest, List<string> src, int start) { return m_LSL_Functions.llListInsertList(dest, src, start); }
public void llGetLinkName(int linknum) { } public int llListFindList(List<string> src, List<string> test) { return m_LSL_Functions.llListFindList(src, test); }
public int llGetInventoryNumber(int type) { return 0; } public string llGetObjectName() { return m_LSL_Functions.llGetObjectName(); }
public string llGetInventoryName(int type, int number) { return ""; } public void llSetObjectName(string name) { m_LSL_Functions.llSetObjectName(name); }
public void llSetScriptState(string name, int run) { } public string llGetDate() { return m_LSL_Functions.llGetDate(); }
public double llGetEnergy() { return 1.0f; } public int llEdgeOfWorld(Axiom.Math.Vector3 pos, Axiom.Math.Vector3 dir) { return m_LSL_Functions.llEdgeOfWorld(pos, dir); }
public void llGiveInventory(string destination, string inventory) { } public int llGetAgentInfo(string id) { return m_LSL_Functions.llGetAgentInfo(id); }
public void llRemoveInventory(string item) { } public void llAdjustSoundVolume(double volume) { m_LSL_Functions.llAdjustSoundVolume(volume); }
public void llSetSoundQueueing(int queue) { m_LSL_Functions.llSetSoundQueueing(queue); }
public void llSetText(string text, Axiom.Math.Vector3 color, double alpha) public void llSetSoundRadius(double radius) { m_LSL_Functions.llSetSoundRadius(radius); }
{ public string llKey2Name(string id) { return m_LSL_Functions.llKey2Name(id); }
m_host.SetText(text, color, alpha ); public void llSetTextureAnim(int mode, int face, int sizex, int sizey, double start, double length, double rate) { m_LSL_Functions.llSetTextureAnim(mode, face, sizex, sizey, start, length, rate); }
} public void llTriggerSoundLimited(string sound, double volume, Axiom.Math.Vector3 top_north_east, Axiom.Math.Vector3 bottom_south_west) { m_LSL_Functions.llTriggerSoundLimited(sound, volume, top_north_east, bottom_south_west); }
public void llEjectFromLand(string pest) { m_LSL_Functions.llEjectFromLand(pest); }
public double llWater(Axiom.Math.Vector3 offset) { return 0; } public void llParseString2List() { m_LSL_Functions.llParseString2List(); }
public void llPassTouches(int pass) { } public int llOverMyLand(string id) { return m_LSL_Functions.llOverMyLand(id); }
public string llRequestAgentData(string id, int data) { return ""; } public string llGetLandOwnerAt(Axiom.Math.Vector3 pos) { return m_LSL_Functions.llGetLandOwnerAt(pos); }
public string llRequestInventoryData(string name) { return ""; } public string llGetNotecardLine(string name, int line) { return m_LSL_Functions.llGetNotecardLine(name, line); }
public void llSetDamage(double damage) { } public Axiom.Math.Vector3 llGetAgentSize(string id) { return m_LSL_Functions.llGetAgentSize(id); }
public void llTeleportAgentHome(string agent) { } public int llSameGroup(string agent) { return m_LSL_Functions.llSameGroup(agent); }
public void llModifyLand(int action, int brush) { } public void llUnSit(string id) { m_LSL_Functions.llUnSit(id); }
public void llCollisionSound(string impact_sound, double impact_volume) { } public Axiom.Math.Vector3 llGroundSlope(Axiom.Math.Vector3 offset) { return m_LSL_Functions.llGroundSlope(offset); }
public void llCollisionSprite(string impact_sprite) { } public Axiom.Math.Vector3 llGroundNormal(Axiom.Math.Vector3 offset) { return m_LSL_Functions.llGroundNormal(offset); }
public string llGetAnimation(string id) { return ""; } public Axiom.Math.Vector3 llGroundContour(Axiom.Math.Vector3 offset) { return m_LSL_Functions.llGroundContour(offset); }
public void llResetScript() { } public int llGetAttached() { return m_LSL_Functions.llGetAttached(); }
public void llMessageLinked(int linknum, int num, string str, string id) { } public int llGetFreeMemory() { return m_LSL_Functions.llGetFreeMemory(); }
public void llPushObject(string target, Axiom.Math.Vector3 impulse, Axiom.Math.Vector3 ang_impulse, int local) { } public string llGetRegionName() { return m_LSL_Functions.llGetRegionName(); }
public void llPassCollisions(int pass) { } public double llGetRegionTimeDilation() { return m_LSL_Functions.llGetRegionTimeDilation(); }
public string llGetScriptName() { return ""; } public double llGetRegionFPS() { return m_LSL_Functions.llGetRegionFPS(); }
public int llGetNumberOfSides() { return 0; } public void llParticleSystem(List<Object> rules) { m_LSL_Functions.llParticleSystem(rules); }
public Axiom.Math.Quaternion llAxisAngle2Rot(Axiom.Math.Vector3 axis, double angle) { return new Axiom.Math.Quaternion(); } public void llGroundRepel(double height, int water, double tau) { m_LSL_Functions.llGroundRepel(height, water, tau); }
public Axiom.Math.Vector3 llRot2Axis(Axiom.Math.Quaternion rot) { return new Axiom.Math.Vector3(); } public void llGiveInventoryList() { m_LSL_Functions.llGiveInventoryList(); }
public void llRot2Angle() { } public void llSetVehicleType(int type) { m_LSL_Functions.llSetVehicleType(type); }
public double llAcos(double val) { return (double)Math.Acos(val); } public void llSetVehicledoubleParam(int param, double value) { m_LSL_Functions.llSetVehicledoubleParam(param, value); }
public double llAsin(double val) { return (double)Math.Asin(val); } public void llSetVehicleVectorParam(int param, Axiom.Math.Vector3 vec) { m_LSL_Functions.llSetVehicleVectorParam(param, vec); }
public double llAngleBetween(Axiom.Math.Quaternion a, Axiom.Math.Quaternion b) { return 0; } public void llSetVehicleRotationParam(int param, Axiom.Math.Quaternion rot) { m_LSL_Functions.llSetVehicleRotationParam(param, rot); }
public string llGetInventoryKey(string name) { return ""; } public void llSetVehicleFlags(int flags) { m_LSL_Functions.llSetVehicleFlags(flags); }
public void llAllowInventoryDrop(int add) { } public void llRemoveVehicleFlags(int flags) { m_LSL_Functions.llRemoveVehicleFlags(flags); }
public Axiom.Math.Vector3 llGetSunDirection() { return new Axiom.Math.Vector3(); } public void llSitTarget(Axiom.Math.Vector3 offset, Axiom.Math.Quaternion rot) { m_LSL_Functions.llSitTarget(offset, rot); }
public Axiom.Math.Vector3 llGetTextureOffset(int face) { return new Axiom.Math.Vector3(); } public string llAvatarOnSitTarget() { return m_LSL_Functions.llAvatarOnSitTarget(); }
public Axiom.Math.Vector3 llGetTextureScale(int side) { return new Axiom.Math.Vector3(); } public void llAddToLandPassList(string avatar, double hours) { m_LSL_Functions.llAddToLandPassList(avatar, hours); }
public double llGetTextureRot(int side) { return 0; } public void llSetTouchText(string text) { m_LSL_Functions.llSetTouchText(text); }
public int llSubStringIndex(string source, string pattern) { return 0; } public void llSetSitText(string text) { m_LSL_Functions.llSetSitText(text); }
public string llGetOwnerKey(string id) { return ""; } public void llSetCameraEyeOffset(Axiom.Math.Vector3 offset) { m_LSL_Functions.llSetCameraEyeOffset(offset); }
public Axiom.Math.Vector3 llGetCenterOfMass() { return new Axiom.Math.Vector3(); } public void llSetCameraAtOffset(Axiom.Math.Vector3 offset) { m_LSL_Functions.llSetCameraAtOffset(offset); }
public List<string> llListSort(List<string> src, int stride, int ascending) public void llDumpList2String() { m_LSL_Functions.llDumpList2String(); }
{ return new List<string>(); } public void llScriptDanger(Axiom.Math.Vector3 pos) { m_LSL_Functions.llScriptDanger(pos); }
public int llGetListLength(List<string> src) { return 0; } public void llDialog(string avatar, string message, List<string> buttons, int chat_channel) { m_LSL_Functions.llDialog(avatar, message, buttons, chat_channel); }
public int llList2Integer(List<string> src, int index) { return 0; } public void llVolumeDetect(int detect) { m_LSL_Functions.llVolumeDetect(detect); }
public double llList2double(List<string> src, int index) { return 0; } public void llResetOtherScript(string name) { m_LSL_Functions.llResetOtherScript(name); }
public string llList2String(List<string> src, int index) { return ""; } public int llGetScriptState(string name) { return m_LSL_Functions.llGetScriptState(name); }
public string llList2Key(List<string> src, int index) { return ""; } public void llRemoteLoadScript() { m_LSL_Functions.llRemoteLoadScript(); }
public Axiom.Math.Vector3 llList2Vector(List<string> src, int index) public void llSetRemoteScriptAccessPin(int pin) { m_LSL_Functions.llSetRemoteScriptAccessPin(pin); }
{ return new Axiom.Math.Vector3(); } public void llRemoteLoadScriptPin(string target, string name, int pin, int running, int start_param) { m_LSL_Functions.llRemoteLoadScriptPin(target, name, pin, running, start_param); }
public Axiom.Math.Quaternion llList2Rot(List<string> src, int index) public void llOpenRemoteDataChannel() { m_LSL_Functions.llOpenRemoteDataChannel(); }
{ return new Axiom.Math.Quaternion(); } public string llSendRemoteData(string channel, string dest, int idata, string sdata) { return m_LSL_Functions.llSendRemoteData(channel, dest, idata, sdata); }
public List<string> llList2List(List<string> src, int start, int end) public void llRemoteDataReply(string channel, string message_id, string sdata, int idata) { m_LSL_Functions.llRemoteDataReply(channel, message_id, sdata, idata); }
{ return new List<string>(); } public void llCloseRemoteDataChannel(string channel) { m_LSL_Functions.llCloseRemoteDataChannel(channel); }
public List<string> llDeleteSubList(List<string> src, int start, int end) public string llMD5String(string src, int nonce) { return m_LSL_Functions.llMD5String(src, nonce); }
{ return new List<string>(); } public void llSetPrimitiveParams(List<string> rules) { m_LSL_Functions.llSetPrimitiveParams(rules); }
public int llGetListEntryType(List<string> src, int index) { return 0; } public string llStringToBase64(string str) { return m_LSL_Functions.llStringToBase64(str); }
public string llList2CSV(List<string> src) { return ""; } public string llBase64ToString(string str) { return m_LSL_Functions.llBase64ToString(str); }
public List<string> llCSV2List(string src) public void llXorBase64Strings() { m_LSL_Functions.llXorBase64Strings(); }
{ return new List<string>(); } public void llRemoteDataSetRegion() { m_LSL_Functions.llRemoteDataSetRegion(); }
public List<string> llListRandomize(List<string> src, int stride) public double llLog10(double val) { return m_LSL_Functions.llLog10(val); }
{ return new List<string>(); } public double llLog(double val) { return m_LSL_Functions.llLog(val); }
public List<string> llList2ListStrided(List<string> src, int start, int end, int stride) public List<string> llGetAnimationList(string id) { return m_LSL_Functions.llGetAnimationList(id); }
{ return new List<string>(); } public void llSetParcelMusicURL(string url) { m_LSL_Functions.llSetParcelMusicURL(url); }
public Axiom.Math.Vector3 llGetRegionCorner() public Axiom.Math.Vector3 llGetRootPosition() { return m_LSL_Functions.llGetRootPosition(); }
{ return new Axiom.Math.Vector3(World.RegionInfo.RegionLocX * 256, World.RegionInfo.RegionLocY * 256, 0); } public Axiom.Math.Quaternion llGetRootRotation() { return m_LSL_Functions.llGetRootRotation(); }
public List<string> llListInsertList(List<string> dest, List<string> src, int start) public string llGetObjectDesc() { return m_LSL_Functions.llGetObjectDesc(); }
{ return new List<string>(); } public void llSetObjectDesc(string desc) { m_LSL_Functions.llSetObjectDesc(desc); }
public int llListFindList(List<string> src, List<string> test) { return 0; } public string llGetCreator() { return m_LSL_Functions.llGetCreator(); }
public string llGetObjectName() { return ""; } public string llGetTimestamp() { return m_LSL_Functions.llGetTimestamp(); }
public void llSetObjectName(string name) { } public void llSetLinkAlpha(int linknumber, double alpha, int face) { m_LSL_Functions.llSetLinkAlpha(linknumber, alpha, face); }
public string llGetDate() { return ""; } public int llGetNumberOfPrims() { return m_LSL_Functions.llGetNumberOfPrims(); }
public int llEdgeOfWorld(Axiom.Math.Vector3 pos, Axiom.Math.Vector3 dir) { return 0; } public string llGetNumberOfNotecardLines(string name) { return m_LSL_Functions.llGetNumberOfNotecardLines(name); }
public int llGetAgentInfo(string id) { return 0; } public List<string> llGetBoundingBox(string obj) { return m_LSL_Functions.llGetBoundingBox(obj); }
public void llAdjustSoundVolume(double volume) { } public Axiom.Math.Vector3 llGetGeometricCenter() { return m_LSL_Functions.llGetGeometricCenter(); }
public void llSetSoundQueueing(int queue) { } public void llGetPrimitiveParams() { m_LSL_Functions.llGetPrimitiveParams(); }
public void llSetSoundRadius(double radius) { } public string llIntegerToBase64(int number) { return m_LSL_Functions.llIntegerToBase64(number); }
public string llKey2Name(string id) { return ""; } public int llBase64ToInteger(string str) { return m_LSL_Functions.llBase64ToInteger(str); }
public void llSetTextureAnim(int mode, int face, int sizex, int sizey, double start, double length, double rate) { } public double llGetGMTclock() { return m_LSL_Functions.llGetGMTclock(); }
public void llTriggerSoundLimited(string sound, double volume, Axiom.Math.Vector3 top_north_east, Axiom.Math.Vector3 bottom_south_west) { } public string llGetSimulatorHostname() { return m_LSL_Functions.llGetSimulatorHostname(); }
public void llEjectFromLand(string pest) { } public void llSetLocalRot(Axiom.Math.Quaternion rot) { m_LSL_Functions.llSetLocalRot(rot); }
public void llParseString2List() { } public List<string> llParseStringKeepNulls(string src, List<string> seperators, List<string> spacers) { return m_LSL_Functions.llParseStringKeepNulls(src, seperators, spacers); }
public int llOverMyLand(string id) { return 0; } public void llRezAtRoot(string inventory, Axiom.Math.Vector3 position, Axiom.Math.Vector3 velocity, Axiom.Math.Quaternion rot, int param) { m_LSL_Functions.llRezAtRoot(inventory, position, velocity, rot, param); }
public string llGetLandOwnerAt(Axiom.Math.Vector3 pos) { return ""; } public int llGetObjectPermMask(int mask) { return m_LSL_Functions.llGetObjectPermMask(mask); }
public string llGetNotecardLine(string name, int line) { return ""; } public void llSetObjectPermMask(int mask, int value) { m_LSL_Functions.llSetObjectPermMask(mask, value); }
public Axiom.Math.Vector3 llGetAgentSize(string id) { return new Axiom.Math.Vector3(); } public void llGetInventoryPermMask(string item, int mask) { m_LSL_Functions.llGetInventoryPermMask(item, mask); }
public int llSameGroup(string agent) { return 0; } public void llSetInventoryPermMask(string item, int mask, int value) { m_LSL_Functions.llSetInventoryPermMask(item, mask, value); }
public void llUnSit(string id) { } public string llGetInventoryCreator(string item) { return m_LSL_Functions.llGetInventoryCreator(item); }
public Axiom.Math.Vector3 llGroundSlope(Axiom.Math.Vector3 offset) { return new Axiom.Math.Vector3(); } public void llOwnerSay(string msg) { m_LSL_Functions.llOwnerSay(msg); }
public Axiom.Math.Vector3 llGroundNormal(Axiom.Math.Vector3 offset) { return new Axiom.Math.Vector3(); } public void llRequestSimulatorData(string simulator, int data) { m_LSL_Functions.llRequestSimulatorData(simulator, data); }
public Axiom.Math.Vector3 llGroundContour(Axiom.Math.Vector3 offset) { return new Axiom.Math.Vector3(); } public void llForceMouselook(int mouselook) { m_LSL_Functions.llForceMouselook(mouselook); }
public int llGetAttached() { return 0; } public double llGetObjectMass(string id) { return m_LSL_Functions.llGetObjectMass(id); }
public int llGetFreeMemory() { return 0; } public void llListReplaceList() { m_LSL_Functions.llListReplaceList(); }
public string llGetRegionName() { return m_manager.RegionName; } public void llLoadURL(string avatar_id, string message, string url) { m_LSL_Functions.llLoadURL(avatar_id, message, url); }
public double llGetRegionTimeDilation() { return 1.0f; } public void llParcelMediaCommandList(List<string> commandList) { m_LSL_Functions.llParcelMediaCommandList(commandList); }
public double llGetRegionFPS() { return 10.0f; } public void llParcelMediaQuery() { m_LSL_Functions.llParcelMediaQuery(); }
public void llParticleSystem(List<Object> rules) { } public int llModPow(int a, int b, int c) { return m_LSL_Functions.llModPow(a, b, c); }
public void llGroundRepel(double height, int water, double tau) { } public int llGetInventoryType(string name) { return m_LSL_Functions.llGetInventoryType(name); }
public void llGiveInventoryList() { } public void llSetPayPrice(int price, List<string> quick_pay_buttons) { m_LSL_Functions.llSetPayPrice(price, quick_pay_buttons); }
public void llSetVehicleType(int type) { } public Axiom.Math.Vector3 llGetCameraPos() { return m_LSL_Functions.llGetCameraPos(); }
public void llSetVehicledoubleParam(int param, double value) { } public Axiom.Math.Quaternion llGetCameraRot() { return m_LSL_Functions.llGetCameraRot(); }
public void llSetVehicleVectorParam(int param, Axiom.Math.Vector3 vec) { } public void llSetPrimURL() { m_LSL_Functions.llSetPrimURL(); }
public void llSetVehicleRotationParam(int param, Axiom.Math.Quaternion rot) { } public void llRefreshPrimURL() { m_LSL_Functions.llRefreshPrimURL(); }
public void llSetVehicleFlags(int flags) { } public string llEscapeURL(string url) { return m_LSL_Functions.llEscapeURL(url); }
public void llRemoveVehicleFlags(int flags) { } public string llUnescapeURL(string url) { return m_LSL_Functions.llUnescapeURL(url); }
public void llSitTarget(Axiom.Math.Vector3 offset, Axiom.Math.Quaternion rot) { } public void llMapDestination(string simname, Axiom.Math.Vector3 pos, Axiom.Math.Vector3 look_at) { m_LSL_Functions.llMapDestination(simname, pos, look_at); }
public string llAvatarOnSitTarget() { return ""; } public void llAddToLandBanList(string avatar, double hours) { m_LSL_Functions.llAddToLandBanList(avatar, hours); }
public void llAddToLandPassList(string avatar, double hours) { } public void llRemoveFromLandPassList(string avatar) { m_LSL_Functions.llRemoveFromLandPassList(avatar); }
public void llSetTouchText(string text) public void llRemoveFromLandBanList(string avatar) { m_LSL_Functions.llRemoveFromLandBanList(avatar); }
{ public void llSetCameraParams(List<string> rules) { m_LSL_Functions.llSetCameraParams(rules); }
} public void llClearCameraParams() { m_LSL_Functions.llClearCameraParams(); }
public double llListStatistics(int operation, List<string> src) { return m_LSL_Functions.llListStatistics(operation, src); }
public void llSetSitText(string text) public int llGetUnixTime() { return m_LSL_Functions.llGetUnixTime(); }
{ public int llGetParcelFlags(Axiom.Math.Vector3 pos) { return m_LSL_Functions.llGetParcelFlags(pos); }
} public int llGetRegionFlags() { return m_LSL_Functions.llGetRegionFlags(); }
public void llSetCameraEyeOffset(Axiom.Math.Vector3 offset) { } public string llXorBase64StringsCorrect(string str1, string str2) { return m_LSL_Functions.llXorBase64StringsCorrect(str1, str2); }
public void llSetCameraAtOffset(Axiom.Math.Vector3 offset) { } public void llHTTPRequest() { m_LSL_Functions.llHTTPRequest(); }
public void llDumpList2String() { } public void llResetLandBanList() { m_LSL_Functions.llResetLandBanList(); }
public void llScriptDanger(Axiom.Math.Vector3 pos) { } public void llResetLandPassList() { m_LSL_Functions.llResetLandPassList(); }
public void llDialog(string avatar, string message, List<string> buttons, int chat_channel) { } public int llGetParcelPrimCount(Axiom.Math.Vector3 pos, int category, int sim_wide) { return m_LSL_Functions.llGetParcelPrimCount(pos, category, sim_wide); }
public void llVolumeDetect(int detect) { } public List<string> llGetParcelPrimOwners(Axiom.Math.Vector3 pos) { return m_LSL_Functions.llGetParcelPrimOwners(pos); }
public void llResetOtherScript(string name) { } public int llGetObjectPrimCount(string object_id) { return m_LSL_Functions.llGetObjectPrimCount(object_id); }
public int llGetScriptState(string name) { return 0; } public int llGetParcelMaxPrims(Axiom.Math.Vector3 pos, int sim_wide) { return m_LSL_Functions.llGetParcelMaxPrims(pos, sim_wide); }
public void llRemoteLoadScript() { } public List<string> llGetParcelDetails(Axiom.Math.Vector3 pos, List<string> param) { return m_LSL_Functions.llGetParcelDetails(pos, param); }
public void llSetRemoteScriptAccessPin(int pin) { }
public void llRemoteLoadScriptPin(string target, string name, int pin, int running, int start_param) { }
public void llOpenRemoteDataChannel() { }
public string llSendRemoteData(string channel, string dest, int idata, string sdata) { return ""; }
public void llRemoteDataReply(string channel, string message_id, string sdata, int idata) { }
public void llCloseRemoteDataChannel(string channel) { }
public string llMD5String(string src, int nonce)
{
return OpenSim.Framework.Utilities.Util.Md5Hash(src + ":" + nonce.ToString());
}
public void llSetPrimitiveParams(List<string> rules) { }
public string llStringToBase64(string str) { return ""; }
public string llBase64ToString(string str) { return ""; }
public void llXorBase64Strings() { }
public void llRemoteDataSetRegion() { }
public double llLog10(double val) { return (double)Math.Log10(val); }
public double llLog(double val) { return (double)Math.Log(val); }
public List<string> llGetAnimationList(string id) { return new List<string>(); }
public void llSetParcelMusicURL(string url) { }
public Axiom.Math.Vector3 llGetRootPosition()
{
throw new NotImplementedException("llGetRootPosition");
//return m_root.AbsolutePosition;
}
public Axiom.Math.Quaternion llGetRootRotation()
{
return new Axiom.Math.Quaternion();
}
public string llGetObjectDesc() { return ""; }
public void llSetObjectDesc(string desc) { }
public string llGetCreator() { return ""; }
public string llGetTimestamp() { return ""; }
public void llSetLinkAlpha(int linknumber, double alpha, int face) { }
public int llGetNumberOfPrims() { return 0; }
public string llGetNumberOfNotecardLines(string name) { return ""; }
public List<string> llGetBoundingBox(string obj) { return new List<string>(); }
public Axiom.Math.Vector3 llGetGeometricCenter() { return new Axiom.Math.Vector3(); }
public void llGetPrimitiveParams() { }
public string llIntegerToBase64(int number) { return ""; }
public int llBase64ToInteger(string str) { return 0; }
public double llGetGMTclock() { return 0; }
public string llGetSimulatorHostname() { return ""; }
public void llSetLocalRot(Axiom.Math.Quaternion rot) { }
public List<string> llParseStringKeepNulls(string src, List<string> seperators, List<string> spacers)
{ return new List<string>(); }
public void llRezAtRoot(string inventory, Axiom.Math.Vector3 position, Axiom.Math.Vector3 velocity, Axiom.Math.Quaternion rot, int param) { }
public int llGetObjectPermMask(int mask) { return 0; }
public void llSetObjectPermMask(int mask, int value) { }
public void llGetInventoryPermMask(string item, int mask) { }
public void llSetInventoryPermMask(string item, int mask, int value) { }
public string llGetInventoryCreator(string item) { return ""; }
public void llOwnerSay(string msg) { }
public void llRequestSimulatorData(string simulator, int data) { }
public void llForceMouselook(int mouselook) { }
public double llGetObjectMass(string id) { return 0; }
public void llListReplaceList() { }
public void llLoadURL(string avatar_id, string message, string url) { }
public void llParcelMediaCommandList(List<string> commandList) { }
public void llParcelMediaQuery() { }
public int llModPow(int a, int b, int c)
{
Int64 tmp = 0;
Int64 val = Math.DivRem(Convert.ToInt64(Math.Pow(a, b)), c, out tmp);
return Convert.ToInt32(tmp);
}
public int llGetInventoryType(string name) { return 0; }
public void llSetPayPrice(int price, List<string> quick_pay_buttons) { }
public Axiom.Math.Vector3 llGetCameraPos() { return new Axiom.Math.Vector3(); }
public Axiom.Math.Quaternion llGetCameraRot() { return new Axiom.Math.Quaternion(); }
public void llSetPrimURL() { }
public void llRefreshPrimURL() { }
public string llEscapeURL(string url) { return ""; }
public string llUnescapeURL(string url) { return ""; }
public void llMapDestination(string simname, Axiom.Math.Vector3 pos, Axiom.Math.Vector3 look_at) { }
public void llAddToLandBanList(string avatar, double hours) { }
public void llRemoveFromLandPassList(string avatar) { }
public void llRemoveFromLandBanList(string avatar) { }
public void llSetCameraParams(List<string> rules) { }
public void llClearCameraParams() { }
public double llListStatistics(int operation, List<string> src) { return 0; }
public int llGetUnixTime()
{
return OpenSim.Framework.Utilities.Util.UnixTimeSinceEpoch();
}
public int llGetParcelFlags(Axiom.Math.Vector3 pos) { return 0; }
public int llGetRegionFlags() { return 0; }
public string llXorBase64StringsCorrect(string str1, string str2) { return ""; }
public void llHTTPRequest() { }
public void llResetLandBanList() { }
public void llResetLandPassList() { }
public int llGetParcelPrimCount(Axiom.Math.Vector3 pos, int category, int sim_wide) { return 0; }
public List<string> llGetParcelPrimOwners(Axiom.Math.Vector3 pos) { return new List<string>(); }
public int llGetObjectPrimCount(string object_id) { return 0; }
public int llGetParcelMaxPrims(Axiom.Math.Vector3 pos, int sim_wide) { return 0; }
public List<string> llGetParcelDetails(Axiom.Math.Vector3 pos, List<string> param) { return new List<string>(); }

View File

@ -38,6 +38,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
/// <summary> /// <summary>
/// Prepares events so they can be directly executed upon a script by EventQueueManager, then queues it. /// Prepares events so they can be directly executed upon a script by EventQueueManager, then queues it.
/// </summary> /// </summary>
[Serializable]
class EventManager class EventManager
{ {
private ScriptEngine myScriptEngine; private ScriptEngine myScriptEngine;

View File

@ -39,6 +39,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
/// EventQueueManager handles event queues /// EventQueueManager handles event queues
/// Events are queued and executed in separate thread /// Events are queued and executed in separate thread
/// </summary> /// </summary>
[Serializable]
class EventQueueManager class EventQueueManager
{ {
private Thread EventQueueThread; private Thread EventQueueThread;

View File

@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace OpenSim.Region.ScriptEngine.DotNetEngine
{
// Because this class is derived from MarshalByRefObject, a proxy
// to a MarshalByRefType object can be returned across an AppDomain
// boundary.
public class MarshalByRefType : MarshalByRefObject
{
// Call this method via a proxy.
public void SomeMethod(string callingDomainName)
{
// Get this AppDomain's settings and display some of them.
AppDomainSetup ads = AppDomain.CurrentDomain.SetupInformation;
Console.WriteLine("AppName={0}, AppBase={1}, ConfigFile={2}",
ads.ApplicationName,
ads.ApplicationBase,
ads.ConfigurationFile
);
// Display the name of the calling AppDomain and the name
// of the second domain.
// NOTE: The application's thread has transitioned between
// AppDomains.
Console.WriteLine("Calling from '{0}' to '{1}'.",
callingDomainName,
Thread.GetDomain().FriendlyName
);
}
}
}

View File

@ -38,6 +38,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
/// <summary> /// <summary>
/// This is the root object for ScriptEngine /// This is the root object for ScriptEngine
/// </summary> /// </summary>
[Serializable]
public class ScriptEngine : OpenSim.Region.Environment.Scenes.Scripting.ScriptEngineInterface public class ScriptEngine : OpenSim.Region.Environment.Scenes.Scripting.ScriptEngineInterface
{ {
@ -45,6 +46,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
internal EventManager myEventManager; // Handles and queues incoming events from OpenSim internal EventManager myEventManager; // Handles and queues incoming events from OpenSim
internal EventQueueManager myEventQueueManager; // Executes events internal EventQueueManager myEventQueueManager; // Executes events
internal ScriptManager myScriptManager; // Load, unload and execute scripts internal ScriptManager myScriptManager; // Load, unload and execute scripts
internal AppDomainManager myAppDomainManager;
private OpenSim.Framework.Console.LogBase m_log; private OpenSim.Framework.Console.LogBase m_log;
@ -70,6 +72,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
myEventQueueManager = new EventQueueManager(this); myEventQueueManager = new EventQueueManager(this);
myEventManager = new EventManager(this); myEventManager = new EventManager(this);
myScriptManager = new ScriptManager(this); myScriptManager = new ScriptManager(this);
myAppDomainManager = new AppDomainManager(this);
// Should we iterate the region for scripts that needs starting? // Should we iterate the region for scripts that needs starting?
// Or can we assume we are loaded before anything else so we can use proper events? // Or can we assume we are loaded before anything else so we can use proper events?

View File

@ -31,8 +31,10 @@ using System.Collections.Generic;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using System.Reflection; using System.Reflection;
using System.Runtime.Remoting;
using OpenSim.Region.Environment.Scenes; using OpenSim.Region.Environment.Scenes;
using OpenSim.Region.Environment.Scenes.Scripting; using OpenSim.Region.Environment.Scenes.Scripting;
using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL;
namespace OpenSim.Region.ScriptEngine.DotNetEngine namespace OpenSim.Region.ScriptEngine.DotNetEngine
{ {
@ -41,6 +43,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
/// Compiles them if necessary /// Compiles them if necessary
/// Execute functions for EventQueueManager /// Execute functions for EventQueueManager
/// </summary> /// </summary>
[Serializable]
public class ScriptManager public class ScriptManager
{ {
@ -49,6 +52,15 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
{ {
m_scriptEngine = scriptEngine; m_scriptEngine = scriptEngine;
m_scriptEngine.Log.Verbose("ScriptEngine", "ScriptManager Start"); m_scriptEngine.Log.Verbose("ScriptEngine", "ScriptManager Start");
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}
private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
Console.WriteLine("CurrentDomain_AssemblyResolve: " + args.Name);
return Assembly.GetExecutingAssembly().FullName == args.Name ? Assembly.GetExecutingAssembly() : null;
} }
@ -158,13 +170,15 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
FileName = ProcessYield(FileName); FileName = ProcessYield(FileName);
// * Find next available AppDomain to put it in // * Find next available AppDomain to put it in
AppDomain FreeAppDomain = GetFreeAppDomain(); AppDomain FreeAppDomain = m_scriptEngine.myAppDomainManager.GetFreeAppDomain();
// * Load and start script, for now with dummy host // * Load and start script, for now with dummy host
//OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO.LSL_BaseClass Script = LoadAndInitAssembly(FreeAppDomain, FileName); //OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO.LSL_BaseClass Script = LoadAndInitAssembly(FreeAppDomain, FileName);
//OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass Script = LoadAndInitAssembly(FreeAppDomain, FileName, ObjectID);
OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass Script = LoadAndInitAssembly(FreeAppDomain, FileName, ObjectID); OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass Script = LoadAndInitAssembly(FreeAppDomain, FileName, ObjectID);
//string FullScriptID = ScriptID + "." + ObjectID; //string FullScriptID = ScriptID + "." + ObjectID;
// Add it to our temporary active script keeper // Add it to our temporary active script keeper
//Scripts.Add(FullScriptID, Script); //Scripts.Add(FullScriptID, Script);
@ -176,7 +190,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
// Start the script - giving it BuiltIns // Start the script - giving it BuiltIns
//myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager initializing script, handing over private builtin command interface"); //myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager initializing script, handing over private builtin command interface");
Script.Start( ScriptID ); Script.Start(new OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL_BuiltIn_Commands(this, ObjectID));
} }
catch (Exception e) catch (Exception e)
@ -193,11 +207,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
return FileName; return FileName;
} }
private AppDomain GetFreeAppDomain() //private AppDomain GetFreeAppDomain()
{ //{
// TODO: Find an available AppDomain - if none, create one and add default security // // TODO: Find an available AppDomain - if none, create one and add default security
return Thread.GetDomain(); // return Thread.GetDomain();
} //}
/// <summary> /// <summary>
/// Does actual loading and initialization of script Assembly /// Does actual loading and initialization of script Assembly
@ -207,6 +221,33 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
/// <returns></returns> /// <returns></returns>
private OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass LoadAndInitAssembly(AppDomain FreeAppDomain, string FileName, IScriptHost host) 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.CreateInstanceFromAndUnwrap(FileName, "SecondLife.Script");
//Type mytype = mbrt.GetType();
//Console.WriteLine("is proxy={0}", RemotingServices.IsTransparentProxy(mbrt));
////mbrt.Start();
//return mbrt;
//myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager Loading Assembly " + FileName); //myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager Loading Assembly " + FileName);
// Load .Net Assembly (.dll) // Load .Net Assembly (.dll)
// Initialize and return it // Initialize and return it
@ -247,8 +288,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
// Create constructor arguments // Create constructor arguments
object[] args = new object[] object[] args = new object[]
{ {
this, // this,
host // host
}; };
return (OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass)Activator.CreateInstance(t, args ); return (OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass)Activator.CreateInstance(t, args );

View File

@ -8,6 +8,10 @@ using Rail.MSIL;
namespace OpenSim.Region.ScriptEngine.DotNetEngine namespace OpenSim.Region.ScriptEngine.DotNetEngine
{ {
/// <summary>
/// Tedds Sandbox for RAIL/microtrheading. This class is only for testing purposes!
/// Its offspring will be the actual implementation.
/// </summary>
class TempDotNetMicroThreadingCodeInjector class TempDotNetMicroThreadingCodeInjector
{ {
public static string TestFix(string FileName) public static string TestFix(string FileName)

View File

@ -955,6 +955,7 @@
<Reference name="System" localCopy="false"/> <Reference name="System" localCopy="false"/>
<Reference name="System.Data" localCopy="false"/> <Reference name="System.Data" localCopy="false"/>
<Reference name="System.Xml" localCopy="false"/> <Reference name="System.Xml" localCopy="false"/>
<Reference name="System.Runtime.Remoting" localCopy="false"/>
<Reference name="OpenSim.Region.Environment" /> <Reference name="OpenSim.Region.Environment" />
<Reference name="Axiom.MathLib.dll" localCopy="false"/> <Reference name="Axiom.MathLib.dll" localCopy="false"/>
<Reference name="libsecondlife.dll"/> <Reference name="libsecondlife.dll"/>