Restore the recursive calling of PRIM_LINK_TARGET because the version I made

breaks LINK_SET et al.
remove-scene-viewer
Melanie 2011-11-02 12:09:18 +00:00
parent 1b9ae3fb51
commit c5fb39e21f
1 changed files with 390 additions and 383 deletions
OpenSim/Region/ScriptEngine/Shared/Api/Implementation

View File

@ -7067,6 +7067,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
bool positionChanged = false; bool positionChanged = false;
LSL_Vector currentPosition = GetPartLocalPos(part); LSL_Vector currentPosition = GetPartLocalPos(part);
try
{
while (idx < rules.Length) while (idx < rules.Length)
{ {
int code = rules.GetLSLIntegerItem(idx++); int code = rules.GetLSLIntegerItem(idx++);
@ -7436,14 +7438,18 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
TargetOmega(part, axis, (double)spinrate, (double)gain); TargetOmega(part, axis, (double)spinrate, (double)gain);
break; break;
case (int)ScriptBaseClass.PRIM_LINK_TARGET: case (int)ScriptBaseClass.PRIM_LINK_TARGET:
if (remain < 1) if (remain < 3) // setting to 3 on the basis that parsing any usage of PRIM_LINK_TARGET that has nothing following it is pointless.
return; return;
LSL_Integer new_linknumber = rules.GetLSLIntegerItem(idx++); LSL_Integer new_linknumber = rules.GetLSLIntegerItem(idx++);
part = part.ParentGroup.GetLinkNumPart((int)new_linknumber); LSL_List new_rules = rules.GetSublist(idx, -1);
break; setLinkPrimParams((int)new_linknumber, new_rules);
}
}
return;
}
}
}
finally
{
if (positionChanged) if (positionChanged)
{ {
if (part.ParentGroup.RootPart == part) if (part.ParentGroup.RootPart == part)
@ -7460,6 +7466,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
} }
} }
} }
}
public LSL_String llStringToBase64(string str) public LSL_String llStringToBase64(string str)
{ {