aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Shared
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs271
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs2
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs3
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs36
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs15
5 files changed, 303 insertions, 24 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 236458c..a711ebf 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -2111,7 +2111,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
2111 return; 2111 return;
2112 2112
2113 // Capped movemment if distance > 10m (http://wiki.secondlife.com/wiki/LlSetPos) 2113 // Capped movemment if distance > 10m (http://wiki.secondlife.com/wiki/LlSetPos)
2114 LSL_Vector currentPos = llGetLocalPos(); 2114 LSL_Vector currentPos = GetPartLocalPos(part);
2115 2115
2116 float ground = World.GetGroundHeight((float)targetPos.x, (float)targetPos.y); 2116 float ground = World.GetGroundHeight((float)targetPos.x, (float)targetPos.y);
2117 bool disable_underground_movement = m_ScriptEngine.Config.GetBoolean("DisableUndergroundMovement", true); 2117 bool disable_underground_movement = m_ScriptEngine.Config.GetBoolean("DisableUndergroundMovement", true);
@@ -2144,33 +2144,23 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
2144 public LSL_Vector llGetLocalPos() 2144 public LSL_Vector llGetLocalPos()
2145 { 2145 {
2146 m_host.AddScriptLPS(1); 2146 m_host.AddScriptLPS(1);
2147 if (m_host.IsAttachment == true) { 2147 return GetPartLocalPos(m_host);
2148 if (m_host.IsRoot == true) 2148 }
2149 {
2150 return new LSL_Vector(m_host.AbsolutePosition.X,
2151 m_host.AbsolutePosition.Y,
2152 m_host.AbsolutePosition.Z);
2153
2154 }
2155 else
2156 {
2157 return new LSL_Vector(m_host.OffsetPosition.X,
2158 m_host.OffsetPosition.Y,
2159 m_host.OffsetPosition.Z);
2160 }
2161 }
2162 2149
2163 if (m_host.ParentID != 0) 2150 protected LSL_Vector GetPartLocalPos(SceneObjectPart part)
2151 {
2152 m_host.AddScriptLPS(1);
2153 if (part.ParentID != 0)
2164 { 2154 {
2165 return new LSL_Vector(m_host.OffsetPosition.X, 2155 return new LSL_Vector(part.OffsetPosition.X,
2166 m_host.OffsetPosition.Y, 2156 part.OffsetPosition.Y,
2167 m_host.OffsetPosition.Z); 2157 part.OffsetPosition.Z);
2168 } 2158 }
2169 else 2159 else
2170 { 2160 {
2171 return new LSL_Vector(m_host.AbsolutePosition.X, 2161 return new LSL_Vector(part.AbsolutePosition.X,
2172 m_host.AbsolutePosition.Y, 2162 part.AbsolutePosition.Y,
2173 m_host.AbsolutePosition.Z); 2163 part.AbsolutePosition.Z);
2174 } 2164 }
2175 } 2165 }
2176 2166
@@ -8300,6 +8290,241 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
8300 return res; 8290 return res;
8301 } 8291 }
8302 8292
8293 public LSL_List llGetPrimMediaParams(int face, LSL_List rules)
8294 {
8295 m_host.AddScriptLPS(1);
8296 ScriptSleep(1000);
8297
8298 // LSL Spec http://wiki.secondlife.com/wiki/LlGetPrimMediaParams says to fail silently if face is invalid
8299 // TODO: Need to correctly handle case where a face has no media (which gives back an empty list).
8300 // Assuming silently fail means give back an empty list. Ideally, need to check this.
8301 if (face < 0 || face > m_host.GetNumberOfSides() - 1)
8302 return new LSL_List();
8303
8304 return GetPrimMediaParams(face, rules);
8305 }
8306
8307 private LSL_List GetPrimMediaParams(int face, LSL_List rules)
8308 {
8309 IMoapModule module = m_ScriptEngine.World.RequestModuleInterface<IMoapModule>();
8310 if (null == module)
8311 throw new Exception("Media on a prim functions not available");
8312
8313 MediaEntry me = module.GetMediaEntry(m_host, face);
8314
8315 // As per http://wiki.secondlife.com/wiki/LlGetPrimMediaParams
8316 if (null == me)
8317 return new LSL_List();
8318
8319 LSL_List res = new LSL_List();
8320
8321 for (int i = 0; i < rules.Length; i++)
8322 {
8323 int code = (int)rules.GetLSLIntegerItem(i);
8324
8325 switch (code)
8326 {
8327 case ScriptBaseClass.PRIM_MEDIA_ALT_IMAGE_ENABLE:
8328 // Not implemented
8329 res.Add(new LSL_Integer(0));
8330 break;
8331
8332 case ScriptBaseClass.PRIM_MEDIA_CONTROLS:
8333 if (me.Controls == MediaControls.Standard)
8334 res.Add(new LSL_Integer(ScriptBaseClass.PRIM_MEDIA_CONTROLS_STANDARD));
8335 else
8336 res.Add(new LSL_Integer(ScriptBaseClass.PRIM_MEDIA_CONTROLS_MINI));
8337 break;
8338
8339 case ScriptBaseClass.PRIM_MEDIA_CURRENT_URL:
8340 res.Add(new LSL_String(me.CurrentURL));
8341 break;
8342
8343 case ScriptBaseClass.PRIM_MEDIA_HOME_URL:
8344 res.Add(new LSL_String(me.HomeURL));
8345 break;
8346
8347 case ScriptBaseClass.PRIM_MEDIA_AUTO_LOOP:
8348 res.Add(me.AutoLoop ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE);
8349 break;
8350
8351 case ScriptBaseClass.PRIM_MEDIA_AUTO_PLAY:
8352 res.Add(me.AutoPlay ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE);
8353 break;
8354
8355 case ScriptBaseClass.PRIM_MEDIA_AUTO_SCALE:
8356 res.Add(me.AutoScale ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE);
8357 break;
8358
8359 case ScriptBaseClass.PRIM_MEDIA_AUTO_ZOOM:
8360 res.Add(me.AutoZoom ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE);
8361 break;
8362
8363 case ScriptBaseClass.PRIM_MEDIA_FIRST_CLICK_INTERACT:
8364 res.Add(me.InteractOnFirstClick ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE);
8365 break;
8366
8367 case ScriptBaseClass.PRIM_MEDIA_WIDTH_PIXELS:
8368 res.Add(new LSL_Integer(me.Width));
8369 break;
8370
8371 case ScriptBaseClass.PRIM_MEDIA_HEIGHT_PIXELS:
8372 res.Add(new LSL_Integer(me.Height));
8373 break;
8374
8375 case ScriptBaseClass.PRIM_MEDIA_WHITELIST_ENABLE:
8376 res.Add(me.EnableWhiteList ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE);
8377 break;
8378
8379 case ScriptBaseClass.PRIM_MEDIA_WHITELIST:
8380 string[] urls = (string[])me.WhiteList.Clone();
8381
8382 for (int j = 0; j < urls.Length; j++)
8383 urls[j] = Uri.EscapeDataString(urls[j]);
8384
8385 res.Add(new LSL_String(string.Join(", ", urls)));
8386 break;
8387
8388 case ScriptBaseClass.PRIM_MEDIA_PERMS_INTERACT:
8389 res.Add(new LSL_Integer((int)me.InteractPermissions));
8390 break;
8391
8392 case ScriptBaseClass.PRIM_MEDIA_PERMS_CONTROL:
8393 res.Add(new LSL_Integer((int)me.ControlPermissions));
8394 break;
8395 }
8396 }
8397
8398 return res;
8399 }
8400
8401 public LSL_Integer llSetPrimMediaParams(int face, LSL_List rules)
8402 {
8403 m_host.AddScriptLPS(1);
8404 ScriptSleep(1000);
8405
8406 // LSL Spec http://wiki.secondlife.com/wiki/LlSetPrimMediaParams says to fail silently if face is invalid
8407 // Assuming silently fail means sending back LSL_STATUS_OK. Ideally, need to check this.
8408 // Don't perform the media check directly
8409 if (face < 0 || face > m_host.GetNumberOfSides() - 1)
8410 return ScriptBaseClass.LSL_STATUS_OK;
8411
8412 return SetPrimMediaParams(face, rules);
8413 }
8414
8415 private LSL_Integer SetPrimMediaParams(int face, LSL_List rules)
8416 {
8417 IMoapModule module = m_ScriptEngine.World.RequestModuleInterface<IMoapModule>();
8418 if (null == module)
8419 throw new Exception("Media on a prim functions not available");
8420
8421 MediaEntry me = module.GetMediaEntry(m_host, face);
8422 if (null == me)
8423 me = new MediaEntry();
8424
8425 int i = 0;
8426
8427 while (i < rules.Length - 1)
8428 {
8429 int code = rules.GetLSLIntegerItem(i++);
8430
8431 switch (code)
8432 {
8433 case ScriptBaseClass.PRIM_MEDIA_ALT_IMAGE_ENABLE:
8434 me.EnableAlterntiveImage = (rules.GetLSLIntegerItem(i++) != 0 ? true : false);
8435 break;
8436
8437 case ScriptBaseClass.PRIM_MEDIA_CONTROLS:
8438 int v = rules.GetLSLIntegerItem(i++);
8439 if (ScriptBaseClass.PRIM_MEDIA_CONTROLS_STANDARD == v)
8440 me.Controls = MediaControls.Standard;
8441 else
8442 me.Controls = MediaControls.Mini;
8443 break;
8444
8445 case ScriptBaseClass.PRIM_MEDIA_CURRENT_URL:
8446 me.CurrentURL = rules.GetLSLStringItem(i++);
8447 break;
8448
8449 case ScriptBaseClass.PRIM_MEDIA_HOME_URL:
8450 me.HomeURL = rules.GetLSLStringItem(i++);
8451 break;
8452
8453 case ScriptBaseClass.PRIM_MEDIA_AUTO_LOOP:
8454 me.AutoLoop = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false);
8455 break;
8456
8457 case ScriptBaseClass.PRIM_MEDIA_AUTO_PLAY:
8458 me.AutoPlay = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false);
8459 break;
8460
8461 case ScriptBaseClass.PRIM_MEDIA_AUTO_SCALE:
8462 me.AutoScale = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false);
8463 break;
8464
8465 case ScriptBaseClass.PRIM_MEDIA_AUTO_ZOOM:
8466 me.AutoZoom = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false);
8467 break;
8468
8469 case ScriptBaseClass.PRIM_MEDIA_FIRST_CLICK_INTERACT:
8470 me.InteractOnFirstClick = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false);
8471 break;
8472
8473 case ScriptBaseClass.PRIM_MEDIA_WIDTH_PIXELS:
8474 me.Width = (int)rules.GetLSLIntegerItem(i++);
8475 break;
8476
8477 case ScriptBaseClass.PRIM_MEDIA_HEIGHT_PIXELS:
8478 me.Height = (int)rules.GetLSLIntegerItem(i++);
8479 break;
8480
8481 case ScriptBaseClass.PRIM_MEDIA_WHITELIST_ENABLE:
8482 me.EnableWhiteList = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false);
8483 break;
8484
8485 case ScriptBaseClass.PRIM_MEDIA_WHITELIST:
8486 string[] rawWhiteListUrls = rules.GetLSLStringItem(i++).ToString().Split(new char[] { ',' });
8487 List<string> whiteListUrls = new List<string>();
8488 Array.ForEach(
8489 rawWhiteListUrls, delegate(string rawUrl) { whiteListUrls.Add(rawUrl.Trim()); });
8490 me.WhiteList = whiteListUrls.ToArray();
8491 break;
8492
8493 case ScriptBaseClass.PRIM_MEDIA_PERMS_INTERACT:
8494 me.InteractPermissions = (MediaPermission)(byte)(int)rules.GetLSLIntegerItem(i++);
8495 break;
8496
8497 case ScriptBaseClass.PRIM_MEDIA_PERMS_CONTROL:
8498 me.ControlPermissions = (MediaPermission)(byte)(int)rules.GetLSLIntegerItem(i++);
8499 break;
8500 }
8501 }
8502
8503 module.SetMediaEntry(m_host, face, me);
8504
8505 return ScriptBaseClass.LSL_STATUS_OK;
8506 }
8507
8508 public LSL_Integer llClearPrimMedia(LSL_Integer face)
8509 {
8510 m_host.AddScriptLPS(1);
8511 ScriptSleep(1000);
8512
8513 // LSL Spec http://wiki.secondlife.com/wiki/LlClearPrimMedia says to fail silently if face is invalid
8514 // Assuming silently fail means sending back LSL_STATUS_OK. Ideally, need to check this.
8515 // FIXME: Don't perform the media check directly
8516 if (face < 0 || face > m_host.GetNumberOfSides() - 1)
8517 return ScriptBaseClass.LSL_STATUS_OK;
8518
8519 IMoapModule module = m_ScriptEngine.World.RequestModuleInterface<IMoapModule>();
8520 if (null == module)
8521 throw new Exception("Media on a prim functions not available");
8522
8523 module.ClearMediaEntry(m_host, face);
8524
8525 return ScriptBaseClass.LSL_STATUS_OK;
8526 }
8527
8303 // <remarks> 8528 // <remarks>
8304 // <para> 8529 // <para>
8305 // The .NET definition of base 64 is: 8530 // The .NET definition of base 64 is:
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
index 1fa8c30..fffe65c 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
@@ -1,4 +1,4 @@
1/* 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/ 2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs
index cba46a3..561e3b3 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs
@@ -62,6 +62,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
62 void llBreakLink(int linknum); 62 void llBreakLink(int linknum);
63 LSL_Integer llCeil(double f); 63 LSL_Integer llCeil(double f);
64 void llClearCameraParams(); 64 void llClearCameraParams();
65 LSL_Integer llClearPrimMedia(LSL_Integer face);
65 void llCloseRemoteDataChannel(string channel); 66 void llCloseRemoteDataChannel(string channel);
66 LSL_Float llCloud(LSL_Vector offset); 67 LSL_Float llCloud(LSL_Vector offset);
67 void llCollisionFilter(string name, string id, int accept); 68 void llCollisionFilter(string name, string id, int accept);
@@ -162,6 +163,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
162 LSL_List llGetParcelPrimOwners(LSL_Vector pos); 163 LSL_List llGetParcelPrimOwners(LSL_Vector pos);
163 LSL_Integer llGetPermissions(); 164 LSL_Integer llGetPermissions();
164 LSL_Key llGetPermissionsKey(); 165 LSL_Key llGetPermissionsKey();
166 LSL_List llGetPrimMediaParams(int face, LSL_List rules);
165 LSL_Vector llGetPos(); 167 LSL_Vector llGetPos();
166 LSL_List llGetPrimitiveParams(LSL_List rules); 168 LSL_List llGetPrimitiveParams(LSL_List rules);
167 LSL_Integer llGetRegionAgentCount(); 169 LSL_Integer llGetRegionAgentCount();
@@ -332,6 +334,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
332 void llSetParcelMusicURL(string url); 334 void llSetParcelMusicURL(string url);
333 void llSetPayPrice(int price, LSL_List quick_pay_buttons); 335 void llSetPayPrice(int price, LSL_List quick_pay_buttons);
334 void llSetPos(LSL_Vector pos); 336 void llSetPos(LSL_Vector pos);
337 LSL_Integer llSetPrimMediaParams(int face, LSL_List rules);
335 void llSetPrimitiveParams(LSL_List rules); 338 void llSetPrimitiveParams(LSL_List rules);
336 void llSetLinkPrimitiveParamsFast(int linknum, LSL_List rules); 339 void llSetLinkPrimitiveParamsFast(int linknum, LSL_List rules);
337 void llSetPrimURL(string url); 340 void llSetPrimURL(string url);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
index 69f48c9..5da6bb9 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
@@ -277,6 +277,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
277 public const int CHANGED_TELEPORT = 512; 277 public const int CHANGED_TELEPORT = 512;
278 public const int CHANGED_REGION_RESTART = 1024; 278 public const int CHANGED_REGION_RESTART = 1024;
279 public const int CHANGED_REGION_START = 1024; //LL Changed the constant from CHANGED_REGION_RESTART 279 public const int CHANGED_REGION_START = 1024; //LL Changed the constant from CHANGED_REGION_RESTART
280 public const int CHANGED_MEDIA = 2048;
280 public const int CHANGED_ANIMATION = 16384; 281 public const int CHANGED_ANIMATION = 16384;
281 public const int TYPE_INVALID = 0; 282 public const int TYPE_INVALID = 0;
282 public const int TYPE_INTEGER = 1; 283 public const int TYPE_INTEGER = 1;
@@ -518,6 +519,41 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
518 public const int TOUCH_INVALID_FACE = -1; 519 public const int TOUCH_INVALID_FACE = -1;
519 public static readonly vector TOUCH_INVALID_TEXCOORD = new vector(-1.0, -1.0, 0.0); 520 public static readonly vector TOUCH_INVALID_TEXCOORD = new vector(-1.0, -1.0, 0.0);
520 public static readonly vector TOUCH_INVALID_VECTOR = ZERO_VECTOR; 521 public static readonly vector TOUCH_INVALID_VECTOR = ZERO_VECTOR;
522
523 // constants for llGetPrimMediaParams/llSetPrimMediaParams
524 public const int PRIM_MEDIA_ALT_IMAGE_ENABLE = 0;
525 public const int PRIM_MEDIA_CONTROLS = 1;
526 public const int PRIM_MEDIA_CURRENT_URL = 2;
527 public const int PRIM_MEDIA_HOME_URL = 3;
528 public const int PRIM_MEDIA_AUTO_LOOP = 4;
529 public const int PRIM_MEDIA_AUTO_PLAY = 5;
530 public const int PRIM_MEDIA_AUTO_SCALE = 6;
531 public const int PRIM_MEDIA_AUTO_ZOOM = 7;
532 public const int PRIM_MEDIA_FIRST_CLICK_INTERACT = 8;
533 public const int PRIM_MEDIA_WIDTH_PIXELS = 9;
534 public const int PRIM_MEDIA_HEIGHT_PIXELS = 10;
535 public const int PRIM_MEDIA_WHITELIST_ENABLE = 11;
536 public const int PRIM_MEDIA_WHITELIST = 12;
537 public const int PRIM_MEDIA_PERMS_INTERACT = 13;
538 public const int PRIM_MEDIA_PERMS_CONTROL = 14;
539
540 public const int PRIM_MEDIA_CONTROLS_STANDARD = 0;
541 public const int PRIM_MEDIA_CONTROLS_MINI = 1;
542
543 public const int PRIM_MEDIA_PERM_NONE = 0;
544 public const int PRIM_MEDIA_PERM_OWNER = 1;
545 public const int PRIM_MEDIA_PERM_GROUP = 2;
546 public const int PRIM_MEDIA_PERM_ANYONE = 4;
547
548 // extra constants for llSetPrimMediaParams
549 public static readonly LSLInteger LSL_STATUS_OK = new LSLInteger(0);
550 public static readonly LSLInteger LSL_STATUS_MALFORMED_PARAMS = new LSLInteger(1000);
551 public static readonly LSLInteger LSL_STATUS_TYPE_MISMATCH = new LSLInteger(1001);
552 public static readonly LSLInteger LSL_STATUS_BOUNDS_ERROR = new LSLInteger(1002);
553 public static readonly LSLInteger LSL_STATUS_NOT_FOUND = new LSLInteger(1003);
554 public static readonly LSLInteger LSL_STATUS_NOT_SUPPORTED = new LSLInteger(1004);
555 public static readonly LSLInteger LSL_STATUS_INTERNAL_ERROR = new LSLInteger(1999);
556 public static readonly LSLInteger LSL_STATUS_WHITELIST_FAILED = new LSLInteger(2001);
521 557
522 // Constants for default textures 558 // Constants for default textures
523 public const string TEXTURE_BLANK = "5748decc-f629-461c-9a36-a35a221fe21f"; 559 public const string TEXTURE_BLANK = "5748decc-f629-461c-9a36-a35a221fe21f";
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs
index e86d08c..f14967e 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs
@@ -1834,5 +1834,20 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
1834 { 1834 {
1835 return m_LSL_Functions.llXorBase64StringsCorrect(str1, str2); 1835 return m_LSL_Functions.llXorBase64StringsCorrect(str1, str2);
1836 } 1836 }
1837
1838 public LSL_List llGetPrimMediaParams(int face, LSL_List rules)
1839 {
1840 return m_LSL_Functions.llGetPrimMediaParams(face, rules);
1841 }
1842
1843 public LSL_Integer llSetPrimMediaParams(int face, LSL_List rules)
1844 {
1845 return m_LSL_Functions.llSetPrimMediaParams(face, rules);
1846 }
1847
1848 public LSL_Integer llClearPrimMedia(LSL_Integer face)
1849 {
1850 return m_LSL_Functions.llClearPrimMedia(face);
1851 }
1837 } 1852 }
1838} 1853}