diff options
author | Tedd Hansen | 2007-08-18 18:18:14 +0000 |
---|---|---|
committer | Tedd Hansen | 2007-08-18 18:18:14 +0000 |
commit | 1284369a329d3ae621c0ef0596d01d67e8c70e62 (patch) | |
tree | b6243963c10008b7aeb4ce9e2260becd3c2b21d0 /OpenSim | |
parent | When teleporting to distant region, you can now go to the point you want to g... (diff) | |
download | opensim-SC-1284369a329d3ae621c0ef0596d01d67e8c70e62.zip opensim-SC-1284369a329d3ae621c0ef0596d01d67e8c70e62.tar.gz opensim-SC-1284369a329d3ae621c0ef0596d01d67e8c70e62.tar.bz2 opensim-SC-1284369a329d3ae621c0ef0596d01d67e8c70e62.tar.xz |
Started on AppDomains for ScriptEngine. Moved llFunctions in LSL_BaseClass.cs to LSL_BuiltIn_Commands.cs. Changed how scripts are loaded.
Diffstat (limited to '')
9 files changed, 563 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 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | using System.Reflection; | ||
5 | using System.Threading; | ||
6 | using System.Runtime.Remoting; | ||
7 | using System.IO; | ||
8 | |||
9 | namespace 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; | |||
2 | using System.Collections.Generic; | 2 | using System.Collections.Generic; |
3 | using System.Text; | 3 | using System.Text; |
4 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler; | 4 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler; |
5 | using libsecondlife; | ||
6 | using OpenSim.Region.Environment.Scenes; | ||
7 | using OpenSim.Region.Environment.Scenes.Scripting; | ||
8 | using OpenSim.Framework.Console; | 5 | using OpenSim.Framework.Console; |
6 | using System.Threading; | ||
9 | 7 | ||
10 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | 8 | namespace 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 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | using System.Threading; | ||
5 | |||
6 | namespace 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; | |||
31 | using System.Text; | 31 | using System.Text; |
32 | using System.Threading; | 32 | using System.Threading; |
33 | using System.Reflection; | 33 | using System.Reflection; |
34 | using System.Runtime.Remoting; | ||
34 | using OpenSim.Region.Environment.Scenes; | 35 | using OpenSim.Region.Environment.Scenes; |
35 | using OpenSim.Region.Environment.Scenes.Scripting; | 36 | using OpenSim.Region.Environment.Scenes.Scripting; |
37 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL; | ||
36 | 38 | ||
37 | namespace OpenSim.Region.ScriptEngine.DotNetEngine | 39 | namespace 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 | ||
9 | namespace OpenSim.Region.ScriptEngine.DotNetEngine | 9 | namespace 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) |