aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Common
diff options
context:
space:
mode:
authorCharles Krinke2007-12-18 02:41:34 +0000
committerCharles Krinke2007-12-18 02:41:34 +0000
commit6f389ba4cf54d7e964b98430f7a6601d3ec0c73b (patch)
tree2c092e7bea58052485854d3a3c9e548c790abb5b /OpenSim/Region/ScriptEngine/Common
parent* Fixed a potential race condition with adding Caps handlers (diff)
downloadopensim-SC-6f389ba4cf54d7e964b98430f7a6601d3ec0c73b.zip
opensim-SC-6f389ba4cf54d7e964b98430f7a6601d3ec0c73b.tar.gz
opensim-SC-6f389ba4cf54d7e964b98430f7a6601d3ec0c73b.tar.bz2
opensim-SC-6f389ba4cf54d7e964b98430f7a6601d3ec0c73b.tar.xz
Many Thanks to Alondria for adding:
The list type and a bunch of support functions to LSL Added/ReImplmented: llGetListLength(), llList2Integer(), osList2Double() (note rename), llList2Float(), llList2String(), llList2Key(), llList2Vector(), llList2Rot(), llList2List(), llDeleteSubList(), llGetListEntryType(), llList2CSV(), llCSV2List(), llListInsertList(), llDumpList2String(), Borked Still: llListSort(), llListRandomize(), llList2ListStrided(), llListFindList(), Changed: llHTTPRequest() (Made wrapper of LSL_Types.list->List<string>)
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Common')
-rw-r--r--OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs61
-rw-r--r--OpenSim/Region/ScriptEngine/Common/LSL_Types.cs114
2 files changed, 145 insertions, 30 deletions
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs
index 60e2a0e..34bac59 100644
--- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs
+++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs
@@ -345,41 +345,41 @@ namespace OpenSim.Region.ScriptEngine.Common
345 //wiki: vector llGetCenterOfMass() 345 //wiki: vector llGetCenterOfMass()
346 LSL_Types.Vector3 llGetCenterOfMass(); 346 LSL_Types.Vector3 llGetCenterOfMass();
347 //wiki: list llListSort(list src, integer stride, integer ascending) 347 //wiki: list llListSort(list src, integer stride, integer ascending)
348 List<string> llListSort(List<string> src, int stride, int ascending); 348 LSL_Types.list llListSort(LSL_Types.list src, int stride, int ascending);
349 //integer llGetListLength(list src) 349 //integer llGetListLength(list src)
350 int llGetListLength(List<string> src); 350 int llGetListLength(LSL_Types.list src);
351 //wiki: integer llList2Integer(list src, integer index) 351 //wiki: integer llList2Integer(list src, integer index)
352 int llList2Integer(List<string> src, int index); 352 int llList2Integer(LSL_Types.list src, int index);
353 //wiki: double llList2double(list src, integer index) 353 //wiki: double llList2double(list src, integer index)
354 double llList2double(List<string> src, int index); 354 double osList2Double(LSL_Types.list src, int index);
355 //wiki: string llList2String(list src, integer index) 355 //wiki: string llList2String(list src, integer index)
356 string llList2String(List<string> src, int index); 356 string llList2String(LSL_Types.list src, int index);
357 //wiki: key llList2Key(list src, integer index) 357 //wiki: key llList2Key(list src, integer index)
358 string llList2Key(List<string> src, int index); 358 string llList2Key(LSL_Types.list src, int index);
359 //wiki: vector llList2Vector(list src, integer index) 359 //wiki: vector llList2Vector(list src, integer index)
360 LSL_Types.Vector3 llList2Vector(List<string> src, int index); 360 LSL_Types.Vector3 llList2Vector(LSL_Types.list src, int index);
361 //wiki rotation llList2Rot(list src, integer index) 361 //wiki rotation llList2Rot(list src, integer index)
362 LSL_Types.Quaternion llList2Rot(List<string> src, int index); 362 LSL_Types.Quaternion llList2Rot(LSL_Types.list src, int index);
363 //wiki: list llList2List(list src, integer start, integer end) 363 //wiki: list llList2List(list src, integer start, integer end)
364 List<string> llList2List(List<string> src, int start, int end); 364 LSL_Types.list llList2List(LSL_Types.list src, int start, int end);
365 //wiki: llDeleteSubList(list src, integer start, integer end) 365 //wiki: llDeleteSubList(list src, integer start, integer end)
366 List<string> llDeleteSubList(List<string> src, int start, int end); 366 LSL_Types.list llDeleteSubList(LSL_Types.list src, int start, int end);
367 //wiki: integer llGetListEntryType( list src, integer index ) 367 //wiki: integer llGetListEntryType( list src, integer index )
368 int llGetListEntryType(List<string> src, int index); 368 int llGetListEntryType(LSL_Types.list src, int index);
369 //wiki: string llList2CSV( list src ) 369 //wiki: string llList2CSV( list src )
370 string llList2CSV(List<string> src); 370 string llList2CSV(LSL_Types.list src);
371 //wiki: list llCSV2List( string src ) 371 //wiki: list llCSV2List( string src )
372 List<string> llCSV2List(string src); 372 LSL_Types.list llCSV2List(string src);
373 //wiki: list llListRandomize( list src, integer stride ) 373 //wiki: list llListRandomize( list src, integer stride )
374 List<string> llListRandomize(List<string> src, int stride); 374 LSL_Types.list llListRandomize(LSL_Types.list src, int stride);
375 //wiki: list llList2ListStrided( list src, integer start, integer end, integer stride ) 375 //wiki: list llList2ListStrided( list src, integer start, integer end, integer stride )
376 List<string> llList2ListStrided(List<string> src, int start, int end, int stride); 376 LSL_Types.list llList2ListStrided(LSL_Types.list src, int start, int end, int stride);
377 //wiki: vector llGetRegionCorner( ) 377 //wiki: vector llGetRegionCorner( )
378 LSL_Types.Vector3 llGetRegionCorner(); 378 LSL_Types.Vector3 llGetRegionCorner();
379 //wiki: list llListInsertList( list dest, list src, integer start ) 379 //wiki: list llListInsertList( list dest, list src, integer start )
380 List<string> llListInsertList(List<string> dest, List<string> src, int start); 380 LSL_Types.list llListInsertList(LSL_Types.list dest, LSL_Types.list src, int start);
381 //wiki: integer llListFindList( list src, list test ) 381 //wiki: integer llListFindList( list src, list test )
382 int llListFindList(List<string> src, List<string> test); 382 int llListFindList(LSL_Types.list src, LSL_Types.list test);
383 //wiki: string llGetObjectName() 383 //wiki: string llGetObjectName()
384 string llGetObjectName(); 384 string llGetObjectName();
385 //wiki: llSetObjectName(string name) 385 //wiki: llSetObjectName(string name)
@@ -466,11 +466,12 @@ namespace OpenSim.Region.ScriptEngine.Common
466 void llSetCameraEyeOffset(LSL_Types.Vector3 offset); 466 void llSetCameraEyeOffset(LSL_Types.Vector3 offset);
467 //wiki: llSeteCameraAtOffset(vector offset) 467 //wiki: llSeteCameraAtOffset(vector offset)
468 void llSetCameraAtOffset(LSL_Types.Vector3 offset); 468 void llSetCameraAtOffset(LSL_Types.Vector3 offset);
469 void llDumpList2String(); 469 //
470 string llDumpList2String(LSL_Types.list src, string seperator);
470 //wiki: integer llScriptDanger(vector pos) 471 //wiki: integer llScriptDanger(vector pos)
471 void llScriptDanger(LSL_Types.Vector3 pos); 472 void llScriptDanger(LSL_Types.Vector3 pos);
472 //wiki: llDialog( key avatar, string message, list buttons, integer chat_channel ) 473 //wiki: llDialog( key avatar, string message, list buttons, integer chat_channel )
473 void llDialog(string avatar, string message, List<string> buttons, int chat_channel); 474 void llDialog(string avatar, string message, LSL_Types.list buttons, int chat_channel);
474 //wiki: llVolumeDetect(integer detect) 475 //wiki: llVolumeDetect(integer detect)
475 void llVolumeDetect(int detect); 476 void llVolumeDetect(int detect);
476 //wiki: llResetOtherScript(string name) 477 //wiki: llResetOtherScript(string name)
@@ -494,7 +495,7 @@ namespace OpenSim.Region.ScriptEngine.Common
494 //wiki: string llMD5String(string src, integer nonce) 495 //wiki: string llMD5String(string src, integer nonce)
495 string llMD5String(string src, int nonce); 496 string llMD5String(string src, int nonce);
496 //wiki: llSetPrimitiveParams( list rules ) 497 //wiki: llSetPrimitiveParams( list rules )
497 void llSetPrimitiveParams(List<string> rules); 498 void llSetPrimitiveParams(LSL_Types.list rules);
498 //wiki: string llStringToBase64(string str) 499 //wiki: string llStringToBase64(string str)
499 string llStringToBase64(string str); 500 string llStringToBase64(string str);
500 //wiki: string llBase64ToString(string str) 501 //wiki: string llBase64ToString(string str)
@@ -508,7 +509,7 @@ namespace OpenSim.Region.ScriptEngine.Common
508 //wiki: double llLog(double val) 509 //wiki: double llLog(double val)
509 double llLog(double val); 510 double llLog(double val);
510 //wiki: list llGetAnimationList( key id ) 511 //wiki: list llGetAnimationList( key id )
511 List<string> llGetAnimationList(string id); 512 LSL_Types.list llGetAnimationList(string id);
512 //wiki: llSetParcelMusicURL(string url) 513 //wiki: llSetParcelMusicURL(string url)
513 void llSetParcelMusicURL(string url); 514 void llSetParcelMusicURL(string url);
514 //wiki: vector llGetRootPosition() 515 //wiki: vector llGetRootPosition()
@@ -530,7 +531,7 @@ namespace OpenSim.Region.ScriptEngine.Common
530 //wiki: key llGetNumberOfNotecardLines(string name) 531 //wiki: key llGetNumberOfNotecardLines(string name)
531 string llGetNumberOfNotecardLines(string name); 532 string llGetNumberOfNotecardLines(string name);
532 //wiki: list llGetBoundingBox( key object ) 533 //wiki: list llGetBoundingBox( key object )
533 List<string> llGetBoundingBox(string obj); 534 LSL_Types.list llGetBoundingBox(string obj);
534 //wiki: vector llGetGeometricCenter() 535 //wiki: vector llGetGeometricCenter()
535 LSL_Types.Vector3 llGetGeometricCenter(); 536 LSL_Types.Vector3 llGetGeometricCenter();
536 void llGetPrimitiveParams(); 537 void llGetPrimitiveParams();
@@ -545,7 +546,7 @@ namespace OpenSim.Region.ScriptEngine.Common
545 //llSetLocalRot(rotation rot) 546 //llSetLocalRot(rotation rot)
546 void llSetLocalRot(LSL_Types.Quaternion rot); 547 void llSetLocalRot(LSL_Types.Quaternion rot);
547 //wiki: list llParseStringKeepNulls( string src, list separators, list spacers ) 548 //wiki: list llParseStringKeepNulls( string src, list separators, list spacers )
548 List<string> llParseStringKeepNulls(string src, List<string> seperators, List<string> spacers); 549 LSL_Types.list llParseStringKeepNulls(string src, LSL_Types.list seperators, LSL_Types.list spacers);
549 //wiki: llRezAtRoot(string inventory, vector position, vector velocity, rotation rot, integer param) 550 //wiki: llRezAtRoot(string inventory, vector position, vector velocity, rotation rot, integer param)
550 void llRezAtRoot(string inventory, LSL_Types.Vector3 position, LSL_Types.Vector3 velocity, 551 void llRezAtRoot(string inventory, LSL_Types.Vector3 position, LSL_Types.Vector3 velocity,
551 LSL_Types.Quaternion rot, int param); 552 LSL_Types.Quaternion rot, int param);
@@ -572,14 +573,14 @@ namespace OpenSim.Region.ScriptEngine.Common
572 //wiki: llLoadURL(key avatar_id, string message, string url) 573 //wiki: llLoadURL(key avatar_id, string message, string url)
573 void llLoadURL(string avatar_id, string message, string url); 574 void llLoadURL(string avatar_id, string message, string url);
574 //wiki: llParcelMediaCommandList( list commandList ) 575 //wiki: llParcelMediaCommandList( list commandList )
575 void llParcelMediaCommandList(List<string> commandList); 576 void llParcelMediaCommandList(LSL_Types.list commandList);
576 void llParcelMediaQuery(); 577 void llParcelMediaQuery();
577 //wiki integer llModPow(integer a, integer b, integer c) 578 //wiki integer llModPow(integer a, integer b, integer c)
578 int llModPow(int a, int b, int c); 579 int llModPow(int a, int b, int c);
579 //wiki: integer llGetInventoryType(string name) 580 //wiki: integer llGetInventoryType(string name)
580 int llGetInventoryType(string name); 581 int llGetInventoryType(string name);
581 //wiki: llSetPayPrice( integer price, list quick_pay_buttons ) 582 //wiki: llSetPayPrice( integer price, list quick_pay_buttons )
582 void llSetPayPrice(int price, List<string> quick_pay_buttons); 583 void llSetPayPrice(int price, LSL_Types.list quick_pay_buttons);
583 //wiki: vector llGetCameraPos() 584 //wiki: vector llGetCameraPos()
584 LSL_Types.Vector3 llGetCameraPos(); 585 LSL_Types.Vector3 llGetCameraPos();
585 //wiki rotation llGetCameraRot() 586 //wiki rotation llGetCameraRot()
@@ -601,11 +602,11 @@ namespace OpenSim.Region.ScriptEngine.Common
601 //wiki: llRemoveFromLandBanList(key avatar) 602 //wiki: llRemoveFromLandBanList(key avatar)
602 void llRemoveFromLandBanList(string avatar); 603 void llRemoveFromLandBanList(string avatar);
603 //wiki: llSetCameraParams( list rules ) 604 //wiki: llSetCameraParams( list rules )
604 void llSetCameraParams(List<string> rules); 605 void llSetCameraParams(LSL_Types.list rules);
605 //wiki: llClearCameraParams() 606 //wiki: llClearCameraParams()
606 void llClearCameraParams(); 607 void llClearCameraParams();
607 //wiki: double llListStatistics( integer operation, list src ) 608 //wiki: double llListStatistics( integer operation, list src )
608 double llListStatistics(int operation, List<string> src); 609 double llListStatistics(int operation, LSL_Types.list src);
609 //wiki: integer llGetUnixTime() 610 //wiki: integer llGetUnixTime()
610 int llGetUnixTime(); 611 int llGetUnixTime();
611 //wiki: integer llGetParcelFlags(vector pos) 612 //wiki: integer llGetParcelFlags(vector pos)
@@ -614,7 +615,7 @@ namespace OpenSim.Region.ScriptEngine.Common
614 int llGetRegionFlags(); 615 int llGetRegionFlags();
615 //wiki: string llXorBase64StringsCorrect(string str1, string str2) 616 //wiki: string llXorBase64StringsCorrect(string str1, string str2)
616 string llXorBase64StringsCorrect(string str1, string str2); 617 string llXorBase64StringsCorrect(string str1, string str2);
617 string llHTTPRequest(string url, List<string> parameters, string body); 618 string llHTTPRequest(string url, LSL_Types.list parameters, string body);
618 //wiki: llResetLandBanList() 619 //wiki: llResetLandBanList()
619 void llResetLandBanList(); 620 void llResetLandBanList();
620 //wiki: llResetLandPassList() 621 //wiki: llResetLandPassList()
@@ -622,13 +623,13 @@ namespace OpenSim.Region.ScriptEngine.Common
622 //wiki integer llGetParcelPrimCount(vector pos, integer category, integer sim_wide) 623 //wiki integer llGetParcelPrimCount(vector pos, integer category, integer sim_wide)
623 int llGetParcelPrimCount(LSL_Types.Vector3 pos, int category, int sim_wide); 624 int llGetParcelPrimCount(LSL_Types.Vector3 pos, int category, int sim_wide);
624 //wiki: list llGetParcelPrimOwners( vector pos ) 625 //wiki: list llGetParcelPrimOwners( vector pos )
625 List<string> llGetParcelPrimOwners(LSL_Types.Vector3 pos); 626 LSL_Types.list llGetParcelPrimOwners(LSL_Types.Vector3 pos);
626 //wiki: integer llGetObjectPrimCount(key object_id) 627 //wiki: integer llGetObjectPrimCount(key object_id)
627 int llGetObjectPrimCount(string object_id); 628 int llGetObjectPrimCount(string object_id);
628 //wiki: integer llGetParcelMaxPrims( vector pos, integer sim_wide ) 629 //wiki: integer llGetParcelMaxPrims( vector pos, integer sim_wide )
629 int llGetParcelMaxPrims(LSL_Types.Vector3 pos, int sim_wide); 630 int llGetParcelMaxPrims(LSL_Types.Vector3 pos, int sim_wide);
630 //wiki list llGetParcelDetails(vector pos, list params) 631 //wiki list llGetParcelDetails(vector pos, list params)
631 List<string> llGetParcelDetails(LSL_Types.Vector3 pos, List<string> param); 632 LSL_Types.list llGetParcelDetails(LSL_Types.Vector3 pos, LSL_Types.list param);
632 633
633 //OpenSim functions 634 //OpenSim functions
634 string osSetDynamicTextureURL(string dynamicID, string contentType, string url, string extraParams, int timer); 635 string osSetDynamicTextureURL(string dynamicID, string contentType, string url, string extraParams, int timer);
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs
index e0cf1e5..136b613 100644
--- a/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs
+++ b/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs
@@ -252,5 +252,119 @@ namespace OpenSim.Region.ScriptEngine.Common
252 return c; 252 return c;
253 } 253 }
254 } 254 }
255
256 [Serializable]
257 public class list
258 {
259 private object[] m_data;
260 public list(params object[] args)
261 {
262 m_data = new object[args.Length];
263 m_data = args;
264 }
265 public int Length
266 {
267 get { return m_data.Length; }
268 }
269 public object[] Data
270 {
271 get { return m_data; }
272 }
273 public static list operator +(list a, list b)
274 {
275 object[] tmp;
276 tmp = new object[a.Length + b.Length];
277 a.Data.CopyTo(tmp, 0);
278 b.Data.CopyTo(tmp, a.Length);
279 return new list(tmp);
280 }
281 public list GetSublist(int start, int end)
282 {
283 Console.WriteLine("GetSublist(" + start.ToString() + "," + end.ToString() + ")");
284 object[] ret;
285 // Take care of neg start or end's
286 if (start < 0)
287 {
288 start = m_data.Length + start;
289 }
290 if (end < 0)
291 {
292 end = m_data.Length + end;
293 }
294
295 // Case start < end
296
297 if (start <= end)
298 {
299 if (start >= m_data.Length)
300 {
301 return new list();
302 }
303 if (end >= m_data.Length)
304 {
305 end = m_data.Length - 1;
306 }
307 ret = new object[end - start + 1];
308 Array.Copy(m_data, start, ret, 0, end - start + 1);
309 return new list(ret);
310 }
311 else
312 {
313 if (start >= m_data.Length)
314 {
315 return this.GetSublist(0, end);
316 }
317 if (end >= m_data.Length)
318 {
319 return new list();
320 }
321 // end < start
322 //ret = new object[m_data.Length - Math.Abs(end - start + 1)];
323 //Array.Copy(m_data, 0, ret, m_data.Length - start, end + 1);
324 //Array.Copy(m_data, start, ret, 0, m_data.Length - start);
325 return this.GetSublist(0, end) + this.GetSublist(start, this.Data.Length - 1);
326 //return new list(ret);
327 }
328 }
329
330 public string ToPrettyString()
331 {
332 string output;
333 if (m_data.Length == 0)
334 {
335 return "[]";
336 }
337 output = "[";
338 foreach (object o in m_data)
339 {
340 if (o.GetType().ToString() == "System.String")
341 {
342 output = output + "\"" + o + "\", ";
343 }
344 else
345 {
346 output = output + o.ToString() + ", ";
347 }
348 }
349 output = output.Substring(0, output.Length - 2);
350 output = output + "]";
351 return output;
352 }
353 public override string ToString()
354 {
355 string output;
356 output = "";
357 if (m_data.Length == 0)
358 {
359 return "";
360 }
361 foreach (object o in m_data)
362 {
363 output = output + o.ToString();
364 }
365 return output;
366 }
367 }
255 } 368 }
369
256} 370}