diff options
author | Jeff Ames | 2008-05-06 22:41:38 +0000 |
---|---|---|
committer | Jeff Ames | 2008-05-06 22:41:38 +0000 |
commit | 0ea48cf7860a83e30e4401b4bb1ff4b4eb3ae3a7 (patch) | |
tree | 92221f03df2e93be0399a008ba4927977067a888 /OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs | |
parent | send actual velocity and angular velocity in terse updates (diff) | |
download | opensim-SC-0ea48cf7860a83e30e4401b4bb1ff4b4eb3ae3a7.zip opensim-SC-0ea48cf7860a83e30e4401b4bb1ff4b4eb3ae3a7.tar.gz opensim-SC-0ea48cf7860a83e30e4401b4bb1ff4b4eb3ae3a7.tar.bz2 opensim-SC-0ea48cf7860a83e30e4401b4bb1ff4b4eb3ae3a7.tar.xz |
De-tabify source.
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs | 539 |
1 files changed, 276 insertions, 263 deletions
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs index c8b7d5c..6cebf04 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs | |||
@@ -303,26 +303,26 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
303 | double sqx = r.x*r.x; | 303 | double sqx = r.x*r.x; |
304 | double sqy = r.y*r.y; | 304 | double sqy = r.y*r.y; |
305 | double sqz = r.z*r.z; | 305 | double sqz = r.z*r.z; |
306 | double unit = sqx + sqy + sqz + sqw; // if normalised is one, otherwise is correction factor | 306 | double unit = sqx + sqy + sqz + sqw; // if normalised is one, otherwise is correction factor |
307 | double test = r.x*r.y + r.z*r.s; | 307 | double test = r.x*r.y + r.z*r.s; |
308 | if (test > 0.499 * unit) // singularity at north pole | 308 | if (test > 0.499 * unit) // singularity at north pole |
309 | { | 309 | { |
310 | x = 0; | 310 | x = 0; |
311 | y = 2 * Math.Atan2(r.x, r.s); | 311 | y = 2 * Math.Atan2(r.x, r.s); |
312 | z = Math.PI/2; | 312 | z = Math.PI/2; |
313 | return new LSL_Types.Vector3(x, y, z); | 313 | return new LSL_Types.Vector3(x, y, z); |
314 | } | 314 | } |
315 | if (test < -0.499 * unit) // singularity at south pole | 315 | if (test < -0.499 * unit) // singularity at south pole |
316 | { | 316 | { |
317 | x = 0; | 317 | x = 0; |
318 | y = -2 * Math.Atan2(r.x,r.s); | 318 | y = -2 * Math.Atan2(r.x,r.s); |
319 | z = -Math.PI/2; | 319 | z = -Math.PI/2; |
320 | return new LSL_Types.Vector3(x, y, z); | 320 | return new LSL_Types.Vector3(x, y, z); |
321 | } | 321 | } |
322 | x = Math.Atan2(2 * r.x * r.s - 2 * r.y * r.z, -sqx + sqy - sqz + sqw); | 322 | x = Math.Atan2(2 * r.x * r.s - 2 * r.y * r.z, -sqx + sqy - sqz + sqw); |
323 | y = Math.Atan2(2*r.y*r.s-2*r.x*r.z , sqx - sqy - sqz + sqw); | 323 | y = Math.Atan2(2*r.y*r.s-2*r.x*r.z , sqx - sqy - sqz + sqw); |
324 | z = Math.Asin(2*test/unit); | 324 | z = Math.Asin(2*test/unit); |
325 | return new LSL_Types.Vector3(x, y, z); | 325 | return new LSL_Types.Vector3(x, y, z); |
326 | } | 326 | } |
327 | 327 | ||
328 | 328 | ||
@@ -490,11 +490,11 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
490 | 490 | ||
491 | public void llRegionSay(int channelID, string text) | 491 | public void llRegionSay(int channelID, string text) |
492 | { | 492 | { |
493 | if(channelID == 0) | 493 | if (channelID == 0) |
494 | { | 494 | { |
495 | LSLError("Cannot use llRegionSay() on channel 0"); | 495 | LSLError("Cannot use llRegionSay() on channel 0"); |
496 | return; | 496 | return; |
497 | } | 497 | } |
498 | 498 | ||
499 | m_host.AddScriptLPS(1); | 499 | m_host.AddScriptLPS(1); |
500 | 500 | ||
@@ -922,11 +922,11 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
922 | public void llSetScale(LSL_Types.Vector3 scale) | 922 | public void llSetScale(LSL_Types.Vector3 scale) |
923 | { | 923 | { |
924 | m_host.AddScriptLPS(1); | 924 | m_host.AddScriptLPS(1); |
925 | SetScale(m_host, scale); | 925 | SetScale(m_host, scale); |
926 | } | 926 | } |
927 | 927 | ||
928 | private void SetScale(SceneObjectPart part, LSL_Types.Vector3 scale) | 928 | private void SetScale(SceneObjectPart part, LSL_Types.Vector3 scale) |
929 | { | 929 | { |
930 | // TODO: this needs to trigger a persistance save as well | 930 | // TODO: this needs to trigger a persistance save as well |
931 | LLVector3 tmp = part.Scale; | 931 | LLVector3 tmp = part.Scale; |
932 | tmp.X = (float)scale.x; | 932 | tmp.X = (float)scale.x; |
@@ -947,11 +947,11 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
947 | { | 947 | { |
948 | m_host.AddScriptLPS(1); | 948 | m_host.AddScriptLPS(1); |
949 | 949 | ||
950 | SetColor(m_host, color, face); | 950 | SetColor(m_host, color, face); |
951 | } | 951 | } |
952 | 952 | ||
953 | private void SetColor(SceneObjectPart part, LSL_Types.Vector3 color, int face) | 953 | private void SetColor(SceneObjectPart part, LSL_Types.Vector3 color, int face) |
954 | { | 954 | { |
955 | LLObject.TextureEntry tex = part.Shape.Textures; | 955 | LLObject.TextureEntry tex = part.Shape.Textures; |
956 | LLColor texcolor; | 956 | LLColor texcolor; |
957 | if (face > -1) | 957 | if (face > -1) |
@@ -1010,11 +1010,11 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1010 | { | 1010 | { |
1011 | m_host.AddScriptLPS(1); | 1011 | m_host.AddScriptLPS(1); |
1012 | 1012 | ||
1013 | SetAlpha(m_host, alpha, face); | 1013 | SetAlpha(m_host, alpha, face); |
1014 | } | 1014 | } |
1015 | 1015 | ||
1016 | private void SetAlpha(SceneObjectPart part, double alpha, int face) | 1016 | private void SetAlpha(SceneObjectPart part, double alpha, int face) |
1017 | { | 1017 | { |
1018 | LLObject.TextureEntry tex = part.Shape.Textures; | 1018 | LLObject.TextureEntry tex = part.Shape.Textures; |
1019 | LLColor texcolor; | 1019 | LLColor texcolor; |
1020 | if (face > -1) | 1020 | if (face > -1) |
@@ -1080,19 +1080,19 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1080 | public void llSetTexture(string texture, int face) | 1080 | public void llSetTexture(string texture, int face) |
1081 | { | 1081 | { |
1082 | m_host.AddScriptLPS(1); | 1082 | m_host.AddScriptLPS(1); |
1083 | SetTexture(m_host, texture, face); | 1083 | SetTexture(m_host, texture, face); |
1084 | } | 1084 | } |
1085 | 1085 | ||
1086 | private void SetTexture(SceneObjectPart part, string texture, int face) | 1086 | private void SetTexture(SceneObjectPart part, string texture, int face) |
1087 | { | 1087 | { |
1088 | LLUUID textureID=new LLUUID(); | 1088 | LLUUID textureID=new LLUUID(); |
1089 | 1089 | ||
1090 | if(!LLUUID.TryParse(texture, out textureID)) | 1090 | if (!LLUUID.TryParse(texture, out textureID)) |
1091 | { | 1091 | { |
1092 | textureID=InventoryKey(texture, (int)AssetType.Texture); | 1092 | textureID=InventoryKey(texture, (int)AssetType.Texture); |
1093 | } | 1093 | } |
1094 | 1094 | ||
1095 | if(textureID == LLUUID.Zero) | 1095 | if (textureID == LLUUID.Zero) |
1096 | return; | 1096 | return; |
1097 | 1097 | ||
1098 | LLObject.TextureEntry tex = part.Shape.Textures; | 1098 | LLObject.TextureEntry tex = part.Shape.Textures; |
@@ -1128,11 +1128,11 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1128 | { | 1128 | { |
1129 | m_host.AddScriptLPS(1); | 1129 | m_host.AddScriptLPS(1); |
1130 | 1130 | ||
1131 | ScaleTexture(m_host, u, v, face); | 1131 | ScaleTexture(m_host, u, v, face); |
1132 | } | 1132 | } |
1133 | 1133 | ||
1134 | private void ScaleTexture(SceneObjectPart part, double u, double v, int face) | 1134 | private void ScaleTexture(SceneObjectPart part, double u, double v, int face) |
1135 | { | 1135 | { |
1136 | LLObject.TextureEntry tex = part.Shape.Textures; | 1136 | LLObject.TextureEntry tex = part.Shape.Textures; |
1137 | if (face > -1) | 1137 | if (face > -1) |
1138 | { | 1138 | { |
@@ -1167,11 +1167,11 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1167 | public void llOffsetTexture(double u, double v, int face) | 1167 | public void llOffsetTexture(double u, double v, int face) |
1168 | { | 1168 | { |
1169 | m_host.AddScriptLPS(1); | 1169 | m_host.AddScriptLPS(1); |
1170 | OffsetTexture(m_host, u, v, face); | 1170 | OffsetTexture(m_host, u, v, face); |
1171 | } | 1171 | } |
1172 | 1172 | ||
1173 | private void OffsetTexture(SceneObjectPart part, double u, double v, int face) | 1173 | private void OffsetTexture(SceneObjectPart part, double u, double v, int face) |
1174 | { | 1174 | { |
1175 | LLObject.TextureEntry tex = part.Shape.Textures; | 1175 | LLObject.TextureEntry tex = part.Shape.Textures; |
1176 | if (face > -1) | 1176 | if (face > -1) |
1177 | { | 1177 | { |
@@ -1206,11 +1206,11 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1206 | public void llRotateTexture(double rotation, int face) | 1206 | public void llRotateTexture(double rotation, int face) |
1207 | { | 1207 | { |
1208 | m_host.AddScriptLPS(1); | 1208 | m_host.AddScriptLPS(1); |
1209 | RotateTexture(m_host, rotation, face); | 1209 | RotateTexture(m_host, rotation, face); |
1210 | } | 1210 | } |
1211 | 1211 | ||
1212 | private void RotateTexture(SceneObjectPart part, double rotation, int face) | 1212 | private void RotateTexture(SceneObjectPart part, double rotation, int face) |
1213 | { | 1213 | { |
1214 | LLObject.TextureEntry tex = part.Shape.Textures; | 1214 | LLObject.TextureEntry tex = part.Shape.Textures; |
1215 | if (face > -1) | 1215 | if (face > -1) |
1216 | { | 1216 | { |
@@ -1264,11 +1264,11 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1264 | { | 1264 | { |
1265 | m_host.AddScriptLPS(1); | 1265 | m_host.AddScriptLPS(1); |
1266 | 1266 | ||
1267 | SetPos(m_host, pos); | 1267 | SetPos(m_host, pos); |
1268 | } | 1268 | } |
1269 | 1269 | ||
1270 | private void SetPos(SceneObjectPart part, LSL_Types.Vector3 pos) | 1270 | private void SetPos(SceneObjectPart part, LSL_Types.Vector3 pos) |
1271 | { | 1271 | { |
1272 | if (part.ParentID != 0) | 1272 | if (part.ParentID != 0) |
1273 | { | 1273 | { |
1274 | part.UpdateOffSet(new LLVector3((float)pos.x, (float)pos.y, (float)pos.z)); | 1274 | part.UpdateOffSet(new LLVector3((float)pos.x, (float)pos.y, (float)pos.z)); |
@@ -1308,11 +1308,11 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1308 | { | 1308 | { |
1309 | m_host.AddScriptLPS(1); | 1309 | m_host.AddScriptLPS(1); |
1310 | 1310 | ||
1311 | SetRot(m_host, rot); | 1311 | SetRot(m_host, rot); |
1312 | } | 1312 | } |
1313 | 1313 | ||
1314 | private void SetRot(SceneObjectPart part, LSL_Types.Quaternion rot) | 1314 | private void SetRot(SceneObjectPart part, LSL_Types.Quaternion rot) |
1315 | { | 1315 | { |
1316 | part.UpdateRotation(new LLQuaternion((float)rot.x, (float)rot.y, (float)rot.z, (float)rot.s)); | 1316 | part.UpdateRotation(new LLQuaternion((float)rot.x, (float)rot.y, (float)rot.z, (float)rot.s)); |
1317 | // Update rotation does not move the object in the physics scene if it's a linkset. | 1317 | // Update rotation does not move the object in the physics scene if it's a linkset. |
1318 | part.ParentGroup.AbsolutePosition = part.ParentGroup.AbsolutePosition; | 1318 | part.ParentGroup.AbsolutePosition = part.ParentGroup.AbsolutePosition; |
@@ -1569,7 +1569,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1569 | if (start <= end) | 1569 | if (start <= end) |
1570 | { | 1570 | { |
1571 | // Implies both bounds are out-of-range. | 1571 | // Implies both bounds are out-of-range. |
1572 | if(end < 0 || start >= src.Length) | 1572 | if (end < 0 || start >= src.Length) |
1573 | { | 1573 | { |
1574 | return String.Empty; | 1574 | return String.Empty; |
1575 | } | 1575 | } |
@@ -1577,12 +1577,12 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1577 | // corresponds to the lengt of the substring | 1577 | // corresponds to the lengt of the substring |
1578 | // needed (plus one of course). BUT, it | 1578 | // needed (plus one of course). BUT, it |
1579 | // must be within bounds. | 1579 | // must be within bounds. |
1580 | if(end >= src.Length) | 1580 | if (end >= src.Length) |
1581 | { | 1581 | { |
1582 | end = src.Length-1; | 1582 | end = src.Length-1; |
1583 | } | 1583 | } |
1584 | 1584 | ||
1585 | if(start < 0) | 1585 | if (start < 0) |
1586 | { | 1586 | { |
1587 | return src.Substring(0,end+1); | 1587 | return src.Substring(0,end+1); |
1588 | } | 1588 | } |
@@ -1597,21 +1597,21 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1597 | // lower bound. In the inverted case, that | 1597 | // lower bound. In the inverted case, that |
1598 | // means the entire string will be returned | 1598 | // means the entire string will be returned |
1599 | // unchanged. | 1599 | // unchanged. |
1600 | if(start < 0) | 1600 | if (start < 0) |
1601 | { | 1601 | { |
1602 | return src; | 1602 | return src; |
1603 | } | 1603 | } |
1604 | // If both indices are greater than the upper | 1604 | // If both indices are greater than the upper |
1605 | // bound the result may seem initially counter | 1605 | // bound the result may seem initially counter |
1606 | // intuitive. | 1606 | // intuitive. |
1607 | if(end >= src.Length) | 1607 | if (end >= src.Length) |
1608 | { | 1608 | { |
1609 | return src; | 1609 | return src; |
1610 | } | 1610 | } |
1611 | 1611 | ||
1612 | if(end < 0) | 1612 | if (end < 0) |
1613 | { | 1613 | { |
1614 | if(start < src.Length) | 1614 | if (start < src.Length) |
1615 | { | 1615 | { |
1616 | return src.Substring(start); | 1616 | return src.Substring(start); |
1617 | } | 1617 | } |
@@ -1622,7 +1622,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1622 | } | 1622 | } |
1623 | else | 1623 | else |
1624 | { | 1624 | { |
1625 | if(start < src.Length) | 1625 | if (start < src.Length) |
1626 | { | 1626 | { |
1627 | return src.Substring(0,end+1) + src.Substring(start); | 1627 | return src.Substring(0,end+1) + src.Substring(start); |
1628 | } | 1628 | } |
@@ -1664,18 +1664,18 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1664 | { | 1664 | { |
1665 | // If both bounds are outside of the existing | 1665 | // If both bounds are outside of the existing |
1666 | // string, then return unchanges. | 1666 | // string, then return unchanges. |
1667 | if(end < 0 || start >= src.Length) | 1667 | if (end < 0 || start >= src.Length) |
1668 | { | 1668 | { |
1669 | return src; | 1669 | return src; |
1670 | } | 1670 | } |
1671 | // At least one bound is in-range, so we | 1671 | // At least one bound is in-range, so we |
1672 | // need to clip the out-of-bound argument. | 1672 | // need to clip the out-of-bound argument. |
1673 | if(start < 0) | 1673 | if (start < 0) |
1674 | { | 1674 | { |
1675 | start = 0; | 1675 | start = 0; |
1676 | } | 1676 | } |
1677 | 1677 | ||
1678 | if(end >= src.Length) | 1678 | if (end >= src.Length) |
1679 | { | 1679 | { |
1680 | end = src.Length-1; | 1680 | end = src.Length-1; |
1681 | } | 1681 | } |
@@ -1687,14 +1687,14 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1687 | { | 1687 | { |
1688 | // In this case, out of bounds means that | 1688 | // In this case, out of bounds means that |
1689 | // the existing string is part of the cut. | 1689 | // the existing string is part of the cut. |
1690 | if(start < 0 || end >= src.Length) | 1690 | if (start < 0 || end >= src.Length) |
1691 | { | 1691 | { |
1692 | return String.Empty; | 1692 | return String.Empty; |
1693 | } | 1693 | } |
1694 | 1694 | ||
1695 | if(end > 0) | 1695 | if (end > 0) |
1696 | { | 1696 | { |
1697 | if(start < src.Length) | 1697 | if (start < src.Length) |
1698 | { | 1698 | { |
1699 | return src.Remove(start).Remove(0,end+1); | 1699 | return src.Remove(start).Remove(0,end+1); |
1700 | } | 1700 | } |
@@ -1705,7 +1705,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1705 | } | 1705 | } |
1706 | else | 1706 | else |
1707 | { | 1707 | { |
1708 | if(start < src.Length) | 1708 | if (start < src.Length) |
1709 | { | 1709 | { |
1710 | return src.Remove(start); | 1710 | return src.Remove(start); |
1711 | } | 1711 | } |
@@ -1741,14 +1741,14 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1741 | // Negative now means it is less than the lower | 1741 | // Negative now means it is less than the lower |
1742 | // bound of the string. | 1742 | // bound of the string. |
1743 | 1743 | ||
1744 | if(index < 0) | 1744 | if (index < 0) |
1745 | { | 1745 | { |
1746 | return src+dest; | 1746 | return src+dest; |
1747 | } | 1747 | } |
1748 | 1748 | ||
1749 | } | 1749 | } |
1750 | 1750 | ||
1751 | if(index >= dest.Length) | 1751 | if (index >= dest.Length) |
1752 | { | 1752 | { |
1753 | return dest+src; | 1753 | return dest+src; |
1754 | } | 1754 | } |
@@ -1777,15 +1777,15 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1777 | public int llGiveMoney(string destination, int amount) | 1777 | public int llGiveMoney(string destination, int amount) |
1778 | { | 1778 | { |
1779 | LLUUID invItemID=InventorySelf(); | 1779 | LLUUID invItemID=InventorySelf(); |
1780 | if(invItemID == LLUUID.Zero) | 1780 | if (invItemID == LLUUID.Zero) |
1781 | return 0; | 1781 | return 0; |
1782 | 1782 | ||
1783 | m_host.AddScriptLPS(1); | 1783 | m_host.AddScriptLPS(1); |
1784 | 1784 | ||
1785 | if(m_host.TaskInventory[invItemID].PermsGranter == LLUUID.Zero) | 1785 | if (m_host.TaskInventory[invItemID].PermsGranter == LLUUID.Zero) |
1786 | return 0; | 1786 | return 0; |
1787 | 1787 | ||
1788 | if((m_host.TaskInventory[invItemID].PermsMask & BuiltIn_Commands_BaseClass.PERMISSION_DEBIT) == 0) | 1788 | if ((m_host.TaskInventory[invItemID].PermsMask & BuiltIn_Commands_BaseClass.PERMISSION_DEBIT) == 0) |
1789 | { | 1789 | { |
1790 | LSLError("No permissions to give money"); | 1790 | LSLError("No permissions to give money"); |
1791 | return 0; | 1791 | return 0; |
@@ -1793,7 +1793,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1793 | 1793 | ||
1794 | LLUUID toID=new LLUUID(); | 1794 | LLUUID toID=new LLUUID(); |
1795 | 1795 | ||
1796 | if(!LLUUID.TryParse(destination, out toID)) | 1796 | if (!LLUUID.TryParse(destination, out toID)) |
1797 | { | 1797 | { |
1798 | LSLError("Bad key in llGiveMoney"); | 1798 | LSLError("Bad key in llGiveMoney"); |
1799 | return 0; | 1799 | return 0; |
@@ -1801,7 +1801,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1801 | 1801 | ||
1802 | IMoneyModule money=World.RequestModuleInterface<IMoneyModule>(); | 1802 | IMoneyModule money=World.RequestModuleInterface<IMoneyModule>(); |
1803 | 1803 | ||
1804 | if(money == null) | 1804 | if (money == null) |
1805 | { | 1805 | { |
1806 | NotImplemented("llGiveMoney"); | 1806 | NotImplemented("llGiveMoney"); |
1807 | return 0; | 1807 | return 0; |
@@ -1809,7 +1809,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1809 | 1809 | ||
1810 | bool result=money.ObjectGiveMoney(m_host.ParentGroup.RootPart.UUID, m_host.ParentGroup.RootPart.OwnerID, toID, amount); | 1810 | bool result=money.ObjectGiveMoney(m_host.ParentGroup.RootPart.UUID, m_host.ParentGroup.RootPart.OwnerID, toID, amount); |
1811 | 1811 | ||
1812 | if(result) | 1812 | if (result) |
1813 | return 1; | 1813 | return 1; |
1814 | 1814 | ||
1815 | return 0; | 1815 | return 0; |
@@ -2113,17 +2113,17 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
2113 | m_host.AddScriptLPS(1); | 2113 | m_host.AddScriptLPS(1); |
2114 | 2114 | ||
2115 | LLUUID invItemID=InventorySelf(); | 2115 | LLUUID invItemID=InventorySelf(); |
2116 | if(invItemID == LLUUID.Zero) | 2116 | if (invItemID == LLUUID.Zero) |
2117 | return; | 2117 | return; |
2118 | 2118 | ||
2119 | if(m_host.TaskInventory[invItemID].PermsGranter == LLUUID.Zero) | 2119 | if (m_host.TaskInventory[invItemID].PermsGranter == LLUUID.Zero) |
2120 | return; | 2120 | return; |
2121 | 2121 | ||
2122 | if((m_host.TaskInventory[invItemID].PermsMask & BuiltIn_Commands_BaseClass.PERMISSION_TRIGGER_ANIMATION) != 0) | 2122 | if ((m_host.TaskInventory[invItemID].PermsMask & BuiltIn_Commands_BaseClass.PERMISSION_TRIGGER_ANIMATION) != 0) |
2123 | { | 2123 | { |
2124 | // Do NOT try to parse LLUUID, animations cannot be triggered by ID | 2124 | // Do NOT try to parse LLUUID, animations cannot be triggered by ID |
2125 | LLUUID animID=InventoryKey(anim, (int)AssetType.Animation); | 2125 | LLUUID animID=InventoryKey(anim, (int)AssetType.Animation); |
2126 | if(animID == LLUUID.Zero) | 2126 | if (animID == LLUUID.Zero) |
2127 | return; | 2127 | return; |
2128 | 2128 | ||
2129 | if (World.m_innerScene.ScenePresences.ContainsKey(m_host.TaskInventory[invItemID].PermsGranter)) | 2129 | if (World.m_innerScene.ScenePresences.ContainsKey(m_host.TaskInventory[invItemID].PermsGranter)) |
@@ -2139,22 +2139,22 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
2139 | m_host.AddScriptLPS(1); | 2139 | m_host.AddScriptLPS(1); |
2140 | 2140 | ||
2141 | LLUUID invItemID=InventorySelf(); | 2141 | LLUUID invItemID=InventorySelf(); |
2142 | if(invItemID == LLUUID.Zero) | 2142 | if (invItemID == LLUUID.Zero) |
2143 | return; | 2143 | return; |
2144 | 2144 | ||
2145 | if(m_host.TaskInventory[invItemID].PermsGranter == LLUUID.Zero) | 2145 | if (m_host.TaskInventory[invItemID].PermsGranter == LLUUID.Zero) |
2146 | return; | 2146 | return; |
2147 | 2147 | ||
2148 | if((m_host.TaskInventory[invItemID].PermsMask & BuiltIn_Commands_BaseClass.PERMISSION_TRIGGER_ANIMATION) != 0) | 2148 | if ((m_host.TaskInventory[invItemID].PermsMask & BuiltIn_Commands_BaseClass.PERMISSION_TRIGGER_ANIMATION) != 0) |
2149 | { | 2149 | { |
2150 | LLUUID animID = new LLUUID(); | 2150 | LLUUID animID = new LLUUID(); |
2151 | 2151 | ||
2152 | if(!LLUUID.TryParse(anim, out animID)) | 2152 | if (!LLUUID.TryParse(anim, out animID)) |
2153 | { | 2153 | { |
2154 | animID=InventoryKey(anim); | 2154 | animID=InventoryKey(anim); |
2155 | } | 2155 | } |
2156 | 2156 | ||
2157 | if(animID == LLUUID.Zero) | 2157 | if (animID == LLUUID.Zero) |
2158 | return; | 2158 | return; |
2159 | 2159 | ||
2160 | if (World.m_innerScene.ScenePresences.ContainsKey(m_host.TaskInventory[invItemID].PermsGranter)) | 2160 | if (World.m_innerScene.ScenePresences.ContainsKey(m_host.TaskInventory[invItemID].PermsGranter)) |
@@ -2203,15 +2203,15 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
2203 | { | 2203 | { |
2204 | LLUUID agentID=new LLUUID(); | 2204 | LLUUID agentID=new LLUUID(); |
2205 | 2205 | ||
2206 | if(!LLUUID.TryParse(agent, out agentID)) | 2206 | if (!LLUUID.TryParse(agent, out agentID)) |
2207 | return; | 2207 | return; |
2208 | 2208 | ||
2209 | LLUUID invItemID=InventorySelf(); | 2209 | LLUUID invItemID=InventorySelf(); |
2210 | 2210 | ||
2211 | if(invItemID == LLUUID.Zero) | 2211 | if (invItemID == LLUUID.Zero) |
2212 | return; // Not in a prim? How?? | 2212 | return; // Not in a prim? How?? |
2213 | 2213 | ||
2214 | if(agentID == LLUUID.Zero || perm == 0) // Releasing permissions | 2214 | if (agentID == LLUUID.Zero || perm == 0) // Releasing permissions |
2215 | { | 2215 | { |
2216 | m_host.TaskInventory[invItemID].PermsGranter=LLUUID.Zero; | 2216 | m_host.TaskInventory[invItemID].PermsGranter=LLUUID.Zero; |
2217 | m_host.TaskInventory[invItemID].PermsMask=0; | 2217 | m_host.TaskInventory[invItemID].PermsMask=0; |
@@ -2226,14 +2226,14 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
2226 | 2226 | ||
2227 | bool attachment=false; // Attachments not implemented yet. TODO: reflect real attachemnt state | 2227 | bool attachment=false; // Attachments not implemented yet. TODO: reflect real attachemnt state |
2228 | 2228 | ||
2229 | if(m_host.ParentGroup.RootPart.m_IsAttachment && agent == m_host.ParentGroup.RootPart.m_attachedAvatar) | 2229 | if (m_host.ParentGroup.RootPart.m_IsAttachment && agent == m_host.ParentGroup.RootPart.m_attachedAvatar) |
2230 | { | 2230 | { |
2231 | // When attached, certain permissions are implicit if requested from owner | 2231 | // When attached, certain permissions are implicit if requested from owner |
2232 | int implicitPerms = BuiltIn_Commands_BaseClass.PERMISSION_TAKE_CONTROLS | | 2232 | int implicitPerms = BuiltIn_Commands_BaseClass.PERMISSION_TAKE_CONTROLS | |
2233 | BuiltIn_Commands_BaseClass.PERMISSION_TRIGGER_ANIMATION | | 2233 | BuiltIn_Commands_BaseClass.PERMISSION_TRIGGER_ANIMATION | |
2234 | BuiltIn_Commands_BaseClass.PERMISSION_ATTACH; | 2234 | BuiltIn_Commands_BaseClass.PERMISSION_ATTACH; |
2235 | 2235 | ||
2236 | if((perm & (~implicitPerms)) == 0) // Requested only implicit perms | 2236 | if ((perm & (~implicitPerms)) == 0) // Requested only implicit perms |
2237 | { | 2237 | { |
2238 | m_host.TaskInventory[invItemID].PermsGranter=agentID; | 2238 | m_host.TaskInventory[invItemID].PermsGranter=agentID; |
2239 | m_host.TaskInventory[invItemID].PermsMask=perm; | 2239 | m_host.TaskInventory[invItemID].PermsMask=perm; |
@@ -2244,13 +2244,13 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
2244 | return; | 2244 | return; |
2245 | } | 2245 | } |
2246 | } | 2246 | } |
2247 | else if(m_host.m_sitTargetAvatar == agentID) // Sitting avatar | 2247 | else if (m_host.m_sitTargetAvatar == agentID) // Sitting avatar |
2248 | { | 2248 | { |
2249 | // When agent is sitting, certain permissions are implicit if requested from sitting agent | 2249 | // When agent is sitting, certain permissions are implicit if requested from sitting agent |
2250 | int implicitPerms = BuiltIn_Commands_BaseClass.PERMISSION_TRIGGER_ANIMATION | | 2250 | int implicitPerms = BuiltIn_Commands_BaseClass.PERMISSION_TRIGGER_ANIMATION | |
2251 | BuiltIn_Commands_BaseClass.PERMISSION_TRACK_CAMERA; | 2251 | BuiltIn_Commands_BaseClass.PERMISSION_TRACK_CAMERA; |
2252 | 2252 | ||
2253 | if((perm & (~implicitPerms)) == 0) // Requested only implicit perms | 2253 | if ((perm & (~implicitPerms)) == 0) // Requested only implicit perms |
2254 | { | 2254 | { |
2255 | m_host.TaskInventory[invItemID].PermsGranter=agentID; | 2255 | m_host.TaskInventory[invItemID].PermsGranter=agentID; |
2256 | m_host.TaskInventory[invItemID].PermsMask=perm; | 2256 | m_host.TaskInventory[invItemID].PermsMask=perm; |
@@ -2265,11 +2265,11 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
2265 | if (World.m_innerScene.ScenePresences.ContainsKey(agentID)) | 2265 | if (World.m_innerScene.ScenePresences.ContainsKey(agentID)) |
2266 | { | 2266 | { |
2267 | string ownerName=resolveName(m_host.ParentGroup.RootPart.OwnerID); | 2267 | string ownerName=resolveName(m_host.ParentGroup.RootPart.OwnerID); |
2268 | if(ownerName == String.Empty) | 2268 | if (ownerName == String.Empty) |
2269 | ownerName="(hippos)"; | 2269 | ownerName="(hippos)"; |
2270 | 2270 | ||
2271 | ScenePresence presence = World.m_innerScene.ScenePresences[agentID]; | 2271 | ScenePresence presence = World.m_innerScene.ScenePresences[agentID]; |
2272 | if(!m_waitingForScriptAnswer) | 2272 | if (!m_waitingForScriptAnswer) |
2273 | { | 2273 | { |
2274 | m_host.TaskInventory[invItemID].PermsGranter=agentID; | 2274 | m_host.TaskInventory[invItemID].PermsGranter=agentID; |
2275 | m_host.TaskInventory[invItemID].PermsMask=0; | 2275 | m_host.TaskInventory[invItemID].PermsMask=0; |
@@ -2288,12 +2288,12 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
2288 | 2288 | ||
2289 | void handleScriptAnswer(IClientAPI client, LLUUID taskID, LLUUID itemID, int answer) | 2289 | void handleScriptAnswer(IClientAPI client, LLUUID taskID, LLUUID itemID, int answer) |
2290 | { | 2290 | { |
2291 | if(taskID != m_host.UUID) | 2291 | if (taskID != m_host.UUID) |
2292 | return; | 2292 | return; |
2293 | 2293 | ||
2294 | LLUUID invItemID=InventorySelf(); | 2294 | LLUUID invItemID=InventorySelf(); |
2295 | 2295 | ||
2296 | if(invItemID == LLUUID.Zero) | 2296 | if (invItemID == LLUUID.Zero) |
2297 | return; | 2297 | return; |
2298 | 2298 | ||
2299 | client.OnScriptAnswer-=handleScriptAnswer; | 2299 | client.OnScriptAnswer-=handleScriptAnswer; |
@@ -2310,7 +2310,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
2310 | 2310 | ||
2311 | foreach (TaskInventoryItem item in m_host.TaskInventory.Values) | 2311 | foreach (TaskInventoryItem item in m_host.TaskInventory.Values) |
2312 | { | 2312 | { |
2313 | if(item.Type == 10 && item.ItemID == m_itemID) | 2313 | if (item.Type == 10 && item.ItemID == m_itemID) |
2314 | { | 2314 | { |
2315 | return item.PermsGranter.ToString(); | 2315 | return item.PermsGranter.ToString(); |
2316 | } | 2316 | } |
@@ -2325,7 +2325,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
2325 | 2325 | ||
2326 | foreach (TaskInventoryItem item in m_host.TaskInventory.Values) | 2326 | foreach (TaskInventoryItem item in m_host.TaskInventory.Values) |
2327 | { | 2327 | { |
2328 | if(item.Type == 10 && item.ItemID == m_itemID) | 2328 | if (item.Type == 10 && item.ItemID == m_itemID) |
2329 | { | 2329 | { |
2330 | return item.PermsMask; | 2330 | return item.PermsMask; |
2331 | } | 2331 | } |
@@ -2541,16 +2541,23 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
2541 | // These functions are supposed to be robust, | 2541 | // These functions are supposed to be robust, |
2542 | // so get the state one step at a time. | 2542 | // so get the state one step at a time. |
2543 | 2543 | ||
2544 | if((item = ScriptByName(name)) != LLUUID.Zero) | 2544 | if ((item = ScriptByName(name)) != LLUUID.Zero) |
2545 | if((sm = m_ScriptEngine.m_ScriptManager) != null) | 2545 | { |
2546 | if(sm.Scripts.ContainsKey(m_localID)) | 2546 | if ((sm = m_ScriptEngine.m_ScriptManager) != null) |
2547 | if((script = sm.GetScript(m_localID, item)) != null) | 2547 | { |
2548 | script.Exec.Running = (run==0) ? false : true; | 2548 | if (sm.Scripts.ContainsKey(m_localID)) |
2549 | 2549 | { | |
2550 | if ((script = sm.GetScript(m_localID, item)) != null) | ||
2551 | { | ||
2552 | script.Exec.Running = (run==0) ? false : true; | ||
2553 | } | ||
2554 | } | ||
2555 | } | ||
2556 | } | ||
2550 | 2557 | ||
2551 | // Required by SL | 2558 | // Required by SL |
2552 | 2559 | ||
2553 | if(script == null) | 2560 | if (script == null) |
2554 | ShoutError("llSetScriptState: script "+name+" not found"); | 2561 | ShoutError("llSetScriptState: script "+name+" not found"); |
2555 | 2562 | ||
2556 | // If we didn;t find it, then it's safe to | 2563 | // If we didn;t find it, then it's safe to |
@@ -2709,7 +2716,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
2709 | partItemID = item.ItemID; | 2716 | partItemID = item.ItemID; |
2710 | Object[] resobj = new object[] | 2717 | Object[] resobj = new object[] |
2711 | { | 2718 | { |
2712 | new LSL_Types.LSLInteger(m_host.LinkNum + 1), new LSL_Types.LSLInteger(num), new LSL_Types.LSLString(msg), new LSL_Types.LSLString(id) | 2719 | new LSL_Types.LSLInteger(m_host.LinkNum + 1), new LSL_Types.LSLInteger(num), new LSL_Types.LSLString(msg), new LSL_Types.LSLString(id) |
2713 | }; | 2720 | }; |
2714 | 2721 | ||
2715 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( | 2722 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( |
@@ -2737,7 +2744,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
2737 | partItemID = item.ItemID; | 2744 | partItemID = item.ItemID; |
2738 | Object[] resobj = new object[] | 2745 | Object[] resobj = new object[] |
2739 | { | 2746 | { |
2740 | new LSL_Types.LSLInteger(m_host.LinkNum + 1), new LSL_Types.LSLInteger(num), new LSL_Types.LSLString(msg), new LSL_Types.LSLString(id) | 2747 | new LSL_Types.LSLInteger(m_host.LinkNum + 1), new LSL_Types.LSLInteger(num), new LSL_Types.LSLString(msg), new LSL_Types.LSLString(id) |
2741 | }; | 2748 | }; |
2742 | 2749 | ||
2743 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( | 2750 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( |
@@ -2767,7 +2774,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
2767 | partItemID = item.ItemID; | 2774 | partItemID = item.ItemID; |
2768 | Object[] resobj = new object[] | 2775 | Object[] resobj = new object[] |
2769 | { | 2776 | { |
2770 | new LSL_Types.LSLInteger(m_host.LinkNum + 1), new LSL_Types.LSLInteger(num), new LSL_Types.LSLString(msg), new LSL_Types.LSLString(id) | 2777 | new LSL_Types.LSLInteger(m_host.LinkNum + 1), new LSL_Types.LSLInteger(num), new LSL_Types.LSLString(msg), new LSL_Types.LSLString(id) |
2771 | }; | 2778 | }; |
2772 | 2779 | ||
2773 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( | 2780 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( |
@@ -2791,7 +2798,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
2791 | 2798 | ||
2792 | object[] resobj = new object[] | 2799 | object[] resobj = new object[] |
2793 | { | 2800 | { |
2794 | new LSL_Types.LSLInteger(m_host.LinkNum + 1), new LSL_Types.LSLInteger(num), new LSL_Types.LSLString(msg), new LSL_Types.LSLString(id) | 2801 | new LSL_Types.LSLInteger(m_host.LinkNum + 1), new LSL_Types.LSLInteger(num), new LSL_Types.LSLString(msg), new LSL_Types.LSLString(id) |
2795 | }; | 2802 | }; |
2796 | 2803 | ||
2797 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( | 2804 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( |
@@ -2819,7 +2826,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
2819 | partItemID = item.ItemID; | 2826 | partItemID = item.ItemID; |
2820 | Object[] resObjDef = new object[] | 2827 | Object[] resObjDef = new object[] |
2821 | { | 2828 | { |
2822 | new LSL_Types.LSLInteger(m_host.LinkNum + 1), new LSL_Types.LSLInteger(num), new LSL_Types.LSLString(msg), new LSL_Types.LSLString(id) | 2829 | new LSL_Types.LSLInteger(m_host.LinkNum + 1), new LSL_Types.LSLInteger(num), new LSL_Types.LSLString(msg), new LSL_Types.LSLString(id) |
2823 | }; | 2830 | }; |
2824 | 2831 | ||
2825 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( | 2832 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( |
@@ -2858,7 +2865,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
2858 | 2865 | ||
2859 | foreach (TaskInventoryItem item in m_host.TaskInventory.Values) | 2866 | foreach (TaskInventoryItem item in m_host.TaskInventory.Values) |
2860 | { | 2867 | { |
2861 | if(item.Type == 10 && item.ItemID == m_itemID) | 2868 | if (item.Type == 10 && item.ItemID == m_itemID) |
2862 | { | 2869 | { |
2863 | result = item.Name!=null?item.Name:String.Empty; | 2870 | result = item.Name!=null?item.Name:String.Empty; |
2864 | break; | 2871 | break; |
@@ -3013,9 +3020,9 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
3013 | m_host.AddScriptLPS(1); | 3020 | m_host.AddScriptLPS(1); |
3014 | foreach (KeyValuePair<LLUUID, TaskInventoryItem> inv in m_host.TaskInventory) | 3021 | foreach (KeyValuePair<LLUUID, TaskInventoryItem> inv in m_host.TaskInventory) |
3015 | { | 3022 | { |
3016 | if(inv.Value.Name == name) | 3023 | if (inv.Value.Name == name) |
3017 | { | 3024 | { |
3018 | if((inv.Value.OwnerMask & (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify)) == (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify)) | 3025 | if ((inv.Value.OwnerMask & (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify)) == (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify)) |
3019 | { | 3026 | { |
3020 | return inv.Value.AssetID.ToString(); | 3027 | return inv.Value.AssetID.ToString(); |
3021 | } | 3028 | } |
@@ -3122,7 +3129,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
3122 | public LSL_Types.list llListSort(LSL_Types.list src, int stride, int ascending) | 3129 | public LSL_Types.list llListSort(LSL_Types.list src, int stride, int ascending) |
3123 | { | 3130 | { |
3124 | m_host.AddScriptLPS(1); | 3131 | m_host.AddScriptLPS(1); |
3125 | return src.Sort(stride, ascending); | 3132 | return src.Sort(stride, ascending); |
3126 | } | 3133 | } |
3127 | 3134 | ||
3128 | public int llGetListLength(LSL_Types.list src) | 3135 | public int llGetListLength(LSL_Types.list src) |
@@ -3142,14 +3149,14 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
3142 | { | 3149 | { |
3143 | return 0; | 3150 | return 0; |
3144 | } | 3151 | } |
3145 | try | 3152 | try |
3146 | { | 3153 | { |
3147 | return Convert.ToInt32(src.Data[index]); | 3154 | return Convert.ToInt32(src.Data[index]); |
3148 | } | 3155 | } |
3149 | catch (FormatException e) | 3156 | catch (FormatException e) |
3150 | { | 3157 | { |
3151 | return 0; | 3158 | return 0; |
3152 | } | 3159 | } |
3153 | } | 3160 | } |
3154 | 3161 | ||
3155 | public double osList2Double(LSL_Types.list src, int index) | 3162 | public double osList2Double(LSL_Types.list src, int index) |
@@ -3177,14 +3184,14 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
3177 | { | 3184 | { |
3178 | return 0.0; | 3185 | return 0.0; |
3179 | } | 3186 | } |
3180 | try | 3187 | try |
3181 | { | 3188 | { |
3182 | return Convert.ToDouble(src.Data[index]); | 3189 | return Convert.ToDouble(src.Data[index]); |
3183 | } | 3190 | } |
3184 | catch (FormatException e) | 3191 | catch (FormatException e) |
3185 | { | 3192 | { |
3186 | return 0.0; | 3193 | return 0.0; |
3187 | } | 3194 | } |
3188 | } | 3195 | } |
3189 | 3196 | ||
3190 | public string llList2String(LSL_Types.list src, int index) | 3197 | public string llList2String(LSL_Types.list src, int index) |
@@ -3321,7 +3328,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
3321 | 3328 | ||
3322 | m_host.AddScriptLPS(1); | 3329 | m_host.AddScriptLPS(1); |
3323 | 3330 | ||
3324 | if(src.Data.Length > 0) | 3331 | if (src.Data.Length > 0) |
3325 | { | 3332 | { |
3326 | ret = src.Data[x++].ToString(); | 3333 | ret = src.Data[x++].ToString(); |
3327 | for(;x<src.Data.Length;x++) | 3334 | for(;x<src.Data.Length;x++) |
@@ -3361,12 +3368,12 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
3361 | length++; | 3368 | length++; |
3362 | break; | 3369 | break; |
3363 | case '>' : | 3370 | case '>' : |
3364 | if(parens > 0) | 3371 | if (parens > 0) |
3365 | parens--; | 3372 | parens--; |
3366 | length++; | 3373 | length++; |
3367 | break; | 3374 | break; |
3368 | case ',' : | 3375 | case ',' : |
3369 | if(parens == 0) | 3376 | if (parens == 0) |
3370 | { | 3377 | { |
3371 | result.Add(src.Substring(start,length).Trim()); | 3378 | result.Add(src.Substring(start,length).Trim()); |
3372 | start += length+1; | 3379 | start += length+1; |
@@ -3411,14 +3418,14 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
3411 | 3418 | ||
3412 | m_host.AddScriptLPS(1); | 3419 | m_host.AddScriptLPS(1); |
3413 | 3420 | ||
3414 | if(stride == 0) | 3421 | if (stride == 0) |
3415 | stride = 1; | 3422 | stride = 1; |
3416 | 3423 | ||
3417 | // Stride MUST be a factor of the list length | 3424 | // Stride MUST be a factor of the list length |
3418 | // If not, then return the src list. This also | 3425 | // If not, then return the src list. This also |
3419 | // traps those cases where stride > length. | 3426 | // traps those cases where stride > length. |
3420 | 3427 | ||
3421 | if(src.Length != stride && src.Length%stride == 0) | 3428 | if (src.Length != stride && src.Length%stride == 0) |
3422 | { | 3429 | { |
3423 | 3430 | ||
3424 | chunkk = src.Length/stride; | 3431 | chunkk = src.Length/stride; |
@@ -3481,26 +3488,26 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
3481 | 3488 | ||
3482 | // First step is always to deal with negative indices | 3489 | // First step is always to deal with negative indices |
3483 | 3490 | ||
3484 | if(start < 0) | 3491 | if (start < 0) |
3485 | start = src.Length+start; | 3492 | start = src.Length+start; |
3486 | if(end < 0) | 3493 | if (end < 0) |
3487 | end = src.Length+end; | 3494 | end = src.Length+end; |
3488 | 3495 | ||
3489 | // Out of bounds indices are OK, just trim them | 3496 | // Out of bounds indices are OK, just trim them |
3490 | // accordingly | 3497 | // accordingly |
3491 | 3498 | ||
3492 | if(start > src.Length) | 3499 | if (start > src.Length) |
3493 | start = src.Length; | 3500 | start = src.Length; |
3494 | 3501 | ||
3495 | if(end > src.Length) | 3502 | if (end > src.Length) |
3496 | end = src.Length; | 3503 | end = src.Length; |
3497 | 3504 | ||
3498 | // There may be one or two ranges to be considered | 3505 | // There may be one or two ranges to be considered |
3499 | 3506 | ||
3500 | if(start != end) | 3507 | if (start != end) |
3501 | { | 3508 | { |
3502 | 3509 | ||
3503 | if(start <= end) | 3510 | if (start <= end) |
3504 | { | 3511 | { |
3505 | si[0] = start; | 3512 | si[0] = start; |
3506 | ei[0] = end; | 3513 | ei[0] = end; |
@@ -3521,23 +3528,23 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
3521 | // A negative stride reverses the direction of the | 3528 | // A negative stride reverses the direction of the |
3522 | // scan producing an inverted list as a result. | 3529 | // scan producing an inverted list as a result. |
3523 | 3530 | ||
3524 | if(stride == 0) | 3531 | if (stride == 0) |
3525 | stride = 1; | 3532 | stride = 1; |
3526 | 3533 | ||
3527 | if(stride > 0) | 3534 | if (stride > 0) |
3528 | for(int i=0;i<src.Length;i+=stride) | 3535 | for(int i=0;i<src.Length;i+=stride) |
3529 | { | 3536 | { |
3530 | if(i<=ei[0] && i>=si[0]) | 3537 | if (i<=ei[0] && i>=si[0]) |
3531 | result.Add(src.Data[i]); | 3538 | result.Add(src.Data[i]); |
3532 | if(twopass && i>=si[1] && i<=ei[1]) | 3539 | if (twopass && i>=si[1] && i<=ei[1]) |
3533 | result.Add(src.Data[i]); | 3540 | result.Add(src.Data[i]); |
3534 | } | 3541 | } |
3535 | else if(stride < 0) | 3542 | else if (stride < 0) |
3536 | for(int i=src.Length-1;i>=0;i+=stride) | 3543 | for(int i=src.Length-1;i>=0;i+=stride) |
3537 | { | 3544 | { |
3538 | if(i<=ei[0] && i>=si[0]) | 3545 | if (i<=ei[0] && i>=si[0]) |
3539 | result.Add(src.Data[i]); | 3546 | result.Add(src.Data[i]); |
3540 | if(twopass && i>=si[1] && i<=ei[1]) | 3547 | if (twopass && i>=si[1] && i<=ei[1]) |
3541 | result.Add(src.Data[i]); | 3548 | result.Add(src.Data[i]); |
3542 | } | 3549 | } |
3543 | } | 3550 | } |
@@ -3566,19 +3573,19 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
3566 | 3573 | ||
3567 | m_host.AddScriptLPS(1); | 3574 | m_host.AddScriptLPS(1); |
3568 | 3575 | ||
3569 | if(index < 0) | 3576 | if (index < 0) |
3570 | { | 3577 | { |
3571 | index = index+dest.Length; | 3578 | index = index+dest.Length; |
3572 | if(index < 0) | 3579 | if (index < 0) |
3573 | { | 3580 | { |
3574 | index = 0; | 3581 | index = 0; |
3575 | } | 3582 | } |
3576 | } | 3583 | } |
3577 | 3584 | ||
3578 | if(index != 0) | 3585 | if (index != 0) |
3579 | { | 3586 | { |
3580 | pref = dest.GetSublist(0,index-1); | 3587 | pref = dest.GetSublist(0,index-1); |
3581 | if(index < dest.Length) | 3588 | if (index < dest.Length) |
3582 | { | 3589 | { |
3583 | suff = dest.GetSublist(index,-1); | 3590 | suff = dest.GetSublist(index,-1); |
3584 | return pref + src + suff; | 3591 | return pref + src + suff; |
@@ -3590,7 +3597,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
3590 | } | 3597 | } |
3591 | else | 3598 | else |
3592 | { | 3599 | { |
3593 | if(index < dest.Length) | 3600 | if (index < dest.Length) |
3594 | { | 3601 | { |
3595 | suff = dest.GetSublist(index,-1); | 3602 | suff = dest.GetSublist(index,-1); |
3596 | return src + suff; | 3603 | return src + suff; |
@@ -3618,17 +3625,17 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
3618 | 3625 | ||
3619 | // If either list is empty, do not match | 3626 | // If either list is empty, do not match |
3620 | 3627 | ||
3621 | if(src.Length != 0 && test.Length != 0) | 3628 | if (src.Length != 0 && test.Length != 0) |
3622 | { | 3629 | { |
3623 | for(int i=0; i< length; i++) | 3630 | for(int i=0; i< length; i++) |
3624 | { | 3631 | { |
3625 | if(src.Data[i].Equals(test.Data[0])) | 3632 | if (src.Data[i].Equals(test.Data[0])) |
3626 | { | 3633 | { |
3627 | int j; | 3634 | int j; |
3628 | for(j=1;j<test.Length;j++) | 3635 | for(j=1;j<test.Length;j++) |
3629 | if(!src.Data[i+j].Equals(test.Data[j])) | 3636 | if (!src.Data[i+j].Equals(test.Data[j])) |
3630 | break; | 3637 | break; |
3631 | if(j == test.Length) | 3638 | if (j == test.Length) |
3632 | { | 3639 | { |
3633 | index = i; | 3640 | index = i; |
3634 | break; | 3641 | break; |
@@ -4292,7 +4299,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
4292 | LSLError("First parameter to llDialog needs to be a key"); | 4299 | LSLError("First parameter to llDialog needs to be a key"); |
4293 | return; | 4300 | return; |
4294 | } | 4301 | } |
4295 | if(buttons.Length > 12) | 4302 | if (buttons.Length > 12) |
4296 | { | 4303 | { |
4297 | LSLError("No more than 12 buttons can be shown"); | 4304 | LSLError("No more than 12 buttons can be shown"); |
4298 | return; | 4305 | return; |
@@ -4300,12 +4307,12 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
4300 | string[] buts = new string[buttons.Length]; | 4307 | string[] buts = new string[buttons.Length]; |
4301 | for(int i = 0; i < buttons.Length; i++) | 4308 | for(int i = 0; i < buttons.Length; i++) |
4302 | { | 4309 | { |
4303 | if(buttons.Data[i].ToString() == String.Empty) | 4310 | if (buttons.Data[i].ToString() == String.Empty) |
4304 | { | 4311 | { |
4305 | LSLError("button label cannot be blank"); | 4312 | LSLError("button label cannot be blank"); |
4306 | return; | 4313 | return; |
4307 | } | 4314 | } |
4308 | if(buttons.Data[i].ToString().Length > 24) | 4315 | if (buttons.Data[i].ToString().Length > 24) |
4309 | { | 4316 | { |
4310 | LSLError("button label cannot be longer than 24 characters"); | 4317 | LSLError("button label cannot be longer than 24 characters"); |
4311 | return; | 4318 | return; |
@@ -4338,13 +4345,13 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
4338 | // These functions are supposed to be robust, | 4345 | // These functions are supposed to be robust, |
4339 | // so get the state one step at a time. | 4346 | // so get the state one step at a time. |
4340 | 4347 | ||
4341 | if((item = ScriptByName(name)) != LLUUID.Zero) | 4348 | if ((item = ScriptByName(name)) != LLUUID.Zero) |
4342 | if((sm = m_ScriptEngine.m_ScriptManager) != null) | 4349 | if ((sm = m_ScriptEngine.m_ScriptManager) != null) |
4343 | sm.ResetScript(m_localID, item); | 4350 | sm.ResetScript(m_localID, item); |
4344 | 4351 | ||
4345 | // Required by SL | 4352 | // Required by SL |
4346 | 4353 | ||
4347 | if(script == null) | 4354 | if (script == null) |
4348 | ShoutError("llResetOtherScript: script "+name+" not found"); | 4355 | ShoutError("llResetOtherScript: script "+name+" not found"); |
4349 | 4356 | ||
4350 | // If we didn;t find it, then it's safe to | 4357 | // If we didn;t find it, then it's safe to |
@@ -4366,14 +4373,20 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
4366 | // These functions are supposed to be robust, | 4373 | // These functions are supposed to be robust, |
4367 | // so get the state one step at a time. | 4374 | // so get the state one step at a time. |
4368 | 4375 | ||
4369 | if((item = ScriptByName(name)) != LLUUID.Zero) | 4376 | if ((item = ScriptByName(name)) != LLUUID.Zero) |
4370 | if((sm = m_ScriptEngine.m_ScriptManager) != null) | 4377 | { |
4371 | if((script = sm.GetScript(m_localID, item)) != null) | 4378 | if ((sm = m_ScriptEngine.m_ScriptManager) != null) |
4379 | { | ||
4380 | if ((script = sm.GetScript(m_localID, item)) != null) | ||
4381 | { | ||
4372 | return script.Exec.Running?1:0; | 4382 | return script.Exec.Running?1:0; |
4383 | } | ||
4384 | } | ||
4385 | } | ||
4373 | 4386 | ||
4374 | // Required by SL | 4387 | // Required by SL |
4375 | 4388 | ||
4376 | if(script == null) | 4389 | if (script == null) |
4377 | ShoutError("llGetScriptState: script "+name+" not found"); | 4390 | ShoutError("llGetScriptState: script "+name+" not found"); |
4378 | 4391 | ||
4379 | // If we didn;t find it, then it's safe to | 4392 | // If we didn;t find it, then it's safe to |
@@ -4447,107 +4460,107 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
4447 | 4460 | ||
4448 | public void llSetPrimitiveParams(LSL_Types.list rules) | 4461 | public void llSetPrimitiveParams(LSL_Types.list rules) |
4449 | { | 4462 | { |
4450 | llSetLinkPrimitiveParams(m_host.LinkNum+1, rules); | 4463 | llSetLinkPrimitiveParams(m_host.LinkNum+1, rules); |
4451 | } | 4464 | } |
4452 | 4465 | ||
4453 | public void llSetLinkPrimitiveParams(int linknumber, LSL_Types.list rules) | 4466 | public void llSetLinkPrimitiveParams(int linknumber, LSL_Types.list rules) |
4454 | { | 4467 | { |
4455 | m_host.AddScriptLPS(1); | 4468 | m_host.AddScriptLPS(1); |
4456 | 4469 | ||
4457 | SceneObjectPart part=null; | 4470 | SceneObjectPart part=null; |
4458 | 4471 | ||
4459 | if(m_host.LinkNum+1 != linknumber) | 4472 | if (m_host.LinkNum+1 != linknumber) |
4460 | { | 4473 | { |
4461 | foreach (SceneObjectPart partInst in m_host.ParentGroup.GetParts()) | 4474 | foreach (SceneObjectPart partInst in m_host.ParentGroup.GetParts()) |
4462 | { | 4475 | { |
4463 | if ((partInst.LinkNum + 1) == linknumber) | 4476 | if ((partInst.LinkNum + 1) == linknumber) |
4464 | { | 4477 | { |
4465 | part=partInst; | 4478 | part=partInst; |
4466 | break; | 4479 | break; |
4467 | } | 4480 | } |
4468 | } | 4481 | } |
4469 | } | 4482 | } |
4470 | else | 4483 | else |
4471 | { | 4484 | { |
4472 | part=m_host; | 4485 | part=m_host; |
4473 | } | 4486 | } |
4474 | 4487 | ||
4475 | if(part == null) | 4488 | if (part == null) |
4476 | return; | 4489 | return; |
4477 | 4490 | ||
4478 | 4491 | ||
4479 | int idx=0; | 4492 | int idx=0; |
4480 | 4493 | ||
4481 | while(idx < rules.Length) | 4494 | while(idx < rules.Length) |
4482 | { | 4495 | { |
4483 | int code=Convert.ToInt32(rules.Data[idx++]); | 4496 | int code=Convert.ToInt32(rules.Data[idx++]); |
4484 | 4497 | ||
4485 | int remain=rules.Length-idx; | 4498 | int remain=rules.Length-idx; |
4486 | 4499 | ||
4487 | int face; | 4500 | int face; |
4488 | LSL_Types.Vector3 v; | 4501 | LSL_Types.Vector3 v; |
4489 | 4502 | ||
4490 | switch(code) | 4503 | switch(code) |
4491 | { | 4504 | { |
4492 | case 6: // PRIM_POSITION | 4505 | case 6: // PRIM_POSITION |
4493 | if(remain < 1) | 4506 | if (remain < 1) |
4494 | return; | 4507 | return; |
4495 | 4508 | ||
4496 | v=new LSL_Types.Vector3(rules.Data[idx++].ToString()); | 4509 | v=new LSL_Types.Vector3(rules.Data[idx++].ToString()); |
4497 | SetPos(part, v); | 4510 | SetPos(part, v); |
4498 | 4511 | ||
4499 | break; | 4512 | break; |
4500 | 4513 | ||
4501 | case 8: // PRIM_ROTATION | 4514 | case 8: // PRIM_ROTATION |
4502 | if(remain < 1) | 4515 | if (remain < 1) |
4503 | return; | 4516 | return; |
4504 | 4517 | ||
4505 | LSL_Types.Quaternion q = new LSL_Types.Quaternion(rules.Data[idx++].ToString()); | 4518 | LSL_Types.Quaternion q = new LSL_Types.Quaternion(rules.Data[idx++].ToString()); |
4506 | SetRot(part, q); | 4519 | SetRot(part, q); |
4507 | 4520 | ||
4508 | break; | 4521 | break; |
4509 | 4522 | ||
4510 | case 17: // PRIM_TEXTURE | 4523 | case 17: // PRIM_TEXTURE |
4511 | if(remain < 5) | 4524 | if (remain < 5) |
4512 | return; | 4525 | return; |
4513 | 4526 | ||
4514 | face=Convert.ToInt32(rules.Data[idx++]); | 4527 | face=Convert.ToInt32(rules.Data[idx++]); |
4515 | string tex=rules.Data[idx++].ToString(); | 4528 | string tex=rules.Data[idx++].ToString(); |
4516 | LSL_Types.Vector3 repeats=new LSL_Types.Vector3(rules.Data[idx++].ToString()); | 4529 | LSL_Types.Vector3 repeats=new LSL_Types.Vector3(rules.Data[idx++].ToString()); |
4517 | LSL_Types.Vector3 offsets=new LSL_Types.Vector3(rules.Data[idx++].ToString()); | 4530 | LSL_Types.Vector3 offsets=new LSL_Types.Vector3(rules.Data[idx++].ToString()); |
4518 | double rotation=Convert.ToDouble(rules.Data[idx++]); | 4531 | double rotation=Convert.ToDouble(rules.Data[idx++]); |
4519 | 4532 | ||
4520 | SetTexture(part, tex, face); | 4533 | SetTexture(part, tex, face); |
4521 | ScaleTexture(part, repeats.x, repeats.y, face); | 4534 | ScaleTexture(part, repeats.x, repeats.y, face); |
4522 | OffsetTexture(part, offsets.x, offsets.y, face); | 4535 | OffsetTexture(part, offsets.x, offsets.y, face); |
4523 | RotateTexture(part, rotation, face); | 4536 | RotateTexture(part, rotation, face); |
4524 | 4537 | ||
4525 | break; | 4538 | break; |
4526 | 4539 | ||
4527 | case 18: // PRIM_COLOR | 4540 | case 18: // PRIM_COLOR |
4528 | if(remain < 3) | 4541 | if (remain < 3) |
4529 | return; | 4542 | return; |
4530 | 4543 | ||
4531 | face=Convert.ToInt32(rules.Data[idx++]); | 4544 | face=Convert.ToInt32(rules.Data[idx++]); |
4532 | LSL_Types.Vector3 color=new LSL_Types.Vector3(rules.Data[idx++].ToString()); | 4545 | LSL_Types.Vector3 color=new LSL_Types.Vector3(rules.Data[idx++].ToString()); |
4533 | double alpha=Convert.ToDouble(rules.Data[idx++]); | 4546 | double alpha=Convert.ToDouble(rules.Data[idx++]); |
4534 | 4547 | ||
4535 | SetColor(part, color, face); | 4548 | SetColor(part, color, face); |
4536 | SetAlpha(part, alpha, face); | 4549 | SetAlpha(part, alpha, face); |
4537 | 4550 | ||
4538 | break; | 4551 | break; |
4539 | 4552 | ||
4540 | case 7: // PRIM_SIZE | 4553 | case 7: // PRIM_SIZE |
4541 | if(remain < 1) | 4554 | if (remain < 1) |
4542 | return; | 4555 | return; |
4543 | 4556 | ||
4544 | v=new LSL_Types.Vector3(rules.Data[idx++].ToString()); | 4557 | v=new LSL_Types.Vector3(rules.Data[idx++].ToString()); |
4545 | SetScale(part, v); | 4558 | SetScale(part, v); |
4546 | 4559 | ||
4547 | break; | 4560 | break; |
4548 | 4561 | ||
4549 | } | 4562 | } |
4550 | } | 4563 | } |
4551 | } | 4564 | } |
4552 | 4565 | ||
4553 | public string llStringToBase64(string str) | 4566 | public string llStringToBase64(string str) |
@@ -4637,12 +4650,12 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
4637 | m_host.AddScriptLPS(1); | 4650 | m_host.AddScriptLPS(1); |
4638 | LLUUID landowner = World.GetLandOwner(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y); | 4651 | LLUUID landowner = World.GetLandOwner(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y); |
4639 | 4652 | ||
4640 | if(landowner == LLUUID.Zero) | 4653 | if (landowner == LLUUID.Zero) |
4641 | { | 4654 | { |
4642 | return; | 4655 | return; |
4643 | } | 4656 | } |
4644 | 4657 | ||
4645 | if(landowner != m_host.ObjectOwner) | 4658 | if (landowner != m_host.ObjectOwner) |
4646 | { | 4659 | { |
4647 | return; | 4660 | return; |
4648 | } | 4661 | } |
@@ -5000,7 +5013,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
5000 | 5013 | ||
5001 | // Require a well-fromed base64 string | 5014 | // Require a well-fromed base64 string |
5002 | 5015 | ||
5003 | if(str.Length > 8) | 5016 | if (str.Length > 8) |
5004 | return 0; | 5017 | return 0; |
5005 | 5018 | ||
5006 | // The loop is unrolled in the interests | 5019 | // The loop is unrolled in the interests |
@@ -5010,37 +5023,37 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
5010 | // -1 == invalid | 5023 | // -1 == invalid |
5011 | // 0 == padding | 5024 | // 0 == padding |
5012 | 5025 | ||
5013 | if((digit=c2itable[str[0]])<=0) | 5026 | if ((digit=c2itable[str[0]])<=0) |
5014 | { | 5027 | { |
5015 | return digit<0?(int)0:number; | 5028 | return digit<0?(int)0:number; |
5016 | } | 5029 | } |
5017 | number += --digit<<26; | 5030 | number += --digit<<26; |
5018 | 5031 | ||
5019 | if((digit=c2itable[str[1]])<=0) | 5032 | if ((digit=c2itable[str[1]])<=0) |
5020 | { | 5033 | { |
5021 | return digit<0?(int)0:number; | 5034 | return digit<0?(int)0:number; |
5022 | } | 5035 | } |
5023 | number += --digit<<20; | 5036 | number += --digit<<20; |
5024 | 5037 | ||
5025 | if((digit=c2itable[str[2]])<=0) | 5038 | if ((digit=c2itable[str[2]])<=0) |
5026 | { | 5039 | { |
5027 | return digit<0?(int)0:number; | 5040 | return digit<0?(int)0:number; |
5028 | } | 5041 | } |
5029 | number += --digit<<14; | 5042 | number += --digit<<14; |
5030 | 5043 | ||
5031 | if((digit=c2itable[str[3]])<=0) | 5044 | if ((digit=c2itable[str[3]])<=0) |
5032 | { | 5045 | { |
5033 | return digit<0?(int)0:number; | 5046 | return digit<0?(int)0:number; |
5034 | } | 5047 | } |
5035 | number += --digit<<8; | 5048 | number += --digit<<8; |
5036 | 5049 | ||
5037 | if((digit=c2itable[str[4]])<=0) | 5050 | if ((digit=c2itable[str[4]])<=0) |
5038 | { | 5051 | { |
5039 | return digit<0?(int)0:number; | 5052 | return digit<0?(int)0:number; |
5040 | } | 5053 | } |
5041 | number += --digit<<2; | 5054 | number += --digit<<2; |
5042 | 5055 | ||
5043 | if((digit=c2itable[str[5]])<=0) | 5056 | if ((digit=c2itable[str[5]])<=0) |
5044 | { | 5057 | { |
5045 | return digit<0?(int)0:number; | 5058 | return digit<0?(int)0:number; |
5046 | } | 5059 | } |
@@ -5156,21 +5169,21 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
5156 | 5169 | ||
5157 | for(j=0; j<seplen; j++) | 5170 | for(j=0; j<seplen; j++) |
5158 | { | 5171 | { |
5159 | if(active[j]) | 5172 | if (active[j]) |
5160 | { | 5173 | { |
5161 | // scan all of the markers | 5174 | // scan all of the markers |
5162 | if((offset[j] = src.IndexOf((string)separray[j],beginning)) == -1) | 5175 | if ((offset[j] = src.IndexOf((string)separray[j],beginning)) == -1) |
5163 | { | 5176 | { |
5164 | // not present at all | 5177 | // not present at all |
5165 | active[j] = false; | 5178 | active[j] = false; |
5166 | } else | 5179 | } else |
5167 | { | 5180 | { |
5168 | // present and correct | 5181 | // present and correct |
5169 | if(offset[j] < offset[best]) | 5182 | if (offset[j] < offset[best]) |
5170 | { | 5183 | { |
5171 | // closest so far | 5184 | // closest so far |
5172 | best = j; | 5185 | best = j; |
5173 | if(offset[best] == beginning) | 5186 | if (offset[best] == beginning) |
5174 | break; | 5187 | break; |
5175 | } | 5188 | } |
5176 | } | 5189 | } |
@@ -5179,21 +5192,21 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
5179 | 5192 | ||
5180 | // Scan for spacers | 5193 | // Scan for spacers |
5181 | 5194 | ||
5182 | if(offset[best] != beginning) | 5195 | if (offset[best] != beginning) |
5183 | { | 5196 | { |
5184 | for(j=seplen; (j<mlen) && (offset[best] > beginning); j++) | 5197 | for(j=seplen; (j<mlen) && (offset[best] > beginning); j++) |
5185 | { | 5198 | { |
5186 | if(active[j]) | 5199 | if (active[j]) |
5187 | { | 5200 | { |
5188 | // scan all of the markers | 5201 | // scan all of the markers |
5189 | if((offset[j] = src.IndexOf((string)spcarray[j-seplen],beginning)) == -1) | 5202 | if ((offset[j] = src.IndexOf((string)spcarray[j-seplen],beginning)) == -1) |
5190 | { | 5203 | { |
5191 | // not present at all | 5204 | // not present at all |
5192 | active[j] = false; | 5205 | active[j] = false; |
5193 | } else | 5206 | } else |
5194 | { | 5207 | { |
5195 | // present and correct | 5208 | // present and correct |
5196 | if(offset[j] < offset[best]) | 5209 | if (offset[j] < offset[best]) |
5197 | { | 5210 | { |
5198 | // closest so far | 5211 | // closest so far |
5199 | best = j; | 5212 | best = j; |
@@ -5205,7 +5218,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
5205 | 5218 | ||
5206 | // This is the normal exit from the scanning loop | 5219 | // This is the normal exit from the scanning loop |
5207 | 5220 | ||
5208 | if(best == mlen) | 5221 | if (best == mlen) |
5209 | { | 5222 | { |
5210 | // no markers were found on this pass | 5223 | // no markers were found on this pass |
5211 | // so we're pretty much done | 5224 | // so we're pretty much done |
@@ -5218,7 +5231,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
5218 | 5231 | ||
5219 | tokens.Add(src.Substring(beginning,offset[best]-beginning)); | 5232 | tokens.Add(src.Substring(beginning,offset[best]-beginning)); |
5220 | 5233 | ||
5221 | if(best<seplen) | 5234 | if (best<seplen) |
5222 | { | 5235 | { |
5223 | beginning = offset[best]+((string)separray[best]).Length; | 5236 | beginning = offset[best]+((string)separray[best]).Length; |
5224 | } else | 5237 | } else |
@@ -5235,9 +5248,9 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
5235 | // arduous. Alternatively the 'break' could be replced with a return | 5248 | // arduous. Alternatively the 'break' could be replced with a return |
5236 | // but that's shabby programming. | 5249 | // but that's shabby programming. |
5237 | 5250 | ||
5238 | if(beginning == srclen) | 5251 | if (beginning == srclen) |
5239 | { | 5252 | { |
5240 | if(srclen != 0) | 5253 | if (srclen != 0) |
5241 | tokens.Add(""); | 5254 | tokens.Add(""); |
5242 | } | 5255 | } |
5243 | 5256 | ||
@@ -5418,30 +5431,30 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
5418 | 5431 | ||
5419 | // Note that although we have normalized, both | 5432 | // Note that although we have normalized, both |
5420 | // indices could still be negative. | 5433 | // indices could still be negative. |
5421 | if(start < 0) | 5434 | if (start < 0) |
5422 | { | 5435 | { |
5423 | start = start+dest.Length; | 5436 | start = start+dest.Length; |
5424 | } | 5437 | } |
5425 | 5438 | ||
5426 | if(end < 0) | 5439 | if (end < 0) |
5427 | { | 5440 | { |
5428 | end = end+dest.Length; | 5441 | end = end+dest.Length; |
5429 | } | 5442 | } |
5430 | // The comventional case, remove a sequence starting with | 5443 | // The comventional case, remove a sequence starting with |
5431 | // start and ending with end. And then insert the source | 5444 | // start and ending with end. And then insert the source |
5432 | // list. | 5445 | // list. |
5433 | if(start <= end) | 5446 | if (start <= end) |
5434 | { | 5447 | { |
5435 | // If greater than zero, then there is going to be a | 5448 | // If greater than zero, then there is going to be a |
5436 | // surviving prefix. Otherwise the inclusive nature | 5449 | // surviving prefix. Otherwise the inclusive nature |
5437 | // of the indices mean that we're going to add the | 5450 | // of the indices mean that we're going to add the |
5438 | // source list as a prefix. | 5451 | // source list as a prefix. |
5439 | if(start > 0) | 5452 | if (start > 0) |
5440 | { | 5453 | { |
5441 | pref = dest.GetSublist(0,start-1); | 5454 | pref = dest.GetSublist(0,start-1); |
5442 | // Only add a suffix if there is something | 5455 | // Only add a suffix if there is something |
5443 | // beyond the end index (it's inclusive too). | 5456 | // beyond the end index (it's inclusive too). |
5444 | if(end+1 < dest.Length) | 5457 | if (end+1 < dest.Length) |
5445 | { | 5458 | { |
5446 | return pref + src + dest.GetSublist(end+1,-1); | 5459 | return pref + src + dest.GetSublist(end+1,-1); |
5447 | } | 5460 | } |
@@ -5458,7 +5471,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
5458 | // is removed. | 5471 | // is removed. |
5459 | else | 5472 | else |
5460 | { | 5473 | { |
5461 | if(end+1 < dest.Length) | 5474 | if (end+1 < dest.Length) |
5462 | { | 5475 | { |
5463 | return src + dest.GetSublist(end+1,-1); | 5476 | return src + dest.GetSublist(end+1,-1); |
5464 | } | 5477 | } |
@@ -5525,7 +5538,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
5525 | { | 5538 | { |
5526 | m_host.AddScriptLPS(1); | 5539 | m_host.AddScriptLPS(1); |
5527 | 5540 | ||
5528 | if(quick_pay_buttons.Data.Length != 4) | 5541 | if (quick_pay_buttons.Data.Length != 4) |
5529 | { | 5542 | { |
5530 | LSLError("List must have 4 elements"); | 5543 | LSLError("List must have 4 elements"); |
5531 | return; | 5544 | return; |
@@ -5798,14 +5811,14 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
5798 | 5811 | ||
5799 | LandData land = World.GetLandData((float)pos.x, (float)pos.y); | 5812 | LandData land = World.GetLandData((float)pos.x, (float)pos.y); |
5800 | 5813 | ||
5801 | if(land == null) | 5814 | if (land == null) |
5802 | { | 5815 | { |
5803 | return 0; | 5816 | return 0; |
5804 | } | 5817 | } |
5805 | 5818 | ||
5806 | else | 5819 | else |
5807 | { | 5820 | { |
5808 | if(sim_wide == 1) | 5821 | if (sim_wide == 1) |
5809 | { | 5822 | { |
5810 | if (category == 0) | 5823 | if (category == 0) |
5811 | { | 5824 | { |
@@ -5821,32 +5834,32 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
5821 | 5834 | ||
5822 | else | 5835 | else |
5823 | { | 5836 | { |
5824 | if(category == 0)//Total Prims | 5837 | if (category == 0)//Total Prims |
5825 | { | 5838 | { |
5826 | return 0;//land. | 5839 | return 0;//land. |
5827 | } | 5840 | } |
5828 | 5841 | ||
5829 | else if(category == 1)//Owner Prims | 5842 | else if (category == 1)//Owner Prims |
5830 | { | 5843 | { |
5831 | return land.ownerPrims; | 5844 | return land.ownerPrims; |
5832 | } | 5845 | } |
5833 | 5846 | ||
5834 | else if(category == 2)//Group Prims | 5847 | else if (category == 2)//Group Prims |
5835 | { | 5848 | { |
5836 | return land.groupPrims; | 5849 | return land.groupPrims; |
5837 | } | 5850 | } |
5838 | 5851 | ||
5839 | else if(category == 3)//Other Prims | 5852 | else if (category == 3)//Other Prims |
5840 | { | 5853 | { |
5841 | return land.otherPrims; | 5854 | return land.otherPrims; |
5842 | } | 5855 | } |
5843 | 5856 | ||
5844 | else if(category == 4)//Selected | 5857 | else if (category == 4)//Selected |
5845 | { | 5858 | { |
5846 | return land.selectedPrims; | 5859 | return land.selectedPrims; |
5847 | } | 5860 | } |
5848 | 5861 | ||
5849 | else if(category == 5)//Temp | 5862 | else if (category == 5)//Temp |
5850 | { | 5863 | { |
5851 | return 0;//land. | 5864 | return 0;//land. |
5852 | } | 5865 | } |