aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs45
1 files changed, 12 insertions, 33 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 25d8c54..f126561 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -7400,7 +7400,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7400 { 7400 {
7401 m_host.AddScriptLPS(1); 7401 m_host.AddScriptLPS(1);
7402 7402
7403 setLinkPrimParams(ScriptBaseClass.LINK_THIS, rules, "llSetPrimitiveParams"); 7403 SetLinkPrimParams(ScriptBaseClass.LINK_THIS, rules, "llSetPrimitiveParams");
7404 7404
7405 ScriptSleep(200); 7405 ScriptSleep(200);
7406 } 7406 }
@@ -7409,7 +7409,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7409 { 7409 {
7410 m_host.AddScriptLPS(1); 7410 m_host.AddScriptLPS(1);
7411 7411
7412 setLinkPrimParams(linknumber, rules, "llSetLinkPrimitiveParams"); 7412 SetLinkPrimParams(linknumber, rules, "llSetLinkPrimitiveParams");
7413 7413
7414 ScriptSleep(200); 7414 ScriptSleep(200);
7415 } 7415 }
@@ -7418,13 +7418,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7418 { 7418 {
7419 m_host.AddScriptLPS(1); 7419 m_host.AddScriptLPS(1);
7420 7420
7421 setLinkPrimParams(linknumber, rules, "llSetLinkPrimitiveParamsFast"); 7421 SetLinkPrimParams(linknumber, rules, "llSetLinkPrimitiveParamsFast");
7422 } 7422 }
7423 7423
7424 protected void setLinkPrimParams(int linknumber, LSL_List rules, string originFunc) 7424 protected void SetLinkPrimParams(int linknumber, LSL_List rules, string originFunc)
7425 { 7425 {
7426 List<ISceneEntity> entities = GetLinkEntities(linknumber); 7426 SetEntityParams(GetLinkEntities(linknumber), rules, originFunc);
7427 }
7427 7428
7429 protected void SetEntityParams(List<ISceneEntity> entities, LSL_List rules, string originFunc)
7430 {
7428 LSL_List remaining = null; 7431 LSL_List remaining = null;
7429 uint rulesParsed = 0; 7432 uint rulesParsed = 0;
7430 7433
@@ -7438,7 +7441,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7438 7441
7439 while (remaining != null && remaining.Length > 2) 7442 while (remaining != null && remaining.Length > 2)
7440 { 7443 {
7441 linknumber = remaining.GetLSLIntegerItem(0); 7444 int linknumber = remaining.GetLSLIntegerItem(0);
7442 rules = remaining.GetSublist(1, -1); 7445 rules = remaining.GetSublist(1, -1);
7443 entities = GetLinkEntities(linknumber); 7446 entities = GetLinkEntities(linknumber);
7444 7447
@@ -11530,41 +11533,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
11530 if (obj.OwnerID != m_host.OwnerID) 11533 if (obj.OwnerID != m_host.OwnerID)
11531 return; 11534 return;
11532 11535
11533 uint rulesParsed = 0; 11536 SetEntityParams(new List<ISceneEntity>() { obj }, rules, originFunc);
11534 LSL_List remaining = SetPrimParams(obj, rules, originFunc, ref rulesParsed);
11535
11536 while ((object)remaining != null && remaining.Length > 2)
11537 {
11538 LSL_Integer newLink = remaining.GetLSLIntegerItem(0);
11539 LSL_List newrules = remaining.GetSublist(1, -1);
11540 foreach(SceneObjectPart part in GetLinkParts(obj, newLink)){
11541 remaining = SetPrimParams(part, newrules, originFunc, ref rulesParsed);
11542 }
11543 }
11544 } 11537 }
11545 11538
11546 public LSL_List GetPrimitiveParamsEx(LSL_Key prim, LSL_List rules) 11539 public LSL_List GetPrimitiveParamsEx(LSL_Key prim, LSL_List rules)
11547 { 11540 {
11548 SceneObjectPart obj = World.GetSceneObjectPart(new UUID(prim)); 11541 SceneObjectPart obj = World.GetSceneObjectPart(new UUID(prim));
11549 11542
11550 LSL_List result = new LSL_List();
11551
11552 if (obj != null && obj.OwnerID == m_host.OwnerID) 11543 if (obj != null && obj.OwnerID == m_host.OwnerID)
11553 { 11544 return GetEntityParams(obj, rules);
11554 LSL_List remaining = GetPrimParams(obj, rules, ref result);
11555
11556 while (remaining != null && remaining.Length > 2)
11557 {
11558 int linknumber = remaining.GetLSLIntegerItem(0);
11559 rules = remaining.GetSublist(1, -1);
11560 List<SceneObjectPart> parts = GetLinkParts(linknumber);
11561 11545
11562 foreach (SceneObjectPart part in parts) 11546 return new LSL_List();
11563 remaining = GetPrimParams(part, rules, ref result);
11564 }
11565 }
11566
11567 return result;
11568 } 11547 }
11569 11548
11570 public void print(string str) 11549 public void print(string str)