aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorCharles Krinke2008-06-28 16:18:47 +0000
committerCharles Krinke2008-06-28 16:18:47 +0000
commit2f70baee528ae94a3456c09ebdb60e9a24d7f7d0 (patch)
tree0e92de124ea526387a4125cd5e673de4c67a4993 /OpenSim
parentMantis#1620. Applied Melanie's patch (diff)
downloadopensim-SC-2f70baee528ae94a3456c09ebdb60e9a24d7f7d0.zip
opensim-SC-2f70baee528ae94a3456c09ebdb60e9a24d7f7d0.tar.gz
opensim-SC-2f70baee528ae94a3456c09ebdb60e9a24d7f7d0.tar.bz2
opensim-SC-2f70baee528ae94a3456c09ebdb60e9a24d7f7d0.tar.xz
Mantis#1623. Thank you, Melanie for a patch that:
Fully defines the equality operators on the lsl types and plubs in the script engine side of the work begun in 0001616 (aly, this one's for you)
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs8
-rw-r--r--OpenSim/Region/ScriptEngine/Common/IScript.cs1
-rw-r--r--OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs3
-rw-r--r--OpenSim/Region/ScriptEngine/Common/LSL_Types.cs25
-rw-r--r--OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs2
-rw-r--r--OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptManager.cs17
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs8
7 files changed, 54 insertions, 10 deletions
diff --git a/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs b/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs
index 07e3b41..47588b6 100644
--- a/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs
+++ b/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs
@@ -95,6 +95,12 @@ namespace OpenSim.Region.ScriptEngine.Common
95 set { _Source = value; } 95 set { _Source = value; }
96 } 96 }
97 97
98 private int m_StartParam = 0;
99 public int StartParam
100 {
101 get { return m_StartParam; }
102 set { m_StartParam = value; }
103 }
98 104
99 public BuiltIn_Commands_BaseClass() 105 public BuiltIn_Commands_BaseClass()
100 { 106 {
@@ -860,7 +866,7 @@ namespace OpenSim.Region.ScriptEngine.Common
860 866
861 public LSL_Types.LSLInteger llGetStartParameter() 867 public LSL_Types.LSLInteger llGetStartParameter()
862 { 868 {
863 return m_LSL_Functions.llGetStartParameter(); 869 return m_StartParam;
864 } 870 }
865 871
866 public void llGodLikeRezObject(string inventory, vector pos) 872 public void llGodLikeRezObject(string inventory, vector pos)
diff --git a/OpenSim/Region/ScriptEngine/Common/IScript.cs b/OpenSim/Region/ScriptEngine/Common/IScript.cs
index e3ceb47..cad3707 100644
--- a/OpenSim/Region/ScriptEngine/Common/IScript.cs
+++ b/OpenSim/Region/ScriptEngine/Common/IScript.cs
@@ -32,6 +32,7 @@ namespace OpenSim.Region.ScriptEngine.Common
32 public interface IScript 32 public interface IScript
33 { 33 {
34 string State { get; set; } 34 string State { get; set; }
35 int StartParam { get; set; }
35 ExecutorBase Exec { get; } 36 ExecutorBase Exec { get; }
36 string Source { get; set; } 37 string Source { get; set; }
37 void Start(BuilIn_Commands BuiltIn_Commands); 38 void Start(BuilIn_Commands BuiltIn_Commands);
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
index c240573..69235c4 100644
--- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
+++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
@@ -2343,8 +2343,7 @@ namespace OpenSim.Region.ScriptEngine.Common
2343 2343
2344 public LSL_Types.LSLInteger llGetStartParameter() 2344 public LSL_Types.LSLInteger llGetStartParameter()
2345 { 2345 {
2346 m_host.AddScriptLPS(1); 2346 // This is not handled here
2347 NotImplemented("llGetStartParameter");
2348 return 0; 2347 return 0;
2349 } 2348 }
2350 2349
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs
index ab3cba8..bfdc686 100644
--- a/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs
+++ b/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs
@@ -1293,6 +1293,18 @@ namespace OpenSim.Region.ScriptEngine.Common
1293 return ret; 1293 return ret;
1294 } 1294 }
1295 1295
1296 public override bool Equals(Object o)
1297 {
1298 if(!(o is LSLInteger))
1299 return false;
1300 return value == ((LSLInteger)o).value;
1301 }
1302
1303 public override int GetHashCode()
1304 {
1305 return value;
1306 }
1307
1296 static public LSLInteger operator &(LSLInteger i1, LSLInteger i2) 1308 static public LSLInteger operator &(LSLInteger i1, LSLInteger i2)
1297 { 1309 {
1298 int ret = i1.value & i2.value; 1310 int ret = i1.value & i2.value;
@@ -1438,6 +1450,19 @@ namespace OpenSim.Region.ScriptEngine.Common
1438 return String.Format("{0:0.000000}", this.value); 1450 return String.Format("{0:0.000000}", this.value);
1439 } 1451 }
1440 1452
1453 public override bool Equals(Object o)
1454 {
1455 if(!(o is LSLFloat))
1456 return false;
1457 return value == ((LSLFloat)o).value;
1458 }
1459
1460 public override int GetHashCode()
1461 {
1462 return Convert.ToInt32(value);
1463 }
1464
1465
1441 #endregion 1466 #endregion
1442 } 1467 }
1443 } 1468 }
diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs
index 93b68d4..0e852d1 100644
--- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs
+++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs
@@ -190,7 +190,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
190 { 190 {
191 Console.WriteLine("OnRezScript localID: " + localID + " LLUID: " + itemID.ToString() + " Size: " + 191 Console.WriteLine("OnRezScript localID: " + localID + " LLUID: " + itemID.ToString() + " Size: " +
192 script.Length); 192 script.Length);
193 myScriptEngine.m_ScriptManager.StartScript(localID, itemID, script); 193 myScriptEngine.m_ScriptManager.StartScript(localID, itemID, script, startParam, postOnRez);
194 } 194 }
195 195
196 public void OnRemoveScript(uint localID, LLUUID itemID) 196 public void OnRemoveScript(uint localID, LLUUID itemID)
diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptManager.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptManager.cs
index eed0b86..75ab2aa 100644
--- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptManager.cs
+++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptManager.cs
@@ -72,6 +72,8 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
72 public LLUUID itemID; 72 public LLUUID itemID;
73 public string script; 73 public string script;
74 public LUType Action; 74 public LUType Action;
75 public int startParam;
76 public bool postOnRez;
75 } 77 }
76 78
77 private enum LUType 79 private enum LUType
@@ -223,7 +225,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
223 } 225 }
224 else if (item.Action == LUType.Load) 226 else if (item.Action == LUType.Load)
225 { 227 {
226 _StartScript(item.localID, item.itemID, item.script); 228 _StartScript(item.localID, item.itemID, item.script, item.startParam, item.postOnRez);
227 } 229 }
228 } 230 }
229 } 231 }
@@ -252,7 +254,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
252 /// </summary> 254 /// </summary>
253 /// <param name="itemID"></param> 255 /// <param name="itemID"></param>
254 /// <param name="localID"></param> 256 /// <param name="localID"></param>
255 public void StartScript(uint localID, LLUUID itemID, string Script) 257 public void StartScript(uint localID, LLUUID itemID, string Script, int startParam, bool postOnRez)
256 { 258 {
257 lock (LUQueue) 259 lock (LUQueue)
258 { 260 {
@@ -267,6 +269,8 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
267 ls.itemID = itemID; 269 ls.itemID = itemID;
268 ls.script = Script; 270 ls.script = Script;
269 ls.Action = LUType.Load; 271 ls.Action = LUType.Load;
272 ls.startParam = startParam;
273 ls.postOnRez = postOnRez;
270 LUQueue.Enqueue(ls); 274 LUQueue.Enqueue(ls);
271 } 275 }
272 } 276 }
@@ -282,6 +286,8 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
282 ls.localID = localID; 286 ls.localID = localID;
283 ls.itemID = itemID; 287 ls.itemID = itemID;
284 ls.Action = LUType.Unload; 288 ls.Action = LUType.Unload;
289 ls.startParam = 0;
290 ls.postOnRez = false;
285 lock (LUQueue) 291 lock (LUQueue)
286 { 292 {
287 LUQueue.Enqueue(ls); 293 LUQueue.Enqueue(ls);
@@ -291,7 +297,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
291 // Create a new instance of the compiler (reuse) 297 // Create a new instance of the compiler (reuse)
292 //private Compiler.LSL.Compiler LSLCompiler = new Compiler.LSL.Compiler(); 298 //private Compiler.LSL.Compiler LSLCompiler = new Compiler.LSL.Compiler();
293 299
294 public abstract void _StartScript(uint localID, LLUUID itemID, string Script); 300 public abstract void _StartScript(uint localID, LLUUID itemID, string Script, int startParam, bool postOnRez);
295 public abstract void _StopScript(uint localID, LLUUID itemID); 301 public abstract void _StopScript(uint localID, LLUUID itemID);
296 302
297 303
@@ -423,9 +429,10 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
423 429
424 public void ResetScript(uint localID, LLUUID itemID) 430 public void ResetScript(uint localID, LLUUID itemID)
425 { 431 {
426 string script = GetScript(localID, itemID).Source; 432 IScript s = GetScript(localID, itemID);
433 string script = s.Source;
427 StopScript(localID, itemID); 434 StopScript(localID, itemID);
428 StartScript(localID, itemID, script); 435 StartScript(localID, itemID, script, s.StartParam, false);
429 } 436 }
430 437
431 438
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs
index 008abd0..2d2a06a 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs
@@ -62,7 +62,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
62 // PROVIDE SCRIPT WITH ITS INTERFACE TO OpenSim 62 // PROVIDE SCRIPT WITH ITS INTERFACE TO OpenSim
63 63
64 64
65 public override void _StartScript(uint localID, LLUUID itemID, string Script) 65 public override void _StartScript(uint localID, LLUUID itemID, string Script, int startParam, bool postOnRez)
66 { 66 {
67 m_scriptEngine.Log.Debug("[" + m_scriptEngine.ScriptEngineName + "]: ScriptManager StartScript: localID: " + localID + ", itemID: " + itemID); 67 m_scriptEngine.Log.Debug("[" + m_scriptEngine.ScriptEngineName + "]: ScriptManager StartScript: localID: " + localID + ", itemID: " + itemID);
68 68
@@ -114,6 +114,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
114//#endif 114//#endif
115 115
116 CompiledScript.Source = Script; 116 CompiledScript.Source = Script;
117 CompiledScript.StartParam = startParam;
118
117 // Add it to our script memstruct 119 // Add it to our script memstruct
118 m_scriptEngine.m_ScriptManager.SetScript(localID, itemID, CompiledScript); 120 m_scriptEngine.m_ScriptManager.SetScript(localID, itemID, CompiledScript);
119 121
@@ -130,6 +132,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
130 int eventFlags = m_scriptEngine.m_ScriptManager.GetStateEventFlags(localID, itemID); 132 int eventFlags = m_scriptEngine.m_ScriptManager.GetStateEventFlags(localID, itemID);
131 m_host.SetScriptEvents(itemID, eventFlags); 133 m_host.SetScriptEvents(itemID, eventFlags);
132 m_scriptEngine.m_EventQueueManager.AddToScriptQueue(localID, itemID, "state_entry", EventQueueManager.llDetectNull, new object[] { }); 134 m_scriptEngine.m_EventQueueManager.AddToScriptQueue(localID, itemID, "state_entry", EventQueueManager.llDetectNull, new object[] { });
135 if(postOnRez)
136 {
137 m_scriptEngine.m_EventQueueManager.AddToScriptQueue(localID, itemID, "on_rez", EventQueueManager.llDetectNull, new object[] { new LSL_Types.LSLInteger(startParam) });
138 }
133 } 139 }
134 catch (Exception e) // LEGIT: User Scripting 140 catch (Exception e) // LEGIT: User Scripting
135 { 141 {