aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/AppDomainManager.cs115
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs5
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs794
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs1
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueManager.cs1
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/MarshalByRefType.cs34
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs3
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs63
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/TempDotNetMicroThreadingCodeInjector.cs4
-rw-r--r--prebuild.xml1
10 files changed, 564 insertions, 457 deletions
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/AppDomainManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/AppDomainManager.cs
new file mode 100644
index 0000000..1e20547
--- /dev/null
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/AppDomainManager.cs
@@ -0,0 +1,115 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4using System.Reflection;
5using System.Threading;
6using System.Runtime.Remoting;
7using System.IO;
8
9namespace OpenSim.Region.ScriptEngine.DotNetEngine
10{
11 public class AppDomainManager
12 {
13 private int MaxScriptsPerAppDomain = 10;
14 private List<AppDomainStructure> AppDomains = new List<AppDomainStructure>();
15 private struct AppDomainStructure
16 {
17 /// <summary>
18 /// The AppDomain itself
19 /// </summary>
20 public AppDomain CurrentAppDomain;
21 /// <summary>
22 /// Number of scripts loaded into AppDomain
23 /// </summary>
24 public int ScriptsLoaded;
25 /// <summary>
26 /// Number of dead scripts
27 /// </summary>
28 public int ScriptsWaitingUnload;
29 }
30 private AppDomainStructure CurrentAD;
31 private object GetLock = new object();
32
33 private ScriptEngine m_scriptEngine;
34 public AppDomainManager(ScriptEngine scriptEngine)
35 {
36 m_scriptEngine = scriptEngine;
37 }
38
39 internal AppDomain GetFreeAppDomain()
40 {
41 lock(GetLock) {
42 // No current or current full?
43 if (CurrentAD.CurrentAppDomain == null || CurrentAD.ScriptsLoaded >= MaxScriptsPerAppDomain)
44 {
45 // Create a new current AppDomain
46 CurrentAD = new AppDomainStructure();
47 CurrentAD.ScriptsWaitingUnload = 0; // to avoid compile warning for not in use
48 CurrentAD.CurrentAppDomain = PrepareNewAppDomain();
49 AppDomains.Add(CurrentAD);
50
51 }
52
53 // Increase number of scripts loaded
54 CurrentAD.ScriptsLoaded++;
55 // Return AppDomain
56 return CurrentAD.CurrentAppDomain;
57 } // lock
58 }
59
60 private int AppDomainNameCount;
61 private AppDomain PrepareNewAppDomain()
62 {
63 // Create and prepare a new AppDomain
64 AppDomainNameCount++;
65 // TODO: Currently security and configuration match current appdomain
66
67 // Construct and initialize settings for a second AppDomain.
68 AppDomainSetup ads = new AppDomainSetup();
69 ads.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;
70 //Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ScriptEngines");
71 //ads.ApplicationName = "DotNetScriptEngine";
72 //ads.DynamicBase = ads.ApplicationBase;
73
74 Console.WriteLine("AppDomain BaseDirectory: " + ads.ApplicationBase);
75 ads.DisallowBindingRedirects = false;
76 ads.DisallowCodeDownload = true;
77 ads.ShadowCopyFiles = "true";
78
79 ads.ConfigurationFile =
80 AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
81
82 AppDomain AD = AppDomain.CreateDomain("ScriptAppDomain_" + AppDomainNameCount, null, ads);
83 foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies())
84 {
85 //Console.WriteLine("Loading: " + a.GetName(true));
86 try
87 {
88 AD.Load(a.GetName(true));
89
90 }
91 catch (Exception e)
92 {
93 //Console.WriteLine("FAILED load");
94 }
95
96 }
97
98 Console.WriteLine("Assembly file: " + this.GetType().Assembly.CodeBase);
99 Console.WriteLine("Assembly name: " + this.GetType().ToString());
100 //AD.CreateInstanceFrom(this.GetType().Assembly.CodeBase, "OpenSim.Region.ScriptEngine.DotNetEngine.ScriptEngine");
101
102 //AD.Load(this.GetType().Assembly.CodeBase);
103
104 Console.WriteLine("Done preparing new appdomain.");
105 return AD;
106
107 }
108
109 public class NOOP : MarshalByRefType
110 {
111 public NOOP() {
112 }
113 }
114 }
115}
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs
index 7370c6e..2427cc2 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs
@@ -229,10 +229,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
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 += "public class Script : OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass {\r\n";
232 Return += @" 232 Return += @"public Script() { }"+"\r\n";
233 public Script(
234 OpenSim.Region.ScriptEngine.DotNetEngine.ScriptManager manager,
235 OpenSim.Region.Environment.Scenes.Scripting.IScriptHost host ) : base( manager, host ) { }"+"\r\n";
236 Return += Script; 233 Return += Script;
237 Return += "} }\r\n"; 234 Return += "} }\r\n";
238 235
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs
index 6c43b06..cc62ab5 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs
@@ -2,468 +2,378 @@ using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler; 4using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler;
5using libsecondlife;
6using OpenSim.Region.Environment.Scenes;
7using OpenSim.Region.Environment.Scenes.Scripting;
8using OpenSim.Framework.Console; 5using OpenSim.Framework.Console;
6using System.Threading;
9 7
10namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL 8namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
11{ 9{
12 public class LSL_BaseClass : LSL_BuiltIn_Commands_Interface 10 public class LSL_BaseClass : MarshalByRefObject, LSL_BuiltIn_Commands_Interface
13 { 11 {
14 public string State = "default";
15 private System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
16 12
17 protected ScriptManager m_manager; 13 public LSL_BuiltIn_Commands m_LSL_Functions;
18 protected IScriptHost m_host;
19 14
20 public LSL_BaseClass(ScriptManager manager, IScriptHost host) 15 public LSL_BaseClass()
21 { 16 {
22 m_manager = manager;
23 m_host = host;
24 } 17 }
25 18 public string State
26 public Scene World
27 {
28 get { return m_manager.World; }
29 }
30
31 public void Start(string FullScriptID)
32 {
33 MainLog.Instance.Notice("ScriptEngine", "LSL_BaseClass.Start() called. FullScriptID: " + FullScriptID + ": Hosted by [" + m_host.Name + ":" + m_host.UUID + "@" + m_host.AbsolutePosition + "]");
34
35 return;
36 }
37
38 //These are the implementations of the various ll-functions used by the LSL scripts.
39 //starting out, we use the System.Math library for trig functions. - CFK 8-14-07
40 public double llSin(double f) { return (double)Math.Sin(f); }
41 public double llCos(double f) { return (double)Math.Cos(f); }
42 public double llTan(double f) { return (double)Math.Tan(f); }
43 public double llAtan2(double x, double y) { return (double)Math.Atan2(y, x); }
44 public double llSqrt(double f) { return (double)Math.Sqrt(f); }
45 public double llPow(double fbase, double fexponent) { return (double)Math.Pow(fbase, fexponent); }
46 public int llAbs(int i) { return (int)Math.Abs(i); }
47 public double llFabs(double f) { return (double)Math.Abs(f); }
48
49 public double llFrand(double mag)
50 {
51 lock(OpenSim.Framework.Utilities.Util.RandomClass)
52 {
53 return OpenSim.Framework.Utilities.Util.RandomClass.Next((int)mag);
54 }
55 }
56 public int llFloor(double f) { return (int)Math.Floor(f); }
57 public int llCeil(double f) { return (int)Math.Ceiling(f); }
58 public int llRound(double f) { return (int)Math.Round(f, 1); }
59 public double llVecMag(Axiom.Math.Vector3 v) { return 0; }
60 public Axiom.Math.Vector3 llVecNorm(Axiom.Math.Vector3 v) { return new Axiom.Math.Vector3(); }
61 public double llVecDist(Axiom.Math.Vector3 a, Axiom.Math.Vector3 b) { return 0; }
62 public Axiom.Math.Vector3 llRot2Euler(Axiom.Math.Quaternion r) { return new Axiom.Math.Vector3(); }
63 public Axiom.Math.Quaternion llEuler2Rot(Axiom.Math.Vector3 v) { return new Axiom.Math.Quaternion(); }
64 public Axiom.Math.Quaternion llAxes2Rot(Axiom.Math.Vector3 fwd, Axiom.Math.Vector3 left, Axiom.Math.Vector3 up) { return new Axiom.Math.Quaternion(); }
65 public Axiom.Math.Vector3 llRot2Fwd(Axiom.Math.Quaternion r) { return new Axiom.Math.Vector3(); }
66 public Axiom.Math.Vector3 llRot2Left(Axiom.Math.Quaternion r) { return new Axiom.Math.Vector3(); }
67 public Axiom.Math.Vector3 llRot2Up(Axiom.Math.Quaternion r) { return new Axiom.Math.Vector3(); }
68 public Axiom.Math.Quaternion llRotBetween(Axiom.Math.Vector3 start, Axiom.Math.Vector3 end) { return new Axiom.Math.Quaternion(); }
69
70 public void llWhisper(int channelID, string text)
71 { 19 {
72 //Common.SendToDebug("INTERNAL FUNCTION llWhisper(" + channelID + ", \"" + text + "\");"); 20 get { return m_LSL_Functions.State; }
73 Console.WriteLine("llWhisper Channel " + channelID + ", Text: \"" + text + "\"");
74 //type for whisper is 0
75 World.SimChat(Helpers.StringToField(text),
76 0, m_host.AbsolutePosition, m_host.Name, m_host.UUID);
77
78
79 } 21 }
80 //public void llSay(int channelID, string text)
81 public void llSay(int channelID, string text)
82 {
83 //TODO: DO SOMETHING USEFUL HERE
84 //Common.SendToDebug("INTERNAL FUNCTION llSay(" + (int)channelID + ", \"" + (string)text + "\");");
85 Console.WriteLine("llSay Channel " + channelID + ", Text: \"" + text + "\"");
86 //type for say is 1
87 22
88 World.SimChat(Helpers.StringToField(text),
89 1, m_host.AbsolutePosition, m_host.Name, m_host.UUID);
90 }
91 23
92 public void llShout(int channelID, string text) 24 public void Start(LSL_BuiltIn_Commands LSL_Functions)
93 { 25 {
94 Console.WriteLine("llShout Channel " + channelID + ", Text: \"" + text + "\""); 26 m_LSL_Functions = LSL_Functions;
95 //type for shout is 2
96 World.SimChat(Helpers.StringToField(text),
97 2, m_host.AbsolutePosition, m_host.Name, m_host.UUID);
98 27
99 } 28 MainLog.Instance.Notice("ScriptEngine", "LSL_BaseClass.Start() called.");
100 29
101 public int llListen(int channelID, string name, string ID, string msg) { return 0; } 30 // Get this AppDomain's settings and display some of them.
102 public void llListenControl(int number, int active) { return; } 31 AppDomainSetup ads = AppDomain.CurrentDomain.SetupInformation;
103 public void llListenRemove(int number) { return; } 32 Console.WriteLine("AppName={0}, AppBase={1}, ConfigFile={2}",
104 public void llSensor(string name, string id, int type, double range, double arc) { return; } 33 ads.ApplicationName,
105 public void llSensorRepeat(string name, string id, int type, double range, double arc, double rate) { return; } 34 ads.ApplicationBase,
106 public void llSensorRemove() { return; } 35 ads.ConfigurationFile
107 public string llDetectedName(int number) { return ""; } 36 );
108 public string llDetectedKey(int number) { return ""; }
109 public string llDetectedOwner(int number) { return ""; }
110 public int llDetectedType(int number) { return 0; }
111 public Axiom.Math.Vector3 llDetectedPos(int number) { return new Axiom.Math.Vector3(); }
112 public Axiom.Math.Vector3 llDetectedVel(int number) { return new Axiom.Math.Vector3(); }
113 public Axiom.Math.Vector3 llDetectedGrab(int number) { return new Axiom.Math.Vector3(); }
114 public Axiom.Math.Quaternion llDetectedRot(int number) { return new Axiom.Math.Quaternion(); }
115 public int llDetectedGroup(int number) { return 0; }
116 public int llDetectedLinkNumber(int number) { return 0; }
117 public void llDie() { return; }
118 public double llGround(Axiom.Math.Vector3 offset) { return 0; }
119 public double llCloud(Axiom.Math.Vector3 offset) { return 0; }
120 public Axiom.Math.Vector3 llWind(Axiom.Math.Vector3 offset) { return new Axiom.Math.Vector3(); }
121 public void llSetStatus(int status, int value) { return; }
122 public int llGetStatus(int status) { return 0; }
123 public void llSetScale(Axiom.Math.Vector3 scale) { return; }
124 public Axiom.Math.Vector3 llGetScale() { return new Axiom.Math.Vector3(); }
125 public void llSetColor(Axiom.Math.Vector3 color, int face) { return; }
126 public double llGetAlpha(int face) { return 0; }
127 public void llSetAlpha(double alpha, int face) { return; }
128 public Axiom.Math.Vector3 llGetColor(int face) { return new Axiom.Math.Vector3(); }
129 public void llSetTexture(string texture, int face) { return; }
130 public void llScaleTexture(double u, double v, int face) { return; }
131 public void llOffsetTexture(double u, double v, int face) { return; }
132 public void llRotateTexture(double rotation, int face) { return; }
133 public string llGetTexture(int face) { return ""; }
134 public void llSetPos(Axiom.Math.Vector3 pos) { return; }
135 37
136 public Axiom.Math.Vector3 llGetPos() 38 // Display the name of the calling AppDomain and the name
137 { 39 // of the second domain.
138 throw new NotImplementedException("llGetPos"); 40 // NOTE: The application's thread has transitioned between
139 // return m_host.AbsolutePosition; 41 // AppDomains.
140 } 42 Console.WriteLine("Calling to '{0}'.",
141 43 Thread.GetDomain().FriendlyName
142 public Axiom.Math.Vector3 llGetLocalPos() { return new Axiom.Math.Vector3(); } 44 );
143 public void llSetRot(Axiom.Math.Quaternion rot) { }
144 public Axiom.Math.Quaternion llGetRot() { return new Axiom.Math.Quaternion(); }
145 public Axiom.Math.Quaternion llGetLocalRot() { return new Axiom.Math.Quaternion(); }
146 public void llSetForce(Axiom.Math.Vector3 force, int local) { }
147 public Axiom.Math.Vector3 llGetForce() { return new Axiom.Math.Vector3(); }
148 public int llTarget(Axiom.Math.Vector3 position, double range) { return 0; }
149 public void llTargetRemove(int number) { }
150 public int llRotTarget(Axiom.Math.Quaternion rot, double error) { return 0; }
151 public void llRotTargetRemove(int number) { }
152 public void llMoveToTarget(Axiom.Math.Vector3 target, double tau) { }
153 public void llStopMoveToTarget() { }
154 public void llApplyImpulse(Axiom.Math.Vector3 force, int local) { }
155 public void llApplyRotationalImpulse(Axiom.Math.Vector3 force, int local) { }
156 public void llSetTorque(Axiom.Math.Vector3 torque, int local) { }
157 public Axiom.Math.Vector3 llGetTorque() { return new Axiom.Math.Vector3(); }
158 public void llSetForceAndTorque(Axiom.Math.Vector3 force, Axiom.Math.Vector3 torque, int local) { }
159 public Axiom.Math.Vector3 llGetVel() { return new Axiom.Math.Vector3(); }
160 public Axiom.Math.Vector3 llGetAccel() { return new Axiom.Math.Vector3(); }
161 public Axiom.Math.Vector3 llGetOmega() { return new Axiom.Math.Vector3(); }
162 public double llGetTimeOfDay() { return 0; }
163 public double llGetWallclock() { return 0; }
164 public double llGetTime() { return 0; }
165 public void llResetTime() { }
166 public double llGetAndResetTime() { return 0; }
167 public void llSound() { }
168 public void llPlaySound(string sound, double volume) { }
169 public void llLoopSound(string sound, double volume) { }
170 public void llLoopSoundMaster(string sound, double volume) { }
171 public void llLoopSoundSlave(string sound, double volume) { }
172 public void llPlaySoundSlave(string sound, double volume) { }
173 public void llTriggerSound(string sound, double volume) { }
174 public void llStopSound() { }
175 public void llPreloadSound(string sound) { }
176 public string llGetSubString(string src, int start, int end) { return src.Substring(start, end); }
177 public string llDeleteSubString(string src, int start, int end) { return ""; }
178 public string llInsertString(string dst, int position, string src) { return ""; }
179 public string llToUpper(string src) { return src.ToUpper(); }
180 public string llToLower(string src) { return src.ToLower(); }
181 public int llGiveMoney(string destination, int amount) { return 0; }
182 public void llMakeExplosion() { }
183 public void llMakeFountain() { }
184 public void llMakeSmoke() { }
185 public void llMakeFire() { }
186 public void llRezObject(string inventory, Axiom.Math.Vector3 pos, Axiom.Math.Quaternion rot, int param) { }
187 public void llLookAt(Axiom.Math.Vector3 target, double strength, double damping) { }
188 public void llStopLookAt() { }
189 public void llSetTimerEvent(double sec) { }
190 public void llSleep(double sec) { System.Threading.Thread.Sleep((int)(sec * 1000)); }
191 public double llGetMass() { return 0; }
192 public void llCollisionFilter(string name, string id, int accept) { }
193 public void llTakeControls(int controls, int accept, int pass_on) { }
194 public void llReleaseControls() { }
195 public void llAttachToAvatar(int attachment) { }
196 public void llDetachFromAvatar() { }
197 public void llTakeCamera() { }
198 public void llReleaseCamera() { }
199 public string llGetOwner() { return ""; }
200 public void llInstantMessage(string user, string message) { }
201 public void llEmail(string address, string subject, string message) { }
202 public void llGetNextEmail(string address, string subject) { }
203 public string llGetKey() { return ""; }
204 public void llSetBuoyancy(double buoyancy) { }
205 public void llSetHoverHeight(double height, int water, double tau) { }
206 public void llStopHover() { }
207 public void llMinEventDelay(double delay) { }
208 public void llSoundPreload() { }
209 public void llRotLookAt(Axiom.Math.Quaternion target, double strength, double damping) { }
210
211 public int llStringLength(string str)
212 {
213 if(str.Length > 0)
214 {
215 return str.Length;
216 }
217 else
218 {
219 return 0;
220 }
221 }
222 45
223 public void llStartAnimation(string anim) { } 46 return;
224 public void llStopAnimation(string anim) { }
225 public void llPointAt() { }
226 public void llStopPointAt() { }
227 public void llTargetOmega(Axiom.Math.Vector3 axis, double spinrate, double gain) { }
228 public int llGetStartParameter() { return 0; }
229 public void llGodLikeRezObject(string inventory, Axiom.Math.Vector3 pos) { }
230 public void llRequestPermissions(string agent, int perm) { }
231 public string llGetPermissionsKey() { return ""; }
232 public int llGetPermissions() { return 0; }
233 public int llGetLinkNumber() { return 0; }
234 public void llSetLinkColor(int linknumber, Axiom.Math.Vector3 color, int face) { }
235 public void llCreateLink(string target, int parent) { }
236 public void llBreakLink(int linknum) { }
237 public void llBreakAllLinks() { }
238 public string llGetLinkKey(int linknum) { return ""; }
239 public void llGetLinkName(int linknum) { }
240 public int llGetInventoryNumber(int type) { return 0; }
241 public string llGetInventoryName(int type, int number) { return ""; }
242 public void llSetScriptState(string name, int run) { }
243 public double llGetEnergy() { return 1.0f; }
244 public void llGiveInventory(string destination, string inventory) { }
245 public void llRemoveInventory(string item) { }
246
247 public void llSetText(string text, Axiom.Math.Vector3 color, double alpha)
248 {
249 m_host.SetText(text, color, alpha );
250 }
251
252 public double llWater(Axiom.Math.Vector3 offset) { return 0; }
253 public void llPassTouches(int pass) { }
254 public string llRequestAgentData(string id, int data) { return ""; }
255 public string llRequestInventoryData(string name) { return ""; }
256 public void llSetDamage(double damage) { }
257 public void llTeleportAgentHome(string agent) { }
258 public void llModifyLand(int action, int brush) { }
259 public void llCollisionSound(string impact_sound, double impact_volume) { }
260 public void llCollisionSprite(string impact_sprite) { }
261 public string llGetAnimation(string id) { return ""; }
262 public void llResetScript() { }
263 public void llMessageLinked(int linknum, int num, string str, string id) { }
264 public void llPushObject(string target, Axiom.Math.Vector3 impulse, Axiom.Math.Vector3 ang_impulse, int local) { }
265 public void llPassCollisions(int pass) { }
266 public string llGetScriptName() { return ""; }
267 public int llGetNumberOfSides() { return 0; }
268 public Axiom.Math.Quaternion llAxisAngle2Rot(Axiom.Math.Vector3 axis, double angle) { return new Axiom.Math.Quaternion(); }
269 public Axiom.Math.Vector3 llRot2Axis(Axiom.Math.Quaternion rot) { return new Axiom.Math.Vector3(); }
270 public void llRot2Angle() { }
271 public double llAcos(double val) { return (double)Math.Acos(val); }
272 public double llAsin(double val) { return (double)Math.Asin(val); }
273 public double llAngleBetween(Axiom.Math.Quaternion a, Axiom.Math.Quaternion b) { return 0; }
274 public string llGetInventoryKey(string name) { return ""; }
275 public void llAllowInventoryDrop(int add) { }
276 public Axiom.Math.Vector3 llGetSunDirection() { return new Axiom.Math.Vector3(); }
277 public Axiom.Math.Vector3 llGetTextureOffset(int face) { return new Axiom.Math.Vector3(); }
278 public Axiom.Math.Vector3 llGetTextureScale(int side) { return new Axiom.Math.Vector3(); }
279 public double llGetTextureRot(int side) { return 0; }
280 public int llSubStringIndex(string source, string pattern) { return 0; }
281 public string llGetOwnerKey(string id) { return ""; }
282 public Axiom.Math.Vector3 llGetCenterOfMass() { return new Axiom.Math.Vector3(); }
283 public List<string> llListSort(List<string> src, int stride, int ascending)
284 { return new List<string>(); }
285 public int llGetListLength(List<string> src) { return 0; }
286 public int llList2Integer(List<string> src, int index) { return 0; }
287 public double llList2double(List<string> src, int index) { return 0; }
288 public string llList2String(List<string> src, int index) { return ""; }
289 public string llList2Key(List<string> src, int index) { return ""; }
290 public Axiom.Math.Vector3 llList2Vector(List<string> src, int index)
291 { return new Axiom.Math.Vector3(); }
292 public Axiom.Math.Quaternion llList2Rot(List<string> src, int index)
293 { return new Axiom.Math.Quaternion(); }
294 public List<string> llList2List(List<string> src, int start, int end)
295 { return new List<string>(); }
296 public List<string> llDeleteSubList(List<string> src, int start, int end)
297 { return new List<string>(); }
298 public int llGetListEntryType(List<string> src, int index) { return 0; }
299 public string llList2CSV(List<string> src) { return ""; }
300 public List<string> llCSV2List(string src)
301 { return new List<string>(); }
302 public List<string> llListRandomize(List<string> src, int stride)
303 { return new List<string>(); }
304 public List<string> llList2ListStrided(List<string> src, int start, int end, int stride)
305 { return new List<string>(); }
306 public Axiom.Math.Vector3 llGetRegionCorner()
307 { return new Axiom.Math.Vector3(World.RegionInfo.RegionLocX * 256, World.RegionInfo.RegionLocY * 256, 0); }
308 public List<string> llListInsertList(List<string> dest, List<string> src, int start)
309 { return new List<string>(); }
310 public int llListFindList(List<string> src, List<string> test) { return 0; }
311 public string llGetObjectName() { return ""; }
312 public void llSetObjectName(string name) { }
313 public string llGetDate() { return ""; }
314 public int llEdgeOfWorld(Axiom.Math.Vector3 pos, Axiom.Math.Vector3 dir) { return 0; }
315 public int llGetAgentInfo(string id) { return 0; }
316 public void llAdjustSoundVolume(double volume) { }
317 public void llSetSoundQueueing(int queue) { }
318 public void llSetSoundRadius(double radius) { }
319 public string llKey2Name(string id) { return ""; }
320 public void llSetTextureAnim(int mode, int face, int sizex, int sizey, double start, double length, double rate) { }
321 public void llTriggerSoundLimited(string sound, double volume, Axiom.Math.Vector3 top_north_east, Axiom.Math.Vector3 bottom_south_west) { }
322 public void llEjectFromLand(string pest) { }
323 public void llParseString2List() { }
324 public int llOverMyLand(string id) { return 0; }
325 public string llGetLandOwnerAt(Axiom.Math.Vector3 pos) { return ""; }
326 public string llGetNotecardLine(string name, int line) { return ""; }
327 public Axiom.Math.Vector3 llGetAgentSize(string id) { return new Axiom.Math.Vector3(); }
328 public int llSameGroup(string agent) { return 0; }
329 public void llUnSit(string id) { }
330 public Axiom.Math.Vector3 llGroundSlope(Axiom.Math.Vector3 offset) { return new Axiom.Math.Vector3(); }
331 public Axiom.Math.Vector3 llGroundNormal(Axiom.Math.Vector3 offset) { return new Axiom.Math.Vector3(); }
332 public Axiom.Math.Vector3 llGroundContour(Axiom.Math.Vector3 offset) { return new Axiom.Math.Vector3(); }
333 public int llGetAttached() { return 0; }
334 public int llGetFreeMemory() { return 0; }
335 public string llGetRegionName() { return m_manager.RegionName; }
336 public double llGetRegionTimeDilation() { return 1.0f; }
337 public double llGetRegionFPS() { return 10.0f; }
338 public void llParticleSystem(List<Object> rules) { }
339 public void llGroundRepel(double height, int water, double tau) { }
340 public void llGiveInventoryList() { }
341 public void llSetVehicleType(int type) { }
342 public void llSetVehicledoubleParam(int param, double value) { }
343 public void llSetVehicleVectorParam(int param, Axiom.Math.Vector3 vec) { }
344 public void llSetVehicleRotationParam(int param, Axiom.Math.Quaternion rot) { }
345 public void llSetVehicleFlags(int flags) { }
346 public void llRemoveVehicleFlags(int flags) { }
347 public void llSitTarget(Axiom.Math.Vector3 offset, Axiom.Math.Quaternion rot) { }
348 public string llAvatarOnSitTarget() { return ""; }
349 public void llAddToLandPassList(string avatar, double hours) { }
350 public void llSetTouchText(string text)
351 {
352 }
353
354 public void llSetSitText(string text)
355 {
356 }
357 public void llSetCameraEyeOffset(Axiom.Math.Vector3 offset) { }
358 public void llSetCameraAtOffset(Axiom.Math.Vector3 offset) { }
359 public void llDumpList2String() { }
360 public void llScriptDanger(Axiom.Math.Vector3 pos) { }
361 public void llDialog(string avatar, string message, List<string> buttons, int chat_channel) { }
362 public void llVolumeDetect(int detect) { }
363 public void llResetOtherScript(string name) { }
364 public int llGetScriptState(string name) { return 0; }
365 public void llRemoteLoadScript() { }
366 public void llSetRemoteScriptAccessPin(int pin) { }
367 public void llRemoteLoadScriptPin(string target, string name, int pin, int running, int start_param) { }
368 public void llOpenRemoteDataChannel() { }
369 public string llSendRemoteData(string channel, string dest, int idata, string sdata) { return ""; }
370 public void llRemoteDataReply(string channel, string message_id, string sdata, int idata) { }
371 public void llCloseRemoteDataChannel(string channel) { }
372 public string llMD5String(string src, int nonce)
373 {
374 return OpenSim.Framework.Utilities.Util.Md5Hash(src + ":" + nonce.ToString());
375 }
376 public void llSetPrimitiveParams(List<string> rules) { }
377 public string llStringToBase64(string str) { return ""; }
378 public string llBase64ToString(string str) { return ""; }
379 public void llXorBase64Strings() { }
380 public void llRemoteDataSetRegion() { }
381 public double llLog10(double val) { return (double)Math.Log10(val); }
382 public double llLog(double val) { return (double)Math.Log(val); }
383 public List<string> llGetAnimationList(string id) { return new List<string>(); }
384 public void llSetParcelMusicURL(string url) { }
385
386 public Axiom.Math.Vector3 llGetRootPosition()
387 {
388 throw new NotImplementedException("llGetRootPosition");
389 //return m_root.AbsolutePosition;
390 }
391
392 public Axiom.Math.Quaternion llGetRootRotation()
393 {
394 return new Axiom.Math.Quaternion();
395 }
396
397 public string llGetObjectDesc() { return ""; }
398 public void llSetObjectDesc(string desc) { }
399 public string llGetCreator() { return ""; }
400 public string llGetTimestamp() { return ""; }
401 public void llSetLinkAlpha(int linknumber, double alpha, int face) { }
402 public int llGetNumberOfPrims() { return 0; }
403 public string llGetNumberOfNotecardLines(string name) { return ""; }
404 public List<string> llGetBoundingBox(string obj) { return new List<string>(); }
405 public Axiom.Math.Vector3 llGetGeometricCenter() { return new Axiom.Math.Vector3(); }
406 public void llGetPrimitiveParams() { }
407 public string llIntegerToBase64(int number) { return ""; }
408 public int llBase64ToInteger(string str) { return 0; }
409 public double llGetGMTclock() { return 0; }
410 public string llGetSimulatorHostname() { return ""; }
411 public void llSetLocalRot(Axiom.Math.Quaternion rot) { }
412 public List<string> llParseStringKeepNulls(string src, List<string> seperators, List<string> spacers)
413 { return new List<string>(); }
414 public void llRezAtRoot(string inventory, Axiom.Math.Vector3 position, Axiom.Math.Vector3 velocity, Axiom.Math.Quaternion rot, int param) { }
415 public int llGetObjectPermMask(int mask) { return 0; }
416 public void llSetObjectPermMask(int mask, int value) { }
417 public void llGetInventoryPermMask(string item, int mask) { }
418 public void llSetInventoryPermMask(string item, int mask, int value) { }
419 public string llGetInventoryCreator(string item) { return ""; }
420 public void llOwnerSay(string msg) { }
421 public void llRequestSimulatorData(string simulator, int data) { }
422 public void llForceMouselook(int mouselook) { }
423 public double llGetObjectMass(string id) { return 0; }
424 public void llListReplaceList() { }
425 public void llLoadURL(string avatar_id, string message, string url) { }
426 public void llParcelMediaCommandList(List<string> commandList) { }
427 public void llParcelMediaQuery() { }
428
429 public int llModPow(int a, int b, int c)
430 {
431 Int64 tmp = 0;
432 Int64 val = Math.DivRem(Convert.ToInt64(Math.Pow(a, b)), c, out tmp);
433
434 return Convert.ToInt32(tmp);
435 } 47 }
436 48
437 public int llGetInventoryType(string name) { return 0; } 49 public double llSin(double f) { return m_LSL_Functions.llSin(f); }
438 public void llSetPayPrice(int price, List<string> quick_pay_buttons) { } 50 public double llCos(double f) { return m_LSL_Functions.llCos(f); }
439 public Axiom.Math.Vector3 llGetCameraPos() { return new Axiom.Math.Vector3(); } 51 public double llTan(double f) { return m_LSL_Functions.llTan(f); }
440 public Axiom.Math.Quaternion llGetCameraRot() { return new Axiom.Math.Quaternion(); } 52 public double llAtan2(double x, double y) { return m_LSL_Functions.llAtan2(x, y); }
441 public void llSetPrimURL() { } 53 public double llSqrt(double f) { return m_LSL_Functions.llSqrt(f); }
442 public void llRefreshPrimURL() { } 54 public double llPow(double fbase, double fexponent) { return m_LSL_Functions.llPow(fbase, fexponent); }
443 public string llEscapeURL(string url) { return ""; } 55 public int llAbs(int i) { return m_LSL_Functions.llAbs(i); }
444 public string llUnescapeURL(string url) { return ""; } 56 public double llFabs(double f) { return m_LSL_Functions.llFabs(f); }
445 public void llMapDestination(string simname, Axiom.Math.Vector3 pos, Axiom.Math.Vector3 look_at) { } 57 public double llFrand(double mag) { return m_LSL_Functions.llFrand(mag); }
446 public void llAddToLandBanList(string avatar, double hours) { } 58 public int llFloor(double f) { return m_LSL_Functions.llFloor(f); }
447 public void llRemoveFromLandPassList(string avatar) { } 59 public int llCeil(double f) { return m_LSL_Functions.llCeil(f); }
448 public void llRemoveFromLandBanList(string avatar) { } 60 public int llRound(double f) { return m_LSL_Functions.llRound(f); }
449 public void llSetCameraParams(List<string> rules) { } 61 public double llVecMag(Axiom.Math.Vector3 v) { return m_LSL_Functions.llVecMag(v); }
450 public void llClearCameraParams() { } 62 public Axiom.Math.Vector3 llVecNorm(Axiom.Math.Vector3 v) { return m_LSL_Functions.llVecNorm(v); }
451 public double llListStatistics(int operation, List<string> src) { return 0; } 63 public double llVecDist(Axiom.Math.Vector3 a, Axiom.Math.Vector3 b) { return m_LSL_Functions.llVecDist(a, b); }
452 public int llGetUnixTime() 64 public Axiom.Math.Vector3 llRot2Euler(Axiom.Math.Quaternion r) { return m_LSL_Functions.llRot2Euler(r); }
453 { 65 public Axiom.Math.Quaternion llEuler2Rot(Axiom.Math.Vector3 v) { return m_LSL_Functions.llEuler2Rot(v); }
454 return OpenSim.Framework.Utilities.Util.UnixTimeSinceEpoch(); 66 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); }
455 } 67 public Axiom.Math.Vector3 llRot2Fwd(Axiom.Math.Quaternion r) { return m_LSL_Functions.llRot2Fwd(r); }
456 public int llGetParcelFlags(Axiom.Math.Vector3 pos) { return 0; } 68 public Axiom.Math.Vector3 llRot2Left(Axiom.Math.Quaternion r) { return m_LSL_Functions.llRot2Left(r); }
457 public int llGetRegionFlags() { return 0; } 69 public Axiom.Math.Vector3 llRot2Up(Axiom.Math.Quaternion r) { return m_LSL_Functions.llRot2Up(r); }
458 public string llXorBase64StringsCorrect(string str1, string str2) { return ""; } 70 public Axiom.Math.Quaternion llRotBetween(Axiom.Math.Vector3 start, Axiom.Math.Vector3 end) { return m_LSL_Functions.llRotBetween(start, end); }
459 public void llHTTPRequest() { } 71 public void llWhisper(int channelID, string text) { m_LSL_Functions.llWhisper(channelID, text); }
460 public void llResetLandBanList() { } 72 public void llSay(int channelID, string text) { m_LSL_Functions.llSay(channelID, text); }
461 public void llResetLandPassList() { } 73 public void llShout(int channelID, string text) { m_LSL_Functions.llShout(channelID, text); }
462 public int llGetParcelPrimCount(Axiom.Math.Vector3 pos, int category, int sim_wide) { return 0; } 74 public int llListen(int channelID, string name, string ID, string msg) { return m_LSL_Functions.llListen(channelID, name, ID, msg); }
463 public List<string> llGetParcelPrimOwners(Axiom.Math.Vector3 pos) { return new List<string>(); } 75 public void llListenControl(int number, int active) { m_LSL_Functions.llListenControl(number, active); }
464 public int llGetObjectPrimCount(string object_id) { return 0; } 76 public void llListenRemove(int number) { m_LSL_Functions.llListenRemove(number); }
465 public int llGetParcelMaxPrims(Axiom.Math.Vector3 pos, int sim_wide) { return 0; } 77 public void llSensor(string name, string id, int type, double range, double arc) { m_LSL_Functions.llSensor(name, id, type, range, arc); }
466 public List<string> llGetParcelDetails(Axiom.Math.Vector3 pos, List<string> param) { return new List<string>(); } 78 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); }
79 public void llSensorRemove() { m_LSL_Functions.llSensorRemove(); }
80 public string llDetectedName(int number) { return m_LSL_Functions.llDetectedName(number); }
81 public string llDetectedKey(int number) { return m_LSL_Functions.llDetectedKey(number); }
82 public string llDetectedOwner(int number) { return m_LSL_Functions.llDetectedOwner(number); }
83 public int llDetectedType(int number) { return m_LSL_Functions.llDetectedType(number); }
84 public Axiom.Math.Vector3 llDetectedPos(int number) { return m_LSL_Functions.llDetectedPos(number); }
85 public Axiom.Math.Vector3 llDetectedVel(int number) { return m_LSL_Functions.llDetectedVel(number); }
86 public Axiom.Math.Vector3 llDetectedGrab(int number) { return m_LSL_Functions.llDetectedGrab(number); }
87 public Axiom.Math.Quaternion llDetectedRot(int number) { return m_LSL_Functions.llDetectedRot(number); }
88 public int llDetectedGroup(int number) { return m_LSL_Functions.llDetectedGroup(number); }
89 public int llDetectedLinkNumber(int number) { return m_LSL_Functions.llDetectedLinkNumber(number); }
90 public void llDie() { m_LSL_Functions.llDie(); }
91 public double llGround(Axiom.Math.Vector3 offset) { return m_LSL_Functions.llGround(offset); }
92 public double llCloud(Axiom.Math.Vector3 offset) { return m_LSL_Functions.llCloud(offset); }
93 public Axiom.Math.Vector3 llWind(Axiom.Math.Vector3 offset) { return m_LSL_Functions.llWind(offset); }
94 public void llSetStatus(int status, int value) { m_LSL_Functions.llSetStatus(status, value); }
95 public int llGetStatus(int status) { return m_LSL_Functions.llGetStatus(status); }
96 public void llSetScale(Axiom.Math.Vector3 scale) { m_LSL_Functions.llSetScale(scale); }
97 public Axiom.Math.Vector3 llGetScale() { return m_LSL_Functions.llGetScale(); }
98 public void llSetColor(Axiom.Math.Vector3 color, int face) { m_LSL_Functions.llSetColor(color, face); }
99 public double llGetAlpha(int face) { return m_LSL_Functions.llGetAlpha(face); }
100 public void llSetAlpha(double alpha, int face) { m_LSL_Functions.llSetAlpha(alpha, face); }
101 public Axiom.Math.Vector3 llGetColor(int face) { return m_LSL_Functions.llGetColor(face); }
102 public void llSetTexture(string texture, int face) { m_LSL_Functions.llSetTexture(texture, face); }
103 public void llScaleTexture(double u, double v, int face) { m_LSL_Functions.llScaleTexture(u, v, face); }
104 public void llOffsetTexture(double u, double v, int face) { m_LSL_Functions.llOffsetTexture(u, v, face); }
105 public void llRotateTexture(double rotation, int face) { m_LSL_Functions.llRotateTexture(rotation, face); }
106 public string llGetTexture(int face) { return m_LSL_Functions.llGetTexture(face); }
107 public void llSetPos(Axiom.Math.Vector3 pos) { m_LSL_Functions.llSetPos(pos); }
108 public Axiom.Math.Vector3 llGetPos() { return m_LSL_Functions.llGetPos(); }
109 public Axiom.Math.Vector3 llGetLocalPos() { return m_LSL_Functions.llGetLocalPos(); }
110 public void llSetRot(Axiom.Math.Quaternion rot) { m_LSL_Functions.llSetRot(rot); }
111 public Axiom.Math.Quaternion llGetRot() { return m_LSL_Functions.llGetRot(); }
112 public Axiom.Math.Quaternion llGetLocalRot() { return m_LSL_Functions.llGetLocalRot(); }
113 public void llSetForce(Axiom.Math.Vector3 force, int local) { m_LSL_Functions.llSetForce(force, local); }
114 public Axiom.Math.Vector3 llGetForce() { return m_LSL_Functions.llGetForce(); }
115 public int llTarget(Axiom.Math.Vector3 position, double range) { return m_LSL_Functions.llTarget(position, range); }
116 public void llTargetRemove(int number) { m_LSL_Functions.llTargetRemove(number); }
117 public int llRotTarget(Axiom.Math.Quaternion rot, double error) { return m_LSL_Functions.llRotTarget(rot, error); }
118 public void llRotTargetRemove(int number) { m_LSL_Functions.llRotTargetRemove(number); }
119 public void llMoveToTarget(Axiom.Math.Vector3 target, double tau) { m_LSL_Functions.llMoveToTarget(target, tau); }
120 public void llStopMoveToTarget() { m_LSL_Functions.llStopMoveToTarget(); }
121 public void llApplyImpulse(Axiom.Math.Vector3 force, int local) { m_LSL_Functions.llApplyImpulse(force, local); }
122 public void llApplyRotationalImpulse(Axiom.Math.Vector3 force, int local) { m_LSL_Functions.llApplyRotationalImpulse(force, local); }
123 public void llSetTorque(Axiom.Math.Vector3 torque, int local) { m_LSL_Functions.llSetTorque(torque, local); }
124 public Axiom.Math.Vector3 llGetTorque() { return m_LSL_Functions.llGetTorque(); }
125 public void llSetForceAndTorque(Axiom.Math.Vector3 force, Axiom.Math.Vector3 torque, int local) { m_LSL_Functions.llSetForceAndTorque(force, torque, local); }
126 public Axiom.Math.Vector3 llGetVel() { return m_LSL_Functions.llGetVel(); }
127 public Axiom.Math.Vector3 llGetAccel() { return m_LSL_Functions.llGetAccel(); }
128 public Axiom.Math.Vector3 llGetOmega() { return m_LSL_Functions.llGetOmega(); }
129 public double llGetTimeOfDay() { return m_LSL_Functions.llGetTimeOfDay(); }
130 public double llGetWallclock() { return m_LSL_Functions.llGetWallclock(); }
131 public double llGetTime() { return m_LSL_Functions.llGetTime(); }
132 public void llResetTime() { m_LSL_Functions.llResetTime(); }
133 public double llGetAndResetTime() { return m_LSL_Functions.llGetAndResetTime(); }
134 public void llSound() { m_LSL_Functions.llSound(); }
135 public void llPlaySound(string sound, double volume) { m_LSL_Functions.llPlaySound(sound, volume); }
136 public void llLoopSound(string sound, double volume) { m_LSL_Functions.llLoopSound(sound, volume); }
137 public void llLoopSoundMaster(string sound, double volume) { m_LSL_Functions.llLoopSoundMaster(sound, volume); }
138 public void llLoopSoundSlave(string sound, double volume) { m_LSL_Functions.llLoopSoundSlave(sound, volume); }
139 public void llPlaySoundSlave(string sound, double volume) { m_LSL_Functions.llPlaySoundSlave(sound, volume); }
140 public void llTriggerSound(string sound, double volume) { m_LSL_Functions.llTriggerSound(sound, volume); }
141 public void llStopSound() { m_LSL_Functions.llStopSound(); }
142 public void llPreloadSound(string sound) { m_LSL_Functions.llPreloadSound(sound); }
143 public string llGetSubString(string src, int start, int end) { return m_LSL_Functions.llGetSubString(src, start, end); }
144 public string llDeleteSubString(string src, int start, int end) { return m_LSL_Functions.llDeleteSubString(src, start, end); }
145 public string llInsertString(string dst, int position, string src) { return m_LSL_Functions.llInsertString(dst, position, src); }
146 public string llToUpper(string source) { return m_LSL_Functions.llToUpper(source); }
147 public string llToLower(string source) { return m_LSL_Functions.llToLower(source); }
148 public int llGiveMoney(string destination, int amount) { return m_LSL_Functions.llGiveMoney(destination, amount); }
149 public void llMakeExplosion() { m_LSL_Functions.llMakeExplosion(); }
150 public void llMakeFountain() { m_LSL_Functions.llMakeFountain(); }
151 public void llMakeSmoke() { m_LSL_Functions.llMakeSmoke(); }
152 public void llMakeFire() { m_LSL_Functions.llMakeFire(); }
153 public void llRezObject(string inventory, Axiom.Math.Vector3 pos, Axiom.Math.Quaternion rot, int param) { m_LSL_Functions.llRezObject(inventory, pos, rot, param); }
154 public void llLookAt(Axiom.Math.Vector3 target, double strength, double damping) { m_LSL_Functions.llLookAt(target, strength, damping); }
155 public void llStopLookAt() { m_LSL_Functions.llStopLookAt(); }
156 public void llSetTimerEvent(double sec) { m_LSL_Functions.llSetTimerEvent(sec); }
157 public void llSleep(double sec) { m_LSL_Functions.llSleep(sec); }
158 public double llGetMass() { return m_LSL_Functions.llGetMass(); }
159 public void llCollisionFilter(string name, string id, int accept) { m_LSL_Functions.llCollisionFilter(name, id, accept); }
160 public void llTakeControls(int controls, int accept, int pass_on) { m_LSL_Functions.llTakeControls(controls, accept, pass_on); }
161 public void llReleaseControls() { m_LSL_Functions.llReleaseControls(); }
162 public void llAttachToAvatar(int attachment) { m_LSL_Functions.llAttachToAvatar(attachment); }
163 public void llDetachFromAvatar() { m_LSL_Functions.llDetachFromAvatar(); }
164 public void llTakeCamera() { m_LSL_Functions.llTakeCamera(); }
165 public void llReleaseCamera() { m_LSL_Functions.llReleaseCamera(); }
166 public string llGetOwner() { return m_LSL_Functions.llGetOwner(); }
167 public void llInstantMessage(string user, string message) { m_LSL_Functions.llInstantMessage(user, message); }
168 public void llEmail(string address, string subject, string message) { m_LSL_Functions.llEmail(address, subject, message); }
169 public void llGetNextEmail(string address, string subject) { m_LSL_Functions.llGetNextEmail(address, subject); }
170 public string llGetKey() { return m_LSL_Functions.llGetKey(); }
171 public void llSetBuoyancy(double buoyancy) { m_LSL_Functions.llSetBuoyancy(buoyancy); }
172 public void llSetHoverHeight(double height, int water, double tau) { m_LSL_Functions.llSetHoverHeight(height, water, tau); }
173 public void llStopHover() { m_LSL_Functions.llStopHover(); }
174 public void llMinEventDelay(double delay) { m_LSL_Functions.llMinEventDelay(delay); }
175 public void llSoundPreload() { m_LSL_Functions.llSoundPreload(); }
176 public void llRotLookAt(Axiom.Math.Quaternion target, double strength, double damping) { m_LSL_Functions.llRotLookAt(target, strength, damping); }
177 public int llStringLength(string str) { return m_LSL_Functions.llStringLength(str); }
178 public void llStartAnimation(string anim) { m_LSL_Functions.llStartAnimation(anim); }
179 public void llStopAnimation(string anim) { m_LSL_Functions.llStopAnimation(anim); }
180 public void llPointAt() { m_LSL_Functions.llPointAt(); }
181 public void llStopPointAt() { m_LSL_Functions.llStopPointAt(); }
182 public void llTargetOmega(Axiom.Math.Vector3 axis, double spinrate, double gain) { m_LSL_Functions.llTargetOmega(axis, spinrate, gain); }
183 public int llGetStartParameter() { return m_LSL_Functions.llGetStartParameter(); }
184 public void llGodLikeRezObject(string inventory, Axiom.Math.Vector3 pos) { m_LSL_Functions.llGodLikeRezObject(inventory, pos); }
185 public void llRequestPermissions(string agent, int perm) { m_LSL_Functions.llRequestPermissions(agent, perm); }
186 public string llGetPermissionsKey() { return m_LSL_Functions.llGetPermissionsKey(); }
187 public int llGetPermissions() { return m_LSL_Functions.llGetPermissions(); }
188 public int llGetLinkNumber() { return m_LSL_Functions.llGetLinkNumber(); }
189 public void llSetLinkColor(int linknumber, Axiom.Math.Vector3 color, int face) { m_LSL_Functions.llSetLinkColor(linknumber, color, face); }
190 public void llCreateLink(string target, int parent) { m_LSL_Functions.llCreateLink(target, parent); }
191 public void llBreakLink(int linknum) { m_LSL_Functions.llBreakLink(linknum); }
192 public void llBreakAllLinks() { m_LSL_Functions.llBreakAllLinks(); }
193 public string llGetLinkKey(int linknum) { return m_LSL_Functions.llGetLinkKey(linknum); }
194 public void llGetLinkName(int linknum) { m_LSL_Functions.llGetLinkName(linknum); }
195 public int llGetInventoryNumber(int type) { return m_LSL_Functions.llGetInventoryNumber(type); }
196 public string llGetInventoryName(int type, int number) { return m_LSL_Functions.llGetInventoryName(type, number); }
197 public void llSetScriptState(string name, int run) { m_LSL_Functions.llSetScriptState(name, run); }
198 public double llGetEnergy() { return m_LSL_Functions.llGetEnergy(); }
199 public void llGiveInventory(string destination, string inventory) { m_LSL_Functions.llGiveInventory(destination, inventory); }
200 public void llRemoveInventory(string item) { m_LSL_Functions.llRemoveInventory(item); }
201 public void llSetText(string text, Axiom.Math.Vector3 color, double alpha) { m_LSL_Functions.llSetText(text, color, alpha); }
202 public double llWater(Axiom.Math.Vector3 offset) { return m_LSL_Functions.llWater(offset); }
203 public void llPassTouches(int pass) { m_LSL_Functions.llPassTouches(pass); }
204 public string llRequestAgentData(string id, int data) { return m_LSL_Functions.llRequestAgentData(id, data); }
205 public string llRequestInventoryData(string name) { return m_LSL_Functions.llRequestInventoryData(name); }
206 public void llSetDamage(double damage) { m_LSL_Functions.llSetDamage(damage); }
207 public void llTeleportAgentHome(string agent) { m_LSL_Functions.llTeleportAgentHome(agent); }
208 public void llModifyLand(int action, int brush) { m_LSL_Functions.llModifyLand(action, brush); }
209 public void llCollisionSound(string impact_sound, double impact_volume) { m_LSL_Functions.llCollisionSound(impact_sound, impact_volume); }
210 public void llCollisionSprite(string impact_sprite) { m_LSL_Functions.llCollisionSprite(impact_sprite); }
211 public string llGetAnimation(string id) { return m_LSL_Functions.llGetAnimation(id); }
212 public void llResetScript() { m_LSL_Functions.llResetScript(); }
213 public void llMessageLinked(int linknum, int num, string str, string id) { m_LSL_Functions.llMessageLinked(linknum, num, str, id); }
214 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); }
215 public void llPassCollisions(int pass) { m_LSL_Functions.llPassCollisions(pass); }
216 public string llGetScriptName() { return m_LSL_Functions.llGetScriptName(); }
217 public int llGetNumberOfSides() { return m_LSL_Functions.llGetNumberOfSides(); }
218 public Axiom.Math.Quaternion llAxisAngle2Rot(Axiom.Math.Vector3 axis, double angle) { return m_LSL_Functions.llAxisAngle2Rot(axis, angle); }
219 public Axiom.Math.Vector3 llRot2Axis(Axiom.Math.Quaternion rot) { return m_LSL_Functions.llRot2Axis(rot); }
220 public void llRot2Angle() { m_LSL_Functions.llRot2Angle(); }
221 public double llAcos(double val) { return m_LSL_Functions.llAcos(val); }
222 public double llAsin(double val) { return m_LSL_Functions.llAsin(val); }
223 public double llAngleBetween(Axiom.Math.Quaternion a, Axiom.Math.Quaternion b) { return m_LSL_Functions.llAngleBetween(a, b); }
224 public string llGetInventoryKey(string name) { return m_LSL_Functions.llGetInventoryKey(name); }
225 public void llAllowInventoryDrop(int add) { m_LSL_Functions.llAllowInventoryDrop(add); }
226 public Axiom.Math.Vector3 llGetSunDirection() { return m_LSL_Functions.llGetSunDirection(); }
227 public Axiom.Math.Vector3 llGetTextureOffset(int face) { return m_LSL_Functions.llGetTextureOffset(face); }
228 public Axiom.Math.Vector3 llGetTextureScale(int side) { return m_LSL_Functions.llGetTextureScale(side); }
229 public double llGetTextureRot(int side) { return m_LSL_Functions.llGetTextureRot(side); }
230 public int llSubStringIndex(string source, string pattern) { return m_LSL_Functions.llSubStringIndex(source, pattern); }
231 public string llGetOwnerKey(string id) { return m_LSL_Functions.llGetOwnerKey(id); }
232 public Axiom.Math.Vector3 llGetCenterOfMass() { return m_LSL_Functions.llGetCenterOfMass(); }
233 public List<string> llListSort(List<string> src, int stride, int ascending) { return m_LSL_Functions.llListSort(src, stride, ascending); }
234 public int llGetListLength(List<string> src) { return m_LSL_Functions.llGetListLength(src); }
235 public int llList2Integer(List<string> src, int index) { return m_LSL_Functions.llList2Integer(src, index); }
236 public double llList2double(List<string> src, int index) { return m_LSL_Functions.llList2double(src, index); }
237 public string llList2String(List<string> src, int index) { return m_LSL_Functions.llList2String(src, index); }
238 public string llList2Key(List<string> src, int index) { return m_LSL_Functions.llList2Key(src, index); }
239 public Axiom.Math.Vector3 llList2Vector(List<string> src, int index) { return m_LSL_Functions.llList2Vector(src, index); }
240 public Axiom.Math.Quaternion llList2Rot(List<string> src, int index) { return m_LSL_Functions.llList2Rot(src, index); }
241 public List<string> llList2List(List<string> src, int start, int end) { return m_LSL_Functions.llList2List(src, start, end); }
242 public List<string> llDeleteSubList(List<string> src, int start, int end) { return m_LSL_Functions.llDeleteSubList(src, start, end); }
243 public int llGetListEntryType(List<string> src, int index) { return m_LSL_Functions.llGetListEntryType(src, index); }
244 public string llList2CSV(List<string> src) { return m_LSL_Functions.llList2CSV(src); }
245 public List<string> llCSV2List(string src) { return m_LSL_Functions.llCSV2List(src); }
246 public List<string> llListRandomize(List<string> src, int stride) { return m_LSL_Functions.llListRandomize(src, stride); }
247 public List<string> llList2ListStrided(List<string> src, int start, int end, int stride) { return m_LSL_Functions.llList2ListStrided(src, start, end, stride); }
248 public Axiom.Math.Vector3 llGetRegionCorner() { return m_LSL_Functions.llGetRegionCorner(); }
249 public List<string> llListInsertList(List<string> dest, List<string> src, int start) { return m_LSL_Functions.llListInsertList(dest, src, start); }
250 public int llListFindList(List<string> src, List<string> test) { return m_LSL_Functions.llListFindList(src, test); }
251 public string llGetObjectName() { return m_LSL_Functions.llGetObjectName(); }
252 public void llSetObjectName(string name) { m_LSL_Functions.llSetObjectName(name); }
253 public string llGetDate() { return m_LSL_Functions.llGetDate(); }
254 public int llEdgeOfWorld(Axiom.Math.Vector3 pos, Axiom.Math.Vector3 dir) { return m_LSL_Functions.llEdgeOfWorld(pos, dir); }
255 public int llGetAgentInfo(string id) { return m_LSL_Functions.llGetAgentInfo(id); }
256 public void llAdjustSoundVolume(double volume) { m_LSL_Functions.llAdjustSoundVolume(volume); }
257 public void llSetSoundQueueing(int queue) { m_LSL_Functions.llSetSoundQueueing(queue); }
258 public void llSetSoundRadius(double radius) { m_LSL_Functions.llSetSoundRadius(radius); }
259 public string llKey2Name(string id) { return m_LSL_Functions.llKey2Name(id); }
260 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); }
261 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); }
262 public void llEjectFromLand(string pest) { m_LSL_Functions.llEjectFromLand(pest); }
263 public void llParseString2List() { m_LSL_Functions.llParseString2List(); }
264 public int llOverMyLand(string id) { return m_LSL_Functions.llOverMyLand(id); }
265 public string llGetLandOwnerAt(Axiom.Math.Vector3 pos) { return m_LSL_Functions.llGetLandOwnerAt(pos); }
266 public string llGetNotecardLine(string name, int line) { return m_LSL_Functions.llGetNotecardLine(name, line); }
267 public Axiom.Math.Vector3 llGetAgentSize(string id) { return m_LSL_Functions.llGetAgentSize(id); }
268 public int llSameGroup(string agent) { return m_LSL_Functions.llSameGroup(agent); }
269 public void llUnSit(string id) { m_LSL_Functions.llUnSit(id); }
270 public Axiom.Math.Vector3 llGroundSlope(Axiom.Math.Vector3 offset) { return m_LSL_Functions.llGroundSlope(offset); }
271 public Axiom.Math.Vector3 llGroundNormal(Axiom.Math.Vector3 offset) { return m_LSL_Functions.llGroundNormal(offset); }
272 public Axiom.Math.Vector3 llGroundContour(Axiom.Math.Vector3 offset) { return m_LSL_Functions.llGroundContour(offset); }
273 public int llGetAttached() { return m_LSL_Functions.llGetAttached(); }
274 public int llGetFreeMemory() { return m_LSL_Functions.llGetFreeMemory(); }
275 public string llGetRegionName() { return m_LSL_Functions.llGetRegionName(); }
276 public double llGetRegionTimeDilation() { return m_LSL_Functions.llGetRegionTimeDilation(); }
277 public double llGetRegionFPS() { return m_LSL_Functions.llGetRegionFPS(); }
278 public void llParticleSystem(List<Object> rules) { m_LSL_Functions.llParticleSystem(rules); }
279 public void llGroundRepel(double height, int water, double tau) { m_LSL_Functions.llGroundRepel(height, water, tau); }
280 public void llGiveInventoryList() { m_LSL_Functions.llGiveInventoryList(); }
281 public void llSetVehicleType(int type) { m_LSL_Functions.llSetVehicleType(type); }
282 public void llSetVehicledoubleParam(int param, double value) { m_LSL_Functions.llSetVehicledoubleParam(param, value); }
283 public void llSetVehicleVectorParam(int param, Axiom.Math.Vector3 vec) { m_LSL_Functions.llSetVehicleVectorParam(param, vec); }
284 public void llSetVehicleRotationParam(int param, Axiom.Math.Quaternion rot) { m_LSL_Functions.llSetVehicleRotationParam(param, rot); }
285 public void llSetVehicleFlags(int flags) { m_LSL_Functions.llSetVehicleFlags(flags); }
286 public void llRemoveVehicleFlags(int flags) { m_LSL_Functions.llRemoveVehicleFlags(flags); }
287 public void llSitTarget(Axiom.Math.Vector3 offset, Axiom.Math.Quaternion rot) { m_LSL_Functions.llSitTarget(offset, rot); }
288 public string llAvatarOnSitTarget() { return m_LSL_Functions.llAvatarOnSitTarget(); }
289 public void llAddToLandPassList(string avatar, double hours) { m_LSL_Functions.llAddToLandPassList(avatar, hours); }
290 public void llSetTouchText(string text) { m_LSL_Functions.llSetTouchText(text); }
291 public void llSetSitText(string text) { m_LSL_Functions.llSetSitText(text); }
292 public void llSetCameraEyeOffset(Axiom.Math.Vector3 offset) { m_LSL_Functions.llSetCameraEyeOffset(offset); }
293 public void llSetCameraAtOffset(Axiom.Math.Vector3 offset) { m_LSL_Functions.llSetCameraAtOffset(offset); }
294 public void llDumpList2String() { m_LSL_Functions.llDumpList2String(); }
295 public void llScriptDanger(Axiom.Math.Vector3 pos) { m_LSL_Functions.llScriptDanger(pos); }
296 public void llDialog(string avatar, string message, List<string> buttons, int chat_channel) { m_LSL_Functions.llDialog(avatar, message, buttons, chat_channel); }
297 public void llVolumeDetect(int detect) { m_LSL_Functions.llVolumeDetect(detect); }
298 public void llResetOtherScript(string name) { m_LSL_Functions.llResetOtherScript(name); }
299 public int llGetScriptState(string name) { return m_LSL_Functions.llGetScriptState(name); }
300 public void llRemoteLoadScript() { m_LSL_Functions.llRemoteLoadScript(); }
301 public void llSetRemoteScriptAccessPin(int pin) { m_LSL_Functions.llSetRemoteScriptAccessPin(pin); }
302 public void llRemoteLoadScriptPin(string target, string name, int pin, int running, int start_param) { m_LSL_Functions.llRemoteLoadScriptPin(target, name, pin, running, start_param); }
303 public void llOpenRemoteDataChannel() { m_LSL_Functions.llOpenRemoteDataChannel(); }
304 public string llSendRemoteData(string channel, string dest, int idata, string sdata) { return m_LSL_Functions.llSendRemoteData(channel, dest, idata, sdata); }
305 public void llRemoteDataReply(string channel, string message_id, string sdata, int idata) { m_LSL_Functions.llRemoteDataReply(channel, message_id, sdata, idata); }
306 public void llCloseRemoteDataChannel(string channel) { m_LSL_Functions.llCloseRemoteDataChannel(channel); }
307 public string llMD5String(string src, int nonce) { return m_LSL_Functions.llMD5String(src, nonce); }
308 public void llSetPrimitiveParams(List<string> rules) { m_LSL_Functions.llSetPrimitiveParams(rules); }
309 public string llStringToBase64(string str) { return m_LSL_Functions.llStringToBase64(str); }
310 public string llBase64ToString(string str) { return m_LSL_Functions.llBase64ToString(str); }
311 public void llXorBase64Strings() { m_LSL_Functions.llXorBase64Strings(); }
312 public void llRemoteDataSetRegion() { m_LSL_Functions.llRemoteDataSetRegion(); }
313 public double llLog10(double val) { return m_LSL_Functions.llLog10(val); }
314 public double llLog(double val) { return m_LSL_Functions.llLog(val); }
315 public List<string> llGetAnimationList(string id) { return m_LSL_Functions.llGetAnimationList(id); }
316 public void llSetParcelMusicURL(string url) { m_LSL_Functions.llSetParcelMusicURL(url); }
317 public Axiom.Math.Vector3 llGetRootPosition() { return m_LSL_Functions.llGetRootPosition(); }
318 public Axiom.Math.Quaternion llGetRootRotation() { return m_LSL_Functions.llGetRootRotation(); }
319 public string llGetObjectDesc() { return m_LSL_Functions.llGetObjectDesc(); }
320 public void llSetObjectDesc(string desc) { m_LSL_Functions.llSetObjectDesc(desc); }
321 public string llGetCreator() { return m_LSL_Functions.llGetCreator(); }
322 public string llGetTimestamp() { return m_LSL_Functions.llGetTimestamp(); }
323 public void llSetLinkAlpha(int linknumber, double alpha, int face) { m_LSL_Functions.llSetLinkAlpha(linknumber, alpha, face); }
324 public int llGetNumberOfPrims() { return m_LSL_Functions.llGetNumberOfPrims(); }
325 public string llGetNumberOfNotecardLines(string name) { return m_LSL_Functions.llGetNumberOfNotecardLines(name); }
326 public List<string> llGetBoundingBox(string obj) { return m_LSL_Functions.llGetBoundingBox(obj); }
327 public Axiom.Math.Vector3 llGetGeometricCenter() { return m_LSL_Functions.llGetGeometricCenter(); }
328 public void llGetPrimitiveParams() { m_LSL_Functions.llGetPrimitiveParams(); }
329 public string llIntegerToBase64(int number) { return m_LSL_Functions.llIntegerToBase64(number); }
330 public int llBase64ToInteger(string str) { return m_LSL_Functions.llBase64ToInteger(str); }
331 public double llGetGMTclock() { return m_LSL_Functions.llGetGMTclock(); }
332 public string llGetSimulatorHostname() { return m_LSL_Functions.llGetSimulatorHostname(); }
333 public void llSetLocalRot(Axiom.Math.Quaternion rot) { m_LSL_Functions.llSetLocalRot(rot); }
334 public List<string> llParseStringKeepNulls(string src, List<string> seperators, List<string> spacers) { return m_LSL_Functions.llParseStringKeepNulls(src, seperators, spacers); }
335 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); }
336 public int llGetObjectPermMask(int mask) { return m_LSL_Functions.llGetObjectPermMask(mask); }
337 public void llSetObjectPermMask(int mask, int value) { m_LSL_Functions.llSetObjectPermMask(mask, value); }
338 public void llGetInventoryPermMask(string item, int mask) { m_LSL_Functions.llGetInventoryPermMask(item, mask); }
339 public void llSetInventoryPermMask(string item, int mask, int value) { m_LSL_Functions.llSetInventoryPermMask(item, mask, value); }
340 public string llGetInventoryCreator(string item) { return m_LSL_Functions.llGetInventoryCreator(item); }
341 public void llOwnerSay(string msg) { m_LSL_Functions.llOwnerSay(msg); }
342 public void llRequestSimulatorData(string simulator, int data) { m_LSL_Functions.llRequestSimulatorData(simulator, data); }
343 public void llForceMouselook(int mouselook) { m_LSL_Functions.llForceMouselook(mouselook); }
344 public double llGetObjectMass(string id) { return m_LSL_Functions.llGetObjectMass(id); }
345 public void llListReplaceList() { m_LSL_Functions.llListReplaceList(); }
346 public void llLoadURL(string avatar_id, string message, string url) { m_LSL_Functions.llLoadURL(avatar_id, message, url); }
347 public void llParcelMediaCommandList(List<string> commandList) { m_LSL_Functions.llParcelMediaCommandList(commandList); }
348 public void llParcelMediaQuery() { m_LSL_Functions.llParcelMediaQuery(); }
349 public int llModPow(int a, int b, int c) { return m_LSL_Functions.llModPow(a, b, c); }
350 public int llGetInventoryType(string name) { return m_LSL_Functions.llGetInventoryType(name); }
351 public void llSetPayPrice(int price, List<string> quick_pay_buttons) { m_LSL_Functions.llSetPayPrice(price, quick_pay_buttons); }
352 public Axiom.Math.Vector3 llGetCameraPos() { return m_LSL_Functions.llGetCameraPos(); }
353 public Axiom.Math.Quaternion llGetCameraRot() { return m_LSL_Functions.llGetCameraRot(); }
354 public void llSetPrimURL() { m_LSL_Functions.llSetPrimURL(); }
355 public void llRefreshPrimURL() { m_LSL_Functions.llRefreshPrimURL(); }
356 public string llEscapeURL(string url) { return m_LSL_Functions.llEscapeURL(url); }
357 public string llUnescapeURL(string url) { return m_LSL_Functions.llUnescapeURL(url); }
358 public void llMapDestination(string simname, Axiom.Math.Vector3 pos, Axiom.Math.Vector3 look_at) { m_LSL_Functions.llMapDestination(simname, pos, look_at); }
359 public void llAddToLandBanList(string avatar, double hours) { m_LSL_Functions.llAddToLandBanList(avatar, hours); }
360 public void llRemoveFromLandPassList(string avatar) { m_LSL_Functions.llRemoveFromLandPassList(avatar); }
361 public void llRemoveFromLandBanList(string avatar) { m_LSL_Functions.llRemoveFromLandBanList(avatar); }
362 public void llSetCameraParams(List<string> rules) { m_LSL_Functions.llSetCameraParams(rules); }
363 public void llClearCameraParams() { m_LSL_Functions.llClearCameraParams(); }
364 public double llListStatistics(int operation, List<string> src) { return m_LSL_Functions.llListStatistics(operation, src); }
365 public int llGetUnixTime() { return m_LSL_Functions.llGetUnixTime(); }
366 public int llGetParcelFlags(Axiom.Math.Vector3 pos) { return m_LSL_Functions.llGetParcelFlags(pos); }
367 public int llGetRegionFlags() { return m_LSL_Functions.llGetRegionFlags(); }
368 public string llXorBase64StringsCorrect(string str1, string str2) { return m_LSL_Functions.llXorBase64StringsCorrect(str1, str2); }
369 public void llHTTPRequest() { m_LSL_Functions.llHTTPRequest(); }
370 public void llResetLandBanList() { m_LSL_Functions.llResetLandBanList(); }
371 public void llResetLandPassList() { m_LSL_Functions.llResetLandPassList(); }
372 public int llGetParcelPrimCount(Axiom.Math.Vector3 pos, int category, int sim_wide) { return m_LSL_Functions.llGetParcelPrimCount(pos, category, sim_wide); }
373 public List<string> llGetParcelPrimOwners(Axiom.Math.Vector3 pos) { return m_LSL_Functions.llGetParcelPrimOwners(pos); }
374 public int llGetObjectPrimCount(string object_id) { return m_LSL_Functions.llGetObjectPrimCount(object_id); }
375 public int llGetParcelMaxPrims(Axiom.Math.Vector3 pos, int sim_wide) { return m_LSL_Functions.llGetParcelMaxPrims(pos, sim_wide); }
376 public List<string> llGetParcelDetails(Axiom.Math.Vector3 pos, List<string> param) { return m_LSL_Functions.llGetParcelDetails(pos, param); }
467 377
468 378
469 379
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs
index 8549fa3..32353ce 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs
@@ -38,6 +38,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
38 /// <summary> 38 /// <summary>
39 /// Prepares events so they can be directly executed upon a script by EventQueueManager, then queues it. 39 /// Prepares events so they can be directly executed upon a script by EventQueueManager, then queues it.
40 /// </summary> 40 /// </summary>
41 [Serializable]
41 class EventManager 42 class EventManager
42 { 43 {
43 private ScriptEngine myScriptEngine; 44 private ScriptEngine myScriptEngine;
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueManager.cs
index a63aad9..c20a8b0 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueManager.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueManager.cs
@@ -39,6 +39,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
39 /// EventQueueManager handles event queues 39 /// EventQueueManager handles event queues
40 /// Events are queued and executed in separate thread 40 /// Events are queued and executed in separate thread
41 /// </summary> 41 /// </summary>
42 [Serializable]
42 class EventQueueManager 43 class EventQueueManager
43 { 44 {
44 private Thread EventQueueThread; 45 private Thread EventQueueThread;
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/MarshalByRefType.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/MarshalByRefType.cs
new file mode 100644
index 0000000..36bb146
--- /dev/null
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/MarshalByRefType.cs
@@ -0,0 +1,34 @@
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/ScriptEngine.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs
index d21855b..d08fc32 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs
@@ -38,6 +38,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
38 /// <summary> 38 /// <summary>
39 /// This is the root object for ScriptEngine 39 /// This is the root object for ScriptEngine
40 /// </summary> 40 /// </summary>
41 [Serializable]
41 public class ScriptEngine : OpenSim.Region.Environment.Scenes.Scripting.ScriptEngineInterface 42 public class ScriptEngine : OpenSim.Region.Environment.Scenes.Scripting.ScriptEngineInterface
42 { 43 {
43 44
@@ -45,6 +46,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
45 internal EventManager myEventManager; // Handles and queues incoming events from OpenSim 46 internal EventManager myEventManager; // Handles and queues incoming events from OpenSim
46 internal EventQueueManager myEventQueueManager; // Executes events 47 internal EventQueueManager myEventQueueManager; // Executes events
47 internal ScriptManager myScriptManager; // Load, unload and execute scripts 48 internal ScriptManager myScriptManager; // Load, unload and execute scripts
49 internal AppDomainManager myAppDomainManager;
48 50
49 private OpenSim.Framework.Console.LogBase m_log; 51 private OpenSim.Framework.Console.LogBase m_log;
50 52
@@ -70,6 +72,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
70 myEventQueueManager = new EventQueueManager(this); 72 myEventQueueManager = new EventQueueManager(this);
71 myEventManager = new EventManager(this); 73 myEventManager = new EventManager(this);
72 myScriptManager = new ScriptManager(this); 74 myScriptManager = new ScriptManager(this);
75 myAppDomainManager = new AppDomainManager(this);
73 76
74 // Should we iterate the region for scripts that needs starting? 77 // Should we iterate the region for scripts that needs starting?
75 // Or can we assume we are loaded before anything else so we can use proper events? 78 // Or can we assume we are loaded before anything else so we can use proper events?
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs
index f17711c..7155b09 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs
@@ -31,8 +31,10 @@ using System.Collections.Generic;
31using System.Text; 31using System.Text;
32using System.Threading; 32using System.Threading;
33using System.Reflection; 33using System.Reflection;
34using System.Runtime.Remoting;
34using OpenSim.Region.Environment.Scenes; 35using OpenSim.Region.Environment.Scenes;
35using OpenSim.Region.Environment.Scenes.Scripting; 36using OpenSim.Region.Environment.Scenes.Scripting;
37using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL;
36 38
37namespace OpenSim.Region.ScriptEngine.DotNetEngine 39namespace OpenSim.Region.ScriptEngine.DotNetEngine
38{ 40{
@@ -41,6 +43,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
41 /// Compiles them if necessary 43 /// Compiles them if necessary
42 /// Execute functions for EventQueueManager 44 /// Execute functions for EventQueueManager
43 /// </summary> 45 /// </summary>
46 [Serializable]
44 public class ScriptManager 47 public class ScriptManager
45 { 48 {
46 49
@@ -49,6 +52,15 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
49 { 52 {
50 m_scriptEngine = scriptEngine; 53 m_scriptEngine = scriptEngine;
51 m_scriptEngine.Log.Verbose("ScriptEngine", "ScriptManager Start"); 54 m_scriptEngine.Log.Verbose("ScriptEngine", "ScriptManager Start");
55 AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
56 }
57
58 private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
59 {
60
61 Console.WriteLine("CurrentDomain_AssemblyResolve: " + args.Name);
62 return Assembly.GetExecutingAssembly().FullName == args.Name ? Assembly.GetExecutingAssembly() : null;
63
52 } 64 }
53 65
54 66
@@ -158,13 +170,15 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
158 FileName = ProcessYield(FileName); 170 FileName = ProcessYield(FileName);
159 171
160 // * Find next available AppDomain to put it in 172 // * Find next available AppDomain to put it in
161 AppDomain FreeAppDomain = GetFreeAppDomain(); 173 AppDomain FreeAppDomain = m_scriptEngine.myAppDomainManager.GetFreeAppDomain();
162 174
163 // * Load and start script, for now with dummy host 175 // * Load and start script, for now with dummy host
164 176
165 //OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO.LSL_BaseClass Script = LoadAndInitAssembly(FreeAppDomain, FileName); 177 //OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO.LSL_BaseClass Script = LoadAndInitAssembly(FreeAppDomain, FileName);
166 178
179 //OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass Script = LoadAndInitAssembly(FreeAppDomain, FileName, ObjectID);
167 OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass Script = LoadAndInitAssembly(FreeAppDomain, FileName, ObjectID); 180 OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass Script = LoadAndInitAssembly(FreeAppDomain, FileName, ObjectID);
181
168 //string FullScriptID = ScriptID + "." + ObjectID; 182 //string FullScriptID = ScriptID + "." + ObjectID;
169 // Add it to our temporary active script keeper 183 // Add it to our temporary active script keeper
170 //Scripts.Add(FullScriptID, Script); 184 //Scripts.Add(FullScriptID, Script);
@@ -175,8 +189,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
175 189
176 // Start the script - giving it BuiltIns 190 // Start the script - giving it BuiltIns
177 //myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager initializing script, handing over private builtin command interface"); 191 //myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager initializing script, handing over private builtin command interface");
178 192
179 Script.Start( ScriptID ); 193 Script.Start(new OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL_BuiltIn_Commands(this, ObjectID));
180 194
181 } 195 }
182 catch (Exception e) 196 catch (Exception e)
@@ -193,11 +207,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
193 return FileName; 207 return FileName;
194 } 208 }
195 209
196 private AppDomain GetFreeAppDomain() 210 //private AppDomain GetFreeAppDomain()
197 { 211 //{
198 // TODO: Find an available AppDomain - if none, create one and add default security 212 // // TODO: Find an available AppDomain - if none, create one and add default security
199 return Thread.GetDomain(); 213 // return Thread.GetDomain();
200 } 214 //}
201 215
202 /// <summary> 216 /// <summary>
203 /// Does actual loading and initialization of script Assembly 217 /// Does actual loading and initialization of script Assembly
@@ -207,6 +221,33 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
207 /// <returns></returns> 221 /// <returns></returns>
208 private OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass LoadAndInitAssembly(AppDomain FreeAppDomain, string FileName, IScriptHost host) 222 private OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass LoadAndInitAssembly(AppDomain FreeAppDomain, string FileName, IScriptHost host)
209 { 223 {
224 //object[] ADargs = new object[]
225 // {
226 // this,
227 // host
228 // };
229
230 ////LSL_BaseClass mbrt = (LSL_BaseClass)FreeAppDomain.CreateInstanceAndUnwrap(FileName, "SecondLife.Script");
231 //Console.WriteLine("Base directory: " + AppDomain.CurrentDomain.BaseDirectory);
232
233 //LSL_BaseClass mbrt = (LSL_BaseClass)FreeAppDomain.CreateInstanceFromAndUnwrap(FileName, "SecondLife.Script");
234
235 //Type mytype = mbrt.GetType();
236
237
238
239
240 //Console.WriteLine("is proxy={0}", RemotingServices.IsTransparentProxy(mbrt));
241
242
243 ////mbrt.Start();
244 //return mbrt;
245
246
247
248
249
250
210 //myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager Loading Assembly " + FileName); 251 //myScriptEngine.m_logger.Verbose("ScriptEngine", "ScriptManager Loading Assembly " + FileName);
211 // Load .Net Assembly (.dll) 252 // Load .Net Assembly (.dll)
212 // Initialize and return it 253 // Initialize and return it
@@ -242,13 +283,13 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
242 //} 283 //}
243 //catch (Exception e) 284 //catch (Exception e)
244 //{ 285 //{
245 //} 286 //}
246 287
247 // Create constructor arguments 288 // Create constructor arguments
248 object[] args = new object[] 289 object[] args = new object[]
249 { 290 {
250 this, 291// this,
251 host 292// host
252 }; 293 };
253 294
254 return (OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass)Activator.CreateInstance(t, args ); 295 return (OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass)Activator.CreateInstance(t, args );
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/TempDotNetMicroThreadingCodeInjector.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/TempDotNetMicroThreadingCodeInjector.cs
index dd3ce09..64cb7cd 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/TempDotNetMicroThreadingCodeInjector.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/TempDotNetMicroThreadingCodeInjector.cs
@@ -8,6 +8,10 @@ using Rail.MSIL;
8 8
9namespace OpenSim.Region.ScriptEngine.DotNetEngine 9namespace OpenSim.Region.ScriptEngine.DotNetEngine
10{ 10{
11 /// <summary>
12 /// Tedds Sandbox for RAIL/microtrheading. This class is only for testing purposes!
13 /// Its offspring will be the actual implementation.
14 /// </summary>
11 class TempDotNetMicroThreadingCodeInjector 15 class TempDotNetMicroThreadingCodeInjector
12 { 16 {
13 public static string TestFix(string FileName) 17 public static string TestFix(string FileName)
diff --git a/prebuild.xml b/prebuild.xml
index 1e84541..bfc8cd4 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -955,6 +955,7 @@
955 <Reference name="System" localCopy="false"/> 955 <Reference name="System" localCopy="false"/>
956 <Reference name="System.Data" localCopy="false"/> 956 <Reference name="System.Data" localCopy="false"/>
957 <Reference name="System.Xml" localCopy="false"/> 957 <Reference name="System.Xml" localCopy="false"/>
958 <Reference name="System.Runtime.Remoting" localCopy="false"/>
958 <Reference name="OpenSim.Region.Environment" /> 959 <Reference name="OpenSim.Region.Environment" />
959 <Reference name="Axiom.MathLib.dll" localCopy="false"/> 960 <Reference name="Axiom.MathLib.dll" localCopy="false"/>
960 <Reference name="libsecondlife.dll"/> 961 <Reference name="libsecondlife.dll"/>